Form
Select
Pick one option from a short list. The trigger looks like a text field; the list is a Motion menu with a check on the selected row and typeahead.
Usage
- Use for 3–15 known options where only one can be picked.
- Use Combobox for long lists (countries, people) where searching beats scrolling.
- Use SegmentedControl or RadioGroup for 2–5 options that should stay visible.
- Don’t use it for actions; that’s a Menu.
Installation
Install the package (React 19):
terminal
terminal
terminal
Import the styles once, in your app entry or root layout:
/src/main.tsx
Use it anywhere inside your app's <Theme> (see Installation):
/src/SelectExample.tsx
Examples
Controlled
Selected: member
"All" option (empty value)
An option with value: '' works as "no filter": value="" shows it and picking it reports ''.
With icons
Sizes
Invalid and disabled
Choose where your data is stored.
Dark theme
API Reference
Select
Radix Select. The ref goes to the trigger <button>.
| Prop | Type | Default |
|---|---|---|
options | ControlOption[] | |
value / defaultValue | string | |
onValueChange | (value: string) => void | |
placeholder | string | "Select…" |
size | "sm""md""lg" | "md" |
invalid | boolean | false |
disabled | boolean | false |
required | boolean | false |
name | string | |
open | boolean | |
defaultOpen | boolean | |
onOpenChange | (open: boolean) => void | |
id | string | |
className | string | |
style | CSSProperties | |
contentClassName | string | |
aria-label | string | |
aria-labelledby | string | |
aria-describedby | string |
Accessibility
- WAI-ARIA listbox (select-only combobox): the trigger is
role="combobox"witharia-expanded; the list isrole="listbox"withoptions andaria-selected. Enter,Space,↓or↑open the list;↑/↓move; typing jumps to the first match (typeahead);Enterselects;Escapecloses. Focus returns to the trigger.- Disabled options are skipped and marked
aria-disabled. - With
name, a hidden native<select>takes part in form submission and validation.
© 2026 Motion. Internal documentation.