Autocomplete

Free text with suggestions.

Base UI AutocompleteSource

Basic

The user can type any text. The list shows the items that match. The value does not have to be one of the items.

Groups

Pass grouped items to Root. Each group shows a heading above its items.

Sizes

Match the size of the buttons beside the field, and use lg only for a hero field. sm, md, and lg are 26, 36, and 44 pixels high.

sm · dense UI
md · default
lg · hero field

States

Use inset by default and line for light or inline editing, with one appearance per form. Hover and focus the fields to see those states.

inset · forms
No page has this title.
line · inline editing
No page has this title.

Usage

These are defaults, not laws. Break one when you have a good reason, or when it makes the design more cohesive or more interesting.

  • Choose the input from the number of options and what the user picks.
    ComponentUse it for
    RadioOne choice from 2 or 3 options that stay visible.
    SelectOne choice from 4 to about 10 options, or fewer options when space is tight.
    ComboboxOne or more choices from a long list, with typing to filter.
    AutocompleteFree text, with suggestions that the user can ignore.
    ChoiceboxA choice where each option needs a description, such as a plan.
    CheckboxAn on or off value in a form that the user submits.
    SwitchA setting that applies at once.
  • The list opens when the user types or presses an arrow key, not on click.

API

Props that the library adds. Every part also takes all the Base UI props.

Autocomplete.InputGroup

PropTypeDefaultDescription
size'sm' | 'md' | 'lg''md'Sets the text size, padding, and control height.
appearance'inset' | 'line''inset'Sets the field shape. Keep inset for forms. Use line for light or inline editing, such as renaming in place, filters, and quick settings.

Autocomplete.Clear

PropTypeDefaultDescription
aria-labelstring'Clear'The accessible name of the clear button.

Autocomplete.Empty

PropTypeDefaultDescription
childrenReactNode'No results'The message when no item matches the input.

Autocomplete.Popup

PropTypeDefaultDescription
sideOffsetnumber4The gap between the input and the popup, in pixels.
containerHTMLElement | ShadowRoot | RefObject | null–The element that the popup renders into. The default is the document body.