{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "autocomplete",
  "type": "registry:ui",
  "title": "Autocomplete",
  "description": "An input that suggests options as you type.",
  "dependencies": [
    "@base-ui/react",
    "lucide-react"
  ],
  "registryDependencies": [
    "@basecn/input",
    "@basecn/button"
  ],
  "files": [
    {
      "path": "src/registry/components/ui/autocomplete.tsx",
      "content": "import { XIcon } from \"lucide-react\";\nimport { Autocomplete as AutocompletePrimitive } from \"@base-ui/react/autocomplete\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/registry/components/ui/button\";\nimport { Input } from \"@/registry/components/ui/input\";\n\nconst Autocomplete = AutocompletePrimitive.Root;\n\nfunction AutocompleteInput(props: AutocompletePrimitive.Input.Props) {\n  return (\n    <AutocompletePrimitive.Input\n      data-slot=\"autocomplete-input\"\n      render={<Input />}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompletePopup({\n  className,\n  ...props\n}: AutocompletePrimitive.Popup.Props) {\n  return (\n    <AutocompletePrimitive.Popup\n      data-slot=\"autocomplete-popup\"\n      className={cn(\n        \"w-(--anchor-width) max-h-[min(var(--available-height),23rem)] max-w-(--available-width) overflow-y-auto scroll-pt-2 scroll-pb-2 overscroll-contain rounded-md bg-popover text-popover-foreground shadow-md outline-1 outline-border dark:shadow-none\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompletePositioner({\n  className,\n  ...props\n}: AutocompletePrimitive.Positioner.Props) {\n  return (\n    <AutocompletePrimitive.Portal>\n      <AutocompletePrimitive.Positioner\n        data-slot=\"autocomplete-positioner\"\n        className={cn(\"z-50\", className)}\n        {...props}\n      />\n    </AutocompletePrimitive.Portal>\n  );\n}\n\nfunction AutocompleteList({\n  className,\n  ...props\n}: AutocompletePrimitive.List.Props) {\n  return (\n    <AutocompletePrimitive.List\n      data-slot=\"autocomplete-list\"\n      className={cn(\"not-empty:p-1.5\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteEmpty({\n  className,\n  ...props\n}: AutocompletePrimitive.Empty.Props) {\n  return (\n    <AutocompletePrimitive.Empty\n      data-slot=\"autocomplete-empty\"\n      className={cn(\n        \"flex items-center justify-center text-muted-foreground text-sm not-empty:py-3\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteItem({\n  className,\n  ...props\n}: AutocompletePrimitive.Item.Props) {\n  return (\n    <AutocompletePrimitive.Item\n      data-slot=\"autocomplete-item\"\n      className={cn(\n        \"py-1.5 px-3 text-sm rounded-md data-highlighted:bg-accent data-highlighted:text-accent-foreground\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteGroup({\n  className,\n  ...props\n}: AutocompletePrimitive.Group.Props) {\n  return (\n    <AutocompletePrimitive.Group\n      data-slot=\"autocomplete-group\"\n      className={cn(\"block pb-2\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteGroupLabel({\n  className,\n  ...props\n}: AutocompletePrimitive.GroupLabel.Props) {\n  return (\n    <AutocompletePrimitive.GroupLabel\n      data-slot=\"autocomplete-group-label\"\n      className={cn(\n        \"bg-popover pl-3 py-2 text-sm text-muted-foreground font-medium\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteCollection({\n  ...props\n}: AutocompletePrimitive.Collection.Props) {\n  return (\n    <AutocompletePrimitive.Collection\n      data-slot=\"autocomplete-collection\"\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteStatus({\n  className,\n  ...props\n}: AutocompletePrimitive.Status.Props) {\n  return (\n    <AutocompletePrimitive.Status\n      data-slot=\"autocomplete-status\"\n      className={cn(\n        \"px-4.5 text-sm text-muted-foreground my-3 empty:m-0 empty:p-0\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteClear({\n  className,\n  children,\n  ...props\n}: AutocompletePrimitive.Clear.Props) {\n  return (\n    <AutocompletePrimitive.Clear\n      data-slot=\"autocomplete-clear\"\n      className={cn(className)}\n      {...props}\n    >\n      {children ?? <XIcon className=\"w-4 h-4 text-muted-foreground\" />}\n    </AutocompletePrimitive.Clear>\n  );\n}\n\nfunction AutocompleteRow({\n  className,\n  ...props\n}: AutocompletePrimitive.Row.Props) {\n  return (\n    <AutocompletePrimitive.Row\n      data-slot=\"autocomplete-row\"\n      className={cn(className)}\n      {...props}\n    />\n  );\n}\n\nfunction AutocompleteTrigger({\n  className,\n  ...props\n}: AutocompletePrimitive.Trigger.Props) {\n  return (\n    <AutocompletePrimitive.Trigger\n      data-slot=\"autocomplete-trigger\"\n      className={cn(className)}\n      render={<Button variant=\"outline\" />}\n      {...props}\n    />\n  );\n}\n\nexport {\n  Autocomplete,\n  AutocompleteClear,\n  AutocompleteCollection,\n  AutocompleteEmpty,\n  AutocompleteGroup,\n  AutocompleteGroupLabel,\n  AutocompleteInput,\n  AutocompleteItem,\n  AutocompleteList,\n  AutocompletePopup,\n  AutocompletePositioner,\n  AutocompleteRow,\n  AutocompleteStatus,\n  AutocompleteTrigger,\n};\n",
      "type": "registry:ui"
    }
  ]
}