TrademarkTrademark
Docs
Ctrl k
Search docs...
Form Controls

Select

Updated: October 18, 2026
View on GitHub
Soon
Not released yet. This is on main and is not in any published version yet. It will not install today.

Select looks like an Input and opens its options in a bottom sheet, a Dialog titled with the field's label. Each option is drawn with Option. The field shows the chosen option's label. See the web Select for the same component in the browser.

Basic usage

Select is controlled: keep the value in state and set it in onSelect. Picking an option closes the sheet.

Searchable

searchable adds a search field at the top of the sheet. It matches the label and the value. emptyState shows when nothing matches, and labels.search renames the field.

Multiple selection

With multiple, onSelect gets the new array of values and the sheet stays open between picks. The field lists the chosen labels.

Differences from the web

  • The options open in a bottom sheet, not a dropdown under the field. The back button or a tap outside closes it.
  • Screen readers read the field as a combo box with the chosen value, or the placeholder when nothing is chosen.
  • Select has no internal state: pass value and update it in onSelect.

API reference

Prop
Type
Default
Description
optionsOptionProps[]The options, each with value and optional label, description, prefix, suffix, disabled and danger. Required.
valuestring | string[]The chosen value, or values with multiple.
onSelect(value: string | string[]) => voidCalled with the picked value, or the new array with multiple.
labelstringThe field's label and the sheet's title.
placeholderstringShown in the field while nothing is chosen.
multiplebooleanfalseLets several options be chosen. The sheet stays open.
searchablebooleanfalseAdds a search field to the sheet.
emptyStateReactNode"No results"Shown when the search matches nothing.
size"xs" | "s" | "m" | "l" | "xl""m"The field's height, as on Input.
errorbooleanDraws the field in the danger colour and shows errorMessage.
errorMessageReactNodeShown under the field while error is true.
descriptionReactNodeA hint under the field.
disabledbooleanDims the field. It does not open.
labels{ search?: string }{ search: "Search" }The search field's label.
styleViewStyleStyle for the field's container.
Edit this page on GitHub
TrademarkTrademark
Built with curiosity by Lorant One and the Design Engineers Club