{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "combobox",
  "dependencies": [
    "@data-slot/combobox"
  ],
  "registryDependencies": [
    "@fulldev/input-group",
    "@fulldev/icon"
  ],
  "files": [
    {
      "path": "src/components/ui/combobox/combobox.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type {\n  Align as ComboboxAlign,\n  Side as ComboboxSide,\n} from \"@data-slot/combobox\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n  defaultValue?: string\n  placeholder?: string\n  disabled?: boolean\n  required?: boolean\n  name?: string\n  openOnFocus?: boolean\n  autoHighlight?: boolean\n  side?: ComboboxSide\n  align?: ComboboxAlign\n  sideOffset?: number\n  alignOffset?: number\n  avoidCollisions?: boolean\n  collisionPadding?: number\n}\n\nconst {\n  class: className,\n  defaultValue,\n  placeholder,\n  disabled,\n  required,\n  name,\n  openOnFocus,\n  autoHighlight,\n  side,\n  align,\n  sideOffset,\n  alignOffset,\n  avoidCollisions,\n  collisionPadding,\n  ...props\n} = Astro.props\n---\n\n<div\n  data-slot=\"combobox\"\n  data-default-value={defaultValue}\n  data-placeholder={placeholder}\n  data-disabled={disabled}\n  data-required={required}\n  data-name={name}\n  data-open-on-focus={openOnFocus}\n  data-auto-highlight={autoHighlight}\n  data-side={side}\n  data-align={align}\n  data-side-offset={sideOffset}\n  data-align-offset={alignOffset}\n  data-avoid-collisions={avoidCollisions}\n  data-collision-padding={collisionPadding}\n  class={cn(\"group/combobox relative\", className)}\n  {...props}\n>\n  <slot />\n</div>\n\n<script>\n  import { createCombobox } from \"@data-slot/combobox\"\n\n  const initCombobox = () => {\n    document.querySelectorAll('[data-slot=\"combobox\"]').forEach((root) => {\n      if (\n        !root.querySelector('[data-slot=\"combobox-input\"]') ||\n        !root.querySelector('[data-slot=\"combobox-content\"]')\n      ) {\n        return\n      }\n\n      createCombobox(root as HTMLElement)\n    })\n  }\n\n  initCombobox()\n\n  document.addEventListener(\"astro:page-load\", initCombobox)\n</script>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-content.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type {\n  Align as ComboboxAlign,\n  Side as ComboboxSide,\n} from \"@data-slot/combobox\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n  side?: ComboboxSide\n  align?: ComboboxAlign\n  sideOffset?: number\n  alignOffset?: number\n  avoidCollisions?: boolean\n  collisionPadding?: number\n}\n\nconst {\n  class: className,\n  hidden = true,\n  side,\n  align,\n  sideOffset,\n  alignOffset,\n  avoidCollisions,\n  collisionPadding,\n  ...props\n} = Astro.props\n---\n\n<div data-slot=\"combobox-portal\">\n  <div\n    data-slot=\"combobox-positioner\"\n    data-side={side}\n    data-align={align}\n    data-side-offset={sideOffset}\n    data-align-offset={alignOffset}\n    data-avoid-collisions={avoidCollisions}\n    data-collision-padding={collisionPadding}\n    class=\"isolate z-50\"\n  >\n    <div\n      data-slot=\"combobox-content\"\n      data-side={side}\n      data-align={align}\n      data-side-offset={sideOffset}\n      data-align-offset={alignOffset}\n      data-avoid-collisions={avoidCollisions}\n      data-collision-padding={collisionPadding}\n      hidden={hidden}\n      class={cn(\n        \"group/combobox-content bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 relative z-50 max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:shadow-none\",\n        className\n      )}\n      {...props}\n    >\n      <slot />\n    </div>\n  </div>\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-empty.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, hidden = true, ...props } = Astro.props\n---\n\n<div\n  data-slot=\"combobox-empty\"\n  hidden={hidden}\n  class={cn(\n    \"text-muted-foreground hidden w-full items-center justify-center py-2 text-center text-sm group-data-empty/combobox-content:flex\",\n    className\n  )}\n  {...props}\n>\n  <slot>No results found.</slot>\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-group.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div data-slot=\"combobox-group\" class={cn(className)} {...props}>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-input.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\nimport InputGroupAddon from \"@/components/ui/input-group/input-group-addon.astro\"\nimport InputGroupInput from \"@/components/ui/input-group/input-group-input.astro\"\nimport InputGroup from \"@/components/ui/input-group/input-group.astro\"\n\nimport ComboboxTrigger from \"./combobox-trigger.astro\"\n\ntype Props = HTMLAttributes<\"input\"> & {\n  showTrigger?: boolean\n  showClear?: boolean\n}\n\nconst {\n  class: className,\n  type = \"text\",\n  disabled = false,\n  showTrigger = true,\n  showClear = false,\n  ...props\n} = Astro.props\n---\n\n<InputGroup class={cn(\"w-auto\", className)}>\n  <InputGroupInput\n    type={type}\n    data-slot=\"combobox-input\"\n    disabled={disabled}\n    {...props}\n  />\n  <InputGroupAddon align=\"inline-end\">\n    {\n      showTrigger && (\n        <ComboboxTrigger\n          class=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n          disabled={disabled}\n        />\n      )\n    }\n    {\n      showClear && (\n        <button\n          type=\"button\"\n          data-slot=\"combobox-clear\"\n          class=\"inline-flex size-6 shrink-0 items-center justify-center rounded-[calc(var(--radius)-5px)] p-0 text-sm shadow-none outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n          disabled={disabled}\n        >\n          <Icon name=\"x\" class=\"pointer-events-none\" />\n        </button>\n      )\n    }\n  </InputGroupAddon>\n  <slot />\n</InputGroup>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-item.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n  value?: string\n  disabled?: boolean\n  showIndicator?: boolean\n}\n\nconst {\n  class: className,\n  value,\n  disabled,\n  showIndicator = true,\n  ...props\n} = Astro.props\n---\n\n<div\n  data-slot=\"combobox-item\"\n  data-value={value}\n  data-disabled={disabled ? \"\" : undefined}\n  class={cn(\n    \"data-highlighted:bg-accent data-highlighted:text-accent-foreground data-highlighted:**:[svg]:text-accent-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n    className\n  )}\n  {...props}\n>\n  <slot />\n  {\n    showIndicator && (\n      <span\n        data-slot=\"combobox-item-indicator\"\n        hidden={false}\n        class=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center opacity-0 group-data-[checked=true]/combobox-item:opacity-100\"\n      >\n        <Icon name=\"check\" class=\"pointer-events-none\" />\n      </span>\n    )\n  }\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-label.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n  data-slot=\"combobox-label\"\n  class={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n  {...props}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-list.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n  data-slot=\"combobox-list\"\n  class={cn(\n    \"no-scrollbar max-h-[min(18rem,var(--available-height))] scroll-py-1 overflow-x-hidden overflow-y-auto overscroll-contain p-1 group-data-empty/combobox-content:p-0\",\n    className\n  )}\n  {...props}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-separator.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<div\n  data-slot=\"combobox-separator\"\n  class={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n  {...props}\n>\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-trigger.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Icon } from \"@/components/ui/icon\"\n\ntype Props = HTMLAttributes<\"button\"> & {\n  showIcon?: boolean\n}\n\nconst {\n  class: className,\n  type = \"button\",\n  showIcon = true,\n  ...props\n} = Astro.props\n---\n\n<button\n  type={type}\n  data-slot=\"combobox-trigger\"\n  class={cn(\n    \"[&_svg]:text-muted-foreground inline-flex size-6 shrink-0 items-center justify-center gap-2 rounded-[calc(var(--radius)-5px)] p-0 text-sm shadow-none outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n    className\n  )}\n  {...props}\n>\n  <slot />\n  {\n    showIcon && (\n      <Icon\n        name=\"chevron-down\"\n        class=\"text-muted-foreground pointer-events-none size-4\"\n      />\n    )\n  }\n</button>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/combobox-value.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"span\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<span\n  data-slot=\"combobox-value\"\n  class={cn(\n    \"data-[placeholder]:text-muted-foreground block flex-1 truncate text-left\",\n    className\n  )}\n  {...props}\n>\n  <slot />\n</span>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/combobox/index.ts",
      "content": "export { default as Combobox } from \"./combobox.astro\"\nexport { default as ComboboxContent } from \"./combobox-content.astro\"\nexport { default as ComboboxEmpty } from \"./combobox-empty.astro\"\nexport { default as ComboboxGroup } from \"./combobox-group.astro\"\nexport { default as ComboboxInput } from \"./combobox-input.astro\"\nexport { default as ComboboxItem } from \"./combobox-item.astro\"\nexport { default as ComboboxLabel } from \"./combobox-label.astro\"\nexport { default as ComboboxList } from \"./combobox-list.astro\"\nexport { default as ComboboxSeparator } from \"./combobox-separator.astro\"\nexport { default as ComboboxTrigger } from \"./combobox-trigger.astro\"\nexport { default as ComboboxValue } from \"./combobox-value.astro\"\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}