---
title: Combobox
description: Autocomplete input and command palette with a list of suggestions.
component: true
---
## Installation
The Combobox is built using a composition of the `` and the `` components.
See installation instructions for the [Popover](/docs/components/popover#installation) and the [Command](/docs/components/command#installation) components.
## Usage
```tsx showLineNumbers title="components/example-combobox.tsx"
"use client"
import * as React from "react"
import { CheckIcon, ChevronsUpDownIcon } from "lucide-react"
import { cn } from "@/lib/utils"
import { Button } from "@/components/ui/button"
import {
Command,
CommandEmpty,
CommandGroup,
CommandInput,
CommandItem,
CommandList,
} from "@/components/ui/command"
import {
Popover,
PopoverContent,
PopoverTrigger,
} from "@/components/ui/popover"
const frameworks = [
{
value: "next.js",
label: "Next.js",
},
{
value: "sveltekit",
label: "SvelteKit",
},
{
value: "nuxt.js",
label: "Nuxt.js",
},
{
value: "remix",
label: "Remix",
},
{
value: "astro",
label: "Astro",
},
]
export function ExampleCombobox() {
const [open, setOpen] = React.useState(false)
const [value, setValue] = React.useState("")
return (
No framework found.
{frameworks.map((framework) => (
{
setValue(currentValue === value ? "" : currentValue)
setOpen(false)
}}
>
{framework.label}
))}
)
}
```
## Examples
### Combobox
### Popover
### Dropdown menu
### Responsive
You can create a responsive combobox by using the `` on desktop and the `` components on mobile.