---
title: Command
description: A command palette component built with Dialog and Autocomplete for searching and executing commands.
links:
doc: https://base-ui.com/react/components/autocomplete#api-reference
---
## Installation
CLI
Manual
```bash
npx shadcn@latest add @coss/command
```
Install the following dependencies:
```bash
npm install @base-ui/react
```
Copy and paste the following code into your project.
Update the import paths to match your project setup.
## Usage
```tsx
import {
Command,
CommandCollection,
CommandDialog,
CommandDialogPopup,
CommandDialogTrigger,
CommandEmpty,
CommandFooter,
CommandGroup,
CommandGroupLabel,
CommandInput,
CommandItem,
CommandList,
CommandPanel,
CommandSeparator,
CommandShortcut,
} from "@/components/ui/command"
import { Button } from "@/components/ui/button"
```
```tsx
const items = [
{ value: "linear", label: "Linear" },
{ value: "figma", label: "Figma" },
{ value: "slack", label: "Slack" },
]
}>
Open Command Palette
No results found.
{(item) => (
{item.label}
)}
```
## API Reference
### Command
The root component that wraps the autocomplete functionality. It's an alias for `Autocomplete.Root` with sensible defaults for command palette behavior: `autoHighlight="always"`, `keepHighlight={true}`, and `open={true}`.
| Prop | Type | Default | Description |
| --------------- | -------------------------------------- | ----------- | ------------------------------------------------ |
| `items` | `readonly unknown[]` | - | The array of items to display in the command |
| `open` | `boolean` | `true` | Controls whether the command is open |
| `autoHighlight` | `boolean \| "always"` | `"always"` | Controls automatic highlighting of items |
| `keepHighlight` | `boolean` | `true` | Whether to maintain highlight state |
| `...props` | `React.ComponentProps` | - | All Base UI Autocomplete props are supported |
### CommandDialog
A wrapper component that provides the dialog root functionality. It's an alias for `Dialog.Root` from Base UI.
| Prop | Type | Description |
| -------------- | ---------- | ------------------------------------------- |
| `open` | `boolean` | Controls whether the dialog is open |
| `onOpenChange` | `function` | Callback fired when the open state changes |
| `...props` | Base UI Dialog props | All standard dialog attributes are supported |
### CommandDialogTrigger
The trigger button that opens the command dialog. Renders as a button by default.
| Prop | Type | Description |
| ----------- | ------------------------------------------- | ------------------------------------------------ |
| `render` | `React.ReactElement` | Element to render as the trigger |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | Base UI Dialog Trigger props | All standard dialog trigger attributes are supported |
### CommandDialogPopup
The popup content container that displays the command palette inside a dialog.
| Prop | Type | Description |
| -------------- | ---------------------------- | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component |
| `portalProps` | `Dialog.Portal.Props` | Props forwarded to the internal portal (`keepMounted`, `container`, etc.); see Base UI Dialog portal API |
| `...props` | Base UI Dialog Popup props | All standard dialog popup attributes are supported |
### CommandInput
The search input field with an integrated search icon. Automatically includes a search icon via `startAddon` and is sized to `lg` by default.
| Prop | Type | Description |
| ------------- | --------------------------------- | ------------------------------------------------ |
| `placeholder` | `string` | The placeholder text for the input |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | Base UI Autocomplete Input props | All standard autocomplete input attributes are supported |
### CommandList
A scrollable container for command items. It wraps `AutocompleteList` with scroll functionality.
| Prop | Type | Description |
| ----------- | --------------------------------- | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | Base UI Autocomplete List props | All standard autocomplete list attributes are supported |
### CommandPanel
A container component that provides styling for command content outside of dialogs. Useful when building standalone command interfaces with a bordered, elevated appearance.
| Prop | Type | Description |
| ----------- | ----------------------------- | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | `React.ComponentProps<'div'>` | All standard div attributes are supported |
### CommandEmpty
Displays a message when no results are found.
| Prop | Type | Description |
| ----------- | --------------------------------- | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | Base UI Autocomplete Empty props | All standard autocomplete empty attributes are supported |
### CommandGroup
Groups related command items together. Wraps `AutocompleteGroup`.
| Prop | Type | Description |
| ----------- | --------------------------------- | ------------------------------------------------ |
| `items` | `readonly unknown[]` | The array of items in this group |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | Base UI Autocomplete Group props | All standard autocomplete group attributes are supported |
### CommandGroupLabel
Displays a label for a command group.
| Prop | Type | Description |
| ----------- | -------------------------------------- | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | Base UI Autocomplete Group Label props | All standard autocomplete group label attributes are supported |
### CommandItem
An individual selectable command item. Extends `AutocompleteItem`.
| Prop | Type | Description |
| ----------- | --------------------------------- | ------------------------------------------------ |
| `value` | `unknown` | The value of the item |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | Base UI Autocomplete Item props | All standard autocomplete item attributes are supported |
### CommandSeparator
A visual separator between command groups or items. Includes default vertical spacing with `my-2` className.
| Prop | Type | Description |
| ----------- | -------------------------------------- | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component (default includes `my-2`) |
| `...props` | Base UI Autocomplete Separator props | All standard autocomplete separator attributes are supported |
### CommandShortcut
Displays keyboard shortcuts in a styled span element.
| Prop | Type | Description |
| ----------- | ------------------------------ | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | `React.ComponentProps<'span'>` | All standard span attributes are supported |
### CommandFooter
A footer section for displaying hints or additional keyboard shortcuts. Renders as a styled `div` with padding and border.
| Prop | Type | Description |
| ----------- | ----------------------------- | ------------------------------------------------ |
| `className` | `string` | Additional CSS classes to apply to the component |
| `...props` | `React.ComponentProps<'div'>` | All standard div attributes are supported |
### CommandCollection
Used within `CommandGroup` to wrap items when using grouped data. It's an alias for `AutocompleteCollection` from the Autocomplete component.
| Prop | Type | Description |
| ----------- | --------------------------------------- | ------------------------------------------------ |
| `...props` | Base UI Autocomplete Collection props | All standard autocomplete collection attributes are supported |
## Examples
### With Keyboard Shortcut
You can add a keyboard shortcut to open the command palette:
```tsx
React.useEffect(() => {
const down = (e: KeyboardEvent) => {
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
e.preventDefault()
setOpen((open) => !open)
}
}
document.addEventListener("keydown", down)
return () => document.removeEventListener("keydown", down)
}, [])
```
### With Grouped Items
```tsx
const groupedItems = [
{
value: "Suggestions",
items: [
{ value: "linear", label: "Linear" },
{ value: "figma", label: "Figma" },
]
},
{
value: "Commands",
items: [
{ value: "clipboard", label: "Clipboard History" },
{ value: "settings", label: "System Preferences" },
]
},
]
No results found.
{(group, index) => (
{group.value}
{(item) => (
{item.label}
)}
{index < groupedItems.length - 1 && }
)}
```
### Standalone Command (Without Dialog)
You can use the Command component without a dialog wrapper:
```tsx
No results found.
{(item) => (
{item.label}
)}
```