Instalación
npx logic2b@next add commandUso
import {
Command,
CommandEmpty,
CommandGroup,
CommandInput,
CommandItem,
CommandList,
} from "@/components/ui/command"
<Command>
<CommandInput placeholder="Escribe un comando o busca…" />
<CommandList>
<CommandEmpty>No se han encontrado resultados.</CommandEmpty>
<CommandGroup heading="Sugerencias">
<CommandItem>Calendario</CommandItem>
</CommandGroup>
</CommandList>
</Command>
CommandDialog
Usa CommandDialog para mostrar la paleta dentro de un modal al estilo ⌘ K. Depende del componente dialog.
import { CommandDialog, CommandInput, CommandList } from "@/components/ui/command"
<CommandDialog open={open} onOpenChange={setOpen}>
<CommandInput placeholder="Escribe un comando o busca…" />
<CommandList>...</CommandList>
</CommandDialog>
Notas de uso
Está construido sobre cmdk. Las propiedades se reenvían a las primitivas subyacentes.
Ejemplos
Con iconos
Diálogo de comandos
Muestra el menú dentro de un modal y ábrelo mediante un atajo de teclado.
Command Palette
Search for a command to run...
Accesibilidad
- Se controla completamente con el teclado: las flechas mueven la selección, Intro ejecuta el elemento resaltado e Inicio y Fin saltan a los extremos de la lista.
CommandInputes un combobox que controla la lista mediantearia-activedescendant; el foco permanece en la entrada mientras se anuncian los elementos activos.CommandSeparatores decorativo por defecto, por lo que queda fuera del contrato de roles hijos delistboxsin perder su agrupación visual.CommandDialogmantiene el foco dentro, se cierra con Escape e incluye título y descripción solo para lectores de pantalla.
Playground interactivo
Edita las propiedades del componente y revisa el JSX exacto antes de copiarlo. La vista previa se carga solo cuando esta sección entra en pantalla.
<Command
className="w-full max-w-md border shadow-sm"
aria-label="Component commands"
>
<CommandInput
placeholder="Search components…"
aria-label="Search commands"
/>
<CommandList>
<CommandEmpty>No component found.</CommandEmpty>
<CommandGroup
heading="Components"
>
<CommandItem
value="button"
>Button</CommandItem>
<CommandItem
value="dialog"
>Dialog</CommandItem>
<CommandItem
value="tooltip"
>Tooltip</CommandItem>
</CommandGroup>
</CommandList>
</Command>Referencia de API
Generada a partir de las exportaciones públicas de TypeScript en src/ui/command.tsx. Las descripciones técnicas conservan el texto canónico del código fuente.
Command
ComponenteProps: React.ComponentProps<typeof CommandPrimitive>CommandDialog
ComponenteProps: React.ComponentProps<typeof Dialog> & { title?: string description?: string className?: string showCloseButton?: boolean }| Propiedad | Tipo | Obligatoria | Valor predeterminado | Descripción |
|---|---|---|---|---|
title | string | No | "Command Palette" | — |
description | string | No | "Search for a command to run..." | — |
showCloseButton | boolean | No | true | — |
CommandInput
ComponenteProps: React.ComponentProps<typeof CommandPrimitive.Input>CommandList
ComponenteProps: React.ComponentProps<typeof CommandPrimitive.List>CommandEmpty
ComponenteProps: React.ComponentProps<typeof CommandPrimitive.Empty>CommandGroup
ComponenteProps: React.ComponentProps<typeof CommandPrimitive.Group>CommandItem
ComponenteProps: React.ComponentProps<typeof CommandPrimitive.Item>CommandShortcut
ComponenteProps: React.ComponentProps<"span">CommandSeparator
ComponenteProps: React.ComponentProps<typeof CommandPrimitive.Separator>Contrato de accesibilidad
Comportamiento legible por máquinas y responsabilidades de quien integra command. Los detalles normativos conservan el texto canónico del registro.
- Soporte
- Gestionado por la primitiva
- Patrón
- combobox with listbox
- cmdk
| Teclas | Comportamiento |
|---|---|
| ArrowUp ArrowDown | Move through matching commands. |
| Enter | Run the active command. |
| Escape | Close the open surface and restore focus. |
Semántica incorporada
- The input and list coordinate with combobox/listbox semantics and active descendant state.
Responsabilidades de integración
- Give the dialog and input useful labels; commands must remain understandable without shortcut text.