Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Shadcn Autocomplete for React and Tailwind

A searchable input that suggests options while allowing custom values.

Installation

bunx --bun shadcn@latest add https://kit.dev/r/autocomplete.json

Anatomy

AutocompleteRoot
├── AutocompleteClearTrigger
├── AutocompleteContent
├── AutocompleteControl
├── AutocompleteInput
├── AutocompleteItem
│   ├── AutocompleteItemGroup
│   │   └── AutocompleteItemGroupLabel
│   ├── AutocompleteItemIndicator
│   └── AutocompleteItemText
├── AutocompleteLabel
├── AutocompleteList
├── AutocompletePositioner
└── AutocompleteTrigger

Usage

import { useListCollection } from "@ark-ui/react/collection";
import { useFilter } from "@ark-ui/react/locale";
import { Field, FieldLabel } from "@registry/react/components/field";
import {
  Autocomplete,
  AutocompleteContent,
  AutocompleteEmpty,
  AutocompleteInput,
  AutocompleteItem,
  AutocompleteList,
} from "@/components/ui/autocomplete";
const AutocompleteDemo = () => {
  const { contains } = useFilter({ sensitivity: "base" });

  const { collection, filter } = useListCollection({
    initialItems,
    filter: contains,
  });

  return (
    <Field className="w-full max-w-64">
      <FieldLabel>Search fruits</FieldLabel>
      <Autocomplete
        collection={collection}
        onInputValueChange={({ inputValue }) => filter(inputValue)}
      >
        <AutocompleteInput placeholder="e.g. Apple" showClear />
        <AutocompleteContent>
          <AutocompleteEmpty />
          <AutocompleteList>
            {collection.items.map((item) => (
              <AutocompleteItem item={item} key={item.value}>
                {item.label}
              </AutocompleteItem>
            ))}
          </AutocompleteList>
        </AutocompleteContent>
      </Autocomplete>
    </Field>
  );
};

const initialItems = [
  { label: "Apple", value: "apple" },
  { label: "Banana", value: "banana" },
  { label: "Cherry", value: "cherry" },
  { label: "Date", value: "date" },
];

Accessibility

KeyDescription
ArrowDown
Move down.
ArrowUp
Move up.
Home
Go to the start.
End
Go to the end.
Enter
Activate the focused item.
Escape
Dismiss.
Space
Activate the focused control.

Demos

Async

Autohighlight

Context

Controlled

Creatable

Custom Object

Disabled

Dynamic

Group

Highlight

Inline

Invalid

Limit Results

Multiple

Rehydrate

Root Provider

Size Lg

Size Md

Size Sm

With Clear Button

With Field

With Start Icon

With Trigger

API Reference

AutocompleteControl

PropType
AttributeType

AutocompleteInput

PropType
AttributeType

AutocompleteGroupLabel

PropType
AttributeType

AutocompleteItem

PropType
AttributeType

AutocompleteContent

PropType
AttributeType

AutocompleteTrigger

PropType
AttributeType

AutocompleteClear

PropType
AttributeType

AutocompleteGroup

PropType
AttributeType

AutocompleteEmpty

PropType
AttributeType

AutocompleteList

PropType
AttributeType

AutocompleteCollection

PropType
AttributeType

AutocompleteSeparator

PropType
AttributeType

useAutocomplete