{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "autocomplete",
  "title": "Autocomplete",
  "dependencies": [
    "@base-ui/react",
    "lucide-react"
  ],
  "registryDependencies": [
    "@fab-ui/input",
    "@fab-ui/button"
  ],
  "files": [
    {
      "path": "registry/default/ui/autocomplete.tsx",
      "content": "'use client';\n\nimport { Button } from '@/registry/default/ui/button';\nimport { Input } from '@/registry/default/ui/input';\nimport { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete';\nimport { XIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\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  sideOffset = 4,\n  children,\n  ...props\n}: AutocompletePrimitive.Popup.Props & {\n  sideOffset?: number;\n}) {\n  return (\n    <AutocompletePositioner sideOffset={sideOffset}>\n      <AutocompletePrimitive.Popup\n        data-slot='autocomplete-popup'\n        className={cn(\n          'max-h-[min(var(--available-height),23rem)] w-(--anchor-width) max-w-(--available-width) scroll-pt-2 scroll-pb-2 overflow-y-auto overscroll-contain rounded-2xl bg-popover text-popover-foreground shadow-lg outline-1 outline-muted dark:shadow-none dark:-outline-offset-1 dark:outline-muted',\n          className\n        )}\n        {...props}\n      >\n        {children}\n      </AutocompletePrimitive.Popup>\n    </AutocompletePositioner>\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('outline-none', 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('p-1 data-empty:p-0', 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        'px-4 py-2 text-[0.925rem] leading-4 text-gray-600 empty:m-0 empty:p-0',\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        \"relative flex w-full cursor-default items-center gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\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        'sticky top-0 z-1 mt-0 mr-2 mb-0 ml-0 w-[calc(100%-0.5rem)] bg-[canvas] px-4 pt-2 pb-1 text-xs font-semibold tracking-wider uppercase',\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        'mt-1 px-4 py-2 text-sm leading-5 text-muted-foreground 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='h-4 w-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"
    }
  ],
  "type": "registry:ui"
}