Combobox
Combobox provides searchable single- and multi-select lists, including chip-based selection.
Purpose
Combobox provides searchable selection constrained to listed options. Use it for single select or chip-based multi-select. Use Select for a short unsearchable list and Autocomplete when free text is a valid value.
Searchable select
Installation
With the Siteplane registry alias configured, add the component and import the installed source from your app.
CLI
pnpm dlx shadcn@4.16.1 add @siteplane/comboboxImport
import { Combobox, ComboboxChip, ComboboxChipRemove, ComboboxChips, ComboboxChipsInput, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup, ComboboxRow, ComboboxStatus, ComboboxTrigger, ComboboxValue, useComboboxFilter } from "@/components/ui/combobox";Need the machine-readable source metadata? View registry JSON.
Usage
Use Combobox for searchable known options. Keep the selected value and popup items in the same primitive tree.
import { Combobox, ComboboxInput, ComboboxItem, ComboboxList, ComboboxPopup } from "@/components/ui/combobox";
export function Example() {
return (
<Combobox>
<ComboboxInput aria-label="Team" placeholder="Select team" />
<ComboboxPopup><ComboboxList><ComboboxItem value="design">Design</ComboboxItem></ComboboxList></ComboboxPopup>
</Combobox>
);
}Examples
Chips, clear buttons, grouped options, field integration, empty states, input addons and control states are props and compositions of the same primitive.
Multi select with chips
With clear button
Grouped options
Empty state
Input addons and sizes
Field integration and error
States
API Reference
The reference lists the source-owned exports and props that are easy to miss in visual examples. Inherited Base UI props remain available unless the wrapper narrows them.
- Filter through root
itemsoruseComboboxFilter; do not render a searchable list without filtering it. ComboboxTriggersupports a button-triggered composition where the selected value stays in the trigger and search lives in the popup.- Set
ComboboxInput showTrigger={false}for a plain search field without the trailing dropdown affordance. ComboboxPopupacceptsside,align,sideOffset, andalignOffset; defaults are bottom and start alignment.ComboboxItem disabledmarks an unavailable option.ComboboxListprovides the bounded ScrollArea and fades for long lists;ComboboxRowsupports grid layouts.ComboboxStatusrenders loading or result status.ComboboxChips startAddonadds leading context. SetsizeonComboboxChipsInputto scale the complete chips field.
Motion
Component motion uses the shared Siteplane motion contract. See the global motion guide for provider setup, tokens and reduced-motion behavior.
- Popup, filter, highlight, chips, and reduced-motion behavior remain native.
- Active options and icon actions use a pointer cursor; input text keeps a text cursor.
- Results and status changes must not change the input dimensions.
Accessibility
- Give the input or chips field a visible label,
aria-label, oraria-labelledby. - Each chip needs an accessible name; its remove control already supplies the removal action semantics.
- Keep disabled options unavailable to pointer and keyboard selection.
- Connect invalid state to the input and render a visible
FieldError.
Implementation Guidance
- Use Combobox for searchable constrained selection, not free-text search.
- Keep one filtering source and render input or trigger, popup, list, and items as one composition.
- Preserve native cursor, focus, disabled, popup, scroll, and motion behavior.