About
A ComboBox combines a text input with a listbox, allowing users to filter a list of options to items matching a query. A combo box can be built using the <datalist> HTML element, but this is very limited in functionality and difficult to style. ComboBox helps achieve accessible combo box and autocomplete components that can be styled as needed.
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds ComboBox [react-aria-components] to your project and fits it to your theme.
Code
How ComboBox [react-aria-components] is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
import { ChevronsUpDown } from "lucide-react"
import { Button } from "@/components/ui/button"
import {
Combobox,
ComboboxInput,
ComboboxItem,
ComboboxListBox,
ComboboxPopover,
} from "@/components/ui/combobox"
import { FieldGroup, Label } from "@/components/ui/field"
export function ComboboxDemo() {
return (
<Combobox>
<Label>Favorite Animal</Label>
<FieldGroup className="p-0">
<ComboboxInput />
<Button variant="ghost" size="icon" className="mr-1 size-6 p-1">
<ChevronsUpDown aria-hidden="true" className="size-4 opacity-50" />
</Button>
</FieldGroup>
<ComboboxPopover>
<ComboboxListBox>
<ComboboxItem textValue="Aardvark">Aardvark</ComboboxItem>
<ComboboxItem textValue="Cat">Cat</ComboboxItem>
<ComboboxItem textValue="Dog">Dog</ComboboxItem>
<ComboboxItem textValue="Kangaroo">Kangaroo</ComboboxItem>
<ComboboxItem textValue="Panda">Panda</ComboboxItem>
<ComboboxItem textValue="Snake">Snake</ComboboxItem>
</ComboboxListBox>
</ComboboxPopover>
</Combobox>
)
}
![ComboBox [react-aria-components] preview](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=1080,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/combobox/default/preview.png)
![Tag Group [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/tag-group/891/preview.png)
![Date Range Picker [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/date-range-picker/default/preview.png)
![Grid List [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/grid-list/default/preview.png)
![Switch [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/switch/1023/preview.png)
![Select [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/select/864/preview.png)
![Range Calendar [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/range-calendar/default/preview.png)

![Slider [react-aria-components]](https://cdn.21st.dev/cdn-cgi/image/fit=scale-down,width=640,quality=75,format=webp/https://cdn.21st.dev/user_jolbol1/slider/827/preview.png)







