adn-ui
Components

Autocomplete

A high-quality, styled React autocomplete component built with @base-ui/react that suggests options as you type.

The Autocomplete component provides a search input that filters and displays suggested options in a dropdown popup as the user types.

Usage

import { Autocomplete } from "@/components/ui/autocomplete";

const tags = [
  { id: "1", label: "Feature" },
  { id: "2", label: "Bugfix" },
  { id: "3", label: "Documentation" },
];

export function ExampleAutocomplete() {
  return (
    <Autocomplete.Root items={tags}>
      <Autocomplete.Input placeholder="Search tags..." />
      <Autocomplete.Portal>
        <Autocomplete.Positioner sideOffset={4}>
          <Autocomplete.Popup>
            <Autocomplete.Empty>No items found.</Autocomplete.Empty>
            <Autocomplete.List>
              {(tag) => (
                <Autocomplete.Item key={tag.id} value={tag}>
                  {tag.label}
                </Autocomplete.Item>
              )}
            </Autocomplete.List>
          </Autocomplete.Popup>
        </Autocomplete.Positioner>
      </Autocomplete.Portal>
    </Autocomplete.Root>
  );
}

Preview

Sizes

Small
Medium
Large
<Autocomplete.Root size="sm">...</Autocomplete.Root>
<Autocomplete.Root size="md">...</Autocomplete.Root>
<Autocomplete.Root size="lg">...</Autocomplete.Root>

Anatomy

import { Autocomplete } from "@base-ui/react/autocomplete";

<Autocomplete.Root>
  <Autocomplete.Input />
  <Autocomplete.Portal>
    <Autocomplete.Positioner>
      <Autocomplete.Popup>
        <Autocomplete.Empty />
        <Autocomplete.List>
          <Autocomplete.Item />
        </Autocomplete.List>
      </Autocomplete.Popup>
    </Autocomplete.Positioner>
  </Autocomplete.Portal>
</Autocomplete.Root>;

API Reference

Autocomplete.Root Props

PropTypeDefaultDescription
itemsArray[]Array of items to filter.
variant'default' | 'outline''default'Input visual variant.
size'sm' | 'md' | 'lg''md'Component size.
valuestringundefinedControlled input value.
onValueChange(value: string) => voidundefinedCallback fired on value change.

On this page