Command Palette
Search for a command to run...
Command
Fast, composable, unstyled command menu for React.
Type to search for commands
No results found.
Suggestions
Calendar
Search Emoji
Calculator
Settings
Profile⌘P
Billing⌘B
Settings⌘S
About
The <Command />
component uses the cmdk
component by pacocoursey.
Installation
npx shadcn@latest add command
Usage
import {Command,CommandDialog,CommandEmpty,CommandGroup,CommandInput,CommandItem,CommandList,CommandSeparator,CommandShortcut,} from "@/components/xfork-ui/command"
<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
Press Cmd+K to open
Press ⌘J
Command Palette
Search for a command to run...
To show the command menu in a dialog, use the <CommandDialog />
component.
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 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.
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}/>))