forms
Morph Select
A labeled compact control expands into a complete active-descendant listbox and returns the selected value to the same surface.
- forms
- select
- listbox
- typeahead
Live preview
Quick usage
import { MorphSelect } from "@pinky-ui/systems";
<MorphSelect label="Format" options={formats} />Presets
Default
Restrained production behaviour.
Default behaviour
Quiet
Reduced intensity for dense product screens.
disabled={true}
Install
Add @pinky-ui/systems as a dependency, or use the CLI to copy this component's source directly into your project — no dependency to manage, fully editable.
npm install @pinky-ui/systemspnpm add @pinky-ui/systemsyarn add @pinky-ui/systemsnpx pinky-ui add morph-selectPrefer to run the whole repository locally instead?
git clone https://github.com/florash/Pinky-UI.git
cd Pinky-UI
npm install
npm run devProps
| Prop | Type | Default | Description |
|---|---|---|---|
| options | MorphSelectOption[] | — | Short single-select option set. |
| className | string | — | Styles the outer interaction surface. |
Accessibility
- Arrow, Home/End, Enter, Escape and short typeahead are supported by the focused listbox.
- Closing restores focus to the labeled trigger; active-descendant and selected state remain semantic.
Performance
- Options mount only while open; no large list virtualization is implied.
Reduced motion
Motion resolves immediately while semantics, focus and state remain unchanged.
When to use
- Short custom product option sets
When not to use
- Long, searchable or platform-standard selects
Skill
Purpose
MorphSelect expands a compact value control into a complete single-select listbox with an active descendant, keyboard navigation and focus restoration. Use it for short custom option sets where styled spatial continuity matters.
Prefer native select for long, platform-standard or mobile-critical choices. Avoid multi-select, remote search and hundreds of options. Do not remove labels or replace familiar keyboard behaviour for animation.
Arrow keys, Home/End, Enter, Escape and short typeahead are supported; focus returns to the trigger. Reduced motion removes expansion choreography. Disabled options remain skipped, and validation belongs to the surrounding labeled form field.