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
valuestring—Controlled value of the select
defaultValuestring—Default value for uncontrolled usage
onValueChange(value: string) => void—Callback when value changes
openboolean—Controlled open state
defaultOpenboolean—Default open state
onOpenChange(open: boolean) => void—Callback when open state changes
disabledbooleanfalseDisables the select

SelectTrigger​

The button that opens the select menu.

PropTypeDefaultDescription
classNamestring—Additional 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
sideOffsetnumber—Distance from the trigger

SelectItem​

An interactive item within the select.

PropTypeDefaultDescription
valuestring—The 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