{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "select",
  "dependencies": [
    "@data-slot/select"
  ],
  "registryDependencies": [
    "@fulldev/icon"
  ],
  "files": [
    {
      "path": "src/components/ui/select/select.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { Align, Position, Side } from \"@data-slot/select\"\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  position?: Position\n  side?: Side\n  align?: Align\n  sideOffset?: number\n  alignOffset?: number\n  avoidCollisions?: boolean\n  collisionPadding?: number\n  highlightItemOnHover?: boolean\n}\n\nconst {\n  class: className,\n  defaultValue,\n  placeholder,\n  disabled,\n  required,\n  name,\n  position,\n  side,\n  align,\n  sideOffset,\n  alignOffset,\n  avoidCollisions,\n  collisionPadding,\n  highlightItemOnHover,\n  ...props\n} = Astro.props\n---\n\n<div\n  data-slot=\"select\"\n  data-default-value={defaultValue}\n  data-placeholder={placeholder}\n  data-disabled={disabled}\n  data-required={required}\n  data-name={name}\n  data-position={position}\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  data-highlight-item-on-hover={highlightItemOnHover}\n  class={cn(\n    \"group/select relative inline-flex w-fit flex-col gap-1.5\",\n    className\n  )}\n  {...props}\n>\n  <slot />\n</div>\n\n<script>\n  import { create } from \"@data-slot/select\"\n\n  const initSelect = () => {\n    create()\n  }\n\n  initSelect()\n\n  document.addEventListener(\"astro:page-load\", initSelect)\n</script>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/select/select-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  size?: \"sm\" | \"default\"\n  showIcon?: boolean\n}\n\nconst {\n  class: className,\n  type = \"button\",\n  size = \"default\",\n  showIcon = true,\n  ...props\n} = Astro.props\n---\n\n<button\n  data-slot=\"select-trigger\"\n  data-size={size}\n  type={type}\n  class={cn(\n    \"border-input dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 data-placeholder:text-muted-foreground flex w-full items-center justify-between gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_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/select/select-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=\"select-value\"\n  class={cn(\"flex flex-1 text-left\", className)}\n  {...props}\n>\n  <slot />\n</span>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/select/select-content.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\nimport type { Align, Position, Side } from \"@data-slot/select\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"div\"> & {\n  position?: Position\n  side?: Side\n  align?: Align\n  sideOffset?: number\n  alignOffset?: number\n  avoidCollisions?: boolean\n  collisionPadding?: number\n}\n\nconst {\n  class: className,\n  hidden = true,\n  position,\n  side,\n  align,\n  sideOffset,\n  alignOffset,\n  avoidCollisions,\n  collisionPadding,\n  ...props\n} = Astro.props\n---\n\n<div data-slot=\"select-portal\">\n  <div\n    data-slot=\"select-positioner\"\n    data-position={position}\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=\"select-content\"\n      data-position={position}\n      data-align-trigger={position === \"item-aligned\" ? \"true\" : undefined}\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        \"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 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md shadow-md ring-1 duration-100 outline-none data-[align-trigger=true]:animate-none\",\n        className\n      )}\n      {...props}\n    >\n      <div\n        data-slot=\"select-viewport\"\n        data-position={position}\n        class=\"p-1 data-[position=item-aligned]:w-full data-[position=popper]:min-w-36\"\n      >\n        <slot />\n      </div>\n    </div>\n  </div>\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/select/select-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\n  data-slot=\"select-group\"\n  class={cn(\"scroll-my-1 p-1\", className)}\n  {...props}\n>\n  <slot />\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/select/select-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=\"select-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/select/select-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  label?: string\n}\n\nconst { class: className, value, disabled, label, ...props } = Astro.props\n---\n\n<div\n  data-slot=\"select-item\"\n  data-value={value}\n  data-disabled={disabled ? \"true\" : undefined}\n  data-label={label}\n  class={cn(\n    \"group/select-item 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-none select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 *:data-[slot=select-item-text]:flex *:data-[slot=select-item-text]:shrink-0 *:data-[slot=select-item-text]:items-center *:data-[slot=select-item-text]:gap-2 *:data-[slot=select-item-text]:whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n    className\n  )}\n  {...props}\n>\n  <span\n    data-slot=\"select-item-text\"\n    class=\"flex flex-1 shrink-0 items-center gap-2 whitespace-nowrap\"\n  >\n    <slot />\n  </span>\n  <span\n    aria-hidden=\"true\"\n    class=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center opacity-0 group-data-selected/select-item:opacity-100\"\n  >\n    <Icon name=\"check\" />\n  </span>\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/select/select-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=\"select-separator\"\n  class={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n  {...props}\n>\n</div>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/select/index.ts",
      "content": "export { default as Select } from \"./select.astro\"\nexport { default as SelectContent } from \"./select-content.astro\"\nexport { default as SelectGroup } from \"./select-group.astro\"\nexport { default as SelectItem } from \"./select-item.astro\"\nexport { default as SelectLabel } from \"./select-label.astro\"\nexport { default as SelectSeparator } from \"./select-separator.astro\"\nexport { default as SelectTrigger } from \"./select-trigger.astro\"\nexport { default as SelectValue } from \"./select-value.astro\"\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}