Primitive

Select

Accessible single-choice select built on @radix-ui/react-select. The trigger borrows Button's outline + radius so it sits naturally inside CardActions; the dropdown content is a portaled popover with viewport-clamped max height. Compose Select.Root with SelectTrigger, SelectContent, and SelectItem.

Preview

Class

ClassWhen applied
.asset-select-triggerTrigger button — same outline style as .asset-button, with a built-in chevron icon on the right.
.asset-select-iconChevron wrapper inside the trigger. Tinted muted-foreground.
.asset-select-contentPortaled dropdown panel — bordered card with a soft drop shadow. Width matches the trigger via --radix-select-trigger-width.
.asset-select-viewportScroll viewport inside the content. 4px padding around items.
.asset-select-itemEach option. data-highlighted swaps to surface tone; data-state="checked" bolds the label and shows the indicator.
.asset-select-item-indicatorCheck icon shown on the selected item.
.asset-select-separator1px separator between option groups.

CSS variables

Override these on any ancestor scope (or globally) to restyle this primitive. See the CSS Variables reference for the full token list and Theming for override patterns.

VariableAffects
--asset-radiusCorner radius of the trigger and dropdown content (matches Button); item rows use ÷4 for tighter inset corners.
--asset-borderTrigger outline, content border, and separator color.
--asset-cardTrigger and dropdown background.
--asset-surfaceTrigger hover/open background and item highlight background.
--asset-foregroundTrigger label and option text.
--asset-muted-foregroundChevron icon and placeholder text.
--asset-font-sansTrigger and option font family.