Skip to content

Select

The Select component is a form control that allows users to choose a single option from a predefined list of options, typically presented in a dropdown menu. It is commonly used in forms to capture user input efficiently without overwhelming the interface with visible options.

  • In forms where users need to select one option from a list of three or more predefined choices.
  • When space is limited, and displaying all options at once (e.g., via radio buttons) would clutter the UI.
  • For fewer than three options; use radio buttons instead to make choices more visible and accessible.
  • For lists exceeding 15 options, where a searchable combobox or autocomplete might be better to reduce cognitive load.
  • For site navigation or actions like sorting/filtering.
ElementDescription
LabelA concise text (1-3 words) describing the purpose of the selection, positioned above or inside the field.
Helper TextOptional instructional text below the label to guide the user.
FieldThe interactive box displaying the selected value or placeholder, which persists whether the dropdown is open or closed.
Chevron IconAn arrow indicator that toggles the dropdown list.
DropdownThe dropdown menu containing individual options, displayed on interaction.
Dropdown ItemsIndividual selectable items in the list, often with a checkmark for the selected one.
Status IconIcon for errors (e.g., red exclamation).
Status DescriptionDescription of the error state.
StateDescriptionVisual Indicators
DefaultDefault interactive stateStandard border and text color
HoverCursor over objectSubtle background or border change
FocusKeyboard focus (visible on Tab or arrow key navigation)Outline or glow around the field
OpenDropdown list is expandedList visible below the field
SelectedAn option has been chosenSelected value displayed in the field
ErrorInvalid input or required field emptyRed border, error icon, and message
DisabledNon-interactive, e.g., for unavailable optionsGrayed out, no hover/focus
  • Order options logically: alphabetically, by frequency of use, or numerically for better scan-ability.
  • Use a default placeholder like “Select” or preselect a common option if appropriate, but never replace the label with it.
  • Use native <select> element when possible for maximum built-in accessibility.
  • Associate label with aria-labelledby or native <label for>.
  • Ensure visible focus indicator on trigger and highlighted option.
  • Announce selected value and open/closed state to screen readers.
  • Disabled state: use aria-disabled="true" and prevent focus.

Support standard keyboard navigation

  • Tab: Focus the trigger field.
  • Space/Enter: Open/close dropdown or select highlighted option.
  • Arrow Up/Down: Navigate options.
  • Esc: Close dropdown.
  • Type-ahead: Jump to options matching typed characters.