{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "baseui-combobox", "description": "A Base UI combobox component", "dependencies": ["@base-ui/react", "lucide-react"], "registryDependencies": ["@craftdotui/utils", "@craftdotui/baseui-input"], "files": [ { "path": "packages/baseui/components/combobox/index.tsx", "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronsUpDown, X } from \"lucide-react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Input, inputVariants } from \"@/components/baseui/components/input\";\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Context */\n/* -------------------------------------------------------------------------- */\n\ninterface ComboboxContextInterface {\n\tisSearchPending?: boolean;\n}\n\nconst ComboboxContext = React.createContext({\n\tisSearchPending: false,\n});\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Root */\n/* -------------------------------------------------------------------------- */\n\ntype ComboboxRootInterface<\n\tValue = unknown,\n\tMultiple extends boolean | undefined = false,\n> = ComboboxPrimitive.Root.Props & {\n\tisSearchPending?: boolean;\n};\n\nfunction ComboboxRoot({\n\tisSearchPending,\n\t...props\n}: ComboboxRootInterface) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Input */\n/* -------------------------------------------------------------------------- */\n\ntype ComboboxInputInterface = Omit & {\n\tsize?: VariantProps[\"size\"];\n\tshowClear?: boolean;\n\tshowTrigger?: boolean;\n\tstartAddon?: React.ReactNode;\n};\n\nfunction ComboboxInput({\n\tclassName,\n\tsize = \"md\",\n\tshowClear = false,\n\tshowTrigger = false,\n\tstartAddon,\n\t...props\n}: ComboboxInputInterface) {\n\treturn (\n\t\t
*.w-full]:w-fit\">\n\t\t\t{startAddon && (\n\t\t\t\t
\n\t\t\t\t\t{startAddon}\n\t\t\t\t
\n\t\t\t)}\n\n\t\t\t}\n\t\t\t\t{...props}\n\t\t\t/>\n\n\t\t\t
\n\t\t\t\t{showClear && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{showTrigger && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\t\t
\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Trigger */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxTrigger({\n\tclassName,\n\t...props\n}: React.ComponentProps) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Icon */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxIcon({\n\tclassName,\n\t...props\n}: React.HTMLAttributes) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Clear */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Value (for single-select display inside input) */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) {\n\treturn ;\n}\n\n/* --------------------------------------s------------------------------------ */\n/* Combobox Portal */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxPortal(props: ComboboxPrimitive.Portal.Props) {\n\treturn ;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Backdrop */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxBackdrop({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Backdrop.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Positioner */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxPositioner({\n\tclassName,\n\tsideOffset = 8,\n\t...props\n}: ComboboxPrimitive.Positioner.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Popup */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxPopup({ className, ...props }: ComboboxPrimitive.Popup.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Arrow */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxArrow({ className, ...props }: ComboboxPrimitive.Arrow.Props) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tCombobox Arrow\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox List */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Empty */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Item */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxItem({ className, ...props }: ComboboxPrimitive.Item.Props) {\n\treturn (\n\t\t\n\t\t\t{props.children}\n\t\t\t\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Item Indicator */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxItemIndicator({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.ItemIndicator.Props) {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Group */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) {\n\treturn ;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Group Label */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxGroupLabel({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.GroupLabel.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Separator */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxSeparator({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Separator.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Chips */\n/* -------------------------------------------------------------------------- */\n\ninterface ComboboxChipsProps extends ComboboxPrimitive.Chips.Props {\n\tsize?: VariantProps[\"size\"];\n\tvariant?: VariantProps[\"variant\"];\n\tref?: React.Ref;\n}\n\nfunction ComboboxChips({\n\tclassName,\n\tsize = \"md\",\n\tvariant = \"default\",\n\tref,\n\t...props\n}: ComboboxChipsProps) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Chip */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxChip({ className, ...props }: ComboboxPrimitive.Chip.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Chip Remove */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxChipRemove({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.ChipRemove.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Status */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxStatus({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Status.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Collection */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxCollection(props: ComboboxPrimitive.Collection.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Combobox Row */\n/* -------------------------------------------------------------------------- */\n\nfunction ComboboxRow(props: ComboboxPrimitive.Row.Props) {\n\treturn ;\n}\n\nfunction ComboboxChipsInput({\n\tclassName,\n\t...props\n}: ComboboxPrimitive.Input.Props) {\n\treturn (\n\t\t\n\t);\n}\n\n/* -------------------------------------------------------------------------- */\n/* Exports */\n/* -------------------------------------------------------------------------- */\n\nexport {\n\tComboboxRoot,\n\tComboboxInput,\n\tComboboxTrigger,\n\tComboboxIcon,\n\tComboboxClear,\n\tComboboxValue,\n\tComboboxPortal,\n\tComboboxBackdrop,\n\tComboboxPositioner,\n\tComboboxPopup,\n\tComboboxArrow,\n\tComboboxList,\n\tComboboxItem,\n\tComboboxItemIndicator,\n\tComboboxEmpty,\n\tComboboxGroup,\n\tComboboxGroupLabel,\n\tComboboxSeparator,\n\tComboboxStatus,\n\tComboboxCollection,\n\tComboboxRow,\n\tComboboxChips,\n\tComboboxChip,\n\tComboboxChipRemove,\n\tComboboxChipsInput,\n\tComboboxPrimitive,\n};\n", "type": "registry:component", "target": "components/baseui/components/combobox.tsx" } ], "type": "registry:component" }