mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-15 20:01:35 +00:00
163 lines
3.6 KiB
Plaintext
163 lines
3.6 KiB
Plaintext
---
|
|
title: Command
|
|
description: Fast, composable, unstyled command menu for React.
|
|
component: true
|
|
links:
|
|
doc: https://cmdk.paco.me
|
|
---
|
|
|
|
<ComponentPreview
|
|
name="command-demo"
|
|
align="start"
|
|
className="[&_.preview>div]:max-w-[450px]"
|
|
description="A command menu"
|
|
/>
|
|
|
|
## About
|
|
|
|
The `<Command />` component uses the [`cmdk`](https://cmdk.paco.me) component by [pacocoursey](https://twitter.com/pacocoursey).
|
|
|
|
## Installation
|
|
|
|
<CodeTabs>
|
|
|
|
<TabsList>
|
|
<TabsTrigger value="cli">CLI</TabsTrigger>
|
|
<TabsTrigger value="manual">Manual</TabsTrigger>
|
|
</TabsList>
|
|
<TabsContent value="cli">
|
|
|
|
```bash
|
|
npx shadcn@latest add command
|
|
```
|
|
|
|
</TabsContent>
|
|
|
|
<TabsContent value="manual">
|
|
|
|
<Steps>
|
|
|
|
<Step>Install the following dependencies:</Step>
|
|
|
|
```bash
|
|
npm install cmdk
|
|
```
|
|
|
|
<Step>Copy and paste the following code into your project.</Step>
|
|
|
|
<ComponentSource name="command" />
|
|
|
|
<Step>Update the import paths to match your project setup.</Step>
|
|
|
|
</Steps>
|
|
|
|
</TabsContent>
|
|
|
|
</CodeTabs>
|
|
|
|
## Usage
|
|
|
|
```tsx
|
|
import {
|
|
Command,
|
|
CommandDialog,
|
|
CommandEmpty,
|
|
CommandGroup,
|
|
CommandInput,
|
|
CommandItem,
|
|
CommandList,
|
|
CommandSeparator,
|
|
CommandShortcut,
|
|
} from "@/components/ui/command"
|
|
```
|
|
|
|
```tsx
|
|
<Command>
|
|
<CommandInput placeholder="Type a command or search..." />
|
|
<CommandList>
|
|
<CommandEmpty>No results found.</CommandEmpty>
|
|
<CommandGroup heading="Suggestions">
|
|
<CommandItem>Calendar</CommandItem>
|
|
<CommandItem>Search Emoji</CommandItem>
|
|
<CommandItem>Calculator</CommandItem>
|
|
</CommandGroup>
|
|
<CommandSeparator />
|
|
<CommandGroup heading="Settings">
|
|
<CommandItem>Profile</CommandItem>
|
|
<CommandItem>Billing</CommandItem>
|
|
<CommandItem>Settings</CommandItem>
|
|
</CommandGroup>
|
|
</CommandList>
|
|
</Command>
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Dialog
|
|
|
|
<ComponentPreview
|
|
name="command-dialog"
|
|
description="A command menu in a dialog"
|
|
/>
|
|
|
|
To show the command menu in a dialog, use the `<CommandDialog />` component.
|
|
|
|
```tsx
|
|
export function CommandMenu() {
|
|
const [open, setOpen] = React.useState(false)
|
|
|
|
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)
|
|
}, [])
|
|
|
|
return (
|
|
<CommandDialog open={open} onOpenChange={setOpen}>
|
|
<CommandInput placeholder="Type a command or search..." />
|
|
<CommandList>
|
|
<CommandEmpty>No results found.</CommandEmpty>
|
|
<CommandGroup heading="Suggestions">
|
|
<CommandItem>Calendar</CommandItem>
|
|
<CommandItem>Search Emoji</CommandItem>
|
|
<CommandItem>Calculator</CommandItem>
|
|
</CommandGroup>
|
|
</CommandList>
|
|
</CommandDialog>
|
|
)
|
|
}
|
|
```
|
|
|
|
### Combobox
|
|
|
|
You can use the `<Command />` component as a combobox. See the [Combobox](/docs/components/combobox) page for more information.
|
|
|
|
## Changelog
|
|
|
|
### 2024-10-25 Classes for icons
|
|
|
|
Added `gap-2 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0` to the `<CommandItem />` to automatically style icon inside.
|
|
|
|
Add the following classes to the `cva` call in your `command.tsx` file.
|
|
|
|
```tsx showLineNumbers title="command.tsx"
|
|
const CommandItem = React.forwardRef<
|
|
React.ElementRef<typeof CommandPrimitive.Item>,
|
|
React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>
|
|
>(({ className, ...props }, ref) => (
|
|
<CommandPrimitive.Item
|
|
ref={ref}
|
|
className={cn(
|
|
"... gap-2 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
className
|
|
)}
|
|
{...props}
|
|
/>
|
|
))
|
|
```
|