{
	"$schema": "https://ui.shadcn.com/schema/registry-item.json",
	"name": "select",
	"dependencies": [],
	"registryDependencies": [],
	"files": [
		{
			"path": "ui/select.tsx",
			"content": "import * as React from \"react\"\nimport { Select as BaseSelect } from \"@base-ui/react/select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({ ...props }: React.ComponentProps<typeof BaseSelect.Root>) {\n\treturn <BaseSelect.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Group>) {\n\treturn <BaseSelect.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectPortal({\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Portal>) {\n\treturn <BaseSelect.Portal data-slot=\"select-portal\" {...props} />\n}\n\nfunction SelectPositioner({\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Positioner>) {\n\treturn <BaseSelect.Positioner data-slot=\"select-positioner\" {...props} />\n}\n\nfunction SelectValue({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Value>) {\n\treturn (\n\t\t<BaseSelect.Value\n\t\t\tdata-slot=\"select-value\"\n\t\t\tclassName={cn(\"text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction SelectTrigger({\n\tclassName,\n\tsize = \"default\",\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Trigger> & {\n\tsize?: \"sm\" | \"default\"\n}) {\n\treturn (\n\t\t<BaseSelect.Trigger\n\t\t\tdata-slot=\"select-trigger\"\n\t\t\tdata-size={size}\n\t\t\tclassName={cn(\n\t\t\t\t\"group [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/50 aria-invalid:border-destructive bg-input hover:border-ring/70 flex w-fit items-center justify-between gap-2 rounded-md border px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow,border-color] outline-none select-none focus-visible:ring-[3px] data-disabled:pointer-events-none data-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-2 data-popup-open:[&_*[data-slot=select-icon]]:rotate-180 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<BaseSelect.Icon>\n\t\t\t\t<ChevronDownIcon\n\t\t\t\t\tdata-slot=\"select-icon\"\n\t\t\t\t\tclassName=\"size-4 opacity-50 transition-transform\"\n\t\t\t\t/>\n\t\t\t</BaseSelect.Icon>\n\t\t</BaseSelect.Trigger>\n\t)\n}\n\nfunction SelectList({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.List>) {\n\treturn (\n\t\t<BaseSelect.List\n\t\t\tdata-slot=\"select-list\"\n\t\t\tclassName={cn(\"outline-hidden\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction SelectContent({\n\tclassName,\n\tchildren,\n\tsideOffset = 4,\n\tposition = \"popper\",\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Popup> & {\n\tsideOffset?: BaseSelect.Positioner.Props[\"sideOffset\"]\n\tposition?: \"popper\" | \"item-aligned\"\n}) {\n\treturn (\n\t\t<SelectPortal>\n\t\t\t<SelectPositioner\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\talignItemWithTrigger={position === \"item-aligned\"}\n\t\t\t>\n\t\t\t\t<SelectScrollUpButton />\n\t\t\t\t<BaseSelect.Popup\n\t\t\t\t\tdata-slot=\"select-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"bg-popover text-popover-foreground relative z-50 max-h-(--available-height) min-w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md transition-all data-ending-style:scale-98 data-ending-style:opacity-0 data-starting-style:scale-98 data-starting-style:opacity-0\",\n\t\t\t\t\t\tposition === \"item-aligned\" &&\n\t\t\t\t\t\t\t\"[&_*[data-slot=select-item]]:min-w-(--anchor-width)\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<SelectList>{children}</SelectList>\n\t\t\t\t</BaseSelect.Popup>\n\t\t\t\t<SelectScrollDownButton />\n\t\t\t</SelectPositioner>\n\t\t</SelectPortal>\n\t)\n}\n\nfunction SelectItem({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Item>) {\n\treturn (\n\t\t<BaseSelect.Item\n\t\t\tdata-slot=\"select-item\"\n\t\t\tclassName={cn(\n\t\t\t\t\"data-highlighted:bg-accent data-highlighted:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-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 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n\t\t\t\t<BaseSelect.ItemIndicator>\n\t\t\t\t\t<CheckIcon className=\"size-4\" />\n\t\t\t\t</BaseSelect.ItemIndicator>\n\t\t\t</span>\n\t\t\t<BaseSelect.ItemText>{children}</BaseSelect.ItemText>\n\t\t</BaseSelect.Item>\n\t)\n}\n\nfunction SelectLabel({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.GroupLabel>) {\n\treturn (\n\t\t<BaseSelect.GroupLabel\n\t\t\tdata-slot=\"select-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground px-2 py-1.5 text-xs font-medium\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction SelectSeparator({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.Separator>) {\n\treturn (\n\t\t<BaseSelect.Separator\n\t\t\tdata-slot=\"select-separator\"\n\t\t\tclassName={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nfunction SelectScrollUpButton({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.ScrollUpArrow>) {\n\treturn (\n\t\t<BaseSelect.ScrollUpArrow\n\t\t\tdata-slot=\"select-scroll-up-button\"\n\t\t\tclassName={cn(\n\t\t\t\t\"bg-popover top-px left-px z-100 hidden w-[calc(100%-2px)] cursor-default items-center justify-center rounded-t-md py-1 data-[side=none]:flex\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ChevronUpIcon className=\"size-4\" />\n\t\t</BaseSelect.ScrollUpArrow>\n\t)\n}\n\nfunction SelectScrollDownButton({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof BaseSelect.ScrollDownArrow>) {\n\treturn (\n\t\t<BaseSelect.ScrollDownArrow\n\t\t\tdata-slot=\"select-scroll-down-button\"\n\t\t\tclassName={cn(\n\t\t\t\t\"bg-popover bottom-px left-px z-100 hidden w-[calc(100%-2px)] cursor-default items-center justify-center rounded-b-md py-1 data-[side=none]:flex\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ChevronDownIcon className=\"size-4\" />\n\t\t</BaseSelect.ScrollDownArrow>\n\t)\n}\n\nexport {\n\tSelect,\n\tSelectTrigger,\n\tSelectContent,\n\tSelectList,\n\tSelectItem,\n\tSelectValue,\n\tSelectGroup,\n\tSelectLabel,\n\tSelectSeparator,\n}\n",
			"type": "registry:ui",
			"target": ""
		}
	],
	"type": "registry:ui"
}
