{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "combobox", "title": "Integrated Combobox", "description": "Always-searchable, single-select autocomplete. A thin, opinionated preset over the Integrated Select with searchable forced on and multiple unavailable.", "registryDependencies": [ "@easy-shadcn/select" ], "files": [ { "path": "registry/ui/combobox.tsx", "content": "\"use client\";\n\nimport type { ClassValue } from \"clsx\";\nimport type { AriaAttributes, ReactNode } from \"react\";\nimport { Select } from \"@/registry/ui/select\";\n\nexport interface ComboboxItem {\n /** Unselectable when true. */\n disabled?: boolean;\n /** Per-item class, merged AFTER the root-level `itemClassName`. */\n itemClassName?: ClassValue;\n /** Display label. string/number drive the default filter, else falls back to `value`. */\n label: ReactNode;\n /** Required; stable React key + controlled value. `\"\"` is valid. */\n value: string;\n}\n\nexport interface ComboboxProps {\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: AriaAttributes[\"aria-invalid\"];\n\n /** `InputGroup` wrapper (the bordered control) className. */\n className?: ClassValue;\n /** Show an inline clear button when the field has a value. @default false */\n clearable?: boolean;\n /** Popover content container className. */\n contentClassName?: ClassValue;\n /** Uncontrolled initial open state. @default false */\n defaultOpen?: boolean;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n\n /** Disable all interaction. */\n disabled?: boolean;\n /** `` className. */\n emptyClassName?: ClassValue;\n /** Content shown when no items match the query. @default \"No results\" */\n emptyMessage?: ReactNode;\n /**\n * Custom filter predicate — overrides the default match.\n * @default case-insensitive `contains` against `label`, fallback `value`\n */\n filter?: (item: ComboboxItem, query: string) => boolean;\n /** Id applied to the input, for `