Skip to content
RefineUI

Select

Dropdown select control for picking from a list.

Overview

Machine-readable contract from Component Spec.

component: selectexport: Selectversion: 1tokens.visual: selectattributes: data-refineui=select-trigger

Anatomy

Partdata-refineui
rootselect-trigger
select_itemselect-item
select_menuselect-menu

Variants

AxisValues
appearancefilled, plain

States

ScopeCategoryValues
componentpseudofocus-visible
componentcomponentdata-state: open, closed, pressed, selected
componentenvironmentforced-colors, dir
select-triggercomponentdata-state: open, closed
select-itemcomponentdata-state: pressed, selected

Accessibility

SlotElementRoleRequired attributes
select-triggerbuttoncomboboxaria-expanded: required=true, type: boolean
select-menudivlistbox
select-itemdivoptionaria-selected: required=true, type: boolean

Keyboard

KeyActionNative
Escapeclose
ArrowDownnext-trigger
ArrowUpprevious-trigger
Homefirst-trigger
Endlast-trigger
Enteractivatetrue
Spaceactivatetrue

Focus

SectionPropertyValue
visualrequiredtrue
visualselector:focus-visible

Layout

PropertyValue
directionlogical
rtltrue

Variant

Select a recipe variant — preview and Recipe → Tokens update together.

Recipe → Tokens

Slot bindings for variant="default" — declared in Select/style → tokens.

SlotVariantPropertyTraceSemanticLight → foundationDark → foundationRecipe class
triggerbackgroundselect.backgroundbackgroundPrimaryneutralWhiteneutral900bg-refineui-alias-background-primary
triggerborderselect.border.defaultborderDefaultneutral300neutral650border-refineui-alias-border-default
triggerforegroundselect.textforegroundPrimaryprimaryBlackneutralWhitetext-refineui-alias-foreground-primary
triggerplaceholderselect.placeholderforegroundPlaceholderneutral450neutral500text-refineui-alias-foreground-placeholder

Component token trace

All paths in token-trace-v2.json prefixed with select.

TraceSemanticLight foundationDark foundationLightDark
select.backgroundbackgroundPrimaryneutralWhiteneutral900#FFFFFF#1A1A1A
select.border.defaultborderDefaultneutral300neutral650#DBDBDB#5B5B5B
select.border.disabledborderDisabledneutral250neutral700#E0E0E0#404040
select.border.errorborderErrorred500red500#FF6969#FF6969
select.border.successborderSuccessgreen500green500#26B12D#26B12D
select.disabledBackgroundbackgroundSurfaceDisabledneutral150neutral850#F0F0F0#222222
select.placeholderforegroundPlaceholderneutral450neutral500#BBBBBB#A4A4A4
select.textforegroundPrimaryprimaryBlackneutralWhite#212121#FFFFFF
npm install @refineui/react @refineui/tokens
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from "@refineui/react";
<Select value={country} onValueChange={setCountry}>
<SelectTrigger>
<SelectValue placeholder="Select a country" />
</SelectTrigger>
<SelectContent>
<SelectItem value="us">United States</SelectItem>
<SelectItem value="ca">Canada</SelectItem>
<SelectItem value="uk">United Kingdom</SelectItem>
</SelectContent>
</Select>
<Select size="lg" fullWidth>
<SelectTrigger>
<SelectValue placeholder="Choose an option" />
</SelectTrigger>
<SelectContent>
<SelectGroup>
<SelectLabel>Fruits</SelectLabel>
<SelectItem value="apple">Apple</SelectItem>
<SelectItem value="banana">Banana</SelectItem>
</SelectGroup>
<SelectSeparator />
<SelectItem value="other">Other</SelectItem>
</SelectContent>
</Select>
PropDefaultTypeDescription
valuestringControlled selected value.
defaultValuestringUncontrolled initial value.
onValueChange(value: string) => voidEvent handler when selection changes.
openbooleanControlled open state.
onOpenChange(open: boolean) => voidEvent handler when open state changes.
placeholderstringPlaceholder text.
size"md""sm" | "md" | "lg"Control height tier.
fullWidthfalsebooleanStretches to full parent width.
disabledfalsebooleanDisables interaction.

Button that opens the dropdown.

PropDefaultTypeDescription
appearance"filled""filled" | "plain"Field chrome vs flush trigger for composed surfaces (Footer locale, Calendar caption).

Displays selected value or placeholder.

Dropdown panel container.

PropDefaultTypeDescription
position"item-aligned""item-aligned" | "popper"Positioning strategy.
PropDefaultTypeDescription
valuestringItem value (required).
disabledfalsebooleanDisables this item.

Groups related items.

Label for a group.

Visual divider between items.