Skip to main content

Select

Displays a list of options for the user to pick from—triggered by a button.

import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select"

const tokens = [
{ value: "eth", label: "ETH", icon: "/img/eth.png" },
{ value: "btc", label: "BTC", icon: "/img/btc.png" },
{ value: "stx", label: "STX", icon: "/img/stx-logo.png" },
{ value: "dai", label: "DAI", icon: "/img/dai.png" },
{ value: "ltc", label: "LTC", icon: "/img/ltc.png" },
{ value: "usdt", label: "USDT", icon: "/img/tether.png" },
]

<Select defaultValue="eth">
<SelectTrigger className="w-[260px]">
<SelectValue />
</SelectTrigger>
<SelectContent>
{tokens.map((token) => (
<SelectItem key={token.value} value={token.value}>
<div className="flex items-center gap-2">
<img
src={token.icon}
alt={token.label}
className="h-6 w-6 rounded-full"
/>
<span>{token.label}</span>
</div>
</SelectItem>
))}
</SelectContent>
</Select>

API Reference

PropTypeDefaultDescription
valuestringControlled value of the select
defaultValuestringDefault value for uncontrolled usage
onValueChange(value: string) => voidCallback when value changes
openbooleanControlled open state
defaultOpenbooleanDefault open state
onOpenChange(open: boolean) => voidCallback when open state changes
disabledbooleanfalseDisables the select

SelectTrigger

The button that opens the select menu.

PropTypeDefaultDescription
classNamestringAdditional CSS classes
asChildbooleanfalseMerge props onto child element

SelectContent

The popup container for select items. Renders in a portal.

PropTypeDefaultDescription
position"popper" | "item-aligned""popper"Positioning mode
sideOffsetnumberDistance from the trigger

SelectItem

An interactive item within the select.

PropTypeDefaultDescription
valuestringThe value submitted when selected
disabledbooleanfalsePrevents selection

SelectValue

Displays the selected value in the trigger. Accepts a placeholder prop for empty state.

SelectGroup / SelectLabel

Group related items with a non-interactive label.

SelectSeparator

A horizontal divider between groups of items.

Accessibility

The Select component follows WAI-ARIA listbox patterns:

  • Opens on click or Enter/Space on the trigger
  • Arrow keys navigate between items
  • Enter/Space selects the focused item
  • Escape closes the dropdown
  • Type-ahead character navigation is supported
  • Selected item is announced to screen readers