Files
fn_registry/frontend/functions/ui/command.md
T
egutierrez 988e901066 docs: params/output semántico en 506 funciones para composabilidad
Añade campos params y output al frontmatter YAML de las 506 funciones del registry.
Cada parámetro tiene descripción semántica (qué representa, unidades, rango típico)
y cada función describe qué produce su output. Permite a agentes razonar sobre
cadenas de composición (ej: prices → log_return → sharpe_ratio) sin leer código.
2026-04-05 18:45:16 +02:00

83 lines
2.5 KiB
Markdown

---
name: command
kind: component
lang: ts
domain: ui
version: "1.0.0"
purity: impure
signature: "Command(props: CommandProps): JSX.Element"
description: "Combobox de busqueda y seleccion estilo cmdk. Filtra items por query, soporta grupos, iconos y shortcuts. Incluye CommandSearch para uso de una linea."
tags: [command, search, combobox, component, ui, interactive]
uses_functions: [cn_ts_core]
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: ["lucide-react"]
output: "Componente Command que renderiza combobox de búsqueda y selección con filtrado reactivo, grupos e iconos"
tested: false
tests: []
test_file_path: ""
file_path: "frontend/functions/ui/command.tsx"
props:
- name: items
type: "CommandItem[]"
required: true
description: "Array de items con value, label, description, icon, disabled, group"
- name: value
type: "string"
required: false
description: "Valor seleccionado (controlado)"
- name: onValueChange
type: "(value: string) => void"
required: false
description: "Callback al seleccionar un item"
- name: placeholder
type: "string"
required: false
description: "Placeholder del input de busqueda (default: Search...)"
- name: emptyMessage
type: "string"
required: false
description: "Mensaje cuando no hay resultados (default: No results found.)"
emits: [onValueChange]
has_state: true
framework: react
variant: []
---
## Ejemplo
```tsx
// Uso simple con CommandSearch
const items = [
{ value: "react", label: "React", group: "Frameworks" },
{ value: "vue", label: "Vue", group: "Frameworks" },
{ value: "typescript", label: "TypeScript", group: "Lenguajes" },
]
<CommandSearch
items={items}
placeholder="Buscar tecnologia..."
onValueChange={(val) => console.log(val)}
/>
// Composable para mayor control
<Command>
<CommandInput placeholder="Buscar..." value={query} onChange={(e) => setQuery(e.target.value)} />
<CommandList>
<CommandEmpty>Sin resultados.</CommandEmpty>
<CommandGroup heading="Sugerencias">
<CommandItem selected={selected === "1"} onSelect={() => setSelected("1")}>
Opcion 1
<CommandShortcut>K</CommandShortcut>
</CommandItem>
</CommandGroup>
</CommandList>
</Command>
```
## Notas
Implementacion propia (sin dependencia de cmdk) usando primitivos HTML nativos. CommandSearch es el wrapper de alto nivel con filtrado reactivo integrado. El filtrado es case-insensitive sobre label, description y value. Los grupos se renderizan en orden de aparicion en items.