Skip to content
Zuno UI
Explore components
EXPLORE
Actions
Forms
Layout
Navigation
Data display
Feedback
Overlays
RESOURCES
Components/Combobox

Combobox

Selection with search: type to filter, pick one or many, and a clear empty state.

Base UI reference ↗

Installation

Run it from the root of a project already set up with zunoui init.

npx zunoui@latest add combobox

Dependencies

What add combobox installs alongside the component. The CLI skips any you already have in a compatible version.

ZUNO registry

  • @zuno/utils

npm

Examples

3 examples · 1 component
combobox

Search and select

A visible label, filtering as you type, a clear button and an empty state.

combobox

Grouped options

Items grouped by region; the label lives inside each group.

combobox

Multiple selection

multiple turns the selection into removable chips inside the field.

API reference

Keeps the props, events and refs of the matching Base UI primitive, plus ZUNO's styles.

PropTypeDefault
Combobox

Root; items, value/defaultValue, onValueChange, multiple, itemToStringLabel and autoHighlight.

——
ComboboxInput

Search field in a bordered group; showTrigger (true) and showClear (false) add the icon buttons.

input—
ComboboxChips / ComboboxChip / ComboboxChipsInput

Multiple selection: chips with a remove button and the input in one wrapping field.

div / div / input—
ComboboxContent

Portaled popup as wide as the field; side, align and sideOffset.

div—
ComboboxList

Scrollable list; pass a render function to map the filtered items.

div—
ComboboxItem

Option with a check indicator when selected.

div—
ComboboxEmpty

Shown only when nothing matches the query.

div—
ComboboxGroup / ComboboxGroupLabel / ComboboxCollection

Grouped items; the label must be inside a group.

div—
ComboboxValue

Render function over the selected value(s), used for chips.

——

States

The states that apply to this component and their visual treatment.

StateTreatment
ClosedThe field shows the selected value or the placeholder.
OpenOpens on typing or the trigger; the first match can be highlighted with autoHighlight.
FilteredOnly matching items remain; ComboboxEmpty covers zero results.
SelectedA check marks the selected option; showClear resets it.
MultipleSelected items become removable chips that wrap in the field.
Invalid / Disabledaria-invalid or Field's data-invalid paints the border destructive; disabled dims the field.

Accessibility

The input is a combobox with aria-expanded and aria-activedescendant: arrows move through options, Enter selects, Escape closes and then clears.

Label the input with a visible Label (htmlFor/id) or aria-label; the trigger and clear buttons already have names.

Filtering happens as you type and ComboboxEmpty explains when nothing matches instead of showing an empty box.

In multiple mode, chips are reachable with the arrow keys from the input and each one has a remove button.