forms / stable
Select
Single-choice popover. Pass items with id/label or nest SelectItem in SelectSection; control selectedKey with onSelectionChange, or initialize defaultSelectedKey.
LIVE PREVIEW
Loading preview…
When to use
- Choose among more than five options or save space. Supply label or aria-label; items support leading, description and grouped sections.
Consider an alternative
- 2–5 options that should all be visible — use RadioGroup or segmented Tabs.
- Long or searchable lists — use ComboBox.
- Actions — use Menu.
Import
import { Select } from '@revido-llc/kit';Keyboard interaction
- Enter / Space / ↓ — open
- ↑ / ↓ — move
- Type — jump to option
- Escape — close
Props
Props documented by the Kit. Refer to the TypeScript types for the complete interface, including inherited props.
Related exports
SelectItem, SelectSection
Examples
Status with glyphs and sections
const statuses = [{ id: "open", title: "Open", items: [
statusOption("todo", "Not started", "todo"),
statusOption("doing", "In progress", "in-progress"),
] }, { id: "closed", title: "Closed", items: [statusOption("done", "Done", "done")] }];
<Select label="Status" items={statuses} selectedKey={status} onSelectionChange={setStatus} />Icons and descriptions
<Select label="Visibility" items={[{ id: "me", label: "Only me", leading: { kind: "icon", icon: <User /> }, description: "Private draft" }]} />Compact, placeholder and error
<Select aria-label="Priority" size="compact" placeholder="Priority" items={priorityOptions()} />Hand-written sections
<Select label="Assignee">
<SelectSection title="Design"><SelectItem id="rodrigo" leading={personOption({ id: "rodrigo", name: "Rodrigo" }).leading}>Rodrigo</SelectItem></SelectSection>
</Select>Literal anatomy
Static component anatomy; bind events in the consuming app.
<Select label="Status" defaultSelectedKey="todo"><SelectSection title="Workflow"><SelectItem id="todo">Todo</SelectItem><SelectItem id="done">Done</SelectItem></SelectSection></Select>