{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"select","type":"registry:ui","title":"Select","description":"Tailark Base UI Select component","dependencies":["@base-ui/react"],"registryDependencies":["@tailark/core-utils"],"files":[{"path":"ui/select.tsx","type":"registry:ui","target":"@ui/select.tsx","content":"'use client'\n\nimport * as React from 'react'\nimport { Select as SelectPrimitive } from '@base-ui/react/select'\nimport { CheckIcon, ChevronDownIcon, ChevronsUpDown, 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({ className, ...props }: SelectPrimitive.Group.Props) {\n    return (\n        <SelectPrimitive.Group\n            data-slot=\"select-group\"\n            className={cn('', className)}\n            {...props}\n        />\n    )\n}\n\nfunction SelectValue({ ...props }: SelectPrimitive.Value.Props) {\n    return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({ className, children, ...props }: SelectPrimitive.Trigger.Props) {\n    return (\n        <SelectPrimitive.Trigger\n            data-slot=\"select-trigger\"\n            className={cn(\n                \"border-input data-placeholder:text-muted-foreground aria-invalid:border-destructive ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:focus-visible:ring-0 flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm shadow transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-4 disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&>span]:line-clamp-1 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n                className\n            )}\n            {...props}>\n            {children}\n            <SelectPrimitive.Icon data-slot=\"select-icon\">\n                <ChevronsUpDown className=\"size-3 opacity-75\" />\n            </SelectPrimitive.Icon>\n        </SelectPrimitive.Trigger>\n    )\n}\n\nfunction SelectContent({\n    className,\n    children,\n    side = 'bottom',\n    sideOffset = 4,\n    align = 'center',\n    alignOffset = 0,\n    alignItemWithTrigger = true,\n    ...props\n}: SelectPrimitive.Popup.Props &\n    Pick<\n        SelectPrimitive.Positioner.Props,\n        'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'\n    >) {\n    return (\n        <SelectPrimitive.Portal>\n            <SelectPrimitive.Positioner\n                data-slot=\"select-positioner\"\n                side={side}\n                sideOffset={sideOffset}\n                align={align}\n                alignOffset={alignOffset}\n                alignItemWithTrigger={alignItemWithTrigger}>\n                <SelectPrimitive.Popup\n                    data-slot=\"select-content\"\n                    data-align-trigger={alignItemWithTrigger}\n                    className={cn(\n                        'bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-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 ring-foreground/6.5 relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border border-transparent shadow-md ring-1',\n                        className\n                    )}\n                    {...props}>\n                    <SelectScrollUpButton />\n                    <SelectPrimitive.List\n                        data-slot=\"select-viewport\"\n                        className=\"w-full scroll-my-1 p-1\">\n                        {children}\n                    </SelectPrimitive.List>\n                    <SelectScrollDownButton />\n                </SelectPrimitive.Popup>\n            </SelectPrimitive.Positioner>\n        </SelectPrimitive.Portal>\n    )\n}\n\nfunction SelectLabel({ className, ...props }: SelectPrimitive.GroupLabel.Props) {\n    return (\n        <SelectPrimitive.GroupLabel\n            data-slot=\"select-label\"\n            className={cn('px-2 py-1.5 text-sm font-semibold', className)}\n            {...props}\n        />\n    )\n}\n\nfunction SelectItem({ className, children, ...props }: SelectPrimitive.Item.Props) {\n    return (\n        <SelectPrimitive.Item\n            data-slot=\"select-item\"\n            className={cn(\n                \"data-highlighted:bg-accent data-highlighted:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden data-disabled:pointer-events-none data-disabled:opacity-50 relative flex w-full cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-2 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n                className\n            )}\n            {...props}>\n            <span\n                data-slot=\"select-item-indicator\"\n                className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n                <SelectPrimitive.ItemIndicator>\n                    <CheckIcon\n                        className=\"size-3\"\n                        strokeWidth={3}\n                    />\n                </SelectPrimitive.ItemIndicator>\n            </span>\n            <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n        </SelectPrimitive.Item>\n    )\n}\n\nfunction SelectSeparator({ className, ...props }: SelectPrimitive.Separator.Props) {\n    return (\n        <SelectPrimitive.Separator\n            data-slot=\"select-separator\"\n            className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n            {...props}\n        />\n    )\n}\n\nfunction SelectScrollUpButton({ className, ...props }: SelectPrimitive.ScrollUpArrow.Props) {\n    return (\n        <SelectPrimitive.ScrollUpArrow\n            data-slot=\"select-scroll-up-button\"\n            className={cn('flex cursor-default items-center justify-center py-1', className)}\n            {...props}>\n            <ChevronUpIcon className=\"size-4\" />\n        </SelectPrimitive.ScrollUpArrow>\n    )\n}\n\nfunction SelectScrollDownButton({ className, ...props }: SelectPrimitive.ScrollDownArrow.Props) {\n    return (\n        <SelectPrimitive.ScrollDownArrow\n            data-slot=\"select-scroll-down-button\"\n            className={cn('flex cursor-default items-center justify-center py-1', className)}\n            {...props}>\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"}]}