Design System
Forms

Combobox

A searchable select with autocomplete. It is a controlled component, so hold the chosen value in state.

Purpose

Reach for a combobox once a Select list is long enough that scanning it is slower than typing. For several choices at once use Multi-select.

Example

Props

PropTypeDefaultDescription
optionsrequiredComboboxOption[]Selectable options. `label` is displayed and searched; `value` is reported to `onValueChange`.
valuestring | undefinedThe currently selected option's `value` (controlled).
onValueChange((value: string) => void) | undefinedCalled with the newly selected `value`, or an empty string when the current selection is toggled off.
placeholderstring | undefined"Select…"Text shown on the trigger when nothing is selected.
searchPlaceholderstring | undefined"Search…"Placeholder for the search input inside the dropdown.
emptyTextstring | undefined"No results found."Message shown when the search matches no options.
classNamestring | undefinedExtra classes applied to the trigger button.
idstring | undefined`id` forwarded to the trigger button, for pairing with a `<Label htmlFor>`.
labelstring | undefinedthe `placeholder` textAccessible name for the trigger. The trigger carries `role="combobox"`, whose accessible name does *not* come from its own text — that text is read as the current value. Without a name, a screen reader announces the selected option with no indication of what it selects. Omit only when you have paired a visible `<Label htmlFor>` with `id`.

On this page