Combobox

Type to filter a list. One pick, or chips.

Installation

This component is primitive-agnostic — same source under both flavors.

Basic

Options live on the root, while ComboboxList renders the rows. Type, then press Enter to choose the highlighted option.

Inspect

With icons

Inspect

Multiple selection

ComboboxChips keeps each selection visible and supports Backspace removal when the query is empty.

Inspect

Create from the query

Inspect

States

Inspect
Pick a framework to continue.

API Reference — Combobox

PropTypeDefaultDescription
itemsreadonly (string | { value: string; label: string })[]—Options. Strings use the same value and label; objects can carry richer row data.
multiplebooleanfalseAllow multiple picks; values become string[].
value / defaultValuestring | string[]—Controlled or initial selection.
onValueChange(value: string | string[]) => void—Called when the selection changes.
filter(item, query: string) => boolean—Custom matching function; the default is case-insensitive label matching.
onCreate(query: string) => item | void—Create a final option from a query that has no exact label match.
hideSelectedbooleanfalseMultiple mode only: remove selected options from the list.
disabled / name / requiredboolean / string / boolean—Disable the field or expose a form field with native required semantics.

API Reference — field parts

PropTypeDefaultDescription
variant"bordered" | "borderless""bordered"Field surface treatment.
iconIconComponent—Leading icon.
placeholderstring"Search…"Prompt shown while empty.
errorstring—Validation message and aria-invalid state.
clearable / sizeboolean / "default" | "compact"—Reserve a clear affordance and choose a size-ladder step.

API Reference — content and list

PropTypeDefaultDescription
children(item, index: number) => ReactNode—Render one item row for each filtered option.
side / align / sideOffset"top" | "bottom" / "start" | "center" | "end" / number—Control popup placement relative to the field.