Select
Pick one option from a list.
Basic
Pass items to Select.Root. Select.Value uses the items to show the label of the value.
Region
Groups and separators
Put related items in a Group with a GroupLabel. A Separator divides sections. A disabled item stays in the list, but the user cannot select it.
Region
Sizes
Match the size of the buttons beside the field, and use lg only for a hero field. sm, md, and lg are 26, 36, and 44 pixels high.
sm · dense UImd · defaultlg · hero field
States
Use inset by default and line for light or inline editing, with one appearance per form. Hover and focus the fields to see those states.
inset · forms
Empty
Filled
Invalid
Self-hosted is not available on this plan.
Disabled
line · inline editing
Empty
Filled
Invalid
Self-hosted is not available on this plan.
Disabled
Usage
These are defaults, not laws. Break one when you have a good reason, or when it makes the design more cohesive or more interesting.
- Choose the input from the number of options and what the user picks.
Component Use it for Radio One choice from 2 or 3 options that stay visible. Select One choice from 4 to about 10 options, or fewer options when space is tight. Combobox One or more choices from a long list, with typing to filter. Autocomplete Free text, with suggestions that the user can ignore. Choicebox A choice where each option needs a description, such as a plan. Checkbox An on or off value in a form that the user submits. Switch A setting that applies at once. - Pass
itemstoSelect.Root. Without it, the trigger shows the raw value, such asus, not the label.
API
Props that the library adds. Every part also takes all the Base UI props.
Select.Root
| Prop | Type | Default | Description |
|---|---|---|---|
| size | 'sm' | 'md' | 'lg' | 'md' | Sets the trigger height, the chevron, and the item text size in the list. |
| appearance | 'inset' | 'line' | 'inset' | Sets the trigger shape. Keep inset for forms. Use line for light or inline editing, such as renaming in place, filters, and quick settings. |
Select.Trigger
| Prop | Type | Default | Description |
|---|---|---|---|
| size | 'sm' | 'md' | 'lg' | Root size | Overrides the size from Root for the trigger only. |
Select.Icon
| Prop | Type | Default | Description |
|---|---|---|---|
| children | ReactNode | <IconChevronDown /> | The icon in the trigger. Pass children to replace the chevron. |
Select.Popup
| Prop | Type | Default | Description |
|---|---|---|---|
| sideOffset | number | 4 | The gap between the trigger and the popup, in pixels. |
| container | HTMLElement | ShadowRoot | RefObject | null | – | The element that the popup renders into. The default is the document body. |





