Select

Dropdown selection component for choosing a single option from a list. Supports placeholder text, option groups, disabled states, and keyboard navigation.

Anatomy

1 2 3
  1. 1 Container — border, background, and padding define the field area
  2. 2 Chevron indicator — signals the field opens a dropdown
  3. 3 Text / placeholder — selected value or hint text

Options

States

Default
Hover
Focus
Disabled

Table of options

PropertyValuesDefault
optionsArray of {value, label} or {group, items}[]
placeholdertext
valuetext (selected option value)
disabledtrue / falsefalse
statedefault / hover / active / focus / disableddefault

Behaviors

Full width

Select expands to fill the available inline size of its container.

Keyboard focus

The focus state changes the border color and adds a focus ring. Users can navigate options with arrow keys.

Disabled state

A disabled select cannot be opened. It is removed from the tab order and uses reduced contrast.

Option groups

Options can be organized into labeled groups using optgroup for categorized lists.

Usage guidelines

Always pair with a label

<label for="country">Country</label>

Do

Every select must have a visible label or an aria-label.

Don't

Don't use placeholder text as the only label.

Use select for 5+ options

Select with 5+ options

Do

Use a select when there are 5 or more options. It keeps the interface compact.

Select with 2 options

Don't

For 2–4 options, prefer radio buttons for visibility and fewer interactions.

Content standards

  • Placeholder text should describe what to select, not repeat the label.
  • Option labels should be short and scannable.
  • Use sentence case for option labels.
  • Group related options when the list exceeds 7 items.

Keyboard interactions

KeyInteraction
TabMoves focus into or out of the select.
Space / EnterOpens the dropdown list.
Navigates between options.
Home / EndMoves to the first or last option.
EscapeCloses the dropdown without changing selection.
Type-aheadJumps to the first option matching typed characters.

Accessibility

  • Uses the native <select> element which provides built-in keyboard support and screen reader semantics.
  • Every select must have a programmatic label via <label>, aria-label, or aria-labelledby.
  • Placeholder text is not an accessible label — it disappears once an option is selected.
  • Disabled selects use the native disabled attribute which removes them from the tab order.
  • Option groups use <optgroup> with a label attribute for screen reader announcement.
  • Focus indicators meet 3:1 contrast.

Enhanced dropdown (base-select)

In browsers that support appearance: base-select (Chromium 136+), the select dropdown is fully styleable — including the options list, individual options, and the picker icon. This enhancement is applied automatically via @supports and requires no markup changes.

What changes in supported browsers:

  • The dropdown panel inherits the component's border radius and shadow tokens.
  • Options receive padding, hover, and selected-state styling via component tokens.
  • The chevron indicator is rendered as a ::picker-icon pseudo-element instead of a background SVG.

Fallback: In unsupported browsers, the select renders identically to before — with appearance: none and an inline SVG chevron as background-image. No visual regression occurs.

Theming

Select adapts automatically across brands and color modes through component tokens. Use the hero preview switches above to see it in action.

For the full theming architecture see Foundations: Theming.

Design checklist

All interactive statesHover, active, focus, and disabled states are implemented.
All color themesWorks across light and dark modes for all brands.
Accessible use of colorColor is not the only visual means of conveying information (WCAG 1.4.1).
Accessible contrast for textText contrast ratio of at least 4.5:1 (WCAG 1.4.3).
Accessible contrast for UIUI component contrast ratio of at least 3:1 (WCAG 1.4.11).
Content standardsPlaceholder, option label, and grouping guidelines are documented.
Defined optionsOptions, placeholder, value, disabled, and state options are documented.
Defined behaviorsFull width, focus, disabled, and option group behaviors are documented.
Usage guidelinesDo and don't examples for labeling and option count are included.
Keyboard interactionsTab, Space, Enter, Arrow, Escape, and type-ahead interactions are documented.
Design tokensAll visual attributes are available as design tokens.
Figma componentComponent is available in the Figma library.