Capítulo 54 de 108
Menu de comando para busca e ações rápidas (padrão "command palette" tipo VS Code/Spotlight). Built on cmdk (não Base UI), diferente da maioria dos componentes deste lote.
cmdk.heading (título da seção, ex. heading="Suggestions").Command num Dialog/overlay, controlado (open/onOpenChange), para o padrão "command palette" acionado por botão ou atalho global.<Command className="max-w-sm rounded-lg border">
<CommandInput placeholder="Type a command or search..." />
<CommandList>
<CommandEmpty>No results found.</CommandEmpty>
<CommandGroup heading="Suggestions">
<CommandItem>
<Calendar />
<span>Calendar</span>
</CommandItem>
<CommandItem disabled>
<Calculator />
<span>Calculator</span>
</CommandItem>
</CommandGroup>
<CommandSeparator />
<CommandGroup heading="Settings">
<CommandItem>
<User />
<span>Profile</span>
<CommandShortcut>⌘P</CommandShortcut>
</CommandItem>
</CommandGroup>
</CommandList>
</Command>
CommandItem, e shortcut no último item.const [open, setOpen] = React.useState(false)
<Button onClick={() => setOpen(true)} variant="outline">Open Menu</Button>
<CommandDialog open={open} onOpenChange={setOpen}>
<Command>
<CommandInput placeholder="Type a command or search..." />
<CommandList>
<CommandEmpty>No results found.</CommandEmpty>
<CommandGroup heading="Suggestions">
<CommandItem>Calendar</CommandItem>
</CommandGroup>
</CommandList>
</Command>
</CommandDialog>
Command embrulhado em CommandDialog controlado por estado externo.Composição:
Command
├── CommandInput
└── CommandList
├── CommandEmpty
├── CommandGroup
│ ├── CommandItem
│ └── CommandItem
├── CommandSeparator
└── CommandGroup
├── CommandItem
└── CommandItem
Command é baseado em cmdk (npm install cmdk), não @base-ui/react.CommandDialog é o padrão recomendado para transformar o Command num overlay tipo command palette, controlado via open/onOpenChange.CommandGroup heading="..." é a forma de dar título a uma seção de resultados (não existe CommandLabel separado como nos menus).CommandEmpty é essencial para dar feedback quando a busca não encontra nada.CommandItem disabled desabilita seleção/filtro daquele item específico.CommandDialog reaproveita a mecânica de overlay do Dialog para o padrão command palette.