Select

Pick one value from a short, fixed list that doesnโ€™t need searching.

Selected: Personal workspace.
Fig. 1 Choose a workspace. Arrow keys move, typing jumps to a match, and Esc closes the list.

When to use it

Use Select for five to fifteen fixed options, such as a role, a region, or a sort order. People can open it, scan it, and pick in one motion.

With fewer options worth comparing, show them all with Radio Group. With more than people can scan, let them search with Combobox.

Radio Group

One choice, every option visible.

Visibility

Only you can see this project.

Everyone on the Design team can view and edit.

Anyone in the workspace can find it.

Two to five options worth comparing.

SelectThis page

A short list, one value.

Selected: Personal workspace.

A role, a region, or a sort order.

Combobox

A long list, searched.

Countries, people, and tags.

Fig. 2 Three ways to choose one value. Pick by how many options there are and whether people should see them all.

How it behaves

Arrow keys move between options, typing finds an option, and Escape dismisses the list.

Base UI manages focus and the hidden form input. Provide name for form submission and items for readable selected labels.

Connect SelectTrigger to a visible label. Use value/onValueChange for controlled state or defaultValue for local state.

SelectTrigger variant="subtle" sizes to its label with a filled surface and up/down chevrons; the default remains an outlined form field. SelectItem description adds supporting body-sm text without changing the selected label.

Options sit inside a padded list with the same neutral muted hover surface as Dropdown Menu. A leading checkmark identifies the selected value independently of keyboard or pointer highlight.

SelectContent footer places actions outside the listbox. Use controlled open/onOpenChange to close after a footer action; listClassName customizes the scrollable list.

Build it

Add it with the shadcn CLI:

Terminal

A complete example. Change the values to fit your product:

select-example.tsx

The full source is yours to edit once installed:

select.tsx