Select
A dropdown select component with support for single and multiple selection, built on Base UI’s Select primitive.
Base UI Primitive
Built on @base-ui/react/select
Import
import { Select } from "@soft-ui/react/select"
Usage
import { Select } from "@soft-ui/react/select"
export default function Example() {
return (
<Select.Root defaultValue="apple">
<Select.Trigger>
<Select.Value placeholder="Select a fruit" />
<Select.Icon />
</Select.Trigger>
<Select.Portal>
<Select.Positioner>
<Select.Popup>
<Select.List>
<Select.Item value="apple">
<Select.ItemText>Apple</Select.ItemText>
<Select.ItemIndicator />
</Select.Item>
<Select.Item value="banana">
<Select.ItemText>Banana</Select.ItemText>
<Select.ItemIndicator />
</Select.Item>
</Select.List>
</Select.Popup>
</Select.Positioner>
</Select.Portal>
</Select.Root>
)
}
Components
Select.Root
size
's' | 'm' | 'l'
default:"'m'"
Control size.
s: 32px height
m: 36px height
l: 40px height
variant
'secondary' | 'tertiary'
default:"'secondary'"
Visual style variant.
secondary: Solid background
tertiary: Glass-morphic with backdrop blur
Uncontrolled default value.
Callback fired when value changes.
Enable multiple selection.
Name attribute for form submission.
Select.Trigger
Escape hatch for structural overrides.
Select.Value
Placeholder shown when no value is selected.
Select.Icon
Custom icon. Defaults to expand/collapse icon.
Select.Positioner
Padding from viewport edge.
Align selected item with trigger.
Select.Item
Select.Group / Select.GroupLabel
For grouping items with labels.
Examples
Basic
import { Select } from "@soft-ui/react/select"
export default function Basic() {
return (
<Select.Root defaultValue="apple">
<Select.Trigger>
<Select.Value placeholder="Select a fruit" />
<Select.Icon />
</Select.Trigger>
<Select.Portal>
<Select.Positioner>
<Select.Popup>
<Select.List>
<Select.Item value="apple">
<Select.ItemText>Apple</Select.ItemText>
<Select.ItemIndicator />
</Select.Item>
<Select.Item value="banana">
<Select.ItemText>Banana</Select.ItemText>
<Select.ItemIndicator />
</Select.Item>
</Select.List>
</Select.Popup>
</Select.Positioner>
</Select.Portal>
</Select.Root>
)
}
Grouped Items
import { Select } from "@soft-ui/react/select"
export default function Grouped() {
return (
<Select.Root>
<Select.Trigger>
<Select.Value placeholder="Select" />
<Select.Icon />
</Select.Trigger>
<Select.Portal>
<Select.Positioner>
<Select.Popup>
<Select.List>
<Select.Group>
<Select.GroupLabel>Fruits</Select.GroupLabel>
<Select.Item value="apple">
<Select.ItemText>Apple</Select.ItemText>
<Select.ItemIndicator />
</Select.Item>
</Select.Group>
<Select.Group>
<Select.GroupLabel>Vegetables</Select.GroupLabel>
<Select.Item value="carrot">
<Select.ItemText>Carrot</Select.ItemText>
<Select.ItemIndicator />
</Select.Item>
</Select.Group>
</Select.List>
</Select.Popup>
</Select.Positioner>
</Select.Portal>
</Select.Root>
)
}