{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "select",
  "title": "Select",
  "description": "A trigger that reads as a field, and a list whose chosen row carries a lit left edge.",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "@afterglow/theme"
  ],
  "files": [
    {
      "path": "registry/terminal/ui/select.tsx",
      "content": "\"use client\";\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Select({ ...props }: SelectPrimitive.Root.Props<string>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({ ...props }: SelectPrimitive.Group.Props) {\n  return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({ ...props }: SelectPrimitive.Value.Props) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: SelectPrimitive.Trigger.Props & { size?: \"sm\" | \"default\" }) {\n  return (\n    <SelectPrimitive.Trigger\n      className={cn(\n        \"flex w-fit items-center justify-between gap-2 whitespace-nowrap rounded-none border border-input bg-panel-sunken px-3 py-2 font-mono text-phosphor-bright text-sm outline-none transition data-[size=default]:h-9 data-[size=sm]:h-8\",\n        \"focus-visible:border-line-strong focus-visible:shadow-glow\",\n        \"data-disabled:cursor-not-allowed data-disabled:opacity-40\",\n        \"aria-invalid:border-destructive\",\n        \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      data-size={size}\n      data-slot=\"select-trigger\"\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon\n        className=\"text-phosphor-dim\"\n        render={<ChevronDownIcon />}\n      />\n    </SelectPrimitive.Trigger>\n  );\n}\n\nfunction SelectContent({\n  className,\n  children,\n  ...props\n}: SelectPrimitive.Popup.Props) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Positioner\n        alignItemWithTrigger={false}\n        className=\"isolate z-50\"\n        sideOffset={4}\n      >\n        <SelectPrimitive.Popup\n          className={cn(\n            \"max-h-(--available-height) min-w-(--anchor-width) overflow-y-auto rounded-none border border-line-strong bg-popover p-1 text-popover-foreground shadow-panel outline-none motion-reduce:!animate-none\",\n            \"data-[side=bottom]:data-open:animate-select-fold-in-down data-[side=top]:data-open:animate-select-fold-in-up\",\n            \"data-[side=bottom]:data-closed:animate-select-fold-out-up data-[side=top]:data-closed:animate-select-fold-out-down\",\n            className\n          )}\n          data-slot=\"select-content\"\n          {...props}\n        >\n          <SelectScrollUpButton />\n          {children}\n          <SelectScrollDownButton />\n        </SelectPrimitive.Popup>\n      </SelectPrimitive.Positioner>\n    </SelectPrimitive.Portal>\n  );\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: SelectPrimitive.GroupLabel.Props) {\n  return (\n    <SelectPrimitive.GroupLabel\n      className={cn(\n        \"px-2 py-1.5 font-bold font-mono text-3xs text-phosphor-dim uppercase tracking-terminal-xl\",\n        className\n      )}\n      data-slot=\"select-label\"\n      {...props}\n    />\n  );\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: SelectPrimitive.Item.Props) {\n  return (\n    <SelectPrimitive.Item\n      className={cn(\n        \"relative flex w-full cursor-default select-none items-center gap-2 rounded-none py-1.5 pr-8 pl-2 font-mono text-sm outline-none\",\n        \"data-highlighted:bg-phosphor/10 data-highlighted:text-phosphor-bright\",\n        \"data-disabled:pointer-events-none data-disabled:opacity-40\",\n        \"data-selected:text-phosphor-bright data-selected:shadow-[inset_2px_0_0_var(--phosphor)]\",\n        \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      data-slot=\"select-item\"\n      {...props}\n    >\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n      <SelectPrimitive.ItemIndicator className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n        <CheckIcon className=\"size-3.5 text-phosphor\" strokeWidth={3} />\n      </SelectPrimitive.ItemIndicator>\n    </SelectPrimitive.Item>\n  );\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: SelectPrimitive.Separator.Props) {\n  return (\n    <SelectPrimitive.Separator\n      className={cn(\"-mx-1 pointer-events-none my-1 h-px bg-line\", className)}\n      data-slot=\"select-separator\"\n      {...props}\n    />\n  );\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: SelectPrimitive.ScrollUpArrow.Props) {\n  return (\n    <SelectPrimitive.ScrollUpArrow\n      className={cn(\n        \"flex cursor-default items-center justify-center bg-popover py-1 text-phosphor-dim\",\n        className\n      )}\n      data-slot=\"select-scroll-up-button\"\n      {...props}\n    >\n      <ChevronUpIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollUpArrow>\n  );\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: SelectPrimitive.ScrollDownArrow.Props) {\n  return (\n    <SelectPrimitive.ScrollDownArrow\n      className={cn(\n        \"flex cursor-default items-center justify-center bg-popover py-1 text-phosphor-dim\",\n        className\n      )}\n      data-slot=\"select-scroll-down-button\"\n      {...props}\n    >\n      <ChevronDownIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollDownArrow>\n  );\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n};\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}