- Componentes
- Accordion
- ActivityGraph
- Alert
- Alert Dialog
- Aspect Ratio
- Avatar
- AvatarGroup
- Badge
- Box
- Breadcrumb
- Button
- Button Group
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Connector
- Container
- Context Menu
- Dialog
- Drawer
- DropdownMenu
- Empty
- EnvEditor
- Fade In
- Field
- Fps
- Hover Card
- Highlighter
- Input
- InputGroup
- Input OTP
- Item
- JSONViewer
- Kbd
- Label
- Marquee
- Menubar
- Native Select
- Navigation Menu
- NumberInput
- Pagination
- Popover
- Preview Card
- Progress
- ProgressiveBlur
- Radio Group
- Resizable
- Retro Grid
- Scan Line
- ScrollArea
- Scrubber
- SectionLabel
- Select
- Separator
- Sheet
- Signature
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Stagger Group
- StatusDot
- SystemBanner
- Switch
- Table
- Tabs
- TagInput
- Textarea
- ThemeToogle
- Toggle
- Toggle Group
- Tooltip
- Typing Effect
Em @zexon/ui/components/tag-input. O valor é um array de strings (value / onValueChange). A lista e o filtro vêm do exterior: passa search e onSearchChange (debounce ou pedido na API no componente pai) e items já coerentes com a pesquisa. O Command interno usa shouldFilter={false}.
Use triggerVariant="hud" para o gatilho com o mesmo estilo Button variant="hud" (colchetes).
Uso
O exemplo abaixo está em components/docs/demos/tag-input-doc-demo.tsx (cliente): estado local, filtro no pai, onSelect para feedback e opção de simular carregamento ao abrir.
Seleção com pesquisa e criar
onSelect.Com dados remotos, combina onOpenChange com enabled na query e debounce em onSearchChange.
Acessibilidade
O gatilho expõe aria-invalid quando há error e associa a mensagem com aria-describedby. Mantém o teclado e a lista dentro do padrão do cmdk.