{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "combobox", "type": "registry:ui", "title": "Combobox", "description": "A customizable combobox component", "dependencies": [ "clsx", "tailwind-merge", "@base-ui/react" ], "registryDependencies": [ "input", "classes", "label", "scroll-area" ], "files": [ { "path": "src/registry/pure-ui/ui/combobox/index.tsx", "content": "\"use client\";\r\n\r\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\";\r\nimport React, { createContext, SVGProps, useContext, useRef } from \"react\";\r\n\r\nimport { Input } from \"@/registry/pure-ui/ui/input\";\r\nimport { ScrollArea } from \"@/registry/pure-ui/ui/scroll-area\";\r\nimport { Label } from \"@/registry/pure-ui/ui/label\";\r\nimport { cn } from \"@/lib/classes\";\r\n\r\ninterface ComboboxContextType {\r\n chipsRef: React.RefObject | null;\r\n multiple: boolean;\r\n}\r\n\r\nconst ComboboxContext = createContext({\r\n chipsRef: null,\r\n multiple: false,\r\n});\r\n\r\ninterface ComboboxProps\r\n extends ComboboxPrimitive.Root.Props {}\r\n\r\nfunction Combobox(\r\n props: ComboboxProps\r\n) {\r\n const chipsRef = useRef(null);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\ninterface ComboboxValueProps extends ComboboxPrimitive.Value.Props {}\r\n\r\nfunction ComboboxValue(props: ComboboxValueProps) {\r\n return ;\r\n}\r\n\r\nexport function ChevronsUpDownIcon(props: SVGProps) {\r\n return (\r\n \r\n {/* Up chevron */}\r\n \r\n\r\n {/* Down chevron */}\r\n \r\n \r\n );\r\n}\r\n\r\nexport function CloseIcon(props: SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function CheckIcon(props: SVGProps) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\ninterface ComboboxInputProps extends ComboboxPrimitive.Input.Props {\r\n isClearable?: boolean;\r\n showTrigger?: boolean;\r\n}\r\n\r\nfunction ComboboxInput({\r\n isClearable = false,\r\n showTrigger = true,\r\n className,\r\n ...props\r\n}: ComboboxInputProps) {\r\n const { multiple } = useContext(ComboboxContext);\r\n\r\n if (multiple) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n }\r\n {...props}\r\n />\r\n {showTrigger && (\r\n \r\n \r\n \r\n )}\r\n {isClearable && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\ninterface ComboboxLabel extends React.ComponentProps {}\r\n\r\nfunction ComboboxLabel(props: ComboboxLabel) {\r\n return