Inputs

Combobox

Filterable select for longer lists: one value, or several as removable chips, and an empty state when nothing matches. Autocomplete acts on a pick and keeps nothing selected.

Live example

Import

Each family is its own entry point, so a page loads only what it uses.

tsx
import { AutocompleteRoot, Combobox, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, ComboboxRoot } from "@nibapp/ui/components/combobox";import { Field } from "@nibapp/ui/components/field";import { Spinner } from "@nibapp/ui/components/spinner";

Props

Each component's own props and variants, read from its source. What it also takes from an element or a Base UI part is named below its table.

Combobox

Filterable picker over string-valued options. `multiple` switches to chips. For custom item rendering or async data, compose the parts instead.

Also takes ComboboxSingleProps | ComboboxMultipleProps.

ComboboxContent

Portal + positioner + popup. Children: <ComboboxEmpty> and <ComboboxList>.

PropTypeDefaultDescription
sideComponentProps<typeof BaseCombobox.Positioner>["side"]"bottom"
alignComponentProps<typeof BaseCombobox.Positioner>["align"]"start"
sideOffsetnumber6

Also takes .

ComboboxEmpty

Also takes the props of Base UI's Combobox.Empty.

ComboboxInput

Text field that filters the list; includes clear and open buttons.

PropTypeDefaultDescription
size"sm" | "md" | "lg""md"
leadingReactNode—

Icon before the text (e.g. a search glyph).

trailingReactNode—

After the text, before the buttons (e.g. a spinner while results load).

showClearbooleantrue

Show the ✕ button when a value is selected (in an autocomplete, when there's text). Default `true`.

clearLabelstring | undefined—

Accessible name of the ✕ button; default "Clear selection". A search field names what it clears.

showTriggerbooleantrue

Show the ⌃⌄ popup button. Default `true`.

classNamestring | undefined—

Classes for the frame.

inputClassNameComponentProps<typeof BaseCombobox.Input>["className"]—

Also takes the props of Base UI's Combobox.Input, except size and className.

ComboboxItem

PropTypeDefaultDescription
iconReactNode—
descriptionReactNode—
trailingReactNode—
childrenReactNode—

Also takes the props of Base UI's Combobox.Item, except children.

ComboboxList

Also takes the props of Base UI's Combobox.List.

Field

Label + control + description + error in one.

PropTypeDefaultDescription
labelReactNode—
hintReactNode—

Muted trailing text in the label row — "Optional", a character count…

descriptionReactNode—
errorReactNode—

Forces the field invalid and shows this message. Omit to show the browser's validation message after Base UI validates the control.

orientation"vertical" | "horizontal""vertical"

`vertical` stacks label → control → description. `horizontal` puts the copy on the left and the control on the right — the settings-row layout for switches and compact selects.

nativeLabelbooleantrue

Set to `false` for button controls (Select, Combobox trigger) so clicking the label focuses rather than presses the trigger.

children (required)ReactNode—

Also takes the props of Base UI's Field.Root, except children.

Spinner

Minimal busy indicator: a quarter arc over a faint track, for buttons, inline loads and small regions. A region that holds placeholders while it loads is a `LoadingRegion`.

PropTypeDefaultDescription
size"xs" | "sm" | "md" | "lg" | "xl""md"
labelstring—

Accessible label; omit when a surrounding element already announces the busy state.

Also takes the props of a <svg> element, except children.