① Label
Visible label — required for accessibility
② Leading icon
Optional 16×16px contextual icon
③ Trigger
Shows selected value or placeholder
④ Chevron
Rotates 180° when open
Interactive dropdowns with keyboard navigation, option highlighting, and accessible error states.
A labelled dropdown with a list of options. Clicking an option closes the menu and updates the trigger label.
sm (32px) for compact contexts like filter bars; md (40px) for standard forms.
Icons provide visual context about the type of selection being made.
Persistent guidance for when the user needs context before selecting.
Shipping rates and availability vary by region.
Pass a defaultValue matching one of the option values to pre-select an option.
Red border, red focus ring, and an inline message. Trigger after validation, not on first render.
Please select a shipping region to continue.
Muted background and greyed text — use when the field is unavailable in the current context.
Currency is set at the organisation level.
Selects alongside inputs — full-width in a typical form layout.
① Label
Visible label — required for accessibility
② Leading icon
Optional 16×16px contextual icon
③ Trigger
Shows selected value or placeholder
④ Chevron
Rotates 180° when open
| Token | Value | Description |
|---|---|---|
input/background/default | #ffffff | Trigger background |
input/background/disabled | #e1e1e1 | Disabled background |
input/border/Default | #cccccc | Default border |
input/border/hover | #a3a3a3 | Hover border |
input/border/focus | #318272 | Open/focus border |
input/border/error | #bc1700 | Error border |
input/border/disabled | #e1e1e1 | Disabled border |
input/text/placeholder | #8f8f8f | Placeholder colour |
input/text/value | #3b3b3d | Selected value colour |
focus/Ring | #acffef | Focus ring shadow colour |
background/brand/subtle | #f3fffc | Selected option highlight |
Radius/sm | 4px | Trigger corner radius |
Radius/md | 8px | Dropdown corner radius |
| Prop | Type | Default | Description |
|---|---|---|---|
options | { value: string; label: string }[] | — | Array of selectable options. |
label | string | — | Visible label above the trigger. |
placeholder | string | "Select…" | Text shown when no option is selected. |
defaultValue | string | — | Pre-selected option value on first render. |
size | "sm" | "md" | "md" | sm=32px · md=40px trigger height. |
disabled | boolean | false | Prevents opening the dropdown. |
leadingIcon | React.ElementType | — | Icon inside the trigger, before the label. |
errorMessage | string | — | Activates error state and shows this message. |
helperText | string | — | Persistent helper text — hidden when errorMessage is set. |
fullWidth | boolean | false | Stretches to fill parent container. |
onChange | (value: string) => void | — | Callback when the selected value changes. |
Do
Don't