Select

Open in v0

Last updated: September 20, 2026

An accessible Select dropdown component with single selection, keyboard navigation, typeahead matching, and reduced motion support.

Installation

npx smoothui-cli add select

Features

Single selection from a flat or grouped list. Typeahead, keyboard navigation, controlled or uncontrolled, and a disabled state — with spring open/close that respects reduced motion.

Variants

Basic

A single list of options. Type to jump, arrows to move, Enter to choose.

Grouped

Options organised under group labels, so a long list stays scannable.

Disabled

The trigger stays in the tab order but cannot be opened.

Accessibility

Keyboard Interactions

KeyDescription
Enter / SpaceOpens the dropdown when trigger is focused, or selects the focused item
EscapeCloses the dropdown and returns focus to the trigger
Arrow DownMoves focus to the next option
Arrow UpMoves focus to the previous option
HomeMoves focus to the first option
EndMoves focus to the last option
Character keysTypeahead matching — focuses the first option starting with the typed character

ARIA Attributes

AttributeElementPurpose
role="listbox"ContentIdentifies the dropdown as a listbox (provided by Radix)
role="option"ItemIdentifies each item as a selectable option (provided by Radix)
aria-expandedTriggerIndicates whether the dropdown is open or closed
aria-selectedItemIndicates the currently selected option
aria-disabledItem/TriggerIndicates disabled state
aria-labelTriggerProvides an accessible name for the select
aria-labelledbyTriggerReferences an external label element

Screen Reader

  • The trigger announces its expanded/collapsed state and the currently selected value
  • Each option announces its label and selected state
  • Group labels are announced when navigating between groups

Reduced Motion

This component respects the prefers-reduced-motion media query via useReducedMotion from Motion. When reduced motion is preferred, all open/close and transition animations are disabled instantly.

Props

SelectOptionProps

Created by

Improved by

Edu Calvo's avatar

Powered by

motion.dev

© 2026 SmoothUI. Built by Eduardo Calvo.