@hex-core/components 1.2.1 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +407 -8
- package/dist/index.js +3249 -1253
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/primitives/button/button.tsx","../src/lib/utils.ts","../src/primitives/input/input.tsx","../src/primitives/label/label.tsx","../src/primitives/textarea/textarea.tsx","../src/primitives/checkbox/checkbox.tsx","../src/primitives/switch/switch.tsx","../src/primitives/badge/badge.tsx","../src/primitives/separator/separator.tsx","../src/primitives/select/select.tsx","../src/primitives/radio-group/radio-group.tsx","../src/primitives/slider/slider.tsx","../src/primitives/toggle/toggle.tsx","../src/primitives/toggle-group/toggle-group.tsx","../src/primitives/avatar/avatar.tsx","../src/primitives/skeleton/skeleton.tsx","../src/primitives/progress/progress.tsx","../src/primitives/scroll-area/scroll-area.tsx","../src/primitives/aspect-ratio/aspect-ratio.tsx","../src/primitives/container/container.tsx","../src/primitives/stack/stack.tsx","../src/primitives/_shared/layout-variants.ts","../src/primitives/cluster/cluster.tsx","../src/primitives/grid/grid.tsx","../src/primitives/spacer/spacer.tsx","../src/components/card/card.tsx","../src/components/tabs/tabs.tsx","../src/components/accordion/accordion.tsx","../src/components/dialog/dialog.tsx","../src/components/alert-dialog/alert-dialog.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/popover/popover.tsx","../src/components/tooltip/tooltip.tsx","../src/components/form/form.tsx","../src/components/alert/alert.tsx","../src/components/sonner/sonner.tsx","../src/components/collapsible/collapsible.tsx","../src/components/hover-card/hover-card.tsx","../src/components/context-menu/context-menu.tsx","../src/components/menubar/menubar.tsx","../src/components/navigation-menu/navigation-menu.tsx","../src/components/breadcrumb/breadcrumb.tsx","../src/components/table/table.tsx","../src/components/data-table/data-table.tsx","../src/components/pagination/pagination.tsx","../src/components/calendar/calendar.tsx","../src/components/date-picker/date-picker.tsx","../src/components/input-otp/input-otp.tsx","../src/components/command/command.tsx","../src/components/combobox/combobox.tsx","../src/components/sheet/sheet.tsx","../src/components/drawer/drawer.tsx","../src/components/resizable/resizable.tsx","../src/components/sidebar/sidebar.tsx","../src/primitives/button/button.schema.ts","../src/primitives/input/input.schema.ts","../src/primitives/label/label.schema.ts","../src/primitives/textarea/textarea.schema.ts","../src/primitives/checkbox/checkbox.schema.ts","../src/primitives/switch/switch.schema.ts","../src/primitives/badge/badge.schema.ts","../src/primitives/separator/separator.schema.ts","../src/components/card/card.schema.ts","../src/components/tabs/tabs.schema.ts","../src/components/accordion/accordion.schema.ts","../src/components/dialog/dialog.schema.ts","../src/components/alert-dialog/alert-dialog.schema.ts","../src/components/dropdown-menu/dropdown-menu.schema.ts","../src/components/popover/popover.schema.ts","../src/components/tooltip/tooltip.schema.ts","../src/primitives/select/select.schema.ts","../src/primitives/radio-group/radio-group.schema.ts","../src/primitives/slider/slider.schema.ts","../src/primitives/toggle/toggle.schema.ts","../src/primitives/toggle-group/toggle-group.schema.ts","../src/components/form/form.schema.ts","../src/primitives/avatar/avatar.schema.ts","../src/primitives/skeleton/skeleton.schema.ts","../src/primitives/progress/progress.schema.ts","../src/primitives/scroll-area/scroll-area.schema.ts","../src/primitives/aspect-ratio/aspect-ratio.schema.ts","../src/primitives/container/container.schema.ts","../src/primitives/stack/stack.schema.ts","../src/primitives/cluster/cluster.schema.ts","../src/primitives/grid/grid.schema.ts","../src/primitives/spacer/spacer.schema.ts","../src/components/collapsible/collapsible.schema.ts","../src/components/hover-card/hover-card.schema.ts","../src/components/context-menu/context-menu.schema.ts","../src/components/menubar/menubar.schema.ts","../src/components/navigation-menu/navigation-menu.schema.ts","../src/components/breadcrumb/breadcrumb.schema.ts","../src/components/alert/alert.schema.ts","../src/components/sonner/sonner.schema.ts","../src/components/table/table.schema.ts","../src/components/data-table/data-table.schema.ts","../src/components/pagination/pagination.schema.ts","../src/components/calendar/calendar.schema.ts","../src/components/date-picker/date-picker.schema.ts","../src/components/input-otp/input-otp.schema.ts","../src/components/command/command.schema.ts","../src/components/combobox/combobox.schema.ts","../src/components/sheet/sheet.schema.ts","../src/components/drawer/drawer.schema.ts","../src/components/resizable/resizable.schema.ts","../src/components/sidebar/sidebar.schema.ts"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst buttonVariants = cva(\n\t[\n\t\t// Tokens consumed (fall back to Tailwind defaults when no theme is loaded):\n\t\t// --gap-sm, --duration-normal, --control-height-{sm,md,lg}, --space-{2,3,4,8}\n\t\t\"inline-flex items-center justify-center gap-[var(--gap-sm,0.5rem)] whitespace-nowrap rounded-md text-sm font-medium\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\"active:scale-[0.98]\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: [\n\t\t\t\t\t\"bg-primary text-primary-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-primary/20\",\n\t\t\t\t\t\"hover:bg-primary/90 hover:shadow-md hover:shadow-primary/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tdestructive: [\n\t\t\t\t\t\"bg-destructive text-destructive-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-destructive/20\",\n\t\t\t\t\t\"hover:bg-destructive/90 hover:shadow-md hover:shadow-destructive/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\toutline: [\n\t\t\t\t\t// Self-borne shape: token border (border-input) + an inset-ring tinted with\n\t\t\t\t\t// foreground so the boundary is visible on flat-white surfaces too, not only\n\t\t\t\t\t// inside elevated Card/Popover/Dialog containers.\n\t\t\t\t\t\"border border-input bg-background\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md hover:inset-ring-foreground/12\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tsecondary: [\n\t\t\t\t\t\"bg-secondary text-secondary-foreground\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.08]\",\n\t\t\t\t\t\"hover:bg-secondary/80 hover:shadow-md hover:inset-ring-foreground/15\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tghost: \"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)]\",\n\t\t\t\tsm: \"h-[var(--control-height-sm,2.25rem)] rounded-md px-[var(--space-3,0.75rem)]\",\n\t\t\t\tlg: \"h-[var(--control-height-lg,2.75rem)] rounded-md px-[var(--space-8,2rem)] text-base\",\n\t\t\t\ticon: \"h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)]\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nexport interface ButtonProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tVariantProps<typeof buttonVariants> {\n\tasChild?: boolean;\n\tloading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n\t(\n\t\t{ className, variant, size, asChild = false, loading = false, children, disabled, ...props },\n\t\tref,\n\t) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tclassName={cn(buttonVariants({ variant, size, className }))}\n\t\t\t\tref={ref}\n\t\t\t\tdisabled={disabled || loading}\n\t\t\t\taria-busy={loading || undefined}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{loading ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclassName=\"animate-spin h-4 w-4\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\tclassName=\"opacity-25\"\n\t\t\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\t\t\tr=\"10\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"4\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tclassName=\"opacity-75\"\n\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\td=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t)}\n\t\t\t</Comp>\n\t\t);\n\t},\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind CSS conflict resolution.\n * @param inputs - Class values (strings, arrays, objects) to merge\n * @returns A single merged class string with Tailwind conflicts resolved\n */\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n\t({ className, type, ...props }, ref) => {\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype={type}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-[var(--control-height-md,2.5rem)] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t// inset-ring gives a self-borne edge so the input field is visible on flat\n\t\t\t\t\t// surfaces (token border alone is too low-contrast on bg-background=white).\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground\",\n\t\t\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst labelVariants = cva(\n\t\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nexport interface LabelProps\n\textends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n\t\tVariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<React.ComponentRef<typeof LabelPrimitive.Root>, LabelProps>(\n\t({ className, ...props }, ref) => (\n\t\t<LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n\t),\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A styled multi-line text input with smooth focus transitions and shadow effects.\n * Extends the native HTML textarea element with Hex UI styling.\n */\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ className, ...props }, ref) => {\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex min-h-[80px] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * An accessible checkbox component built on Radix UI.\n * Supports checked, unchecked, and indeterminate states with smooth animations.\n */\nexport type CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\nconst Checkbox = React.forwardRef<\n\tReact.ComponentRef<typeof CheckboxPrimitive.Root>,\n\tCheckboxProps\n>(({ className, ...props }, ref) => (\n\t<CheckboxPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"group h-4 w-4 shrink-0 rounded-sm border border-input\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"hover:border-ring/50 hover:shadow-md\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\"data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground\",\n\t\t\t\"data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-primary-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<CheckboxPrimitive.Indicator className={cn(\"flex items-center justify-center text-current\")}>\n\t\t\t{/* ✓ when checked; dash when indeterminate. The Root has `group`, so each icon\n\t\t\t shows only when the Root's data-state matches. */}\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"hidden h-3.5 w-3.5 group-data-[state=checked]:block\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t</svg>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"hidden h-3.5 w-3.5 group-data-[state=indeterminate]:block\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n\t\t\t</svg>\n\t\t</CheckboxPrimitive.Indicator>\n\t</CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * An accessible toggle switch built on Radix UI.\n * Use for instant on/off settings that take effect immediately.\n */\nexport type SwitchProps = React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>;\n\nconst Switch = React.forwardRef<React.ComponentRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n\t({ className, ...props }, ref) => (\n\t\t<SwitchPrimitive.Root\n\t\t\tclassName={cn(\n\t\t\t\t\"peer inline-flex h-6 w-[var(--control-height-lg,2.75rem)] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent\",\n\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\"shadow-sm\",\n\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\"data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n\t\t\t\t// Unchecked track shares --color-input with form borders (~1.27:1 vs white) so\n\t\t\t\t// add an inset ring to make the track visible on flat surfaces.\n\t\t\t\t\"data-[state=unchecked]:inset-ring-1 data-[state=unchecked]:inset-ring-foreground/[0.08]\",\n\t\t\t\t\"hover:shadow-md\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t>\n\t\t\t<SwitchPrimitive.Thumb\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0\",\n\t\t\t\t\t\"transition-transform duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n\t\t\t\t)}\n\t\t\t/>\n\t\t</SwitchPrimitive.Root>\n\t),\n);\nSwitch.displayName = \"Switch\";\n\nexport { Switch };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst badgeVariants = cva(\n\t[\n\t\t\"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"border-foreground/15 bg-secondary text-secondary-foreground hover:bg-secondary/80 hover:border-foreground/20\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n\t\t\t\toutline: \"border-foreground/20 text-foreground hover:border-foreground/30\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t},\n\t},\n);\n\n/**\n * A small status indicator badge with multiple style variants.\n * Used for tags, statuses, counts, and categorization.\n */\nexport interface BadgeProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof badgeVariants> {}\n\n/**\n * Renders an inline badge element with variant-based styling.\n * @param props - Badge props including variant and className\n * @returns A styled div element\n */\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n\treturn <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A visual divider between content sections.\n * Built on Radix UI Separator for proper accessibility semantics.\n */\nexport type SeparatorProps = React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>;\n\nconst Separator = React.forwardRef<\n\tReact.ComponentRef<typeof SeparatorPrimitive.Root>,\n\tSeparatorProps\n>(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\n\t<SeparatorPrimitive.Root\n\t\tref={ref}\n\t\tdecorative={decorative}\n\t\torientation={orientation}\n\t\tclassName={cn(\n\t\t\t\"shrink-0 bg-foreground/[0.12]\",\n\t\t\torientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nSeparator.displayName = \"Separator\";\n\nexport { Separator };\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container controlling the select's state. */\nconst Select = SelectPrimitive.Root;\n\n/** Groups a set of related SelectItem elements. */\nconst SelectGroup = SelectPrimitive.Group;\n\n/** Renders the selected value (or placeholder) inside the trigger. */\nconst SelectValue = SelectPrimitive.Value;\n\n/** The button users click to open the dropdown. */\nconst SelectTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-[var(--control-height-md,2.5rem)] w-full items-center justify-between rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\"[&>span]:line-clamp-1\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t<SelectPrimitive.Icon asChild>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4 opacity-50\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<path d=\"m7 15 5 5 5-5\" />\n\t\t\t\t<path d=\"m7 9 5-5 5 5\" />\n\t\t\t</svg>\n\t\t</SelectPrimitive.Icon>\n\t</SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = \"SelectTrigger\";\n\n/** The dropdown panel containing selectable options. */\nconst SelectContent = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n\t<SelectPrimitive.Portal>\n\t\t<SelectPrimitive.Content\n\t\t\tref={ref}\n\t\t\tposition={position}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SelectPrimitive.Viewport\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"p-[var(--space-1,0.25rem)]\",\n\t\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\t\"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</SelectPrimitive.Viewport>\n\t\t</SelectPrimitive.Content>\n\t</SelectPrimitive.Portal>\n));\nSelectContent.displayName = \"SelectContent\";\n\n/** A non-interactive label within a SelectGroup. */\nconst SelectLabel = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm font-semibold\", className)}\n\t\t{...props}\n\t/>\n));\nSelectLabel.displayName = \"SelectLabel\";\n\n/** A selectable option. */\nconst SelectItem = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<SelectPrimitive.ItemIndicator>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-3.5 w-3.5\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t</svg>\n\t\t\t</SelectPrimitive.ItemIndicator>\n\t\t</span>\n\t\t<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n\t</SelectPrimitive.Item>\n));\nSelectItem.displayName = \"SelectItem\";\n\n/** Horizontal divider between groups inside SelectContent. */\nconst SelectSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nSelectSeparator.displayName = \"SelectSeparator\";\n\nexport {\n\tSelect,\n\tSelectGroup,\n\tSelectValue,\n\tSelectTrigger,\n\tSelectContent,\n\tSelectLabel,\n\tSelectItem,\n\tSelectSeparator,\n};\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a radio group. Pair with one or more RadioGroupItem. */\nconst RadioGroup = React.forwardRef<\n\tReact.ComponentRef<typeof RadioGroupPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => (\n\t<RadioGroupPrimitive.Root\n\t\tclassName={cn(\n\t\t\t\"grid gap-[var(--gap-sm,0.5rem)] data-[orientation=horizontal]:flex data-[orientation=horizontal]:flex-row\",\n\t\t\tclassName,\n\t\t)}\n\t\tref={ref}\n\t\t{...props}\n\t/>\n));\nRadioGroup.displayName = \"RadioGroup\";\n\n/** A single radio option within a RadioGroup. */\nconst RadioGroupItem = React.forwardRef<\n\tReact.ComponentRef<typeof RadioGroupPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => (\n\t<RadioGroupPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"aspect-square h-4 w-4 rounded-full border border-input\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"hover:border-ring/50 hover:shadow-md\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\"data-[state=checked]:border-primary\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"h-2 w-2 text-primary\" aria-hidden=\"true\">\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t</svg>\n\t\t</RadioGroupPrimitive.Indicator>\n\t</RadioGroupPrimitive.Item>\n));\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\nexport { RadioGroup, RadioGroupItem };\n","import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n// Local ambient — components run in browsers where bundlers (Next, Vite, tsup)\n// replace `process.env.NODE_ENV` at build time. Avoids pulling @types/node into\n// the components package just for one dev-mode warning.\ndeclare const process: { env?: { NODE_ENV?: string } } | undefined;\n\ninterface SliderProps\n\textends React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {\n\t/**\n\t * Per-thumb accessible labels. When the slider has multiple thumbs, pass\n\t * one entry per thumb (e.g. [\"Minimum\", \"Maximum\"]). For a single-thumb\n\t * slider, the Root's `aria-label` / `aria-labelledby` is mirrored onto\n\t * the thumb automatically — pass `thumbLabels` only when those defaults\n\t * are insufficient.\n\t */\n\tthumbLabels?: string[];\n}\n\n/**\n * A range input with one or more draggable thumbs.\n * Built on Radix UI Slider with keyboard controls (arrows, Home, End, PageUp/Down).\n */\nconst Slider = React.forwardRef<\n\tReact.ComponentRef<typeof SliderPrimitive.Root>,\n\tSliderProps\n>(({ className, thumbLabels, ...props }, ref) => {\n\tconst values = props.value ?? props.defaultValue ?? [0];\n\tconst rootLabel = props[\"aria-label\"];\n\tconst rootLabelledBy = props[\"aria-labelledby\"];\n\n\tif (\n\t\ttypeof process !== \"undefined\" &&\n\t\tprocess.env?.NODE_ENV !== \"production\" &&\n\t\tthumbLabels &&\n\t\tthumbLabels.length !== values.length\n\t) {\n\t\tconsole.warn(\n\t\t\t`Slider: thumbLabels.length (${thumbLabels.length}) does not match value.length (${values.length}). ` +\n\t\t\t\t`Missing labels fall back to indexed names; extra labels are ignored.`,\n\t\t);\n\t}\n\n\treturn (\n\t\t<SliderPrimitive.Root\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"relative flex w-full touch-none select-none items-center\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full border border-foreground/[0.08] bg-secondary\">\n\t\t\t\t<SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n\t\t\t</SliderPrimitive.Track>\n\t\t\t{values.map((_, i) => {\n\t\t\t\tconst explicit = thumbLabels?.[i];\n\t\t\t\tconst fallback =\n\t\t\t\t\tvalues.length === 1\n\t\t\t\t\t\t? rootLabel\n\t\t\t\t\t\t: rootLabel\n\t\t\t\t\t\t\t? `${rootLabel} (${i + 1} of ${values.length})`\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\treturn (\n\t\t\t\t\t<SliderPrimitive.Thumb\n\t\t\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: Radix renders one thumb per value by index\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\taria-label={explicit ?? fallback}\n\t\t\t\t\t\taria-labelledby={\n\t\t\t\t\t\t\texplicit || fallback ? undefined : rootLabelledBy\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"block h-5 w-5 rounded-full border-2 border-primary bg-background\",\n\t\t\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-md\",\n\t\t\t\t\t\t\t\"hover:shadow-lg hover:scale-110\",\n\t\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</SliderPrimitive.Root>\n\t);\n});\nSlider.displayName = \"Slider\";\n\nexport type { SliderProps };\n\nexport { Slider };\n","import * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst toggleVariants = cva(\n\t[\n\t\t\"inline-flex items-center justify-center rounded-md text-sm font-medium\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"hover:bg-muted hover:text-muted-foreground\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-transparent\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border border-input bg-transparent shadow-sm inset-ring-1 inset-ring-foreground/[0.06] hover:bg-accent hover:text-accent-foreground\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-[var(--control-height-md,2.5rem)] px-[var(--space-3,0.75rem)] min-w-[var(--control-height-md,2.5rem)]\",\n\t\t\t\tsm: \"h-[var(--control-height-sm,2.25rem)] px-2.5 min-w-[var(--control-height-sm,2.25rem)]\",\n\t\t\t\tlg: \"h-[var(--control-height-lg,2.75rem)] px-5 min-w-[var(--control-height-lg,2.75rem)]\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { variant: \"default\", size: \"default\" },\n\t},\n);\n\n/**\n * A two-state button. Stays pressed when toggled on.\n * @returns A styled Radix Toggle root\n */\nconst Toggle = React.forwardRef<\n\tReact.ComponentRef<typeof TogglePrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n\t<TogglePrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(toggleVariants({ variant, size, className }))}\n\t\t{...props}\n\t/>\n));\nToggle.displayName = \"Toggle\";\n\nexport { Toggle, toggleVariants };\n","import * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport { toggleVariants } from \"../toggle/toggle.js\";\n\ntype ToggleGroupContextValue = VariantProps<typeof toggleVariants>;\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue>({\n\tsize: \"default\",\n\tvariant: \"default\",\n});\n\n/** Root container for a set of toggles (single-select or multi-select). */\nconst ToggleGroup = React.forwardRef<\n\tReact.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n\t\tVariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n\t<ToggleGroupPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"flex items-center justify-center gap-1\", className)}\n\t\t{...props}\n\t>\n\t\t<ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>\n\t</ToggleGroupPrimitive.Root>\n));\nToggleGroup.displayName = \"ToggleGroup\";\n\n/** A single toggle option within a ToggleGroup. Inherits variant/size from context. */\nconst ToggleGroupItem = React.forwardRef<\n\tReact.ComponentRef<typeof ToggleGroupPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n\t\tVariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n\tconst context = React.useContext(ToggleGroupContext);\n\treturn (\n\t\t<ToggleGroupPrimitive.Item\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\ttoggleVariants({\n\t\t\t\t\tvariant: variant ?? context.variant,\n\t\t\t\t\tsize: size ?? context.size,\n\t\t\t\t}),\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</ToggleGroupPrimitive.Item>\n\t);\n});\nToggleGroupItem.displayName = \"ToggleGroupItem\";\n\nexport { ToggleGroup, ToggleGroupItem };\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for an avatar (image + fallback). */\nconst Avatar = React.forwardRef<\n\tReact.ComponentRef<typeof AvatarPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n\t<AvatarPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"relative flex h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)] shrink-0 overflow-hidden rounded-full\", className)}\n\t\t{...props}\n\t/>\n));\nAvatar.displayName = \"Avatar\";\n\n/** Avatar image. AvatarFallback renders in its place when the image is missing or errors. */\nconst AvatarImage = React.forwardRef<\n\tReact.ComponentRef<typeof AvatarPrimitive.Image>,\n\tReact.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n\t<AvatarPrimitive.Image\n\t\tref={ref}\n\t\tclassName={cn(\"aspect-square h-full w-full object-cover\", className)}\n\t\t{...props}\n\t/>\n));\nAvatarImage.displayName = \"AvatarImage\";\n\n/** Fallback content (usually initials or an icon) shown when the image is missing or fails. Supports delayMs to avoid flashing for fast-loading images. */\nconst AvatarFallback = React.forwardRef<\n\tReact.ComponentRef<typeof AvatarPrimitive.Fallback>,\n\tReact.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n\t<AvatarPrimitive.Fallback\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-full w-full items-center justify-center rounded-full bg-muted text-sm font-medium text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAvatarFallback.displayName = \"AvatarFallback\";\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A placeholder shimmer element shown while content is loading.\n * Pair with explicit width/height via className.\n * @returns A div with pulsing muted background\n */\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"animate-pulse rounded-md border border-foreground/[0.06] bg-muted\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Skeleton };\n","import * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A horizontal progress bar from 0–100%.\n * Built on Radix UI Progress for aria-valuenow/max wiring.\n */\nconst Progress = React.forwardRef<\n\tReact.ComponentRef<typeof ProgressPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, max = 100, ...props }, ref) => {\n\tconst pct = Math.max(0, Math.min(100, ((value ?? 0) / max) * 100));\n\treturn (\n\t\t<ProgressPrimitive.Root\n\t\t\tref={ref}\n\t\t\t// Clamp undefined → 0 so ARIA (aria-valuenow) matches the visual fill.\n\t\t\t// Consumers who want an indeterminate loading bar should use <Skeleton />.\n\t\t\tvalue={value ?? 0}\n\t\t\tmax={max}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative h-2 w-full overflow-hidden rounded-full border border-foreground/[0.08] bg-secondary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ProgressPrimitive.Indicator\n\t\t\t\tclassName=\"h-full w-full flex-1 bg-primary transition-transform duration-500 ease-out\"\n\t\t\t\tstyle={{ transform: `translateX(-${100 - pct}%)` }}\n\t\t\t/>\n\t\t</ProgressPrimitive.Root>\n\t);\n});\nProgress.displayName = \"Progress\";\n\nexport { Progress };\n","import * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface ScrollAreaProps\n\textends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n\t/**\n\t * tabIndex applied to the scroll viewport so keyboard users can scroll\n\t * without a pointer. Defaults to `0` (focusable) — pass `-1` to skip the\n\t * viewport in the tab order when ScrollArea wraps purely decorative or\n\t * already-keyboard-reachable content.\n\t */\n\tviewportTabIndex?: number;\n}\n\n/** A scrollable area with custom-styled scrollbars. Content must be explicitly sized. */\nconst ScrollArea = React.forwardRef<\n\tReact.ComponentRef<typeof ScrollAreaPrimitive.Root>,\n\tScrollAreaProps\n>(({ className, children, viewportTabIndex = 0, ...props }, ref) => (\n\t<ScrollAreaPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"relative overflow-hidden\", className)}\n\t\t{...props}\n\t>\n\t\t<ScrollAreaPrimitive.Viewport\n\t\t\ttabIndex={viewportTabIndex}\n\t\t\tclassName={cn(\n\t\t\t\t\"h-full w-full rounded-[inherit]\",\n\t\t\t\tviewportTabIndex >= 0 &&\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</ScrollAreaPrimitive.Viewport>\n\t\t{/* Both orientations mount unconditionally; Radix paints each only when content\n\t\t overflows on that axis, so there's no cost for single-axis content. */}\n\t\t<ScrollBar orientation=\"vertical\" />\n\t\t<ScrollBar orientation=\"horizontal\" />\n\t\t<ScrollAreaPrimitive.Corner />\n\t</ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = \"ScrollArea\";\n\n/** Styled scrollbar track + thumb. Rendered inside ScrollArea automatically. */\nconst ScrollBar = React.forwardRef<\n\tReact.ComponentRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n\tReact.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n\t<ScrollAreaPrimitive.ScrollAreaScrollbar\n\t\tref={ref}\n\t\torientation={orientation}\n\t\tclassName={cn(\n\t\t\t\"flex touch-none select-none transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\torientation === \"vertical\" &&\n\t\t\t\t\"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n\t\t\torientation === \"horizontal\" &&\n\t\t\t\t\"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-foreground/[0.18]\" />\n\t</ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollBar\";\n\nexport { ScrollArea, ScrollBar };\nexport type { ScrollAreaProps };\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\n/** A container that maintains a specified width-to-height ratio for its children. */\nconst AspectRatio = AspectRatioPrimitive.Root;\n\nexport { AspectRatio };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * CVA variants for Container — max-width wrapper bound to `--container-*` tokens.\n * Variant names match token names (`sm`/`md`/`lg`/`xl`/`full`); `full` removes the clamp.\n * Padding maps to `--space-*` tokens.\n */\nconst containerVariants = cva(\"mx-auto w-full\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"max-w-[var(--container-sm,33rem)]\",\n\t\t\tmd: \"max-w-[var(--container-md,40rem)]\",\n\t\t\tlg: \"max-w-[var(--container-lg,50rem)]\",\n\t\t\txl: \"max-w-[var(--container-xl,66rem)]\",\n\t\t\tfull: \"max-w-full\",\n\t\t},\n\t\tpadding: {\n\t\t\tnone: \"\",\n\t\t\tsm: \"px-[var(--space-3,0.75rem)]\",\n\t\t\tmd: \"px-[var(--space-4,1rem)]\",\n\t\t\tlg: \"px-[var(--space-8,2rem)]\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tsize: \"lg\",\n\t\tpadding: \"md\",\n\t},\n});\n\n/** Props for the Container component. */\nexport interface ContainerProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof containerVariants> {\n\t/**\n\t * Render as a different element via Radix `Slot`. Pass `<Container asChild><main>...</main></Container>`\n\t * to render the layout as a `<main>` (or `<section>`, `<article>`, etc.) and inherit landmark semantics.\n\t */\n\tasChild?: boolean;\n}\n\n/**\n * A centered max-width wrapper for page content. Use to constrain reading-width sections.\n * Pass `asChild` to render as a semantic landmark (`<main>`, `<section>`, etc.) instead of a plain `<div>`.\n *\n * @param props - Container props including `size`, `padding`, and optional `asChild`.\n * @returns A wrapper element with `mx-auto`, max-width clamp, and optional horizontal padding.\n * @example\n * ```tsx\n * <Container size=\"lg\" padding=\"md\" asChild>\n * <main>\n * <h1>Article title</h1>\n * <p>Reading-width content...</p>\n * </main>\n * </Container>\n * ```\n */\nfunction Container({ className, size, padding, asChild = false, ...props }: ContainerProps) {\n\tconst Comp = asChild ? Slot : \"div\";\n\treturn <Comp className={cn(containerVariants({ size, padding }), className)} {...props} />;\n}\n\nexport { Container, containerVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport {\n\tflexAlignVariants,\n\tgapVariants,\n\tjustifyVariants,\n} from \"../_shared/layout-variants.js\";\n\n/**\n * CVA variants for Stack — vertical flex flow. `gap`, `align`, and `justify`\n * pull from the shared layout-variant maps so any change to the gap scale\n * propagates to Cluster and Grid simultaneously.\n */\nconst stackVariants = cva(\"flex flex-col\", {\n\tvariants: {\n\t\tgap: gapVariants,\n\t\talign: flexAlignVariants,\n\t\tjustify: justifyVariants,\n\t},\n\tdefaultVariants: {\n\t\tgap: \"md\",\n\t\talign: \"stretch\",\n\t\tjustify: \"start\",\n\t},\n});\n\n/** Props for the Stack component. */\nexport interface StackProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof stackVariants> {}\n\n/**\n * Vertical flex flow with token-bound gap. Children stack top-to-bottom.\n * @param props - Stack props including `gap`, `align`, and `justify` variant keys.\n * @returns A flex column with consistent vertical spacing.\n * @example\n * ```tsx\n * <Stack gap=\"lg\">\n * <h2>Section title</h2>\n * <p>Paragraph one.</p>\n * <p>Paragraph two.</p>\n * </Stack>\n * ```\n */\nfunction Stack({ className, gap, align, justify, ...props }: StackProps) {\n\treturn (\n\t\t<div className={cn(stackVariants({ gap, align, justify }), className)} {...props} />\n\t);\n}\n\nexport { Stack, stackVariants };\n","/**\n * Single source of truth for layout-primitive CVA variant maps.\n *\n * Stack, Cluster, Grid all share `gap` and `justify` value sets; align values\n * differ slightly (`stretch` for column-like flows, `baseline` for row flows).\n * Centralizing the maps here keeps token names and Tailwind classes in one\n * file — when the gap scale changes (renamed token, new step, etc.), all\n * three components update together.\n */\n\n/** Gap scale bound to `--gap-*` tokens. Used by Stack, Cluster, Grid. */\nexport const gapVariants = {\n\txs: \"gap-[var(--gap-xs,0.25rem)]\",\n\tsm: \"gap-[var(--gap-sm,0.5rem)]\",\n\tmd: \"gap-[var(--gap-md,1rem)]\",\n\tlg: \"gap-[var(--gap-lg,1.5rem)]\",\n\txl: \"gap-[var(--gap-xl,2rem)]\",\n} as const;\n\n/** `justify-content` values shared by Stack and Cluster. */\nexport const justifyVariants = {\n\tstart: \"justify-start\",\n\tcenter: \"justify-center\",\n\tend: \"justify-end\",\n\tbetween: \"justify-between\",\n} as const;\n\n/** Cross-axis `align-items` values for vertical/grid flows (column-like). */\nexport const flexAlignVariants = {\n\tstart: \"items-start\",\n\tcenter: \"items-center\",\n\tend: \"items-end\",\n\tstretch: \"items-stretch\",\n} as const;\n\n/** Cross-axis `align-items` values for horizontal flows. Includes `baseline`. */\nexport const clusterAlignVariants = {\n\tstart: \"items-start\",\n\tcenter: \"items-center\",\n\tend: \"items-end\",\n\tstretch: \"items-stretch\",\n\tbaseline: \"items-baseline\",\n} as const;\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport {\n\tclusterAlignVariants,\n\tgapVariants,\n\tjustifyVariants,\n} from \"../_shared/layout-variants.js\";\n\n/**\n * CVA variants for Cluster — horizontal flex flow with wrap.\n * `gap` and `justify` pull from shared layout-variant maps; `align` adds\n * `baseline` (text-baseline alignment for mixed-size siblings).\n */\nconst clusterVariants = cva(\"flex flex-wrap\", {\n\tvariants: {\n\t\tgap: gapVariants,\n\t\talign: clusterAlignVariants,\n\t\tjustify: justifyVariants,\n\t},\n\tdefaultVariants: {\n\t\tgap: \"md\",\n\t\talign: \"center\",\n\t\tjustify: \"start\",\n\t},\n});\n\n/** Props for the Cluster component. */\nexport interface ClusterProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof clusterVariants> {}\n\n/**\n * Horizontal flex flow with wrap. Children flow left-to-right and wrap to next line as needed.\n * @param props - Cluster props including `gap`, `align`, and `justify` variant keys.\n * @returns A flex row that wraps with consistent gap.\n * @example\n * ```tsx\n * <Cluster gap=\"sm\">\n * <Badge>react</Badge>\n * <Badge>typescript</Badge>\n * <Badge>tailwind</Badge>\n * </Cluster>\n * ```\n */\nfunction Cluster({ className, gap, align, justify, ...props }: ClusterProps) {\n\treturn (\n\t\t<div className={cn(clusterVariants({ gap, align, justify }), className)} {...props} />\n\t);\n}\n\nexport { Cluster, clusterVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport { flexAlignVariants, gapVariants } from \"../_shared/layout-variants.js\";\n\n/**\n * CVA variants for Grid — CSS grid with column-count presets and shared `gap`.\n * `cols` accepts 1/2/3/4/6 fixed columns or `\"auto-fit\"` for responsive auto-sizing\n * (in which case the consumer should pass `minColWidth` for the min track size).\n *\n * `cols` keys are TypeScript numeric literals (`cols={3}`) at the type level;\n * the schema's `enumValues` serializes them as strings for JSON-shape parity.\n */\nconst gridVariants = cva(\"grid\", {\n\tvariants: {\n\t\tcols: {\n\t\t\t1: \"grid-cols-1\",\n\t\t\t2: \"grid-cols-2\",\n\t\t\t3: \"grid-cols-3\",\n\t\t\t4: \"grid-cols-4\",\n\t\t\t6: \"grid-cols-6\",\n\t\t\t\"auto-fit\": \"\",\n\t\t},\n\t\tgap: gapVariants,\n\t\talign: flexAlignVariants,\n\t},\n\tdefaultVariants: {\n\t\tcols: 3,\n\t\tgap: \"md\",\n\t\talign: \"stretch\",\n\t},\n});\n\n/** Props for the Grid component. */\nexport interface GridProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof gridVariants> {\n\t/**\n\t * Minimum column width for `cols=\"auto-fit\"`. Tracks repeat to fill the container,\n\t * never shrinking below this value. Ignored when `cols` is a fixed integer.\n\t * @default \"16rem\"\n\t */\n\tminColWidth?: string;\n}\n\n/**\n * CSS grid with column-count presets and consistent gap. Use for card grids,\n * dashboards, image galleries, and any layout where children should align to\n * shared row/column tracks.\n *\n * Pass `cols=\"auto-fit\"` and `minColWidth` for responsive grids that fit as\n * many columns as the viewport allows without media queries.\n *\n * @param props - Grid props including `cols`, `gap`, `align`, and `minColWidth`.\n * @returns A CSS grid container.\n * @example\n * ```tsx\n * <Grid cols={3} gap=\"md\">\n * {items.map((i) => <Card key={i.id}>{i.title}</Card>)}\n * </Grid>\n * <Grid cols=\"auto-fit\" minColWidth=\"20rem\" gap=\"lg\">\n * {responsiveItems.map(...)}\n * </Grid>\n * ```\n */\nfunction Grid({ className, cols, gap, align, minColWidth = \"16rem\", style, ...props }: GridProps) {\n\t// Consumer's inline `style` is spread last so a passed `gridTemplateColumns`\n\t// overrides our auto-fit default. That's the right precedence: explicit wins.\n\tconst inlineStyle =\n\t\tcols === \"auto-fit\"\n\t\t\t? { gridTemplateColumns: `repeat(auto-fit, minmax(${minColWidth}, 1fr))`, ...style }\n\t\t\t: style;\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(gridVariants({ cols, gap, align }), className)}\n\t\t\tstyle={inlineStyle}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Grid, gridVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * CVA variants for Spacer — declarative whitespace.\n * `size` sets `--spacer-size` to a `--space-*` token (with inline fallback);\n * `axis` consumes that var via the bracket form used everywhere else in the\n * package, so the height or width can never collapse to zero if the size\n * variant is dropped.\n */\nconst spacerVariants = cva(\"shrink-0\", {\n\tvariants: {\n\t\tsize: {\n\t\t\txs: \"[--spacer-size:var(--space-1,0.25rem)]\",\n\t\t\tsm: \"[--spacer-size:var(--space-2,0.5rem)]\",\n\t\t\tmd: \"[--spacer-size:var(--space-4,1rem)]\",\n\t\t\tlg: \"[--spacer-size:var(--space-8,2rem)]\",\n\t\t\txl: \"[--spacer-size:var(--space-16,4rem)]\",\n\t\t},\n\t\taxis: {\n\t\t\tvertical: \"h-[var(--spacer-size)] w-0\",\n\t\t\thorizontal: \"w-[var(--spacer-size)] h-0\",\n\t\t\tboth: \"h-[var(--spacer-size)] w-[var(--spacer-size)]\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tsize: \"md\",\n\t\taxis: \"vertical\",\n\t},\n});\n\n/** Props for the Spacer component. */\nexport interface SpacerProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n\t\tVariantProps<typeof spacerVariants> {}\n\n/**\n * A declarative whitespace block. Use when you want to insert space between two\n * siblings without relying on margin or gap (e.g. inside a flex container that\n * doesn't own the spacing decision).\n *\n * Renders an empty `<div>` with `aria-hidden` since it has no semantic content.\n *\n * @param props - Spacer props including `size` and `axis` variant keys.\n * @returns An empty div with the requested dimension.\n * @example\n * ```tsx\n * <h1>Title</h1>\n * <Spacer size=\"lg\" />\n * <p>Body</p>\n * ```\n */\nfunction Spacer({ className, size, axis, ...props }: SpacerProps) {\n\treturn (\n\t\t<div\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={cn(spacerVariants({ size, axis }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Spacer, spacerVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n// Card consumes tokens --space-6, --space-4, --duration-normal.\n// Fallbacks match Tailwind defaults for consumers without a theme loaded.\n\n/** A container card with subtle shadow and border. */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"rounded-lg border border-foreground/[0.08] bg-card text-card-foreground\",\n\t\t\t\t\"shadow-sm transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\"hover:shadow-md\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCard.displayName = \"Card\";\n\n/** The header section of a Card. */\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex flex-col space-y-1.5 p-[var(--space-6,1.5rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCardHeader.displayName = \"CardHeader\";\n\n/** The title element inside a CardHeader. */\nconst CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<h3\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"text-2xl font-semibold leading-none tracking-tight\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCardTitle.displayName = \"CardTitle\";\n\n/** A description element inside a CardHeader. */\nconst CardDescription = React.forwardRef<\n\tHTMLParagraphElement,\n\tReact.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n\t<p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\n/** The main content area of a Card. */\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} className={cn(\"p-[var(--space-6,1.5rem)] pt-0\", className)} {...props} />\n\t),\n);\nCardContent.displayName = \"CardContent\";\n\n/** The footer section of a Card. */\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex items-center p-[var(--space-6,1.5rem)] pt-0\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a tabbed interface. */\nconst Tabs = TabsPrimitive.Root;\n\n/** A horizontal list of tab triggers. */\nconst TabsList = React.forwardRef<\n\tReact.ComponentRef<typeof TabsPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.List\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md border border-foreground/[0.06] bg-muted p-[var(--space-1,0.25rem)] text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTabsList.displayName = \"TabsList\";\n\n/** A clickable tab trigger that activates its associated content panel. */\nconst TabsTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof TabsPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-[var(--space-3,0.75rem)] py-1.5 text-sm font-medium\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"ring-offset-background hover:text-foreground\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\n/** The content panel associated with a tab trigger. */\nconst TabsContent = React.forwardRef<\n\tReact.ComponentRef<typeof TabsPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.Content\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"mt-[var(--space-2,0.5rem)] ring-offset-background\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTabsContent.displayName = \"TabsContent\";\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for accordion items. Supports single or multiple open items. */\nconst Accordion = AccordionPrimitive.Root;\n\n/** A single collapsible item within an Accordion. */\nconst AccordionItem = React.forwardRef<\n\tReact.ComponentRef<typeof AccordionPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n\t<AccordionPrimitive.Item ref={ref} className={cn(\"border-b border-b-foreground/[0.08]\", className)} {...props} />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\n/** The clickable header that toggles an AccordionItem open/closed. */\nconst AccordionTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof AccordionPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<AccordionPrimitive.Header className=\"flex\">\n\t\t<AccordionPrimitive.Trigger\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-1 items-center justify-between py-[var(--space-4,1rem)] font-medium\",\n\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\"hover:underline\",\n\t\t\t\t\"[&[data-state=open]>svg]:rotate-180\",\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<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"24\"\n\t\t\t\theight=\"24\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4 shrink-0 transition-transform duration-[var(--duration-normal,200ms)]\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t</svg>\n\t\t</AccordionPrimitive.Trigger>\n\t</AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\n/** The collapsible content panel of an AccordionItem. */\nconst AccordionContent = React.forwardRef<\n\tReact.ComponentRef<typeof AccordionPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n\t<AccordionPrimitive.Content\n\t\tref={ref}\n\t\tclassName=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n\t\t{...props}\n\t>\n\t\t<div className={cn(\"pb-[var(--space-4,1rem)] pt-0\", className)}>{children}</div>\n\t</AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container controlling open state of a modal dialog. */\nconst Dialog = DialogPrimitive.Root;\n\n/** The element (usually a button) that opens the dialog when clicked. */\nconst DialogTrigger = DialogPrimitive.Trigger;\n\n/** Portals the dialog overlay and content into the body. */\nconst DialogPortal = DialogPrimitive.Portal;\n\n/** Closes the dialog when rendered inside DialogContent. */\nconst DialogClose = DialogPrimitive.Close;\n\n/** Dimmed backdrop rendered behind the dialog content. */\nconst DialogOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nDialogOverlay.displayName = \"DialogOverlay\";\n\ninterface DialogContentProps\n\textends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n\t/**\n\t * When `true` (the default), DialogContent caps its height at viewport-2rem\n\t * and renders children inside a padded inner scroll container. The Close\n\t * button stays anchored to the (non-scrolling) outer panel so it remains\n\t * visible even when the user scrolls long content.\n\t *\n\t * Pass `scrollable={false}` to opt out — useful when the consumer manages\n\t * its own scroll surface (e.g. CommandDialog defers scroll to cmdk's\n\t * internal CommandList).\n\t */\n\tscrollable?: boolean;\n}\n\n/** The dialog content panel, centered on the overlay. Includes a close button by default. */\nconst DialogContent = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Content>,\n\tDialogContentProps\n>(({ className, children, scrollable = true, ...props }, ref) => (\n\t<DialogPortal>\n\t\t<DialogOverlay />\n\t\t<DialogPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%]\",\n\t\t\t\tscrollable\n\t\t\t\t\t? \"max-h-[calc(100vh-2rem)] border border-foreground/[0.08] bg-background shadow-lg rounded-lg\"\n\t\t\t\t\t: \"gap-[var(--gap-md,1rem)] border border-foreground/[0.08] bg-background p-[var(--space-6,1.5rem)] shadow-lg rounded-lg\",\n\t\t\t\t\"duration-[var(--duration-normal,200ms)] data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{scrollable ? (\n\t\t\t\t<div className=\"grid gap-[var(--gap-md,1rem)] overflow-y-auto p-[var(--space-6,1.5rem)]\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\tchildren\n\t\t\t)}\n\t\t\t<DialogPrimitive.Close\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute right-4 top-4 z-10 rounded-sm opacity-70 ring-offset-background bg-background/80 backdrop-blur-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"disabled:pointer-events-none\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t</svg>\n\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t</DialogPrimitive.Close>\n\t\t</DialogPrimitive.Content>\n\t</DialogPortal>\n));\nDialogContent.displayName = \"DialogContent\";\n\nexport type { DialogContentProps };\n\n/**\n * Header container inside DialogContent; stacks title and description.\n * @returns A div wrapping title/description with vertical rhythm\n */\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container inside DialogContent; aligns action buttons.\n * @returns A div that stacks buttons on mobile and right-aligns on desktop\n */\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Accessible dialog title; Radix wires it to aria-labelledby automatically. */\nconst DialogTitle = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nDialogTitle.displayName = \"DialogTitle\";\n\n/** Accessible dialog description; Radix wires it to aria-describedby automatically. */\nconst DialogDescription = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nDialogDescription.displayName = \"DialogDescription\";\n\nexport {\n\tDialog,\n\tDialogPortal,\n\tDialogOverlay,\n\tDialogTrigger,\n\tDialogClose,\n\tDialogContent,\n\tDialogHeader,\n\tDialogFooter,\n\tDialogTitle,\n\tDialogDescription,\n};\n","import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a destructive-action confirmation dialog. */\nconst AlertDialog = AlertDialogPrimitive.Root;\n\n/** The element that opens the alert dialog. */\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\n/** Portals alert dialog content into the body. */\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\n/** Dimmed backdrop behind the alert dialog. */\nconst AlertDialogOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAlertDialogOverlay.displayName = \"AlertDialogOverlay\";\n\n/** Content panel for the alert dialog. No close button — user must choose action or cancel. */\nconst AlertDialogContent = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPortal>\n\t\t<AlertDialogOverlay />\n\t\t<AlertDialogPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-[var(--gap-md,1rem)]\",\n\t\t\t\t\"border border-foreground/[0.08] bg-background p-[var(--space-6,1.5rem)] shadow-lg rounded-lg\",\n\t\t\t\t\"duration-[var(--duration-normal,200ms)] data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</AlertDialogPortal>\n));\nAlertDialogContent.displayName = \"AlertDialogContent\";\n\n/**\n * Header container for title + description.\n * @returns A div wrapping title/description with vertical rhythm\n */\nfunction AlertDialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container for Cancel/Action buttons.\n * @returns A div stacking buttons on mobile and right-aligning on desktop\n */\nfunction AlertDialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Accessible title for the alert dialog. */\nconst AlertDialogTitle = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold\", className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogTitle.displayName = \"AlertDialogTitle\";\n\n/** Accessible description for the alert dialog. */\nconst AlertDialogDescription = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogDescription.displayName = \"AlertDialogDescription\";\n\n/** The destructive action button (e.g. Delete). Receives focus by default. */\nconst AlertDialogAction = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Action>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Action\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium\",\n\t\t\t\"bg-destructive text-destructive-foreground shadow-sm\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"hover:bg-destructive/90 hover:shadow-md\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\"active:scale-[0.98]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAlertDialogAction.displayName = \"AlertDialogAction\";\n\n/** The cancel button. Closes the dialog. */\nconst AlertDialogCancel = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Cancel>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Cancel\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium\",\n\t\t\t\"border border-input bg-background shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md hover:inset-ring-foreground/12\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"mt-[var(--space-2,0.5rem)] sm:mt-0\",\n\t\t\t\"active:scale-[0.98]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAlertDialogCancel.displayName = \"AlertDialogCancel\";\n\nexport {\n\tAlertDialog,\n\tAlertDialogPortal,\n\tAlertDialogOverlay,\n\tAlertDialogTrigger,\n\tAlertDialogContent,\n\tAlertDialogHeader,\n\tAlertDialogFooter,\n\tAlertDialogTitle,\n\tAlertDialogDescription,\n\tAlertDialogAction,\n\tAlertDialogCancel,\n};\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a dropdown menu. */\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\n/** The element (button) that opens the dropdown. */\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\n/** Groups related menu items for a11y. */\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\n/** Portals dropdown content into the body. */\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\n/** Nested submenu root. */\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\n/** Group for checkable radio items (one selected at a time). */\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\n/** The visible dropdown panel. */\nconst DropdownMenuContent = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Portal>\n\t\t<DropdownMenuPrimitive.Content\n\t\t\tref={ref}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 min-w-[8rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\n/** A clickable menu item. */\nconst DropdownMenuItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tinset && \"pl-[var(--space-8,2rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\n/** A menu item with a checkbox state. */\nconst DropdownMenuCheckboxItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n\t<DropdownMenuPrimitive.CheckboxItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\tchecked={checked}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t</svg>\n\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = \"DropdownMenuCheckboxItem\";\n\n/** A menu item in a radio group. */\nconst DropdownMenuRadioItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n\t<DropdownMenuPrimitive.RadioItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg viewBox=\"0 0 24 24\" className=\"h-2 w-2 fill-current\" aria-hidden=\"true\">\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t</svg>\n\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\n\n/** A non-interactive section heading inside the menu. */\nconst DropdownMenuLabel = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold\", inset && \"pl-[var(--space-8,2rem)]\", className)}\n\t\t{...props}\n\t/>\n));\nDropdownMenuLabel.displayName = \"DropdownMenuLabel\";\n\n/** Horizontal divider between menu items. */\nconst DropdownMenuSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\n\n/**\n * Right-aligned shortcut text (e.g. ⌘K) shown next to a menu item.\n * @returns A span with muted, tracked typography\n */\nfunction DropdownMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDropdownMenu,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuRadioItem,\n\tDropdownMenuLabel,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuGroup,\n\tDropdownMenuPortal,\n\tDropdownMenuSub,\n\tDropdownMenuRadioGroup,\n};\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a popover. */\nconst Popover = PopoverPrimitive.Root;\n\n/** The element that anchors and opens the popover. */\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\n/** Helper to explicitly anchor the popover to a different element. */\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\n/** The floating popover content panel. */\nconst PopoverContent = React.forwardRef<\n\tReact.ComponentRef<typeof PopoverPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n\t<PopoverPrimitive.Portal>\n\t\t<PopoverPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 w-72 rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-4,1rem)] text-popover-foreground shadow-md outline-none\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Provider required at the root of the app or tree where tooltips are used. */\nconst TooltipProvider = TooltipPrimitive.Provider;\n\n/** Root container for a single tooltip. */\nconst Tooltip = TooltipPrimitive.Root;\n\n/** The element that shows the tooltip on hover/focus. */\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\n/** The floating tooltip content (small, hover-reveal info). */\nconst TooltipContent = React.forwardRef<\n\tReact.ComponentRef<typeof TooltipPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n\t<TooltipPrimitive.Portal>\n\t\t<TooltipPrimitive.Content\n\t\t\tref={ref}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 overflow-hidden rounded-md bg-primary px-[var(--space-3,0.75rem)] py-1.5 text-xs text-primary-foreground shadow-md\",\n\t\t\t\t\"animate-in fade-in-0 zoom-in-95\",\n\t\t\t\t\"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = \"TooltipContent\";\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport {\n\tController,\n\ttype ControllerProps,\n\ttype FieldPath,\n\ttype FieldValues,\n\tFormProvider,\n\tuseFormContext,\n\tuseFormState,\n} from \"react-hook-form\";\nimport { Label } from \"../../primitives/label/label.js\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root form provider. Wraps react-hook-form's FormProvider. */\nconst Form = FormProvider;\n\ninterface FormFieldContextValue<\n\tTFieldValues extends FieldValues = FieldValues,\n\tTName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n\tname: TName;\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\n/**\n * Binds a field name to a react-hook-form Controller.\n * Provides context so FormItem children can access field state.\n * @param props - Controller props including name, control, render\n * @returns A Controller with FormFieldContext\n */\nconst FormField = <\n\tTFieldValues extends FieldValues = FieldValues,\n\tTName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n\t...props\n}: ControllerProps<TFieldValues, TName>) => {\n\treturn (\n\t\t<FormFieldContext.Provider value={{ name: props.name }}>\n\t\t\t<Controller {...props} />\n\t\t</FormFieldContext.Provider>\n\t);\n};\n\ninterface FormItemContextValue {\n\tid: string;\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\n/**\n * Hook that returns the current field's id, name, error, and derived aria ids.\n * Must be called inside a FormField + FormItem subtree.\n * @returns Field state + aria descriptors\n */\nfunction useFormField() {\n\tconst fieldContext = React.useContext(FormFieldContext);\n\tconst itemContext = React.useContext(FormItemContext);\n\tif (!fieldContext?.name) {\n\t\tthrow new Error(\"useFormField should be used within <FormField>\");\n\t}\n\n\tconst { getFieldState } = useFormContext();\n\tconst formState = useFormState({ name: fieldContext.name });\n\tconst fieldState = getFieldState(fieldContext.name, formState);\n\n\tconst { id } = itemContext;\n\treturn {\n\t\tid,\n\t\tname: fieldContext.name,\n\t\tformItemId: `${id}-form-item`,\n\t\tformDescriptionId: `${id}-form-item-description`,\n\t\tformMessageId: `${id}-form-item-message`,\n\t\t...fieldState,\n\t};\n}\n\n/** Wraps a single form field (label + control + description + message). */\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => {\n\t\tconst id = React.useId();\n\t\treturn (\n\t\t\t<FormItemContext.Provider value={{ id }}>\n\t\t\t\t<div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n\t\t\t</FormItemContext.Provider>\n\t\t);\n\t},\n);\nFormItem.displayName = \"FormItem\";\n\n/** Accessible label wired to the FormItem's control. Turns red on error. */\nconst FormLabel = React.forwardRef<\n\tReact.ComponentRef<typeof LabelPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n\tconst { error, formItemId } = useFormField();\n\treturn (\n\t\t<Label\n\t\t\tref={ref}\n\t\t\tclassName={cn(error && \"text-destructive\", className)}\n\t\t\thtmlFor={formItemId}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nFormLabel.displayName = \"FormLabel\";\n\n/** Wraps the form control and wires id + aria-describedby + aria-invalid. */\nconst FormControl = React.forwardRef<\n\tReact.ComponentRef<typeof Slot>,\n\tReact.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n\tconst { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\treturn (\n\t\t<Slot\n\t\t\tref={ref}\n\t\t\tid={formItemId}\n\t\t\taria-describedby={\n\t\t\t\terror ? `${formDescriptionId} ${formMessageId}` : `${formDescriptionId}`\n\t\t\t}\n\t\t\taria-invalid={!!error}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nFormControl.displayName = \"FormControl\";\n\n/** Optional helper text below the control. */\nconst FormDescription = React.forwardRef<\n\tHTMLParagraphElement,\n\tReact.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n\tconst { formDescriptionId } = useFormField();\n\treturn (\n\t\t<p\n\t\t\tref={ref}\n\t\t\tid={formDescriptionId}\n\t\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nFormDescription.displayName = \"FormDescription\";\n\n/** Validation error message. Renders the error string when the field is invalid. */\nconst FormMessage = React.forwardRef<\n\tHTMLParagraphElement,\n\tReact.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n\tconst { error, formMessageId } = useFormField();\n\tconst body = error?.message ? String(error.message) : children;\n\tif (!body) return null;\n\treturn (\n\t\t<p\n\t\t\tref={ref}\n\t\t\tid={formMessageId}\n\t\t\tclassName={cn(\"text-sm font-medium text-destructive\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{body}\n\t\t</p>\n\t);\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n\tuseFormField,\n\tForm,\n\tFormItem,\n\tFormLabel,\n\tFormControl,\n\tFormDescription,\n\tFormMessage,\n\tFormField,\n};\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst alertVariants = cva(\n\t[\n\t\t\"relative w-full rounded-lg border px-[var(--space-4,1rem)] py-[var(--space-3,0.75rem)] text-sm\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"[&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-foreground\",\n\t\t\"[&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px]\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"border-foreground/[0.08] bg-background text-foreground\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"border-destructive/50 text-destructive [&>svg]:text-destructive bg-destructive/5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { variant: \"default\" },\n\t},\n);\n\n/** An inline notification banner for important messages. */\nconst Alert = React.forwardRef<\n\tHTMLDivElement,\n\tReact.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n\t<div\n\t\tref={ref}\n\t\trole=\"alert\"\n\t\tclassName={cn(alertVariants({ variant }), className)}\n\t\t{...props}\n\t/>\n));\nAlert.displayName = \"Alert\";\n\n/** The alert title heading. */\nconst AlertTitle = React.forwardRef<\n\tHTMLHeadingElement,\n\tReact.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n\t<h5\n\t\tref={ref}\n\t\tclassName={cn(\"mb-[var(--space-1,0.25rem)] font-medium leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nAlertTitle.displayName = \"AlertTitle\";\n\n/** The alert description. Renders a div so paragraph children can be styled via [&_p]. */\nconst AlertDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\n\t),\n);\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants };\n","\"use client\";\n\nimport { Toaster as SonnerToaster, toast } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof SonnerToaster>;\n\n/**\n * The global toast container. Render once in your app root.\n * Re-export of Sonner's Toaster styled to use Hex UI theme tokens.\n * @param props - Sonner Toaster props (position, richColors, etc.)\n * @returns A styled portal container for toast notifications\n */\nfunction Toaster({ ...props }: ToasterProps) {\n\treturn (\n\t\t<SonnerToaster\n\t\t\ttheme=\"system\"\n\t\t\tclassName=\"toaster group\"\n\t\t\ttoastOptions={{\n\t\t\t\tclassNames: {\n\t\t\t\t\ttoast:\n\t\t\t\t\t\t\"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n\t\t\t\t\tdescription: \"group-[.toast]:text-muted-foreground\",\n\t\t\t\t\tactionButton:\n\t\t\t\t\t\t\"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n\t\t\t\t\tcancelButton:\n\t\t\t\t\t\t\"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n\t\t\t\t},\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Toaster, toast };\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\n/** Root container controlling the expanded state of the content. */\nconst Collapsible = CollapsiblePrimitive.Root;\n\n/** The element that toggles the Collapsible open/closed. */\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\n/** The collapsible content shown/hidden by the trigger. */\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a hover-card. */\nconst HoverCard = HoverCardPrimitive.Root;\n\n/** The element that reveals the card on hover/focus. */\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\n/** The floating hover-card content panel. Richer than a tooltip. */\nconst HoverCardContent = React.forwardRef<\n\tReact.ComponentRef<typeof HoverCardPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n\t<HoverCardPrimitive.Portal>\n\t\t<HoverCardPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 w-64 rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-4,1rem)] text-popover-foreground shadow-md outline-none\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</HoverCardPrimitive.Portal>\n));\nHoverCardContent.displayName = \"HoverCardContent\";\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","import * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a context menu (right-click menu). */\nconst ContextMenu = ContextMenuPrimitive.Root;\n\n/** The element that triggers the context menu on right-click. */\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\n\n/** Groups related items for a11y. */\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\n\n/** Portals content into the body. */\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\n\n/** Group for checkable radio items. */\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\n/** The menu panel shown when the trigger is right-clicked. */\nconst ContextMenuContent = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<ContextMenuPrimitive.Portal>\n\t\t<ContextMenuPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 min-w-[8rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = \"ContextMenuContent\";\n\n/** A clickable menu item. */\nconst ContextMenuItem = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<ContextMenuPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tinset && \"pl-[var(--space-8,2rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nContextMenuItem.displayName = \"ContextMenuItem\";\n\n/** A checkable menu item. */\nconst ContextMenuCheckboxItem = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.CheckboxItem>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n\t<ContextMenuPrimitive.CheckboxItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\tchecked={checked}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<ContextMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t</svg>\n\t\t\t</ContextMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName = \"ContextMenuCheckboxItem\";\n\n/** A radio menu item. */\nconst ContextMenuRadioItem = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.RadioItem>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n\t<ContextMenuPrimitive.RadioItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<ContextMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg viewBox=\"0 0 24 24\" className=\"h-2 w-2 fill-current\" aria-hidden=\"true\">\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t</svg>\n\t\t\t</ContextMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = \"ContextMenuRadioItem\";\n\n/** A non-interactive heading label. */\nconst ContextMenuLabel = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<ContextMenuPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold text-foreground\", inset && \"pl-[var(--space-8,2rem)]\", className)}\n\t\t{...props}\n\t/>\n));\nContextMenuLabel.displayName = \"ContextMenuLabel\";\n\n/** Horizontal divider. */\nconst ContextMenuSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<ContextMenuPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nContextMenuSeparator.displayName = \"ContextMenuSeparator\";\n\n/**\n * Right-aligned shortcut text (e.g. ⌘⇧N).\n * @returns A span with muted typography\n */\nfunction ContextMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tContextMenu,\n\tContextMenuTrigger,\n\tContextMenuContent,\n\tContextMenuItem,\n\tContextMenuCheckboxItem,\n\tContextMenuRadioItem,\n\tContextMenuLabel,\n\tContextMenuSeparator,\n\tContextMenuShortcut,\n\tContextMenuGroup,\n\tContextMenuPortal,\n\tContextMenuRadioGroup,\n};\n","import * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Top-level menu bar (File / Edit / View style). */\nconst Menubar = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n\t<MenubarPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-[var(--control-height-md,2.5rem)] items-center space-x-1 rounded-md border border-foreground/[0.08] bg-background p-[var(--space-1,0.25rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nMenubar.displayName = \"Menubar\";\n\n// The explicit `as typeof ...Primitive.X` casts below are load-bearing: without them,\n// tsup's dts build fails with TS2742 \"The inferred type of X cannot be named without a\n// reference to @radix-ui/react-context\" on direct re-exports of Radix primitives. Do not\n// remove without verifying `pnpm --filter @hex-core/components build` still succeeds.\n\n/** A top-level menu in the bar (e.g. \"File\"). */\nconst MenubarMenu = MenubarPrimitive.Menu as typeof MenubarPrimitive.Menu;\n\n/** Groups related items inside a menu content. */\nconst MenubarGroup = MenubarPrimitive.Group as typeof MenubarPrimitive.Group;\n\n/** Portals menu content into the body. */\nconst MenubarPortal = MenubarPrimitive.Portal as typeof MenubarPrimitive.Portal;\n\n/** Group for checkable radio items. */\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup as typeof MenubarPrimitive.RadioGroup;\n\n/** The clickable menu label in the bar. */\nconst MenubarTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n\t<MenubarPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex cursor-default select-none items-center rounded-sm px-[var(--space-3,0.75rem)] py-1.5 text-sm font-medium outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nMenubarTrigger.displayName = \"MenubarTrigger\";\n\n/** The menu panel shown when a trigger opens. */\nconst MenubarContent = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(({ className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props }, ref) => (\n\t<MenubarPrimitive.Portal>\n\t\t<MenubarPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\talignOffset={alignOffset}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 min-w-[12rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</MenubarPrimitive.Portal>\n));\nMenubarContent.displayName = \"MenubarContent\";\n\n/** A clickable menu item. */\nconst MenubarItem = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<MenubarPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tinset && \"pl-[var(--space-8,2rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nMenubarItem.displayName = \"MenubarItem\";\n\n/** A non-interactive heading label. */\nconst MenubarLabel = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<MenubarPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold\", inset && \"pl-[var(--space-8,2rem)]\", className)}\n\t\t{...props}\n\t/>\n));\nMenubarLabel.displayName = \"MenubarLabel\";\n\n/** Horizontal divider. */\nconst MenubarSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<MenubarPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nMenubarSeparator.displayName = \"MenubarSeparator\";\n\n/**\n * Right-aligned keyboard shortcut text.\n * @returns A span with muted typography\n */\nfunction MenubarShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tMenubar,\n\tMenubarMenu,\n\tMenubarTrigger,\n\tMenubarContent,\n\tMenubarItem,\n\tMenubarLabel,\n\tMenubarSeparator,\n\tMenubarShortcut,\n\tMenubarGroup,\n\tMenubarPortal,\n\tMenubarRadioGroup,\n};\n","import * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a navigation menu. Renders a viewport for content panels. */\nconst NavigationMenu = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t<NavigationMenuViewport />\n\t</NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = \"NavigationMenu\";\n\n/** List of top-level NavigationMenu items. */\nconst NavigationMenuList = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<NavigationMenuPrimitive.List\n\t\tref={ref}\n\t\tclassName={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n\t\t{...props}\n\t/>\n));\nNavigationMenuList.displayName = \"NavigationMenuList\";\n\n/** A single top-level item (wraps trigger + content). */\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n\t\"group inline-flex h-[var(--control-height-md,2.5rem)] w-max items-center justify-center rounded-md bg-background px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\",\n);\n\n/** The clickable trigger that opens a nav-menu content panel. */\nconst NavigationMenuTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(navigationMenuTriggerStyle(), \"group\", className)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"relative top-[1px] ml-[var(--space-1,0.25rem)] h-3 w-3 transition duration-[var(--duration-normal,200ms)] group-data-[state=open]:rotate-180\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t</svg>\n\t</NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = \"NavigationMenuTrigger\";\n\n/** The content panel (e.g. mega-menu). */\nconst NavigationMenuContent = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Content\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nNavigationMenuContent.displayName = \"NavigationMenuContent\";\n\n/** A direct link (no content panel). */\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\n/** The viewport that hosts the active content panel. Rendered inside NavigationMenu. */\nconst NavigationMenuViewport = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Viewport>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n\t<div className=\"absolute left-0 top-full flex justify-center\">\n\t\t<NavigationMenuPrimitive.Viewport\n\t\t\tclassName={cn(\n\t\t\t\t\"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-foreground/[0.08] bg-popover text-popover-foreground shadow-lg\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90\",\n\t\t\t\t\"md:w-[var(--radix-navigation-menu-viewport-width)]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tref={ref}\n\t\t\t{...props}\n\t\t/>\n\t</div>\n));\nNavigationMenuViewport.displayName = \"NavigationMenuViewport\";\n\n/** Visual indicator (arrow) pointing at the active trigger. */\nconst NavigationMenuIndicator = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Indicator>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Indicator\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-foreground/[0.12] shadow-md\" />\n\t</NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName = \"NavigationMenuIndicator\";\n\nexport {\n\tnavigationMenuTriggerStyle,\n\tNavigationMenu,\n\tNavigationMenuList,\n\tNavigationMenuItem,\n\tNavigationMenuContent,\n\tNavigationMenuTrigger,\n\tNavigationMenuLink,\n\tNavigationMenuIndicator,\n\tNavigationMenuViewport,\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root nav landmark for breadcrumb navigation. */\nconst Breadcrumb = React.forwardRef<HTMLElement, React.ComponentPropsWithoutRef<\"nav\">>(\n\t(props, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />,\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\n/** Ordered list of breadcrumb items. */\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<\"ol\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ol\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-[var(--gap-sm,0.5rem)].5\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\n/** A single breadcrumb list item. */\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<\"li\">>(\n\t({ className, ...props }, ref) => (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"inline-flex items-center gap-1.5\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\n/** A link inside a breadcrumb item. Use asChild to render e.g. Next.js Link. */\nconst BreadcrumbLink = React.forwardRef<\n\tHTMLAnchorElement,\n\tReact.ComponentPropsWithoutRef<\"a\"> & { asChild?: boolean }\n>(({ asChild, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"a\";\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:text-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\n/** The final breadcrumb (current page). Not interactive. */\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<\"span\">>(\n\t({ className, ...props }, ref) => (\n\t\t<span\n\t\t\tref={ref}\n\t\t\trole=\"link\"\n\t\t\taria-disabled=\"true\"\n\t\t\taria-current=\"page\"\n\t\t\tclassName={cn(\"font-normal text-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\n/**\n * Visual separator between breadcrumb items (chevron by default).\n * @returns An li rendering a decorative chevron icon\n */\nfunction BreadcrumbSeparator({\n\tchildren,\n\tclassName,\n\t...props\n}: React.ComponentProps<\"li\">) {\n\treturn (\n\t\t<li role=\"presentation\" aria-hidden=\"true\" className={cn(\"[&>svg]:h-3.5 [&>svg]:w-3.5\", className)} {...props}>\n\t\t\t{children ?? (\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"9 18 15 12 9 6\" />\n\t\t\t\t</svg>\n\t\t\t)}\n\t\t</li>\n\t);\n}\n\n/**\n * Ellipsis for truncated breadcrumb trails.\n * @returns A span containing a decorative SVG (aria-hidden) plus a sr-only \"More pages\" label for AT.\n */\nfunction BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<\"span\">) {\n\t// Wrapper stays reachable by AT; only the decorative SVG is aria-hidden so the\n\t// sr-only \"More pages\" label actually reaches screen readers.\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"19\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"5\" cy=\"12\" r=\"1\" />\n\t\t\t</svg>\n\t\t\t<span className=\"sr-only\">More pages</span>\n\t\t</span>\n\t);\n}\n\nexport {\n\tBreadcrumb,\n\tBreadcrumbList,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n\tBreadcrumbEllipsis,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** A responsive container + styled HTML table. */\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div className=\"relative w-full overflow-auto\">\n\t\t\t<table\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\"w-full caption-bottom text-sm\", className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</div>\n\t),\n);\nTable.displayName = \"Table\";\n\n/** `<thead>` wrapper with bottom border. */\nconst TableHeader = React.forwardRef<\n\tHTMLTableSectionElement,\n\tReact.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n\t<thead ref={ref} className={cn(\"[&_tr]:border-b [&_tr]:border-b-foreground/[0.08]\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\n/** `<tbody>` wrapper removing bottom border on last row. */\nconst TableBody = React.forwardRef<\n\tHTMLTableSectionElement,\n\tReact.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n\t<tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n));\nTableBody.displayName = \"TableBody\";\n\n/** `<tfoot>` wrapper with muted background. */\nconst TableFooter = React.forwardRef<\n\tHTMLTableSectionElement,\n\tReact.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n\t<tfoot\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"border-t border-t-foreground/[0.08] bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableFooter.displayName = \"TableFooter\";\n\n/** `<tr>` with hover + selected states. */\nconst TableRow = React.forwardRef<\n\tHTMLTableRowElement,\n\tReact.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n\t<tr\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"border-b border-b-foreground/[0.08] transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-muted/50 data-[state=selected]:bg-muted\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableRow.displayName = \"TableRow\";\n\n/** `<th>` with left-aligned muted text. */\nconst TableHead = React.forwardRef<\n\tHTMLTableCellElement,\n\tReact.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n\t<th\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableHead.displayName = \"TableHead\";\n\n/** `<td>` with consistent padding. */\nconst TableCell = React.forwardRef<\n\tHTMLTableCellElement,\n\tReact.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n\t<td\n\t\tref={ref}\n\t\tclassName={cn(\"p-[var(--space-4,1rem)] align-middle [&:has([role=checkbox])]:pr-0\", className)}\n\t\t{...props}\n\t/>\n));\nTableCell.displayName = \"TableCell\";\n\n/**\n * Visible `<caption>` rendered below the table. The parent `<Table>` sets\n * `caption-bottom`, so the caption is announced first by screen readers when\n * entering the table, then visually placed below the rows.\n */\nconst TableCaption = React.forwardRef<\n\tHTMLTableCaptionElement,\n\tReact.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n\t<caption\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"caption-bottom mt-[var(--space-4,1rem)] text-sm text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n\tTable,\n\tTableHeader,\n\tTableBody,\n\tTableFooter,\n\tTableHead,\n\tTableRow,\n\tTableCell,\n\tTableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n\ttype ColumnDef,\n\tflexRender,\n\tgetCoreRowModel,\n\tuseReactTable,\n} from \"@tanstack/react-table\";\nimport {\n\tTable,\n\tTableBody,\n\tTableCaption,\n\tTableCell,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"../table/table.js\";\n\n/**\n * Generic DataTable wrapper that renders a TanStack Table model using Hex UI's\n * Table primitives. Pass columns + data; use TanStack hooks for sorting,\n * filtering, pagination, row-selection as needed.\n * @template TData - Row data type. Cell value types are inferred per column by TanStack.\n */\nexport interface DataTableProps<TData> {\n\tcolumns: ColumnDef<TData, unknown>[];\n\tdata: TData[];\n\t/**\n\t * Visible caption rendered below the table. Announced by screen readers\n\t * when the user enters the table. Provide either `caption` or `aria-label`.\n\t */\n\tcaption?: React.ReactNode;\n\t/**\n\t * Accessible label for the table when no visible caption is shown.\n\t * Forwarded as `aria-label` on the underlying `<table>` element. Kebab-case\n\t * to match the canonical ARIA prop convention used elsewhere in Hex UI.\n\t */\n\t\"aria-label\"?: string;\n}\n\n/**\n * Render a data-driven table from TanStack column definitions.\n * @param props - Columns, data, and optional accessible labelling (`caption` or `aria-label`)\n * @returns A styled Table rendered from the TanStack row model\n */\nexport function DataTable<TData>({\n\tcolumns,\n\tdata,\n\tcaption,\n\t\"aria-label\": ariaLabel,\n}: DataTableProps<TData>) {\n\tconst table = useReactTable({\n\t\tdata,\n\t\tcolumns,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t});\n\n\treturn (\n\t\t<div className=\"rounded-md border border-foreground/[0.08]\">\n\t\t\t<Table aria-label={ariaLabel}>\n\t\t\t\t{caption ? <TableCaption>{caption}</TableCaption> : null}\n\t\t\t\t<TableHeader>\n\t\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\n\t\t\t\t\t\t<TableRow key={headerGroup.id}>\n\t\t\t\t\t\t\t{headerGroup.headers.map((header) => (\n\t\t\t\t\t\t\t\t<TableHead key={header.id}>\n\t\t\t\t\t\t\t\t\t{header.isPlaceholder\n\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t: flexRender(header.column.columnDef.header, header.getContext())}\n\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t))}\n\t\t\t\t</TableHeader>\n\t\t\t\t<TableBody>\n\t\t\t\t\t{table.getRowModel().rows?.length ? (\n\t\t\t\t\t\ttable.getRowModel().rows.map((row) => (\n\t\t\t\t\t\t\t<TableRow key={row.id} data-state={row.getIsSelected() && \"selected\"}>\n\t\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => (\n\t\t\t\t\t\t\t\t\t<TableCell key={cell.id}>\n\t\t\t\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\n\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t))\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t<TableCell colSpan={columns.length} className=\"h-24 text-center\">\n\t\t\t\t\t\t\t\tNo results.\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t)}\n\t\t\t\t</TableBody>\n\t\t\t</Table>\n\t\t</div>\n\t);\n}\n","import * as React from \"react\";\nimport { type ButtonProps, buttonVariants } from \"../../primitives/button/button.js\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * Root nav landmark for pagination controls.\n * @returns A centered nav element with aria-label='pagination'\n */\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n\treturn (\n\t\t<nav\n\t\t\trole=\"navigation\"\n\t\t\taria-label=\"pagination\"\n\t\t\tclassName={cn(\"mx-auto flex w-full justify-center\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Ordered list wrapper for pagination links. */\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ul\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex flex-row items-center gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nPaginationContent.displayName = \"PaginationContent\";\n\n/** A pagination list item wrapper. */\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n\t({ className, ...props }, ref) => <li ref={ref} className={className} {...props} />,\n);\nPaginationItem.displayName = \"PaginationItem\";\n\ntype PaginationLinkProps = {\n\tisActive?: boolean;\n} & Pick<ButtonProps, \"size\"> &\n\tReact.ComponentProps<\"a\">;\n\n/**\n * A pagination link styled as a button. Mark the current page with isActive.\n * @returns An anchor element styled via buttonVariants\n */\nfunction PaginationLink({\n\tclassName,\n\tisActive,\n\tsize = \"icon\",\n\t...props\n}: PaginationLinkProps) {\n\treturn (\n\t\t<a\n\t\t\taria-current={isActive ? \"page\" : undefined}\n\t\t\tclassName={cn(\n\t\t\t\tbuttonVariants({ variant: isActive ? \"outline\" : \"ghost\", size }),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Previous-page link with chevron-left icon.\n * @returns A PaginationLink with aria-label='Go to previous page'\n */\nfunction PaginationPrevious({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n\treturn (\n\t\t<PaginationLink\n\t\t\taria-label=\"Go to previous page\"\n\t\t\tsize=\"default\"\n\t\t\tclassName={cn(\"gap-1 pl-2.5\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"15 18 9 12 15 6\" />\n\t\t\t</svg>\n\t\t\t<span>Previous</span>\n\t\t</PaginationLink>\n\t);\n}\n\n/**\n * Next-page link with chevron-right icon.\n * @returns A PaginationLink with aria-label='Go to next page'\n */\nfunction PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n\treturn (\n\t\t<PaginationLink\n\t\t\taria-label=\"Go to next page\"\n\t\t\tsize=\"default\"\n\t\t\tclassName={cn(\"gap-1 pr-2.5\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span>Next</span>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"9 18 15 12 9 6\" />\n\t\t\t</svg>\n\t\t</PaginationLink>\n\t);\n}\n\n/**\n * Ellipsis placeholder for truncated page ranges (e.g. 1 … 5 6 7 … 99).\n * @returns A span containing a decorative SVG (aria-hidden) plus a sr-only \"More pages\" label for AT.\n */\nfunction PaginationEllipsis({ className, ...props }: React.ComponentProps<\"span\">) {\n\t// Wrapper stays reachable by AT; only the decorative SVG is aria-hidden so the\n\t// sr-only \"More pages\" label actually reaches screen readers.\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"19\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"5\" cy=\"12\" r=\"1\" />\n\t\t\t</svg>\n\t\t\t<span className=\"sr-only\">More pages</span>\n\t\t</span>\n\t);\n}\n\nexport {\n\tPagination,\n\tPaginationContent,\n\tPaginationEllipsis,\n\tPaginationItem,\n\tPaginationLink,\n\tPaginationNext,\n\tPaginationPrevious,\n};\n","import * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * Calendar date grid built on react-day-picker v9. Forwards all DayPicker props.\n *\n * Pass `mode=\"single\" | \"multiple\" | \"range\"` and bind `selected` / `onSelect`\n * to control date selection. Style tokens follow the project palette; individual\n * parts can be overridden via the `classNames` prop.\n * @returns A themed react-day-picker DayPicker instance.\n */\nfunction Calendar({\n\tclassName,\n\tclassNames,\n\tshowOutsideDays = true,\n\t...props\n}: React.ComponentProps<typeof DayPicker>) {\n\treturn (\n\t\t<DayPicker\n\t\t\tshowOutsideDays={showOutsideDays}\n\t\t\tclassName={cn(\"relative p-[var(--space-3,0.75rem)]\", className)}\n\t\t\tclassNames={{\n\t\t\t\tmonths: \"flex flex-col sm:flex-row gap-[var(--gap-md,1rem)]\",\n\t\t\t\tmonth: \"flex flex-col gap-[var(--gap-md,1rem)]\",\n\t\t\t\tmonth_caption: \"flex h-7 items-center justify-center\",\n\t\t\t\tcaption_label: \"text-sm font-medium\",\n\t\t\t\tnav: \"absolute inset-x-3 top-3 z-10 flex items-center justify-between pointer-events-none [&>button]:pointer-events-auto\",\n\t\t\t\tbutton_previous: cn(\n\t\t\t\t\t\"inline-flex h-7 w-7 items-center justify-center rounded-md border border-foreground/[0.08] bg-transparent p-0 opacity-60 transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30\",\n\t\t\t\t),\n\t\t\t\tbutton_next: cn(\n\t\t\t\t\t\"inline-flex h-7 w-7 items-center justify-center rounded-md border border-foreground/[0.08] bg-transparent p-0 opacity-60 transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30\",\n\t\t\t\t),\n\t\t\t\tmonth_grid: \"w-full border-collapse space-y-1\",\n\t\t\t\tweekdays: \"flex\",\n\t\t\t\tweekday: \"text-muted-foreground rounded-md w-[var(--control-height-sm,2.25rem)] font-normal text-[0.8rem]\",\n\t\t\t\tweek: \"flex w-full mt-[var(--space-2,0.5rem)]\",\n\t\t\t\tday: \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].range-end)]:rounded-r-md [&:has([aria-selected].range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\",\n\t\t\t\tday_button:\n\t\t\t\t\t\"inline-flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center rounded-md p-0 text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 aria-selected:opacity-100\",\n\t\t\t\tselected:\n\t\t\t\t\t\"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n\t\t\t\ttoday: \"bg-accent text-accent-foreground\",\n\t\t\t\toutside:\n\t\t\t\t\t\"day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground\",\n\t\t\t\tdisabled: \"text-muted-foreground opacity-50\",\n\t\t\t\trange_start: \"day-range-start range-start\",\n\t\t\t\trange_end: \"day-range-end range-end\",\n\t\t\t\trange_middle:\n\t\t\t\t\t\"aria-selected:bg-accent aria-selected:text-accent-foreground rounded-none\",\n\t\t\t\thidden: \"invisible\",\n\t\t\t\t...classNames,\n\t\t\t}}\n\t\t\tcomponents={{\n\t\t\t\tChevron: ({ orientation, className: chevronClassName }) => {\n\t\t\t\t\tconst rotation =\n\t\t\t\t\t\torientation === \"left\"\n\t\t\t\t\t\t\t? \"rotate-90\"\n\t\t\t\t\t\t\t: orientation === \"right\"\n\t\t\t\t\t\t\t\t? \"-rotate-90\"\n\t\t\t\t\t\t\t\t: orientation === \"up\"\n\t\t\t\t\t\t\t\t\t? \"rotate-180\"\n\t\t\t\t\t\t\t\t\t: \"\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\tclassName={cn(\"h-4 w-4\", rotation, chevronClassName)}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import { format } from \"date-fns\";\nimport * as React from \"react\";\nimport { Calendar } from \"../calendar/calendar.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/popover.js\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface DatePickerProps {\n\t/** Controlled selected date. */\n\tvalue?: Date;\n\t/** Fired when the user picks a date in the calendar. */\n\tonChange?: (date: Date | undefined) => void;\n\t/** Placeholder shown when no date is selected. */\n\tplaceholder?: string;\n\t/** date-fns format string for the trigger label. */\n\tdateFormat?: string;\n\t/** Disable the trigger. */\n\tdisabled?: boolean;\n\t/** Extra class names on the trigger button. */\n\tclassName?: string;\n\t/** Accessible label for the trigger (required when no visible label is adjacent). */\n\t\"aria-label\"?: string;\n}\n\n/**\n * Date picker composed from Popover + Calendar + a styled trigger button.\n *\n * This is a minimal single-date picker. For multi/range, compose Calendar + Popover yourself.\n * @returns A button that opens a single-date calendar popover.\n */\nfunction DatePicker({\n\tvalue,\n\tonChange,\n\tplaceholder = \"Pick a date\",\n\tdateFormat = \"PPP\",\n\tdisabled,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n}: DatePickerProps) {\n\tconst [open, setOpen] = React.useState(false);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={ariaLabel ?? placeholder}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] w-[240px] items-center justify-start gap-[var(--gap-sm,0.5rem)] rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-left text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\t!value && \"text-muted-foreground\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n\t\t\t\t\t\t<line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n\t\t\t\t\t\t<line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n\t\t\t\t\t\t<line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t<span>{value ? format(value, dateFormat) : placeholder}</span>\n\t\t\t\t</button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-auto p-0\" align=\"start\">\n\t\t\t\t{/* Hardcoded mode='single' — for range/multi, compose Calendar + Popover directly. */}\n\t\t\t\t<Calendar\n\t\t\t\t\tmode=\"single\"\n\t\t\t\t\tselected={value}\n\t\t\t\t\tonSelect={(date) => {\n\t\t\t\t\t\tonChange?.(date);\n\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t}}\n\t\t\t\t\tautoFocus\n\t\t\t\t/>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\nexport type { DatePickerProps };\n","import { OTPInput, OTPInputContext } from \"input-otp\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Props for the root InputOTP component (mirrors input-otp's OTPInput). */\ntype InputOTPProps = React.ComponentPropsWithoutRef<typeof OTPInput>;\n\n/** Root OTP input. Wraps input-otp's OTPInput and exposes slot context to children. */\nconst InputOTP = React.forwardRef<React.ComponentRef<typeof OTPInput>, InputOTPProps>(\n\t({ className, containerClassName, ...props }, ref) => (\n\t<OTPInput\n\t\tref={ref}\n\t\tcontainerClassName={cn(\n\t\t\t\"flex items-center gap-[var(--gap-sm,0.5rem)] has-[:disabled]:opacity-50\",\n\t\t\tcontainerClassName,\n\t\t)}\n\t\tclassName={cn(\"disabled:cursor-not-allowed\", className)}\n\t\t{...props}\n\t/>\n));\nInputOTP.displayName = \"InputOTP\";\n\n/** Groups slots together; place between runs of slots to add visual dividers. */\nconst InputOTPGroup = React.forwardRef<\n\tReact.ComponentRef<\"div\">,\n\tReact.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n\t<div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\ninterface InputOTPSlotProps extends React.ComponentPropsWithoutRef<\"div\"> {\n\t/** Index of the slot in the underlying OTP value. */\n\tindex: number;\n}\n\n/** A single character slot. Reads its state from OTPInputContext. */\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, InputOTPSlotProps>(\n\t({ index, className, ...props }, ref) => {\n\t\tconst inputOTPContext = React.useContext(OTPInputContext);\n\t\tconst slot = inputOTPContext.slots[index];\n\t\tconst char = slot?.char ?? null;\n\t\tconst hasFakeCaret = slot?.hasFakeCaret ?? false;\n\t\tconst isActive = slot?.isActive ?? false;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"relative flex h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)] items-center justify-center border-y border-r border-input text-sm transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"first:rounded-l-md first:border-l last:rounded-r-md\",\n\t\t\t\t\tisActive && \"z-10 ring-2 ring-ring ring-offset-2 ring-offset-background\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{char}\n\t\t\t\t{hasFakeCaret && (\n\t\t\t\t\t<div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n\t\t\t\t\t\t<div className=\"h-4 w-px animate-pulse bg-foreground duration-1000\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\n/** Visual separator between slot groups (a bullet by default). */\nconst InputOTPSeparator = React.forwardRef<\n\tReact.ComponentRef<\"div\">,\n\tReact.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n\t<div ref={ref} role=\"separator\" {...props}>\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"currentColor\"\n\t\t\tclassName=\"h-2 w-2 text-muted-foreground\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<circle cx=\"12\" cy=\"12\" r=\"6\" />\n\t\t</svg>\n\t</div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\nexport type { InputOTPProps };\n","import { Command as CommandPrimitive } from \"cmdk\";\nimport * as React from \"react\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogDescription,\n\tDialogHeader,\n\tDialogTitle,\n} from \"../dialog/dialog.js\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root Command container — drives search, filtering, and keyboard navigation over items. */\nconst Command = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nCommand.displayName = \"Command\";\n\ninterface CommandDialogProps extends React.ComponentPropsWithoutRef<typeof Dialog> {\n\t/** Command children (CommandInput + CommandList + CommandItem, etc.) */\n\tchildren: React.ReactNode;\n\t/** Accessible title for the dialog (screen-reader only by default). */\n\ttitle?: string;\n\t/** Accessible description for the dialog (screen-reader only by default). */\n\tdescription?: string;\n}\n\n/**\n * Command menu rendered inside a Dialog — a ⌘K-style launcher.\n * @param props - Forwarded to the underlying Dialog (open, onOpenChange, etc.)\n * @returns A Dialog containing a Command menu.\n */\nfunction CommandDialog({\n\ttitle = \"Command Palette\",\n\tdescription = \"Search for a command to run.\",\n\tchildren,\n\t...props\n}: CommandDialogProps) {\n\treturn (\n\t\t<Dialog {...props}>\n\t\t\t<DialogHeader className=\"sr-only\">\n\t\t\t\t<DialogTitle>{title}</DialogTitle>\n\t\t\t\t<DialogDescription>{description}</DialogDescription>\n\t\t\t</DialogHeader>\n\t\t\t<DialogContent className=\"overflow-hidden p-0\" scrollable={false}>\n\t\t\t\t<Command className=\"[&_[cmdk-group-heading]]:px-[var(--space-2,0.5rem)] [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-[var(--space-2,0.5rem)] [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-[var(--space-2,0.5rem)] [&_[cmdk-item]]:py-[var(--space-3,0.75rem)] [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n\t\t\t\t\t{children}\n\t\t\t\t</Command>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n\n/** Search input for the Command menu. Fires onValueChange as the user types. */\nconst CommandInput = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Input>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n\t<div className=\"flex items-center border-b border-b-foreground/[0.08] px-[var(--space-3,0.75rem)]\" cmdk-input-wrapper=\"\">\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"mr-[var(--space-2,0.5rem)] h-4 w-4 shrink-0 opacity-50\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\" />\n\t\t\t<line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n\t\t</svg>\n\t\t<CommandPrimitive.Input\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-[var(--control-height-lg,2.75rem)] w-full rounded-md bg-transparent py-[var(--space-3,0.75rem)] text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</div>\n));\nCommandInput.displayName = \"CommandInput\";\n\n/** Scrollable list that contains CommandGroup / CommandItem / CommandEmpty. */\nconst CommandList = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.List\n\t\tref={ref}\n\t\tclassName={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n\t\t{...props}\n\t/>\n));\nCommandList.displayName = \"CommandList\";\n\n/** Rendered when no items match the current search. */\nconst CommandEmpty = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Empty>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n\t<CommandPrimitive.Empty ref={ref} className=\"py-[var(--space-6,1.5rem)] text-center text-sm\" {...props} />\n));\nCommandEmpty.displayName = \"CommandEmpty\";\n\n/** Logical group of items — renders a heading and filters as a unit. */\nconst CommandGroup = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Group>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.Group\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"overflow-hidden p-[var(--space-1,0.25rem)] text-foreground [&_[cmdk-group-heading]]:px-[var(--space-2,0.5rem)] [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nCommandGroup.displayName = \"CommandGroup\";\n\n/**\n * Horizontal rule between groups. Renders as a presentational `<div>` (no role)\n * so it can sit inside CommandList (role=listbox) without violating ARIA's\n * required-children rule for listbox. The line is purely decorative — cmdk's\n * built-in Separator hardcodes `role=\"separator\"`, which axe rejects in this\n * context, so we render the divider directly.\n *\n * The `data-cmdk-separator` attribute is preserved so existing CSS / test\n * selectors that target cmdk's separator continue to match.\n */\nconst CommandSeparator = React.forwardRef<\n\tHTMLDivElement,\n\tReact.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n\t<div\n\t\tref={ref}\n\t\trole=\"none\"\n\t\tdata-cmdk-separator=\"\"\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nCommandSeparator.displayName = \"CommandSeparator\";\n\n/** Selectable item. onSelect fires on Enter or click. */\nconst CommandItem = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n\t\t\t\"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground\",\n\t\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nCommandItem.displayName = \"CommandItem\";\n\n/**\n * Keyboard shortcut hint (e.g. '⌘K') aligned to the right of an item.\n * @returns A muted inline span rendered at the end of a CommandItem.\n */\nfunction CommandShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-auto text-xs tracking-widest text-muted-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n\tCommand,\n\tCommandDialog,\n\tCommandInput,\n\tCommandList,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandItem,\n\tCommandShortcut,\n\tCommandSeparator,\n};\n","import * as React from \"react\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"../command/command.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/popover.js\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface ComboboxOption {\n\t/** The value returned from onChange (stable, unique). */\n\tvalue: string;\n\t/** The display label shown in the list and the trigger. */\n\tlabel: string;\n\t/** Mark as non-selectable. */\n\tdisabled?: boolean;\n}\n\ninterface ComboboxProps {\n\t/** The list of selectable options. */\n\toptions: ComboboxOption[];\n\t/** Controlled selected value. */\n\tvalue?: string;\n\t/** Fired when the user picks an option: (value: string) => void */\n\tonChange?: (value: string) => void;\n\t/** Text shown on the trigger when nothing is selected. */\n\tplaceholder?: string;\n\t/** Input placeholder inside the popover list. */\n\tsearchPlaceholder?: string;\n\t/** Text shown when no options match the search. */\n\temptyText?: string;\n\t/** Disable the trigger. */\n\tdisabled?: boolean;\n\t/** Extra class names on the trigger button. */\n\tclassName?: string;\n\t/** Accessible label for the trigger (required when no adjacent visible label). */\n\t\"aria-label\"?: string;\n\t/** Id of an external visible label that names this combobox. */\n\t\"aria-labelledby\"?: string;\n}\n\n/**\n * Searchable select input built on Command + Popover.\n *\n * Pass `options` with `{ value, label }` shape. The selected label is shown on\n * the trigger; the popover contains a CommandInput and filtered CommandList.\n * @returns A trigger button that opens a filtered option list.\n */\nfunction Combobox({\n\toptions,\n\tvalue,\n\tonChange,\n\tplaceholder = \"Select…\",\n\tsearchPlaceholder = \"Search…\",\n\temptyText = \"No results found.\",\n\tdisabled,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy,\n}: ComboboxProps) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst listboxId = React.useId();\n\tconst selected = options.find((o) => o.value === value);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t/*\n\t\t\t\t\t * Only reference the listbox id when the popover is open.\n\t\t\t\t\t * The CommandList is portal-mounted by Radix Popover and\n\t\t\t\t\t * does not exist in the DOM while closed; pointing at a\n\t\t\t\t\t * missing id confuses some screen readers.\n\t\t\t\t\t */\n\t\t\t\t\taria-controls={open ? listboxId : undefined}\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] w-[240px] items-center justify-between gap-[var(--gap-sm,0.5rem)] rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\t!selected && \"text-muted-foreground\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"truncate\">{selected ? selected.label : placeholder}</span>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\tclassName=\"h-4 w-4 shrink-0 opacity-50\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-[240px] p-0\" align=\"start\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder={searchPlaceholder} />\n\t\t\t\t\t<CommandList id={listboxId}>\n\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\n\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\tvalue={option.label}\n\t\t\t\t\t\t\t\t\tdisabled={option.disabled}\n\t\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\t\tonChange?.(option.value);\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"mr-[var(--space-2,0.5rem)] h-4 w-4\",\n\t\t\t\t\t\t\t\t\t\t\tvalue === option.value ? \"opacity-100\" : \"opacity-0\",\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\nCombobox.displayName = \"Combobox\";\n\nexport { Combobox };\nexport type { ComboboxOption, ComboboxProps };\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container controlling open state of a side sheet. */\nconst Sheet = SheetPrimitive.Root;\n\n/** The element (usually a button) that opens the sheet. */\nconst SheetTrigger = SheetPrimitive.Trigger;\n\n/** Closes the sheet when rendered inside SheetContent. */\nconst SheetClose = SheetPrimitive.Close;\n\n/** Portals the sheet overlay and content into the body. */\nconst SheetPortal = SheetPrimitive.Portal;\n\n/** Dimmed backdrop rendered behind the sheet content. */\nconst SheetOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<SheetPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nSheetOverlay.displayName = \"SheetOverlay\";\n\nconst sheetVariants = cva(\n\tcn(\n\t\t\"fixed z-50 gap-[var(--gap-md,1rem)] bg-background p-[var(--space-6,1.5rem)] shadow-lg\",\n\t\t\"border-foreground/[0.08]\",\n\t\t\"transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\"data-[state=closed]:duration-[var(--duration-slow,300ms)] data-[state=open]:duration-500\",\n\t),\n\t{\n\t\tvariants: {\n\t\t\tside: {\n\t\t\t\ttop: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n\t\t\t\tbottom:\n\t\t\t\t\t\"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n\t\t\t\tleft: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n\t\t\t\tright:\n\t\t\t\t\t\"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tside: \"right\",\n\t\t},\n\t},\n);\n\ninterface SheetContentProps\n\textends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n\t\tVariantProps<typeof sheetVariants> {}\n\n/** The sheet content panel that slides in from a side of the viewport. */\nconst SheetContent = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Content>,\n\tSheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n\t<SheetPortal>\n\t\t<SheetOverlay />\n\t\t<SheetPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(sheetVariants({ side }), className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<SheetPrimitive.Close\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"disabled:pointer-events-none\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t</svg>\n\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t</SheetPrimitive.Close>\n\t\t</SheetPrimitive.Content>\n\t</SheetPortal>\n));\nSheetContent.displayName = \"SheetContent\";\n\n/**\n * Header container inside SheetContent; stacks title and description.\n * @returns A div with vertical rhythm.\n */\nfunction SheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container inside SheetContent; aligns action buttons.\n * @returns A div that stacks buttons on mobile and right-aligns on desktop.\n */\nfunction SheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Accessible sheet title; Radix wires it to aria-labelledby automatically. */\nconst SheetTitle = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<SheetPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold text-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nSheetTitle.displayName = \"SheetTitle\";\n\n/** Accessible sheet description; Radix wires it to aria-describedby automatically. */\nconst SheetDescription = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<SheetPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nSheetDescription.displayName = \"SheetDescription\";\n\nexport {\n\tSheet,\n\tSheetPortal,\n\tSheetOverlay,\n\tSheetTrigger,\n\tSheetClose,\n\tSheetContent,\n\tSheetHeader,\n\tSheetFooter,\n\tSheetTitle,\n\tSheetDescription,\n};\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { cn } from \"../../lib/utils.js\";\n\ntype DrawerRootProps = React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Root>;\n\n/**\n * Root container for a bottom drawer (vaul). Manages open state, drag, and snap points.\n * @returns A drawer root that coordinates overlay, content, and dismiss behavior.\n */\nfunction Drawer({ shouldScaleBackground = true, ...props }: DrawerRootProps) {\n\treturn <DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />;\n}\nDrawer.displayName = \"Drawer\";\n\n/** The element that opens the drawer when clicked. */\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\n/** Portals drawer overlay and content into the body. */\nconst DrawerPortal = DrawerPrimitive.Portal;\n\n/** Closes the drawer when rendered inside DrawerContent. */\nconst DrawerClose = DrawerPrimitive.Close;\n\n/** Dimmed backdrop behind the drawer content. */\nconst DrawerOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nDrawerOverlay.displayName = \"DrawerOverlay\";\n\n/** The drawer content panel. Slides up from the bottom and can be dragged down to dismiss. */\nconst DrawerContent = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n\t<DrawerPortal>\n\t\t<DrawerOverlay />\n\t\t<DrawerPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border border-foreground/[0.08] bg-background\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"mx-auto mt-[var(--space-4,1rem)] h-2 w-[100px] rounded-full bg-muted\" aria-hidden=\"true\" />\n\t\t\t{children}\n\t\t</DrawerPrimitive.Content>\n\t</DrawerPortal>\n));\nDrawerContent.displayName = \"DrawerContent\";\n\n/**\n * Header container inside DrawerContent; stacks title and description.\n * @returns A div with vertical rhythm.\n */\nfunction DrawerHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"grid gap-1.5 p-[var(--space-4,1rem)] text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container inside DrawerContent; stacks action buttons.\n * @returns A div that stacks buttons vertically with consistent gutters.\n */\nfunction DrawerFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn <div className={cn(\"mt-auto flex flex-col gap-[var(--gap-sm,0.5rem)] p-[var(--space-4,1rem)]\", className)} {...props} />;\n}\n\n/** Accessible drawer title; vaul wires it to aria-labelledby automatically. */\nconst DrawerTitle = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nDrawerTitle.displayName = \"DrawerTitle\";\n\n/** Accessible drawer description; vaul wires it to aria-describedby automatically. */\nconst DrawerDescription = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nDrawerDescription.displayName = \"DrawerDescription\";\n\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n};\n","import * as React from \"react\";\nimport {\n\tGroup as ResizablePrimitiveGroup,\n\tPanel as ResizablePrimitivePanel,\n\tSeparator as ResizablePrimitiveSeparator,\n} from \"react-resizable-panels\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * Root container for a group of resizable panels.\n * @returns A flex container that coordinates panel sizing.\n */\nfunction ResizablePanelGroup({\n\tclassName,\n\t...props\n}: React.ComponentPropsWithoutRef<typeof ResizablePrimitiveGroup>) {\n\treturn (\n\t\t<ResizablePrimitiveGroup\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nResizablePanelGroup.displayName = \"ResizablePanelGroup\";\n\n/** A single resizable panel. Configure via defaultSize, minSize, maxSize. */\nconst ResizablePanel = ResizablePrimitivePanel;\n\ninterface ResizableHandleProps\n\textends React.ComponentPropsWithoutRef<typeof ResizablePrimitiveSeparator> {\n\t/** Show a grab-grip on the handle for affordance. */\n\twithHandle?: boolean;\n}\n\n/**\n * Draggable separator between panels. Optionally renders a grab-grip dot.\n * @returns A slim, focusable resize handle.\n */\nfunction ResizableHandle({ withHandle, className, ...props }: ResizableHandleProps) {\n\treturn (\n\t\t<ResizablePrimitiveSeparator\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-px items-center justify-center bg-foreground/[0.12] transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-ring data-[separator=active]:bg-ring\",\n\t\t\t\t\"after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2\",\n\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\"aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full\",\n\t\t\t\t\"aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:-translate-y-1/2 aria-[orientation=horizontal]:after:translate-x-0\",\n\t\t\t\t\"[&[aria-orientation=horizontal]>div]:rotate-90\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{withHandle && (\n\t\t\t\t<div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\tclassName=\"h-2.5 w-2.5\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<circle cx=\"9\" cy=\"5\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"9\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"9\" cy=\"19\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"15\" cy=\"5\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"15\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"15\" cy=\"19\" r=\"1\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</ResizablePrimitiveSeparator>\n\t);\n}\nResizableHandle.displayName = \"ResizableHandle\";\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface SidebarContextValue {\n\t/** Current open/collapsed state. */\n\topen: boolean;\n\t/** Toggle or set open state. */\n\tsetOpen: (open: boolean) => void;\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\n\n/**\n * Reads sidebar state from context. Throws if used outside SidebarProvider.\n * @returns `{ open, setOpen }` bound to the nearest SidebarProvider.\n */\nfunction useSidebar(): SidebarContextValue {\n\tconst ctx = React.useContext(SidebarContext);\n\tif (!ctx) {\n\t\tthrow new Error(\"useSidebar must be used inside <SidebarProvider>\");\n\t}\n\treturn ctx;\n}\n\ninterface SidebarProviderProps {\n\t/** Controlled open state. */\n\topen?: boolean;\n\t/** Uncontrolled initial open state (defaults to true). */\n\tdefaultOpen?: boolean;\n\t/** Callback fired when open state changes. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Children — typically a Sidebar + app content sibling. */\n\tchildren: React.ReactNode;\n\t/** Extra class names on the provider wrapper. */\n\tclassName?: string;\n}\n\n/**\n * Hosts sidebar state. Wrap your app shell (Sidebar + main content) in this.\n * @returns A flex container with a SidebarContext provider.\n */\nfunction SidebarProvider({\n\topen: openProp,\n\tdefaultOpen = true,\n\tonOpenChange,\n\tchildren,\n\tclassName,\n}: SidebarProviderProps) {\n\tconst [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n\tconst isControlled = openProp !== undefined;\n\tconst open = isControlled ? openProp : internalOpen;\n\n\tconst setOpen = React.useCallback(\n\t\t(next: boolean) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpen(next);\n\t\t\t}\n\t\t\tonOpenChange?.(next);\n\t\t},\n\t\t[isControlled, onOpenChange],\n\t);\n\n\tconst value = React.useMemo(() => ({ open, setOpen }), [open, setOpen]);\n\n\treturn (\n\t\t<SidebarContext.Provider value={value}>\n\t\t\t<div\n\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\tclassName={cn(\"flex min-h-screen w-full\", className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SidebarContext.Provider>\n\t);\n}\nSidebarProvider.displayName = \"SidebarProvider\";\n\nconst sidebarVariants = cva(\n\tcn(\n\t\t\"flex h-full shrink-0 flex-col border-foreground/[0.08] border-r bg-background text-foreground\",\n\t\t\"transition-[width] duration-[var(--duration-normal,200ms)] ease-out\",\n\t),\n\t{\n\t\tvariants: {\n\t\t\tside: {\n\t\t\t\tleft: \"border-r\",\n\t\t\t\tright: \"order-last border-l border-r-0\",\n\t\t\t},\n\t\t\tstate: {\n\t\t\t\topen: \"w-64\",\n\t\t\t\tclosed: \"w-0 overflow-hidden border-r-0\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tside: \"left\",\n\t\t\tstate: \"open\",\n\t\t},\n\t},\n);\n\ninterface SidebarProps\n\textends React.HTMLAttributes<HTMLElement>,\n\t\tPick<VariantProps<typeof sidebarVariants>, \"side\"> {}\n\n/**\n * App-shell sidebar. Reads open state from SidebarProvider and animates width.\n * @returns An aside element that expands/collapses.\n */\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n\t({ className, side = \"left\", children, ...props }, ref) => {\n\t\tconst { open } = useSidebar();\n\t\treturn (\n\t\t\t<aside\n\t\t\t\tref={ref}\n\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\taria-hidden={!open || undefined}\n\t\t\t\tinert={!open}\n\t\t\t\tclassName={cn(sidebarVariants({ side, state: open ? \"open\" : \"closed\" }), className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</aside>\n\t\t);\n\t},\n);\nSidebar.displayName = \"Sidebar\";\n\ninterface SidebarTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n\t/** Render as the child element (Button, etc.) using Radix Slot. */\n\tasChild?: boolean;\n}\n\n/**\n * Toggles the sidebar open/closed. Renders a button by default; use asChild to style.\n * @returns A button that flips SidebarProvider state.\n */\nconst SidebarTrigger = React.forwardRef<HTMLButtonElement, SidebarTriggerProps>(\n\t({ asChild, className, onClick, \"aria-label\": ariaLabel, ...props }, ref) => {\n\t\tconst { open, setOpen } = useSidebar();\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\t// When asChild, prefer the consumer's aria-label (or visible text) — don't force ours.\n\t\tconst resolvedAriaLabel =\n\t\t\tariaLabel ?? (asChild ? undefined : open ? \"Collapse sidebar\" : \"Expand sidebar\");\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\ttype={asChild ? undefined : \"button\"}\n\t\t\t\taria-label={resolvedAriaLabel}\n\t\t\t\taria-expanded={open}\n\t\t\t\tonClick={(event: React.MouseEvent<HTMLElement>) => {\n\t\t\t\t\tonClick?.(event as React.MouseEvent<HTMLButtonElement>);\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tsetOpen(!open);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"inline-flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center rounded-md text-muted-foreground\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{asChild ? null : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n\t\t\t\t\t\t\t<line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<span className=\"sr-only\">Toggle sidebar</span>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Comp>\n\t\t);\n\t},\n);\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\n/** Header container at the top of the sidebar. */\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex items-center gap-[var(--gap-sm,0.5rem)] border-b border-b-foreground/[0.08] p-[var(--space-4,1rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nSidebarHeader.displayName = \"SidebarHeader\";\n\n/** Scrollable main area of the sidebar. */\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex-1 overflow-auto p-[var(--space-2,0.5rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nSidebarContent.displayName = \"SidebarContent\";\n\n/** Footer container at the bottom of the sidebar. */\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"mt-auto border-t border-t-foreground/[0.08] p-[var(--space-4,1rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nSidebarFooter.displayName = \"SidebarFooter\";\n\ninterface SidebarItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n\t/** Render as the child element (next/link, etc.) via Slot. */\n\tasChild?: boolean;\n\t/** Mark as the current/selected item. */\n\tactive?: boolean;\n}\n\n/**\n * Single selectable row inside SidebarContent. Compose icon + label in children.\n * @returns An accessible button (or Slot) styled as a sidebar row.\n */\nconst SidebarItem = React.forwardRef<HTMLButtonElement, SidebarItemProps>(\n\t({ asChild, active, className, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\ttype={asChild ? undefined : \"button\"}\n\t\t\t\taria-current={active ? \"page\" : undefined}\n\t\t\t\tdata-active={active ? \"\" : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"inline-flex w-full items-center gap-[var(--gap-sm,0.5rem)] rounded-md px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-medium\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"data-[active]:bg-accent data-[active]:text-accent-foreground\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nSidebarItem.displayName = \"SidebarItem\";\n\nexport {\n\tSidebarProvider,\n\tSidebar,\n\tSidebarTrigger,\n\tSidebarHeader,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarItem,\n\tuseSidebar,\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const buttonSchema: ComponentSchemaDefinition = {\n\tname: \"button\",\n\tdisplayName: \"Button\",\n\tdescription:\n\t\t\"A versatile button component with multiple variants, sizes, and states. Supports icons, loading state, and composition via asChild.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"actions\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"The visual style of the button\",\n\t\t\tenumValues: [\"default\", \"destructive\", \"outline\", \"secondary\", \"ghost\", \"link\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"The size of the button\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\", \"icon\"],\n\t\t},\n\t\t{\n\t\t\tname: \"asChild\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Render as a Slot component, merging props with the child element. Use to render as a link or other element.\",\n\t\t},\n\t\t{\n\t\t\tname: \"loading\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Show loading spinner and disable interaction\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the button\",\n\t\t},\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Additional CSS classes to merge with the component styles\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Visual style variants\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Primary filled button with subtle shadow for main actions\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"destructive\",\n\t\t\t\t\tdescription: \"Red button with shadow for dangerous/irreversible actions\",\n\t\t\t\t},\n\t\t\t\t{ value: \"outline\", description: \"Bordered button with hover fill for secondary actions\" },\n\t\t\t\t{ value: \"secondary\", description: \"Muted filled button for less prominent actions\" },\n\t\t\t\t{ value: \"ghost\", description: \"Transparent button, background appears on hover\" },\n\t\t\t\t{ value: \"link\", description: \"Styled as a hyperlink with underline on hover, no padding\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Size variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Standard size (h-10, px-4)\" },\n\t\t\t\t{ value: \"sm\", description: \"Compact size (h-9, px-3)\" },\n\t\t\t\t{ value: \"lg\", description: \"Large size (h-11, px-8, text-base)\" },\n\t\t\t\t{ value: \"icon\", description: \"Square icon-only size (h-10, w-10)\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Button label content\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"@radix-ui/react-slot\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"primary\",\n\t\t\"primary-foreground\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"secondary\",\n\t\t\"secondary-foreground\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic usage\",\n\t\t\tdescription: \"A simple primary button\",\n\t\t\tcode: \"<Button>Click me</Button>\",\n\t\t},\n\t\t{\n\t\t\ttitle: \"Variants\",\n\t\t\tdescription: \"Different visual styles\",\n\t\t\tcode: '<>\\n <Button variant=\"default\">Primary</Button>\\n <Button variant=\"outline\">Outline</Button>\\n <Button variant=\"secondary\">Secondary</Button>\\n <Button variant=\"ghost\">Ghost</Button>\\n <Button variant=\"destructive\">Delete</Button>\\n <Button variant=\"link\">Link</Button>\\n</>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With loading state\",\n\t\t\tdescription: \"Button showing a spinner while loading\",\n\t\t\tcode: \"<Button loading>Submitting...</Button>\",\n\t\t},\n\t\t{\n\t\t\ttitle: \"As link\",\n\t\t\tdescription: \"Button rendered as an anchor tag\",\n\t\t\tcode: '<Button asChild>\\n <a href=\"/login\">Login</a>\\n</Button>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Icon button\",\n\t\t\tdescription: \"Square button with just an icon\",\n\t\t\tcode: '<Button variant=\"outline\" size=\"icon\" aria-label=\"Settings\">\\n <SettingsIcon />\\n</Button>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for clickable actions: form submissions, confirmations, triggering operations. Use 'default' variant for primary CTAs, 'outline' or 'secondary' for less important actions, 'ghost' for toolbar-style actions.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for navigation between pages (use Link or anchor with asChild). Don't use 'destructive' for non-dangerous actions. Don't use for toggling state (use Toggle or Switch).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using 'destructive' variant for non-destructive actions\",\n\t\t\t\"Nesting interactive elements inside asChild button\",\n\t\t\t\"Missing aria-label when using icon-only size='icon' variant\",\n\t\t\t\"Using onClick for navigation instead of asChild with a link\",\n\t\t],\n\t\trelatedComponents: [\"toggle\", \"toggle-group\", \"dropdown-menu\", \"badge\"],\n\t\taccessibilityNotes:\n\t\t\t\"Automatically handles focus ring, disabled state, and aria attributes. Icon-only buttons MUST have aria-label. Loading state automatically sets disabled.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"button\", \"action\", \"cta\", \"form\", \"interactive\", \"click\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const inputSchema: ComponentSchemaDefinition = {\n\tname: \"input\",\n\tdisplayName: \"Input\",\n\tdescription:\n\t\t\"A styled text input with smooth focus transitions, shadow effects, and full HTML input compatibility.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"text\",\n\t\t\tdescription: \"The HTML input type\",\n\t\t\tenumValues: [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\", \"file\", \"hidden\"],\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Placeholder text shown when the input is empty\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the input\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled input value\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Default value for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Change handler for controlled usage: (e: ChangeEvent<HTMLInputElement>) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Additional CSS classes to merge with the component styles\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"background\", \"ring\", \"muted-foreground\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic usage\",\n\t\t\tdescription: \"A simple text input\",\n\t\t\tcode: '<Input placeholder=\"Enter your name\" />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Email input\",\n\t\t\tdescription: \"An email-type input\",\n\t\t\tcode: '<Input type=\"email\" placeholder=\"you@example.com\" />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"File upload\",\n\t\t\tdescription: \"File input with styled file button\",\n\t\t\tcode: '<Input type=\"file\" />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With label\",\n\t\t\tdescription: \"Input paired with a Label component\",\n\t\t\tcode: '<div className=\"grid w-full max-w-sm gap-1.5\">\\n <Label htmlFor=\"email\">Email</Label>\\n <Input type=\"email\" id=\"email\" placeholder=\"Email\" />\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for single-line text input: names, emails, passwords, search, numbers. Always pair with a Label for accessibility.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for multi-line text (use Textarea). Don't use for selection from predefined options (use Select). Don't use for rich text editing.\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing associated Label element for accessibility\",\n\t\t\t\"Using type='number' without min/max constraints\",\n\t\t\t\"Not providing placeholder text for context\",\n\t\t],\n\t\trelatedComponents: [\"label\", \"textarea\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"Always pair with a Label using htmlFor/id. Consider aria-describedby for helper text or error messages.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"input\", \"text\", \"form\", \"field\", \"text-field\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const labelSchema: ComponentSchemaDefinition = {\n\tname: \"label\",\n\tdisplayName: \"Label\",\n\tdescription:\n\t\t\"An accessible label component built on Radix UI Label primitive. Associates with form controls via htmlFor.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"htmlFor\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"The id of the form control this label is associated with\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Label text content\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-label\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic usage\",\n\t\t\tdescription: \"A label paired with an input\",\n\t\t\tcode: '<div className=\"grid gap-1.5\">\\n <Label htmlFor=\"name\">Name</Label>\\n <Input id=\"name\" placeholder=\"Enter your name\" />\\n</div>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Required field\",\n\t\t\tdescription: \"Label with required indicator\",\n\t\t\tcode: '<Label htmlFor=\"email\">\\n Email <span className=\"text-destructive\">*</span>\\n</Label>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use as a label for every form input, select, textarea, checkbox, or radio group. Always use htmlFor to associate with the control's id.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use as a standalone text element — use a paragraph or heading instead. Don't use for non-form contexts.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set htmlFor matching the input's id\",\n\t\t\t\"Using Label for non-form text content\",\n\t\t\t\"Nesting interactive elements inside Label\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"textarea\", \"checkbox\", \"select\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"Clicking the label focuses the associated control. Automatically communicates the label to screen readers. Use htmlFor/id pairing, not nesting.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"label\", \"form\", \"accessibility\", \"text\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const textareaSchema: ComponentSchemaDefinition = {\n\tname: \"textarea\",\n\tdisplayName: \"Textarea\",\n\tdescription: \"A styled multi-line text input with smooth focus transitions and shadow effects.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"placeholder\", type: \"string\", required: false, description: \"Placeholder text\" },\n\t\t{ name: \"rows\", type: \"number\", required: false, default: 3, description: \"Number of visible text rows\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable the textarea\" },\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled textarea value\" },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default value for uncontrolled usage\" },\n\t\t{ name: \"onChange\", type: \"function\", required: false, description: \"Change handler: (e: ChangeEvent<HTMLTextAreaElement>) => void\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"background\", \"ring\", \"muted-foreground\"],\n\texamples: [\n\t\t{ title: \"Basic\", description: \"Simple textarea\", code: '<Textarea placeholder=\"Type your message...\" />' },\n\t\t{ title: \"With label\", description: \"Textarea paired with a label\", code: '<div className=\"grid gap-1.5\">\\n <Label htmlFor=\"message\">Message</Label>\\n <Textarea id=\"message\" placeholder=\"Type your message...\" />\\n</div>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use for multi-line text input: comments, descriptions, messages, notes. Always pair with a Label.\",\n\t\twhenNotToUse: \"Don't use for single-line input (use Input). Don't use for rich text editing.\",\n\t\tcommonMistakes: [\"Missing associated Label\", \"Not setting a reasonable min-height or rows\"],\n\t\trelatedComponents: [\"input\", \"label\", \"form\"],\n\t\taccessibilityNotes: \"Always pair with a Label using htmlFor/id. Consider aria-describedby for character limits.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"textarea\", \"text\", \"form\", \"multiline\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const checkboxSchema: ComponentSchemaDefinition = {\n\tname: \"checkbox\",\n\tdisplayName: \"Checkbox\",\n\tdescription: \"An accessible checkbox with checked, unchecked, and indeterminate states. Built on Radix UI.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"checked\", type: \"boolean\", required: false, description: \"Controlled checked state\" },\n\t\t{ name: \"defaultChecked\", type: \"boolean\", required: false, description: \"Default checked for uncontrolled\" },\n\t\t{ name: \"onCheckedChange\", type: \"function\", required: false, description: \"Callback: (checked: boolean | 'indeterminate') => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable the checkbox\" },\n\t\t{ name: \"required\", type: \"boolean\", required: false, default: false, description: \"Mark as required for form validation\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-checkbox\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"primary\", \"primary-foreground\", \"ring\"],\n\texamples: [\n\t\t{ title: \"Basic\", description: \"Checkbox with label\", code: '<div className=\"flex items-center gap-2\">\\n <Checkbox id=\"terms\" />\\n <Label htmlFor=\"terms\">Accept terms</Label>\\n</div>' },\n\t\t{ title: \"Controlled\", description: \"Controlled checkbox\", code: 'const [checked, setChecked] = useState(false);\\n<Checkbox checked={checked} onCheckedChange={setChecked} />' },\n\t\t{\n\t\t\ttitle: \"Indeterminate (parent/children)\",\n\t\t\tdescription: \"Parent renders a dash when some (but not all) children are selected\",\n\t\t\tcode: 'const [items, setItems] = useState({ email: true, push: false });\\nconst count = Object.values(items).filter(Boolean).length;\\nconst parent = count === 0 ? false : count === 2 ? true : \"indeterminate\";\\n\\n<Checkbox\\n checked={parent}\\n onCheckedChange={(v) => setItems({ email: v === true, push: v === true })}\\n/>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use for boolean toggles in forms (agree to terms, enable options), multi-select lists, or parent/children trees where the parent reflects partial selection via the `indeterminate` state.\",\n\t\twhenNotToUse: \"Don't use for mutually exclusive options (use RadioGroup). Don't use for instant toggles (use Switch).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing Label pairing\",\n\t\t\t\"Using onChange instead of onCheckedChange\",\n\t\t\t\"Forgetting that onCheckedChange can receive 'indeterminate' as well as boolean\",\n\t\t],\n\t\trelatedComponents: [\"label\", \"switch\", \"form\"],\n\t\taccessibilityNotes: \"Always pair with Label via htmlFor/id. Radix handles aria-checked automatically.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"checkbox\", \"form\", \"toggle\", \"boolean\", \"check\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const switchSchema: ComponentSchemaDefinition = {\n\tname: \"switch\",\n\tdisplayName: \"Switch\",\n\tdescription: \"An accessible toggle switch for instant on/off settings. Built on Radix UI.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"checked\", type: \"boolean\", required: false, description: \"Controlled checked state\" },\n\t\t{ name: \"defaultChecked\", type: \"boolean\", required: false, description: \"Default for uncontrolled\" },\n\t\t{ name: \"onCheckedChange\", type: \"function\", required: false, description: \"Callback: (checked: boolean) => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable the switch\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-switch\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"primary\", \"input\", \"background\", \"ring\"],\n\texamples: [\n\t\t{ title: \"Basic\", description: \"Switch with label\", code: '<div className=\"flex items-center gap-2\">\\n <Switch id=\"airplane\" />\\n <Label htmlFor=\"airplane\">Airplane Mode</Label>\\n</div>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use for settings that take effect immediately: dark mode, notifications, feature toggles.\",\n\t\twhenNotToUse: \"Don't use for form submissions (use Checkbox). Don't use for mutually exclusive options (use RadioGroup).\",\n\t\tcommonMistakes: [\"Using for form fields that need explicit submit\", \"Missing Label\"],\n\t\trelatedComponents: [\"checkbox\", \"label\", \"form\"],\n\t\taccessibilityNotes: \"Always pair with Label. Radix handles role='switch' and aria-checked.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"switch\", \"toggle\", \"form\", \"boolean\", \"setting\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const badgeSchema: ComponentSchemaDefinition = {\n\tname: \"badge\",\n\tdisplayName: \"Badge\",\n\tdescription: \"A small status indicator with multiple style variants. Used for tags, statuses, and categorization.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"display\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"secondary\", \"destructive\", \"outline\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Visual style variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Primary colored badge\" },\n\t\t\t\t{ value: \"secondary\", description: \"Muted background badge\" },\n\t\t\t\t{ value: \"destructive\", description: \"Red/danger badge\" },\n\t\t\t\t{ value: \"outline\", description: \"Bordered badge, no fill\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [{ name: \"children\", description: \"Badge content text\", required: true, acceptedTypes: [\"ReactNode\"] }],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"primary\", \"primary-foreground\", \"secondary\", \"secondary-foreground\", \"destructive\", \"destructive-foreground\", \"foreground\", \"ring\"],\n\texamples: [\n\t\t{ title: \"Variants\", description: \"All badge styles\", code: '<>\\n <Badge>Default</Badge>\\n <Badge variant=\"secondary\">Secondary</Badge>\\n <Badge variant=\"destructive\">Error</Badge>\\n <Badge variant=\"outline\">Outline</Badge>\\n</>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use for status indicators, tags, counts, categories. Place next to headings, in lists, or in table cells.\",\n\t\twhenNotToUse: \"Don't use for interactive actions (use Button). Don't use for long text content.\",\n\t\tcommonMistakes: [\"Using destructive variant for non-error states\", \"Badge text too long\"],\n\t\trelatedComponents: [\"button\", \"card\"],\n\t\taccessibilityNotes: \"Purely decorative by default. Add role='status' for dynamic status badges.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"badge\", \"tag\", \"status\", \"label\", \"indicator\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const separatorSchema: ComponentSchemaDefinition = {\n\tname: \"separator\",\n\tdisplayName: \"Separator\",\n\tdescription: \"A visual divider between content sections with horizontal or vertical orientation.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{ name: \"orientation\", type: \"enum\", required: false, default: \"horizontal\", description: \"Direction of the separator\", enumValues: [\"horizontal\", \"vertical\"] },\n\t\t{ name: \"decorative\", type: \"boolean\", required: false, default: true, description: \"If true, separator is purely visual and hidden from screen readers\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-separator\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{ title: \"Horizontal\", description: \"Default horizontal divider\", code: \"<Separator />\" },\n\t\t{ title: \"Vertical\", description: \"Vertical divider in a flex row\", code: '<div className=\"flex h-5 items-center gap-4\">\\n <span>Left</span>\\n <Separator orientation=\"vertical\" />\\n <span>Right</span>\\n</div>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use to visually separate content sections, menu items, or sidebar groups.\",\n\t\twhenNotToUse: \"Don't use for spacing (use margin/padding). Don't use between every list item.\",\n\t\tcommonMistakes: [\"Using as spacing instead of semantic separation\", \"Forgetting orientation='vertical' needs parent height\"],\n\t\trelatedComponents: [\"card\", \"breadcrumb\", \"dropdown-menu\", \"menubar\"],\n\t\taccessibilityNotes: \"Set decorative=false if the separator conveys semantic meaning. Radix handles role='separator'.\",\n\t\ttokenBudget: 150,\n\t},\n\ttags: [\"separator\", \"divider\", \"hr\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const cardSchema: ComponentSchemaDefinition = {\n\tname: \"card\",\n\tdisplayName: \"Card\",\n\tdescription: \"A container component with header, content, and footer sections. Includes subtle shadow and hover effects.\",\n\tcategory: \"component\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the root card\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"Card content — use CardHeader, CardContent, CardFooter subcomponents\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"card-foreground\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Complete card\",\n\t\t\tdescription: \"Card with all sections\",\n\t\t\tcode: '<Card>\\n <CardHeader>\\n <CardTitle>Create project</CardTitle>\\n <CardDescription>Deploy your new project in one-click.</CardDescription>\\n </CardHeader>\\n <CardContent>\\n <p>Card content here</p>\\n </CardContent>\\n <CardFooter>\\n <Button>Deploy</Button>\\n </CardFooter>\\n</Card>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use to group related content with a visual boundary: settings panels, product listings, dashboard widgets, form sections.\",\n\t\twhenNotToUse: \"Don't use for full-page layouts (use plain divs). Don't nest cards inside cards.\",\n\t\tcommonMistakes: [\"Nesting cards\", \"Using Card when a simple div with border would suffice\", \"Forgetting CardContent padding when placing forms inside\"],\n\t\trelatedComponents: [\"button\", \"separator\"],\n\t\taccessibilityNotes: \"Card is a div by default. Add role='region' and aria-label for landmark cards. CardTitle renders h3 — ensure heading hierarchy.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"card\", \"container\", \"panel\", \"layout\", \"surface\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tabsSchema: ComponentSchemaDefinition = {\n\tname: \"tabs\",\n\tdisplayName: \"Tabs\",\n\tdescription: \"A tabbed interface with accessible keyboard navigation. Built on Radix UI Tabs.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default active tab value (uncontrolled)\" },\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled active tab value\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback: (value: string) => void\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"TabsList + TabsContent elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-tabs\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"background\", \"foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic tabs\",\n\t\t\tdescription: \"Two-tab interface\",\n\t\t\tcode: '<Tabs defaultValue=\"account\">\\n <TabsList>\\n <TabsTrigger value=\"account\">Account</TabsTrigger>\\n <TabsTrigger value=\"password\">Password</TabsTrigger>\\n </TabsList>\\n <TabsContent value=\"account\">Account settings here.</TabsContent>\\n <TabsContent value=\"password\">Password settings here.</TabsContent>\\n</Tabs>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use to organize content into switchable panels: settings pages, dashboards, product details with multiple sections.\",\n\t\twhenNotToUse: \"Don't use for navigation between pages (use router/links). Don't use for steppers/wizards (use a stepper component).\",\n\t\tcommonMistakes: [\"Missing defaultValue causing no tab selected initially\", \"TabsTrigger value not matching TabsContent value\", \"Using for page navigation instead of in-page content switching\"],\n\t\trelatedComponents: [\"card\", \"separator\"],\n\t\taccessibilityNotes: \"Full keyboard navigation built-in (arrow keys, Home, End). Radix handles aria-selected, role='tabpanel', etc.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"tabs\", \"navigation\", \"panel\", \"tabbed\", \"sections\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const accordionSchema: ComponentSchemaDefinition = {\n\tname: \"accordion\",\n\tdisplayName: \"Accordion\",\n\tdescription: \"A vertically stacked set of collapsible content sections. Built on Radix UI Accordion.\",\n\tcategory: \"component\",\n\tsubcategory: \"disclosure\",\n\tprops: [\n\t\t{ name: \"type\", type: \"enum\", required: true, description: \"Single allows one item open at a time, multiple allows many\", enumValues: [\"single\", \"multiple\"] },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default open item(s): string for type='single', string[] for type='multiple'\" },\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled open item(s): string for type='single', string[] for type='multiple'\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when open items change: (value: string) => void for single, (value: string[]) => void for multiple\" },\n\t\t{ name: \"collapsible\", type: \"boolean\", required: false, default: false, description: \"Allow all items to be closed (type='single' only)\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"AccordionItem elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-accordion\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"FAQ accordion\",\n\t\t\tdescription: \"Single-open accordion for FAQ sections\",\n\t\t\tcode: '<Accordion type=\"single\" collapsible>\\n <AccordionItem value=\"item-1\">\\n <AccordionTrigger>Is it accessible?</AccordionTrigger>\\n <AccordionContent>Yes, it adheres to the WAI-ARIA design pattern.</AccordionContent>\\n </AccordionItem>\\n <AccordionItem value=\"item-2\">\\n <AccordionTrigger>Is it styled?</AccordionTrigger>\\n <AccordionContent>Yes, with Tailwind CSS and smooth animations.</AccordionContent>\\n </AccordionItem>\\n</Accordion>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use for FAQ sections, settings groups, or any content that benefits from progressive disclosure. Use type='single' for FAQs, type='multiple' for settings.\",\n\t\twhenNotToUse: \"Don't use for navigation (use tabs). Don't use for a single collapsible (use Collapsible).\",\n\t\tcommonMistakes: [\"Forgetting type prop (it's required)\", \"Not setting collapsible=true for single type when all items should be closeable\", \"Missing value on AccordionItem\"],\n\t\trelatedComponents: [\"tabs\", \"card\"],\n\t\taccessibilityNotes: \"Full keyboard navigation (arrow keys, Home, End, Enter/Space). Radix handles aria-expanded, aria-controls, role='region'.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"accordion\", \"collapsible\", \"faq\", \"disclosure\", \"expandable\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dialogSchema: ComponentSchemaDefinition = {\n\tname: \"dialog\",\n\tdisplayName: \"Dialog\",\n\tdescription:\n\t\t\"A modal dialog that interrupts the user with important content. Built on Radix UI with focus trap, escape handling, and scroll lock.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, content outside the dialog is inert\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DialogTrigger + DialogContent (with DialogHeader, DialogFooter, etc.)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted-foreground\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic dialog\",\n\t\t\tdescription: \"Dialog with title, description, and action buttons\",\n\t\t\tcode: '<Dialog>\\n <DialogTrigger asChild>\\n <Button variant=\"outline\">Edit Profile</Button>\\n </DialogTrigger>\\n <DialogContent>\\n <DialogHeader>\\n <DialogTitle>Edit profile</DialogTitle>\\n <DialogDescription>Make changes to your profile here.</DialogDescription>\\n </DialogHeader>\\n <div className=\"grid gap-4 py-4\">\\n <Input placeholder=\"Name\" />\\n </div>\\n <DialogFooter>\\n <Button>Save changes</Button>\\n </DialogFooter>\\n </DialogContent>\\n</Dialog>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for focused, interruptive tasks: confirmations, quick forms, detail views. The user must address the dialog before continuing.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for destructive confirmations (use AlertDialog). Don't use for complex multi-step flows (use a full page). Don't use for non-critical info (use Tooltip or Popover).\",\n\t\tcommonMistakes: [\n\t\t\t\"Nesting dialogs inside each other\",\n\t\t\t\"Forgetting DialogTitle (breaks accessibility — screen readers need it)\",\n\t\t\t\"Using DialogDescription for long-form content (keep it short)\",\n\t\t\t\"Putting too many primary actions in DialogFooter\",\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"popover\", \"sheet\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix traps focus, handles Escape to close, and wires aria-labelledby/describedby to DialogTitle/DialogDescription. Always include a DialogTitle. DialogContent is constrained to `max-h-[calc(100vh-2rem)]` and scrolls internally so long content stays inside the focus trap.\",\n\t\ttokenBudget: 600,\n\t},\n\ttags: [\"dialog\", \"modal\", \"overlay\", \"popup\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const alertDialogSchema: ComponentSchemaDefinition = {\n\tname: \"alert-dialog\",\n\tdisplayName: \"Alert Dialog\",\n\tdescription:\n\t\t\"A modal dialog for destructive confirmations. The user must explicitly accept or cancel — there is no close button. Built on Radix UI AlertDialog.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired on open state change: (open: boolean) => void\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"AlertDialogTrigger + AlertDialogContent (with Header, Footer, Action, Cancel)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-alert-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"border\",\n\t\t\"input\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Destructive confirmation\",\n\t\t\tdescription: \"Confirm before deleting a resource\",\n\t\t\tcode: '<AlertDialog>\\n <AlertDialogTrigger asChild>\\n <Button variant=\"destructive\">Delete account</Button>\\n </AlertDialogTrigger>\\n <AlertDialogContent>\\n <AlertDialogHeader>\\n <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n <AlertDialogDescription>\\n This action cannot be undone. This will permanently delete your account.\\n </AlertDialogDescription>\\n </AlertDialogHeader>\\n <AlertDialogFooter>\\n <AlertDialogCancel>Cancel</AlertDialogCancel>\\n <AlertDialogAction>Yes, delete</AlertDialogAction>\\n </AlertDialogFooter>\\n </AlertDialogContent>\\n</AlertDialog>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for destructive or irreversible confirmations: delete account, discard changes, permanent actions. The user must explicitly choose Action or Cancel.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-destructive dialogs (use Dialog). Don't use for simple notifications (use Toast). Don't use when there's only one action to take.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Dialog when AlertDialog is semantically required\",\n\t\t\t\"Omitting AlertDialogCancel (user must have an escape hatch)\",\n\t\t\t\"Putting more than one AlertDialogAction (the pattern expects one destructive action)\",\n\t\t\t\"Making the action button non-destructive styled\",\n\t\t],\n\t\trelatedComponents: [\"dialog\", \"toast\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets role='alertdialog', traps focus, focuses AlertDialogCancel by default, and closes on Escape. Clicks outside the dialog are prevented (user must choose Cancel or Action).\",\n\t\ttokenBudget: 650,\n\t},\n\ttags: [\"alert-dialog\", \"confirm\", \"destructive\", \"modal\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dropdownMenuSchema: ComponentSchemaDefinition = {\n\tname: \"dropdown-menu\",\n\tdisplayName: \"Dropdown Menu\",\n\tdescription:\n\t\t\"A menu of actions displayed to the user when a trigger is activated. Supports items, checkboxes, radio groups, sub-menus, and keyboard shortcuts.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on open state change: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, interaction outside the menu is blocked\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DropdownMenuTrigger + DropdownMenuContent (with Items, CheckboxItems, etc.)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dropdown-menu\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic dropdown\",\n\t\t\tdescription: \"Standard action menu\",\n\t\t\tcode: '<DropdownMenu>\\n <DropdownMenuTrigger asChild>\\n <Button variant=\"outline\">Open Menu</Button>\\n </DropdownMenuTrigger>\\n <DropdownMenuContent>\\n <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n <DropdownMenuSeparator />\\n <DropdownMenuItem>Profile</DropdownMenuItem>\\n <DropdownMenuItem>Settings</DropdownMenuItem>\\n <DropdownMenuItem>\\n Log out\\n <DropdownMenuShortcut>\\u2318Q</DropdownMenuShortcut>\\n </DropdownMenuItem>\\n </DropdownMenuContent>\\n</DropdownMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for action menus triggered by a button: user menus, row-action menus, toolbar overflow. Include DropdownMenuLabel for context, DropdownMenuSeparator for grouping.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for navigation between pages (use NavigationMenu or links). Don't use for selection inputs (use Select or Combobox). Don't use for right-click menus (use ContextMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using DropdownMenu as a form Select (use Select instead)\",\n\t\t\t\"Putting interactive elements directly in the trigger without asChild\",\n\t\t\t\"Too many items without grouping (use DropdownMenuLabel + DropdownMenuSeparator)\",\n\t\t\t\"Forgetting DropdownMenuShortcut for keyboard-accessible actions\",\n\t\t],\n\t\trelatedComponents: [\"select\", \"context-menu\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full keyboard navigation: arrow keys, Home, End, typeahead, Escape. Radix handles role='menu', role='menuitem', and aria-labelledby.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"dropdown\", \"menu\", \"actions\", \"overflow\", \"contextual\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const popoverSchema: ComponentSchemaDefinition = {\n\tname: \"popover\",\n\tdisplayName: \"Popover\",\n\tdescription:\n\t\t\"Floating content anchored to a trigger element. Non-modal by default — clicks outside dismiss it. Use for inline forms, info, or quick actions.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on open state change: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"When true, content outside the popover is inert\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"PopoverTrigger + PopoverContent\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic popover\",\n\t\t\tdescription: \"Quick settings anchored to a button\",\n\t\t\tcode: '<Popover>\\n <PopoverTrigger asChild>\\n <Button variant=\"outline\">Open</Button>\\n </PopoverTrigger>\\n <PopoverContent>\\n <div className=\"space-y-2\">\\n <h4 className=\"font-medium\">Dimensions</h4>\\n <p className=\"text-sm text-muted-foreground\">Set the dimensions for the layer.</p>\\n </div>\\n </PopoverContent>\\n</Popover>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline forms, quick settings, info panels, or color pickers. Anchored to a trigger, non-modal, dismisses on outside click.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for critical tasks that interrupt (use Dialog). Don't use for hover-only info (use Tooltip or HoverCard). Don't use for menu actions (use DropdownMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Popover when the user must address the content (should be Dialog)\",\n\t\t\t\"Missing asChild on PopoverTrigger when using a styled Button\",\n\t\t\t\"Popover content too wide — keep it focused and compact\",\n\t\t],\n\t\trelatedComponents: [\"tooltip\", \"hover-card\", \"dialog\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix manages focus, aria-expanded on the trigger, and closes on Escape. Content is portalled to body so stacking contexts don't clip it.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"popover\", \"overlay\", \"floating\", \"inline\", \"anchored\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tooltipSchema: ComponentSchemaDefinition = {\n\tname: \"tooltip\",\n\tdisplayName: \"Tooltip\",\n\tdescription:\n\t\t\"A small floating label that reveals on hover or focus. Wrap your app in TooltipProvider, then use Tooltip/TooltipTrigger/TooltipContent per tooltip.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"delayDuration\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 700,\n\t\t\tdescription:\n\t\t\t\t\"[TooltipProvider prop] Milliseconds before the tooltip appears on hover\",\n\t\t},\n\t\t{\n\t\t\tname: \"disableHoverableContent\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"[TooltipProvider prop] When true, tooltip dismisses when cursor enters it\",\n\t\t},\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Tooltip root prop] Controlled open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"[Tooltip root prop] Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"[Tooltip root prop] Callback on open state change: (open: boolean) => void\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"TooltipTrigger + TooltipContent, all inside a TooltipProvider\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-tooltip\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"primary\", \"primary-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic tooltip\",\n\t\t\tdescription: \"Icon button with hover label\",\n\t\t\tcode: '<TooltipProvider>\\n <Tooltip>\\n <TooltipTrigger asChild>\\n <Button variant=\"outline\" size=\"icon\" aria-label=\"Add\">+</Button>\\n </TooltipTrigger>\\n <TooltipContent>\\n <p>Add item</p>\\n </TooltipContent>\\n </Tooltip>\\n</TooltipProvider>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for terse hover/focus-reveal info: icon button labels, abbreviation expansions, keyboard shortcut hints. Content should fit in one line.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for rich content with images or actions (use HoverCard or Popover). Don't use for the only way to convey essential info — it's invisible to touch users.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting TooltipProvider at the app root\",\n\t\t\t\"Tooltip content too long (keep it under one line)\",\n\t\t\t\"Using Tooltip as the only label for icon buttons (still add aria-label)\",\n\t\t\t\"Triggering tooltips on non-interactive elements\",\n\t\t],\n\t\trelatedComponents: [\"hover-card\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Triggers on focus and hover. Radix sets role='tooltip' and aria-describedby. Still pair icon buttons with aria-label since tooltips don't announce on touch.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"tooltip\", \"hint\", \"label\", \"hover\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const selectSchema: ComponentSchemaDefinition = {\n\tname: \"select\",\n\tdisplayName: \"Select\",\n\tdescription:\n\t\t\"An accessible dropdown select for choosing one option from a list. Built on Radix UI Select with full keyboard navigation, typeahead, and RTL support.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Controlled selected value\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Default selected value for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Callback on value change: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"[Select root prop] Disable the entire select\",\n\t\t},\n\t\t{\n\t\t\tname: \"required\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"[Select root prop] Mark as required for form validation\",\n\t\t},\n\t\t{\n\t\t\tname: \"name\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Form field name (for native form submission)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SelectTrigger + SelectContent (with SelectItems, Groups, Labels)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-select\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"input\",\n\t\t\"background\",\n\t\t\"ring\",\n\t\t\"muted-foreground\",\n\t\t\"popover\",\n\t\t\"popover-foreground\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted\",\n\t\t\"border\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic select\",\n\t\t\tdescription: \"Choose a timezone\",\n\t\t\tcode: '<Select>\\n <SelectTrigger className=\"w-[180px]\">\\n <SelectValue placeholder=\"Select a fruit\" />\\n </SelectTrigger>\\n <SelectContent>\\n <SelectGroup>\\n <SelectLabel>Fruits</SelectLabel>\\n <SelectItem value=\"apple\">Apple</SelectItem>\\n <SelectItem value=\"banana\">Banana</SelectItem>\\n <SelectItem value=\"orange\">Orange</SelectItem>\\n </SelectGroup>\\n </SelectContent>\\n</Select>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for choosing one option from a known, finite list (<= ~20 items): timezones, categories, roles, country codes. Pair with Label.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for large searchable lists (use Combobox). Don't use for boolean choices (use Switch/Checkbox). Don't use for action menus (use DropdownMenu). Don't use for multi-select (needs a different component).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing Label pairing\",\n\t\t\t\"Forgetting SelectValue inside SelectTrigger\",\n\t\t\t\"Using Select when the list is large (use Combobox)\",\n\t\t\t\"Putting non-SelectItem children inside SelectContent\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"dropdown-menu\", \"radio-group\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full keyboard nav: arrow keys, Home, End, typeahead, Escape to close. Radix handles role='combobox' on trigger, role='listbox' on content, aria-selected on items.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"select\", \"dropdown\", \"form\", \"field\", \"options\", \"choose\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const radioGroupSchema: ComponentSchemaDefinition = {\n\tname: \"radio-group\",\n\tdisplayName: \"Radio Group\",\n\tdescription:\n\t\t\"A set of mutually exclusive radio options. Built on Radix UI RadioGroup with roving focus and arrow-key navigation.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled selected value\" },\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Default selected value for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on value change: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable all items\",\n\t\t},\n\t\t{\n\t\t\tname: \"name\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Form field name (for native form submission)\",\n\t\t},\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"vertical\",\n\t\t\tdescription: \"Layout direction\",\n\t\t\tenumValues: [\"horizontal\", \"vertical\"],\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"RadioGroupItem elements, typically paired with Labels\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-radio-group\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"primary\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic radio group\",\n\t\t\tdescription: \"Select a notification preference\",\n\t\t\tcode: '<RadioGroup defaultValue=\"comfortable\">\\n <div className=\"flex items-center gap-2\">\\n <RadioGroupItem value=\"default\" id=\"r1\" />\\n <Label htmlFor=\"r1\">Default</Label>\\n </div>\\n <div className=\"flex items-center gap-2\">\\n <RadioGroupItem value=\"comfortable\" id=\"r2\" />\\n <Label htmlFor=\"r2\">Comfortable</Label>\\n </div>\\n <div className=\"flex items-center gap-2\">\\n <RadioGroupItem value=\"compact\" id=\"r3\" />\\n <Label htmlFor=\"r3\">Compact</Label>\\n </div>\\n</RadioGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for mutually exclusive choices from a short list (2-5 options) where all options should be visible. Pair each RadioGroupItem with a Label.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for many options (use Select). Don't use for boolean toggles (use Switch or Checkbox). Don't use for multi-select.\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing Label for each RadioGroupItem\",\n\t\t\t\"Using for more than 5 options (use Select)\",\n\t\t\t\"Using htmlFor id mismatch between Label and RadioGroupItem\",\n\t\t],\n\t\trelatedComponents: [\"select\", \"checkbox\", \"label\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA radio group pattern. Arrow keys move focus+selection. Radix handles aria-checked, role='radiogroup', role='radio'.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"radio\", \"radio-group\", \"form\", \"choice\", \"mutually-exclusive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sliderSchema: ComponentSchemaDefinition = {\n\tname: \"slider\",\n\tdisplayName: \"Slider\",\n\tdescription:\n\t\t\"A range input with draggable thumbs. Supports single value, ranges (two thumbs), custom steps, and full keyboard control.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Controlled array of thumb values (number[]), e.g. [50] for single, [20, 80] for range\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Default array of thumb values (number[]) for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on value change: (value: number[]) => void\",\n\t\t},\n\t\t{ name: \"min\", type: \"number\", required: false, default: 0, description: \"Minimum value\" },\n\t\t{ name: \"max\", type: \"number\", required: false, default: 100, description: \"Maximum value\" },\n\t\t{\n\t\t\tname: \"step\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"Step interval between valid values\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the slider\",\n\t\t},\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Slider direction\",\n\t\t\tenumValues: [\"horizontal\", \"vertical\"],\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Accessible label for the slider as a whole. Mirrored onto a single thumb automatically; for range sliders prefer thumbLabels.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the slider.\",\n\t\t},\n\t\t{\n\t\t\tname: \"thumbLabels\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Per-thumb accessible labels (string[]). Required for range sliders so each thumb has a meaningful name (e.g. ['Minimum price', 'Maximum price']). For a single-thumb slider, the Root's aria-label is mirrored onto the thumb automatically and thumbLabels is only needed when overriding that default.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slider\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"primary\", \"background\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic slider\",\n\t\t\tdescription: \"Single-thumb slider\",\n\t\t\tcode: '<Slider defaultValue={[50]} max={100} step={1} />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Range slider\",\n\t\t\tdescription: \"Two-thumb range\",\n\t\t\tcode: '<Slider defaultValue={[20, 80]} max={100} step={1} />',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for continuous numeric inputs with a known range: volume, brightness, price range filter, opacity. Pair value with a visible number display when the exact value matters.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when the user needs to enter an exact number (use Input type=number). Don't use for discrete choices (use Select or RadioGroup).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Slider for exact values without showing the number\",\n\t\t\t\"Missing min/max bounds\",\n\t\t\t\"Using step=1 for fractional values (set step=0.01)\",\n\t\t\t\"Not providing aria-label / aria-labelledby when there's no visible label\",\n\t\t\t\"Range slider with only Root aria-label and no thumbLabels — both thumbs fall back to '(N of 2)' indexed names instead of meaningful per-thumb labels\",\n\t\t\t\"thumbLabels.length !== value.length — extra labels are ignored, missing labels fall back to indexed names (dev-mode warning)\",\n\t\t],\n\t\trelatedComponents: [\"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"Arrow keys step by step, Home/End jump to min/max, PageUp/PageDown step larger. Radix handles aria-valuemin/max/now. Each thumb has its own accessible name: explicit via thumbLabels[i], else mirrored from the Root's aria-label (single thumb) or indexed '(i of N)' fallback (range). Add aria-label / aria-labelledby on the Root when there's no visible label.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"slider\", \"range\", \"form\", \"numeric\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toggleSchema: ComponentSchemaDefinition = {\n\tname: \"toggle\",\n\tdisplayName: \"Toggle\",\n\tdescription:\n\t\t\"A two-state button that stays pressed when toggled on. Used for formatting toolbars (bold/italic) or option toggles.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"pressed\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled pressed state\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultPressed\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default pressed state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onPressedChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on pressed change: (pressed: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Toggle size\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the toggle\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Visual variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Transparent ghost-style toggle\" },\n\t\t\t\t{ value: \"outline\", description: \"Bordered toggle\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Size variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Standard size (h-10)\" },\n\t\t\t\t{ value: \"sm\", description: \"Compact size (h-9)\" },\n\t\t\t\t{ value: \"lg\", description: \"Large size (h-11)\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Toggle label or icon\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-toggle\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"accent\", \"accent-foreground\", \"input\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic toggle\",\n\t\t\tdescription: \"Bold text toggle\",\n\t\t\tcode: '<Toggle aria-label=\"Toggle bold\">B</Toggle>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for binary on/off actions that persist: toolbar formatting buttons (bold, italic), layout mode switches, filter toggles. Not submitted as form data.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for instant settings (use Switch). Don't use for form boolean fields (use Checkbox). Don't use for choosing one of many (use ToggleGroup).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using for form field submission (use Checkbox instead)\",\n\t\t\t\"Forgetting aria-label on icon-only toggles\",\n\t\t\t\"Using Toggle when ToggleGroup's single-select mode is needed\",\n\t\t],\n\t\trelatedComponents: [\"toggle-group\", \"switch\", \"checkbox\", \"button\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets aria-pressed correctly. Icon-only toggles MUST have aria-label. Space/Enter toggles state.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"toggle\", \"button\", \"pressed\", \"two-state\", \"toolbar\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toggleGroupSchema: ComponentSchemaDefinition = {\n\tname: \"toggle-group\",\n\tdisplayName: \"Toggle Group\",\n\tdescription:\n\t\t\"A set of toggles where one or multiple can be pressed. Inherits Toggle's variant/size via context. Useful for alignment/formatting toolbars.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Single allows one pressed at a time, multiple allows many\",\n\t\t\tenumValues: [\"single\", \"multiple\"],\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Controlled pressed value(s). string when type='single', string[] when type='multiple'\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Default pressed value(s). string when type='single', string[] when type='multiple'\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on value change\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Inherited by all ToggleGroupItems\",\n\t\t\tenumValues: [\"default\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Inherited by all ToggleGroupItems\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable all items\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"ToggleGroupItem elements\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\n\t\t\t\"@radix-ui/react-toggle-group\",\n\t\t\t\"@radix-ui/react-toggle\",\n\t\t\t\"class-variance-authority\",\n\t\t\t\"clsx\",\n\t\t\t\"tailwind-merge\",\n\t\t],\n\t\tinternal: [\"toggle\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"accent\", \"accent-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Text alignment group\",\n\t\t\tdescription: \"Single-select toggle group for text alignment\",\n\t\t\tcode: '<ToggleGroup type=\"single\" defaultValue=\"left\">\\n <ToggleGroupItem value=\"left\" aria-label=\"Left align\">L</ToggleGroupItem>\\n <ToggleGroupItem value=\"center\" aria-label=\"Center align\">C</ToggleGroupItem>\\n <ToggleGroupItem value=\"right\" aria-label=\"Right align\">R</ToggleGroupItem>\\n</ToggleGroup>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Formatting group\",\n\t\t\tdescription: \"Multiple-select toggle group for text formatting\",\n\t\t\tcode: '<ToggleGroup type=\"multiple\">\\n <ToggleGroupItem value=\"bold\" aria-label=\"Bold\">B</ToggleGroupItem>\\n <ToggleGroupItem value=\"italic\" aria-label=\"Italic\">I</ToggleGroupItem>\\n <ToggleGroupItem value=\"underline\" aria-label=\"Underline\">U</ToggleGroupItem>\\n</ToggleGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for toolbar toggles where users pick one of many (type='single') or multiple (type='multiple'): text alignment, formatting (bold/italic/underline), view modes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for form radio fields (use RadioGroup). Don't use for standalone two-state buttons (use Toggle). Don't use for navigation (use Tabs).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting the type prop (required)\",\n\t\t\t\"Missing aria-label on icon-only items\",\n\t\t\t\"Using for form submission without name prop\",\n\t\t],\n\t\trelatedComponents: [\"toggle\", \"radio-group\", \"tabs\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA toolbar pattern with roving focus. Arrow keys move focus, Space/Enter toggles. Each icon-only item needs aria-label.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"toggle-group\", \"toolbar\", \"formatting\", \"alignment\", \"multi-select\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const formSchema: ComponentSchemaDefinition = {\n\tname: \"form\",\n\tdisplayName: \"Form\",\n\tdescription:\n\t\t\"A form primitive built on react-hook-form + zod. Provides Form/FormField/FormItem/FormLabel/FormControl/FormDescription/FormMessage with automatic aria wiring and error display.\",\n\tcategory: \"component\",\n\tsubcategory: \"forms\",\n\tprops: [],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"FormField + FormItem subtrees\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\n\t\t\t\"react-hook-form\",\n\t\t\t\"@hookform/resolvers\",\n\t\t\t\"zod\",\n\t\t\t\"@radix-ui/react-label\",\n\t\t\t\"@radix-ui/react-slot\",\n\t\t\t\"clsx\",\n\t\t\t\"tailwind-merge\",\n\t\t],\n\t\tinternal: [\"label\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"destructive\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Zod-validated form\",\n\t\t\tdescription: \"Username form with react-hook-form + zod\",\n\t\t\tcode: 'import { zodResolver } from \"@hookform/resolvers/zod\";\\nimport { useForm } from \"react-hook-form\";\\nimport { z } from \"zod\";\\n\\nconst formSchema = z.object({\\n username: z.string().min(2, \"Username must be at least 2 characters\"),\\n});\\n\\nfunction ProfileForm() {\\n const form = useForm({\\n resolver: zodResolver(formSchema),\\n defaultValues: { username: \"\" },\\n });\\n\\n return (\\n <Form {...form}>\\n <form onSubmit={form.handleSubmit((values) => console.log(values))} className=\"space-y-6\">\\n <FormField\\n control={form.control}\\n name=\"username\"\\n render={({ field }) => (\\n <FormItem>\\n <FormLabel>Username</FormLabel>\\n <FormControl><Input placeholder=\"shadcn\" {...field} /></FormControl>\\n <FormDescription>Your public display name.</FormDescription>\\n <FormMessage />\\n </FormItem>\\n )}\\n />\\n <Button type=\"submit\">Submit</Button>\\n </form>\\n </Form>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any form that needs validation, per-field errors, and accessible aria-describedby/aria-invalid wiring. Pair with zod schemas via @hookform/resolvers/zod.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for trivial single-input forms that don't need validation (render a plain Input + Button). Don't use for server actions forms in Next.js 16 (consider useActionState + useFormStatus instead).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to spread {...field} into the form control (connects value/onChange)\",\n\t\t\t\"Putting FormLabel outside FormItem (loses htmlFor wiring)\",\n\t\t\t\"Using useForm without a resolver when zod validation is desired\",\n\t\t\t\"Calling form.handleSubmit without a callback\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"textarea\", \"select\", \"checkbox\", \"radio-group\", \"switch\"],\n\t\taccessibilityNotes:\n\t\t\t\"FormControl automatically wires id, aria-describedby, and aria-invalid. FormLabel uses htmlFor matching the control id. Errors are announced via FormMessage with matching aria-describedby.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"form\", \"react-hook-form\", \"zod\", \"validation\", \"field\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const avatarSchema: ComponentSchemaDefinition = {\n\tname: \"avatar\",\n\tdisplayName: \"Avatar\",\n\tdescription:\n\t\t\"A user profile image with a fallback (usually initials) rendered when the image is missing or fails to load. Built on Radix UI Avatar — AvatarFallback accepts a delayMs prop to avoid flashing during fast loads.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"display\",\n\tprops: [{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the root\" }],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"AvatarImage + AvatarFallback\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-avatar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic avatar\",\n\t\t\tdescription: \"Image with initials fallback\",\n\t\t\tcode: '<Avatar>\\n <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\\n <AvatarFallback>CN</AvatarFallback>\\n</Avatar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for user profile images: headers, comments, user lists. Always include AvatarFallback for accessibility and loading states.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for decorative icons (use an <img> or icon component). Don't use for product/brand images (use <img> with proper sizing).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing alt text on AvatarImage\",\n\t\t\t\"No AvatarFallback — shows nothing when image is missing or errors\",\n\t\t\t\"Omitting delayMs on AvatarFallback causes flicker for fast-loading images\",\n\t\t\t\"Using for non-circular images (override rounded-full if needed)\",\n\t\t],\n\t\trelatedComponents: [\"badge\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"AvatarImage requires alt text. AvatarFallback renders initials or an icon — ensure the visible text is meaningful.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"avatar\", \"profile\", \"user\", \"image\", \"display\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const skeletonSchema: ComponentSchemaDefinition = {\n\tname: \"skeleton\",\n\tdisplayName: \"Skeleton\",\n\tdescription: \"A pulsing placeholder shown while content is loading. Pair with explicit dimensions.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Width/height and any additional styling via Tailwind classes\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Card skeleton\",\n\t\t\tdescription: \"Avatar + two lines of text placeholder\",\n\t\t\tcode: '<div className=\"flex items-center gap-4\">\\n <Skeleton className=\"h-12 w-12 rounded-full\" />\\n <div className=\"space-y-2\">\\n <Skeleton className=\"h-4 w-[250px]\" />\\n <Skeleton className=\"h-4 w-[200px]\" />\\n </div>\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use during async data loads to show the shape of forthcoming content. Match the dimensions and layout of the real content to avoid layout shift on load.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for fast operations (<200ms — users prefer a brief spinner or nothing). Don't use as a permanent empty state (use proper empty-state UI).\",\n\t\tcommonMistakes: [\n\t\t\t\"Skeleton dimensions don't match loaded content — causes layout shift\",\n\t\t\t\"Leaving Skeleton visible for long loads without a timeout/retry\",\n\t\t\t\"Using Skeleton for interactive elements users might tap\",\n\t\t],\n\t\trelatedComponents: [\"progress\", \"avatar\", \"card\", \"table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Add aria-busy='true' on the loading container and a visually hidden status (aria-live='polite') to announce load completion to screen readers.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"skeleton\", \"loading\", \"placeholder\", \"shimmer\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const progressSchema: ComponentSchemaDefinition = {\n\tname: \"progress\",\n\tdisplayName: \"Progress\",\n\tdescription: \"A horizontal progress bar showing completion from 0 to 100%. Built on Radix UI Progress.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Current value (0–max). Omit to render at 0% (both visually and in ARIA — the component clamps undefined to 0). Use Skeleton for indeterminate loading states.\",\n\t\t},\n\t\t{ name: \"max\", type: \"number\", required: false, default: 100, description: \"Maximum value\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-progress\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"primary\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic progress\",\n\t\t\tdescription: \"At 60%\",\n\t\t\tcode: \"<Progress value={60} />\",\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for deterministic progress where completion is measurable: file uploads, multi-step form completion, batch processing. Pair with a visible numeric label where precision matters.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for indeterminate waits (use a spinner or Skeleton). Don't use for completion over long time-spans without a human-readable ETA.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing 0–1 float instead of 0–100\",\n\t\t\t\"Not labeling the progress (users can't tell what's progressing)\",\n\t\t\t\"Updating too frequently (>30fps) — wastes renders\",\n\t\t],\n\t\trelatedComponents: [\"skeleton\", \"slider\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix wires role='progressbar', aria-valuenow, aria-valuemin, aria-valuemax. Pair with a visible label or aria-label for context.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"progress\", \"loading\", \"bar\", \"feedback\", \"determinate\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const scrollAreaSchema: ComponentSchemaDefinition = {\n\tname: \"scroll-area\",\n\tdisplayName: \"Scroll Area\",\n\tdescription: \"A scrollable region with custom-styled scrollbars that match the design system. Content must be explicitly sized.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"hover\",\n\t\t\tdescription: \"When scrollbars are visible\",\n\t\t\tenumValues: [\"auto\", \"always\", \"scroll\", \"hover\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Set dimensions via Tailwind (e.g. h-72 w-48)\" },\n\t\t{\n\t\t\tname: \"viewportTabIndex\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"tabIndex applied to the scroll viewport. Defaults to 0 so keyboard users can scroll without a pointer; pass -1 to skip the viewport in the tab order when wrapping decorative or already-keyboard-reachable content.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Any content — will be wrapped in a scrollable viewport\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-scroll-area\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Fixed-height list\",\n\t\t\tdescription: \"50 items in a 200px-tall scrollable region\",\n\t\t\tcode: '<ScrollArea className=\"h-[200px] w-[350px] rounded-md border p-4\">\\n {Array.from({ length: 50 }).map((_, i) => (\\n <div key={i} className=\"text-sm\">Item {i + 1}</div>\\n ))}\\n</ScrollArea>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when you need styled scrollbars that match the design system — sidebars, code blocks, large lists in dialogs. Must have explicit dimensions (height/width).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the whole page (use native browser scrollbars). Don't use for content that should grow freely (omit the ScrollArea and use overflow-auto directly).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set height/width — scrollbars don't appear\",\n\t\t\t\"Using for the whole page\",\n\t\t\t\"Nesting ScrollAreas (confusing UX)\",\n\t\t\t\"Wrapping decorative or already-keyboard-reachable content without setting viewportTabIndex={-1} — adds an unnecessary tab stop\",\n\t\t],\n\t\trelatedComponents: [],\n\t\taccessibilityNotes:\n\t\t\t\"The viewport is keyboard-focusable by default (viewportTabIndex=0) so users can scroll long content via arrow keys / PgUp / PgDn / Home / End without a pointer. Pass viewportTabIndex={-1} when the contents are already in the tab order or purely decorative. For very long lists, consider pagination or virtualization.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"scroll-area\", \"scroll\", \"overflow\", \"scrollbar\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const aspectRatioSchema: ComponentSchemaDefinition = {\n\tname: \"aspect-ratio\",\n\tdisplayName: \"Aspect Ratio\",\n\tdescription: \"Constrain children to a specific width-to-height ratio (e.g. 16/9 for video, 1/1 for square).\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"ratio\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"Width-to-height ratio (e.g. 16/9 ≈ 1.778)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Content to constrain (usually an image or iframe)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-aspect-ratio\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"16:9 video thumbnail\",\n\t\t\tdescription: \"Image constrained to widescreen ratio\",\n\t\t\tcode: '<AspectRatio ratio={16 / 9} className=\"bg-muted\">\\n <img src=\"/hero.jpg\" alt=\"Hero\" className=\"h-full w-full rounded-md object-cover\" />\\n</AspectRatio>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when an image or iframe must maintain a specific ratio regardless of container width: video thumbnails, product images, hero banners, embeds.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for content with known fixed dimensions (just use width/height). Don't use for text content (ratios don't make sense for prose).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing ratio as a string instead of a number (use {16/9}, not '16/9')\",\n\t\t\t\"Forgetting that children must fill 100% width + height (add object-cover or similar)\",\n\t\t],\n\t\trelatedComponents: [\"card\", \"avatar\", \"skeleton\"],\n\t\taccessibilityNotes:\n\t\t\t\"AspectRatio is purely structural. Ensure inner <img> has alt text and inner <iframe> has a descriptive title.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"aspect-ratio\", \"layout\", \"image\", \"video\", \"ratio\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const containerSchema: ComponentSchemaDefinition = {\n\tname: \"container\",\n\tdisplayName: \"Container\",\n\tdescription:\n\t\t\"Centered max-width wrapper that constrains content to readable widths. Sizes map to `--container-*` prose-width tokens; padding maps to `--space-*`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"lg\",\n\t\t\tdescription:\n\t\t\t\t\"Max-width preset bound to `--container-*` tokens (sm=33rem, md=40rem, lg=50rem, xl=66rem, full=100%).\",\n\t\t\tenumValues: [\"sm\", \"md\", \"lg\", \"xl\", \"full\"],\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Horizontal padding bound to `--space-*` tokens (none=0, sm=0.75rem, md=1rem, lg=2rem).\",\n\t\t\tenumValues: [\"none\", \"sm\", \"md\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"asChild\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Render as a different element via Radix `Slot`. Use to render as `<main>`, `<section>`, etc. for landmark semantics.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Max-width preset bound to `--container-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"33rem (≈530px) — narrow column for short content.\" },\n\t\t\t\t{ value: \"md\", description: \"40rem (≈640px) — comfortable reading width.\" },\n\t\t\t\t{ value: \"lg\", description: \"50rem (≈800px) — default; standard article width.\" },\n\t\t\t\t{ value: \"xl\", description: \"66rem (≈1056px) — wider canvas for dashboards or marketing.\" },\n\t\t\t\t{ value: \"full\", description: \"100% — disable max-width clamp.\" },\n\t\t\t],\n\t\t\tdefault: \"lg\",\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\tdescription: \"Horizontal padding bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"none\", description: \"0 — flush to container edges.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.75rem — tight gutter.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard reading gutter.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — generous gutter for marketing pages.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Page content to constrain — typically a section, article, or grid.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"@radix-ui/react-slot\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\n\t\t\"--container-sm\",\n\t\t\"--container-md\",\n\t\t\"--container-lg\",\n\t\t\"--container-xl\",\n\t\t\"--space-3\",\n\t\t\"--space-4\",\n\t\t\"--space-8\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Reading-width article\",\n\t\t\tdescription: \"lg size (50rem) + md padding for an article body.\",\n\t\t\tcode: '<Container size=\"lg\" padding=\"md\">\\n <article>...</article>\\n</Container>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Full-width hero\",\n\t\t\tdescription: \"Use size=full when you want the section to span the viewport.\",\n\t\t\tcode: '<Container size=\"full\" padding=\"none\">\\n <Hero />\\n</Container>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to constrain page content to readable widths. Pair with `Stack` or `Grid` inside for vertical/grid layouts. Default for any centered article, settings page, or marketing section.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use inside another `Container` (double-clamping). Don't use as a drop-in for `<main>` semantics — it's a layout primitive, not a landmark. For full-bleed sections (edge-to-edge banners), pass `size=\\\"full\\\" padding=\\\"none\\\"`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Wrapping a `Container` in another `Container` and getting an unexpectedly narrow column\",\n\t\t\t\"Using `padding=\\\"none\\\"` and forgetting that children still need their own gutter — the parent contributes nothing\",\n\t\t\t\"Treating `lg` as the largest size — `xl` (66rem) and `full` are bigger\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"cluster\"],\n\t\taccessibilityNotes:\n\t\t\t\"Container is presentational. Wrap in a semantic landmark (`<main>`, `<section>`, `<article>`) when the page structure needs it; Container itself renders a plain `<div>`.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"container\", \"layout\", \"wrapper\", \"max-width\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const stackSchema: ComponentSchemaDefinition = {\n\tname: \"stack\",\n\tdisplayName: \"Stack\",\n\tdescription:\n\t\t\"Vertical flex flow with token-bound gap. The headless equivalent of `<div className=\\\"flex flex-col gap-X\\\">` with consistent spacing scale.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Vertical spacing between children, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Vertical gap between children, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grouping.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — section-level spacing.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Children align to left edge.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Children align to right edge.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — children fill container width.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — children pack to top.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Children pack to bottom.\" },\n\t\t\t\t{ value: \"between\", description: \"First child to top, last to bottom, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to stack vertically.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Form sections\",\n\t\t\tdescription: \"Lg gap separates labelled groups; nested Stack with sm gap groups label+input.\",\n\t\t\tcode: '<Stack gap=\"lg\">\\n <Stack gap=\"sm\"><Label>Email</Label><Input /></Stack>\\n <Stack gap=\"sm\"><Label>Password</Label><Input type=\"password\" /></Stack>\\n <Button>Submit</Button>\\n</Stack>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Centered hero\",\n\t\t\tdescription: \"Center children horizontally for a centered call-to-action stack.\",\n\t\t\tcode: '<Stack gap=\"md\" align=\"center\">\\n <h1>Title</h1>\\n <p>Subtitle</p>\\n <Button>Get started</Button>\\n</Stack>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use anywhere you'd write `flex flex-col gap-X`. Default for vertical lists of dissimilar items (label + input + helper text), section bodies, sidebar items, button groups stacked vertically.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for tabular data — use `<table>` or DataTable. Don't use for grid-like layouts — use `Grid`. Don't reach for `Stack` when a single child needs no spacing — just render the child.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `gap=\\\"md\\\"` then adding `mt-*` / `space-y-*` on individual children — pick one spacing system\",\n\t\t\t\"Using `align=\\\"center\\\"` and wondering why children expand to full width — that's the `stretch` default for cross-axis\",\n\t\t\t\"Nesting Stack inside Stack with the same gap when one Stack with two children would suffice\",\n\t\t],\n\t\trelatedComponents: [\"cluster\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Stack is presentational. Wrap stacked navigation links in a `<nav>`, stacked form fields in a `<form>`, etc. — Stack does not contribute landmark semantics.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"stack\", \"layout\", \"flex\", \"column\", \"vertical\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const clusterSchema: ComponentSchemaDefinition = {\n\tname: \"cluster\",\n\tdisplayName: \"Cluster\",\n\tdescription:\n\t\t\"Horizontal flex flow with wrap and token-bound gap. Use for tag lists, button rows, breadcrumbs, and any group of equally-weighted inline items.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Gap between items, bound to `--gap-*` tokens. Applies to both row and column gaps when wrapping.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"center\",\n\t\t\tdescription:\n\t\t\t\t\"Cross-axis alignment (CSS `align-items`). `baseline` aligns text-baselines for mixed-size siblings; `stretch` makes items fill row height (useful for wrap-card layouts).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\", \"baseline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between items, bound to `--gap-*` tokens (applies to row + column gaps when wrapping).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight chip group.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — section-scale spacing.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Items align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Default — items center vertically in the row.\" },\n\t\t\t\t{ value: \"end\", description: \"Items align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Items fill row height — use for wrap layouts of equal-height cards.\" },\n\t\t\t\t{ value: \"baseline\", description: \"Text-baselines align across mixed-size siblings.\" },\n\t\t\t],\n\t\t\tdefault: \"center\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — items pack to start of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Items center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Items pack to end of row.\" },\n\t\t\t\t{ value: \"between\", description: \"First item flush left, last flush right, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to lay out horizontally with wrap.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Tag chips\",\n\t\t\tdescription: \"Small gap, wraps when overflowing the row.\",\n\t\t\tcode: '<Cluster gap=\"sm\">\\n {tags.map((t) => <Badge key={t}>{t}</Badge>)}\\n</Cluster>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Action bar\",\n\t\t\tdescription: \"Right-aligned buttons inside a panel footer.\",\n\t\t\tcode: '<Cluster gap=\"sm\" justify=\"end\">\\n <Button variant=\"ghost\">Cancel</Button>\\n <Button>Save</Button>\\n</Cluster>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any horizontal row of items that should wrap when space runs out: tag clouds, breadcrumbs, button rows, social-link icon strips, inline metadata badges. Pick `Cluster` over `flex` when you want predictable wrap + gap behavior.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for two-element rows where you need precise positional control (left/right) — use `Stack` rotated or a flex with `justify-between` directly. Don't use for grid-aligned layouts where columns must line up across rows — use `Grid`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting that `Cluster` wraps — adding `flex-nowrap` defeats the purpose; if you don't want wrap, use a flex row or `Stack` rotated\",\n\t\t\t\"Setting `align=\\\"baseline\\\"` for icon+text rows where the icon's bbox doesn't have a baseline — use `center` instead\",\n\t\t\t\"Reaching for `Cluster` for tabular alignment — use `Grid` or a real `<table>` when columns must line up\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Cluster is presentational. Lists of navigational items should be wrapped in `<nav>` (and ideally `<ul>` / `<li>`). Lists of tags can use a list element for screen-reader semantics; the visual wrap is independent.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"cluster\", \"layout\", \"flex\", \"wrap\", \"horizontal\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const gridSchema: ComponentSchemaDefinition = {\n\tname: \"grid\",\n\tdisplayName: \"Grid\",\n\tdescription:\n\t\t\"CSS grid with column-count presets and token-bound gap. Pass `cols=\\\"auto-fit\\\"` + `minColWidth` for responsive grids without media queries.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"3\",\n\t\t\tdescription:\n\t\t\t\t\"Number of fixed columns, or `\\\"auto-fit\\\"` for responsive tracks (use with `minColWidth`).\",\n\t\t\tenumValues: [\"1\", \"2\", \"3\", \"4\", \"6\", \"auto-fit\"],\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"minColWidth\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"16rem\",\n\t\t\tdescription:\n\t\t\t\t\"Min track size for `cols=\\\"auto-fit\\\"` (e.g. `\\\"20rem\\\"`). Ignored when `cols` is a fixed integer.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\tdescription: \"Column count or `auto-fit` mode.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"1\", description: \"Single column — items stack vertically inside the grid.\" },\n\t\t\t\t{ value: \"2\", description: \"Two even columns.\" },\n\t\t\t\t{ value: \"3\", description: \"Default — three even columns.\" },\n\t\t\t\t{ value: \"4\", description: \"Four even columns.\" },\n\t\t\t\t{ value: \"6\", description: \"Six even columns — dense layouts.\" },\n\t\t\t\t{ value: \"auto-fit\", description: \"Tracks repeat to fill width, never below `minColWidth`.\" },\n\t\t\t],\n\t\t\tdefault: \"3\",\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — minimal separation.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grid.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation between cards.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Cells align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Cells center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Cells align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — cells fill row height.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Grid cells — typically Cards, images, or any uniform block.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-column card grid\",\n\t\t\tdescription: \"Fixed 3 columns with medium gap.\",\n\t\t\tcode: '<Grid cols={3} gap=\"md\">\\n {items.map((i) => <Card key={i.id}>{i.title}</Card>)}\\n</Grid>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Responsive auto-fit\",\n\t\t\tdescription: \"Tracks fit as many 20rem columns as the viewport allows; no media queries needed.\",\n\t\t\tcode: '<Grid cols=\"auto-fit\" minColWidth=\"20rem\" gap=\"lg\">\\n {items.map(...)}\\n</Grid>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for visually-aligned grids of similar items: card galleries, image walls, dashboard tiles, settings panels. Prefer `cols=\\\"auto-fit\\\"` + `minColWidth` over hand-written breakpoints when the column count should adapt to viewport width.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for one-dimensional flows — use `Stack` (vertical) or `Cluster` (horizontal). Don't use for tabular data — use `<table>` or DataTable. Don't fight `Grid` to make uneven columns; if cells need different sizes, use a flexbox layout or a CSS grid with named tracks directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `cols={5}` and getting nothing — the preset only supports 1/2/3/4/6 (deliberate, to avoid odd visual rhythms); use `cols=\\\"auto-fit\\\"` for arbitrary counts\",\n\t\t\t\"Passing `cols=\\\"auto-fit\\\"` without `minColWidth` — the default `16rem` may not match your design intent\",\n\t\t\t\"Using `Grid` for two children when `Cluster` or `Stack` would communicate intent better\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"container\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"Grid is presentational. If the grid renders a list of similar items, wrap in `<ul>`/`<li>` for screen-reader semantics — Grid only handles visual layout.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"grid\", \"layout\", \"css-grid\", \"responsive\", \"auto-fit\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const spacerSchema: ComponentSchemaDefinition = {\n\tname: \"spacer\",\n\tdisplayName: \"Spacer\",\n\tdescription:\n\t\t\"Declarative whitespace block bound to `--space-*` tokens. Use when sibling spacing can't come from a parent's `gap`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Spacing token (xs=0.25rem, sm=0.5rem, md=1rem, lg=2rem, xl=4rem). Bound to `--space-*`.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"vertical\",\n\t\t\tdescription: \"Which axis to expand. Vertical = height; horizontal = width; both = square.\",\n\t\t\tenumValues: [\"vertical\", \"horizontal\", \"both\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Spacer extent bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — micro-gap.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight separation.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard breathing room.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — section-scale separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"4rem — major separation between hero areas.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\tdescription: \"Which axis the spacer extends along.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"vertical\", description: \"Default — fixed height, 1px width.\" },\n\t\t\t\t{ value: \"horizontal\", description: \"Fixed width, 1px height — for flex rows.\" },\n\t\t\t\t{ value: \"both\", description: \"Square block — rare; usually pick one axis.\" },\n\t\t\t],\n\t\t\tdefault: \"vertical\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--space-1\", \"--space-2\", \"--space-4\", \"--space-8\", \"--space-16\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Vertical breathing room\",\n\t\t\tdescription: \"Push two sections apart inside a parent that doesn't manage gap.\",\n\t\t\tcode: '<>\\n <Hero />\\n <Spacer size=\"xl\" />\\n <Features />\\n</>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Horizontal flex spacer\",\n\t\t\tdescription: \"Push siblings to opposite ends of a flex row.\",\n\t\t\tcode: '<div className=\"flex items-center\">\\n <Logo />\\n <Spacer axis=\"horizontal\" size=\"lg\" />\\n <Nav />\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use as an explicit whitespace primitive when you can't (or don't want to) use `gap` on the parent — typically: pushing siblings apart inside a flex row that already has gap-0, or inserting one-off vertical breathing room between top-level sections that aren't wrapped in a Stack.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use Spacer when a `Stack` or `Cluster` parent's `gap` would do the same thing — that scales better and keeps the spacing concern with the layout primitive. Don't use Spacer to flush content to one edge of a flex container — use `ml-auto` / `justify-between` directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using `<Spacer />` between every child in a Stack — just set the Stack's `gap` instead\",\n\t\t\t\"Using `axis=\\\"both\\\"` and getting a square block where you wanted a line — `both` is rare, usually you want vertical or horizontal\",\n\t\t\t\"Setting size=\\\"lg\\\" on a horizontal spacer and getting nothing visible because the parent isn't a flex row — Spacer reserves space, it doesn't push siblings on its own\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Spacer is `aria-hidden=\\\"true\\\"` — screen readers skip it. Don't use a Spacer where a `Separator` would convey meaning (a thematic break should be `Separator`, not `Spacer`).\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"spacer\", \"layout\", \"whitespace\", \"spacing\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const collapsibleSchema: ComponentSchemaDefinition = {\n\tname: \"collapsible\",\n\tdisplayName: \"Collapsible\",\n\tdescription: \"A single section that can be expanded or collapsed. For multiple independent sections use Accordion with type='multiple'.\",\n\tcategory: \"component\",\n\tsubcategory: \"disclosure\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change: (open: boolean) => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable toggling\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"CollapsibleTrigger + CollapsibleContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Show more\",\n\t\t\tdescription: \"Expand additional content below a preview\",\n\t\t\tcode: '<Collapsible>\\n <div>Yesterday at 9:00 AM</div>\\n <CollapsibleTrigger asChild>\\n <Button variant=\"ghost\" size=\"sm\">Toggle</Button>\\n </CollapsibleTrigger>\\n <CollapsibleContent>\\n <div>Additional details here</div>\\n </CollapsibleContent>\\n</Collapsible>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a single show-more/show-less section: 'View full details', 'Advanced settings', preview cards with expandable notes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for multiple related sections (use Accordion). Don't use for overlays (use Dialog/Popover). Don't use for navigation (use DropdownMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Collapsible for multiple sections instead of Accordion\",\n\t\t\t\"Missing asChild when passing a Button as trigger\",\n\t\t\t\"Not animating content height (Radix exposes --radix-collapsible-content-height for CSS keyframes)\",\n\t\t],\n\t\trelatedComponents: [\"accordion\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets aria-expanded on the trigger and aria-controls → content id. Trigger is keyboard-operable (Enter/Space).\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"collapsible\", \"disclosure\", \"expand\", \"show-more\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const hoverCardSchema: ComponentSchemaDefinition = {\n\tname: \"hover-card\",\n\tdisplayName: \"Hover Card\",\n\tdescription: \"Rich floating content revealed on hover or focus. Use when Tooltip is too small and Popover requires a click.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"openDelay\", type: \"number\", required: false, default: 700, description: \"Milliseconds before the card appears\" },\n\t\t{ name: \"closeDelay\", type: \"number\", required: false, default: 300, description: \"Milliseconds before the card closes after leaving\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"HoverCardTrigger + HoverCardContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-hover-card\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"User profile preview\",\n\t\t\tdescription: \"Username link that expands into a mini profile on hover\",\n\t\t\tcode: '<HoverCard>\\n <HoverCardTrigger asChild>\\n <a href=\"#\">@shadcn</a>\\n </HoverCardTrigger>\\n <HoverCardContent>\\n <div className=\"flex gap-3\">\\n <Avatar><AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" /><AvatarFallback>CN</AvatarFallback></Avatar>\\n <div>\\n <h4 className=\"font-semibold\">@shadcn</h4>\\n <p className=\"text-xs text-muted-foreground\">Builds UI components</p>\\n </div>\\n </div>\\n </HoverCardContent>\\n</HoverCard>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for rich hover previews: user profile cards, link previews, inline references. Contains multiple elements — more than a tooltip can hold.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for simple hover labels (use Tooltip). Don't use for click-triggered content (use Popover). Don't use as primary info on touch devices — hover doesn't exist there.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using HoverCard for critical info (invisible on touch)\",\n\t\t\t\"Too-short openDelay causes flicker on mouse-over traffic\",\n\t\t\t\"Omitting asChild on HoverCardTrigger with a custom element\",\n\t\t],\n\t\trelatedComponents: [\"tooltip\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix opens on hover and keyboard focus. Content must be meaningful on focus as well as hover. Consider an alternative for touch users.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"hover-card\", \"preview\", \"overlay\", \"rich-tooltip\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const contextMenuSchema: ComponentSchemaDefinition = {\n\tname: \"context-menu\",\n\tdisplayName: \"Context Menu\",\n\tdescription: \"Right-click (or long-press on touch) menu anchored to the trigger region. Same item vocabulary as DropdownMenu.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"modal\", type: \"boolean\", required: false, default: true, description: \"When true, interaction outside is blocked\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"ContextMenuTrigger + ContextMenuContent. Content accepts ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioGroup/ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, and ContextMenuShortcut.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-context-menu\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-click menu\",\n\t\t\tdescription: \"Right-click the trigger region for actions\",\n\t\t\tcode: '<ContextMenu>\\n <ContextMenuTrigger className=\"flex h-40 items-center justify-center rounded-md border border-dashed\">Right-click here</ContextMenuTrigger>\\n <ContextMenuContent>\\n <ContextMenuItem>Back</ContextMenuItem>\\n <ContextMenuItem disabled>Forward</ContextMenuItem>\\n <ContextMenuSeparator />\\n <ContextMenuItem>Reload<ContextMenuShortcut>\\u2318R</ContextMenuShortcut></ContextMenuItem>\\n </ContextMenuContent>\\n</ContextMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for right-click menus on a specific region: file-manager-style actions, canvas/editor context actions, row-level actions in tables.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for actions triggered by a button (use DropdownMenu). Don't use as the only way to access an action — must have a keyboard/button alternative.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using ContextMenu as the only affordance (unreachable on touch)\",\n\t\t\t\"Triggering on the whole document (put it on a specific region)\",\n\t\t\t\"Missing a keyboard alternative for items\",\n\t\t],\n\t\trelatedComponents: [\"dropdown-menu\", \"menubar\"],\n\t\taccessibilityNotes:\n\t\t\t\"Triggered via right-click or Shift+F10 on keyboard. Radix handles role='menu', aria-labelledby, focus management.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"context-menu\", \"right-click\", \"menu\", \"actions\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const menubarSchema: ComponentSchemaDefinition = {\n\tname: \"menubar\",\n\tdisplayName: \"Menubar\",\n\tdescription: \"Desktop-app style menu bar (File / Edit / View). Horizontal menu strip with nested dropdowns.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled open menu id\" },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default open menu for uncontrolled usage\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when open menu changes\" },\n\t\t{ name: \"loop\", type: \"boolean\", required: false, default: true, description: \"When true, arrow-key navigation wraps\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the Menubar root\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"MenubarMenu elements (each containing MenubarTrigger + MenubarContent)\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-menubar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"File / Edit bar\",\n\t\t\tdescription: \"Two-menu bar with keyboard shortcuts\",\n\t\t\tcode: '<Menubar>\\n <MenubarMenu>\\n <MenubarTrigger>File</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>New Tab<MenubarShortcut>\\u2318T</MenubarShortcut></MenubarItem>\\n <MenubarItem>New Window<MenubarShortcut>\\u2318N</MenubarShortcut></MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Share</MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Print\\u2026<MenubarShortcut>\\u2318P</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n <MenubarMenu>\\n <MenubarTrigger>Edit</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>Undo<MenubarShortcut>\\u2318Z</MenubarShortcut></MenubarItem>\\n <MenubarItem>Redo<MenubarShortcut>\\u21E7\\u2318Z</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n</Menubar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for desktop-app shell menus: editors, IDEs, creative tools. Provides persistent menu bar with keyboard shortcuts.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for website navigation (use NavigationMenu). Don't use for single-button menus (use DropdownMenu). Poor fit for mobile — consider a hamburger menu.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using for website navigation (user expectations don't match)\",\n\t\t\t\"Missing shortcuts (expected affordance in menubar UX)\",\n\t\t\t\"Deeply nested sub-menus (>2 levels feels labyrinthine)\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full WAI-ARIA menubar pattern: arrow keys navigate menus, Enter/Space opens, Escape closes. Radix handles roles and state.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"menubar\", \"menu\", \"desktop\", \"app-shell\", \"navigation\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const navigationMenuSchema: ComponentSchemaDefinition = {\n\tname: \"navigation-menu\",\n\tdisplayName: \"Navigation Menu\",\n\tdescription: \"Website-style mega-menu with hover-triggered content panels. Used for marketing/site navigation headers.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled active menu value\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when active menu changes\" },\n\t\t{ name: \"delayDuration\", type: \"number\", required: false, default: 200, description: \"Delay before opening a menu on hover (ms)\" },\n\t\t{ name: \"orientation\", type: \"enum\", required: false, default: \"horizontal\", description: \"Layout direction\", enumValues: [\"horizontal\", \"vertical\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"NavigationMenuList containing NavigationMenuItem elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-navigation-menu\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"accent\", \"accent-foreground\", \"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Simple nav\",\n\t\t\tdescription: \"Top-level link + mega-menu trigger\",\n\t\t\tcode: '<NavigationMenu>\\n <NavigationMenuList>\\n <NavigationMenuItem>\\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\\n <NavigationMenuContent>\\n <ul className=\"grid w-[400px] gap-3 p-4\">\\n <li><NavigationMenuLink href=\"/docs\">Docs</NavigationMenuLink></li>\\n <li><NavigationMenuLink href=\"/pricing\">Pricing</NavigationMenuLink></li>\\n </ul>\\n </NavigationMenuContent>\\n </NavigationMenuItem>\\n <NavigationMenuItem>\\n <NavigationMenuLink className={navigationMenuTriggerStyle()} href=\"/about\">About</NavigationMenuLink>\\n </NavigationMenuItem>\\n </NavigationMenuList>\\n</NavigationMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for marketing-site top nav with grouped links and mega-menus: Products, Resources, Pricing flyouts. Desktop-first but keyboard accessible.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for app shell menus (use Menubar). Don't use for single dropdowns (use DropdownMenu). On mobile, pair with a separate hamburger/Drawer pattern — NavigationMenu collapses poorly on small screens.\",\n\t\tcommonMistakes: [\n\t\t\t\"Mixing regular <a> with NavigationMenuLink — must use NavigationMenuLink for keyboard/roving focus\",\n\t\t\t\"Forgetting the viewport — handled automatically when using the composed NavigationMenu root\",\n\t\t\t\"Too many top-level items overflow on mobile\",\n\t\t],\n\t\trelatedComponents: [\"menubar\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA menu-button pattern with hover-intent delays and focus trapping in content. Links inside NavigationMenuLink get roving tabindex.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"navigation-menu\", \"mega-menu\", \"nav\", \"header\", \"site\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const breadcrumbSchema: ComponentSchemaDefinition = {\n\tname: \"breadcrumb\",\n\tdisplayName: \"Breadcrumb\",\n\tdescription: \"A path trail showing the user's location within a hierarchy, with links back to ancestors and a non-interactive current page.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the nav element\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"BreadcrumbList containing BreadcrumbItem + BreadcrumbSeparator elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-level path\",\n\t\t\tdescription: \"Home / Components / Breadcrumb\",\n\t\t\tcode: '<Breadcrumb>\\n <BreadcrumbList>\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/docs/components\">Components</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n </BreadcrumbItem>\\n </BreadcrumbList>\\n</Breadcrumb>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to show location within a hierarchical site or app: docs pages, product categories, nested settings. Include the current page as a non-link BreadcrumbPage.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for primary navigation (use NavigationMenu). Don't use for flat sites without hierarchy. Don't use when the hierarchy is too deep to display — truncate with BreadcrumbEllipsis.\",\n\t\tcommonMistakes: [\n\t\t\t\"Making the current page a link (use BreadcrumbPage)\",\n\t\t\t\"Showing just one item (defeats the purpose)\",\n\t\t\t\"Using plain text separators without aria-hidden\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root <nav aria-label='breadcrumb'> creates a landmark. BreadcrumbPage has aria-current='page'. Separators are aria-hidden (decorative). BreadcrumbEllipsis is decorative (SVG aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"breadcrumb\", \"navigation\", \"path\", \"trail\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const alertSchema: ComponentSchemaDefinition = {\n\tname: \"alert\",\n\tdisplayName: \"Alert\",\n\tdescription: \"An inline notification banner for important messages. Supports default and destructive variants with optional leading icon.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"destructive\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Alert style\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Neutral inline notification\" },\n\t\t\t\t{ value: \"destructive\", description: \"Error or warning with red accent + tinted background\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Optional icon SVG + AlertTitle + AlertDescription\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"destructive\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Info alert\",\n\t\t\tdescription: \"Default alert with title and description\",\n\t\t\tcode: '<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>You can add components to your app via the CLI.</AlertDescription>\\n</Alert>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Destructive alert\",\n\t\t\tdescription: \"Error alert\",\n\t\t\tcode: '<Alert variant=\"destructive\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>Your session has expired. Please sign in again.</AlertDescription>\\n</Alert>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline, persistent messages that contextualize a page or section: info banners, warning about deprecated features, error summaries above forms.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for transient messages (use Toast/Sonner). Don't use for modal confirmations (use AlertDialog). Don't use as the only way to communicate a critical error — pair with field-level feedback.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using destructive for non-error messages\",\n\t\t\t\"Missing AlertTitle (reduces scannability)\",\n\t\t\t\"Stacking multiple Alerts on the same page instead of grouping\",\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root renders role='alert' so screen readers announce it. For non-urgent info banners consider role='status' or aria-live='polite' via className overrides.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"alert\", \"notification\", \"banner\", \"info\", \"warning\", \"error\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sonnerSchema: ComponentSchemaDefinition = {\n\tname: \"sonner\",\n\tdisplayName: \"Sonner (Toast)\",\n\tdescription: \"Ephemeral toast notifications via Sonner. Render <Toaster /> once at app root, then call toast() anywhere.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"position\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"bottom-right\",\n\t\t\tdescription: \"Where toasts appear on screen\",\n\t\t\tenumValues: [\n\t\t\t\t\"top-left\",\n\t\t\t\t\"top-center\",\n\t\t\t\t\"top-right\",\n\t\t\t\t\"bottom-left\",\n\t\t\t\t\"bottom-center\",\n\t\t\t\t\"bottom-right\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: \"richColors\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Enable success/error/warning color variants via toast.success/error/warning\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeButton\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Show a close button on each toast\",\n\t\t},\n\t\t{\n\t\t\tname: \"theme\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"system\",\n\t\t\tdescription: \"Visual theme\",\n\t\t\tenumValues: [\"light\", \"dark\", \"system\"],\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"sonner\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"muted\", \"muted-foreground\", \"primary\", \"primary-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App setup + fire toast\",\n\t\t\tdescription: \"Render Toaster once, call toast() anywhere\",\n\t\t\tcode: '// In your root layout:\\n<Toaster />\\n\\n// Anywhere in your app:\\nimport { toast } from \"@/components/ui/sonner\";\\n\\n<Button onClick={() => toast(\"Event created\", { description: \"Friday, Dec 11 at 10:00 AM\" })}>\\n Show toast\\n</Button>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for transient feedback: save confirmations, error messages, background task completion. Pairs well with mutation handlers (onSuccess/onError).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for persistent info (use Alert). Don't use for destructive confirmations (use AlertDialog). Don't use for critical errors that block user workflow.\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering multiple <Toaster /> components (one is enough)\",\n\t\t\t\"Calling toast() during server rendering (must be client-side)\",\n\t\t\t\"Using toast for messages the user needs to re-read (they auto-dismiss)\",\n\t\t],\n\t\trelatedComponents: [\"alert\", \"alert-dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sonner handles aria-live='polite' on the toast region so screen readers announce new toasts. Critical messages should still use Alert/AlertDialog for persistent visibility.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"toast\", \"sonner\", \"notification\", \"transient\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tableSchema: ComponentSchemaDefinition = {\n\tname: \"table\",\n\tdisplayName: \"Table\",\n\tdescription: \"Styled HTML table primitives (Table / TableHeader / TableBody / TableRow / TableHead / TableCell / TableCaption / TableFooter). Low-level building blocks — use DataTable for sorting/filtering/pagination.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <table>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"TableHeader + TableBody + TableFooter + TableCaption. Use TableRow/TableHead/TableCell inside.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic table\",\n\t\t\tdescription: \"Three-column styled table with header + rows\",\n\t\t\tcode: '<Table>\\n <TableCaption>A list of your recent invoices.</TableCaption>\\n <TableHeader>\\n <TableRow>\\n <TableHead>Invoice</TableHead>\\n <TableHead>Status</TableHead>\\n <TableHead className=\"text-right\">Amount</TableHead>\\n </TableRow>\\n </TableHeader>\\n <TableBody>\\n <TableRow>\\n <TableCell className=\"font-medium\">INV001</TableCell>\\n <TableCell>Paid</TableCell>\\n <TableCell className=\"text-right\">$250.00</TableCell>\\n </TableRow>\\n </TableBody>\\n</Table>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for simple tabular data where you render rows manually: invoice lists, pricing rows, settings tables. Responsive container wraps the <table> to allow horizontal scroll on small screens.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for large datasets that need sorting/filtering/pagination (use DataTable). Don't use for layout (use CSS grid/flex). Don't use for <form> field arrays (use native fields).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using <div> grids instead of a real <table> for tabular data (breaks a11y)\",\n\t\t\t\"Putting interactive controls in headers without keyboard semantics\",\n\t\t\t\"Missing TableCaption when the table has no other label\",\n\t\t],\n\t\trelatedComponents: [\"data-table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Semantic <table> / <thead> / <tbody> is used, so screen readers announce rows/columns. Include a TableCaption or aria-label. Mark column sort buttons with aria-sort.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"table\", \"data\", \"rows\", \"tabular\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dataTableSchema: ComponentSchemaDefinition = {\n\tname: \"data-table\",\n\tdisplayName: \"Data Table\",\n\tdescription: \"Generic data-driven table built on TanStack Table + Hex UI Table primitives. Pass columns + data; add sorting/filtering/pagination via TanStack hooks.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"columns\", type: \"object\", required: true, description: \"ColumnDef<TData, TValue>[] from @tanstack/react-table\" },\n\t\t{ name: \"data\", type: \"object\", required: true, description: \"Array of row data\" },\n\t\t{\n\t\t\tname: \"caption\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Visible caption rendered below the table; announced by screen readers when entering the table\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label forwarded as aria-label on the underlying <table>; use when no visible caption is shown\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@tanstack/react-table\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"components/table/table\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic data table\",\n\t\t\tdescription: \"Three-column table rendered from TanStack column defs\",\n\t\t\tcode: 'import type { ColumnDef } from \"@tanstack/react-table\";\\nimport { DataTable } from \"@/components/ui/data-table\";\\n\\ntype Payment = { id: string; amount: number; status: \"pending\" | \"paid\" | \"failed\"; email: string };\\n\\nconst columns: ColumnDef<Payment>[] = [\\n { accessorKey: \"status\", header: \"Status\" },\\n { accessorKey: \"email\", header: \"Email\" },\\n { accessorKey: \"amount\", header: \"Amount\" },\\n];\\n\\nconst data: Payment[] = [\\n { id: \"1\", amount: 100, status: \"paid\", email: \"a@x.com\" },\\n { id: \"2\", amount: 250, status: \"pending\", email: \"b@x.com\" },\\n];\\n\\nexport function Example() {\\n return <DataTable columns={columns} data={data} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for tabular data that needs sorting, filtering, pagination, or row selection. Define columns once, feed data — TanStack handles the row model. Add more features incrementally (getSortedRowModel, getFilteredRowModel, getPaginationRowModel).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for static/simple tables (use Table primitives directly). Don't use for virtualized very-large lists (use TanStack Virtual). Don't use for grid layouts (use CSS grid). DataTable is a Client Component (uses useReactTable hook) — fetch data in a Server Component and pass it as props.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting getCoreRowModel() (table renders nothing)\",\n\t\t\t\"Recreating columns array on every render (breaks memoization — wrap in useMemo or define outside the component)\",\n\t\t\t\"Using accessorKey with nested paths without accessorFn\",\n\t\t\t\"Not adding filter/sort row models when those features are needed\",\n\t\t\t\"Shipping a table without `caption` or `aria-label` — the table is unlabelled to assistive tech\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Pass either `caption` (visible) or `aria-label` so screen readers announce the table when the user enters it. Add aria-sort to sortable column headers. Announce filter/sort changes via aria-live for dynamic updates.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"data-table\", \"tanstack\", \"sortable\", \"filterable\", \"paginated\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const paginationSchema: ComponentSchemaDefinition = {\n\tname: \"pagination\",\n\tdisplayName: \"Pagination\",\n\tdescription: \"Composable pagination controls (Pagination / PaginationContent / PaginationItem / PaginationLink / PaginationPrevious / PaginationNext / PaginationEllipsis). Link-based by default — pair with client-side navigation or server params.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <nav>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"PaginationContent containing PaginationItem elements (PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"primitives/button/button\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"input\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic pagination\",\n\t\t\tdescription: \"Previous + 3 pages + ellipsis + Next with current page marked\",\n\t\t\tcode: '<Pagination>\\n <PaginationContent>\\n <PaginationItem>\\n <PaginationPrevious href=\"#\" />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">1</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\" isActive>2</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">3</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationEllipsis />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationNext href=\"#\" />\\n </PaginationItem>\\n </PaginationContent>\\n</Pagination>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for navigating between pages of a paginated dataset: blog lists, search results, table rows. Use PaginationEllipsis to truncate long ranges.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for infinite scroll (use IntersectionObserver). Don't use for step-by-step wizards (use a stepper). Don't use for fewer than ~3 pages (just show all the items).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using PaginationLink without href (anchor is not keyboard-reachable)\",\n\t\t\t\"Forgetting isActive on the current page (no visual or aria-current feedback)\",\n\t\t\t\"Showing every page number on long ranges — use PaginationEllipsis to truncate\",\n\t\t\t\"Using onClick-only <button> instead of PaginationLink — loses right-click-open-new-tab affordance; prefer href + Next.js Link when client-side routing is needed\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"data-table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root is role='navigation' aria-label='pagination'. Active link gets aria-current='page'. Previous/Next have aria-label. Ellipsis is decorative (aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"pagination\", \"pages\", \"navigation\", \"list\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const calendarSchema: ComponentSchemaDefinition = {\n\tname: \"calendar\",\n\tdisplayName: \"Calendar\",\n\tdescription:\n\t\t\"Date grid built on react-day-picker v9. Supports single, multiple, and range selection modes. Keyboard navigable and localizable.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"mode\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"single\",\n\t\t\tdescription: \"Selection mode: 'single' | 'multiple' | 'range'\",\n\t\t},\n\t\t{\n\t\t\tname: \"selected\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected value (Date, Date[], or DateRange depending on mode)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when selection changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"DayPicker Matcher — accepts a Date, Date[], { from, to }, { before | after }, or a (date: Date) => boolean predicate\",\n\t\t},\n\t\t{\n\t\t\tname: \"showOutsideDays\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Render days from the previous/next month in the grid\",\n\t\t},\n\t\t{\n\t\t\tname: \"numberOfMonths\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"How many months to display side-by-side\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"The month to render first (uncontrolled). Date object.\",\n\t\t},\n\t\t{\n\t\t\tname: \"fromDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Earliest selectable date (Date). Days before are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"toDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Latest selectable date (Date). Days after are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"locale\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"date-fns Locale object (e.g. `import { es } from 'date-fns/locale'`) for weekday/month labels\",\n\t\t},\n\t\t{\n\t\t\tname: \"weekStartsOn\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"First day of the week (0 = Sunday, 1 = Monday, …, 6 = Saturday)\",\n\t\t},\n\t\t{\n\t\t\tname: \"classNames\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Per-part className overrides (merged with defaults)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"primary\", \"primary-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Single date selection\",\n\t\t\tdescription: \"Bind a Date state to selected/onSelect\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>(new Date());\\n return <Calendar mode=\"single\" selected={date} onSelect={setDate} className=\"rounded-md border\" />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Range selection\",\n\t\t\tdescription: \"Pick a start and end date\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport type { DateRange } from \"react-day-picker\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [range, setRange] = useState<DateRange | undefined>();\\n return <Calendar mode=\"range\" selected={range} onSelect={setRange} numberOfMonths={2} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline date selection UIs, or as the month-grid inside a DatePicker (wrapped in a Popover). Supports single date, multi-date, and range modes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when only a text date input is needed (use Input type=date). Don't embed inside a very narrow container — the grid needs ~280px min width. For scheduling UIs with time, combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to selected (must be a Date, Date[], or DateRange object)\",\n\t\t\t\"Forgetting mode prop (default is single, but being explicit avoids confusion)\",\n\t\t\t\"Overriding classNames completely instead of spreading — loses default styling\",\n\t\t\t\"Using inside a Server Component without marking the consumer 'use client'\",\n\t\t],\n\t\trelatedComponents: [\"date-picker\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"react-day-picker wires aria-label, aria-selected, and keyboard navigation (arrows, Home/End, PageUp/Down). Focus rings on day buttons use the ring token.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"calendar\", \"date\", \"date-picker\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const datePickerSchema: ComponentSchemaDefinition = {\n\tname: \"date-picker\",\n\tdisplayName: \"Date Picker\",\n\tdescription:\n\t\t\"Date input composed from Popover + Calendar. Shows the selected date formatted via date-fns, opens a calendar grid on click.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected Date\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user selects a date: (date: Date | undefined) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Pick a date\",\n\t\t\tdescription: \"Text shown on the trigger when no date is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"dateFormat\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"PPP\",\n\t\t\tdescription: \"date-fns format token for the trigger label (e.g. 'PPP', 'yyyy-MM-dd')\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the picker trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible <label> is used\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/calendar/calendar\", \"components/popover/popover\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"border\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic date picker\",\n\t\t\tdescription: \"Bind a Date state and render the picker\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { DatePicker } from \"@/components/ui/date-picker\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>();\\n return <DatePicker value={date} onChange={setDate} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for selecting a single date in a form. Shows a formatted text label and opens a month grid on click. Composes Popover + Calendar + button trigger.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for date ranges (compose Calendar mode='range' + Popover yourself). Don't use for native mobile date UX (<input type='date'> is often better on phones). Don't use if you need time selection — combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to value — must be a Date object\",\n\t\t\t\"Missing aria-label when the picker has no adjacent visible <label>\",\n\t\t\t\"Overriding className in a way that hurts focus ring visibility\",\n\t\t\t\"Forgetting that the popover auto-closes on select — provide onChange to capture the value\",\n\t\t],\n\t\trelatedComponents: [\"calendar\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger is a real <button> with focus ring. When rendered without a visible label, pass aria-label. The popover portals and traps keyboard focus inside Calendar until the user selects or presses Escape.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"date-picker\", \"date\", \"input\", \"popover\", \"calendar\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const inputOTPSchema: ComponentSchemaDefinition = {\n\tname: \"input-otp\",\n\tdisplayName: \"Input OTP\",\n\tdescription:\n\t\t\"One-time-password / verification-code entry built on the input-otp library. Renders N character slots with active/caret state and auto-advance on type.\",\n\tcategory: \"component\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"maxLength\",\n\t\t\ttype: \"number\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Total number of slots (typically 4–8 for OTPs)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled value — the current entered string\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired as the user types: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"onComplete\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called when all slots are filled (useful to auto-submit)\",\n\t\t},\n\t\t{\n\t\t\tname: \"pattern\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Regex to restrict input (use REGEXP_ONLY_DIGITS, REGEXP_ONLY_CHARS, or REGEXP_ONLY_DIGITS_AND_CHARS)\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the whole input\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"InputOTPGroup with InputOTPSlot index={0..maxLength-1}, optional InputOTPSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"input-otp\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"ring\", \"background\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"6-digit OTP with separator\",\n\t\t\tdescription: \"Two groups of 3 slots divided by a bullet\",\n\t\t\tcode: 'import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from \"@/components/ui/input-otp\";\\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\";\\n\\nexport function Example() {\\n return (\\n <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n <InputOTPGroup>\\n <InputOTPSlot index={0} />\\n <InputOTPSlot index={1} />\\n <InputOTPSlot index={2} />\\n </InputOTPGroup>\\n <InputOTPSeparator />\\n <InputOTPGroup>\\n <InputOTPSlot index={3} />\\n <InputOTPSlot index={4} />\\n <InputOTPSlot index={5} />\\n </InputOTPGroup>\\n </InputOTP>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for one-time password, email verification code, 2FA code, or any fixed-length code entry. Auto-advances on type, supports paste of the full code, and supports regex validation.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for variable-length codes (use a plain Input). Don't use for passwords (use Input type='password'). Don't use for open-ended short text — the slot UI implies a code.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to render maxLength slots — the underlying input's maxLength won't match the visible UI\",\n\t\t\t\"Using pattern without importing one of the REGEXP_ONLY_* constants from 'input-otp'\",\n\t\t\t\"Wrapping the whole thing in a <form> without a submit handler — onComplete is often a better auto-submit hook\",\n\t\t\t\"Overriding slot className in a way that removes the first/last border-radius rules\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"input-otp manages a single hidden <input> so screen readers hear one field of N characters. Each slot is a visual representation. The active slot gets a focus ring via the ring token.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"input-otp\", \"otp\", \"verification\", \"2fa\", \"code\", \"pin\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const commandSchema: ComponentSchemaDefinition = {\n\tname: \"command\",\n\tdisplayName: \"Command\",\n\tdescription:\n\t\t\"Composable command menu built on cmdk — search input + filtered list with keyboard navigation. Use as an inline palette or, wrapped in CommandDialog, as a ⌘K-style launcher.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"shouldFilter\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Built-in filtering. Set to false for fully-controlled filtering.\",\n\t\t},\n\t\t{\n\t\t\tname: \"filter\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Custom scoring function: (value, search, keywords?) => number (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active-item value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the highlighted item changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"loop\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Loop arrow-key navigation at the ends of the list\",\n\t\t},\n\t\t{\n\t\t\tname: \"label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label for the menu (not shown visually)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"CommandInput + CommandList with CommandEmpty, CommandGroup, CommandItem, CommandSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/dialog/dialog\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Command dialog launcher (⌘K)\",\n\t\t\tdescription: \"Toggle a command palette with keyboard shortcut\",\n\t\t\tcode: 'import { useEffect, useState } from \"react\";\\nimport { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"@/components/ui/command\";\\n\\nexport function Example() {\\n const [open, setOpen] = useState(false);\\n useEffect(() => {\\n const down = (e: KeyboardEvent) => {\\n if (e.key === \"k\" && (e.metaKey || e.ctrlKey)) {\\n e.preventDefault();\\n setOpen(v => !v);\\n }\\n };\\n document.addEventListener(\"keydown\", down);\\n return () => document.removeEventListener(\"keydown\", down);\\n }, []);\\n return (\\n <CommandDialog open={open} onOpenChange={setOpen}>\\n <CommandInput placeholder=\"Type a command or search…\" />\\n <CommandList>\\n <CommandEmpty>No results found.</CommandEmpty>\\n <CommandGroup heading=\"Suggestions\">\\n <CommandItem onSelect={() => setOpen(false)}>Profile</CommandItem>\\n <CommandItem onSelect={() => setOpen(false)}>Settings</CommandItem>\\n </CommandGroup>\\n </CommandList>\\n </CommandDialog>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for searchable menus, command palettes, ⌘K launchers, or as the list body of a Combobox. Built-in fuzzy filter + arrow-key nav + Enter-to-select.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for small static lists (use plain DropdownMenu). Don't use for large data tables (use DataTable). If you need a select input with a single bound value, Combobox is the higher-level wrapper.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting CommandList — items won't be scrollable or grouped properly\",\n\t\t\t\"Giving CommandItem non-unique values (breaks filtering and controlled state)\",\n\t\t\t\"Overriding CommandInput className to remove the border/padding — breaks the ⌘K icon layout\",\n\t\t\t\"Not rendering CommandEmpty — the list looks broken when a search has no matches\",\n\t\t\t\"Querying CommandSeparator via cmdk's internal Separator state — Hex UI renders it as a presentational div with role='none' (and the `data-cmdk-separator` attribute preserved for selector compatibility) so it can sit inside CommandList's role=listbox without violating ARIA\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"dialog\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"cmdk wires role=listbox/option and aria-activedescendant. Use the `label` prop on Command for a screen-reader-only name when no visible heading exists. CommandSeparator renders with role='none' (still selectable via `[data-cmdk-separator]`) so listbox-children rules are satisfied.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"command\", \"cmdk\", \"palette\", \"search\", \"launcher\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const comboboxSchema: ComponentSchemaDefinition = {\n\tname: \"combobox\",\n\tdisplayName: \"Combobox\",\n\tdescription:\n\t\t\"Searchable single-select input. Composes Popover + Command (cmdk) + a styled trigger. Pass a list of { value, label } options.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { value: string, label: string, disabled?: boolean }\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected option value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user picks an option: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Select…\",\n\t\t\tdescription: \"Text shown on the trigger when nothing is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"searchPlaceholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Search…\",\n\t\t\tdescription: \"Placeholder for the filter input\",\n\t\t},\n\t\t{\n\t\t\tname: \"emptyText\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"No results found.\",\n\t\t\tdescription: \"Shown inside the list when the search has no matches\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible label is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the combobox\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\n\t\t\t\"components/command/command\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Framework picker\",\n\t\t\tdescription: \"Searchable single-select with a small static list\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Combobox } from \"@/components/ui/combobox\";\\n\\nconst frameworks = [\\n { value: \"next\", label: \"Next.js\" },\\n { value: \"remix\", label: \"Remix\" },\\n { value: \"astro\", label: \"Astro\" },\\n { value: \"nuxt\", label: \"Nuxt\" },\\n];\\n\\nexport function Example() {\\n const [value, setValue] = useState<string>();\\n return <Combobox options={frameworks} value={value} onChange={setValue} placeholder=\"Pick a framework\" />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a select input when the list is >~8 items or users benefit from typing to narrow. Fuzzy search + keyboard nav + selected-item checkmark.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for native-select parity on mobile (use Select). Don't use for multi-select (this component is single-value — compose Command + Popover yourself for multi). Don't use for free-text entry (use Input).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing duplicate option values (breaks selection and filtering)\",\n\t\t\t\"Two options with identical labels — cmdk dedupes by the Item's filter value (the label here), so one will be dropped from the list\",\n\t\t\t\"Using the label as the value — fine if stable, but prefer a short stable `value` string\",\n\t\t\t\"Forgetting to bind value + onChange — uncontrolled mode doesn't exist on this wrapper\",\n\t\t\t\"Mixing translated labels without keying on value — label changes won't update selection\",\n\t\t\t\"Missing aria-label / aria-labelledby — role='combobox' does not allow name from contents, so without one of these the trigger has no accessible name\",\n\t\t],\n\t\trelatedComponents: [\"command\", \"popover\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger has role='combobox' + aria-expanded + aria-haspopup='listbox'. aria-controls points at the inner CommandList (a useId-stabilized listbox). Pass aria-label or aria-labelledby — combobox does not derive its name from contents.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"combobox\", \"select\", \"search\", \"cmdk\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sheetSchema: ComponentSchemaDefinition = {\n\tname: \"sheet\",\n\tdisplayName: \"Sheet\",\n\tdescription:\n\t\t\"Side drawer built on Radix Dialog with a directional slide animation. Use for navigation, filters, quick edit, or any off-canvas panel.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, content outside the sheet is inert\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sheet slides in from\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"top\", description: \"Slides down from the top edge\" },\n\t\t\t\t{ value: \"bottom\", description: \"Slides up from the bottom edge\" },\n\t\t\t\t{ value: \"left\", description: \"Slides in from the left edge\" },\n\t\t\t\t{ value: \"right\", description: \"Slides in from the right edge (default)\" },\n\t\t\t],\n\t\t\tdefault: \"right\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SheetTrigger + SheetContent (with SheetHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dialog\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted-foreground\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-side sheet\",\n\t\t\tdescription: \"Quick edit panel anchored to the right edge\",\n\t\t\tcode: '<Sheet>\\n <SheetTrigger asChild>\\n <Button variant=\"outline\">Open</Button>\\n </SheetTrigger>\\n <SheetContent>\\n <SheetHeader>\\n <SheetTitle>Edit profile</SheetTitle>\\n <SheetDescription>Make changes and save when done.</SheetDescription>\\n </SheetHeader>\\n <div className=\"grid gap-4 py-4\">\\n <Input placeholder=\"Name\" />\\n </div>\\n <SheetFooter>\\n <Button>Save</Button>\\n </SheetFooter>\\n </SheetContent>\\n</Sheet>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for off-canvas panels — mobile nav menus, filter panels, side forms, detail views, or multi-step flows. Slides in from an edge, dismisses on outside click, Escape, or close button.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for center-focused modals (use Dialog). Don't use for transient bottom sheets on mobile (use Drawer). Don't use for dropdown menus or quick popover actions (use DropdownMenu or Popover).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting SheetTitle — Radix warns at runtime and screen readers announce an unnamed dialog\",\n\t\t\t\"Putting a full page's content inside a sheet — too much friction; use a route instead\",\n\t\t\t\"Overriding the side slide animation without matching the 'side' variant\",\n\t\t\t\"Not handling controlled open state after SheetClose — use onOpenChange not manual state\",\n\t\t],\n\t\trelatedComponents: [\"dialog\", \"drawer\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix traps focus, handles Escape to close, and wires aria-labelledby/describedby to SheetTitle/Description. The Close button has sr-only text. Always include a SheetTitle.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"sheet\", \"drawer\", \"side-panel\", \"off-canvas\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const drawerSchema: ComponentSchemaDefinition = {\n\tname: \"drawer\",\n\tdisplayName: \"Drawer\",\n\tdescription:\n\t\t\"Bottom-sheet drawer built on vaul. Mobile-native feel: drag-to-dismiss, snap points, body-scale-on-open. Use for quick mobile actions, filters, pickers.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"shouldScaleBackground\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Scale the <body> element when the drawer opens (creates depth)\",\n\t\t},\n\t\t{\n\t\t\tname: \"snapPoints\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of snap positions ('40%', 400, '100%') — defines resting heights the user can snap to\",\n\t\t},\n\t\t{\n\t\t\tname: \"activeSnapPoint\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active snap point value (matches one entry in snapPoints)\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeThreshold\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0.25,\n\t\t\tdescription: \"Fraction of height the user must drag down to close (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"dismissible\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Allow drag-to-dismiss and outside-click-to-dismiss\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DrawerTrigger + DrawerContent (with DrawerHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"vaul\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic drawer\",\n\t\t\tdescription: \"Mobile-friendly bottom sheet with a quick action\",\n\t\t\tcode: '<Drawer>\\n <DrawerTrigger asChild>\\n <Button variant=\"outline\">Open drawer</Button>\\n </DrawerTrigger>\\n <DrawerContent>\\n <DrawerHeader>\\n <DrawerTitle>Edit profile</DrawerTitle>\\n <DrawerDescription>Make changes to your profile.</DrawerDescription>\\n </DrawerHeader>\\n <div className=\"p-4\"><Input placeholder=\"Name\" /></div>\\n <DrawerFooter>\\n <Button>Save</Button>\\n <DrawerClose asChild>\\n <Button variant=\"outline\">Cancel</Button>\\n </DrawerClose>\\n </DrawerFooter>\\n </DrawerContent>\\n</Drawer>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use on mobile-first or mobile-primary UX when a native app-like bottom sheet matters. Good for filters, quick pickers, confirm-then-do flows, or anywhere a user expects drag-to-dismiss.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use on desktop-primary UIs (use Dialog or Sheet). Don't use for side navigation (use Sheet). Don't use for transient info (use Popover or Tooltip). Don't use when you must prevent dismissal — drawers invite drag-down.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting DrawerTitle — vaul/Radix warn and screen readers announce an unnamed dialog\",\n\t\t\t\"Placing long forms inside a drawer without snap points — content gets cramped\",\n\t\t\t\"Disabling shouldScaleBackground when the background context-cue matters for UX\",\n\t\t\t\"Wrapping DrawerContent in Portal yourself — DrawerContent already portals via DrawerPortal\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"vaul delegates to Radix Dialog: focus trap, Escape to close, aria-labelledby/describedby wired to DrawerTitle/Description. The top handle is decorative (aria-hidden).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"drawer\", \"bottom-sheet\", \"vaul\", \"mobile\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const resizableSchema: ComponentSchemaDefinition = {\n\tname: \"resizable\",\n\tdisplayName: \"Resizable\",\n\tdescription:\n\t\t\"Draggable split panes built on react-resizable-panels v4. Horizontal or vertical, with keyboard-accessible handles and persistable layout.\",\n\tcategory: \"component\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Group orientation: 'horizontal' | 'vertical'\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultLayout\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of initial panel sizes in order (percentages summing to 100)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onLayoutChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Fires when the user drags a handle; receives the new layout array\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable resizing for the whole group\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Alternating ResizablePanel + ResizableHandle nodes\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"react-resizable-panels\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Horizontal split pane\",\n\t\t\tdescription: \"Two resizable panels with a grab-grip handle\",\n\t\t\tcode: '<ResizablePanelGroup orientation=\"horizontal\" className=\"min-h-[300px] max-w-md rounded-lg border\">\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">One</div>\\n </ResizablePanel>\\n <ResizableHandle withHandle />\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">Two</div>\\n </ResizablePanel>\\n</ResizablePanelGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for editor-style layouts (file tree + editor), dashboards with configurable panels, or any UI where users need to trade space between regions. Layouts can be persisted to localStorage via the group's id.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for responsive layouts — use CSS grid/flex with breakpoints. Don't use for modal layouts (use Dialog/Sheet). Don't nest deeply (>2 levels) — it hurts a11y and perception. Don't use if panels need to collapse/expand as a single action (use Collapsible).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting ResizableHandle between panels — they won't resize\",\n\t\t\t\"Using 'cols'/'rows' instead of orientation='horizontal'/'vertical' (old v1 API)\",\n\t\t\t\"Not providing defaultSize on each panel — initial layout will be uneven\",\n\t\t\t\"Rendering panel content that changes DOM size during drag — react-resizable-panels performance suffers\",\n\t\t\t\"Omitting a group id when you want layout to persist via localStorage\",\n\t\t],\n\t\trelatedComponents: [\"separator\", \"collapsible\"],\n\t\taccessibilityNotes:\n\t\t\t\"ResizableHandle is focusable and resizable via keyboard arrows. role='separator' is set, with aria-valuenow/min/max wired by react-resizable-panels. The grab-grip is aria-hidden (decorative).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"resizable\", \"split-pane\", \"layout\", \"panels\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sidebarSchema: ComponentSchemaDefinition = {\n\tname: \"sidebar\",\n\tdisplayName: \"Sidebar\",\n\tdescription:\n\t\t\"App-shell sidebar with collapsible width, context-driven open state, and composable Header/Content/Footer/Item parts. Provider-based so any descendant can toggle it.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled open state — read from SidebarProvider\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Initial open state (uncontrolled)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state flips: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"side\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"left\",\n\t\t\tdescription: \"Which edge the sidebar sits on: 'left' | 'right'\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sidebar docks against\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"left\", description: \"Docks to the left edge (default)\" },\n\t\t\t\t{ value: \"right\", description: \"Docks to the right edge\" },\n\t\t\t],\n\t\t\tdefault: \"left\",\n\t\t},\n\t\t{\n\t\t\tname: \"state\",\n\t\t\tdescription: \"Width state (derived from SidebarProvider open value)\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"open\", description: \"Sidebar expanded at full width\" },\n\t\t\t\t{ value: \"closed\", description: \"Sidebar collapsed to zero width\" },\n\t\t\t],\n\t\t\tdefault: \"open\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SidebarHeader + SidebarContent + SidebarFooter (any combination)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"accent\", \"accent-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App shell with collapsible sidebar\",\n\t\t\tdescription: \"Provider holds open state; the trigger toggles it\",\n\t\t\tcode: '<SidebarProvider>\\n <Sidebar>\\n <SidebarHeader>\\n <span className=\"font-semibold\">Acme</span>\\n </SidebarHeader>\\n <SidebarContent>\\n <SidebarItem active>Dashboard</SidebarItem>\\n <SidebarItem>Projects</SidebarItem>\\n <SidebarItem>Settings</SidebarItem>\\n </SidebarContent>\\n <SidebarFooter>Signed in as jane</SidebarFooter>\\n </Sidebar>\\n <main className=\"flex-1 p-4\">\\n <SidebarTrigger />\\n <h1>Hello</h1>\\n </main>\\n</SidebarProvider>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for persistent app-shell navigation: admin dashboards, document editors, SaaS sidebars. The Provider pattern lets any descendant component toggle the sidebar (e.g. a topbar button on mobile).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for mobile-first UX (use Sheet — sidebar collapses to zero-width but Sheet gives a native drawer feel). Don't use for marketing sites (no shell). Don't use for contextual menus (use DropdownMenu or NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering Sidebar outside SidebarProvider — useSidebar throws\",\n\t\t\t\"Forgetting that SidebarProvider is a flex container — main content must be its direct sibling\",\n\t\t\t\"Using the wrong ordering for side='right' — SidebarProvider handles this via order-last\",\n\t\t\t\"Overriding the width variant manually instead of toggling open state\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"navigation-menu\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sidebar is an <aside> landmark (not a modal — no focus trap). When collapsed, the aside sets inert + aria-hidden so its children are removed from the tab order and the accessibility tree. SidebarTrigger exposes aria-expanded and a rotating aria-label (suppressed when asChild so the consumer's visible label/aria-label wins). SidebarItem uses aria-current='page' when active. Focus rings use the ring token.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"sidebar\", \"navigation\", \"app-shell\", \"layout\"],\n};\n"],"mappings":"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","names":["React","jsx","cva","React","jsx","cva","React","jsx","React","jsx","jsxs","React","jsx","cva","jsx","cva","React","jsx","React","jsx","jsxs","React","jsx","React","jsx","jsxs","cva","React","jsx","cva","React","jsx","React","jsx","jsx","React","jsx","React","jsx","jsxs","Slot","cva","jsx","cva","Slot","cva","jsx","cva","cva","jsx","cva","cva","jsx","cva","cva","jsx","cva","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","Slot","React","jsx","Slot","cva","React","jsx","cva","jsx","CollapsibleTrigger","CollapsibleContent","React","jsx","React","jsx","jsxs","React","jsx","cva","React","jsx","jsxs","cva","Slot","React","jsx","jsxs","Slot","React","jsx","jsx","jsxs","React","jsx","jsxs","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","cva","React","jsx","jsxs","cva","React","jsx","jsxs","jsx","jsxs","Slot","cva","React","Fragment","jsx","jsxs","cva","Slot"]}
|
|
1
|
+
{"version":3,"sources":["../src/primitives/button/button.tsx","../src/lib/utils.ts","../src/primitives/input/input.tsx","../src/primitives/label/label.tsx","../src/primitives/textarea/textarea.tsx","../src/primitives/checkbox/checkbox.tsx","../src/primitives/switch/switch.tsx","../src/primitives/badge/badge.tsx","../src/primitives/separator/separator.tsx","../src/primitives/select/select.tsx","../src/primitives/radio-group/radio-group.tsx","../src/primitives/slider/slider.tsx","../src/primitives/toggle/toggle.tsx","../src/primitives/toggle-group/toggle-group.tsx","../src/primitives/avatar/avatar.tsx","../src/primitives/skeleton/skeleton.tsx","../src/primitives/progress/progress.tsx","../src/primitives/scroll-area/scroll-area.tsx","../src/primitives/aspect-ratio/aspect-ratio.tsx","../src/primitives/container/container.tsx","../src/primitives/stack/stack.tsx","../src/primitives/_shared/layout-variants.ts","../src/primitives/cluster/cluster.tsx","../src/primitives/grid/grid.tsx","../src/primitives/spacer/spacer.tsx","../src/components/card/card.tsx","../src/components/tabs/tabs.tsx","../src/components/accordion/accordion.tsx","../src/components/dialog/dialog.tsx","../src/components/alert-dialog/alert-dialog.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/popover/popover.tsx","../src/components/tooltip/tooltip.tsx","../src/components/form/form.tsx","../src/components/alert/alert.tsx","../src/components/sonner/sonner.tsx","../src/components/collapsible/collapsible.tsx","../src/components/hover-card/hover-card.tsx","../src/components/context-menu/context-menu.tsx","../src/components/menubar/menubar.tsx","../src/components/navigation-menu/navigation-menu.tsx","../src/components/breadcrumb/breadcrumb.tsx","../src/components/table/table.tsx","../src/components/data-table/data-table.tsx","../src/components/pagination/pagination.tsx","../src/components/calendar/calendar.tsx","../src/components/date-picker/date-picker.tsx","../src/components/input-otp/input-otp.tsx","../src/components/command/command.tsx","../src/components/combobox/combobox.tsx","../src/components/color-picker/color-picker.tsx","../src/lib/color.ts","../src/components/multi-combobox/multi-combobox.tsx","../src/components/stepper/stepper.tsx","../src/components/timeline/timeline.tsx","../src/components/dropzone/dropzone.tsx","../src/components/time-picker/time-picker.tsx","../src/components/file-tree/file-tree.tsx","../src/components/sheet/sheet.tsx","../src/components/drawer/drawer.tsx","../src/components/resizable/resizable.tsx","../src/components/sidebar/sidebar.tsx","../src/primitives/button/button.schema.ts","../src/primitives/input/input.schema.ts","../src/primitives/label/label.schema.ts","../src/primitives/textarea/textarea.schema.ts","../src/primitives/checkbox/checkbox.schema.ts","../src/primitives/switch/switch.schema.ts","../src/primitives/badge/badge.schema.ts","../src/primitives/separator/separator.schema.ts","../src/components/card/card.schema.ts","../src/components/tabs/tabs.schema.ts","../src/components/accordion/accordion.schema.ts","../src/components/dialog/dialog.schema.ts","../src/components/alert-dialog/alert-dialog.schema.ts","../src/components/dropdown-menu/dropdown-menu.schema.ts","../src/components/popover/popover.schema.ts","../src/components/tooltip/tooltip.schema.ts","../src/primitives/select/select.schema.ts","../src/primitives/radio-group/radio-group.schema.ts","../src/primitives/slider/slider.schema.ts","../src/primitives/toggle/toggle.schema.ts","../src/primitives/toggle-group/toggle-group.schema.ts","../src/components/form/form.schema.ts","../src/primitives/avatar/avatar.schema.ts","../src/primitives/skeleton/skeleton.schema.ts","../src/primitives/progress/progress.schema.ts","../src/primitives/scroll-area/scroll-area.schema.ts","../src/primitives/aspect-ratio/aspect-ratio.schema.ts","../src/primitives/container/container.schema.ts","../src/primitives/stack/stack.schema.ts","../src/primitives/cluster/cluster.schema.ts","../src/primitives/grid/grid.schema.ts","../src/primitives/spacer/spacer.schema.ts","../src/components/collapsible/collapsible.schema.ts","../src/components/hover-card/hover-card.schema.ts","../src/components/context-menu/context-menu.schema.ts","../src/components/menubar/menubar.schema.ts","../src/components/navigation-menu/navigation-menu.schema.ts","../src/components/breadcrumb/breadcrumb.schema.ts","../src/components/alert/alert.schema.ts","../src/components/sonner/sonner.schema.ts","../src/components/table/table.schema.ts","../src/components/data-table/data-table.schema.ts","../src/components/pagination/pagination.schema.ts","../src/components/calendar/calendar.schema.ts","../src/components/date-picker/date-picker.schema.ts","../src/components/input-otp/input-otp.schema.ts","../src/components/command/command.schema.ts","../src/components/combobox/combobox.schema.ts","../src/components/multi-combobox/multi-combobox.schema.ts","../src/components/stepper/stepper.schema.ts","../src/components/timeline/timeline.schema.ts","../src/components/dropzone/dropzone.schema.ts","../src/components/time-picker/time-picker.schema.ts","../src/components/file-tree/file-tree.schema.ts","../src/components/color-picker/color-picker.schema.ts","../src/components/sheet/sheet.schema.ts","../src/components/drawer/drawer.schema.ts","../src/components/resizable/resizable.schema.ts","../src/components/sidebar/sidebar.schema.ts"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst buttonVariants = cva(\n\t[\n\t\t// Tokens consumed (fall back to Tailwind defaults when no theme is loaded):\n\t\t// --gap-sm, --duration-normal, --control-height-{sm,md,lg}, --space-{2,3,4,8}\n\t\t\"inline-flex items-center justify-center gap-[var(--gap-sm,0.5rem)] whitespace-nowrap rounded-md text-sm font-medium\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\"active:scale-[0.98]\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: [\n\t\t\t\t\t\"bg-primary text-primary-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-primary/20\",\n\t\t\t\t\t\"hover:bg-primary/90 hover:shadow-md hover:shadow-primary/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tdestructive: [\n\t\t\t\t\t\"bg-destructive text-destructive-foreground\",\n\t\t\t\t\t\"shadow-sm shadow-destructive/20\",\n\t\t\t\t\t\"hover:bg-destructive/90 hover:shadow-md hover:shadow-destructive/25\",\n\t\t\t\t].join(\" \"),\n\t\t\t\toutline: [\n\t\t\t\t\t// Self-borne shape: token border (border-input) + an inset-ring tinted with\n\t\t\t\t\t// foreground so the boundary is visible on flat-white surfaces too, not only\n\t\t\t\t\t// inside elevated Card/Popover/Dialog containers.\n\t\t\t\t\t\"border border-input bg-background\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md hover:inset-ring-foreground/12\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tsecondary: [\n\t\t\t\t\t\"bg-secondary text-secondary-foreground\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.08]\",\n\t\t\t\t\t\"hover:bg-secondary/80 hover:shadow-md hover:inset-ring-foreground/15\",\n\t\t\t\t].join(\" \"),\n\t\t\t\tghost: \"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault:\n\t\t\t\t\t\"h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)]\",\n\t\t\t\tsm: \"h-[var(--control-height-sm,2.25rem)] rounded-md px-[var(--space-3,0.75rem)]\",\n\t\t\t\tlg: \"h-[var(--control-height-lg,2.75rem)] rounded-md px-[var(--space-8,2rem)] text-base\",\n\t\t\t\ticon: \"h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)]\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nexport interface ButtonProps\n\textends React.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tVariantProps<typeof buttonVariants> {\n\tasChild?: boolean;\n\tloading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n\t(\n\t\t{ className, variant, size, asChild = false, loading = false, children, disabled, ...props },\n\t\tref,\n\t) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tclassName={cn(buttonVariants({ variant, size, className }))}\n\t\t\t\tref={ref}\n\t\t\t\tdisabled={disabled || loading}\n\t\t\t\taria-busy={loading || undefined}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{loading ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclassName=\"animate-spin h-4 w-4\"\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\tclassName=\"opacity-25\"\n\t\t\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\t\t\tr=\"10\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"4\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\tclassName=\"opacity-75\"\n\t\t\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\t\t\td=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t)}\n\t\t\t</Comp>\n\t\t);\n\t},\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merge class names with Tailwind CSS conflict resolution.\n * @param inputs - Class values (strings, arrays, objects) to merge\n * @returns A single merged class string with Tailwind conflicts resolved\n */\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>;\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n\t({ className, type, ...props }, ref) => {\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype={type}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-[var(--control-height-md,2.5rem)] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t// inset-ring gives a self-borne edge so the input field is visible on flat\n\t\t\t\t\t// surfaces (token border alone is too low-contrast on bg-background=white).\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground\",\n\t\t\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst labelVariants = cva(\n\t\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nexport interface LabelProps\n\textends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n\t\tVariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<React.ComponentRef<typeof LabelPrimitive.Root>, LabelProps>(\n\t({ className, ...props }, ref) => (\n\t\t<LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n\t),\n);\nLabel.displayName = \"Label\";\n\nexport { Label };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A styled multi-line text input with smooth focus transitions and shadow effects.\n * Extends the native HTML textarea element with Hex UI styling.\n */\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ className, ...props }, ref) => {\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex min-h-[80px] w-full rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * An accessible checkbox component built on Radix UI.\n * Supports checked, unchecked, and indeterminate states with smooth animations.\n */\nexport type CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\n\nconst Checkbox = React.forwardRef<\n\tReact.ComponentRef<typeof CheckboxPrimitive.Root>,\n\tCheckboxProps\n>(({ className, ...props }, ref) => (\n\t<CheckboxPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"group h-4 w-4 shrink-0 rounded-sm border border-input\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"hover:border-ring/50 hover:shadow-md\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\"data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground\",\n\t\t\t\"data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:text-primary-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<CheckboxPrimitive.Indicator className={cn(\"flex items-center justify-center text-current\")}>\n\t\t\t{/* ✓ when checked; dash when indeterminate. The Root has `group`, so each icon\n\t\t\t shows only when the Root's data-state matches. */}\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"hidden h-3.5 w-3.5 group-data-[state=checked]:block\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t</svg>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"hidden h-3.5 w-3.5 group-data-[state=indeterminate]:block\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n\t\t\t</svg>\n\t\t</CheckboxPrimitive.Indicator>\n\t</CheckboxPrimitive.Root>\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * An accessible toggle switch built on Radix UI.\n * Use for instant on/off settings that take effect immediately.\n */\nexport type SwitchProps = React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>;\n\nconst Switch = React.forwardRef<React.ComponentRef<typeof SwitchPrimitive.Root>, SwitchProps>(\n\t({ className, ...props }, ref) => (\n\t\t<SwitchPrimitive.Root\n\t\t\tclassName={cn(\n\t\t\t\t\"peer inline-flex h-6 w-[var(--control-height-lg,2.75rem)] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent\",\n\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\"shadow-sm\",\n\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n\t\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\"data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n\t\t\t\t// Unchecked track shares --color-input with form borders (~1.27:1 vs white) so\n\t\t\t\t// add an inset ring to make the track visible on flat surfaces.\n\t\t\t\t\"data-[state=unchecked]:inset-ring-1 data-[state=unchecked]:inset-ring-foreground/[0.08]\",\n\t\t\t\t\"hover:shadow-md\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t\tref={ref}\n\t\t>\n\t\t\t<SwitchPrimitive.Thumb\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0\",\n\t\t\t\t\t\"transition-transform duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n\t\t\t\t)}\n\t\t\t/>\n\t\t</SwitchPrimitive.Root>\n\t),\n);\nSwitch.displayName = \"Switch\";\n\nexport { Switch };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst badgeVariants = cva(\n\t[\n\t\t\"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"border-foreground/15 bg-secondary text-secondary-foreground hover:bg-secondary/80 hover:border-foreground/20\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n\t\t\t\toutline: \"border-foreground/20 text-foreground hover:border-foreground/30\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t},\n\t},\n);\n\n/**\n * A small status indicator badge with multiple style variants.\n * Used for tags, statuses, counts, and categorization.\n */\nexport interface BadgeProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof badgeVariants> {}\n\n/**\n * Renders an inline badge element with variant-based styling.\n * @param props - Badge props including variant and className\n * @returns A styled div element\n */\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n\treturn <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A visual divider between content sections.\n * Built on Radix UI Separator for proper accessibility semantics.\n */\nexport type SeparatorProps = React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>;\n\nconst Separator = React.forwardRef<\n\tReact.ComponentRef<typeof SeparatorPrimitive.Root>,\n\tSeparatorProps\n>(({ className, orientation = \"horizontal\", decorative = true, ...props }, ref) => (\n\t<SeparatorPrimitive.Root\n\t\tref={ref}\n\t\tdecorative={decorative}\n\t\torientation={orientation}\n\t\tclassName={cn(\n\t\t\t\"shrink-0 bg-foreground/[0.12]\",\n\t\t\torientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nSeparator.displayName = \"Separator\";\n\nexport { Separator };\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container controlling the select's state. */\nconst Select = SelectPrimitive.Root;\n\n/** Groups a set of related SelectItem elements. */\nconst SelectGroup = SelectPrimitive.Group;\n\n/** Renders the selected value (or placeholder) inside the trigger. */\nconst SelectValue = SelectPrimitive.Value;\n\n/** The button users click to open the dropdown. */\nconst SelectTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-[var(--control-height-md,2.5rem)] w-full items-center justify-between rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"placeholder:text-muted-foreground\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"focus-visible:shadow-md focus-visible:border-ring/50\",\n\t\t\t\"hover:border-ring/30 hover:shadow-md\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\"[&>span]:line-clamp-1\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t<SelectPrimitive.Icon asChild>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4 opacity-50\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<path d=\"m7 15 5 5 5-5\" />\n\t\t\t\t<path d=\"m7 9 5-5 5 5\" />\n\t\t\t</svg>\n\t\t</SelectPrimitive.Icon>\n\t</SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = \"SelectTrigger\";\n\n/** The dropdown panel containing selectable options. */\nconst SelectContent = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n\t<SelectPrimitive.Portal>\n\t\t<SelectPrimitive.Content\n\t\t\tref={ref}\n\t\t\tposition={position}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SelectPrimitive.Viewport\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"p-[var(--space-1,0.25rem)]\",\n\t\t\t\t\tposition === \"popper\" &&\n\t\t\t\t\t\t\"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</SelectPrimitive.Viewport>\n\t\t</SelectPrimitive.Content>\n\t</SelectPrimitive.Portal>\n));\nSelectContent.displayName = \"SelectContent\";\n\n/** A non-interactive label within a SelectGroup. */\nconst SelectLabel = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm font-semibold\", className)}\n\t\t{...props}\n\t/>\n));\nSelectLabel.displayName = \"SelectLabel\";\n\n/** A selectable option. */\nconst SelectItem = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n\t<SelectPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<SelectPrimitive.ItemIndicator>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-3.5 w-3.5\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t</svg>\n\t\t\t</SelectPrimitive.ItemIndicator>\n\t\t</span>\n\t\t<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n\t</SelectPrimitive.Item>\n));\nSelectItem.displayName = \"SelectItem\";\n\n/** Horizontal divider between groups inside SelectContent. */\nconst SelectSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof SelectPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<SelectPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nSelectSeparator.displayName = \"SelectSeparator\";\n\nexport {\n\tSelect,\n\tSelectGroup,\n\tSelectValue,\n\tSelectTrigger,\n\tSelectContent,\n\tSelectLabel,\n\tSelectItem,\n\tSelectSeparator,\n};\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a radio group. Pair with one or more RadioGroupItem. */\nconst RadioGroup = React.forwardRef<\n\tReact.ComponentRef<typeof RadioGroupPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => (\n\t<RadioGroupPrimitive.Root\n\t\tclassName={cn(\n\t\t\t\"grid gap-[var(--gap-sm,0.5rem)] data-[orientation=horizontal]:flex data-[orientation=horizontal]:flex-row\",\n\t\t\tclassName,\n\t\t)}\n\t\tref={ref}\n\t\t{...props}\n\t/>\n));\nRadioGroup.displayName = \"RadioGroup\";\n\n/** A single radio option within a RadioGroup. */\nconst RadioGroupItem = React.forwardRef<\n\tReact.ComponentRef<typeof RadioGroupPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => (\n\t<RadioGroupPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"aspect-square h-4 w-4 rounded-full border border-input\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"hover:border-ring/50 hover:shadow-md\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\"data-[state=checked]:border-primary\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"h-2 w-2 text-primary\" aria-hidden=\"true\">\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t</svg>\n\t\t</RadioGroupPrimitive.Indicator>\n\t</RadioGroupPrimitive.Item>\n));\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\nexport { RadioGroup, RadioGroupItem };\n","import * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n// Local ambient — components run in browsers where bundlers (Next, Vite, tsup)\n// replace `process.env.NODE_ENV` at build time. Avoids pulling @types/node into\n// the components package just for one dev-mode warning.\ndeclare const process: { env?: { NODE_ENV?: string } } | undefined;\n\ninterface SliderProps\n\textends React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> {\n\t/**\n\t * Per-thumb accessible labels. When the slider has multiple thumbs, pass\n\t * one entry per thumb (e.g. [\"Minimum\", \"Maximum\"]). For a single-thumb\n\t * slider, the Root's `aria-label` / `aria-labelledby` is mirrored onto\n\t * the thumb automatically — pass `thumbLabels` only when those defaults\n\t * are insufficient.\n\t */\n\tthumbLabels?: string[];\n}\n\n/**\n * A range input with one or more draggable thumbs.\n * Built on Radix UI Slider with keyboard controls (arrows, Home, End, PageUp/Down).\n */\nconst Slider = React.forwardRef<\n\tReact.ComponentRef<typeof SliderPrimitive.Root>,\n\tSliderProps\n>(({ className, thumbLabels, ...props }, ref) => {\n\tconst values = props.value ?? props.defaultValue ?? [0];\n\tconst rootLabel = props[\"aria-label\"];\n\tconst rootLabelledBy = props[\"aria-labelledby\"];\n\n\tif (\n\t\ttypeof process !== \"undefined\" &&\n\t\tprocess.env?.NODE_ENV !== \"production\" &&\n\t\tthumbLabels &&\n\t\tthumbLabels.length !== values.length\n\t) {\n\t\tconsole.warn(\n\t\t\t`Slider: thumbLabels.length (${thumbLabels.length}) does not match value.length (${values.length}). ` +\n\t\t\t\t`Missing labels fall back to indexed names; extra labels are ignored.`,\n\t\t);\n\t}\n\n\treturn (\n\t\t<SliderPrimitive.Root\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"relative flex w-full touch-none select-none items-center\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full border border-foreground/[0.08] bg-secondary\">\n\t\t\t\t<SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n\t\t\t</SliderPrimitive.Track>\n\t\t\t{values.map((_, i) => {\n\t\t\t\tconst explicit = thumbLabels?.[i];\n\t\t\t\tconst fallback =\n\t\t\t\t\tvalues.length === 1\n\t\t\t\t\t\t? rootLabel\n\t\t\t\t\t\t: rootLabel\n\t\t\t\t\t\t\t? `${rootLabel} (${i + 1} of ${values.length})`\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\treturn (\n\t\t\t\t\t<SliderPrimitive.Thumb\n\t\t\t\t\t\t// biome-ignore lint/suspicious/noArrayIndexKey: Radix renders one thumb per value by index\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\taria-label={explicit ?? fallback}\n\t\t\t\t\t\taria-labelledby={\n\t\t\t\t\t\t\texplicit || fallback ? undefined : rootLabelledBy\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"block h-5 w-5 rounded-full border-2 border-primary bg-background\",\n\t\t\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out shadow-md\",\n\t\t\t\t\t\t\t\"hover:shadow-lg hover:scale-110\",\n\t\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t})}\n\t\t</SliderPrimitive.Root>\n\t);\n});\nSlider.displayName = \"Slider\";\n\nexport type { SliderProps };\n\nexport { Slider };\n","import * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst toggleVariants = cva(\n\t[\n\t\t\"inline-flex items-center justify-center rounded-md text-sm font-medium\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"hover:bg-muted hover:text-muted-foreground\",\n\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\"data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-transparent\",\n\t\t\t\toutline:\n\t\t\t\t\t\"border border-input bg-transparent shadow-sm inset-ring-1 inset-ring-foreground/[0.06] hover:bg-accent hover:text-accent-foreground\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"h-[var(--control-height-md,2.5rem)] px-[var(--space-3,0.75rem)] min-w-[var(--control-height-md,2.5rem)]\",\n\t\t\t\tsm: \"h-[var(--control-height-sm,2.25rem)] px-2.5 min-w-[var(--control-height-sm,2.25rem)]\",\n\t\t\t\tlg: \"h-[var(--control-height-lg,2.75rem)] px-5 min-w-[var(--control-height-lg,2.75rem)]\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { variant: \"default\", size: \"default\" },\n\t},\n);\n\n/**\n * A two-state button. Stays pressed when toggled on.\n * @returns A styled Radix Toggle root\n */\nconst Toggle = React.forwardRef<\n\tReact.ComponentRef<typeof TogglePrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>\n>(({ className, variant, size, ...props }, ref) => (\n\t<TogglePrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(toggleVariants({ variant, size, className }))}\n\t\t{...props}\n\t/>\n));\nToggle.displayName = \"Toggle\";\n\nexport { Toggle, toggleVariants };\n","import * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport { toggleVariants } from \"../toggle/toggle.js\";\n\ntype ToggleGroupContextValue = VariantProps<typeof toggleVariants>;\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue>({\n\tsize: \"default\",\n\tvariant: \"default\",\n});\n\n/** Root container for a set of toggles (single-select or multi-select). */\nconst ToggleGroup = React.forwardRef<\n\tReact.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n\t\tVariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n\t<ToggleGroupPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"flex items-center justify-center gap-1\", className)}\n\t\t{...props}\n\t>\n\t\t<ToggleGroupContext.Provider value={{ variant, size }}>{children}</ToggleGroupContext.Provider>\n\t</ToggleGroupPrimitive.Root>\n));\nToggleGroup.displayName = \"ToggleGroup\";\n\n/** A single toggle option within a ToggleGroup. Inherits variant/size from context. */\nconst ToggleGroupItem = React.forwardRef<\n\tReact.ComponentRef<typeof ToggleGroupPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n\t\tVariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n\tconst context = React.useContext(ToggleGroupContext);\n\treturn (\n\t\t<ToggleGroupPrimitive.Item\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\ttoggleVariants({\n\t\t\t\t\tvariant: variant ?? context.variant,\n\t\t\t\t\tsize: size ?? context.size,\n\t\t\t\t}),\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</ToggleGroupPrimitive.Item>\n\t);\n});\nToggleGroupItem.displayName = \"ToggleGroupItem\";\n\nexport { ToggleGroup, ToggleGroupItem };\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for an avatar (image + fallback). */\nconst Avatar = React.forwardRef<\n\tReact.ComponentRef<typeof AvatarPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n\t<AvatarPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"relative flex h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)] shrink-0 overflow-hidden rounded-full\", className)}\n\t\t{...props}\n\t/>\n));\nAvatar.displayName = \"Avatar\";\n\n/** Avatar image. AvatarFallback renders in its place when the image is missing or errors. */\nconst AvatarImage = React.forwardRef<\n\tReact.ComponentRef<typeof AvatarPrimitive.Image>,\n\tReact.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n\t<AvatarPrimitive.Image\n\t\tref={ref}\n\t\tclassName={cn(\"aspect-square h-full w-full object-cover\", className)}\n\t\t{...props}\n\t/>\n));\nAvatarImage.displayName = \"AvatarImage\";\n\n/** Fallback content (usually initials or an icon) shown when the image is missing or fails. Supports delayMs to avoid flashing for fast-loading images. */\nconst AvatarFallback = React.forwardRef<\n\tReact.ComponentRef<typeof AvatarPrimitive.Fallback>,\n\tReact.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n\t<AvatarPrimitive.Fallback\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-full w-full items-center justify-center rounded-full bg-muted text-sm font-medium text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAvatarFallback.displayName = \"AvatarFallback\";\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A placeholder shimmer element shown while content is loading.\n * Pair with explicit width/height via className.\n * @returns A div with pulsing muted background\n */\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"animate-pulse rounded-md border border-foreground/[0.06] bg-muted\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Skeleton };\n","import * as ProgressPrimitive from \"@radix-ui/react-progress\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * A horizontal progress bar from 0–100%.\n * Built on Radix UI Progress for aria-valuenow/max wiring.\n */\nconst Progress = React.forwardRef<\n\tReact.ComponentRef<typeof ProgressPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, max = 100, ...props }, ref) => {\n\tconst pct = Math.max(0, Math.min(100, ((value ?? 0) / max) * 100));\n\treturn (\n\t\t<ProgressPrimitive.Root\n\t\t\tref={ref}\n\t\t\t// Clamp undefined → 0 so ARIA (aria-valuenow) matches the visual fill.\n\t\t\t// Consumers who want an indeterminate loading bar should use <Skeleton />.\n\t\t\tvalue={value ?? 0}\n\t\t\tmax={max}\n\t\t\tclassName={cn(\n\t\t\t\t\"relative h-2 w-full overflow-hidden rounded-full border border-foreground/[0.08] bg-secondary\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ProgressPrimitive.Indicator\n\t\t\t\tclassName=\"h-full w-full flex-1 bg-primary transition-transform duration-500 ease-out\"\n\t\t\t\tstyle={{ transform: `translateX(-${100 - pct}%)` }}\n\t\t\t/>\n\t\t</ProgressPrimitive.Root>\n\t);\n});\nProgress.displayName = \"Progress\";\n\nexport { Progress };\n","import * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface ScrollAreaProps\n\textends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n\t/**\n\t * tabIndex applied to the scroll viewport so keyboard users can scroll\n\t * without a pointer. Defaults to `0` (focusable) — pass `-1` to skip the\n\t * viewport in the tab order when ScrollArea wraps purely decorative or\n\t * already-keyboard-reachable content.\n\t */\n\tviewportTabIndex?: number;\n}\n\n/** A scrollable area with custom-styled scrollbars. Content must be explicitly sized. */\nconst ScrollArea = React.forwardRef<\n\tReact.ComponentRef<typeof ScrollAreaPrimitive.Root>,\n\tScrollAreaProps\n>(({ className, children, viewportTabIndex = 0, ...props }, ref) => (\n\t<ScrollAreaPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"relative overflow-hidden\", className)}\n\t\t{...props}\n\t>\n\t\t<ScrollAreaPrimitive.Viewport\n\t\t\ttabIndex={viewportTabIndex}\n\t\t\tclassName={cn(\n\t\t\t\t\"h-full w-full rounded-[inherit]\",\n\t\t\t\tviewportTabIndex >= 0 &&\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</ScrollAreaPrimitive.Viewport>\n\t\t{/* Both orientations mount unconditionally; Radix paints each only when content\n\t\t overflows on that axis, so there's no cost for single-axis content. */}\n\t\t<ScrollBar orientation=\"vertical\" />\n\t\t<ScrollBar orientation=\"horizontal\" />\n\t\t<ScrollAreaPrimitive.Corner />\n\t</ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = \"ScrollArea\";\n\n/** Styled scrollbar track + thumb. Rendered inside ScrollArea automatically. */\nconst ScrollBar = React.forwardRef<\n\tReact.ComponentRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n\tReact.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n\t<ScrollAreaPrimitive.ScrollAreaScrollbar\n\t\tref={ref}\n\t\torientation={orientation}\n\t\tclassName={cn(\n\t\t\t\"flex touch-none select-none transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\torientation === \"vertical\" &&\n\t\t\t\t\"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n\t\t\torientation === \"horizontal\" &&\n\t\t\t\t\"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-foreground/[0.18]\" />\n\t</ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = \"ScrollBar\";\n\nexport { ScrollArea, ScrollBar };\nexport type { ScrollAreaProps };\n","import * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\";\n\n/** A container that maintains a specified width-to-height ratio for its children. */\nconst AspectRatio = AspectRatioPrimitive.Root;\n\nexport { AspectRatio };\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * CVA variants for Container — max-width wrapper bound to `--container-*` tokens.\n * Variant names match token names (`sm`/`md`/`lg`/`xl`/`full`); `full` removes the clamp.\n * Padding maps to `--space-*` tokens.\n */\nconst containerVariants = cva(\"mx-auto w-full\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"max-w-[var(--container-sm,33rem)]\",\n\t\t\tmd: \"max-w-[var(--container-md,40rem)]\",\n\t\t\tlg: \"max-w-[var(--container-lg,50rem)]\",\n\t\t\txl: \"max-w-[var(--container-xl,66rem)]\",\n\t\t\tfull: \"max-w-full\",\n\t\t},\n\t\tpadding: {\n\t\t\tnone: \"\",\n\t\t\tsm: \"px-[var(--space-3,0.75rem)]\",\n\t\t\tmd: \"px-[var(--space-4,1rem)]\",\n\t\t\tlg: \"px-[var(--space-8,2rem)]\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tsize: \"lg\",\n\t\tpadding: \"md\",\n\t},\n});\n\n/** Props for the Container component. */\nexport interface ContainerProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof containerVariants> {\n\t/**\n\t * Render as a different element via Radix `Slot`. Pass `<Container asChild><main>...</main></Container>`\n\t * to render the layout as a `<main>` (or `<section>`, `<article>`, etc.) and inherit landmark semantics.\n\t */\n\tasChild?: boolean;\n}\n\n/**\n * A centered max-width wrapper for page content. Use to constrain reading-width sections.\n * Pass `asChild` to render as a semantic landmark (`<main>`, `<section>`, etc.) instead of a plain `<div>`.\n *\n * @param props - Container props including `size`, `padding`, and optional `asChild`.\n * @returns A wrapper element with `mx-auto`, max-width clamp, and optional horizontal padding.\n * @example\n * ```tsx\n * <Container size=\"lg\" padding=\"md\" asChild>\n * <main>\n * <h1>Article title</h1>\n * <p>Reading-width content...</p>\n * </main>\n * </Container>\n * ```\n */\nfunction Container({ className, size, padding, asChild = false, ...props }: ContainerProps) {\n\tconst Comp = asChild ? Slot : \"div\";\n\treturn <Comp className={cn(containerVariants({ size, padding }), className)} {...props} />;\n}\n\nexport { Container, containerVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport {\n\tflexAlignVariants,\n\tgapVariants,\n\tjustifyVariants,\n} from \"../_shared/layout-variants.js\";\n\n/**\n * CVA variants for Stack — vertical flex flow. `gap`, `align`, and `justify`\n * pull from the shared layout-variant maps so any change to the gap scale\n * propagates to Cluster and Grid simultaneously.\n */\nconst stackVariants = cva(\"flex flex-col\", {\n\tvariants: {\n\t\tgap: gapVariants,\n\t\talign: flexAlignVariants,\n\t\tjustify: justifyVariants,\n\t},\n\tdefaultVariants: {\n\t\tgap: \"md\",\n\t\talign: \"stretch\",\n\t\tjustify: \"start\",\n\t},\n});\n\n/** Props for the Stack component. */\nexport interface StackProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof stackVariants> {}\n\n/**\n * Vertical flex flow with token-bound gap. Children stack top-to-bottom.\n * @param props - Stack props including `gap`, `align`, and `justify` variant keys.\n * @returns A flex column with consistent vertical spacing.\n * @example\n * ```tsx\n * <Stack gap=\"lg\">\n * <h2>Section title</h2>\n * <p>Paragraph one.</p>\n * <p>Paragraph two.</p>\n * </Stack>\n * ```\n */\nfunction Stack({ className, gap, align, justify, ...props }: StackProps) {\n\treturn (\n\t\t<div className={cn(stackVariants({ gap, align, justify }), className)} {...props} />\n\t);\n}\n\nexport { Stack, stackVariants };\n","/**\n * Single source of truth for layout-primitive CVA variant maps.\n *\n * Stack, Cluster, Grid all share `gap` and `justify` value sets; align values\n * differ slightly (`stretch` for column-like flows, `baseline` for row flows).\n * Centralizing the maps here keeps token names and Tailwind classes in one\n * file — when the gap scale changes (renamed token, new step, etc.), all\n * three components update together.\n */\n\n/** Gap scale bound to `--gap-*` tokens. Used by Stack, Cluster, Grid. */\nexport const gapVariants = {\n\txs: \"gap-[var(--gap-xs,0.25rem)]\",\n\tsm: \"gap-[var(--gap-sm,0.5rem)]\",\n\tmd: \"gap-[var(--gap-md,1rem)]\",\n\tlg: \"gap-[var(--gap-lg,1.5rem)]\",\n\txl: \"gap-[var(--gap-xl,2rem)]\",\n} as const;\n\n/** `justify-content` values shared by Stack and Cluster. */\nexport const justifyVariants = {\n\tstart: \"justify-start\",\n\tcenter: \"justify-center\",\n\tend: \"justify-end\",\n\tbetween: \"justify-between\",\n} as const;\n\n/** Cross-axis `align-items` values for vertical/grid flows (column-like). */\nexport const flexAlignVariants = {\n\tstart: \"items-start\",\n\tcenter: \"items-center\",\n\tend: \"items-end\",\n\tstretch: \"items-stretch\",\n} as const;\n\n/** Cross-axis `align-items` values for horizontal flows. Includes `baseline`. */\nexport const clusterAlignVariants = {\n\tstart: \"items-start\",\n\tcenter: \"items-center\",\n\tend: \"items-end\",\n\tstretch: \"items-stretch\",\n\tbaseline: \"items-baseline\",\n} as const;\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport {\n\tclusterAlignVariants,\n\tgapVariants,\n\tjustifyVariants,\n} from \"../_shared/layout-variants.js\";\n\n/**\n * CVA variants for Cluster — horizontal flex flow with wrap.\n * `gap` and `justify` pull from shared layout-variant maps; `align` adds\n * `baseline` (text-baseline alignment for mixed-size siblings).\n */\nconst clusterVariants = cva(\"flex flex-wrap\", {\n\tvariants: {\n\t\tgap: gapVariants,\n\t\talign: clusterAlignVariants,\n\t\tjustify: justifyVariants,\n\t},\n\tdefaultVariants: {\n\t\tgap: \"md\",\n\t\talign: \"center\",\n\t\tjustify: \"start\",\n\t},\n});\n\n/** Props for the Cluster component. */\nexport interface ClusterProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof clusterVariants> {}\n\n/**\n * Horizontal flex flow with wrap. Children flow left-to-right and wrap to next line as needed.\n * @param props - Cluster props including `gap`, `align`, and `justify` variant keys.\n * @returns A flex row that wraps with consistent gap.\n * @example\n * ```tsx\n * <Cluster gap=\"sm\">\n * <Badge>react</Badge>\n * <Badge>typescript</Badge>\n * <Badge>tailwind</Badge>\n * </Cluster>\n * ```\n */\nfunction Cluster({ className, gap, align, justify, ...props }: ClusterProps) {\n\treturn (\n\t\t<div className={cn(clusterVariants({ gap, align, justify }), className)} {...props} />\n\t);\n}\n\nexport { Cluster, clusterVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport { flexAlignVariants, gapVariants } from \"../_shared/layout-variants.js\";\n\n/**\n * CVA variants for Grid — CSS grid with column-count presets and shared `gap`.\n * `cols` accepts 1/2/3/4/6 fixed columns or `\"auto-fit\"` for responsive auto-sizing\n * (in which case the consumer should pass `minColWidth` for the min track size).\n *\n * `cols` keys are TypeScript numeric literals (`cols={3}`) at the type level;\n * the schema's `enumValues` serializes them as strings for JSON-shape parity.\n */\nconst gridVariants = cva(\"grid\", {\n\tvariants: {\n\t\tcols: {\n\t\t\t1: \"grid-cols-1\",\n\t\t\t2: \"grid-cols-2\",\n\t\t\t3: \"grid-cols-3\",\n\t\t\t4: \"grid-cols-4\",\n\t\t\t6: \"grid-cols-6\",\n\t\t\t\"auto-fit\": \"\",\n\t\t},\n\t\tgap: gapVariants,\n\t\talign: flexAlignVariants,\n\t},\n\tdefaultVariants: {\n\t\tcols: 3,\n\t\tgap: \"md\",\n\t\talign: \"stretch\",\n\t},\n});\n\n/** Props for the Grid component. */\nexport interface GridProps\n\textends React.HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof gridVariants> {\n\t/**\n\t * Minimum column width for `cols=\"auto-fit\"`. Tracks repeat to fill the container,\n\t * never shrinking below this value. Ignored when `cols` is a fixed integer.\n\t * @default \"16rem\"\n\t */\n\tminColWidth?: string;\n}\n\n/**\n * CSS grid with column-count presets and consistent gap. Use for card grids,\n * dashboards, image galleries, and any layout where children should align to\n * shared row/column tracks.\n *\n * Pass `cols=\"auto-fit\"` and `minColWidth` for responsive grids that fit as\n * many columns as the viewport allows without media queries.\n *\n * @param props - Grid props including `cols`, `gap`, `align`, and `minColWidth`.\n * @returns A CSS grid container.\n * @example\n * ```tsx\n * <Grid cols={3} gap=\"md\">\n * {items.map((i) => <Card key={i.id}>{i.title}</Card>)}\n * </Grid>\n * <Grid cols=\"auto-fit\" minColWidth=\"20rem\" gap=\"lg\">\n * {responsiveItems.map(...)}\n * </Grid>\n * ```\n */\nfunction Grid({ className, cols, gap, align, minColWidth = \"16rem\", style, ...props }: GridProps) {\n\t// Consumer's inline `style` is spread last so a passed `gridTemplateColumns`\n\t// overrides our auto-fit default. That's the right precedence: explicit wins.\n\tconst inlineStyle =\n\t\tcols === \"auto-fit\"\n\t\t\t? { gridTemplateColumns: `repeat(auto-fit, minmax(${minColWidth}, 1fr))`, ...style }\n\t\t\t: style;\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(gridVariants({ cols, gap, align }), className)}\n\t\t\tstyle={inlineStyle}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Grid, gridVariants };\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * CVA variants for Spacer — declarative whitespace.\n * `size` sets `--spacer-size` to a `--space-*` token (with inline fallback);\n * `axis` consumes that var via the bracket form used everywhere else in the\n * package, so the height or width can never collapse to zero if the size\n * variant is dropped.\n */\nconst spacerVariants = cva(\"shrink-0\", {\n\tvariants: {\n\t\tsize: {\n\t\t\txs: \"[--spacer-size:var(--space-1,0.25rem)]\",\n\t\t\tsm: \"[--spacer-size:var(--space-2,0.5rem)]\",\n\t\t\tmd: \"[--spacer-size:var(--space-4,1rem)]\",\n\t\t\tlg: \"[--spacer-size:var(--space-8,2rem)]\",\n\t\t\txl: \"[--spacer-size:var(--space-16,4rem)]\",\n\t\t},\n\t\taxis: {\n\t\t\tvertical: \"h-[var(--spacer-size)] w-0\",\n\t\t\thorizontal: \"w-[var(--spacer-size)] h-0\",\n\t\t\tboth: \"h-[var(--spacer-size)] w-[var(--spacer-size)]\",\n\t\t},\n\t},\n\tdefaultVariants: {\n\t\tsize: \"md\",\n\t\taxis: \"vertical\",\n\t},\n});\n\n/** Props for the Spacer component. */\nexport interface SpacerProps\n\textends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">,\n\t\tVariantProps<typeof spacerVariants> {}\n\n/**\n * A declarative whitespace block. Use when you want to insert space between two\n * siblings without relying on margin or gap (e.g. inside a flex container that\n * doesn't own the spacing decision).\n *\n * Renders an empty `<div>` with `aria-hidden` since it has no semantic content.\n *\n * @param props - Spacer props including `size` and `axis` variant keys.\n * @returns An empty div with the requested dimension.\n * @example\n * ```tsx\n * <h1>Title</h1>\n * <Spacer size=\"lg\" />\n * <p>Body</p>\n * ```\n */\nfunction Spacer({ className, size, axis, ...props }: SpacerProps) {\n\treturn (\n\t\t<div\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={cn(spacerVariants({ size, axis }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Spacer, spacerVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n// Card consumes tokens --space-6, --space-4, --duration-normal.\n// Fallbacks match Tailwind defaults for consumers without a theme loaded.\n\n/** A container card with subtle shadow and border. */\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"rounded-lg border border-foreground/[0.08] bg-card text-card-foreground\",\n\t\t\t\t\"shadow-sm transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\"hover:shadow-md\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCard.displayName = \"Card\";\n\n/** The header section of a Card. */\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex flex-col space-y-1.5 p-[var(--space-6,1.5rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCardHeader.displayName = \"CardHeader\";\n\n/** The title element inside a CardHeader. */\nconst CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<h3\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"text-2xl font-semibold leading-none tracking-tight\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCardTitle.displayName = \"CardTitle\";\n\n/** A description element inside a CardHeader. */\nconst CardDescription = React.forwardRef<\n\tHTMLParagraphElement,\n\tReact.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n\t<p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n));\nCardDescription.displayName = \"CardDescription\";\n\n/** The main content area of a Card. */\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} className={cn(\"p-[var(--space-6,1.5rem)] pt-0\", className)} {...props} />\n\t),\n);\nCardContent.displayName = \"CardContent\";\n\n/** The footer section of a Card. */\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex items-center p-[var(--space-6,1.5rem)] pt-0\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a tabbed interface. */\nconst Tabs = TabsPrimitive.Root;\n\n/** A horizontal list of tab triggers. */\nconst TabsList = React.forwardRef<\n\tReact.ComponentRef<typeof TabsPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.List\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md border border-foreground/[0.06] bg-muted p-[var(--space-1,0.25rem)] text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTabsList.displayName = \"TabsList\";\n\n/** A clickable tab trigger that activates its associated content panel. */\nconst TabsTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof TabsPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-[var(--space-3,0.75rem)] py-1.5 text-sm font-medium\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"ring-offset-background hover:text-foreground\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTabsTrigger.displayName = \"TabsTrigger\";\n\n/** The content panel associated with a tab trigger. */\nconst TabsContent = React.forwardRef<\n\tReact.ComponentRef<typeof TabsPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.Content\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"mt-[var(--space-2,0.5rem)] ring-offset-background\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTabsContent.displayName = \"TabsContent\";\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for accordion items. Supports single or multiple open items. */\nconst Accordion = AccordionPrimitive.Root;\n\n/** A single collapsible item within an Accordion. */\nconst AccordionItem = React.forwardRef<\n\tReact.ComponentRef<typeof AccordionPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n\t<AccordionPrimitive.Item ref={ref} className={cn(\"border-b border-b-foreground/[0.08]\", className)} {...props} />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\n/** The clickable header that toggles an AccordionItem open/closed. */\nconst AccordionTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof AccordionPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<AccordionPrimitive.Header className=\"flex\">\n\t\t<AccordionPrimitive.Trigger\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-1 items-center justify-between py-[var(--space-4,1rem)] font-medium\",\n\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\"hover:underline\",\n\t\t\t\t\"[&[data-state=open]>svg]:rotate-180\",\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<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth=\"24\"\n\t\t\t\theight=\"24\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4 shrink-0 transition-transform duration-[var(--duration-normal,200ms)]\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t</svg>\n\t\t</AccordionPrimitive.Trigger>\n\t</AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = \"AccordionTrigger\";\n\n/** The collapsible content panel of an AccordionItem. */\nconst AccordionContent = React.forwardRef<\n\tReact.ComponentRef<typeof AccordionPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n\t<AccordionPrimitive.Content\n\t\tref={ref}\n\t\tclassName=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n\t\t{...props}\n\t>\n\t\t<div className={cn(\"pb-[var(--space-4,1rem)] pt-0\", className)}>{children}</div>\n\t</AccordionPrimitive.Content>\n));\nAccordionContent.displayName = \"AccordionContent\";\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n","import * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container controlling open state of a modal dialog. */\nconst Dialog = DialogPrimitive.Root;\n\n/** The element (usually a button) that opens the dialog when clicked. */\nconst DialogTrigger = DialogPrimitive.Trigger;\n\n/** Portals the dialog overlay and content into the body. */\nconst DialogPortal = DialogPrimitive.Portal;\n\n/** Closes the dialog when rendered inside DialogContent. */\nconst DialogClose = DialogPrimitive.Close;\n\n/** Dimmed backdrop rendered behind the dialog content. */\nconst DialogOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nDialogOverlay.displayName = \"DialogOverlay\";\n\ninterface DialogContentProps\n\textends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n\t/**\n\t * When `true` (the default), DialogContent caps its height at viewport-2rem\n\t * and renders children inside a padded inner scroll container. The Close\n\t * button stays anchored to the (non-scrolling) outer panel so it remains\n\t * visible even when the user scrolls long content.\n\t *\n\t * Pass `scrollable={false}` to opt out — useful when the consumer manages\n\t * its own scroll surface (e.g. CommandDialog defers scroll to cmdk's\n\t * internal CommandList).\n\t */\n\tscrollable?: boolean;\n}\n\n/** The dialog content panel, centered on the overlay. Includes a close button by default. */\nconst DialogContent = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Content>,\n\tDialogContentProps\n>(({ className, children, scrollable = true, ...props }, ref) => (\n\t<DialogPortal>\n\t\t<DialogOverlay />\n\t\t<DialogPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%]\",\n\t\t\t\tscrollable\n\t\t\t\t\t? \"max-h-[calc(100vh-2rem)] border border-foreground/[0.08] bg-background shadow-lg rounded-lg\"\n\t\t\t\t\t: \"gap-[var(--gap-md,1rem)] border border-foreground/[0.08] bg-background p-[var(--space-6,1.5rem)] shadow-lg rounded-lg\",\n\t\t\t\t\"duration-[var(--duration-normal,200ms)] data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{scrollable ? (\n\t\t\t\t<div className=\"grid gap-[var(--gap-md,1rem)] overflow-y-auto p-[var(--space-6,1.5rem)]\">\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\tchildren\n\t\t\t)}\n\t\t\t<DialogPrimitive.Close\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute right-4 top-4 z-10 rounded-sm opacity-70 ring-offset-background bg-background/80 backdrop-blur-sm\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"disabled:pointer-events-none\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t</svg>\n\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t</DialogPrimitive.Close>\n\t\t</DialogPrimitive.Content>\n\t</DialogPortal>\n));\nDialogContent.displayName = \"DialogContent\";\n\nexport type { DialogContentProps };\n\n/**\n * Header container inside DialogContent; stacks title and description.\n * @returns A div wrapping title/description with vertical rhythm\n */\nfunction DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col space-y-1.5 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container inside DialogContent; aligns action buttons.\n * @returns A div that stacks buttons on mobile and right-aligns on desktop\n */\nfunction DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Accessible dialog title; Radix wires it to aria-labelledby automatically. */\nconst DialogTitle = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nDialogTitle.displayName = \"DialogTitle\";\n\n/** Accessible dialog description; Radix wires it to aria-describedby automatically. */\nconst DialogDescription = React.forwardRef<\n\tReact.ComponentRef<typeof DialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DialogPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nDialogDescription.displayName = \"DialogDescription\";\n\nexport {\n\tDialog,\n\tDialogPortal,\n\tDialogOverlay,\n\tDialogTrigger,\n\tDialogClose,\n\tDialogContent,\n\tDialogHeader,\n\tDialogFooter,\n\tDialogTitle,\n\tDialogDescription,\n};\n","import * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a destructive-action confirmation dialog. */\nconst AlertDialog = AlertDialogPrimitive.Root;\n\n/** The element that opens the alert dialog. */\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\n\n/** Portals alert dialog content into the body. */\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\n/** Dimmed backdrop behind the alert dialog. */\nconst AlertDialogOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAlertDialogOverlay.displayName = \"AlertDialogOverlay\";\n\n/** Content panel for the alert dialog. No close button — user must choose action or cancel. */\nconst AlertDialogContent = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPortal>\n\t\t<AlertDialogOverlay />\n\t\t<AlertDialogPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-[var(--gap-md,1rem)]\",\n\t\t\t\t\"border border-foreground/[0.08] bg-background p-[var(--space-6,1.5rem)] shadow-lg rounded-lg\",\n\t\t\t\t\"duration-[var(--duration-normal,200ms)] data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</AlertDialogPortal>\n));\nAlertDialogContent.displayName = \"AlertDialogContent\";\n\n/**\n * Header container for title + description.\n * @returns A div wrapping title/description with vertical rhythm\n */\nfunction AlertDialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container for Cancel/Action buttons.\n * @returns A div stacking buttons on mobile and right-aligning on desktop\n */\nfunction AlertDialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Accessible title for the alert dialog. */\nconst AlertDialogTitle = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold\", className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogTitle.displayName = \"AlertDialogTitle\";\n\n/** Accessible description for the alert dialog. */\nconst AlertDialogDescription = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nAlertDialogDescription.displayName = \"AlertDialogDescription\";\n\n/** The destructive action button (e.g. Delete). Receives focus by default. */\nconst AlertDialogAction = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Action>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Action\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium\",\n\t\t\t\"bg-destructive text-destructive-foreground shadow-sm\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"hover:bg-destructive/90 hover:shadow-md\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\"active:scale-[0.98]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAlertDialogAction.displayName = \"AlertDialogAction\";\n\n/** The cancel button. Closes the dialog. */\nconst AlertDialogCancel = React.forwardRef<\n\tReact.ComponentRef<typeof AlertDialogPrimitive.Cancel>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n\t<AlertDialogPrimitive.Cancel\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] items-center justify-center rounded-md px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium\",\n\t\t\t\"border border-input bg-background shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md hover:inset-ring-foreground/12\",\n\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\"mt-[var(--space-2,0.5rem)] sm:mt-0\",\n\t\t\t\"active:scale-[0.98]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nAlertDialogCancel.displayName = \"AlertDialogCancel\";\n\nexport {\n\tAlertDialog,\n\tAlertDialogPortal,\n\tAlertDialogOverlay,\n\tAlertDialogTrigger,\n\tAlertDialogContent,\n\tAlertDialogHeader,\n\tAlertDialogFooter,\n\tAlertDialogTitle,\n\tAlertDialogDescription,\n\tAlertDialogAction,\n\tAlertDialogCancel,\n};\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a dropdown menu. */\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\n/** The element (button) that opens the dropdown. */\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\n/** Groups related menu items for a11y. */\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\n/** Portals dropdown content into the body. */\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\n/** Nested submenu root. */\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\n/** Group for checkable radio items (one selected at a time). */\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\n/** The visible dropdown panel. */\nconst DropdownMenuContent = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Portal>\n\t\t<DropdownMenuPrimitive.Content\n\t\t\tref={ref}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 min-w-[8rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\n/** A clickable menu item. */\nconst DropdownMenuItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tinset && \"pl-[var(--space-8,2rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nDropdownMenuItem.displayName = \"DropdownMenuItem\";\n\n/** A menu item with a checkbox state. */\nconst DropdownMenuCheckboxItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n\t<DropdownMenuPrimitive.CheckboxItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\tchecked={checked}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t</svg>\n\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = \"DropdownMenuCheckboxItem\";\n\n/** A menu item in a radio group. */\nconst DropdownMenuRadioItem = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.RadioItem>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n\t<DropdownMenuPrimitive.RadioItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<DropdownMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg viewBox=\"0 0 24 24\" className=\"h-2 w-2 fill-current\" aria-hidden=\"true\">\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t</svg>\n\t\t\t</DropdownMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = \"DropdownMenuRadioItem\";\n\n/** A non-interactive section heading inside the menu. */\nconst DropdownMenuLabel = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold\", inset && \"pl-[var(--space-8,2rem)]\", className)}\n\t\t{...props}\n\t/>\n));\nDropdownMenuLabel.displayName = \"DropdownMenuLabel\";\n\n/** Horizontal divider between menu items. */\nconst DropdownMenuSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof DropdownMenuPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<DropdownMenuPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nDropdownMenuSeparator.displayName = \"DropdownMenuSeparator\";\n\n/**\n * Right-aligned shortcut text (e.g. ⌘K) shown next to a menu item.\n * @returns A span with muted, tracked typography\n */\nfunction DropdownMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tDropdownMenu,\n\tDropdownMenuTrigger,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuCheckboxItem,\n\tDropdownMenuRadioItem,\n\tDropdownMenuLabel,\n\tDropdownMenuSeparator,\n\tDropdownMenuShortcut,\n\tDropdownMenuGroup,\n\tDropdownMenuPortal,\n\tDropdownMenuSub,\n\tDropdownMenuRadioGroup,\n};\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a popover. */\nconst Popover = PopoverPrimitive.Root;\n\n/** The element that anchors and opens the popover. */\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\n/** Helper to explicitly anchor the popover to a different element. */\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\n/** The floating popover content panel. */\nconst PopoverContent = React.forwardRef<\n\tReact.ComponentRef<typeof PopoverPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n\t<PopoverPrimitive.Portal>\n\t\t<PopoverPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 w-72 rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-4,1rem)] text-popover-foreground shadow-md outline-none\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Provider required at the root of the app or tree where tooltips are used. */\nconst TooltipProvider = TooltipPrimitive.Provider;\n\n/** Root container for a single tooltip. */\nconst Tooltip = TooltipPrimitive.Root;\n\n/** The element that shows the tooltip on hover/focus. */\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\n/** The floating tooltip content (small, hover-reveal info). */\nconst TooltipContent = React.forwardRef<\n\tReact.ComponentRef<typeof TooltipPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n\t<TooltipPrimitive.Portal>\n\t\t<TooltipPrimitive.Content\n\t\t\tref={ref}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 overflow-hidden rounded-md bg-primary px-[var(--space-3,0.75rem)] py-1.5 text-xs text-primary-foreground shadow-md\",\n\t\t\t\t\"animate-in fade-in-0 zoom-in-95\",\n\t\t\t\t\"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = \"TooltipContent\";\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","\"use client\";\n\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport {\n\tController,\n\ttype ControllerProps,\n\ttype FieldPath,\n\ttype FieldValues,\n\tFormProvider,\n\tuseFormContext,\n\tuseFormState,\n} from \"react-hook-form\";\nimport { Label } from \"../../primitives/label/label.js\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root form provider. Wraps react-hook-form's FormProvider. */\nconst Form = FormProvider;\n\ninterface FormFieldContextValue<\n\tTFieldValues extends FieldValues = FieldValues,\n\tTName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n\tname: TName;\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\n/**\n * Binds a field name to a react-hook-form Controller.\n * Provides context so FormItem children can access field state.\n * @param props - Controller props including name, control, render\n * @returns A Controller with FormFieldContext\n */\nconst FormField = <\n\tTFieldValues extends FieldValues = FieldValues,\n\tTName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n\t...props\n}: ControllerProps<TFieldValues, TName>) => {\n\treturn (\n\t\t<FormFieldContext.Provider value={{ name: props.name }}>\n\t\t\t<Controller {...props} />\n\t\t</FormFieldContext.Provider>\n\t);\n};\n\ninterface FormItemContextValue {\n\tid: string;\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);\n\n/**\n * Hook that returns the current field's id, name, error, and derived aria ids.\n * Must be called inside a FormField + FormItem subtree.\n * @returns Field state + aria descriptors\n */\nfunction useFormField() {\n\tconst fieldContext = React.useContext(FormFieldContext);\n\tconst itemContext = React.useContext(FormItemContext);\n\tif (!fieldContext?.name) {\n\t\tthrow new Error(\"useFormField should be used within <FormField>\");\n\t}\n\n\tconst { getFieldState } = useFormContext();\n\tconst formState = useFormState({ name: fieldContext.name });\n\tconst fieldState = getFieldState(fieldContext.name, formState);\n\n\tconst { id } = itemContext;\n\treturn {\n\t\tid,\n\t\tname: fieldContext.name,\n\t\tformItemId: `${id}-form-item`,\n\t\tformDescriptionId: `${id}-form-item-description`,\n\t\tformMessageId: `${id}-form-item-message`,\n\t\t...fieldState,\n\t};\n}\n\n/** Wraps a single form field (label + control + description + message). */\nconst FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => {\n\t\tconst id = React.useId();\n\t\treturn (\n\t\t\t<FormItemContext.Provider value={{ id }}>\n\t\t\t\t<div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n\t\t\t</FormItemContext.Provider>\n\t\t);\n\t},\n);\nFormItem.displayName = \"FormItem\";\n\n/** Accessible label wired to the FormItem's control. Turns red on error. */\nconst FormLabel = React.forwardRef<\n\tReact.ComponentRef<typeof LabelPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n\tconst { error, formItemId } = useFormField();\n\treturn (\n\t\t<Label\n\t\t\tref={ref}\n\t\t\tclassName={cn(error && \"text-destructive\", className)}\n\t\t\thtmlFor={formItemId}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nFormLabel.displayName = \"FormLabel\";\n\n/** Wraps the form control and wires id + aria-describedby + aria-invalid. */\nconst FormControl = React.forwardRef<\n\tReact.ComponentRef<typeof Slot>,\n\tReact.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n\tconst { error, formItemId, formDescriptionId, formMessageId } = useFormField();\n\treturn (\n\t\t<Slot\n\t\t\tref={ref}\n\t\t\tid={formItemId}\n\t\t\taria-describedby={\n\t\t\t\terror ? `${formDescriptionId} ${formMessageId}` : `${formDescriptionId}`\n\t\t\t}\n\t\t\taria-invalid={!!error}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nFormControl.displayName = \"FormControl\";\n\n/** Optional helper text below the control. */\nconst FormDescription = React.forwardRef<\n\tHTMLParagraphElement,\n\tReact.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n\tconst { formDescriptionId } = useFormField();\n\treturn (\n\t\t<p\n\t\t\tref={ref}\n\t\t\tid={formDescriptionId}\n\t\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nFormDescription.displayName = \"FormDescription\";\n\n/** Validation error message. Renders the error string when the field is invalid. */\nconst FormMessage = React.forwardRef<\n\tHTMLParagraphElement,\n\tReact.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n\tconst { error, formMessageId } = useFormField();\n\tconst body = error?.message ? String(error.message) : children;\n\tif (!body) return null;\n\treturn (\n\t\t<p\n\t\t\tref={ref}\n\t\t\tid={formMessageId}\n\t\t\tclassName={cn(\"text-sm font-medium text-destructive\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{body}\n\t\t</p>\n\t);\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n\tuseFormField,\n\tForm,\n\tFormItem,\n\tFormLabel,\n\tFormControl,\n\tFormDescription,\n\tFormMessage,\n\tFormField,\n};\n","import { type VariantProps, cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nconst alertVariants = cva(\n\t[\n\t\t\"relative w-full rounded-lg border px-[var(--space-4,1rem)] py-[var(--space-3,0.75rem)] text-sm\",\n\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\"[&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-foreground\",\n\t\t\"[&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px]\",\n\t].join(\" \"),\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"border-foreground/[0.08] bg-background text-foreground\",\n\t\t\t\tdestructive:\n\t\t\t\t\t\"border-destructive/50 text-destructive [&>svg]:text-destructive bg-destructive/5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { variant: \"default\" },\n\t},\n);\n\n/** An inline notification banner for important messages. */\nconst Alert = React.forwardRef<\n\tHTMLDivElement,\n\tReact.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n\t<div\n\t\tref={ref}\n\t\trole=\"alert\"\n\t\tclassName={cn(alertVariants({ variant }), className)}\n\t\t{...props}\n\t/>\n));\nAlert.displayName = \"Alert\";\n\n/** The alert title heading. */\nconst AlertTitle = React.forwardRef<\n\tHTMLHeadingElement,\n\tReact.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n\t<h5\n\t\tref={ref}\n\t\tclassName={cn(\"mb-[var(--space-1,0.25rem)] font-medium leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nAlertTitle.displayName = \"AlertTitle\";\n\n/** The alert description. Renders a div so paragraph children can be styled via [&_p]. */\nconst AlertDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} className={cn(\"text-sm [&_p]:leading-relaxed\", className)} {...props} />\n\t),\n);\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants };\n","\"use client\";\n\nimport { Toaster as SonnerToaster, toast } from \"sonner\";\n\ntype ToasterProps = React.ComponentProps<typeof SonnerToaster>;\n\n/**\n * The global toast container. Render once in your app root.\n * Re-export of Sonner's Toaster styled to use Hex UI theme tokens.\n * @param props - Sonner Toaster props (position, richColors, etc.)\n * @returns A styled portal container for toast notifications\n */\nfunction Toaster({ ...props }: ToasterProps) {\n\treturn (\n\t\t<SonnerToaster\n\t\t\ttheme=\"system\"\n\t\t\tclassName=\"toaster group\"\n\t\t\ttoastOptions={{\n\t\t\t\tclassNames: {\n\t\t\t\t\ttoast:\n\t\t\t\t\t\t\"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg\",\n\t\t\t\t\tdescription: \"group-[.toast]:text-muted-foreground\",\n\t\t\t\t\tactionButton:\n\t\t\t\t\t\t\"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground\",\n\t\t\t\t\tcancelButton:\n\t\t\t\t\t\t\"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground\",\n\t\t\t\t},\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Toaster, toast };\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\n/** Root container controlling the expanded state of the content. */\nconst Collapsible = CollapsiblePrimitive.Root;\n\n/** The element that toggles the Collapsible open/closed. */\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\n/** The collapsible content shown/hidden by the trigger. */\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a hover-card. */\nconst HoverCard = HoverCardPrimitive.Root;\n\n/** The element that reveals the card on hover/focus. */\nconst HoverCardTrigger = HoverCardPrimitive.Trigger;\n\n/** The floating hover-card content panel. Richer than a tooltip. */\nconst HoverCardContent = React.forwardRef<\n\tReact.ComponentRef<typeof HoverCardPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n\t<HoverCardPrimitive.Portal>\n\t\t<HoverCardPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 w-64 rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-4,1rem)] text-popover-foreground shadow-md outline-none\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\t\"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\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</HoverCardPrimitive.Portal>\n));\nHoverCardContent.displayName = \"HoverCardContent\";\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","import * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a context menu (right-click menu). */\nconst ContextMenu = ContextMenuPrimitive.Root;\n\n/** The element that triggers the context menu on right-click. */\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger;\n\n/** Groups related items for a11y. */\nconst ContextMenuGroup = ContextMenuPrimitive.Group;\n\n/** Portals content into the body. */\nconst ContextMenuPortal = ContextMenuPrimitive.Portal;\n\n/** Group for checkable radio items. */\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;\n\n/** The menu panel shown when the trigger is right-clicked. */\nconst ContextMenuContent = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<ContextMenuPrimitive.Portal>\n\t\t<ContextMenuPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 min-w-[8rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</ContextMenuPrimitive.Portal>\n));\nContextMenuContent.displayName = \"ContextMenuContent\";\n\n/** A clickable menu item. */\nconst ContextMenuItem = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<ContextMenuPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tinset && \"pl-[var(--space-8,2rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nContextMenuItem.displayName = \"ContextMenuItem\";\n\n/** A checkable menu item. */\nconst ContextMenuCheckboxItem = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.CheckboxItem>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n\t<ContextMenuPrimitive.CheckboxItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\tchecked={checked}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<ContextMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t</svg>\n\t\t\t</ContextMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</ContextMenuPrimitive.CheckboxItem>\n));\nContextMenuCheckboxItem.displayName = \"ContextMenuCheckboxItem\";\n\n/** A radio menu item. */\nconst ContextMenuRadioItem = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.RadioItem>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n\t<ContextMenuPrimitive.RadioItem\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-[var(--space-8,2rem)] pr-[var(--space-2,0.5rem)] text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n\t\t\t<ContextMenuPrimitive.ItemIndicator>\n\t\t\t\t<svg viewBox=\"0 0 24 24\" className=\"h-2 w-2 fill-current\" aria-hidden=\"true\">\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t</svg>\n\t\t\t</ContextMenuPrimitive.ItemIndicator>\n\t\t</span>\n\t\t{children}\n\t</ContextMenuPrimitive.RadioItem>\n));\nContextMenuRadioItem.displayName = \"ContextMenuRadioItem\";\n\n/** A non-interactive heading label. */\nconst ContextMenuLabel = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<ContextMenuPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold text-foreground\", inset && \"pl-[var(--space-8,2rem)]\", className)}\n\t\t{...props}\n\t/>\n));\nContextMenuLabel.displayName = \"ContextMenuLabel\";\n\n/** Horizontal divider. */\nconst ContextMenuSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof ContextMenuPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<ContextMenuPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nContextMenuSeparator.displayName = \"ContextMenuSeparator\";\n\n/**\n * Right-aligned shortcut text (e.g. ⌘⇧N).\n * @returns A span with muted typography\n */\nfunction ContextMenuShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tContextMenu,\n\tContextMenuTrigger,\n\tContextMenuContent,\n\tContextMenuItem,\n\tContextMenuCheckboxItem,\n\tContextMenuRadioItem,\n\tContextMenuLabel,\n\tContextMenuSeparator,\n\tContextMenuShortcut,\n\tContextMenuGroup,\n\tContextMenuPortal,\n\tContextMenuRadioGroup,\n};\n","import * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Top-level menu bar (File / Edit / View style). */\nconst Menubar = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n\t<MenubarPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-[var(--control-height-md,2.5rem)] items-center space-x-1 rounded-md border border-foreground/[0.08] bg-background p-[var(--space-1,0.25rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nMenubar.displayName = \"Menubar\";\n\n// The explicit `as typeof ...Primitive.X` casts below are load-bearing: without them,\n// tsup's dts build fails with TS2742 \"The inferred type of X cannot be named without a\n// reference to @radix-ui/react-context\" on direct re-exports of Radix primitives. Do not\n// remove without verifying `pnpm --filter @hex-core/components build` still succeeds.\n\n/** A top-level menu in the bar (e.g. \"File\"). */\nconst MenubarMenu = MenubarPrimitive.Menu as typeof MenubarPrimitive.Menu;\n\n/** Groups related items inside a menu content. */\nconst MenubarGroup = MenubarPrimitive.Group as typeof MenubarPrimitive.Group;\n\n/** Portals menu content into the body. */\nconst MenubarPortal = MenubarPrimitive.Portal as typeof MenubarPrimitive.Portal;\n\n/** Group for checkable radio items. */\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup as typeof MenubarPrimitive.RadioGroup;\n\n/** The clickable menu label in the bar. */\nconst MenubarTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n\t<MenubarPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex cursor-default select-none items-center rounded-sm px-[var(--space-3,0.75rem)] py-1.5 text-sm font-medium outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nMenubarTrigger.displayName = \"MenubarTrigger\";\n\n/** The menu panel shown when a trigger opens. */\nconst MenubarContent = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>\n>(({ className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props }, ref) => (\n\t<MenubarPrimitive.Portal>\n\t\t<MenubarPrimitive.Content\n\t\t\tref={ref}\n\t\t\talign={align}\n\t\t\talignOffset={alignOffset}\n\t\t\tsideOffset={sideOffset}\n\t\t\tclassName={cn(\n\t\t\t\t\"z-50 min-w-[12rem] overflow-hidden rounded-md border border-foreground/[0.08] bg-popover p-[var(--space-1,0.25rem)] text-popover-foreground shadow-md\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\t\t\"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</MenubarPrimitive.Portal>\n));\nMenubarContent.displayName = \"MenubarContent\";\n\n/** A clickable menu item. */\nconst MenubarItem = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<MenubarPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none\",\n\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"focus:bg-accent focus:text-accent-foreground\",\n\t\t\t\"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n\t\t\tinset && \"pl-[var(--space-8,2rem)]\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nMenubarItem.displayName = \"MenubarItem\";\n\n/** A non-interactive heading label. */\nconst MenubarLabel = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Label>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n\t<MenubarPrimitive.Label\n\t\tref={ref}\n\t\tclassName={cn(\"px-[var(--space-2,0.5rem)] py-1.5 text-sm font-semibold\", inset && \"pl-[var(--space-8,2rem)]\", className)}\n\t\t{...props}\n\t/>\n));\nMenubarLabel.displayName = \"MenubarLabel\";\n\n/** Horizontal divider. */\nconst MenubarSeparator = React.forwardRef<\n\tReact.ComponentRef<typeof MenubarPrimitive.Separator>,\n\tReact.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n\t<MenubarPrimitive.Separator\n\t\tref={ref}\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] my-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nMenubarSeparator.displayName = \"MenubarSeparator\";\n\n/**\n * Right-aligned keyboard shortcut text.\n * @returns A span with muted typography\n */\nfunction MenubarShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"ml-auto text-xs tracking-widest text-muted-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tMenubar,\n\tMenubarMenu,\n\tMenubarTrigger,\n\tMenubarContent,\n\tMenubarItem,\n\tMenubarLabel,\n\tMenubarSeparator,\n\tMenubarShortcut,\n\tMenubarGroup,\n\tMenubarPortal,\n\tMenubarRadioGroup,\n};\n","import * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\";\nimport { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container for a navigation menu. Renders a viewport for content panels. */\nconst NavigationMenu = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Root\n\t\tref={ref}\n\t\tclassName={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t<NavigationMenuViewport />\n\t</NavigationMenuPrimitive.Root>\n));\nNavigationMenu.displayName = \"NavigationMenu\";\n\n/** List of top-level NavigationMenu items. */\nconst NavigationMenuList = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<NavigationMenuPrimitive.List\n\t\tref={ref}\n\t\tclassName={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n\t\t{...props}\n\t/>\n));\nNavigationMenuList.displayName = \"NavigationMenuList\";\n\n/** A single top-level item (wraps trigger + content). */\nconst NavigationMenuItem = NavigationMenuPrimitive.Item;\n\nconst navigationMenuTriggerStyle = cva(\n\t\"group inline-flex h-[var(--control-height-md,2.5rem)] w-max items-center justify-center rounded-md bg-background px-[var(--space-4,1rem)] py-[var(--space-2,0.5rem)] text-sm font-medium transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\",\n);\n\n/** The clickable trigger that opens a nav-menu content panel. */\nconst NavigationMenuTrigger = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Trigger\n\t\tref={ref}\n\t\tclassName={cn(navigationMenuTriggerStyle(), \"group\", className)}\n\t\t{...props}\n\t>\n\t\t{children}\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"relative top-[1px] ml-[var(--space-1,0.25rem)] h-3 w-3 transition duration-[var(--duration-normal,200ms)] group-data-[state=open]:rotate-180\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t</svg>\n\t</NavigationMenuPrimitive.Trigger>\n));\nNavigationMenuTrigger.displayName = \"NavigationMenuTrigger\";\n\n/** The content panel (e.g. mega-menu). */\nconst NavigationMenuContent = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Content\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nNavigationMenuContent.displayName = \"NavigationMenuContent\";\n\n/** A direct link (no content panel). */\nconst NavigationMenuLink = NavigationMenuPrimitive.Link;\n\n/** The viewport that hosts the active content panel. Rendered inside NavigationMenu. */\nconst NavigationMenuViewport = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Viewport>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n\t<div className=\"absolute left-0 top-full flex justify-center\">\n\t\t<NavigationMenuPrimitive.Viewport\n\t\t\tclassName={cn(\n\t\t\t\t\"origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border border-foreground/[0.08] bg-popover text-popover-foreground shadow-lg\",\n\t\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90\",\n\t\t\t\t\"md:w-[var(--radix-navigation-menu-viewport-width)]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tref={ref}\n\t\t\t{...props}\n\t\t/>\n\t</div>\n));\nNavigationMenuViewport.displayName = \"NavigationMenuViewport\";\n\n/** Visual indicator (arrow) pointing at the active trigger. */\nconst NavigationMenuIndicator = React.forwardRef<\n\tReact.ComponentRef<typeof NavigationMenuPrimitive.Indicator>,\n\tReact.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n\t<NavigationMenuPrimitive.Indicator\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t>\n\t\t<div className=\"relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-foreground/[0.12] shadow-md\" />\n\t</NavigationMenuPrimitive.Indicator>\n));\nNavigationMenuIndicator.displayName = \"NavigationMenuIndicator\";\n\nexport {\n\tnavigationMenuTriggerStyle,\n\tNavigationMenu,\n\tNavigationMenuList,\n\tNavigationMenuItem,\n\tNavigationMenuContent,\n\tNavigationMenuTrigger,\n\tNavigationMenuLink,\n\tNavigationMenuIndicator,\n\tNavigationMenuViewport,\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root nav landmark for breadcrumb navigation. */\nconst Breadcrumb = React.forwardRef<HTMLElement, React.ComponentPropsWithoutRef<\"nav\">>(\n\t(props, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />,\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\n/** Ordered list of breadcrumb items. */\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<\"ol\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ol\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-[var(--gap-sm,0.5rem)].5\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\n/** A single breadcrumb list item. */\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<\"li\">>(\n\t({ className, ...props }, ref) => (\n\t\t<li\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"inline-flex items-center gap-1.5\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\n/** A link inside a breadcrumb item. Use asChild to render e.g. Next.js Link. */\nconst BreadcrumbLink = React.forwardRef<\n\tHTMLAnchorElement,\n\tReact.ComponentPropsWithoutRef<\"a\"> & { asChild?: boolean }\n>(({ asChild, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"a\";\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:text-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\n/** The final breadcrumb (current page). Not interactive. */\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<\"span\">>(\n\t({ className, ...props }, ref) => (\n\t\t<span\n\t\t\tref={ref}\n\t\t\trole=\"link\"\n\t\t\taria-disabled=\"true\"\n\t\t\taria-current=\"page\"\n\t\t\tclassName={cn(\"font-normal text-foreground\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\n/**\n * Visual separator between breadcrumb items (chevron by default).\n * @returns An li rendering a decorative chevron icon\n */\nfunction BreadcrumbSeparator({\n\tchildren,\n\tclassName,\n\t...props\n}: React.ComponentProps<\"li\">) {\n\treturn (\n\t\t<li role=\"presentation\" aria-hidden=\"true\" className={cn(\"[&>svg]:h-3.5 [&>svg]:w-3.5\", className)} {...props}>\n\t\t\t{children ?? (\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<polyline points=\"9 18 15 12 9 6\" />\n\t\t\t\t</svg>\n\t\t\t)}\n\t\t</li>\n\t);\n}\n\n/**\n * Ellipsis for truncated breadcrumb trails.\n * @returns A span containing a decorative SVG (aria-hidden) plus a sr-only \"More pages\" label for AT.\n */\nfunction BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<\"span\">) {\n\t// Wrapper stays reachable by AT; only the decorative SVG is aria-hidden so the\n\t// sr-only \"More pages\" label actually reaches screen readers.\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"19\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"5\" cy=\"12\" r=\"1\" />\n\t\t\t</svg>\n\t\t\t<span className=\"sr-only\">More pages</span>\n\t\t</span>\n\t);\n}\n\nexport {\n\tBreadcrumb,\n\tBreadcrumbList,\n\tBreadcrumbItem,\n\tBreadcrumbLink,\n\tBreadcrumbPage,\n\tBreadcrumbSeparator,\n\tBreadcrumbEllipsis,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** A responsive container + styled HTML table. */\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div className=\"relative w-full overflow-auto\">\n\t\t\t<table\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\"w-full caption-bottom text-sm\", className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</div>\n\t),\n);\nTable.displayName = \"Table\";\n\n/** `<thead>` wrapper with bottom border. */\nconst TableHeader = React.forwardRef<\n\tHTMLTableSectionElement,\n\tReact.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n\t<thead ref={ref} className={cn(\"[&_tr]:border-b [&_tr]:border-b-foreground/[0.08]\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\n/** `<tbody>` wrapper removing bottom border on last row. */\nconst TableBody = React.forwardRef<\n\tHTMLTableSectionElement,\n\tReact.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n\t<tbody ref={ref} className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n));\nTableBody.displayName = \"TableBody\";\n\n/** `<tfoot>` wrapper with muted background. */\nconst TableFooter = React.forwardRef<\n\tHTMLTableSectionElement,\n\tReact.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n\t<tfoot\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"border-t border-t-foreground/[0.08] bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableFooter.displayName = \"TableFooter\";\n\n/** `<tr>` with hover + selected states. */\nconst TableRow = React.forwardRef<\n\tHTMLTableRowElement,\n\tReact.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n\t<tr\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"border-b border-b-foreground/[0.08] transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-muted/50 data-[state=selected]:bg-muted\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableRow.displayName = \"TableRow\";\n\n/** `<th>` with left-aligned muted text. */\nconst TableHead = React.forwardRef<\n\tHTMLTableCellElement,\n\tReact.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n\t<th\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"h-[var(--control-height-md,2.5rem)] px-[var(--space-4,1rem)] text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableHead.displayName = \"TableHead\";\n\n/** `<td>` with consistent padding. */\nconst TableCell = React.forwardRef<\n\tHTMLTableCellElement,\n\tReact.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n\t<td\n\t\tref={ref}\n\t\tclassName={cn(\"p-[var(--space-4,1rem)] align-middle [&:has([role=checkbox])]:pr-0\", className)}\n\t\t{...props}\n\t/>\n));\nTableCell.displayName = \"TableCell\";\n\n/**\n * Visible `<caption>` rendered below the table. The parent `<Table>` sets\n * `caption-bottom`, so the caption is announced first by screen readers when\n * entering the table, then visually placed below the rows.\n */\nconst TableCaption = React.forwardRef<\n\tHTMLTableCaptionElement,\n\tReact.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n\t<caption\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"caption-bottom mt-[var(--space-4,1rem)] text-sm text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n\tTable,\n\tTableHeader,\n\tTableBody,\n\tTableFooter,\n\tTableHead,\n\tTableRow,\n\tTableCell,\n\tTableCaption,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n\ttype ColumnDef,\n\tflexRender,\n\tgetCoreRowModel,\n\tuseReactTable,\n} from \"@tanstack/react-table\";\nimport {\n\tTable,\n\tTableBody,\n\tTableCaption,\n\tTableCell,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"../table/table.js\";\n\n/**\n * Generic DataTable wrapper that renders a TanStack Table model using Hex UI's\n * Table primitives. Pass columns + data; use TanStack hooks for sorting,\n * filtering, pagination, row-selection as needed.\n * @template TData - Row data type. Cell value types are inferred per column by TanStack.\n */\nexport interface DataTableProps<TData> {\n\tcolumns: ColumnDef<TData, unknown>[];\n\tdata: TData[];\n\t/**\n\t * Visible caption rendered below the table. Announced by screen readers\n\t * when the user enters the table. Provide either `caption` or `aria-label`.\n\t */\n\tcaption?: React.ReactNode;\n\t/**\n\t * Accessible label for the table when no visible caption is shown.\n\t * Forwarded as `aria-label` on the underlying `<table>` element. Kebab-case\n\t * to match the canonical ARIA prop convention used elsewhere in Hex UI.\n\t */\n\t\"aria-label\"?: string;\n}\n\n/**\n * Render a data-driven table from TanStack column definitions.\n * @param props - Columns, data, and optional accessible labelling (`caption` or `aria-label`)\n * @returns A styled Table rendered from the TanStack row model\n */\nexport function DataTable<TData>({\n\tcolumns,\n\tdata,\n\tcaption,\n\t\"aria-label\": ariaLabel,\n}: DataTableProps<TData>) {\n\tconst table = useReactTable({\n\t\tdata,\n\t\tcolumns,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t});\n\n\treturn (\n\t\t<div className=\"rounded-md border border-foreground/[0.08]\">\n\t\t\t<Table aria-label={ariaLabel}>\n\t\t\t\t{caption ? <TableCaption>{caption}</TableCaption> : null}\n\t\t\t\t<TableHeader>\n\t\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\n\t\t\t\t\t\t<TableRow key={headerGroup.id}>\n\t\t\t\t\t\t\t{headerGroup.headers.map((header) => (\n\t\t\t\t\t\t\t\t<TableHead key={header.id}>\n\t\t\t\t\t\t\t\t\t{header.isPlaceholder\n\t\t\t\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t\t\t\t: flexRender(header.column.columnDef.header, header.getContext())}\n\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t))}\n\t\t\t\t</TableHeader>\n\t\t\t\t<TableBody>\n\t\t\t\t\t{table.getRowModel().rows?.length ? (\n\t\t\t\t\t\ttable.getRowModel().rows.map((row) => (\n\t\t\t\t\t\t\t<TableRow key={row.id} data-state={row.getIsSelected() && \"selected\"}>\n\t\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => (\n\t\t\t\t\t\t\t\t\t<TableCell key={cell.id}>\n\t\t\t\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\n\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t))\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t<TableCell colSpan={columns.length} className=\"h-24 text-center\">\n\t\t\t\t\t\t\t\tNo results.\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t)}\n\t\t\t\t</TableBody>\n\t\t\t</Table>\n\t\t</div>\n\t);\n}\n","import * as React from \"react\";\nimport { type ButtonProps, buttonVariants } from \"../../primitives/button/button.js\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * Root nav landmark for pagination controls.\n * @returns A centered nav element with aria-label='pagination'\n */\nfunction Pagination({ className, ...props }: React.ComponentProps<\"nav\">) {\n\treturn (\n\t\t<nav\n\t\t\trole=\"navigation\"\n\t\t\taria-label=\"pagination\"\n\t\t\tclassName={cn(\"mx-auto flex w-full justify-center\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Ordered list wrapper for pagination links. */\nconst PaginationContent = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ul\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex flex-row items-center gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nPaginationContent.displayName = \"PaginationContent\";\n\n/** A pagination list item wrapper. */\nconst PaginationItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n\t({ className, ...props }, ref) => <li ref={ref} className={className} {...props} />,\n);\nPaginationItem.displayName = \"PaginationItem\";\n\ntype PaginationLinkProps = {\n\tisActive?: boolean;\n} & Pick<ButtonProps, \"size\"> &\n\tReact.ComponentProps<\"a\">;\n\n/**\n * A pagination link styled as a button. Mark the current page with isActive.\n * @returns An anchor element styled via buttonVariants\n */\nfunction PaginationLink({\n\tclassName,\n\tisActive,\n\tsize = \"icon\",\n\t...props\n}: PaginationLinkProps) {\n\treturn (\n\t\t<a\n\t\t\taria-current={isActive ? \"page\" : undefined}\n\t\t\tclassName={cn(\n\t\t\t\tbuttonVariants({ variant: isActive ? \"outline\" : \"ghost\", size }),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Previous-page link with chevron-left icon.\n * @returns A PaginationLink with aria-label='Go to previous page'\n */\nfunction PaginationPrevious({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n\treturn (\n\t\t<PaginationLink\n\t\t\taria-label=\"Go to previous page\"\n\t\t\tsize=\"default\"\n\t\t\tclassName={cn(\"gap-1 pl-2.5\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"15 18 9 12 15 6\" />\n\t\t\t</svg>\n\t\t\t<span>Previous</span>\n\t\t</PaginationLink>\n\t);\n}\n\n/**\n * Next-page link with chevron-right icon.\n * @returns A PaginationLink with aria-label='Go to next page'\n */\nfunction PaginationNext({ className, ...props }: React.ComponentProps<typeof PaginationLink>) {\n\treturn (\n\t\t<PaginationLink\n\t\t\taria-label=\"Go to next page\"\n\t\t\tsize=\"default\"\n\t\t\tclassName={cn(\"gap-1 pr-2.5\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span>Next</span>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<polyline points=\"9 18 15 12 9 6\" />\n\t\t\t</svg>\n\t\t</PaginationLink>\n\t);\n}\n\n/**\n * Ellipsis placeholder for truncated page ranges (e.g. 1 … 5 6 7 … 99).\n * @returns A span containing a decorative SVG (aria-hidden) plus a sr-only \"More pages\" label for AT.\n */\nfunction PaginationEllipsis({ className, ...props }: React.ComponentProps<\"span\">) {\n\t// Wrapper stays reachable by AT; only the decorative SVG is aria-hidden so the\n\t// sr-only \"More pages\" label actually reaches screen readers.\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\"flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"19\" cy=\"12\" r=\"1\" />\n\t\t\t\t<circle cx=\"5\" cy=\"12\" r=\"1\" />\n\t\t\t</svg>\n\t\t\t<span className=\"sr-only\">More pages</span>\n\t\t</span>\n\t);\n}\n\nexport {\n\tPagination,\n\tPaginationContent,\n\tPaginationEllipsis,\n\tPaginationItem,\n\tPaginationLink,\n\tPaginationNext,\n\tPaginationPrevious,\n};\n","import * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { cn } from \"../../lib/utils.js\";\n\n/*\n * react-day-picker v9 renders each caption-layout dropdown as:\n * <span class=\"rdp-dropdown_root\">\n * <select class=\"rdp-dropdown\">…</select>\n * <span aria-hidden=\"true\">{label}<chevron/></span>\n * </span>\n * The library expects the consumer's theme to layer the native <select>\n * transparently over the visible label span. Without that overlay both\n * elements paint side-by-side and the month/year labels duplicate. We use a\n * plain <style> block (rather than Tailwind arbitrary variants) because the\n * `_` in the rdp class names trips up Tailwind's underscore-as-space rule and\n * RDP v9's ClassNames merger doesn't run user classes for these keys.\n */\nconst RDP_DROPDOWN_OVERLAY_CSS = `\n.rdp-dropdowns {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: var(--gap-sm, 0.5rem);\n\tfont-size: 0.875rem;\n\tfont-weight: 500;\n}\n.rdp-dropdown_root {\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-1, 0.25rem);\n\tborder-radius: 0.375rem;\n\tpadding: var(--space-1, 0.25rem) var(--space-2, 0.5rem);\n\ttransition: background-color var(--duration-normal, 200ms) ease-out;\n}\n.rdp-dropdown_root:hover {\n\tbackground-color: hsl(var(--accent));\n}\n.rdp-dropdown_root:has(:focus-visible) {\n\toutline: 2px solid hsl(var(--ring));\n\toutline-offset: 2px;\n}\n.rdp-dropdown {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 10;\n\twidth: 100%;\n\theight: 100%;\n\tcursor: pointer;\n\tappearance: none;\n\tbackground: transparent;\n\tborder: 0;\n\topacity: 0;\n}\n.rdp-dropdown:disabled {\n\tcursor: not-allowed;\n}\n`;\n\n/**\n * Calendar date grid built on react-day-picker v9. Forwards all DayPicker\n * props. Pair `mode` + `selected` + `onSelect` for selection control;\n * pass `captionLayout=\"dropdown\"` with `startMonth`/`endMonth` for\n * native year-dropdown navigation.\n * @returns A themed react-day-picker instance with our dropdown overlay CSS.\n */\nfunction Calendar({\n\tclassName,\n\tclassNames,\n\tshowOutsideDays = true,\n\t...props\n}: React.ComponentProps<typeof DayPicker>) {\n\treturn (\n\t\t<>\n\t\t\t<style\n\t\t\t\t// Single static stylesheet; React inlines once per page\n\t\t\t\t// regardless of Calendar instance count.\n\t\t\t\tdangerouslySetInnerHTML={{ __html: RDP_DROPDOWN_OVERLAY_CSS }}\n\t\t\t/>\n\t\t<DayPicker\n\t\t\tshowOutsideDays={showOutsideDays}\n\t\t\tclassName={cn(\"relative p-[var(--space-3,0.75rem)]\", className)}\n\t\t\tclassNames={{\n\t\t\t\tmonths: \"flex flex-col sm:flex-row gap-[var(--gap-md,1rem)]\",\n\t\t\t\tmonth: \"flex flex-col gap-[var(--gap-md,1rem)]\",\n\t\t\t\tmonth_caption: \"flex h-7 items-center justify-center\",\n\t\t\t\tcaption_label: \"text-sm font-medium\",\n\t\t\t\tnav: \"absolute inset-x-3 top-3 z-10 flex items-center justify-between pointer-events-none [&>button]:pointer-events-auto\",\n\t\t\t\tbutton_previous: cn(\n\t\t\t\t\t\"inline-flex h-7 w-7 items-center justify-center rounded-md border border-foreground/[0.08] bg-transparent p-0 opacity-60 transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30\",\n\t\t\t\t),\n\t\t\t\tbutton_next: cn(\n\t\t\t\t\t\"inline-flex h-7 w-7 items-center justify-center rounded-md border border-foreground/[0.08] bg-transparent p-0 opacity-60 transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100 disabled:pointer-events-none disabled:opacity-30\",\n\t\t\t\t),\n\t\t\t\tmonth_grid: \"w-full border-collapse space-y-1\",\n\t\t\t\tweekdays: \"flex\",\n\t\t\t\tweekday: \"text-muted-foreground rounded-md w-[var(--control-height-sm,2.25rem)] font-normal text-[0.8rem]\",\n\t\t\t\tweek: \"flex w-full mt-[var(--space-2,0.5rem)]\",\n\t\t\t\tday: \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].range-end)]:rounded-r-md [&:has([aria-selected].range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\",\n\t\t\t\tday_button:\n\t\t\t\t\t\"inline-flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center rounded-md p-0 text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 aria-selected:opacity-100\",\n\t\t\t\tselected:\n\t\t\t\t\t\"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n\t\t\t\ttoday: \"bg-accent text-accent-foreground\",\n\t\t\t\toutside:\n\t\t\t\t\t\"day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground\",\n\t\t\t\tdisabled: \"text-muted-foreground opacity-50\",\n\t\t\t\trange_start: \"day-range-start range-start\",\n\t\t\t\trange_end: \"day-range-end range-end\",\n\t\t\t\trange_middle:\n\t\t\t\t\t\"aria-selected:bg-accent aria-selected:text-accent-foreground rounded-none\",\n\t\t\t\thidden: \"invisible\",\n\t\t\t\t...classNames,\n\t\t\t}}\n\t\t\tcomponents={{\n\t\t\t\tChevron: ({ orientation, className: chevronClassName }) => {\n\t\t\t\t\tconst rotation =\n\t\t\t\t\t\torientation === \"left\"\n\t\t\t\t\t\t\t? \"rotate-90\"\n\t\t\t\t\t\t\t: orientation === \"right\"\n\t\t\t\t\t\t\t\t? \"-rotate-90\"\n\t\t\t\t\t\t\t\t: orientation === \"up\"\n\t\t\t\t\t\t\t\t\t? \"rotate-180\"\n\t\t\t\t\t\t\t\t\t: \"\";\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\tclassName={cn(\"h-4 w-4\", rotation, chevronClassName)}\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t\t</>\n\t);\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import { format } from \"date-fns\";\nimport * as React from \"react\";\nimport { Calendar } from \"../calendar/calendar.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/popover.js\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface DatePickerProps {\n\t/** Controlled selected date. */\n\tvalue?: Date;\n\t/** Fired when the user picks a date in the calendar. */\n\tonChange?: (date: Date | undefined) => void;\n\t/** Placeholder shown when no date is selected. */\n\tplaceholder?: string;\n\t/** date-fns format string for the trigger label. */\n\tdateFormat?: string;\n\t/** Disable the trigger. */\n\tdisabled?: boolean;\n\t/** Extra class names on the trigger button. */\n\tclassName?: string;\n\t/** Accessible label for the trigger (required when no visible label is adjacent). */\n\t\"aria-label\"?: string;\n\t/**\n\t * Caption layout forwarded to react-day-picker. Use `\"dropdown\"` (or\n\t * `\"dropdown-years\"` / `\"dropdown-months\"`) to render native `<select>`\n\t * navigation — useful for birth-date pickers and far-out years.\n\t *\n\t * Always pair `dropdown` layouts with explicit `startMonth` and `endMonth`;\n\t * the RDP default span is ±100 years.\n\t */\n\tcaptionLayout?: \"label\" | \"dropdown\" | \"dropdown-months\" | \"dropdown-years\";\n\t/** Earliest month/year navigable in the calendar. Forwarded to react-day-picker. */\n\tstartMonth?: Date;\n\t/** Latest month/year navigable in the calendar. Forwarded to react-day-picker. */\n\tendMonth?: Date;\n}\n\n/**\n * Date picker composed from Popover + Calendar + a styled trigger button.\n *\n * This is a minimal single-date picker. For multi/range, compose Calendar + Popover yourself.\n * @returns A button that opens a single-date calendar popover.\n */\nfunction DatePicker({\n\tvalue,\n\tonChange,\n\tplaceholder = \"Pick a date\",\n\tdateFormat = \"PPP\",\n\tdisabled,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\tcaptionLayout,\n\tstartMonth,\n\tendMonth,\n}: DatePickerProps) {\n\tconst [open, setOpen] = React.useState(false);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={ariaLabel ?? placeholder}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] w-[240px] items-center justify-start gap-[var(--gap-sm,0.5rem)] rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-left text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\t!value && \"text-muted-foreground\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n\t\t\t\t\t\t<line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n\t\t\t\t\t\t<line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n\t\t\t\t\t\t<line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t<span>{value ? format(value, dateFormat) : placeholder}</span>\n\t\t\t\t</button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-auto p-0\" align=\"start\">\n\t\t\t\t{/* Hardcoded mode='single' — for range/multi, compose Calendar + Popover directly. */}\n\t\t\t\t<Calendar\n\t\t\t\t\tmode=\"single\"\n\t\t\t\t\tselected={value}\n\t\t\t\t\tonSelect={(date) => {\n\t\t\t\t\t\tonChange?.(date);\n\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t}}\n\t\t\t\t\tcaptionLayout={captionLayout}\n\t\t\t\t\tstartMonth={startMonth}\n\t\t\t\t\tendMonth={endMonth}\n\t\t\t\t\tautoFocus\n\t\t\t\t/>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\nexport type { DatePickerProps };\n","import { OTPInput, OTPInputContext } from \"input-otp\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Props for the root InputOTP component (mirrors input-otp's OTPInput). */\ntype InputOTPProps = React.ComponentPropsWithoutRef<typeof OTPInput>;\n\n/** Root OTP input. Wraps input-otp's OTPInput and exposes slot context to children. */\nconst InputOTP = React.forwardRef<React.ComponentRef<typeof OTPInput>, InputOTPProps>(\n\t({ className, containerClassName, ...props }, ref) => (\n\t<OTPInput\n\t\tref={ref}\n\t\tcontainerClassName={cn(\n\t\t\t\"flex items-center gap-[var(--gap-sm,0.5rem)] has-[:disabled]:opacity-50\",\n\t\t\tcontainerClassName,\n\t\t)}\n\t\tclassName={cn(\"disabled:cursor-not-allowed\", className)}\n\t\t{...props}\n\t/>\n));\nInputOTP.displayName = \"InputOTP\";\n\n/** Groups slots together; place between runs of slots to add visual dividers. */\nconst InputOTPGroup = React.forwardRef<\n\tReact.ComponentRef<\"div\">,\n\tReact.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n\t<div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\ninterface InputOTPSlotProps extends React.ComponentPropsWithoutRef<\"div\"> {\n\t/** Index of the slot in the underlying OTP value. */\n\tindex: number;\n}\n\n/** A single character slot. Reads its state from OTPInputContext. */\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, InputOTPSlotProps>(\n\t({ index, className, ...props }, ref) => {\n\t\tconst inputOTPContext = React.useContext(OTPInputContext);\n\t\tconst slot = inputOTPContext.slots[index];\n\t\tconst char = slot?.char ?? null;\n\t\tconst hasFakeCaret = slot?.hasFakeCaret ?? false;\n\t\tconst isActive = slot?.isActive ?? false;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"relative flex h-[var(--control-height-md,2.5rem)] w-[var(--control-height-md,2.5rem)] items-center justify-center border-y border-r border-input text-sm transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\"first:rounded-l-md first:border-l last:rounded-r-md\",\n\t\t\t\t\tisActive && \"z-10 ring-2 ring-ring ring-offset-2 ring-offset-background\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{char}\n\t\t\t\t{hasFakeCaret && (\n\t\t\t\t\t<div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n\t\t\t\t\t\t<div className=\"h-4 w-px animate-pulse bg-foreground duration-1000\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\n/** Visual separator between slot groups (a bullet by default). */\nconst InputOTPSeparator = React.forwardRef<\n\tReact.ComponentRef<\"div\">,\n\tReact.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n\t<div ref={ref} role=\"separator\" {...props}>\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"currentColor\"\n\t\t\tclassName=\"h-2 w-2 text-muted-foreground\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<circle cx=\"12\" cy=\"12\" r=\"6\" />\n\t\t</svg>\n\t</div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\nexport type { InputOTPProps };\n","import { Command as CommandPrimitive } from \"cmdk\";\nimport * as React from \"react\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogDescription,\n\tDialogHeader,\n\tDialogTitle,\n} from \"../dialog/dialog.js\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root Command container — drives search, filtering, and keyboard navigation over items. */\nconst Command = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nCommand.displayName = \"Command\";\n\ninterface CommandDialogProps extends React.ComponentPropsWithoutRef<typeof Dialog> {\n\t/** Command children (CommandInput + CommandList + CommandItem, etc.) */\n\tchildren: React.ReactNode;\n\t/** Accessible title for the dialog (screen-reader only by default). */\n\ttitle?: string;\n\t/** Accessible description for the dialog (screen-reader only by default). */\n\tdescription?: string;\n}\n\n/**\n * Command menu rendered inside a Dialog — a ⌘K-style launcher.\n * @param props - Forwarded to the underlying Dialog (open, onOpenChange, etc.)\n * @returns A Dialog containing a Command menu.\n */\nfunction CommandDialog({\n\ttitle = \"Command Palette\",\n\tdescription = \"Search for a command to run.\",\n\tchildren,\n\t...props\n}: CommandDialogProps) {\n\treturn (\n\t\t<Dialog {...props}>\n\t\t\t<DialogHeader className=\"sr-only\">\n\t\t\t\t<DialogTitle>{title}</DialogTitle>\n\t\t\t\t<DialogDescription>{description}</DialogDescription>\n\t\t\t</DialogHeader>\n\t\t\t<DialogContent className=\"overflow-hidden p-0\" scrollable={false}>\n\t\t\t\t<Command className=\"[&_[cmdk-group-heading]]:px-[var(--space-2,0.5rem)] [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-[var(--space-2,0.5rem)] [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-[var(--space-2,0.5rem)] [&_[cmdk-item]]:py-[var(--space-3,0.75rem)] [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n\t\t\t\t\t{children}\n\t\t\t\t</Command>\n\t\t\t</DialogContent>\n\t\t</Dialog>\n\t);\n}\n\n/** Search input for the Command menu. Fires onValueChange as the user types. */\nconst CommandInput = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Input>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n\t<div className=\"flex items-center border-b border-b-foreground/[0.08] px-[var(--space-3,0.75rem)]\" cmdk-input-wrapper=\"\">\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"mr-[var(--space-2,0.5rem)] h-4 w-4 shrink-0 opacity-50\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\" />\n\t\t\t<line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n\t\t</svg>\n\t\t<CommandPrimitive.Input\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-[var(--control-height-lg,2.75rem)] w-full rounded-md bg-transparent py-[var(--space-3,0.75rem)] text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t</div>\n));\nCommandInput.displayName = \"CommandInput\";\n\n/** Scrollable list that contains CommandGroup / CommandItem / CommandEmpty. */\nconst CommandList = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.List\n\t\tref={ref}\n\t\tclassName={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n\t\t{...props}\n\t/>\n));\nCommandList.displayName = \"CommandList\";\n\n/** Rendered when no items match the current search. */\nconst CommandEmpty = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Empty>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n\t<CommandPrimitive.Empty ref={ref} className=\"py-[var(--space-6,1.5rem)] text-center text-sm\" {...props} />\n));\nCommandEmpty.displayName = \"CommandEmpty\";\n\n/** Logical group of items — renders a heading and filters as a unit. */\nconst CommandGroup = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Group>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.Group\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"overflow-hidden p-[var(--space-1,0.25rem)] text-foreground [&_[cmdk-group-heading]]:px-[var(--space-2,0.5rem)] [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nCommandGroup.displayName = \"CommandGroup\";\n\n/**\n * Horizontal rule between groups. Renders as a presentational `<div>` (no role)\n * so it can sit inside CommandList (role=listbox) without violating ARIA's\n * required-children rule for listbox. The line is purely decorative — cmdk's\n * built-in Separator hardcodes `role=\"separator\"`, which axe rejects in this\n * context, so we render the divider directly.\n *\n * The `data-cmdk-separator` attribute is preserved so existing CSS / test\n * selectors that target cmdk's separator continue to match.\n */\nconst CommandSeparator = React.forwardRef<\n\tHTMLDivElement,\n\tReact.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n\t<div\n\t\tref={ref}\n\t\trole=\"none\"\n\t\tdata-cmdk-separator=\"\"\n\t\tclassName={cn(\"-mx-[var(--space-1,0.25rem)] h-px bg-foreground/[0.12]\", className)}\n\t\t{...props}\n\t/>\n));\nCommandSeparator.displayName = \"CommandSeparator\";\n\n/** Selectable item. onSelect fires on Enter or click. */\nconst CommandItem = React.forwardRef<\n\tReact.ComponentRef<typeof CommandPrimitive.Item>,\n\tReact.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n\t<CommandPrimitive.Item\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"relative flex cursor-default select-none items-center gap-[var(--gap-sm,0.5rem)] rounded-sm px-[var(--space-2,0.5rem)] py-1.5 text-sm outline-none transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n\t\t\t\"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground\",\n\t\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nCommandItem.displayName = \"CommandItem\";\n\n/**\n * Keyboard shortcut hint (e.g. '⌘K') aligned to the right of an item.\n * @returns A muted inline span rendered at the end of a CommandItem.\n */\nfunction CommandShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) {\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"ml-auto text-xs tracking-widest text-muted-foreground\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n\tCommand,\n\tCommandDialog,\n\tCommandInput,\n\tCommandList,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandItem,\n\tCommandShortcut,\n\tCommandSeparator,\n};\n","import * as React from \"react\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"../command/command.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/popover.js\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface ComboboxOption {\n\t/** The value returned from onChange (stable, unique). */\n\tvalue: string;\n\t/** The display label shown in the list and the trigger. */\n\tlabel: string;\n\t/** Mark as non-selectable. */\n\tdisabled?: boolean;\n}\n\ninterface ComboboxProps {\n\t/** The list of selectable options. */\n\toptions: ComboboxOption[];\n\t/** Controlled selected value. */\n\tvalue?: string;\n\t/** Fired when the user picks an option: (value: string) => void */\n\tonChange?: (value: string) => void;\n\t/** Text shown on the trigger when nothing is selected. */\n\tplaceholder?: string;\n\t/** Input placeholder inside the popover list. */\n\tsearchPlaceholder?: string;\n\t/** Text shown when no options match the search. */\n\temptyText?: string;\n\t/** Disable the trigger. */\n\tdisabled?: boolean;\n\t/** Extra class names on the trigger button. */\n\tclassName?: string;\n\t/** Accessible label for the trigger (required when no adjacent visible label). */\n\t\"aria-label\"?: string;\n\t/** Id of an external visible label that names this combobox. */\n\t\"aria-labelledby\"?: string;\n}\n\n/**\n * Searchable select input built on Command + Popover.\n *\n * Pass `options` with `{ value, label }` shape. The selected label is shown on\n * the trigger; the popover contains a CommandInput and filtered CommandList.\n * @returns A trigger button that opens a filtered option list.\n */\nfunction Combobox({\n\toptions,\n\tvalue,\n\tonChange,\n\tplaceholder = \"Select…\",\n\tsearchPlaceholder = \"Search…\",\n\temptyText = \"No results found.\",\n\tdisabled,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy,\n}: ComboboxProps) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst listboxId = React.useId();\n\tconst selected = options.find((o) => o.value === value);\n\n\treturn (\n\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-expanded={open}\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t/*\n\t\t\t\t\t * Only reference the listbox id when the popover is open.\n\t\t\t\t\t * The CommandList is portal-mounted by Radix Popover and\n\t\t\t\t\t * does not exist in the DOM while closed; pointing at a\n\t\t\t\t\t * missing id confuses some screen readers.\n\t\t\t\t\t */\n\t\t\t\t\taria-controls={open ? listboxId : undefined}\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] w-[240px] items-center justify-between gap-[var(--gap-sm,0.5rem)] rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\"shadow-sm inset-ring-1 inset-ring-foreground/[0.06]\",\n\t\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\t!selected && \"text-muted-foreground\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"truncate\">{selected ? selected.label : placeholder}</span>\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\tclassName=\"h-4 w-4 shrink-0 opacity-50\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-[240px] p-0\" align=\"start\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder={searchPlaceholder} />\n\t\t\t\t\t<CommandList id={listboxId}>\n\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\n\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\tvalue={option.label}\n\t\t\t\t\t\t\t\t\tdisabled={option.disabled}\n\t\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\t\tonChange?.(option.value);\n\t\t\t\t\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\"mr-[var(--space-2,0.5rem)] h-4 w-4\",\n\t\t\t\t\t\t\t\t\t\t\tvalue === option.value ? \"opacity-100\" : \"opacity-0\",\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\nCombobox.displayName = \"Combobox\";\n\nexport { Combobox };\nexport type { ComboboxOption, ComboboxProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\nimport {\n\tformatHslTriplet,\n\thexToHslTriplet,\n\thslTripletToHex,\n\tparseHslTriplet,\n} from \"../../lib/color.js\";\nimport { Input } from \"../../primitives/input/input.js\";\nimport { Label } from \"../../primitives/label/label.js\";\nimport { Slider } from \"../../primitives/slider/slider.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/popover.js\";\n\n/** Tolerance for treating a float as integer-valued (handles arithmetic drift in HSL roundtrips). */\nconst INTEGER_EPSILON = 1e-6;\n\nconst looksInteger = (n: number) => Math.abs(n - Math.round(n)) < INTEGER_EPSILON;\n\n/** Props for the ColorPicker component. */\nexport interface ColorPickerProps {\n\t/**\n\t * Current color as an HSL triplet string (`\"<H> <S>% <L>%\"`, e.g. `\"240 5.9% 10%\"`).\n\t * Match the format used by `@hex-core/tokens`; round-trip safe.\n\t */\n\tvalue: string;\n\t/**\n\t * Called with the next HSL triplet whenever the user drags a slider or commits a valid hex value.\n\t * Not called for invalid hex input — the picker keeps the prior value until the input parses cleanly.\n\t */\n\tonChange: (value: string) => void;\n\t/**\n\t * Disable interaction. Native `disabled` attribute is set on the trigger so the\n\t * popover doesn't open via mouse or keyboard activation. Tab focus still lands\n\t * on the trigger per browser defaults; if you want to fully remove it from the\n\t * tab order, wrap in a parent that handles `tabIndex` accordingly.\n\t */\n\tdisabled?: boolean;\n\t/** Accessible name for the trigger button (defaults to \"Pick color\"). */\n\t\"aria-label\"?: string;\n\t/** Additional class names merged onto the trigger. */\n\tclassName?: string;\n}\n\n/**\n * HSL-native color picker. Edits an HSL triplet directly via three sliders\n * (H/S/L), with a hex input as a display adapter.\n *\n * Round-trip safe: triplet → hex → triplet preserves the slider state because\n * sliders are the source of truth and hex updates them only when valid.\n *\n * @param props - Controlled component; `value` and `onChange` are required.\n * @returns A trigger button that opens a popover with H/S/L sliders + hex input.\n * @example\n * ```tsx\n * const [color, setColor] = React.useState(\"240 5.9% 10%\");\n * <ColorPicker value={color} onChange={setColor} aria-label=\"Primary color\" />\n * ```\n */\nfunction ColorPicker({\n\tvalue,\n\tonChange,\n\tdisabled,\n\t\"aria-label\": ariaLabel = \"Pick color\",\n\tclassName,\n}: ColorPickerProps) {\n\t// Memoize so the slider-row callbacks below are stable across renders with\n\t// the same `value`; downstream `Slider`s avoid spurious re-mounts.\n\tconst hsl = React.useMemo(() => parseHslTriplet(value), [value]);\n\tconst hex = React.useMemo(() => hslTripletToHex(value), [value]);\n\n\tconst update = React.useCallback(\n\t\t(patch: Partial<typeof hsl>) => {\n\t\t\tonChange(formatHslTriplet({ ...hsl, ...patch }));\n\t\t},\n\t\t[hsl, onChange],\n\t);\n\n\t// Hex input is locally controlled so the user can type intermediate states\n\t// (e.g. \"#1a\") without committing. Sync the buffer to the canonical hex\n\t// whenever the input is NOT focused — typing into a focused input must not\n\t// be clobbered by a parent re-render reflecting our own `onChange`.\n\tconst hexInputRef = React.useRef<HTMLInputElement>(null);\n\tconst [hexBuffer, setHexBuffer] = React.useState(hex);\n\tReact.useEffect(() => {\n\t\tif (\n\t\t\ttypeof document === \"undefined\" ||\n\t\t\tdocument.activeElement !== hexInputRef.current\n\t\t) {\n\t\t\tsetHexBuffer(hex);\n\t\t}\n\t}, [hex]);\n\n\tconst handleHexChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst next = e.target.value;\n\t\tsetHexBuffer(next);\n\t\tconst triplet = hexToHslTriplet(next);\n\t\tif (triplet !== null) onChange(triplet);\n\t};\n\n\tconst hexId = React.useId();\n\n\treturn (\n\t\t<Popover>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"inline-flex h-9 items-center gap-2 rounded-md border border-input bg-background px-3 text-sm shadow-sm\",\n\t\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\"hover:shadow-md disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName=\"h-5 w-5 rounded-sm border border-border\"\n\t\t\t\t\t\tstyle={{ backgroundColor: `hsl(${value})` }}\n\t\t\t\t\t/>\n\t\t\t\t\t<span className=\"font-mono text-xs uppercase\">{hex}</span>\n\t\t\t\t</button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-72 p-4\" align=\"start\">\n\t\t\t\t<div className=\"space-y-4\">\n\t\t\t\t\t<SliderRow\n\t\t\t\t\t\tlabel=\"Hue\"\n\t\t\t\t\t\tsuffix=\"°\"\n\t\t\t\t\t\tvalue={hsl.h}\n\t\t\t\t\t\tmax={360}\n\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\tonChange={(h) => update({ h })}\n\t\t\t\t\t/>\n\t\t\t\t\t<SliderRow\n\t\t\t\t\t\tlabel=\"Saturation\"\n\t\t\t\t\t\tsuffix=\"%\"\n\t\t\t\t\t\tvalue={hsl.s}\n\t\t\t\t\t\tmax={100}\n\t\t\t\t\t\tstep={0.1}\n\t\t\t\t\t\tonChange={(s) => update({ s })}\n\t\t\t\t\t/>\n\t\t\t\t\t<SliderRow\n\t\t\t\t\t\tlabel=\"Lightness\"\n\t\t\t\t\t\tsuffix=\"%\"\n\t\t\t\t\t\tvalue={hsl.l}\n\t\t\t\t\t\tmax={100}\n\t\t\t\t\t\tstep={0.1}\n\t\t\t\t\t\tonChange={(l) => update({ l })}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className=\"flex items-end gap-2\">\n\t\t\t\t\t\t<div className=\"flex-1 space-y-1\">\n\t\t\t\t\t\t\t<Label htmlFor={hexId} className=\"text-xs\">\n\t\t\t\t\t\t\t\tHex\n\t\t\t\t\t\t\t</Label>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tid={hexId}\n\t\t\t\t\t\t\t\tref={hexInputRef}\n\t\t\t\t\t\t\t\tvalue={hexBuffer}\n\t\t\t\t\t\t\t\tonChange={handleHexChange}\n\t\t\t\t\t\t\t\tclassName=\"font-mono text-xs uppercase\"\n\t\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tclassName=\"h-9 w-9 shrink-0 rounded-md border border-border\"\n\t\t\t\t\t\t\tstyle={{ backgroundColor: `hsl(${value})` }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n\ninterface SliderRowProps {\n\tlabel: string;\n\tsuffix: string;\n\tvalue: number;\n\tmax: number;\n\tstep: number;\n\tonChange: (next: number) => void;\n}\n\n/**\n * One labeled slider row inside the ColorPicker popover. Internal helper —\n * not exported.\n * @param props - Slider config + value-change callback.\n */\nfunction SliderRow({ label, suffix, value, max, step, onChange }: SliderRowProps) {\n\tconst display = looksInteger(value) ? `${Math.round(value)}` : value.toFixed(1);\n\treturn (\n\t\t<div className=\"space-y-1.5\">\n\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t<Label className=\"text-xs\">{label}</Label>\n\t\t\t\t<span className=\"font-mono text-xs tabular-nums text-muted-foreground\">\n\t\t\t\t\t{display}\n\t\t\t\t\t{suffix}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<Slider\n\t\t\t\tvalue={[value]}\n\t\t\t\tmin={0}\n\t\t\t\tmax={max}\n\t\t\t\tstep={step}\n\t\t\t\taria-label={label}\n\t\t\t\tonValueChange={(values) => onChange(values[0] ?? 0)}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport { ColorPicker };\n","/**\n * Color conversion utilities for the HSL-triplet token format used across\n * `@hex-core/tokens` themes (`H S% L%`, e.g. `\"240 5.9% 10%\"` — no `hsl()`\n * wrapper, no commas).\n *\n * The triplet is the round-trip-safe serialization for Hex UI: tokens flow\n * triplet → CSS `hsl(var(--token))` → rendered color, and the ColorPicker\n * component edits triplets directly. Hex/RGB conversions are display\n * adapters, not the source of truth.\n */\n\n/** Parsed HSL components. `h` is degrees (0–360); `s` and `l` are percentages (0–100). */\nexport interface HslTriplet {\n\th: number;\n\ts: number;\n\tl: number;\n}\n\n/** Parsed RGB components. Each channel is 0–255. */\nexport interface RgbColor {\n\tr: number;\n\tg: number;\n\tb: number;\n}\n\n/**\n * Parse an HSL triplet string into numeric components.\n *\n * Note: malformed input silently coerces to `{0,0,0}` (pure black) rather than\n * returning an error signal. Callers that need to distinguish \"user typed\n * black\" from \"user typed garbage\" should validate the input format first.\n * `hexToHslTriplet` returns `null` for malformed hex; this asymmetry is\n * intentional — triplets feed CSS variables where any non-color value would\n * already break rendering.\n *\n * @param triplet - String in the form `\"<H> <S>% <L>%\"` (e.g. `\"240 5.9% 10%\"`).\n * @returns Numeric components, or `{0,0,0}` if the input is malformed.\n */\nexport function parseHslTriplet(triplet: string): HslTriplet {\n\tconst parts = triplet.trim().split(/\\s+/);\n\treturn {\n\t\th: Number.parseFloat(parts[0]) || 0,\n\t\ts: Number.parseFloat(parts[1]) || 0,\n\t\tl: Number.parseFloat(parts[2]) || 0,\n\t};\n}\n\n/**\n * Format HSL components into an HSL triplet string (the canonical token format).\n * @param hsl - Numeric components.\n * @returns Triplet in the form `\"<H> <S>% <L>%\"`.\n */\nexport function formatHslTriplet({ h, s, l }: HslTriplet): string {\n\t// Tolerant integer check: rgbToHsl can produce values like 5.0000000001 due\n\t// to float arithmetic; format those as \"5\" rather than \"5.0\".\n\tconst round = (n: number) =>\n\t\tMath.abs(n - Math.round(n)) < 1e-6 ? `${Math.round(n)}` : n.toFixed(1);\n\treturn `${Math.round(h)} ${round(s)}% ${round(l)}%`;\n}\n\n/**\n * Convert HSL components to RGB.\n * @param h - Hue (0–360).\n * @param s - Saturation (0–100).\n * @param l - Lightness (0–100).\n * @returns RGB channels (0–255, rounded).\n */\nexport function hslToRgb(h: number, s: number, l: number): RgbColor {\n\tconst sN = s / 100;\n\tconst lN = l / 100;\n\tconst k = (n: number) => (n + h / 30) % 12;\n\tconst a = sN * Math.min(lN, 1 - lN);\n\tconst f = (n: number) => lN - a * Math.max(-1, Math.min(k(n) - 3, 9 - k(n), 1));\n\treturn {\n\t\tr: Math.round(255 * f(0)),\n\t\tg: Math.round(255 * f(8)),\n\t\tb: Math.round(255 * f(4)),\n\t};\n}\n\n/**\n * Convert RGB components to HSL.\n * @param r - Red (0–255).\n * @param g - Green (0–255).\n * @param b - Blue (0–255).\n * @returns HSL components (h: 0–360, s: 0–100, l: 0–100).\n */\nexport function rgbToHsl(r: number, g: number, b: number): HslTriplet {\n\tconst rN = r / 255;\n\tconst gN = g / 255;\n\tconst bN = b / 255;\n\tconst max = Math.max(rN, gN, bN);\n\tconst min = Math.min(rN, gN, bN);\n\tlet h = 0;\n\tlet s = 0;\n\tconst l = (max + min) / 2;\n\tif (max !== min) {\n\t\tconst d = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\tif (max === rN) h = (gN - bN) / d + (gN < bN ? 6 : 0);\n\t\telse if (max === gN) h = (bN - rN) / d + 2;\n\t\telse h = (rN - gN) / d + 4;\n\t\th /= 6;\n\t}\n\treturn { h: h * 360, s: s * 100, l: l * 100 };\n}\n\n/**\n * Convert an HSL triplet to a 6-digit hex string.\n * @param triplet - HSL triplet (e.g. `\"240 5.9% 10%\"`).\n * @returns Lowercase hex string with leading `#` (e.g. `\"#181a1f\"`).\n */\nexport function hslTripletToHex(triplet: string): string {\n\tconst { h, s, l } = parseHslTriplet(triplet);\n\tconst { r, g, b } = hslToRgb(h, s, l);\n\tconst toHex = (n: number) => n.toString(16).padStart(2, \"0\");\n\treturn `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\n/**\n * Convert a hex string to an HSL triplet.\n * Accepts 3-digit (`#abc`) or 6-digit (`#aabbcc`) hex with optional `#`.\n * @param hex - Hex color string.\n * @returns HSL triplet, or `null` if the input is malformed.\n */\nexport function hexToHslTriplet(hex: string): string | null {\n\tconst clean = hex.trim().replace(/^#/, \"\");\n\tlet normalized: string;\n\tif (/^[0-9a-fA-F]{3}$/.test(clean)) {\n\t\tnormalized = clean\n\t\t\t.split(\"\")\n\t\t\t.map((c) => c + c)\n\t\t\t.join(\"\");\n\t} else if (/^[0-9a-fA-F]{6}$/.test(clean)) {\n\t\tnormalized = clean;\n\t} else {\n\t\treturn null;\n\t}\n\tconst r = Number.parseInt(normalized.slice(0, 2), 16);\n\tconst g = Number.parseInt(normalized.slice(2, 4), 16);\n\tconst b = Number.parseInt(normalized.slice(4, 6), 16);\n\treturn formatHslTriplet(rgbToHsl(r, g, b));\n}\n","import * as React from \"react\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"../command/command.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover/popover.js\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface MultiComboboxOption {\n\t/** The value returned in the onChange array (stable, unique). */\n\tvalue: string;\n\t/** The display label shown in the list and the trigger. */\n\tlabel: string;\n\t/** Mark as non-selectable. */\n\tdisabled?: boolean;\n}\n\ninterface MultiComboboxProps {\n\t/** The list of selectable options. */\n\toptions: MultiComboboxOption[];\n\t/** Controlled selected values. */\n\tvalue?: string[];\n\t/** Fired when the user toggles an option: (values: string[]) => void */\n\tonChange?: (values: string[]) => void;\n\t/** Text shown on the trigger when nothing is selected. */\n\tplaceholder?: string;\n\t/** Input placeholder inside the popover list. */\n\tsearchPlaceholder?: string;\n\t/** Text shown when no options match the search. */\n\temptyText?: string;\n\t/** Soft cap on selections. Once reached, unselected options become non-selectable. */\n\tmaxSelected?: number;\n\t/** Close the popover after every pick. Default false (multi-select UX expects staying open). */\n\tcloseOnSelect?: boolean;\n\t/** Disable the trigger. */\n\tdisabled?: boolean;\n\t/** Extra class names on the trigger button. */\n\tclassName?: string;\n\t/** Accessible label for the trigger (required when no adjacent visible label). */\n\t\"aria-label\"?: string;\n\t/** Id of an external visible label that names this combobox. */\n\t\"aria-labelledby\"?: string;\n}\n\n/**\n * Searchable multi-select input built on Command + Popover.\n *\n * Pass `options` with `{ value, label }` and bind `value` (string[]) +\n * `onChange`. The trigger shows \"{n} selected\" once any option is picked, with\n * the comma-separated label list mirrored into the `title` attribute for\n * pointer/screen-reader fallback. Each option is announced with `aria-selected`.\n * @returns A trigger button that opens a multi-select option list.\n */\nfunction MultiCombobox({\n\toptions,\n\tvalue,\n\tonChange,\n\tplaceholder = \"Select…\",\n\tsearchPlaceholder = \"Search…\",\n\temptyText = \"No results found.\",\n\tmaxSelected,\n\tcloseOnSelect = false,\n\tdisabled,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy,\n}: MultiComboboxProps) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst listboxId = React.useId();\n\tconst selected = React.useMemo(() => new Set(value ?? []), [value]);\n\tconst selectedLabels = React.useMemo(\n\t\t() => options.filter((o) => selected.has(o.value)).map((o) => o.label),\n\t\t[options, selected],\n\t);\n\tconst triggerLabel =\n\t\tselected.size === 0 ? placeholder : `${selected.size} selected`;\n\tconst capReached =\n\t\ttypeof maxSelected === \"number\" && selected.size >= maxSelected;\n\n\tconst toggle = React.useCallback(\n\t\t(optionValue: string) => {\n\t\t\tconst next = new Set(selected);\n\t\t\tif (next.has(optionValue)) {\n\t\t\t\tnext.delete(optionValue);\n\t\t\t} else {\n\t\t\t\tif (capReached) return;\n\t\t\t\tnext.add(optionValue);\n\t\t\t}\n\t\t\tonChange?.(Array.from(next));\n\t\t\tif (closeOnSelect) setOpen(false);\n\t\t},\n\t\t[selected, capReached, onChange, closeOnSelect],\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Popover open={open} onOpenChange={setOpen}>\n\t\t\t\t<PopoverTrigger asChild>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Only reference the listbox id when the popover is open.\n\t\t\t\t\t\t * The CommandList is portal-mounted by Radix Popover and\n\t\t\t\t\t\t * does not exist in the DOM while closed; pointing at a\n\t\t\t\t\t\t * missing id confuses some screen readers.\n\t\t\t\t\t\t */\n\t\t\t\t\t\taria-controls={open ? listboxId : undefined}\n\t\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\t\ttitle={selectedLabels.length > 0 ? selectedLabels.join(\", \") : undefined}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] w-[240px] items-center justify-between gap-[var(--gap-sm,0.5rem)] rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\t\tselected.size === 0 && \"text-muted-foreground\",\n\t\t\t\t\t\t\tclassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"truncate\">{triggerLabel}</span>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\tclassName=\"h-4 w-4 shrink-0 opacity-50\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<polyline points=\"6 9 12 15 18 9\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t</PopoverTrigger>\n\t\t\t\t<PopoverContent className=\"w-[240px] p-0\" align=\"start\">\n\t\t\t\t\t<Command>\n\t\t\t\t\t\t<CommandInput placeholder={searchPlaceholder} />\n\t\t\t\t\t\t<CommandList id={listboxId}>\n\t\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\n\t\t\t\t\t\t\t<CommandGroup>\n\t\t\t\t\t\t\t\t{options.map((option) => {\n\t\t\t\t\t\t\t\t\tconst isSelected = selected.has(option.value);\n\t\t\t\t\t\t\t\t\tconst isCapped = !isSelected && capReached;\n\t\t\t\t\t\t\t\t\tconst itemDisabled = option.disabled || isCapped;\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\t\t\tvalue={option.label}\n\t\t\t\t\t\t\t\t\t\t\taria-selected={isSelected}\n\t\t\t\t\t\t\t\t\t\t\taria-disabled={itemDisabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\tdisabled={itemDisabled}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (itemDisabled) return;\n\t\t\t\t\t\t\t\t\t\t\t\ttoggle(option.value);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mr-[var(--space-2,0.5rem)] h-4 w-4\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSelected ? \"opacity-100\" : \"opacity-0\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</CommandGroup>\n\t\t\t\t\t\t</CommandList>\n\t\t\t\t\t</Command>\n\t\t\t\t</PopoverContent>\n\t\t\t</Popover>\n\t\t\t{/*\n\t\t\t * Live region lives outside the trigger so its text is NOT pulled\n\t\t\t * into the button's accessible name (sr-only spans inside a button\n\t\t\t * concatenate via the AccName algorithm). Polite announcements fire\n\t\t\t * only on selection-count changes.\n\t\t\t */}\n\t\t\t<span className=\"sr-only\" aria-live=\"polite\">\n\t\t\t\t{selected.size === 0\n\t\t\t\t\t? \"No items selected\"\n\t\t\t\t\t: `${selected.size} item${selected.size === 1 ? \"\" : \"s\"} selected`}\n\t\t\t</span>\n\t\t</>\n\t);\n}\nMultiCombobox.displayName = \"MultiCombobox\";\n\nexport { MultiCombobox };\nexport type { MultiComboboxOption, MultiComboboxProps };\n","import { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ntype StepStatus = \"complete\" | \"current\" | \"upcoming\" | \"error\";\n\ninterface StepperStep {\n\t/** Stable unique id used as the React key. */\n\tid: string;\n\t/** Step name shown next to the indicator. */\n\tlabel: string;\n\t/** Optional secondary text under the label. */\n\tdescription?: string;\n\t/** Disable the step (only applies when onStepClick is provided). */\n\tdisabled?: boolean;\n\t/**\n\t * Override the index-derived status. Use `\"error\"` to mark a failed step\n\t * (e.g. validation failure in a form wizard); `\"complete\"` / `\"current\"` /\n\t * `\"upcoming\"` are derived from `current` by default.\n\t */\n\tstatus?: StepStatus;\n}\n\nconst stepperRoot = cva(\n\t\"flex w-full gap-[var(--gap-md,1rem)] list-none p-0 m-0\",\n\t{\n\t\tvariants: {\n\t\t\torientation: {\n\t\t\t\thorizontal: \"flex-row items-start\",\n\t\t\t\tvertical: \"flex-col items-stretch\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { orientation: \"horizontal\" },\n\t},\n);\n\n/*\n * Horizontal: each step sizes to its content; the connector (`flex-1`) fills\n * the gap between steps. Going `flex-1` on the step item itself would shrink\n * labels to the point of `text-overflow: ellipsis` (\"Account\" → \"A...\").\n * Vertical: items take the full width so multi-line descriptions wrap\n * naturally below the indicator.\n */\nconst stepItem = cva(\"flex gap-[var(--space-3,0.75rem)]\", {\n\tvariants: {\n\t\torientation: {\n\t\t\thorizontal: \"flex-row items-center\",\n\t\t\tvertical: \"flex-row items-start w-full\",\n\t\t},\n\t},\n\tdefaultVariants: { orientation: \"horizontal\" },\n});\n\nconst stepIndicator = cva(\n\t\"inline-flex shrink-0 items-center justify-center rounded-full border-2 font-medium transition-colors duration-[var(--duration-normal,200ms)] ease-out\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"h-7 w-7 text-xs\",\n\t\t\t\tmd: \"h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] text-sm\",\n\t\t\t},\n\t\t\tstatus: {\n\t\t\t\tcomplete: \"bg-primary border-primary text-primary-foreground\",\n\t\t\t\tcurrent: \"bg-background border-primary text-primary\",\n\t\t\t\tupcoming: \"bg-background border-input text-muted-foreground\",\n\t\t\t\terror:\n\t\t\t\t\t\"bg-destructive border-destructive text-destructive-foreground\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { size: \"md\", status: \"upcoming\" },\n\t},\n);\n\nconst stepConnector = cva(\"bg-input transition-colors\", {\n\tvariants: {\n\t\torientation: {\n\t\t\thorizontal: \"h-px flex-1 min-w-[var(--space-6,1.5rem)] mx-[var(--space-2,0.5rem)]\",\n\t\t\tvertical: \"w-px self-stretch ml-[1.0625rem] my-[var(--space-1,0.25rem)] min-h-[var(--space-6,1.5rem)]\",\n\t\t},\n\t\tcomplete: {\n\t\t\ttrue: \"bg-primary\",\n\t\t\tfalse: \"\",\n\t\t},\n\t},\n\tdefaultVariants: { orientation: \"horizontal\", complete: false },\n});\n\ninterface StepperProps\n\textends Omit<\n\t\tReact.HTMLAttributes<HTMLOListElement>,\n\t\t\"aria-label\" | \"onClick\"\n\t> {\n\t/** Ordered list of steps. */\n\tsteps: StepperStep[];\n\t/** Index of the current step (controlled). */\n\tcurrent: number;\n\t/** Layout direction. */\n\torientation?: \"horizontal\" | \"vertical\";\n\t/** Indicator size. */\n\tsize?: \"sm\" | \"md\";\n\t/** When provided, each step is rendered as a clickable button. */\n\tonStepClick?: (index: number) => void;\n\t/** Required accessible name for the ordered list. */\n\t\"aria-label\": string;\n}\n\n/** Map a step index against the current pointer to a `StepStatus`. */\nfunction deriveStatus(index: number, current: number): StepStatus {\n\tif (index < current) return \"complete\";\n\tif (index === current) return \"current\";\n\treturn \"upcoming\";\n}\n\n/** Checkmark glyph rendered inside the indicator for completed steps. */\nfunction StepCheck() {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"3\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"h-4 w-4\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<polyline points=\"20 6 9 17 4 12\" />\n\t\t</svg>\n\t);\n}\n\n/** Cross glyph rendered inside the indicator for steps with status=\"error\". */\nfunction StepError() {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"3\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"h-4 w-4\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n\t\t</svg>\n\t);\n}\n\ninterface StepIndicatorProps {\n\tindex: number;\n\tstatus: StepStatus;\n\tsize: \"sm\" | \"md\";\n}\n\n/** Circular indicator that flips between number, check, and cross by `status`. */\nfunction StepIndicator({ index, status, size }: StepIndicatorProps) {\n\treturn (\n\t\t<span\n\t\t\tclassName={stepIndicator({ size, status })}\n\t\t\taria-invalid={status === \"error\" ? true : undefined}\n\t\t>\n\t\t\t{status === \"complete\" ? (\n\t\t\t\t<StepCheck />\n\t\t\t) : status === \"error\" ? (\n\t\t\t\t<StepError />\n\t\t\t) : (\n\t\t\t\tindex + 1\n\t\t\t)}\n\t\t</span>\n\t);\n}\n\n/**\n * Linear progress indicator for multi-step flows (form wizards, onboarding,\n * checkout). Pure semantic HTML — `<ol>` of `<li>` with `aria-current=\"step\"`\n * on the current item; per-step `status` overrides allow marking \"error\".\n *\n * Pass `onStepClick` to make completed/non-disabled steps interactive.\n * @returns An accessible ordered step list.\n */\nfunction Stepper({\n\tsteps,\n\tcurrent,\n\torientation = \"horizontal\",\n\tsize = \"md\",\n\tonStepClick,\n\t\"aria-label\": ariaLabel,\n\tclassName,\n\t...rest\n}: StepperProps) {\n\tconst interactive = typeof onStepClick === \"function\";\n\treturn (\n\t\t<ol\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={cn(stepperRoot({ orientation }), className)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{steps.map((step, index) => {\n\t\t\t\tconst status = step.status ?? deriveStatus(index, current);\n\t\t\t\tconst isCurrent = status === \"current\";\n\t\t\t\tconst isLast = index === steps.length - 1;\n\t\t\t\tconst labelNode = (\n\t\t\t\t\t<span className=\"flex flex-col gap-[var(--space-1,0.25rem)]\">\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"text-sm font-medium whitespace-nowrap\",\n\t\t\t\t\t\t\t\tisCurrent && \"text-foreground\",\n\t\t\t\t\t\t\t\tstatus === \"complete\" && \"text-foreground\",\n\t\t\t\t\t\t\t\tstatus === \"upcoming\" && \"text-muted-foreground\",\n\t\t\t\t\t\t\t\tstatus === \"error\" && \"text-destructive\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{status === \"complete\" && (\n\t\t\t\t\t\t\t\t<span className=\"sr-only\">Completed: </span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{status === \"error\" && (\n\t\t\t\t\t\t\t\t<span className=\"sr-only\">Error: </span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{step.label}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{step.description ? (\n\t\t\t\t\t\t\t<span className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t{step.description}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\n\t\t\t\tconst innerContent = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<StepIndicator index={index} status={status} size={size} />\n\t\t\t\t\t\t{labelNode}\n\t\t\t\t\t</>\n\t\t\t\t);\n\n\t\t\t\treturn (\n\t\t\t\t\t/*\n\t\t\t\t\t * `aria-current=\"step\"` lives on the <li> itself so screen\n\t\t\t\t\t * readers announce it as part of the listitem's intro\n\t\t\t\t\t * (per WAI guidance for \"step\" lists), not buried on an\n\t\t\t\t\t * interior span/button.\n\t\t\t\t\t */\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={step.id}\n\t\t\t\t\t\taria-current={isCurrent ? \"step\" : undefined}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tstepItem({ orientation }),\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * Grow only when there's a connector after this step.\n\t\t\t\t\t\t\t * The connector inside takes the extra space via\n\t\t\t\t\t\t\t * `flex-1` so the line spans to the next step.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t!isLast && orientation === \"horizontal\" && \"flex-1\",\n\t\t\t\t\t\t\t!isLast && orientation === \"vertical\" && \"flex-col\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{interactive ? (\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tdisabled={step.disabled}\n\t\t\t\t\t\t\t\tonClick={() => onStepClick?.(index)}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\"flex items-center gap-[var(--space-3,0.75rem)] text-left rounded-md transition-colors duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\t\t\t\t\"disabled:opacity-50 disabled:pointer-events-none\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{innerContent}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span className=\"flex items-center gap-[var(--space-3,0.75rem)]\">\n\t\t\t\t\t\t\t\t{innerContent}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!isLast ? (\n\t\t\t\t\t\t\t/*\n\t\t\t\t\t\t\t * Connector \"complete\" iff THIS step is finished. An\n\t\t\t\t\t\t\t * explicit \"error\" status on the current step never\n\t\t\t\t\t\t\t * fills the gap to the next step — the user hasn't\n\t\t\t\t\t\t\t * cleared this milestone.\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName={stepConnector({\n\t\t\t\t\t\t\t\t\torientation,\n\t\t\t\t\t\t\t\t\tcomplete: index < current && step.status !== \"error\",\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ol>\n\t);\n}\nStepper.displayName = \"Stepper\";\n\nexport { Stepper };\nexport type { StepperProps, StepperStep, StepStatus };\n","import { cva } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ntype TimelineStatus = \"default\" | \"success\" | \"warning\" | \"error\" | \"info\";\n\ninterface TimelineEvent {\n\t/** Stable unique id used as the React key. */\n\tid: string;\n\t/** Headline for the event. */\n\ttitle: string;\n\t/** Optional timestamp/metadata (e.g. \"2 hours ago\", \"2026-04-27 14:30\"). */\n\ttimestamp?: React.ReactNode;\n\t/** Optional secondary text/body. */\n\tdescription?: React.ReactNode;\n\t/** Optional icon override for the indicator. Replaces the default dot. */\n\ticon?: React.ReactNode;\n\t/** Color variant for the indicator. */\n\tstatus?: TimelineStatus;\n}\n\n/*\n * `warning` uses a token-with-fallback so themes can override `--color-warning`\n * without touching component source. The OKLCH default lands at a desaturated\n * amber that holds AA contrast on both light and dark backgrounds.\n */\nconst indicator = cva(\n\t\"relative z-10 inline-flex shrink-0 items-center justify-center rounded-full border-2 transition-colors duration-[var(--duration-normal,200ms)] ease-out\",\n\t{\n\t\tvariants: {\n\t\t\tstatus: {\n\t\t\t\tdefault: \"bg-background border-input text-muted-foreground\",\n\t\t\t\tsuccess: \"bg-background border-primary text-primary\",\n\t\t\t\twarning:\n\t\t\t\t\t\"bg-background border-[var(--color-warning,oklch(0.78_0.16_82))] text-[var(--color-warning,oklch(0.78_0.16_82))]\",\n\t\t\t\terror: \"bg-destructive border-destructive text-destructive-foreground\",\n\t\t\t\tinfo: \"bg-background border-ring text-ring\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tsm: \"h-5 w-5 text-[10px]\",\n\t\t\t\tmd: \"h-7 w-7 text-xs\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: { status: \"default\", size: \"md\" },\n\t},\n);\n\ninterface TimelineProps\n\textends Omit<React.HTMLAttributes<HTMLOListElement>, \"aria-label\"> {\n\t/** Ordered list of chronological events. */\n\tevents: TimelineEvent[];\n\t/** Indicator size — `\"md\"` by default. */\n\tsize?: \"sm\" | \"md\";\n\t/** Required accessible name for the ordered list. */\n\t\"aria-label\": string;\n}\n\n/** Solid dot rendered inside the indicator when no per-event icon is supplied. */\nfunction DefaultDot() {\n\treturn <span className=\"h-1.5 w-1.5 rounded-full bg-current\" aria-hidden=\"true\" />;\n}\n\n/**\n * Vertical chronological event feed (activity log, audit trail, release notes).\n * Pure semantic HTML — `<ol>` of `<li>`. Events expose an optional icon, a\n * status color, a timestamp, and a description; status is purely visual, no\n * aria-current is set since events are historical, not navigational.\n *\n * For Gantt-style project timelines, build a custom layout — Timeline is for\n * event feeds, not scheduling.\n * @returns An accessible vertical event list.\n */\nfunction Timeline({\n\tevents,\n\tsize = \"md\",\n\t\"aria-label\": ariaLabel,\n\tclassName,\n\t...rest\n}: TimelineProps) {\n\treturn (\n\t\t<ol\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={cn(\"flex flex-col list-none p-0 m-0\", className)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{events.map((event, index) => {\n\t\t\t\tconst isLast = index === events.length - 1;\n\t\t\t\tconst status = event.status ?? \"default\";\n\t\t\t\treturn (\n\t\t\t\t\t<li key={event.id} className=\"relative flex gap-[var(--space-3,0.75rem)]\">\n\t\t\t\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t<span className={indicator({ status, size })}>\n\t\t\t\t\t\t\t\t{event.icon ?? <DefaultDot />}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{!isLast ? (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\tclassName=\"w-px flex-1 bg-input min-h-[var(--space-6,1.5rem)]\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"flex flex-col gap-[var(--space-1,0.25rem)] min-w-0\",\n\t\t\t\t\t\t\t\t!isLast && \"pb-[var(--space-6,1.5rem)]\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap items-baseline gap-[var(--space-2,0.5rem)]\">\n\t\t\t\t\t\t\t\t<span className=\"text-sm font-medium text-foreground\">\n\t\t\t\t\t\t\t\t\t{event.title}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{event.timestamp ? (\n\t\t\t\t\t\t\t\t\t<span className=\"text-xs text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{event.timestamp}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{event.description ? (\n\t\t\t\t\t\t\t\t<div className=\"text-sm text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{event.description}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</ol>\n\t);\n}\nTimeline.displayName = \"Timeline\";\n\nexport { Timeline };\nexport type { TimelineEvent, TimelineProps, TimelineStatus };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface DropzoneProps\n\textends Omit<\n\t\tReact.HTMLAttributes<HTMLDivElement>,\n\t\t\"onChange\" | \"onDrop\" | \"children\"\n\t> {\n\t/** Fired with the accepted file list every time the user picks or drops files. */\n\tonFilesSelected?: (files: File[]) => void;\n\t/**\n\t * Fired when files are dropped/picked but ALL of them are filtered out by\n\t * `accept` / `maxSize` / `maxFiles`. Useful for surfacing \"file too large\"\n\t * or \"wrong type\" toasts to the user. Receives the rejected File[].\n\t */\n\tonFilesRejected?: (files: File[]) => void;\n\t/** `accept` attribute forwarded to the hidden file input (e.g. \"image/*\", \".csv\"). */\n\taccept?: string;\n\t/** Allow multiple files. Default true. */\n\tmultiple?: boolean;\n\t/** Maximum total file count (after dedupe). Excess files are dropped silently — surface in your handler. */\n\tmaxFiles?: number;\n\t/** Maximum size per file in bytes. Files over the cap are filtered before onFilesSelected fires. */\n\tmaxSize?: number;\n\t/** Disable interaction. */\n\tdisabled?: boolean;\n\t/** Optional render override for the dropzone body. Receives drag state. */\n\tchildren?: React.ReactNode | ((state: DropzoneRenderState) => React.ReactNode);\n\t/** Required accessible name for the drop area. */\n\t\"aria-label\": string;\n}\n\ninterface DropzoneRenderState {\n\tisDragOver: boolean;\n\tisDisabled: boolean;\n\topenFileDialog: () => void;\n}\n\n/** Apply `accept` / `maxSize` / `maxFiles` filters before emitting to onFilesSelected. */\nfunction filterFiles(\n\tfiles: FileList | File[],\n\t{ accept, maxSize, maxFiles }: { accept?: string; maxSize?: number; maxFiles?: number },\n): File[] {\n\tconst list = Array.from(files);\n\tconst acceptList = accept\n\t\t? accept\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((s) => s.trim())\n\t\t\t\t.filter(Boolean)\n\t\t: undefined;\n\n\tconst matchAccept = (file: File): boolean => {\n\t\tif (!acceptList) return true;\n\t\treturn acceptList.some((entry) => {\n\t\t\tif (entry.startsWith(\".\")) {\n\t\t\t\treturn file.name.toLowerCase().endsWith(entry.toLowerCase());\n\t\t\t}\n\t\t\tif (entry.endsWith(\"/*\")) {\n\t\t\t\tconst prefix = entry.slice(0, -1); // \"image/\"\n\t\t\t\treturn file.type.startsWith(prefix);\n\t\t\t}\n\t\t\treturn file.type === entry;\n\t\t});\n\t};\n\n\tconst sized =\n\t\ttypeof maxSize === \"number\" ? list.filter((f) => f.size <= maxSize) : list;\n\tconst accepted = sized.filter(matchAccept);\n\tif (typeof maxFiles === \"number\") return accepted.slice(0, maxFiles);\n\treturn accepted;\n}\n\n/**\n * Drag-and-drop file input built on the native HTML5 drag-drop API plus a\n * visually-hidden (sr-only) `<input type=\"file\">` for screen-reader and\n * keyboard access.\n *\n * Two interaction surfaces:\n * - The visible drop area is a `role=\"button\"` div with `tabIndex=0` and the\n * required `aria-label`. Click, Enter, or Space proxies through to click the\n * hidden input, opening the system file dialog.\n * - The hidden input itself remains in the accessibility tree (sr-only, NOT\n * `aria-hidden`) so AT-driven file pickers can find it directly.\n *\n * Pass `children` as a node (default placeholder) or a function receiving\n * `{ isDragOver, isDisabled, openFileDialog }` for full layout control.\n * @returns A drop area + hidden file input pair that yields a File[].\n */\nfunction Dropzone({\n\tonFilesSelected,\n\tonFilesRejected,\n\taccept,\n\tmultiple = true,\n\tmaxFiles,\n\tmaxSize,\n\tdisabled = false,\n\tchildren,\n\tclassName,\n\t\"aria-label\": ariaLabel,\n\t...rest\n}: DropzoneProps) {\n\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\tconst [isDragOver, setIsDragOver] = React.useState(false);\n\tconst dragCounter = React.useRef(0);\n\n\tconst emit = React.useCallback(\n\t\t(files: FileList | File[] | null | undefined) => {\n\t\t\tif (!files || disabled) return;\n\t\t\tconst all = Array.from(files);\n\t\t\tif (all.length === 0) return;\n\t\t\tconst accepted = filterFiles(all, { accept, maxSize, maxFiles });\n\t\t\tif (accepted.length === 0) {\n\t\t\t\tonFilesRejected?.(all);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst finalAccepted = !multiple ? accepted.slice(0, 1) : accepted;\n\t\t\tconst rejected = all.filter((f) => !finalAccepted.includes(f));\n\t\t\tonFilesSelected?.(finalAccepted);\n\t\t\tif (rejected.length > 0) onFilesRejected?.(rejected);\n\t\t},\n\t\t[\n\t\t\taccept,\n\t\t\tdisabled,\n\t\t\tmaxFiles,\n\t\t\tmaxSize,\n\t\t\tmultiple,\n\t\t\tonFilesSelected,\n\t\t\tonFilesRejected,\n\t\t],\n\t);\n\n\t/*\n\t * Reset the drag counter + isDragOver when the user cancels a drag outside\n\t * the dropzone (Esc, drag off the page, switch tab). Without this, the\n\t * counter can stay >0 and the dropzone gets stuck in its hover style.\n\t */\n\tReact.useEffect(() => {\n\t\tconst reset = () => {\n\t\t\tdragCounter.current = 0;\n\t\t\tsetIsDragOver(false);\n\t\t};\n\t\twindow.addEventListener(\"dragend\", reset);\n\t\twindow.addEventListener(\"drop\", reset);\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"dragend\", reset);\n\t\t\twindow.removeEventListener(\"drop\", reset);\n\t\t};\n\t}, []);\n\n\tconst openFileDialog = React.useCallback(() => {\n\t\tif (disabled) return;\n\t\tinputRef.current?.click();\n\t}, [disabled]);\n\n\tconst handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\tdragCounter.current += 1;\n\t\tif (e.dataTransfer.types.includes(\"Files\")) setIsDragOver(true);\n\t};\n\tconst handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\te.dataTransfer.dropEffect = \"copy\";\n\t};\n\tconst handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\tdragCounter.current = Math.max(0, dragCounter.current - 1);\n\t\tif (dragCounter.current === 0) setIsDragOver(false);\n\t};\n\tconst handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\tdragCounter.current = 0;\n\t\tsetIsDragOver(false);\n\t\temit(e.dataTransfer.files);\n\t};\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\t\tif (e.key === \"Enter\" || e.key === \" \") {\n\t\t\te.preventDefault();\n\t\t\topenFileDialog();\n\t\t}\n\t};\n\n\tconst renderState: DropzoneRenderState = {\n\t\tisDragOver,\n\t\tisDisabled: disabled,\n\t\topenFileDialog,\n\t};\n\n\treturn (\n\t\t<div\n\t\t\trole=\"button\"\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\taria-label={ariaLabel}\n\t\t\taria-disabled={disabled || undefined}\n\t\t\tdata-drag-over={isDragOver || undefined}\n\t\t\tonClick={openFileDialog}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\tonDragEnter={handleDragEnter}\n\t\t\tonDragOver={handleDragOver}\n\t\t\tonDragLeave={handleDragLeave}\n\t\t\tonDrop={handleDrop}\n\t\t\tclassName={cn(\n\t\t\t\t\"flex w-full cursor-pointer select-none flex-col items-center justify-center gap-[var(--space-2,0.5rem)] rounded-md border-2 border-dashed border-input bg-background px-[var(--space-6,1.5rem)] py-[var(--space-8,2rem)] text-center text-sm transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\tisDragOver && \"border-primary bg-accent text-accent-foreground\",\n\t\t\t\tdisabled && \"pointer-events-none opacity-50\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{typeof children === \"function\"\n\t\t\t\t? children(renderState)\n\t\t\t\t: (children ?? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\t\tclassName=\"h-6 w-6 text-muted-foreground\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n\t\t\t\t\t\t\t\t<polyline points=\"17 8 12 3 7 8\" />\n\t\t\t\t\t\t\t\t<line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t<span className=\"font-medium\">\n\t\t\t\t\t\t\t\t{isDragOver ? \"Drop files to upload\" : \"Drag files here or click to browse\"}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{accept ? (\n\t\t\t\t\t\t\t\t<span className=\"text-xs text-muted-foreground\">{accept}</span>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</>\n\t\t\t\t\t))}\n\t\t\t<input\n\t\t\t\tref={inputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept={accept}\n\t\t\t\tmultiple={multiple}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tclassName=\"sr-only\"\n\t\t\t\t/*\n\t\t\t\t * Intentionally NOT aria-hidden + NOT tabIndex=-1: the input\n\t\t\t\t * stays in the a11y tree so AT-driven file pickers (NVDA's\n\t\t\t\t * forms mode, JAWS) can find it. Visually hidden via sr-only.\n\t\t\t\t */\n\t\t\t\tonChange={(e) => {\n\t\t\t\t\temit(e.target.files);\n\t\t\t\t\t// Reset so picking the same file twice still fires onChange\n\t\t\t\t\te.target.value = \"\";\n\t\t\t\t}}\n\t\t\t/>\n\t\t</div>\n\t);\n}\nDropzone.displayName = \"Dropzone\";\n\nexport { Dropzone };\nexport type { DropzoneProps, DropzoneRenderState };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface TimePickerProps\n\textends Omit<\n\t\tReact.InputHTMLAttributes<HTMLInputElement>,\n\t\t\"type\" | \"value\" | \"onChange\" | \"size\"\n\t> {\n\t/** Controlled time value as `\"HH:MM\"` or `\"HH:MM:SS\"` (24-hour). */\n\tvalue?: string;\n\t/** Fired with the new `\"HH:MM\"` (or `\"HH:MM:SS\"`) string when the user picks a time. */\n\tonChange?: (value: string) => void;\n\t/**\n\t * Step in seconds — `60` shows HH:MM only (default), `1` shows HH:MM:SS.\n\t * Smaller values change the spinner increment in supported browsers.\n\t */\n\tstep?: number;\n\t/** Earliest selectable time as `\"HH:MM\"`. */\n\tmin?: string;\n\t/** Latest selectable time as `\"HH:MM\"`. */\n\tmax?: string;\n\t/** Disable the input. */\n\tdisabled?: boolean;\n\t/** Accessible label for the trigger (required when no adjacent visible <label>). */\n\t\"aria-label\"?: string;\n}\n\n/**\n * Time input — styled wrapper around the native `<input type=\"time\">` so the\n * browser handles 12/24-hour locale, keyboard arrow stepping, and screen-reader\n * announcement. Value is a `\"HH:MM\"` (or `\"HH:MM:SS\"` when `step={1}`) string.\n *\n * For free-form composite hour/minute fields with explicit AM/PM segments,\n * compose Input + Select yourself — the native input covers ~95% of TimePicker\n * use cases with full a11y, including keyboard-driven hour/minute spinning.\n * @returns A token-styled native time input.\n */\nconst TimePicker = React.forwardRef<HTMLInputElement, TimePickerProps>(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tstep,\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tdisabled,\n\t\t\tclassName,\n\t\t\t\"aria-label\": ariaLabel,\n\t\t\t...rest\n\t\t},\n\t\tref,\n\t) => {\n\t\treturn (\n\t\t\t<input\n\t\t\t\tref={ref}\n\t\t\t\ttype=\"time\"\n\t\t\t\tvalue={value ?? \"\"}\n\t\t\t\tstep={step}\n\t\t\t\tmin={min}\n\t\t\t\tmax={max}\n\t\t\t\tdisabled={disabled}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tonChange={(e) => onChange?.(e.target.value)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"inline-flex h-[var(--control-height-md,2.5rem)] w-[160px] items-center rounded-md border border-input bg-background px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-normal transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\t\t\t\"[&::-webkit-calendar-picker-indicator]:cursor-pointer [&::-webkit-calendar-picker-indicator]:opacity-60 hover:[&::-webkit-calendar-picker-indicator]:opacity-100\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t);\n\t},\n);\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\nexport type { TimePickerProps };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface FileTreeNode {\n\t/** Stable unique id used as React key + ARIA target. */\n\tid: string;\n\t/** Display name (file or folder). */\n\tname: string;\n\t/** Nested children. Presence (even if empty array) marks the node as a folder. */\n\tchildren?: FileTreeNode[];\n\t/** Optional icon override. Default chooses folder/file based on `children`. */\n\ticon?: React.ReactNode;\n\t/** Disable selection + expand toggle. */\n\tdisabled?: boolean;\n}\n\ninterface FileTreeProps {\n\t/** Root nodes. */\n\tnodes: FileTreeNode[];\n\t/** Uncontrolled initial expanded ids. */\n\tdefaultExpanded?: string[];\n\t/** Controlled expanded ids. */\n\texpanded?: string[];\n\t/** Fired when expanded set changes (array of ids). */\n\tonExpandedChange?: (ids: string[]) => void;\n\t/** Controlled selected node id. */\n\tselected?: string;\n\t/** Fired when the user activates a node (click, Enter, or Space). */\n\tonSelect?: (id: string) => void;\n\t/** Required accessible name for the tree container. */\n\t\"aria-label\": string;\n\t/** Extra class names on the root tree element. */\n\tclassName?: string;\n}\n\ninterface FlatNode {\n\tid: string;\n\tname: string;\n\tlevel: number;\n\thasChildren: boolean;\n\tdisabled: boolean;\n\tparentId: string | null;\n\ticon: React.ReactNode | undefined;\n}\n\n/** Walk the tree once, emitting every visible node in document order. */\nfunction flatten(\n\tnodes: FileTreeNode[],\n\texpandedSet: Set<string>,\n\tlevel = 1,\n\tparentId: string | null = null,\n): FlatNode[] {\n\tconst out: FlatNode[] = [];\n\tfor (const node of nodes) {\n\t\tconst hasChildren = Array.isArray(node.children);\n\t\tout.push({\n\t\t\tid: node.id,\n\t\t\tname: node.name,\n\t\t\tlevel,\n\t\t\thasChildren,\n\t\t\tdisabled: !!node.disabled,\n\t\t\tparentId,\n\t\t\ticon: node.icon,\n\t\t});\n\t\tif (hasChildren && expandedSet.has(node.id) && node.children) {\n\t\t\tout.push(...flatten(node.children, expandedSet, level + 1, node.id));\n\t\t}\n\t}\n\treturn out;\n}\n\n/** Default folder glyph; flips between open and closed shapes via `open`. */\nfunction FolderIcon({ open }: { open: boolean }) {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"h-4 w-4 shrink-0\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t{open ? (\n\t\t\t\t<path d=\"M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-7l-2-2H5a2 2 0 0 0-2 2z\" />\n\t\t\t) : (\n\t\t\t\t<path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\" />\n\t\t\t)}\n\t\t</svg>\n\t);\n}\n\n/** Default leaf-node glyph (generic file icon). */\nfunction FileIcon() {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName=\"h-4 w-4 shrink-0\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n\t\t\t<polyline points=\"14 2 14 8 20 8\" />\n\t\t</svg>\n\t);\n}\n\n/** Disclosure chevron — rotates 90° when the folder is expanded. */\nfunction Chevron({ expanded }: { expanded: boolean }) {\n\treturn (\n\t\t<svg\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\tclassName={cn(\n\t\t\t\t\"h-3 w-3 shrink-0 text-muted-foreground transition-transform duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\texpanded ? \"rotate-90\" : \"\",\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<polyline points=\"9 18 15 12 9 6\" />\n\t\t</svg>\n\t);\n}\n\ninterface TreeItemProps {\n\tnode: FileTreeNode;\n\tlevel: number;\n\texpandedSet: Set<string>;\n\tselected?: string;\n\tonToggle: (id: string) => void;\n\tonSelect: (id: string) => void;\n\tonKeyDown: (e: React.KeyboardEvent<HTMLDivElement>, id: string) => void;\n\tregisterRef: (id: string, el: HTMLDivElement | null) => void;\n\ttabbableId: string | null;\n}\n\n/** Recursive single-node renderer; chevron toggles, row body selects. */\nfunction TreeItem({\n\tnode,\n\tlevel,\n\texpandedSet,\n\tselected,\n\tonToggle,\n\tonSelect,\n\tonKeyDown,\n\tregisterRef,\n\ttabbableId,\n}: TreeItemProps) {\n\tconst hasChildren = Array.isArray(node.children);\n\tconst isExpanded = hasChildren && expandedSet.has(node.id);\n\tconst isSelected = selected === node.id;\n\n\treturn (\n\t\t<li role=\"none\">\n\t\t\t<div\n\t\t\t\trole=\"treeitem\"\n\t\t\t\taria-level={level}\n\t\t\t\taria-expanded={hasChildren ? isExpanded : undefined}\n\t\t\t\taria-selected={isSelected}\n\t\t\t\taria-disabled={node.disabled || undefined}\n\t\t\t\ttabIndex={tabbableId === node.id ? 0 : -1}\n\t\t\t\tref={(el) => registerRef(node.id, el)}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\tif (node.disabled) return;\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t/*\n\t\t\t\t\t * WAI-ARIA tree pattern: row click selects only. Toggling\n\t\t\t\t\t * a folder is the chevron's job (or ArrowRight/Left, or\n\t\t\t\t\t * Enter/Space when the row is focused).\n\t\t\t\t\t */\n\t\t\t\t\tonSelect(node.id);\n\t\t\t\t}}\n\t\t\t\tonKeyDown={(e) => onKeyDown(e, node.id)}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex items-center gap-[var(--space-2,0.5rem)] rounded-md px-[var(--space-2,0.5rem)] py-[var(--space-1,0.25rem)] text-sm cursor-pointer select-none transition-colors duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1\",\n\t\t\t\t\tisSelected && \"bg-accent text-accent-foreground\",\n\t\t\t\t\tnode.disabled && \"opacity-50 cursor-not-allowed pointer-events-none\",\n\t\t\t\t)}\n\t\t\t\tstyle={{ paddingInlineStart: `calc(${level - 1} * 1rem + var(--space-2, 0.5rem))` }}\n\t\t\t>\n\t\t\t\t{hasChildren ? (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * Decorative button — toggling is also reachable via\n\t\t\t\t\t\t * Enter/Space on the treeitem and ArrowRight/Left, so\n\t\t\t\t\t\t * we don't add this to the keyboard tour.\n\t\t\t\t\t\t */\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tif (node.disabled) return;\n\t\t\t\t\t\t\tonToggle(node.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tclassName=\"inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm hover:bg-accent-foreground/10\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Chevron expanded={isExpanded} />\n\t\t\t\t\t</button>\n\t\t\t\t) : (\n\t\t\t\t\t<span className=\"w-3 shrink-0\" aria-hidden=\"true\" />\n\t\t\t\t)}\n\t\t\t\t{node.icon ?? (hasChildren ? <FolderIcon open={isExpanded} /> : <FileIcon />)}\n\t\t\t\t<span className=\"truncate\">{node.name}</span>\n\t\t\t</div>\n\t\t\t{hasChildren && isExpanded && node.children ? (\n\t\t\t\t<ul role=\"group\" className=\"m-0 list-none p-0\">\n\t\t\t\t\t{node.children.map((child) => (\n\t\t\t\t\t\t<TreeItem\n\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\tnode={child}\n\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\texpandedSet={expandedSet}\n\t\t\t\t\t\t\tselected={selected}\n\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\tonKeyDown={onKeyDown}\n\t\t\t\t\t\t\tregisterRef={registerRef}\n\t\t\t\t\t\t\ttabbableId={tabbableId}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t) : null}\n\t\t</li>\n\t);\n}\n\n/**\n * Hierarchical tree view for files, folders, settings sections, or any nested\n * navigation. Built on the WAI-ARIA tree pattern: `role=\"tree\"` root,\n * `role=\"treeitem\"` per node, `role=\"group\"` per child group, with\n * `aria-level` / `aria-expanded` / `aria-selected` reflecting state.\n *\n * Keyboard: Up/Down move between visible items; Right expands a folder or\n * moves to the first child; Left collapses or moves to the parent;\n * Enter/Space activate the focused node; Home/End jump to the first/last.\n *\n * Expanded state is uncontrolled by default (`defaultExpanded`). Pass\n * `expanded` + `onExpandedChange` for controlled mode.\n * @returns A keyboard-accessible nested tree.\n */\nfunction FileTree({\n\tnodes,\n\tdefaultExpanded,\n\texpanded: expandedProp,\n\tonExpandedChange,\n\tselected,\n\tonSelect,\n\t\"aria-label\": ariaLabel,\n\tclassName,\n}: FileTreeProps) {\n\tconst isControlled = expandedProp !== undefined;\n\tconst [internalExpanded, setInternalExpanded] = React.useState<string[]>(\n\t\tdefaultExpanded ?? [],\n\t);\n\tconst expanded = isControlled ? expandedProp : internalExpanded;\n\tconst expandedSet = React.useMemo(() => new Set(expanded), [expanded]);\n\n\tconst itemRefs = React.useRef(new Map<string, HTMLDivElement>());\n\tconst registerRef = React.useCallback(\n\t\t(id: string, el: HTMLDivElement | null) => {\n\t\t\tif (el) itemRefs.current.set(id, el);\n\t\t\telse itemRefs.current.delete(id);\n\t\t},\n\t\t[],\n\t);\n\n\tconst flat = React.useMemo(\n\t\t() => flatten(nodes, expandedSet),\n\t\t[nodes, expandedSet],\n\t);\n\n\tconst firstId = flat[0]?.id ?? null;\n\tconst [focusedId, setFocusedId] = React.useState<string | null>(null);\n\t/*\n\t * Resolve the roving-tabindex target against the *visible* (flattened)\n\t * node set. If `selected` lives inside a collapsed branch its <treeitem>\n\t * doesn't render, and pointing tabIndex=0 at it would silently skip the\n\t * whole tree from Tab navigation.\n\t */\n\tconst visibleIds = React.useMemo(\n\t\t() => new Set(flat.map((n) => n.id)),\n\t\t[flat],\n\t);\n\tconst candidate = focusedId ?? selected ?? firstId;\n\tconst tabbableId =\n\t\tcandidate && visibleIds.has(candidate) ? candidate : firstId;\n\n\tconst setExpanded = React.useCallback(\n\t\t(next: string[]) => {\n\t\t\tif (!isControlled) setInternalExpanded(next);\n\t\t\tonExpandedChange?.(next);\n\t\t},\n\t\t[isControlled, onExpandedChange],\n\t);\n\n\tconst toggle = React.useCallback(\n\t\t(id: string) => {\n\t\t\tconst set = new Set(expanded);\n\t\t\tif (set.has(id)) set.delete(id);\n\t\t\telse set.add(id);\n\t\t\tsetExpanded(Array.from(set));\n\t\t},\n\t\t[expanded, setExpanded],\n\t);\n\n\tconst handleSelect = React.useCallback(\n\t\t(id: string) => {\n\t\t\tonSelect?.(id);\n\t\t\tsetFocusedId(id);\n\t\t},\n\t\t[onSelect],\n\t);\n\n\tconst focusNode = (id: string) => {\n\t\tsetFocusedId(id);\n\t\t// Defer to next paint so the new tabbable element is in the DOM.\n\t\trequestAnimationFrame(() => itemRefs.current.get(id)?.focus());\n\t};\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>, id: string) => {\n\t\tconst flatNodes = flat;\n\t\tconst idx = flatNodes.findIndex((n) => n.id === id);\n\t\tconst node = flatNodes[idx];\n\t\tif (!node) return;\n\n\t\t// Walk past disabled neighbours so arrow keys never park focus on a\n\t\t// non-actionable node — matches the convention used elsewhere in the\n\t\t// repo (see <Select> / <Combobox> disabled item handling in cmdk).\n\t\tconst findEnabled = (start: number, dir: 1 | -1) => {\n\t\t\tlet i = start;\n\t\t\twhile (i >= 0 && i < flatNodes.length) {\n\t\t\t\tif (!flatNodes[i].disabled) return flatNodes[i];\n\t\t\t\ti += dir;\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\n\t\tswitch (e.key) {\n\t\t\tcase \"ArrowDown\": {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst next = findEnabled(idx + 1, 1);\n\t\t\t\tif (next) focusNode(next.id);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"ArrowUp\": {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst prev = findEnabled(idx - 1, -1);\n\t\t\t\tif (prev) focusNode(prev.id);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"ArrowRight\": {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (node.hasChildren && !expandedSet.has(node.id)) {\n\t\t\t\t\ttoggle(node.id);\n\t\t\t\t} else if (node.hasChildren) {\n\t\t\t\t\tconst firstChild = flatNodes[idx + 1];\n\t\t\t\t\tif (firstChild && firstChild.parentId === node.id)\n\t\t\t\t\t\tfocusNode(firstChild.id);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"ArrowLeft\": {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (node.hasChildren && expandedSet.has(node.id)) {\n\t\t\t\t\ttoggle(node.id);\n\t\t\t\t} else if (node.parentId) {\n\t\t\t\t\tfocusNode(node.parentId);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Home\": {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (flatNodes[0]) focusNode(flatNodes[0].id);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"End\": {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst last = flatNodes[flatNodes.length - 1];\n\t\t\t\tif (last) focusNode(last.id);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"Enter\":\n\t\t\tcase \" \": {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!node.disabled) {\n\t\t\t\t\tif (node.hasChildren) toggle(node.id);\n\t\t\t\t\thandleSelect(node.id);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<ul\n\t\t\trole=\"tree\"\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={cn(\"list-none p-0 m-0\", className)}\n\t\t>\n\t\t\t{nodes.map((node) => (\n\t\t\t\t<TreeItem\n\t\t\t\t\tkey={node.id}\n\t\t\t\t\tnode={node}\n\t\t\t\t\tlevel={1}\n\t\t\t\t\texpandedSet={expandedSet}\n\t\t\t\t\tselected={selected}\n\t\t\t\t\tonToggle={toggle}\n\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tregisterRef={registerRef}\n\t\t\t\t\ttabbableId={tabbableId}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</ul>\n\t);\n}\nFileTree.displayName = \"FileTree\";\n\nexport { FileTree };\nexport type { FileTreeNode, FileTreeProps };\n","import * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\n/** Root container controlling open state of a side sheet. */\nconst Sheet = SheetPrimitive.Root;\n\n/** The element (usually a button) that opens the sheet. */\nconst SheetTrigger = SheetPrimitive.Trigger;\n\n/** Closes the sheet when rendered inside SheetContent. */\nconst SheetClose = SheetPrimitive.Close;\n\n/** Portals the sheet overlay and content into the body. */\nconst SheetPortal = SheetPrimitive.Portal;\n\n/** Dimmed backdrop rendered behind the sheet content. */\nconst SheetOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<SheetPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\t\"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\t\"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nSheetOverlay.displayName = \"SheetOverlay\";\n\nconst sheetVariants = cva(\n\tcn(\n\t\t\"fixed z-50 gap-[var(--gap-md,1rem)] bg-background p-[var(--space-6,1.5rem)] shadow-lg\",\n\t\t\"border-foreground/[0.08]\",\n\t\t\"transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out\",\n\t\t\"data-[state=closed]:duration-[var(--duration-slow,300ms)] data-[state=open]:duration-500\",\n\t),\n\t{\n\t\tvariants: {\n\t\t\tside: {\n\t\t\t\ttop: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n\t\t\t\tbottom:\n\t\t\t\t\t\"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n\t\t\t\tleft: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n\t\t\t\tright:\n\t\t\t\t\t\"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tside: \"right\",\n\t\t},\n\t},\n);\n\ninterface SheetContentProps\n\textends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n\t\tVariantProps<typeof sheetVariants> {}\n\n/** The sheet content panel that slides in from a side of the viewport. */\nconst SheetContent = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Content>,\n\tSheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n\t<SheetPortal>\n\t\t<SheetOverlay />\n\t\t<SheetPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(sheetVariants({ side }), className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t\t<SheetPrimitive.Close\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:opacity-100\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"disabled:pointer-events-none\",\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t</svg>\n\t\t\t\t<span className=\"sr-only\">Close</span>\n\t\t\t</SheetPrimitive.Close>\n\t\t</SheetPrimitive.Content>\n\t</SheetPortal>\n));\nSheetContent.displayName = \"SheetContent\";\n\n/**\n * Header container inside SheetContent; stacks title and description.\n * @returns A div with vertical rhythm.\n */\nfunction SheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container inside SheetContent; aligns action buttons.\n * @returns A div that stacks buttons on mobile and right-aligns on desktop.\n */\nfunction SheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/** Accessible sheet title; Radix wires it to aria-labelledby automatically. */\nconst SheetTitle = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<SheetPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold text-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nSheetTitle.displayName = \"SheetTitle\";\n\n/** Accessible sheet description; Radix wires it to aria-describedby automatically. */\nconst SheetDescription = React.forwardRef<\n\tReact.ComponentRef<typeof SheetPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<SheetPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nSheetDescription.displayName = \"SheetDescription\";\n\nexport {\n\tSheet,\n\tSheetPortal,\n\tSheetOverlay,\n\tSheetTrigger,\n\tSheetClose,\n\tSheetContent,\n\tSheetHeader,\n\tSheetFooter,\n\tSheetTitle,\n\tSheetDescription,\n};\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\nimport { cn } from \"../../lib/utils.js\";\n\ntype DrawerRootProps = React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Root>;\n\n/**\n * Root container for a bottom drawer (vaul). Manages open state, drag, and snap points.\n * @returns A drawer root that coordinates overlay, content, and dismiss behavior.\n */\nfunction Drawer({ shouldScaleBackground = true, ...props }: DrawerRootProps) {\n\treturn <DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />;\n}\nDrawer.displayName = \"Drawer\";\n\n/** The element that opens the drawer when clicked. */\nconst DrawerTrigger = DrawerPrimitive.Trigger;\n\n/** Portals drawer overlay and content into the body. */\nconst DrawerPortal = DrawerPrimitive.Portal;\n\n/** Closes the drawer when rendered inside DrawerContent. */\nconst DrawerClose = DrawerPrimitive.Close;\n\n/** Dimmed backdrop behind the drawer content. */\nconst DrawerOverlay = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Overlay>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Overlay\n\t\tref={ref}\n\t\tclassName={cn(\n\t\t\t\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm\",\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n));\nDrawerOverlay.displayName = \"DrawerOverlay\";\n\n/** The drawer content panel. Slides up from the bottom and can be dragged down to dismiss. */\nconst DrawerContent = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n\t<DrawerPortal>\n\t\t<DrawerOverlay />\n\t\t<DrawerPrimitive.Content\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t\"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border border-foreground/[0.08] bg-background\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className=\"mx-auto mt-[var(--space-4,1rem)] h-2 w-[100px] rounded-full bg-muted\" aria-hidden=\"true\" />\n\t\t\t{children}\n\t\t</DrawerPrimitive.Content>\n\t</DrawerPortal>\n));\nDrawerContent.displayName = \"DrawerContent\";\n\n/**\n * Header container inside DrawerContent; stacks title and description.\n * @returns A div with vertical rhythm.\n */\nfunction DrawerHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\"grid gap-1.5 p-[var(--space-4,1rem)] text-center sm:text-left\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\n/**\n * Footer container inside DrawerContent; stacks action buttons.\n * @returns A div that stacks buttons vertically with consistent gutters.\n */\nfunction DrawerFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n\treturn <div className={cn(\"mt-auto flex flex-col gap-[var(--gap-sm,0.5rem)] p-[var(--space-4,1rem)]\", className)} {...props} />;\n}\n\n/** Accessible drawer title; vaul wires it to aria-labelledby automatically. */\nconst DrawerTitle = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Title>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Title\n\t\tref={ref}\n\t\tclassName={cn(\"text-lg font-semibold leading-none tracking-tight\", className)}\n\t\t{...props}\n\t/>\n));\nDrawerTitle.displayName = \"DrawerTitle\";\n\n/** Accessible drawer description; vaul wires it to aria-describedby automatically. */\nconst DrawerDescription = React.forwardRef<\n\tReact.ComponentRef<typeof DrawerPrimitive.Description>,\n\tReact.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n\t<DrawerPrimitive.Description\n\t\tref={ref}\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\n\t\t{...props}\n\t/>\n));\nDrawerDescription.displayName = \"DrawerDescription\";\n\nexport {\n\tDrawer,\n\tDrawerPortal,\n\tDrawerOverlay,\n\tDrawerTrigger,\n\tDrawerClose,\n\tDrawerContent,\n\tDrawerHeader,\n\tDrawerFooter,\n\tDrawerTitle,\n\tDrawerDescription,\n};\n","import * as React from \"react\";\nimport {\n\tGroup as ResizablePrimitiveGroup,\n\tPanel as ResizablePrimitivePanel,\n\tSeparator as ResizablePrimitiveSeparator,\n} from \"react-resizable-panels\";\nimport { cn } from \"../../lib/utils.js\";\n\n/**\n * Root container for a group of resizable panels.\n * @returns A flex container that coordinates panel sizing.\n */\nfunction ResizablePanelGroup({\n\tclassName,\n\t...props\n}: React.ComponentPropsWithoutRef<typeof ResizablePrimitiveGroup>) {\n\treturn (\n\t\t<ResizablePrimitiveGroup\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-full w-full aria-[orientation=vertical]:flex-col\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\nResizablePanelGroup.displayName = \"ResizablePanelGroup\";\n\n/** A single resizable panel. Configure via defaultSize, minSize, maxSize. */\nconst ResizablePanel = ResizablePrimitivePanel;\n\ninterface ResizableHandleProps\n\textends React.ComponentPropsWithoutRef<typeof ResizablePrimitiveSeparator> {\n\t/** Show a grab-grip on the handle for affordance. */\n\twithHandle?: boolean;\n}\n\n/**\n * Draggable separator between panels. Optionally renders a grab-grip dot.\n * @returns A slim, focusable resize handle.\n */\nfunction ResizableHandle({ withHandle, className, ...props }: ResizableHandleProps) {\n\treturn (\n\t\t<ResizablePrimitiveSeparator\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-px items-center justify-center bg-foreground/[0.12] transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-ring data-[separator=active]:bg-ring\",\n\t\t\t\t\"after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2\",\n\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\"aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full\",\n\t\t\t\t\"aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:-translate-y-1/2 aria-[orientation=horizontal]:after:translate-x-0\",\n\t\t\t\t\"[&[aria-orientation=horizontal]>div]:rotate-90\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{withHandle && (\n\t\t\t\t<div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n\t\t\t\t\t<svg\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\t\tclassName=\"h-2.5 w-2.5\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<circle cx=\"9\" cy=\"5\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"9\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"9\" cy=\"19\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"15\" cy=\"5\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"15\" cy=\"12\" r=\"1\" />\n\t\t\t\t\t\t<circle cx=\"15\" cy=\"19\" r=\"1\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</ResizablePrimitiveSeparator>\n\t);\n}\nResizableHandle.displayName = \"ResizableHandle\";\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\ninterface SidebarContextValue {\n\t/** Current open/collapsed state. */\n\topen: boolean;\n\t/** Toggle or set open state. */\n\tsetOpen: (open: boolean) => void;\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null);\n\n/**\n * Reads sidebar state from context. Throws if used outside SidebarProvider.\n * @returns `{ open, setOpen }` bound to the nearest SidebarProvider.\n */\nfunction useSidebar(): SidebarContextValue {\n\tconst ctx = React.useContext(SidebarContext);\n\tif (!ctx) {\n\t\tthrow new Error(\"useSidebar must be used inside <SidebarProvider>\");\n\t}\n\treturn ctx;\n}\n\ninterface SidebarProviderProps {\n\t/** Controlled open state. */\n\topen?: boolean;\n\t/** Uncontrolled initial open state (defaults to true). */\n\tdefaultOpen?: boolean;\n\t/** Callback fired when open state changes. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Children — typically a Sidebar + app content sibling. */\n\tchildren: React.ReactNode;\n\t/** Extra class names on the provider wrapper. */\n\tclassName?: string;\n}\n\n/**\n * Hosts sidebar state. Wrap your app shell (Sidebar + main content) in this.\n * @returns A flex container with a SidebarContext provider.\n */\nfunction SidebarProvider({\n\topen: openProp,\n\tdefaultOpen = true,\n\tonOpenChange,\n\tchildren,\n\tclassName,\n}: SidebarProviderProps) {\n\tconst [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n\tconst isControlled = openProp !== undefined;\n\tconst open = isControlled ? openProp : internalOpen;\n\n\tconst setOpen = React.useCallback(\n\t\t(next: boolean) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetInternalOpen(next);\n\t\t\t}\n\t\t\tonOpenChange?.(next);\n\t\t},\n\t\t[isControlled, onOpenChange],\n\t);\n\n\tconst value = React.useMemo(() => ({ open, setOpen }), [open, setOpen]);\n\n\treturn (\n\t\t<SidebarContext.Provider value={value}>\n\t\t\t<div\n\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\tclassName={cn(\"flex min-h-screen w-full\", className)}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SidebarContext.Provider>\n\t);\n}\nSidebarProvider.displayName = \"SidebarProvider\";\n\nconst sidebarVariants = cva(\n\tcn(\n\t\t\"flex h-full shrink-0 flex-col border-foreground/[0.08] border-r bg-background text-foreground\",\n\t\t\"transition-[width] duration-[var(--duration-normal,200ms)] ease-out\",\n\t),\n\t{\n\t\tvariants: {\n\t\t\tside: {\n\t\t\t\tleft: \"border-r\",\n\t\t\t\tright: \"order-last border-l border-r-0\",\n\t\t\t},\n\t\t\tstate: {\n\t\t\t\topen: \"w-64\",\n\t\t\t\tclosed: \"w-0 overflow-hidden border-r-0\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tside: \"left\",\n\t\t\tstate: \"open\",\n\t\t},\n\t},\n);\n\ninterface SidebarProps\n\textends React.HTMLAttributes<HTMLElement>,\n\t\tPick<VariantProps<typeof sidebarVariants>, \"side\"> {}\n\n/**\n * App-shell sidebar. Reads open state from SidebarProvider and animates width.\n * @returns An aside element that expands/collapses.\n */\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n\t({ className, side = \"left\", children, ...props }, ref) => {\n\t\tconst { open } = useSidebar();\n\t\treturn (\n\t\t\t<aside\n\t\t\t\tref={ref}\n\t\t\t\tdata-state={open ? \"open\" : \"closed\"}\n\t\t\t\taria-hidden={!open || undefined}\n\t\t\t\tinert={!open}\n\t\t\t\tclassName={cn(sidebarVariants({ side, state: open ? \"open\" : \"closed\" }), className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</aside>\n\t\t);\n\t},\n);\nSidebar.displayName = \"Sidebar\";\n\ninterface SidebarTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n\t/** Render as the child element (Button, etc.) using Radix Slot. */\n\tasChild?: boolean;\n}\n\n/**\n * Toggles the sidebar open/closed. Renders a button by default; use asChild to style.\n * @returns A button that flips SidebarProvider state.\n */\nconst SidebarTrigger = React.forwardRef<HTMLButtonElement, SidebarTriggerProps>(\n\t({ asChild, className, onClick, \"aria-label\": ariaLabel, ...props }, ref) => {\n\t\tconst { open, setOpen } = useSidebar();\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\t// When asChild, prefer the consumer's aria-label (or visible text) — don't force ours.\n\t\tconst resolvedAriaLabel =\n\t\t\tariaLabel ?? (asChild ? undefined : open ? \"Collapse sidebar\" : \"Expand sidebar\");\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\ttype={asChild ? undefined : \"button\"}\n\t\t\t\taria-label={resolvedAriaLabel}\n\t\t\t\taria-expanded={open}\n\t\t\t\tonClick={(event: React.MouseEvent<HTMLElement>) => {\n\t\t\t\t\tonClick?.(event as React.MouseEvent<HTMLButtonElement>);\n\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\tsetOpen(!open);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"inline-flex h-[var(--control-height-sm,2.25rem)] w-[var(--control-height-sm,2.25rem)] items-center justify-center rounded-md text-muted-foreground\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{asChild ? null : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n\t\t\t\t\t\t\t<line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<span className=\"sr-only\">Toggle sidebar</span>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Comp>\n\t\t);\n\t},\n);\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\n/** Header container at the top of the sidebar. */\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex items-center gap-[var(--gap-sm,0.5rem)] border-b border-b-foreground/[0.08] p-[var(--space-4,1rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nSidebarHeader.displayName = \"SidebarHeader\";\n\n/** Scrollable main area of the sidebar. */\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"flex-1 overflow-auto p-[var(--space-2,0.5rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nSidebarContent.displayName = \"SidebarContent\";\n\n/** Footer container at the bottom of the sidebar. */\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\t({ className, ...props }, ref) => (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={cn(\"mt-auto border-t border-t-foreground/[0.08] p-[var(--space-4,1rem)]\", className)}\n\t\t\t{...props}\n\t\t/>\n\t),\n);\nSidebarFooter.displayName = \"SidebarFooter\";\n\ninterface SidebarItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n\t/** Render as the child element (next/link, etc.) via Slot. */\n\tasChild?: boolean;\n\t/** Mark as the current/selected item. */\n\tactive?: boolean;\n}\n\n/**\n * Single selectable row inside SidebarContent. Compose icon + label in children.\n * @returns An accessible button (or Slot) styled as a sidebar row.\n */\nconst SidebarItem = React.forwardRef<HTMLButtonElement, SidebarItemProps>(\n\t({ asChild, active, className, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\ttype={asChild ? undefined : \"button\"}\n\t\t\t\taria-current={active ? \"page\" : undefined}\n\t\t\t\tdata-active={active ? \"\" : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"inline-flex w-full items-center gap-[var(--gap-sm,0.5rem)] rounded-md px-[var(--space-3,0.75rem)] py-[var(--space-2,0.5rem)] text-sm font-medium\",\n\t\t\t\t\t\"transition-all duration-[var(--duration-normal,200ms)] ease-out\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground\",\n\t\t\t\t\t\"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n\t\t\t\t\t\"data-[active]:bg-accent data-[active]:text-accent-foreground\",\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nSidebarItem.displayName = \"SidebarItem\";\n\nexport {\n\tSidebarProvider,\n\tSidebar,\n\tSidebarTrigger,\n\tSidebarHeader,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarItem,\n\tuseSidebar,\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const buttonSchema: ComponentSchemaDefinition = {\n\tname: \"button\",\n\tdisplayName: \"Button\",\n\tdescription:\n\t\t\"A versatile button component with multiple variants, sizes, and states. Supports icons, loading state, and composition via asChild.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"actions\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"The visual style of the button\",\n\t\t\tenumValues: [\"default\", \"destructive\", \"outline\", \"secondary\", \"ghost\", \"link\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"The size of the button\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\", \"icon\"],\n\t\t},\n\t\t{\n\t\t\tname: \"asChild\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Render as a Slot component, merging props with the child element. Use to render as a link or other element.\",\n\t\t},\n\t\t{\n\t\t\tname: \"loading\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Show loading spinner and disable interaction\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the button\",\n\t\t},\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Additional CSS classes to merge with the component styles\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Visual style variants\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Primary filled button with subtle shadow for main actions\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"destructive\",\n\t\t\t\t\tdescription: \"Red button with shadow for dangerous/irreversible actions\",\n\t\t\t\t},\n\t\t\t\t{ value: \"outline\", description: \"Bordered button with hover fill for secondary actions\" },\n\t\t\t\t{ value: \"secondary\", description: \"Muted filled button for less prominent actions\" },\n\t\t\t\t{ value: \"ghost\", description: \"Transparent button, background appears on hover\" },\n\t\t\t\t{ value: \"link\", description: \"Styled as a hyperlink with underline on hover, no padding\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Size variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Standard size (h-10, px-4)\" },\n\t\t\t\t{ value: \"sm\", description: \"Compact size (h-9, px-3)\" },\n\t\t\t\t{ value: \"lg\", description: \"Large size (h-11, px-8, text-base)\" },\n\t\t\t\t{ value: \"icon\", description: \"Square icon-only size (h-10, w-10)\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Button label content\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"@radix-ui/react-slot\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"primary\",\n\t\t\"primary-foreground\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"secondary\",\n\t\t\"secondary-foreground\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic usage\",\n\t\t\tdescription: \"A simple primary button\",\n\t\t\tcode: \"<Button>Click me</Button>\",\n\t\t},\n\t\t{\n\t\t\ttitle: \"Variants\",\n\t\t\tdescription: \"Different visual styles\",\n\t\t\tcode: '<>\\n <Button variant=\"default\">Primary</Button>\\n <Button variant=\"outline\">Outline</Button>\\n <Button variant=\"secondary\">Secondary</Button>\\n <Button variant=\"ghost\">Ghost</Button>\\n <Button variant=\"destructive\">Delete</Button>\\n <Button variant=\"link\">Link</Button>\\n</>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With loading state\",\n\t\t\tdescription: \"Button showing a spinner while loading\",\n\t\t\tcode: \"<Button loading>Submitting...</Button>\",\n\t\t},\n\t\t{\n\t\t\ttitle: \"As link\",\n\t\t\tdescription: \"Button rendered as an anchor tag\",\n\t\t\tcode: '<Button asChild>\\n <a href=\"/login\">Login</a>\\n</Button>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Icon button\",\n\t\t\tdescription: \"Square button with just an icon\",\n\t\t\tcode: '<Button variant=\"outline\" size=\"icon\" aria-label=\"Settings\">\\n <SettingsIcon />\\n</Button>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for clickable actions: form submissions, confirmations, triggering operations. Use 'default' variant for primary CTAs, 'outline' or 'secondary' for less important actions, 'ghost' for toolbar-style actions.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for navigation between pages (use Link or anchor with asChild). Don't use 'destructive' for non-dangerous actions. Don't use for toggling state (use Toggle or Switch).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using 'destructive' variant for non-destructive actions\",\n\t\t\t\"Nesting interactive elements inside asChild button\",\n\t\t\t\"Missing aria-label when using icon-only size='icon' variant\",\n\t\t\t\"Using onClick for navigation instead of asChild with a link\",\n\t\t],\n\t\trelatedComponents: [\"toggle\", \"toggle-group\", \"dropdown-menu\", \"badge\"],\n\t\taccessibilityNotes:\n\t\t\t\"Automatically handles focus ring, disabled state, and aria attributes. Icon-only buttons MUST have aria-label. Loading state automatically sets disabled.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"button\", \"action\", \"cta\", \"form\", \"interactive\", \"click\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const inputSchema: ComponentSchemaDefinition = {\n\tname: \"input\",\n\tdisplayName: \"Input\",\n\tdescription:\n\t\t\"A styled text input with smooth focus transitions, shadow effects, and full HTML input compatibility.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"text\",\n\t\t\tdescription: \"The HTML input type\",\n\t\t\tenumValues: [\"text\", \"password\", \"email\", \"number\", \"search\", \"tel\", \"url\", \"file\", \"hidden\"],\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Placeholder text shown when the input is empty\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the input\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled input value\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Default value for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Change handler for controlled usage: (e: ChangeEvent<HTMLInputElement>) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Additional CSS classes to merge with the component styles\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"background\", \"ring\", \"muted-foreground\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic usage\",\n\t\t\tdescription: \"A simple text input\",\n\t\t\tcode: '<Input placeholder=\"Enter your name\" />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Email input\",\n\t\t\tdescription: \"An email-type input\",\n\t\t\tcode: '<Input type=\"email\" placeholder=\"you@example.com\" />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"File upload\",\n\t\t\tdescription: \"File input with styled file button\",\n\t\t\tcode: '<Input type=\"file\" />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With label\",\n\t\t\tdescription: \"Input paired with a Label component\",\n\t\t\tcode: '<div className=\"grid w-full max-w-sm gap-1.5\">\\n <Label htmlFor=\"email\">Email</Label>\\n <Input type=\"email\" id=\"email\" placeholder=\"Email\" />\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for single-line text input: names, emails, passwords, search, numbers. Always pair with a Label for accessibility.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for multi-line text (use Textarea). Don't use for selection from predefined options (use Select). Don't use for rich text editing.\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing associated Label element for accessibility\",\n\t\t\t\"Using type='number' without min/max constraints\",\n\t\t\t\"Not providing placeholder text for context\",\n\t\t],\n\t\trelatedComponents: [\"label\", \"textarea\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"Always pair with a Label using htmlFor/id. Consider aria-describedby for helper text or error messages.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"input\", \"text\", \"form\", \"field\", \"text-field\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const labelSchema: ComponentSchemaDefinition = {\n\tname: \"label\",\n\tdisplayName: \"Label\",\n\tdescription:\n\t\t\"An accessible label component built on Radix UI Label primitive. Associates with form controls via htmlFor.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"htmlFor\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"The id of the form control this label is associated with\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Label text content\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-label\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic usage\",\n\t\t\tdescription: \"A label paired with an input\",\n\t\t\tcode: '<div className=\"grid gap-1.5\">\\n <Label htmlFor=\"name\">Name</Label>\\n <Input id=\"name\" placeholder=\"Enter your name\" />\\n</div>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Required field\",\n\t\t\tdescription: \"Label with required indicator\",\n\t\t\tcode: '<Label htmlFor=\"email\">\\n Email <span className=\"text-destructive\">*</span>\\n</Label>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use as a label for every form input, select, textarea, checkbox, or radio group. Always use htmlFor to associate with the control's id.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use as a standalone text element — use a paragraph or heading instead. Don't use for non-form contexts.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set htmlFor matching the input's id\",\n\t\t\t\"Using Label for non-form text content\",\n\t\t\t\"Nesting interactive elements inside Label\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"textarea\", \"checkbox\", \"select\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"Clicking the label focuses the associated control. Automatically communicates the label to screen readers. Use htmlFor/id pairing, not nesting.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"label\", \"form\", \"accessibility\", \"text\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const textareaSchema: ComponentSchemaDefinition = {\n\tname: \"textarea\",\n\tdisplayName: \"Textarea\",\n\tdescription: \"A styled multi-line text input with smooth focus transitions and shadow effects.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"placeholder\", type: \"string\", required: false, description: \"Placeholder text\" },\n\t\t{ name: \"rows\", type: \"number\", required: false, default: 3, description: \"Number of visible text rows\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable the textarea\" },\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled textarea value\" },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default value for uncontrolled usage\" },\n\t\t{ name: \"onChange\", type: \"function\", required: false, description: \"Change handler: (e: ChangeEvent<HTMLTextAreaElement>) => void\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"background\", \"ring\", \"muted-foreground\"],\n\texamples: [\n\t\t{ title: \"Basic\", description: \"Simple textarea\", code: '<Textarea placeholder=\"Type your message...\" />' },\n\t\t{ title: \"With label\", description: \"Textarea paired with a label\", code: '<div className=\"grid gap-1.5\">\\n <Label htmlFor=\"message\">Message</Label>\\n <Textarea id=\"message\" placeholder=\"Type your message...\" />\\n</div>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use for multi-line text input: comments, descriptions, messages, notes. Always pair with a Label.\",\n\t\twhenNotToUse: \"Don't use for single-line input (use Input). Don't use for rich text editing.\",\n\t\tcommonMistakes: [\"Missing associated Label\", \"Not setting a reasonable min-height or rows\"],\n\t\trelatedComponents: [\"input\", \"label\", \"form\"],\n\t\taccessibilityNotes: \"Always pair with a Label using htmlFor/id. Consider aria-describedby for character limits.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"textarea\", \"text\", \"form\", \"multiline\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const checkboxSchema: ComponentSchemaDefinition = {\n\tname: \"checkbox\",\n\tdisplayName: \"Checkbox\",\n\tdescription: \"An accessible checkbox with checked, unchecked, and indeterminate states. Built on Radix UI.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"checked\", type: \"boolean\", required: false, description: \"Controlled checked state\" },\n\t\t{ name: \"defaultChecked\", type: \"boolean\", required: false, description: \"Default checked for uncontrolled\" },\n\t\t{ name: \"onCheckedChange\", type: \"function\", required: false, description: \"Callback: (checked: boolean | 'indeterminate') => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable the checkbox\" },\n\t\t{ name: \"required\", type: \"boolean\", required: false, default: false, description: \"Mark as required for form validation\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-checkbox\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"primary\", \"primary-foreground\", \"ring\"],\n\texamples: [\n\t\t{ title: \"Basic\", description: \"Checkbox with label\", code: '<div className=\"flex items-center gap-2\">\\n <Checkbox id=\"terms\" />\\n <Label htmlFor=\"terms\">Accept terms</Label>\\n</div>' },\n\t\t{ title: \"Controlled\", description: \"Controlled checkbox\", code: 'const [checked, setChecked] = useState(false);\\n<Checkbox checked={checked} onCheckedChange={setChecked} />' },\n\t\t{\n\t\t\ttitle: \"Indeterminate (parent/children)\",\n\t\t\tdescription: \"Parent renders a dash when some (but not all) children are selected\",\n\t\t\tcode: 'const [items, setItems] = useState({ email: true, push: false });\\nconst count = Object.values(items).filter(Boolean).length;\\nconst parent = count === 0 ? false : count === 2 ? true : \"indeterminate\";\\n\\n<Checkbox\\n checked={parent}\\n onCheckedChange={(v) => setItems({ email: v === true, push: v === true })}\\n/>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use for boolean toggles in forms (agree to terms, enable options), multi-select lists, or parent/children trees where the parent reflects partial selection via the `indeterminate` state.\",\n\t\twhenNotToUse: \"Don't use for mutually exclusive options (use RadioGroup). Don't use for instant toggles (use Switch).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing Label pairing\",\n\t\t\t\"Using onChange instead of onCheckedChange\",\n\t\t\t\"Forgetting that onCheckedChange can receive 'indeterminate' as well as boolean\",\n\t\t],\n\t\trelatedComponents: [\"label\", \"switch\", \"form\"],\n\t\taccessibilityNotes: \"Always pair with Label via htmlFor/id. Radix handles aria-checked automatically.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"checkbox\", \"form\", \"toggle\", \"boolean\", \"check\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const switchSchema: ComponentSchemaDefinition = {\n\tname: \"switch\",\n\tdisplayName: \"Switch\",\n\tdescription: \"An accessible toggle switch for instant on/off settings. Built on Radix UI.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"checked\", type: \"boolean\", required: false, description: \"Controlled checked state\" },\n\t\t{ name: \"defaultChecked\", type: \"boolean\", required: false, description: \"Default for uncontrolled\" },\n\t\t{ name: \"onCheckedChange\", type: \"function\", required: false, description: \"Callback: (checked: boolean) => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable the switch\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-switch\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"primary\", \"input\", \"background\", \"ring\"],\n\texamples: [\n\t\t{ title: \"Basic\", description: \"Switch with label\", code: '<div className=\"flex items-center gap-2\">\\n <Switch id=\"airplane\" />\\n <Label htmlFor=\"airplane\">Airplane Mode</Label>\\n</div>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use for settings that take effect immediately: dark mode, notifications, feature toggles.\",\n\t\twhenNotToUse: \"Don't use for form submissions (use Checkbox). Don't use for mutually exclusive options (use RadioGroup).\",\n\t\tcommonMistakes: [\"Using for form fields that need explicit submit\", \"Missing Label\"],\n\t\trelatedComponents: [\"checkbox\", \"label\", \"form\"],\n\t\taccessibilityNotes: \"Always pair with Label. Radix handles role='switch' and aria-checked.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"switch\", \"toggle\", \"form\", \"boolean\", \"setting\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const badgeSchema: ComponentSchemaDefinition = {\n\tname: \"badge\",\n\tdisplayName: \"Badge\",\n\tdescription: \"A small status indicator with multiple style variants. Used for tags, statuses, and categorization.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"display\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"secondary\", \"destructive\", \"outline\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Visual style variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Primary colored badge\" },\n\t\t\t\t{ value: \"secondary\", description: \"Muted background badge\" },\n\t\t\t\t{ value: \"destructive\", description: \"Red/danger badge\" },\n\t\t\t\t{ value: \"outline\", description: \"Bordered badge, no fill\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [{ name: \"children\", description: \"Badge content text\", required: true, acceptedTypes: [\"ReactNode\"] }],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"primary\", \"primary-foreground\", \"secondary\", \"secondary-foreground\", \"destructive\", \"destructive-foreground\", \"foreground\", \"ring\"],\n\texamples: [\n\t\t{ title: \"Variants\", description: \"All badge styles\", code: '<>\\n <Badge>Default</Badge>\\n <Badge variant=\"secondary\">Secondary</Badge>\\n <Badge variant=\"destructive\">Error</Badge>\\n <Badge variant=\"outline\">Outline</Badge>\\n</>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use for status indicators, tags, counts, categories. Place next to headings, in lists, or in table cells.\",\n\t\twhenNotToUse: \"Don't use for interactive actions (use Button). Don't use for long text content.\",\n\t\tcommonMistakes: [\"Using destructive variant for non-error states\", \"Badge text too long\"],\n\t\trelatedComponents: [\"button\", \"card\"],\n\t\taccessibilityNotes: \"Purely decorative by default. Add role='status' for dynamic status badges.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"badge\", \"tag\", \"status\", \"label\", \"indicator\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const separatorSchema: ComponentSchemaDefinition = {\n\tname: \"separator\",\n\tdisplayName: \"Separator\",\n\tdescription: \"A visual divider between content sections with horizontal or vertical orientation.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{ name: \"orientation\", type: \"enum\", required: false, default: \"horizontal\", description: \"Direction of the separator\", enumValues: [\"horizontal\", \"vertical\"] },\n\t\t{ name: \"decorative\", type: \"boolean\", required: false, default: true, description: \"If true, separator is purely visual and hidden from screen readers\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-separator\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{ title: \"Horizontal\", description: \"Default horizontal divider\", code: \"<Separator />\" },\n\t\t{ title: \"Vertical\", description: \"Vertical divider in a flex row\", code: '<div className=\"flex h-5 items-center gap-4\">\\n <span>Left</span>\\n <Separator orientation=\"vertical\" />\\n <span>Right</span>\\n</div>' },\n\t],\n\tai: {\n\t\twhenToUse: \"Use to visually separate content sections, menu items, or sidebar groups.\",\n\t\twhenNotToUse: \"Don't use for spacing (use margin/padding). Don't use between every list item.\",\n\t\tcommonMistakes: [\"Using as spacing instead of semantic separation\", \"Forgetting orientation='vertical' needs parent height\"],\n\t\trelatedComponents: [\"card\", \"breadcrumb\", \"dropdown-menu\", \"menubar\"],\n\t\taccessibilityNotes: \"Set decorative=false if the separator conveys semantic meaning. Radix handles role='separator'.\",\n\t\ttokenBudget: 150,\n\t},\n\ttags: [\"separator\", \"divider\", \"hr\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const cardSchema: ComponentSchemaDefinition = {\n\tname: \"card\",\n\tdisplayName: \"Card\",\n\tdescription: \"A container component with header, content, and footer sections. Includes subtle shadow and hover effects.\",\n\tcategory: \"component\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the root card\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"Card content — use CardHeader, CardContent, CardFooter subcomponents\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"card-foreground\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Complete card\",\n\t\t\tdescription: \"Card with all sections\",\n\t\t\tcode: '<Card>\\n <CardHeader>\\n <CardTitle>Create project</CardTitle>\\n <CardDescription>Deploy your new project in one-click.</CardDescription>\\n </CardHeader>\\n <CardContent>\\n <p>Card content here</p>\\n </CardContent>\\n <CardFooter>\\n <Button>Deploy</Button>\\n </CardFooter>\\n</Card>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use to group related content with a visual boundary: settings panels, product listings, dashboard widgets, form sections.\",\n\t\twhenNotToUse: \"Don't use for full-page layouts (use plain divs). Don't nest cards inside cards.\",\n\t\tcommonMistakes: [\"Nesting cards\", \"Using Card when a simple div with border would suffice\", \"Forgetting CardContent padding when placing forms inside\"],\n\t\trelatedComponents: [\"button\", \"separator\"],\n\t\taccessibilityNotes: \"Card is a div by default. Add role='region' and aria-label for landmark cards. CardTitle renders h3 — ensure heading hierarchy.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"card\", \"container\", \"panel\", \"layout\", \"surface\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tabsSchema: ComponentSchemaDefinition = {\n\tname: \"tabs\",\n\tdisplayName: \"Tabs\",\n\tdescription: \"A tabbed interface with accessible keyboard navigation. Built on Radix UI Tabs.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default active tab value (uncontrolled)\" },\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled active tab value\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback: (value: string) => void\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"TabsList + TabsContent elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-tabs\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"background\", \"foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic tabs\",\n\t\t\tdescription: \"Two-tab interface\",\n\t\t\tcode: '<Tabs defaultValue=\"account\">\\n <TabsList>\\n <TabsTrigger value=\"account\">Account</TabsTrigger>\\n <TabsTrigger value=\"password\">Password</TabsTrigger>\\n </TabsList>\\n <TabsContent value=\"account\">Account settings here.</TabsContent>\\n <TabsContent value=\"password\">Password settings here.</TabsContent>\\n</Tabs>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use to organize content into switchable panels: settings pages, dashboards, product details with multiple sections.\",\n\t\twhenNotToUse: \"Don't use for navigation between pages (use router/links). Don't use for steppers/wizards (use a stepper component).\",\n\t\tcommonMistakes: [\"Missing defaultValue causing no tab selected initially\", \"TabsTrigger value not matching TabsContent value\", \"Using for page navigation instead of in-page content switching\"],\n\t\trelatedComponents: [\"card\", \"separator\"],\n\t\taccessibilityNotes: \"Full keyboard navigation built-in (arrow keys, Home, End). Radix handles aria-selected, role='tabpanel', etc.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"tabs\", \"navigation\", \"panel\", \"tabbed\", \"sections\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const accordionSchema: ComponentSchemaDefinition = {\n\tname: \"accordion\",\n\tdisplayName: \"Accordion\",\n\tdescription: \"A vertically stacked set of collapsible content sections. Built on Radix UI Accordion.\",\n\tcategory: \"component\",\n\tsubcategory: \"disclosure\",\n\tprops: [\n\t\t{ name: \"type\", type: \"enum\", required: true, description: \"Single allows one item open at a time, multiple allows many\", enumValues: [\"single\", \"multiple\"] },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default open item(s): string for type='single', string[] for type='multiple'\" },\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled open item(s): string for type='single', string[] for type='multiple'\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when open items change: (value: string) => void for single, (value: string[]) => void for multiple\" },\n\t\t{ name: \"collapsible\", type: \"boolean\", required: false, default: false, description: \"Allow all items to be closed (type='single' only)\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"AccordionItem elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-accordion\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"FAQ accordion\",\n\t\t\tdescription: \"Single-open accordion for FAQ sections\",\n\t\t\tcode: '<Accordion type=\"single\" collapsible>\\n <AccordionItem value=\"item-1\">\\n <AccordionTrigger>Is it accessible?</AccordionTrigger>\\n <AccordionContent>Yes, it adheres to the WAI-ARIA design pattern.</AccordionContent>\\n </AccordionItem>\\n <AccordionItem value=\"item-2\">\\n <AccordionTrigger>Is it styled?</AccordionTrigger>\\n <AccordionContent>Yes, with Tailwind CSS and smooth animations.</AccordionContent>\\n </AccordionItem>\\n</Accordion>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse: \"Use for FAQ sections, settings groups, or any content that benefits from progressive disclosure. Use type='single' for FAQs, type='multiple' for settings.\",\n\t\twhenNotToUse: \"Don't use for navigation (use tabs). Don't use for a single collapsible (use Collapsible).\",\n\t\tcommonMistakes: [\"Forgetting type prop (it's required)\", \"Not setting collapsible=true for single type when all items should be closeable\", \"Missing value on AccordionItem\"],\n\t\trelatedComponents: [\"tabs\", \"card\"],\n\t\taccessibilityNotes: \"Full keyboard navigation (arrow keys, Home, End, Enter/Space). Radix handles aria-expanded, aria-controls, role='region'.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"accordion\", \"collapsible\", \"faq\", \"disclosure\", \"expandable\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dialogSchema: ComponentSchemaDefinition = {\n\tname: \"dialog\",\n\tdisplayName: \"Dialog\",\n\tdescription:\n\t\t\"A modal dialog that interrupts the user with important content. Built on Radix UI with focus trap, escape handling, and scroll lock.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, content outside the dialog is inert\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DialogTrigger + DialogContent (with DialogHeader, DialogFooter, etc.)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted-foreground\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic dialog\",\n\t\t\tdescription: \"Dialog with title, description, and action buttons\",\n\t\t\tcode: '<Dialog>\\n <DialogTrigger asChild>\\n <Button variant=\"outline\">Edit Profile</Button>\\n </DialogTrigger>\\n <DialogContent>\\n <DialogHeader>\\n <DialogTitle>Edit profile</DialogTitle>\\n <DialogDescription>Make changes to your profile here.</DialogDescription>\\n </DialogHeader>\\n <div className=\"grid gap-4 py-4\">\\n <Input placeholder=\"Name\" />\\n </div>\\n <DialogFooter>\\n <Button>Save changes</Button>\\n </DialogFooter>\\n </DialogContent>\\n</Dialog>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for focused, interruptive tasks: confirmations, quick forms, detail views. The user must address the dialog before continuing.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for destructive confirmations (use AlertDialog). Don't use for complex multi-step flows (use a full page). Don't use for non-critical info (use Tooltip or Popover).\",\n\t\tcommonMistakes: [\n\t\t\t\"Nesting dialogs inside each other\",\n\t\t\t\"Forgetting DialogTitle (breaks accessibility — screen readers need it)\",\n\t\t\t\"Using DialogDescription for long-form content (keep it short)\",\n\t\t\t\"Putting too many primary actions in DialogFooter\",\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"popover\", \"sheet\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix traps focus, handles Escape to close, and wires aria-labelledby/describedby to DialogTitle/DialogDescription. Always include a DialogTitle. DialogContent is constrained to `max-h-[calc(100vh-2rem)]` and scrolls internally so long content stays inside the focus trap.\",\n\t\ttokenBudget: 600,\n\t},\n\ttags: [\"dialog\", \"modal\", \"overlay\", \"popup\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const alertDialogSchema: ComponentSchemaDefinition = {\n\tname: \"alert-dialog\",\n\tdisplayName: \"Alert Dialog\",\n\tdescription:\n\t\t\"A modal dialog for destructive confirmations. The user must explicitly accept or cancel — there is no close button. Built on Radix UI AlertDialog.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired on open state change: (open: boolean) => void\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"AlertDialogTrigger + AlertDialogContent (with Header, Footer, Action, Cancel)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-alert-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"border\",\n\t\t\"input\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Destructive confirmation\",\n\t\t\tdescription: \"Confirm before deleting a resource\",\n\t\t\tcode: '<AlertDialog>\\n <AlertDialogTrigger asChild>\\n <Button variant=\"destructive\">Delete account</Button>\\n </AlertDialogTrigger>\\n <AlertDialogContent>\\n <AlertDialogHeader>\\n <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n <AlertDialogDescription>\\n This action cannot be undone. This will permanently delete your account.\\n </AlertDialogDescription>\\n </AlertDialogHeader>\\n <AlertDialogFooter>\\n <AlertDialogCancel>Cancel</AlertDialogCancel>\\n <AlertDialogAction>Yes, delete</AlertDialogAction>\\n </AlertDialogFooter>\\n </AlertDialogContent>\\n</AlertDialog>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for destructive or irreversible confirmations: delete account, discard changes, permanent actions. The user must explicitly choose Action or Cancel.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-destructive dialogs (use Dialog). Don't use for simple notifications (use Toast). Don't use when there's only one action to take.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Dialog when AlertDialog is semantically required\",\n\t\t\t\"Omitting AlertDialogCancel (user must have an escape hatch)\",\n\t\t\t\"Putting more than one AlertDialogAction (the pattern expects one destructive action)\",\n\t\t\t\"Making the action button non-destructive styled\",\n\t\t],\n\t\trelatedComponents: [\"dialog\", \"toast\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets role='alertdialog', traps focus, focuses AlertDialogCancel by default, and closes on Escape. Clicks outside the dialog are prevented (user must choose Cancel or Action).\",\n\t\ttokenBudget: 650,\n\t},\n\ttags: [\"alert-dialog\", \"confirm\", \"destructive\", \"modal\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dropdownMenuSchema: ComponentSchemaDefinition = {\n\tname: \"dropdown-menu\",\n\tdisplayName: \"Dropdown Menu\",\n\tdescription:\n\t\t\"A menu of actions displayed to the user when a trigger is activated. Supports items, checkboxes, radio groups, sub-menus, and keyboard shortcuts.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on open state change: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, interaction outside the menu is blocked\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DropdownMenuTrigger + DropdownMenuContent (with Items, CheckboxItems, etc.)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dropdown-menu\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic dropdown\",\n\t\t\tdescription: \"Standard action menu\",\n\t\t\tcode: '<DropdownMenu>\\n <DropdownMenuTrigger asChild>\\n <Button variant=\"outline\">Open Menu</Button>\\n </DropdownMenuTrigger>\\n <DropdownMenuContent>\\n <DropdownMenuLabel>My Account</DropdownMenuLabel>\\n <DropdownMenuSeparator />\\n <DropdownMenuItem>Profile</DropdownMenuItem>\\n <DropdownMenuItem>Settings</DropdownMenuItem>\\n <DropdownMenuItem>\\n Log out\\n <DropdownMenuShortcut>\\u2318Q</DropdownMenuShortcut>\\n </DropdownMenuItem>\\n </DropdownMenuContent>\\n</DropdownMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for action menus triggered by a button: user menus, row-action menus, toolbar overflow. Include DropdownMenuLabel for context, DropdownMenuSeparator for grouping.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for navigation between pages (use NavigationMenu or links). Don't use for selection inputs (use Select or Combobox). Don't use for right-click menus (use ContextMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using DropdownMenu as a form Select (use Select instead)\",\n\t\t\t\"Putting interactive elements directly in the trigger without asChild\",\n\t\t\t\"Too many items without grouping (use DropdownMenuLabel + DropdownMenuSeparator)\",\n\t\t\t\"Forgetting DropdownMenuShortcut for keyboard-accessible actions\",\n\t\t],\n\t\trelatedComponents: [\"select\", \"context-menu\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full keyboard navigation: arrow keys, Home, End, typeahead, Escape. Radix handles role='menu', role='menuitem', and aria-labelledby.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"dropdown\", \"menu\", \"actions\", \"overflow\", \"contextual\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const popoverSchema: ComponentSchemaDefinition = {\n\tname: \"popover\",\n\tdisplayName: \"Popover\",\n\tdescription:\n\t\t\"Floating content anchored to a trigger element. Non-modal by default — clicks outside dismiss it. Use for inline forms, info, or quick actions.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on open state change: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"When true, content outside the popover is inert\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"PopoverTrigger + PopoverContent\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic popover\",\n\t\t\tdescription: \"Quick settings anchored to a button\",\n\t\t\tcode: '<Popover>\\n <PopoverTrigger asChild>\\n <Button variant=\"outline\">Open</Button>\\n </PopoverTrigger>\\n <PopoverContent>\\n <div className=\"space-y-2\">\\n <h4 className=\"font-medium\">Dimensions</h4>\\n <p className=\"text-sm text-muted-foreground\">Set the dimensions for the layer.</p>\\n </div>\\n </PopoverContent>\\n</Popover>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline forms, quick settings, info panels, or color pickers. Anchored to a trigger, non-modal, dismisses on outside click.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for critical tasks that interrupt (use Dialog). Don't use for hover-only info (use Tooltip or HoverCard). Don't use for menu actions (use DropdownMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Popover when the user must address the content (should be Dialog)\",\n\t\t\t\"Missing asChild on PopoverTrigger when using a styled Button\",\n\t\t\t\"Popover content too wide — keep it focused and compact\",\n\t\t],\n\t\trelatedComponents: [\"tooltip\", \"hover-card\", \"dialog\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix manages focus, aria-expanded on the trigger, and closes on Escape. Content is portalled to body so stacking contexts don't clip it.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"popover\", \"overlay\", \"floating\", \"inline\", \"anchored\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tooltipSchema: ComponentSchemaDefinition = {\n\tname: \"tooltip\",\n\tdisplayName: \"Tooltip\",\n\tdescription:\n\t\t\"A small floating label that reveals on hover or focus. Wrap your app in TooltipProvider, then use Tooltip/TooltipTrigger/TooltipContent per tooltip.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"delayDuration\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 700,\n\t\t\tdescription:\n\t\t\t\t\"[TooltipProvider prop] Milliseconds before the tooltip appears on hover\",\n\t\t},\n\t\t{\n\t\t\tname: \"disableHoverableContent\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"[TooltipProvider prop] When true, tooltip dismisses when cursor enters it\",\n\t\t},\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Tooltip root prop] Controlled open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"[Tooltip root prop] Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"[Tooltip root prop] Callback on open state change: (open: boolean) => void\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"TooltipTrigger + TooltipContent, all inside a TooltipProvider\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-tooltip\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"primary\", \"primary-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic tooltip\",\n\t\t\tdescription: \"Icon button with hover label\",\n\t\t\tcode: '<TooltipProvider>\\n <Tooltip>\\n <TooltipTrigger asChild>\\n <Button variant=\"outline\" size=\"icon\" aria-label=\"Add\">+</Button>\\n </TooltipTrigger>\\n <TooltipContent>\\n <p>Add item</p>\\n </TooltipContent>\\n </Tooltip>\\n</TooltipProvider>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for terse hover/focus-reveal info: icon button labels, abbreviation expansions, keyboard shortcut hints. Content should fit in one line.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for rich content with images or actions (use HoverCard or Popover). Don't use for the only way to convey essential info — it's invisible to touch users.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting TooltipProvider at the app root\",\n\t\t\t\"Tooltip content too long (keep it under one line)\",\n\t\t\t\"Using Tooltip as the only label for icon buttons (still add aria-label)\",\n\t\t\t\"Triggering tooltips on non-interactive elements\",\n\t\t],\n\t\trelatedComponents: [\"hover-card\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Triggers on focus and hover. Radix sets role='tooltip' and aria-describedby. Still pair icon buttons with aria-label since tooltips don't announce on touch.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"tooltip\", \"hint\", \"label\", \"hover\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const selectSchema: ComponentSchemaDefinition = {\n\tname: \"select\",\n\tdisplayName: \"Select\",\n\tdescription:\n\t\t\"An accessible dropdown select for choosing one option from a list. Built on Radix UI Select with full keyboard navigation, typeahead, and RTL support.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Controlled selected value\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Default selected value for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Callback on value change: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"[Select root prop] Disable the entire select\",\n\t\t},\n\t\t{\n\t\t\tname: \"required\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"[Select root prop] Mark as required for form validation\",\n\t\t},\n\t\t{\n\t\t\tname: \"name\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"[Select root prop] Form field name (for native form submission)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SelectTrigger + SelectContent (with SelectItems, Groups, Labels)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-select\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"input\",\n\t\t\"background\",\n\t\t\"ring\",\n\t\t\"muted-foreground\",\n\t\t\"popover\",\n\t\t\"popover-foreground\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted\",\n\t\t\"border\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic select\",\n\t\t\tdescription: \"Choose a timezone\",\n\t\t\tcode: '<Select>\\n <SelectTrigger className=\"w-[180px]\">\\n <SelectValue placeholder=\"Select a fruit\" />\\n </SelectTrigger>\\n <SelectContent>\\n <SelectGroup>\\n <SelectLabel>Fruits</SelectLabel>\\n <SelectItem value=\"apple\">Apple</SelectItem>\\n <SelectItem value=\"banana\">Banana</SelectItem>\\n <SelectItem value=\"orange\">Orange</SelectItem>\\n </SelectGroup>\\n </SelectContent>\\n</Select>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for choosing one option from a known, finite list (<= ~20 items): timezones, categories, roles, country codes. Pair with Label.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for large searchable lists (use Combobox). Don't use for boolean choices (use Switch/Checkbox). Don't use for action menus (use DropdownMenu). Don't use for multi-select (needs a different component).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing Label pairing\",\n\t\t\t\"Forgetting SelectValue inside SelectTrigger\",\n\t\t\t\"Using Select when the list is large (use Combobox)\",\n\t\t\t\"Putting non-SelectItem children inside SelectContent\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"dropdown-menu\", \"radio-group\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full keyboard nav: arrow keys, Home, End, typeahead, Escape to close. Radix handles role='combobox' on trigger, role='listbox' on content, aria-selected on items.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"select\", \"dropdown\", \"form\", \"field\", \"options\", \"choose\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const radioGroupSchema: ComponentSchemaDefinition = {\n\tname: \"radio-group\",\n\tdisplayName: \"Radio Group\",\n\tdescription:\n\t\t\"A set of mutually exclusive radio options. Built on Radix UI RadioGroup with roving focus and arrow-key navigation.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled selected value\" },\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Default selected value for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on value change: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable all items\",\n\t\t},\n\t\t{\n\t\t\tname: \"name\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Form field name (for native form submission)\",\n\t\t},\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"vertical\",\n\t\t\tdescription: \"Layout direction\",\n\t\t\tenumValues: [\"horizontal\", \"vertical\"],\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"RadioGroupItem elements, typically paired with Labels\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-radio-group\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"primary\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic radio group\",\n\t\t\tdescription: \"Select a notification preference\",\n\t\t\tcode: '<RadioGroup defaultValue=\"comfortable\">\\n <div className=\"flex items-center gap-2\">\\n <RadioGroupItem value=\"default\" id=\"r1\" />\\n <Label htmlFor=\"r1\">Default</Label>\\n </div>\\n <div className=\"flex items-center gap-2\">\\n <RadioGroupItem value=\"comfortable\" id=\"r2\" />\\n <Label htmlFor=\"r2\">Comfortable</Label>\\n </div>\\n <div className=\"flex items-center gap-2\">\\n <RadioGroupItem value=\"compact\" id=\"r3\" />\\n <Label htmlFor=\"r3\">Compact</Label>\\n </div>\\n</RadioGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for mutually exclusive choices from a short list (2-5 options) where all options should be visible. Pair each RadioGroupItem with a Label.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for many options (use Select). Don't use for boolean toggles (use Switch or Checkbox). Don't use for multi-select.\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing Label for each RadioGroupItem\",\n\t\t\t\"Using for more than 5 options (use Select)\",\n\t\t\t\"Using htmlFor id mismatch between Label and RadioGroupItem\",\n\t\t],\n\t\trelatedComponents: [\"select\", \"checkbox\", \"label\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA radio group pattern. Arrow keys move focus+selection. Radix handles aria-checked, role='radiogroup', role='radio'.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"radio\", \"radio-group\", \"form\", \"choice\", \"mutually-exclusive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sliderSchema: ComponentSchemaDefinition = {\n\tname: \"slider\",\n\tdisplayName: \"Slider\",\n\tdescription:\n\t\t\"A range input with draggable thumbs. Supports single value, ranges (two thumbs), custom steps, and full keyboard control.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Controlled array of thumb values (number[]), e.g. [50] for single, [20, 80] for range\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Default array of thumb values (number[]) for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on value change: (value: number[]) => void\",\n\t\t},\n\t\t{ name: \"min\", type: \"number\", required: false, default: 0, description: \"Minimum value\" },\n\t\t{ name: \"max\", type: \"number\", required: false, default: 100, description: \"Maximum value\" },\n\t\t{\n\t\t\tname: \"step\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"Step interval between valid values\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the slider\",\n\t\t},\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Slider direction\",\n\t\t\tenumValues: [\"horizontal\", \"vertical\"],\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Accessible label for the slider as a whole. Mirrored onto a single thumb automatically; for range sliders prefer thumbLabels.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the slider.\",\n\t\t},\n\t\t{\n\t\t\tname: \"thumbLabels\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Per-thumb accessible labels (string[]). Required for range sliders so each thumb has a meaningful name (e.g. ['Minimum price', 'Maximum price']). For a single-thumb slider, the Root's aria-label is mirrored onto the thumb automatically and thumbLabels is only needed when overriding that default.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slider\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"primary\", \"background\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic slider\",\n\t\t\tdescription: \"Single-thumb slider\",\n\t\t\tcode: '<Slider defaultValue={[50]} max={100} step={1} />',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Range slider\",\n\t\t\tdescription: \"Two-thumb range\",\n\t\t\tcode: '<Slider defaultValue={[20, 80]} max={100} step={1} />',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for continuous numeric inputs with a known range: volume, brightness, price range filter, opacity. Pair value with a visible number display when the exact value matters.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when the user needs to enter an exact number (use Input type=number). Don't use for discrete choices (use Select or RadioGroup).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Slider for exact values without showing the number\",\n\t\t\t\"Missing min/max bounds\",\n\t\t\t\"Using step=1 for fractional values (set step=0.01)\",\n\t\t\t\"Not providing aria-label / aria-labelledby when there's no visible label\",\n\t\t\t\"Range slider with only Root aria-label and no thumbLabels — both thumbs fall back to '(N of 2)' indexed names instead of meaningful per-thumb labels\",\n\t\t\t\"thumbLabels.length !== value.length — extra labels are ignored, missing labels fall back to indexed names (dev-mode warning)\",\n\t\t],\n\t\trelatedComponents: [\"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"Arrow keys step by step, Home/End jump to min/max, PageUp/PageDown step larger. Radix handles aria-valuemin/max/now. Each thumb has its own accessible name: explicit via thumbLabels[i], else mirrored from the Root's aria-label (single thumb) or indexed '(i of N)' fallback (range). Add aria-label / aria-labelledby on the Root when there's no visible label.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"slider\", \"range\", \"form\", \"numeric\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toggleSchema: ComponentSchemaDefinition = {\n\tname: \"toggle\",\n\tdisplayName: \"Toggle\",\n\tdescription:\n\t\t\"A two-state button that stays pressed when toggled on. Used for formatting toolbars (bold/italic) or option toggles.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"pressed\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled pressed state\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultPressed\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default pressed state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onPressedChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on pressed change: (pressed: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Toggle size\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the toggle\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Visual variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Transparent ghost-style toggle\" },\n\t\t\t\t{ value: \"outline\", description: \"Bordered toggle\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Size variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Standard size (h-10)\" },\n\t\t\t\t{ value: \"sm\", description: \"Compact size (h-9)\" },\n\t\t\t\t{ value: \"lg\", description: \"Large size (h-11)\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Toggle label or icon\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-toggle\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"accent\", \"accent-foreground\", \"input\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic toggle\",\n\t\t\tdescription: \"Bold text toggle\",\n\t\t\tcode: '<Toggle aria-label=\"Toggle bold\">B</Toggle>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for binary on/off actions that persist: toolbar formatting buttons (bold, italic), layout mode switches, filter toggles. Not submitted as form data.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for instant settings (use Switch). Don't use for form boolean fields (use Checkbox). Don't use for choosing one of many (use ToggleGroup).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using for form field submission (use Checkbox instead)\",\n\t\t\t\"Forgetting aria-label on icon-only toggles\",\n\t\t\t\"Using Toggle when ToggleGroup's single-select mode is needed\",\n\t\t],\n\t\trelatedComponents: [\"toggle-group\", \"switch\", \"checkbox\", \"button\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets aria-pressed correctly. Icon-only toggles MUST have aria-label. Space/Enter toggles state.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"toggle\", \"button\", \"pressed\", \"two-state\", \"toolbar\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toggleGroupSchema: ComponentSchemaDefinition = {\n\tname: \"toggle-group\",\n\tdisplayName: \"Toggle Group\",\n\tdescription:\n\t\t\"A set of toggles where one or multiple can be pressed. Inherits Toggle's variant/size via context. Useful for alignment/formatting toolbars.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Single allows one pressed at a time, multiple allows many\",\n\t\t\tenumValues: [\"single\", \"multiple\"],\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Controlled pressed value(s). string when type='single', string[] when type='multiple'\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Default pressed value(s). string when type='single', string[] when type='multiple'\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on value change\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Inherited by all ToggleGroupItems\",\n\t\t\tenumValues: [\"default\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Inherited by all ToggleGroupItems\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable all items\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"ToggleGroupItem elements\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\n\t\t\t\"@radix-ui/react-toggle-group\",\n\t\t\t\"@radix-ui/react-toggle\",\n\t\t\t\"class-variance-authority\",\n\t\t\t\"clsx\",\n\t\t\t\"tailwind-merge\",\n\t\t],\n\t\tinternal: [\"toggle\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"accent\", \"accent-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Text alignment group\",\n\t\t\tdescription: \"Single-select toggle group for text alignment\",\n\t\t\tcode: '<ToggleGroup type=\"single\" defaultValue=\"left\">\\n <ToggleGroupItem value=\"left\" aria-label=\"Left align\">L</ToggleGroupItem>\\n <ToggleGroupItem value=\"center\" aria-label=\"Center align\">C</ToggleGroupItem>\\n <ToggleGroupItem value=\"right\" aria-label=\"Right align\">R</ToggleGroupItem>\\n</ToggleGroup>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Formatting group\",\n\t\t\tdescription: \"Multiple-select toggle group for text formatting\",\n\t\t\tcode: '<ToggleGroup type=\"multiple\">\\n <ToggleGroupItem value=\"bold\" aria-label=\"Bold\">B</ToggleGroupItem>\\n <ToggleGroupItem value=\"italic\" aria-label=\"Italic\">I</ToggleGroupItem>\\n <ToggleGroupItem value=\"underline\" aria-label=\"Underline\">U</ToggleGroupItem>\\n</ToggleGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for toolbar toggles where users pick one of many (type='single') or multiple (type='multiple'): text alignment, formatting (bold/italic/underline), view modes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for form radio fields (use RadioGroup). Don't use for standalone two-state buttons (use Toggle). Don't use for navigation (use Tabs).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting the type prop (required)\",\n\t\t\t\"Missing aria-label on icon-only items\",\n\t\t\t\"Using for form submission without name prop\",\n\t\t],\n\t\trelatedComponents: [\"toggle\", \"radio-group\", \"tabs\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA toolbar pattern with roving focus. Arrow keys move focus, Space/Enter toggles. Each icon-only item needs aria-label.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"toggle-group\", \"toolbar\", \"formatting\", \"alignment\", \"multi-select\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const formSchema: ComponentSchemaDefinition = {\n\tname: \"form\",\n\tdisplayName: \"Form\",\n\tdescription:\n\t\t\"A form primitive built on react-hook-form + zod. Provides Form/FormField/FormItem/FormLabel/FormControl/FormDescription/FormMessage with automatic aria wiring and error display.\",\n\tcategory: \"component\",\n\tsubcategory: \"forms\",\n\tprops: [],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"FormField + FormItem subtrees\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\n\t\t\t\"react-hook-form\",\n\t\t\t\"@hookform/resolvers\",\n\t\t\t\"zod\",\n\t\t\t\"@radix-ui/react-label\",\n\t\t\t\"@radix-ui/react-slot\",\n\t\t\t\"clsx\",\n\t\t\t\"tailwind-merge\",\n\t\t],\n\t\tinternal: [\"label\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"destructive\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Zod-validated form\",\n\t\t\tdescription: \"Username form with react-hook-form + zod\",\n\t\t\tcode: 'import { zodResolver } from \"@hookform/resolvers/zod\";\\nimport { useForm } from \"react-hook-form\";\\nimport { z } from \"zod\";\\n\\nconst formSchema = z.object({\\n username: z.string().min(2, \"Username must be at least 2 characters\"),\\n});\\n\\nfunction ProfileForm() {\\n const form = useForm({\\n resolver: zodResolver(formSchema),\\n defaultValues: { username: \"\" },\\n });\\n\\n return (\\n <Form {...form}>\\n <form onSubmit={form.handleSubmit((values) => console.log(values))} className=\"space-y-6\">\\n <FormField\\n control={form.control}\\n name=\"username\"\\n render={({ field }) => (\\n <FormItem>\\n <FormLabel>Username</FormLabel>\\n <FormControl><Input placeholder=\"shadcn\" {...field} /></FormControl>\\n <FormDescription>Your public display name.</FormDescription>\\n <FormMessage />\\n </FormItem>\\n )}\\n />\\n <Button type=\"submit\">Submit</Button>\\n </form>\\n </Form>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any form that needs validation, per-field errors, and accessible aria-describedby/aria-invalid wiring. Pair with zod schemas via @hookform/resolvers/zod.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for trivial single-input forms that don't need validation (render a plain Input + Button). Don't use for server actions forms in Next.js 16 (consider useActionState + useFormStatus instead).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to spread {...field} into the form control (connects value/onChange)\",\n\t\t\t\"Putting FormLabel outside FormItem (loses htmlFor wiring)\",\n\t\t\t\"Using useForm without a resolver when zod validation is desired\",\n\t\t\t\"Calling form.handleSubmit without a callback\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"textarea\", \"select\", \"checkbox\", \"radio-group\", \"switch\"],\n\t\taccessibilityNotes:\n\t\t\t\"FormControl automatically wires id, aria-describedby, and aria-invalid. FormLabel uses htmlFor matching the control id. Errors are announced via FormMessage with matching aria-describedby.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"form\", \"react-hook-form\", \"zod\", \"validation\", \"field\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const avatarSchema: ComponentSchemaDefinition = {\n\tname: \"avatar\",\n\tdisplayName: \"Avatar\",\n\tdescription:\n\t\t\"A user profile image with a fallback (usually initials) rendered when the image is missing or fails to load. Built on Radix UI Avatar — AvatarFallback accepts a delayMs prop to avoid flashing during fast loads.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"display\",\n\tprops: [{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the root\" }],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"AvatarImage + AvatarFallback\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-avatar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic avatar\",\n\t\t\tdescription: \"Image with initials fallback\",\n\t\t\tcode: '<Avatar>\\n <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\\n <AvatarFallback>CN</AvatarFallback>\\n</Avatar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for user profile images: headers, comments, user lists. Always include AvatarFallback for accessibility and loading states.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for decorative icons (use an <img> or icon component). Don't use for product/brand images (use <img> with proper sizing).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing alt text on AvatarImage\",\n\t\t\t\"No AvatarFallback — shows nothing when image is missing or errors\",\n\t\t\t\"Omitting delayMs on AvatarFallback causes flicker for fast-loading images\",\n\t\t\t\"Using for non-circular images (override rounded-full if needed)\",\n\t\t],\n\t\trelatedComponents: [\"badge\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"AvatarImage requires alt text. AvatarFallback renders initials or an icon — ensure the visible text is meaningful.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"avatar\", \"profile\", \"user\", \"image\", \"display\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const skeletonSchema: ComponentSchemaDefinition = {\n\tname: \"skeleton\",\n\tdisplayName: \"Skeleton\",\n\tdescription: \"A pulsing placeholder shown while content is loading. Pair with explicit dimensions.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Width/height and any additional styling via Tailwind classes\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Card skeleton\",\n\t\t\tdescription: \"Avatar + two lines of text placeholder\",\n\t\t\tcode: '<div className=\"flex items-center gap-4\">\\n <Skeleton className=\"h-12 w-12 rounded-full\" />\\n <div className=\"space-y-2\">\\n <Skeleton className=\"h-4 w-[250px]\" />\\n <Skeleton className=\"h-4 w-[200px]\" />\\n </div>\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use during async data loads to show the shape of forthcoming content. Match the dimensions and layout of the real content to avoid layout shift on load.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for fast operations (<200ms — users prefer a brief spinner or nothing). Don't use as a permanent empty state (use proper empty-state UI).\",\n\t\tcommonMistakes: [\n\t\t\t\"Skeleton dimensions don't match loaded content — causes layout shift\",\n\t\t\t\"Leaving Skeleton visible for long loads without a timeout/retry\",\n\t\t\t\"Using Skeleton for interactive elements users might tap\",\n\t\t],\n\t\trelatedComponents: [\"progress\", \"avatar\", \"card\", \"table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Add aria-busy='true' on the loading container and a visually hidden status (aria-live='polite') to announce load completion to screen readers.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"skeleton\", \"loading\", \"placeholder\", \"shimmer\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const progressSchema: ComponentSchemaDefinition = {\n\tname: \"progress\",\n\tdisplayName: \"Progress\",\n\tdescription: \"A horizontal progress bar showing completion from 0 to 100%. Built on Radix UI Progress.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Current value (0–max). Omit to render at 0% (both visually and in ARIA — the component clamps undefined to 0). Use Skeleton for indeterminate loading states.\",\n\t\t},\n\t\t{ name: \"max\", type: \"number\", required: false, default: 100, description: \"Maximum value\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-progress\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"primary\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic progress\",\n\t\t\tdescription: \"At 60%\",\n\t\t\tcode: \"<Progress value={60} />\",\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for deterministic progress where completion is measurable: file uploads, multi-step form completion, batch processing. Pair with a visible numeric label where precision matters.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for indeterminate waits (use a spinner or Skeleton). Don't use for completion over long time-spans without a human-readable ETA.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing 0–1 float instead of 0–100\",\n\t\t\t\"Not labeling the progress (users can't tell what's progressing)\",\n\t\t\t\"Updating too frequently (>30fps) — wastes renders\",\n\t\t],\n\t\trelatedComponents: [\"skeleton\", \"slider\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix wires role='progressbar', aria-valuenow, aria-valuemin, aria-valuemax. Pair with a visible label or aria-label for context.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"progress\", \"loading\", \"bar\", \"feedback\", \"determinate\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const scrollAreaSchema: ComponentSchemaDefinition = {\n\tname: \"scroll-area\",\n\tdisplayName: \"Scroll Area\",\n\tdescription: \"A scrollable region with custom-styled scrollbars that match the design system. Content must be explicitly sized.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"hover\",\n\t\t\tdescription: \"When scrollbars are visible\",\n\t\t\tenumValues: [\"auto\", \"always\", \"scroll\", \"hover\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Set dimensions via Tailwind (e.g. h-72 w-48)\" },\n\t\t{\n\t\t\tname: \"viewportTabIndex\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"tabIndex applied to the scroll viewport. Defaults to 0 so keyboard users can scroll without a pointer; pass -1 to skip the viewport in the tab order when wrapping decorative or already-keyboard-reachable content.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Any content — will be wrapped in a scrollable viewport\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-scroll-area\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Fixed-height list\",\n\t\t\tdescription: \"50 items in a 200px-tall scrollable region\",\n\t\t\tcode: '<ScrollArea className=\"h-[200px] w-[350px] rounded-md border p-4\">\\n {Array.from({ length: 50 }).map((_, i) => (\\n <div key={i} className=\"text-sm\">Item {i + 1}</div>\\n ))}\\n</ScrollArea>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when you need styled scrollbars that match the design system — sidebars, code blocks, large lists in dialogs. Must have explicit dimensions (height/width).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the whole page (use native browser scrollbars). Don't use for content that should grow freely (omit the ScrollArea and use overflow-auto directly).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set height/width — scrollbars don't appear\",\n\t\t\t\"Using for the whole page\",\n\t\t\t\"Nesting ScrollAreas (confusing UX)\",\n\t\t\t\"Wrapping decorative or already-keyboard-reachable content without setting viewportTabIndex={-1} — adds an unnecessary tab stop\",\n\t\t],\n\t\trelatedComponents: [],\n\t\taccessibilityNotes:\n\t\t\t\"The viewport is keyboard-focusable by default (viewportTabIndex=0) so users can scroll long content via arrow keys / PgUp / PgDn / Home / End without a pointer. Pass viewportTabIndex={-1} when the contents are already in the tab order or purely decorative. For very long lists, consider pagination or virtualization.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"scroll-area\", \"scroll\", \"overflow\", \"scrollbar\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const aspectRatioSchema: ComponentSchemaDefinition = {\n\tname: \"aspect-ratio\",\n\tdisplayName: \"Aspect Ratio\",\n\tdescription: \"Constrain children to a specific width-to-height ratio (e.g. 16/9 for video, 1/1 for square).\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"ratio\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"Width-to-height ratio (e.g. 16/9 ≈ 1.778)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Content to constrain (usually an image or iframe)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-aspect-ratio\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"16:9 video thumbnail\",\n\t\t\tdescription: \"Image constrained to widescreen ratio\",\n\t\t\tcode: '<AspectRatio ratio={16 / 9} className=\"bg-muted\">\\n <img src=\"/hero.jpg\" alt=\"Hero\" className=\"h-full w-full rounded-md object-cover\" />\\n</AspectRatio>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when an image or iframe must maintain a specific ratio regardless of container width: video thumbnails, product images, hero banners, embeds.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for content with known fixed dimensions (just use width/height). Don't use for text content (ratios don't make sense for prose).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing ratio as a string instead of a number (use {16/9}, not '16/9')\",\n\t\t\t\"Forgetting that children must fill 100% width + height (add object-cover or similar)\",\n\t\t],\n\t\trelatedComponents: [\"card\", \"avatar\", \"skeleton\"],\n\t\taccessibilityNotes:\n\t\t\t\"AspectRatio is purely structural. Ensure inner <img> has alt text and inner <iframe> has a descriptive title.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"aspect-ratio\", \"layout\", \"image\", \"video\", \"ratio\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const containerSchema: ComponentSchemaDefinition = {\n\tname: \"container\",\n\tdisplayName: \"Container\",\n\tdescription:\n\t\t\"Centered max-width wrapper that constrains content to readable widths. Sizes map to `--container-*` prose-width tokens; padding maps to `--space-*`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"lg\",\n\t\t\tdescription:\n\t\t\t\t\"Max-width preset bound to `--container-*` tokens (sm=33rem, md=40rem, lg=50rem, xl=66rem, full=100%).\",\n\t\t\tenumValues: [\"sm\", \"md\", \"lg\", \"xl\", \"full\"],\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Horizontal padding bound to `--space-*` tokens (none=0, sm=0.75rem, md=1rem, lg=2rem).\",\n\t\t\tenumValues: [\"none\", \"sm\", \"md\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"asChild\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Render as a different element via Radix `Slot`. Use to render as `<main>`, `<section>`, etc. for landmark semantics.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Max-width preset bound to `--container-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"33rem (≈530px) — narrow column for short content.\" },\n\t\t\t\t{ value: \"md\", description: \"40rem (≈640px) — comfortable reading width.\" },\n\t\t\t\t{ value: \"lg\", description: \"50rem (≈800px) — default; standard article width.\" },\n\t\t\t\t{ value: \"xl\", description: \"66rem (≈1056px) — wider canvas for dashboards or marketing.\" },\n\t\t\t\t{ value: \"full\", description: \"100% — disable max-width clamp.\" },\n\t\t\t],\n\t\t\tdefault: \"lg\",\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\tdescription: \"Horizontal padding bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"none\", description: \"0 — flush to container edges.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.75rem — tight gutter.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard reading gutter.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — generous gutter for marketing pages.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Page content to constrain — typically a section, article, or grid.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"@radix-ui/react-slot\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\n\t\t\"--container-sm\",\n\t\t\"--container-md\",\n\t\t\"--container-lg\",\n\t\t\"--container-xl\",\n\t\t\"--space-3\",\n\t\t\"--space-4\",\n\t\t\"--space-8\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Reading-width article\",\n\t\t\tdescription: \"lg size (50rem) + md padding for an article body.\",\n\t\t\tcode: '<Container size=\"lg\" padding=\"md\">\\n <article>...</article>\\n</Container>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Full-width hero\",\n\t\t\tdescription: \"Use size=full when you want the section to span the viewport.\",\n\t\t\tcode: '<Container size=\"full\" padding=\"none\">\\n <Hero />\\n</Container>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to constrain page content to readable widths. Pair with `Stack` or `Grid` inside for vertical/grid layouts. Default for any centered article, settings page, or marketing section.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use inside another `Container` (double-clamping). Don't use as a drop-in for `<main>` semantics — it's a layout primitive, not a landmark. For full-bleed sections (edge-to-edge banners), pass `size=\\\"full\\\" padding=\\\"none\\\"`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Wrapping a `Container` in another `Container` and getting an unexpectedly narrow column\",\n\t\t\t\"Using `padding=\\\"none\\\"` and forgetting that children still need their own gutter — the parent contributes nothing\",\n\t\t\t\"Treating `lg` as the largest size — `xl` (66rem) and `full` are bigger\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"cluster\"],\n\t\taccessibilityNotes:\n\t\t\t\"Container is presentational. Wrap in a semantic landmark (`<main>`, `<section>`, `<article>`) when the page structure needs it; Container itself renders a plain `<div>`.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"container\", \"layout\", \"wrapper\", \"max-width\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const stackSchema: ComponentSchemaDefinition = {\n\tname: \"stack\",\n\tdisplayName: \"Stack\",\n\tdescription:\n\t\t\"Vertical flex flow with token-bound gap. The headless equivalent of `<div className=\\\"flex flex-col gap-X\\\">` with consistent spacing scale.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Vertical spacing between children, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Vertical gap between children, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grouping.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — section-level spacing.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Children align to left edge.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Children align to right edge.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — children fill container width.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — children pack to top.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Children pack to bottom.\" },\n\t\t\t\t{ value: \"between\", description: \"First child to top, last to bottom, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to stack vertically.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Form sections\",\n\t\t\tdescription: \"Lg gap separates labelled groups; nested Stack with sm gap groups label+input.\",\n\t\t\tcode: '<Stack gap=\"lg\">\\n <Stack gap=\"sm\"><Label>Email</Label><Input /></Stack>\\n <Stack gap=\"sm\"><Label>Password</Label><Input type=\"password\" /></Stack>\\n <Button>Submit</Button>\\n</Stack>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Centered hero\",\n\t\t\tdescription: \"Center children horizontally for a centered call-to-action stack.\",\n\t\t\tcode: '<Stack gap=\"md\" align=\"center\">\\n <h1>Title</h1>\\n <p>Subtitle</p>\\n <Button>Get started</Button>\\n</Stack>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use anywhere you'd write `flex flex-col gap-X`. Default for vertical lists of dissimilar items (label + input + helper text), section bodies, sidebar items, button groups stacked vertically.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for tabular data — use `<table>` or DataTable. Don't use for grid-like layouts — use `Grid`. Don't reach for `Stack` when a single child needs no spacing — just render the child.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `gap=\\\"md\\\"` then adding `mt-*` / `space-y-*` on individual children — pick one spacing system\",\n\t\t\t\"Using `align=\\\"center\\\"` and wondering why children expand to full width — that's the `stretch` default for cross-axis\",\n\t\t\t\"Nesting Stack inside Stack with the same gap when one Stack with two children would suffice\",\n\t\t],\n\t\trelatedComponents: [\"cluster\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Stack is presentational. Wrap stacked navigation links in a `<nav>`, stacked form fields in a `<form>`, etc. — Stack does not contribute landmark semantics.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"stack\", \"layout\", \"flex\", \"column\", \"vertical\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const clusterSchema: ComponentSchemaDefinition = {\n\tname: \"cluster\",\n\tdisplayName: \"Cluster\",\n\tdescription:\n\t\t\"Horizontal flex flow with wrap and token-bound gap. Use for tag lists, button rows, breadcrumbs, and any group of equally-weighted inline items.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Gap between items, bound to `--gap-*` tokens. Applies to both row and column gaps when wrapping.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"center\",\n\t\t\tdescription:\n\t\t\t\t\"Cross-axis alignment (CSS `align-items`). `baseline` aligns text-baselines for mixed-size siblings; `stretch` makes items fill row height (useful for wrap-card layouts).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\", \"baseline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between items, bound to `--gap-*` tokens (applies to row + column gaps when wrapping).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight chip group.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — section-scale spacing.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Items align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Default — items center vertically in the row.\" },\n\t\t\t\t{ value: \"end\", description: \"Items align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Items fill row height — use for wrap layouts of equal-height cards.\" },\n\t\t\t\t{ value: \"baseline\", description: \"Text-baselines align across mixed-size siblings.\" },\n\t\t\t],\n\t\t\tdefault: \"center\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — items pack to start of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Items center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Items pack to end of row.\" },\n\t\t\t\t{ value: \"between\", description: \"First item flush left, last flush right, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to lay out horizontally with wrap.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Tag chips\",\n\t\t\tdescription: \"Small gap, wraps when overflowing the row.\",\n\t\t\tcode: '<Cluster gap=\"sm\">\\n {tags.map((t) => <Badge key={t}>{t}</Badge>)}\\n</Cluster>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Action bar\",\n\t\t\tdescription: \"Right-aligned buttons inside a panel footer.\",\n\t\t\tcode: '<Cluster gap=\"sm\" justify=\"end\">\\n <Button variant=\"ghost\">Cancel</Button>\\n <Button>Save</Button>\\n</Cluster>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any horizontal row of items that should wrap when space runs out: tag clouds, breadcrumbs, button rows, social-link icon strips, inline metadata badges. Pick `Cluster` over `flex` when you want predictable wrap + gap behavior.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for two-element rows where you need precise positional control (left/right) — use `Stack` rotated or a flex with `justify-between` directly. Don't use for grid-aligned layouts where columns must line up across rows — use `Grid`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting that `Cluster` wraps — adding `flex-nowrap` defeats the purpose; if you don't want wrap, use a flex row or `Stack` rotated\",\n\t\t\t\"Setting `align=\\\"baseline\\\"` for icon+text rows where the icon's bbox doesn't have a baseline — use `center` instead\",\n\t\t\t\"Reaching for `Cluster` for tabular alignment — use `Grid` or a real `<table>` when columns must line up\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Cluster is presentational. Lists of navigational items should be wrapped in `<nav>` (and ideally `<ul>` / `<li>`). Lists of tags can use a list element for screen-reader semantics; the visual wrap is independent.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"cluster\", \"layout\", \"flex\", \"wrap\", \"horizontal\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const gridSchema: ComponentSchemaDefinition = {\n\tname: \"grid\",\n\tdisplayName: \"Grid\",\n\tdescription:\n\t\t\"CSS grid with column-count presets and token-bound gap. Pass `cols=\\\"auto-fit\\\"` + `minColWidth` for responsive grids without media queries.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"3\",\n\t\t\tdescription:\n\t\t\t\t\"Number of fixed columns, or `\\\"auto-fit\\\"` for responsive tracks (use with `minColWidth`).\",\n\t\t\tenumValues: [\"1\", \"2\", \"3\", \"4\", \"6\", \"auto-fit\"],\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"minColWidth\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"16rem\",\n\t\t\tdescription:\n\t\t\t\t\"Min track size for `cols=\\\"auto-fit\\\"` (e.g. `\\\"20rem\\\"`). Ignored when `cols` is a fixed integer.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\tdescription: \"Column count or `auto-fit` mode.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"1\", description: \"Single column — items stack vertically inside the grid.\" },\n\t\t\t\t{ value: \"2\", description: \"Two even columns.\" },\n\t\t\t\t{ value: \"3\", description: \"Default — three even columns.\" },\n\t\t\t\t{ value: \"4\", description: \"Four even columns.\" },\n\t\t\t\t{ value: \"6\", description: \"Six even columns — dense layouts.\" },\n\t\t\t\t{ value: \"auto-fit\", description: \"Tracks repeat to fill width, never below `minColWidth`.\" },\n\t\t\t],\n\t\t\tdefault: \"3\",\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — minimal separation.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grid.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation between cards.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Cells align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Cells center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Cells align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — cells fill row height.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Grid cells — typically Cards, images, or any uniform block.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-column card grid\",\n\t\t\tdescription: \"Fixed 3 columns with medium gap.\",\n\t\t\tcode: '<Grid cols={3} gap=\"md\">\\n {items.map((i) => <Card key={i.id}>{i.title}</Card>)}\\n</Grid>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Responsive auto-fit\",\n\t\t\tdescription: \"Tracks fit as many 20rem columns as the viewport allows; no media queries needed.\",\n\t\t\tcode: '<Grid cols=\"auto-fit\" minColWidth=\"20rem\" gap=\"lg\">\\n {items.map(...)}\\n</Grid>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for visually-aligned grids of similar items: card galleries, image walls, dashboard tiles, settings panels. Prefer `cols=\\\"auto-fit\\\"` + `minColWidth` over hand-written breakpoints when the column count should adapt to viewport width.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for one-dimensional flows — use `Stack` (vertical) or `Cluster` (horizontal). Don't use for tabular data — use `<table>` or DataTable. Don't fight `Grid` to make uneven columns; if cells need different sizes, use a flexbox layout or a CSS grid with named tracks directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `cols={5}` and getting nothing — the preset only supports 1/2/3/4/6 (deliberate, to avoid odd visual rhythms); use `cols=\\\"auto-fit\\\"` for arbitrary counts\",\n\t\t\t\"Passing `cols=\\\"auto-fit\\\"` without `minColWidth` — the default `16rem` may not match your design intent\",\n\t\t\t\"Using `Grid` for two children when `Cluster` or `Stack` would communicate intent better\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"container\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"Grid is presentational. If the grid renders a list of similar items, wrap in `<ul>`/`<li>` for screen-reader semantics — Grid only handles visual layout.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"grid\", \"layout\", \"css-grid\", \"responsive\", \"auto-fit\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const spacerSchema: ComponentSchemaDefinition = {\n\tname: \"spacer\",\n\tdisplayName: \"Spacer\",\n\tdescription:\n\t\t\"Declarative whitespace block bound to `--space-*` tokens. Use when sibling spacing can't come from a parent's `gap`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Spacing token (xs=0.25rem, sm=0.5rem, md=1rem, lg=2rem, xl=4rem). Bound to `--space-*`.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"vertical\",\n\t\t\tdescription: \"Which axis to expand. Vertical = height; horizontal = width; both = square.\",\n\t\t\tenumValues: [\"vertical\", \"horizontal\", \"both\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Spacer extent bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — micro-gap.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight separation.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard breathing room.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — section-scale separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"4rem — major separation between hero areas.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\tdescription: \"Which axis the spacer extends along.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"vertical\", description: \"Default — fixed height, 1px width.\" },\n\t\t\t\t{ value: \"horizontal\", description: \"Fixed width, 1px height — for flex rows.\" },\n\t\t\t\t{ value: \"both\", description: \"Square block — rare; usually pick one axis.\" },\n\t\t\t],\n\t\t\tdefault: \"vertical\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--space-1\", \"--space-2\", \"--space-4\", \"--space-8\", \"--space-16\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Vertical breathing room\",\n\t\t\tdescription: \"Push two sections apart inside a parent that doesn't manage gap.\",\n\t\t\tcode: '<>\\n <Hero />\\n <Spacer size=\"xl\" />\\n <Features />\\n</>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Horizontal flex spacer\",\n\t\t\tdescription: \"Push siblings to opposite ends of a flex row.\",\n\t\t\tcode: '<div className=\"flex items-center\">\\n <Logo />\\n <Spacer axis=\"horizontal\" size=\"lg\" />\\n <Nav />\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use as an explicit whitespace primitive when you can't (or don't want to) use `gap` on the parent — typically: pushing siblings apart inside a flex row that already has gap-0, or inserting one-off vertical breathing room between top-level sections that aren't wrapped in a Stack.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use Spacer when a `Stack` or `Cluster` parent's `gap` would do the same thing — that scales better and keeps the spacing concern with the layout primitive. Don't use Spacer to flush content to one edge of a flex container — use `ml-auto` / `justify-between` directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using `<Spacer />` between every child in a Stack — just set the Stack's `gap` instead\",\n\t\t\t\"Using `axis=\\\"both\\\"` and getting a square block where you wanted a line — `both` is rare, usually you want vertical or horizontal\",\n\t\t\t\"Setting size=\\\"lg\\\" on a horizontal spacer and getting nothing visible because the parent isn't a flex row — Spacer reserves space, it doesn't push siblings on its own\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Spacer is `aria-hidden=\\\"true\\\"` — screen readers skip it. Don't use a Spacer where a `Separator` would convey meaning (a thematic break should be `Separator`, not `Spacer`).\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"spacer\", \"layout\", \"whitespace\", \"spacing\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const collapsibleSchema: ComponentSchemaDefinition = {\n\tname: \"collapsible\",\n\tdisplayName: \"Collapsible\",\n\tdescription: \"A single section that can be expanded or collapsed. For multiple independent sections use Accordion with type='multiple'.\",\n\tcategory: \"component\",\n\tsubcategory: \"disclosure\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change: (open: boolean) => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable toggling\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"CollapsibleTrigger + CollapsibleContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Show more\",\n\t\t\tdescription: \"Expand additional content below a preview\",\n\t\t\tcode: '<Collapsible>\\n <div>Yesterday at 9:00 AM</div>\\n <CollapsibleTrigger asChild>\\n <Button variant=\"ghost\" size=\"sm\">Toggle</Button>\\n </CollapsibleTrigger>\\n <CollapsibleContent>\\n <div>Additional details here</div>\\n </CollapsibleContent>\\n</Collapsible>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a single show-more/show-less section: 'View full details', 'Advanced settings', preview cards with expandable notes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for multiple related sections (use Accordion). Don't use for overlays (use Dialog/Popover). Don't use for navigation (use DropdownMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Collapsible for multiple sections instead of Accordion\",\n\t\t\t\"Missing asChild when passing a Button as trigger\",\n\t\t\t\"Not animating content height (Radix exposes --radix-collapsible-content-height for CSS keyframes)\",\n\t\t],\n\t\trelatedComponents: [\"accordion\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets aria-expanded on the trigger and aria-controls → content id. Trigger is keyboard-operable (Enter/Space).\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"collapsible\", \"disclosure\", \"expand\", \"show-more\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const hoverCardSchema: ComponentSchemaDefinition = {\n\tname: \"hover-card\",\n\tdisplayName: \"Hover Card\",\n\tdescription: \"Rich floating content revealed on hover or focus. Use when Tooltip is too small and Popover requires a click.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"openDelay\", type: \"number\", required: false, default: 700, description: \"Milliseconds before the card appears\" },\n\t\t{ name: \"closeDelay\", type: \"number\", required: false, default: 300, description: \"Milliseconds before the card closes after leaving\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"HoverCardTrigger + HoverCardContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-hover-card\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"User profile preview\",\n\t\t\tdescription: \"Username link that expands into a mini profile on hover\",\n\t\t\tcode: '<HoverCard>\\n <HoverCardTrigger asChild>\\n <a href=\"#\">@shadcn</a>\\n </HoverCardTrigger>\\n <HoverCardContent>\\n <div className=\"flex gap-3\">\\n <Avatar><AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" /><AvatarFallback>CN</AvatarFallback></Avatar>\\n <div>\\n <h4 className=\"font-semibold\">@shadcn</h4>\\n <p className=\"text-xs text-muted-foreground\">Builds UI components</p>\\n </div>\\n </div>\\n </HoverCardContent>\\n</HoverCard>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for rich hover previews: user profile cards, link previews, inline references. Contains multiple elements — more than a tooltip can hold.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for simple hover labels (use Tooltip). Don't use for click-triggered content (use Popover). Don't use as primary info on touch devices — hover doesn't exist there.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using HoverCard for critical info (invisible on touch)\",\n\t\t\t\"Too-short openDelay causes flicker on mouse-over traffic\",\n\t\t\t\"Omitting asChild on HoverCardTrigger with a custom element\",\n\t\t],\n\t\trelatedComponents: [\"tooltip\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix opens on hover and keyboard focus. Content must be meaningful on focus as well as hover. Consider an alternative for touch users.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"hover-card\", \"preview\", \"overlay\", \"rich-tooltip\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const contextMenuSchema: ComponentSchemaDefinition = {\n\tname: \"context-menu\",\n\tdisplayName: \"Context Menu\",\n\tdescription: \"Right-click (or long-press on touch) menu anchored to the trigger region. Same item vocabulary as DropdownMenu.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"modal\", type: \"boolean\", required: false, default: true, description: \"When true, interaction outside is blocked\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"ContextMenuTrigger + ContextMenuContent. Content accepts ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioGroup/ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, and ContextMenuShortcut.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-context-menu\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-click menu\",\n\t\t\tdescription: \"Right-click the trigger region for actions\",\n\t\t\tcode: '<ContextMenu>\\n <ContextMenuTrigger className=\"flex h-40 items-center justify-center rounded-md border border-dashed\">Right-click here</ContextMenuTrigger>\\n <ContextMenuContent>\\n <ContextMenuItem>Back</ContextMenuItem>\\n <ContextMenuItem disabled>Forward</ContextMenuItem>\\n <ContextMenuSeparator />\\n <ContextMenuItem>Reload<ContextMenuShortcut>\\u2318R</ContextMenuShortcut></ContextMenuItem>\\n </ContextMenuContent>\\n</ContextMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for right-click menus on a specific region: file-manager-style actions, canvas/editor context actions, row-level actions in tables.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for actions triggered by a button (use DropdownMenu). Don't use as the only way to access an action — must have a keyboard/button alternative.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using ContextMenu as the only affordance (unreachable on touch)\",\n\t\t\t\"Triggering on the whole document (put it on a specific region)\",\n\t\t\t\"Missing a keyboard alternative for items\",\n\t\t],\n\t\trelatedComponents: [\"dropdown-menu\", \"menubar\"],\n\t\taccessibilityNotes:\n\t\t\t\"Triggered via right-click or Shift+F10 on keyboard. Radix handles role='menu', aria-labelledby, focus management.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"context-menu\", \"right-click\", \"menu\", \"actions\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const menubarSchema: ComponentSchemaDefinition = {\n\tname: \"menubar\",\n\tdisplayName: \"Menubar\",\n\tdescription: \"Desktop-app style menu bar (File / Edit / View). Horizontal menu strip with nested dropdowns.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled open menu id\" },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default open menu for uncontrolled usage\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when open menu changes\" },\n\t\t{ name: \"loop\", type: \"boolean\", required: false, default: true, description: \"When true, arrow-key navigation wraps\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the Menubar root\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"MenubarMenu elements (each containing MenubarTrigger + MenubarContent)\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-menubar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"File / Edit bar\",\n\t\t\tdescription: \"Two-menu bar with keyboard shortcuts\",\n\t\t\tcode: '<Menubar>\\n <MenubarMenu>\\n <MenubarTrigger>File</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>New Tab<MenubarShortcut>\\u2318T</MenubarShortcut></MenubarItem>\\n <MenubarItem>New Window<MenubarShortcut>\\u2318N</MenubarShortcut></MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Share</MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Print\\u2026<MenubarShortcut>\\u2318P</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n <MenubarMenu>\\n <MenubarTrigger>Edit</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>Undo<MenubarShortcut>\\u2318Z</MenubarShortcut></MenubarItem>\\n <MenubarItem>Redo<MenubarShortcut>\\u21E7\\u2318Z</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n</Menubar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for desktop-app shell menus: editors, IDEs, creative tools. Provides persistent menu bar with keyboard shortcuts.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for website navigation (use NavigationMenu). Don't use for single-button menus (use DropdownMenu). Poor fit for mobile — consider a hamburger menu.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using for website navigation (user expectations don't match)\",\n\t\t\t\"Missing shortcuts (expected affordance in menubar UX)\",\n\t\t\t\"Deeply nested sub-menus (>2 levels feels labyrinthine)\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full WAI-ARIA menubar pattern: arrow keys navigate menus, Enter/Space opens, Escape closes. Radix handles roles and state.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"menubar\", \"menu\", \"desktop\", \"app-shell\", \"navigation\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const navigationMenuSchema: ComponentSchemaDefinition = {\n\tname: \"navigation-menu\",\n\tdisplayName: \"Navigation Menu\",\n\tdescription: \"Website-style mega-menu with hover-triggered content panels. Used for marketing/site navigation headers.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled active menu value\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when active menu changes\" },\n\t\t{ name: \"delayDuration\", type: \"number\", required: false, default: 200, description: \"Delay before opening a menu on hover (ms)\" },\n\t\t{ name: \"orientation\", type: \"enum\", required: false, default: \"horizontal\", description: \"Layout direction\", enumValues: [\"horizontal\", \"vertical\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"NavigationMenuList containing NavigationMenuItem elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-navigation-menu\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"accent\", \"accent-foreground\", \"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Simple nav\",\n\t\t\tdescription: \"Top-level link + mega-menu trigger\",\n\t\t\tcode: '<NavigationMenu>\\n <NavigationMenuList>\\n <NavigationMenuItem>\\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\\n <NavigationMenuContent>\\n <ul className=\"grid w-[400px] gap-3 p-4\">\\n <li><NavigationMenuLink href=\"/docs\">Docs</NavigationMenuLink></li>\\n <li><NavigationMenuLink href=\"/pricing\">Pricing</NavigationMenuLink></li>\\n </ul>\\n </NavigationMenuContent>\\n </NavigationMenuItem>\\n <NavigationMenuItem>\\n <NavigationMenuLink className={navigationMenuTriggerStyle()} href=\"/about\">About</NavigationMenuLink>\\n </NavigationMenuItem>\\n </NavigationMenuList>\\n</NavigationMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for marketing-site top nav with grouped links and mega-menus: Products, Resources, Pricing flyouts. Desktop-first but keyboard accessible.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for app shell menus (use Menubar). Don't use for single dropdowns (use DropdownMenu). On mobile, pair with a separate hamburger/Drawer pattern — NavigationMenu collapses poorly on small screens.\",\n\t\tcommonMistakes: [\n\t\t\t\"Mixing regular <a> with NavigationMenuLink — must use NavigationMenuLink for keyboard/roving focus\",\n\t\t\t\"Forgetting the viewport — handled automatically when using the composed NavigationMenu root\",\n\t\t\t\"Too many top-level items overflow on mobile\",\n\t\t],\n\t\trelatedComponents: [\"menubar\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA menu-button pattern with hover-intent delays and focus trapping in content. Links inside NavigationMenuLink get roving tabindex.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"navigation-menu\", \"mega-menu\", \"nav\", \"header\", \"site\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const breadcrumbSchema: ComponentSchemaDefinition = {\n\tname: \"breadcrumb\",\n\tdisplayName: \"Breadcrumb\",\n\tdescription: \"A path trail showing the user's location within a hierarchy, with links back to ancestors and a non-interactive current page.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the nav element\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"BreadcrumbList containing BreadcrumbItem + BreadcrumbSeparator elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-level path\",\n\t\t\tdescription: \"Home / Components / Breadcrumb\",\n\t\t\tcode: '<Breadcrumb>\\n <BreadcrumbList>\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/docs/components\">Components</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n </BreadcrumbItem>\\n </BreadcrumbList>\\n</Breadcrumb>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to show location within a hierarchical site or app: docs pages, product categories, nested settings. Include the current page as a non-link BreadcrumbPage.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for primary navigation (use NavigationMenu). Don't use for flat sites without hierarchy. Don't use when the hierarchy is too deep to display — truncate with BreadcrumbEllipsis.\",\n\t\tcommonMistakes: [\n\t\t\t\"Making the current page a link (use BreadcrumbPage)\",\n\t\t\t\"Showing just one item (defeats the purpose)\",\n\t\t\t\"Using plain text separators without aria-hidden\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root <nav aria-label='breadcrumb'> creates a landmark. BreadcrumbPage has aria-current='page'. Separators are aria-hidden (decorative). BreadcrumbEllipsis is decorative (SVG aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"breadcrumb\", \"navigation\", \"path\", \"trail\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const alertSchema: ComponentSchemaDefinition = {\n\tname: \"alert\",\n\tdisplayName: \"Alert\",\n\tdescription: \"An inline notification banner for important messages. Supports default and destructive variants with optional leading icon.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"destructive\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Alert style\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Neutral inline notification\" },\n\t\t\t\t{ value: \"destructive\", description: \"Error or warning with red accent + tinted background\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Optional icon SVG + AlertTitle + AlertDescription\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"destructive\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Info alert\",\n\t\t\tdescription: \"Default alert with title and description\",\n\t\t\tcode: '<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>You can add components to your app via the CLI.</AlertDescription>\\n</Alert>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Destructive alert\",\n\t\t\tdescription: \"Error alert\",\n\t\t\tcode: '<Alert variant=\"destructive\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>Your session has expired. Please sign in again.</AlertDescription>\\n</Alert>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline, persistent messages that contextualize a page or section: info banners, warning about deprecated features, error summaries above forms.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for transient messages (use Toast/Sonner). Don't use for modal confirmations (use AlertDialog). Don't use as the only way to communicate a critical error — pair with field-level feedback.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using destructive for non-error messages\",\n\t\t\t\"Missing AlertTitle (reduces scannability)\",\n\t\t\t\"Stacking multiple Alerts on the same page instead of grouping\",\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root renders role='alert' so screen readers announce it. For non-urgent info banners consider role='status' or aria-live='polite' via className overrides.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"alert\", \"notification\", \"banner\", \"info\", \"warning\", \"error\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sonnerSchema: ComponentSchemaDefinition = {\n\tname: \"sonner\",\n\tdisplayName: \"Sonner (Toast)\",\n\tdescription: \"Ephemeral toast notifications via Sonner. Render <Toaster /> once at app root, then call toast() anywhere.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"position\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"bottom-right\",\n\t\t\tdescription: \"Where toasts appear on screen\",\n\t\t\tenumValues: [\n\t\t\t\t\"top-left\",\n\t\t\t\t\"top-center\",\n\t\t\t\t\"top-right\",\n\t\t\t\t\"bottom-left\",\n\t\t\t\t\"bottom-center\",\n\t\t\t\t\"bottom-right\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: \"richColors\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Enable success/error/warning color variants via toast.success/error/warning\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeButton\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Show a close button on each toast\",\n\t\t},\n\t\t{\n\t\t\tname: \"theme\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"system\",\n\t\t\tdescription: \"Visual theme\",\n\t\t\tenumValues: [\"light\", \"dark\", \"system\"],\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"sonner\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"muted\", \"muted-foreground\", \"primary\", \"primary-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App setup + fire toast\",\n\t\t\tdescription: \"Render Toaster once, call toast() anywhere\",\n\t\t\tcode: '// In your root layout:\\n<Toaster />\\n\\n// Anywhere in your app:\\nimport { toast } from \"@/components/ui/sonner\";\\n\\n<Button onClick={() => toast(\"Event created\", { description: \"Friday, Dec 11 at 10:00 AM\" })}>\\n Show toast\\n</Button>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for transient feedback: save confirmations, error messages, background task completion. Pairs well with mutation handlers (onSuccess/onError).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for persistent info (use Alert). Don't use for destructive confirmations (use AlertDialog). Don't use for critical errors that block user workflow.\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering multiple <Toaster /> components (one is enough)\",\n\t\t\t\"Calling toast() during server rendering (must be client-side)\",\n\t\t\t\"Using toast for messages the user needs to re-read (they auto-dismiss)\",\n\t\t],\n\t\trelatedComponents: [\"alert\", \"alert-dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sonner handles aria-live='polite' on the toast region so screen readers announce new toasts. Critical messages should still use Alert/AlertDialog for persistent visibility.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"toast\", \"sonner\", \"notification\", \"transient\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tableSchema: ComponentSchemaDefinition = {\n\tname: \"table\",\n\tdisplayName: \"Table\",\n\tdescription: \"Styled HTML table primitives (Table / TableHeader / TableBody / TableRow / TableHead / TableCell / TableCaption / TableFooter). Low-level building blocks — use DataTable for sorting/filtering/pagination.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <table>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"TableHeader + TableBody + TableFooter + TableCaption. Use TableRow/TableHead/TableCell inside.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic table\",\n\t\t\tdescription: \"Three-column styled table with header + rows\",\n\t\t\tcode: '<Table>\\n <TableCaption>A list of your recent invoices.</TableCaption>\\n <TableHeader>\\n <TableRow>\\n <TableHead>Invoice</TableHead>\\n <TableHead>Status</TableHead>\\n <TableHead className=\"text-right\">Amount</TableHead>\\n </TableRow>\\n </TableHeader>\\n <TableBody>\\n <TableRow>\\n <TableCell className=\"font-medium\">INV001</TableCell>\\n <TableCell>Paid</TableCell>\\n <TableCell className=\"text-right\">$250.00</TableCell>\\n </TableRow>\\n </TableBody>\\n</Table>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for simple tabular data where you render rows manually: invoice lists, pricing rows, settings tables. Responsive container wraps the <table> to allow horizontal scroll on small screens.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for large datasets that need sorting/filtering/pagination (use DataTable). Don't use for layout (use CSS grid/flex). Don't use for <form> field arrays (use native fields).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using <div> grids instead of a real <table> for tabular data (breaks a11y)\",\n\t\t\t\"Putting interactive controls in headers without keyboard semantics\",\n\t\t\t\"Missing TableCaption when the table has no other label\",\n\t\t],\n\t\trelatedComponents: [\"data-table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Semantic <table> / <thead> / <tbody> is used, so screen readers announce rows/columns. Include a TableCaption or aria-label. Mark column sort buttons with aria-sort.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"table\", \"data\", \"rows\", \"tabular\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dataTableSchema: ComponentSchemaDefinition = {\n\tname: \"data-table\",\n\tdisplayName: \"Data Table\",\n\tdescription: \"Generic data-driven table built on TanStack Table + Hex UI Table primitives. Pass columns + data; add sorting/filtering/pagination via TanStack hooks.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"columns\", type: \"object\", required: true, description: \"ColumnDef<TData, TValue>[] from @tanstack/react-table\" },\n\t\t{ name: \"data\", type: \"object\", required: true, description: \"Array of row data\" },\n\t\t{\n\t\t\tname: \"caption\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Visible caption rendered below the table; announced by screen readers when entering the table\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label forwarded as aria-label on the underlying <table>; use when no visible caption is shown\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@tanstack/react-table\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"components/table/table\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic data table\",\n\t\t\tdescription: \"Three-column table rendered from TanStack column defs\",\n\t\t\tcode: 'import type { ColumnDef } from \"@tanstack/react-table\";\\nimport { DataTable } from \"@/components/ui/data-table\";\\n\\ntype Payment = { id: string; amount: number; status: \"pending\" | \"paid\" | \"failed\"; email: string };\\n\\nconst columns: ColumnDef<Payment>[] = [\\n { accessorKey: \"status\", header: \"Status\" },\\n { accessorKey: \"email\", header: \"Email\" },\\n { accessorKey: \"amount\", header: \"Amount\" },\\n];\\n\\nconst data: Payment[] = [\\n { id: \"1\", amount: 100, status: \"paid\", email: \"a@x.com\" },\\n { id: \"2\", amount: 250, status: \"pending\", email: \"b@x.com\" },\\n];\\n\\nexport function Example() {\\n return <DataTable columns={columns} data={data} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for tabular data that needs sorting, filtering, pagination, or row selection. Define columns once, feed data — TanStack handles the row model. Add more features incrementally (getSortedRowModel, getFilteredRowModel, getPaginationRowModel).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for static/simple tables (use Table primitives directly). Don't use for virtualized very-large lists (use TanStack Virtual). Don't use for grid layouts (use CSS grid). DataTable is a Client Component (uses useReactTable hook) — fetch data in a Server Component and pass it as props.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting getCoreRowModel() (table renders nothing)\",\n\t\t\t\"Recreating columns array on every render (breaks memoization — wrap in useMemo or define outside the component)\",\n\t\t\t\"Using accessorKey with nested paths without accessorFn\",\n\t\t\t\"Not adding filter/sort row models when those features are needed\",\n\t\t\t\"Shipping a table without `caption` or `aria-label` — the table is unlabelled to assistive tech\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Pass either `caption` (visible) or `aria-label` so screen readers announce the table when the user enters it. Add aria-sort to sortable column headers. Announce filter/sort changes via aria-live for dynamic updates.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"data-table\", \"tanstack\", \"sortable\", \"filterable\", \"paginated\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const paginationSchema: ComponentSchemaDefinition = {\n\tname: \"pagination\",\n\tdisplayName: \"Pagination\",\n\tdescription: \"Composable pagination controls (Pagination / PaginationContent / PaginationItem / PaginationLink / PaginationPrevious / PaginationNext / PaginationEllipsis). Link-based by default — pair with client-side navigation or server params.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <nav>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"PaginationContent containing PaginationItem elements (PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"primitives/button/button\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"input\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic pagination\",\n\t\t\tdescription: \"Previous + 3 pages + ellipsis + Next with current page marked\",\n\t\t\tcode: '<Pagination>\\n <PaginationContent>\\n <PaginationItem>\\n <PaginationPrevious href=\"#\" />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">1</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\" isActive>2</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">3</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationEllipsis />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationNext href=\"#\" />\\n </PaginationItem>\\n </PaginationContent>\\n</Pagination>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for navigating between pages of a paginated dataset: blog lists, search results, table rows. Use PaginationEllipsis to truncate long ranges.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for infinite scroll (use IntersectionObserver). Don't use for step-by-step wizards (use a stepper). Don't use for fewer than ~3 pages (just show all the items).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using PaginationLink without href (anchor is not keyboard-reachable)\",\n\t\t\t\"Forgetting isActive on the current page (no visual or aria-current feedback)\",\n\t\t\t\"Showing every page number on long ranges — use PaginationEllipsis to truncate\",\n\t\t\t\"Using onClick-only <button> instead of PaginationLink — loses right-click-open-new-tab affordance; prefer href + Next.js Link when client-side routing is needed\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"data-table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root is role='navigation' aria-label='pagination'. Active link gets aria-current='page'. Previous/Next have aria-label. Ellipsis is decorative (aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"pagination\", \"pages\", \"navigation\", \"list\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const calendarSchema: ComponentSchemaDefinition = {\n\tname: \"calendar\",\n\tdisplayName: \"Calendar\",\n\tdescription:\n\t\t\"Date grid built on react-day-picker v9. Supports single, multiple, and range selection modes. Keyboard navigable and localizable.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"mode\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"single\",\n\t\t\tdescription: \"Selection mode: 'single' | 'multiple' | 'range'\",\n\t\t},\n\t\t{\n\t\t\tname: \"selected\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected value (Date, Date[], or DateRange depending on mode)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when selection changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"DayPicker Matcher — accepts a Date, Date[], { from, to }, { before | after }, or a (date: Date) => boolean predicate\",\n\t\t},\n\t\t{\n\t\t\tname: \"showOutsideDays\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Render days from the previous/next month in the grid\",\n\t\t},\n\t\t{\n\t\t\tname: \"numberOfMonths\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"How many months to display side-by-side\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"The month to render first (uncontrolled). Date object.\",\n\t\t},\n\t\t{\n\t\t\tname: \"fromDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Earliest selectable date (Date). Days before are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"toDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Latest selectable date (Date). Days after are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"locale\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"date-fns Locale object (e.g. `import { es } from 'date-fns/locale'`) for weekday/month labels\",\n\t\t},\n\t\t{\n\t\t\tname: \"weekStartsOn\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"First day of the week (0 = Sunday, 1 = Monday, …, 6 = Saturday)\",\n\t\t},\n\t\t{\n\t\t\tname: \"classNames\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Per-part className overrides (merged with defaults)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"primary\", \"primary-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Single date selection\",\n\t\t\tdescription: \"Bind a Date state to selected/onSelect\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>(new Date());\\n return <Calendar mode=\"single\" selected={date} onSelect={setDate} className=\"rounded-md border\" />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Range selection\",\n\t\t\tdescription: \"Pick a start and end date\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport type { DateRange } from \"react-day-picker\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [range, setRange] = useState<DateRange | undefined>();\\n return <Calendar mode=\"range\" selected={range} onSelect={setRange} numberOfMonths={2} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline date selection UIs, or as the month-grid inside a DatePicker (wrapped in a Popover). Supports single date, multi-date, and range modes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when only a text date input is needed (use Input type=date). Don't embed inside a very narrow container — the grid needs ~280px min width. For scheduling UIs with time, combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to selected (must be a Date, Date[], or DateRange object)\",\n\t\t\t\"Forgetting mode prop (default is single, but being explicit avoids confusion)\",\n\t\t\t\"Overriding classNames completely instead of spreading — loses default styling\",\n\t\t\t\"Using inside a Server Component without marking the consumer 'use client'\",\n\t\t],\n\t\trelatedComponents: [\"date-picker\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"react-day-picker wires aria-label, aria-selected, and keyboard navigation (arrows, Home/End, PageUp/Down). Focus rings on day buttons use the ring token.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"calendar\", \"date\", \"date-picker\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const datePickerSchema: ComponentSchemaDefinition = {\n\tname: \"date-picker\",\n\tdisplayName: \"Date Picker\",\n\tdescription:\n\t\t\"Date input composed from Popover + Calendar. Shows the selected date formatted via date-fns, opens a calendar grid on click.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected Date\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user selects a date: (date: Date | undefined) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Pick a date\",\n\t\t\tdescription: \"Text shown on the trigger when no date is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"dateFormat\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"PPP\",\n\t\t\tdescription: \"date-fns format token for the trigger label (e.g. 'PPP', 'yyyy-MM-dd')\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the picker trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible <label> is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"captionLayout\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Caption layout forwarded to react-day-picker. Use 'dropdown' (or 'dropdown-years' / 'dropdown-months') for native <select> navigation — common for birth-date pickers. Default is 'label' (chevron buttons only).\",\n\t\t},\n\t\t{\n\t\t\tname: \"startMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Earliest month/year navigable in the calendar (Date). Forwarded to react-day-picker. Pair with captionLayout='dropdown'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"endMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Latest month/year navigable in the calendar (Date). Forwarded to react-day-picker. Pair with captionLayout='dropdown'.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/calendar/calendar\", \"components/popover/popover\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"border\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic date picker\",\n\t\t\tdescription: \"Bind a Date state and render the picker\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { DatePicker } from \"@/components/ui/date-picker\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>();\\n return <DatePicker value={date} onChange={setDate} />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Birth-date picker with year dropdown\",\n\t\t\tdescription:\n\t\t\t\t\"Use captionLayout='dropdown' with explicit startMonth/endMonth to get native <select> year navigation\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { DatePicker } from \"@/components/ui/date-picker\";\\n\\nexport function Example() {\\n const [dob, setDob] = useState<Date | undefined>();\\n return (\\n <DatePicker\\n value={dob}\\n onChange={setDob}\\n placeholder=\"Date of birth\"\\n captionLayout=\"dropdown\"\\n startMonth={new Date(1925, 0)}\\n endMonth={new Date(new Date().getFullYear(), 11)}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for selecting a single date in a form. Shows a formatted text label and opens a month grid on click. Composes Popover + Calendar + button trigger. For far-away years (birthdays, historical dates), pass captionLayout='dropdown' plus startMonth/endMonth.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for date ranges (compose Calendar mode='range' + Popover yourself). Don't use for native mobile date UX (<input type='date'> is often better on phones). Don't use if you need time selection — combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to value — must be a Date object\",\n\t\t\t\"Missing aria-label when the picker has no adjacent visible <label>\",\n\t\t\t\"Overriding className in a way that hurts focus ring visibility\",\n\t\t\t\"Forgetting that the popover auto-closes on select — provide onChange to capture the value\",\n\t\t\t\"Setting captionLayout='dropdown' without startMonth/endMonth — react-day-picker defaults to ±100 years, producing a 200-option dropdown\",\n\t\t],\n\t\trelatedComponents: [\"calendar\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger is a real <button> with focus ring. When rendered without a visible label, pass aria-label. The popover portals and traps keyboard focus inside Calendar until the user selects or presses Escape.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"date-picker\", \"date\", \"input\", \"popover\", \"calendar\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const inputOTPSchema: ComponentSchemaDefinition = {\n\tname: \"input-otp\",\n\tdisplayName: \"Input OTP\",\n\tdescription:\n\t\t\"One-time-password / verification-code entry built on the input-otp library. Renders N character slots with active/caret state and auto-advance on type.\",\n\tcategory: \"component\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"maxLength\",\n\t\t\ttype: \"number\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Total number of slots (typically 4–8 for OTPs)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled value — the current entered string\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired as the user types: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"onComplete\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called when all slots are filled (useful to auto-submit)\",\n\t\t},\n\t\t{\n\t\t\tname: \"pattern\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Regex to restrict input (use REGEXP_ONLY_DIGITS, REGEXP_ONLY_CHARS, or REGEXP_ONLY_DIGITS_AND_CHARS)\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the whole input\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"InputOTPGroup with InputOTPSlot index={0..maxLength-1}, optional InputOTPSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"input-otp\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"ring\", \"background\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"6-digit OTP with separator\",\n\t\t\tdescription: \"Two groups of 3 slots divided by a bullet\",\n\t\t\tcode: 'import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from \"@/components/ui/input-otp\";\\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\";\\n\\nexport function Example() {\\n return (\\n <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n <InputOTPGroup>\\n <InputOTPSlot index={0} />\\n <InputOTPSlot index={1} />\\n <InputOTPSlot index={2} />\\n </InputOTPGroup>\\n <InputOTPSeparator />\\n <InputOTPGroup>\\n <InputOTPSlot index={3} />\\n <InputOTPSlot index={4} />\\n <InputOTPSlot index={5} />\\n </InputOTPGroup>\\n </InputOTP>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for one-time password, email verification code, 2FA code, or any fixed-length code entry. Auto-advances on type, supports paste of the full code, and supports regex validation.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for variable-length codes (use a plain Input). Don't use for passwords (use Input type='password'). Don't use for open-ended short text — the slot UI implies a code.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to render maxLength slots — the underlying input's maxLength won't match the visible UI\",\n\t\t\t\"Using pattern without importing one of the REGEXP_ONLY_* constants from 'input-otp'\",\n\t\t\t\"Wrapping the whole thing in a <form> without a submit handler — onComplete is often a better auto-submit hook\",\n\t\t\t\"Overriding slot className in a way that removes the first/last border-radius rules\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"input-otp manages a single hidden <input> so screen readers hear one field of N characters. Each slot is a visual representation. The active slot gets a focus ring via the ring token.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"input-otp\", \"otp\", \"verification\", \"2fa\", \"code\", \"pin\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const commandSchema: ComponentSchemaDefinition = {\n\tname: \"command\",\n\tdisplayName: \"Command\",\n\tdescription:\n\t\t\"Composable command menu built on cmdk — search input + filtered list with keyboard navigation. Use as an inline palette or, wrapped in CommandDialog, as a ⌘K-style launcher.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"shouldFilter\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Built-in filtering. Set to false for fully-controlled filtering.\",\n\t\t},\n\t\t{\n\t\t\tname: \"filter\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Custom scoring function: (value, search, keywords?) => number (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active-item value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the highlighted item changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"loop\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Loop arrow-key navigation at the ends of the list\",\n\t\t},\n\t\t{\n\t\t\tname: \"label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label for the menu (not shown visually)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"CommandInput + CommandList with CommandEmpty, CommandGroup, CommandItem, CommandSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/dialog/dialog\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Command dialog launcher (⌘K)\",\n\t\t\tdescription: \"Toggle a command palette with keyboard shortcut\",\n\t\t\tcode: 'import { useEffect, useState } from \"react\";\\nimport { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"@/components/ui/command\";\\n\\nexport function Example() {\\n const [open, setOpen] = useState(false);\\n useEffect(() => {\\n const down = (e: KeyboardEvent) => {\\n if (e.key === \"k\" && (e.metaKey || e.ctrlKey)) {\\n e.preventDefault();\\n setOpen(v => !v);\\n }\\n };\\n document.addEventListener(\"keydown\", down);\\n return () => document.removeEventListener(\"keydown\", down);\\n }, []);\\n return (\\n <CommandDialog open={open} onOpenChange={setOpen}>\\n <CommandInput placeholder=\"Type a command or search…\" />\\n <CommandList>\\n <CommandEmpty>No results found.</CommandEmpty>\\n <CommandGroup heading=\"Suggestions\">\\n <CommandItem onSelect={() => setOpen(false)}>Profile</CommandItem>\\n <CommandItem onSelect={() => setOpen(false)}>Settings</CommandItem>\\n </CommandGroup>\\n </CommandList>\\n </CommandDialog>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for searchable menus, command palettes, ⌘K launchers, or as the list body of a Combobox. Built-in fuzzy filter + arrow-key nav + Enter-to-select.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for small static lists (use plain DropdownMenu). Don't use for large data tables (use DataTable). If you need a select input with a single bound value, Combobox is the higher-level wrapper.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting CommandList — items won't be scrollable or grouped properly\",\n\t\t\t\"Giving CommandItem non-unique values (breaks filtering and controlled state)\",\n\t\t\t\"Overriding CommandInput className to remove the border/padding — breaks the ⌘K icon layout\",\n\t\t\t\"Not rendering CommandEmpty — the list looks broken when a search has no matches\",\n\t\t\t\"Querying CommandSeparator via cmdk's internal Separator state — Hex UI renders it as a presentational div with role='none' (and the `data-cmdk-separator` attribute preserved for selector compatibility) so it can sit inside CommandList's role=listbox without violating ARIA\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"dialog\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"cmdk wires role=listbox/option and aria-activedescendant. Use the `label` prop on Command for a screen-reader-only name when no visible heading exists. CommandSeparator renders with role='none' (still selectable via `[data-cmdk-separator]`) so listbox-children rules are satisfied.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"command\", \"cmdk\", \"palette\", \"search\", \"launcher\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const comboboxSchema: ComponentSchemaDefinition = {\n\tname: \"combobox\",\n\tdisplayName: \"Combobox\",\n\tdescription:\n\t\t\"Searchable single-select input. Composes Popover + Command (cmdk) + a styled trigger. Pass a list of { value, label } options.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { value: string, label: string, disabled?: boolean }\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected option value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user picks an option: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Select…\",\n\t\t\tdescription: \"Text shown on the trigger when nothing is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"searchPlaceholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Search…\",\n\t\t\tdescription: \"Placeholder for the filter input\",\n\t\t},\n\t\t{\n\t\t\tname: \"emptyText\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"No results found.\",\n\t\t\tdescription: \"Shown inside the list when the search has no matches\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible label is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the combobox\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\n\t\t\t\"components/command/command\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Framework picker\",\n\t\t\tdescription: \"Searchable single-select with a small static list\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Combobox } from \"@/components/ui/combobox\";\\n\\nconst frameworks = [\\n { value: \"next\", label: \"Next.js\" },\\n { value: \"remix\", label: \"Remix\" },\\n { value: \"astro\", label: \"Astro\" },\\n { value: \"nuxt\", label: \"Nuxt\" },\\n];\\n\\nexport function Example() {\\n const [value, setValue] = useState<string>();\\n return <Combobox options={frameworks} value={value} onChange={setValue} placeholder=\"Pick a framework\" />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a select input when the list is >~8 items or users benefit from typing to narrow. Fuzzy search + keyboard nav + selected-item checkmark.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for native-select parity on mobile (use Select). Don't use for multi-select (this component is single-value — compose Command + Popover yourself for multi). Don't use for free-text entry (use Input).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing duplicate option values (breaks selection and filtering)\",\n\t\t\t\"Two options with identical labels — cmdk dedupes by the Item's filter value (the label here), so one will be dropped from the list\",\n\t\t\t\"Using the label as the value — fine if stable, but prefer a short stable `value` string\",\n\t\t\t\"Forgetting to bind value + onChange — uncontrolled mode doesn't exist on this wrapper\",\n\t\t\t\"Mixing translated labels without keying on value — label changes won't update selection\",\n\t\t\t\"Missing aria-label / aria-labelledby — role='combobox' does not allow name from contents, so without one of these the trigger has no accessible name\",\n\t\t],\n\t\trelatedComponents: [\"command\", \"popover\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger has role='combobox' + aria-expanded + aria-haspopup='listbox'. aria-controls points at the inner CommandList (a useId-stabilized listbox). Pass aria-label or aria-labelledby — combobox does not derive its name from contents.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"combobox\", \"select\", \"search\", \"cmdk\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const multiComboboxSchema: ComponentSchemaDefinition = {\n\tname: \"multi-combobox\",\n\tdisplayName: \"MultiCombobox\",\n\tdescription:\n\t\t\"Searchable multi-select input. Composes Popover + Command (cmdk) + a styled trigger. Trigger shows '{n} selected'; each option exposes aria-selected.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { value: string, label: string, disabled?: boolean }\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected values (string[])\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback when the user toggles an option: (values: string[]) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Select…\",\n\t\t\tdescription: \"Text shown on the trigger when nothing is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"searchPlaceholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Search…\",\n\t\t\tdescription: \"Placeholder for the filter input\",\n\t\t},\n\t\t{\n\t\t\tname: \"emptyText\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"No results found.\",\n\t\t\tdescription: \"Shown inside the list when the search has no matches\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxSelected\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Soft cap on selections — once reached, unselected options become aria-disabled and clicks are ignored\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeOnSelect\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Close the popover after every pick. Default false matches multi-select UX (Linear/Notion).\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible label is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the combobox\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\n\t\t\t\"components/command/command\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"ring\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Tag picker\",\n\t\t\tdescription: \"Multi-select with a small static list and chip count\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { MultiCombobox } from \"@/components/ui/multi-combobox\";\\n\\nconst tags = [\\n { value: \"bug\", label: \"Bug\" },\\n { value: \"feature\", label: \"Feature\" },\\n { value: \"question\", label: \"Question\" },\\n { value: \"docs\", label: \"Documentation\" },\\n];\\n\\nexport function Example() {\\n const [picks, setPicks] = useState<string[]>([]);\\n return (\\n <MultiCombobox\\n options={tags}\\n value={picks}\\n onChange={setPicks}\\n placeholder=\"Pick tags\"\\n aria-label=\"Tags\"\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Capped selection\",\n\t\t\tdescription: \"Limit the number of items the user can pick\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { MultiCombobox } from \"@/components/ui/multi-combobox\";\\n\\nexport function Example() {\\n const [picks, setPicks] = useState<string[]>([]);\\n return (\\n <MultiCombobox\\n options={tags}\\n value={picks}\\n onChange={setPicks}\\n maxSelected={3}\\n aria-label=\"Up to 3 tags\"\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to pick multiple items from a list of >~8 options where users benefit from typing to narrow. Common for tags, recipients, filters. Trigger shows count, each option exposes aria-selected.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for single-select (use Combobox). Don't use for free-text entry (use Input or a tag input). Don't use for very large lists (>500 options) without server-side filtering — cmdk filters in-memory.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing duplicate option values — Set-based selection treats them as one\",\n\t\t\t\"Two options with identical labels — cmdk dedupes by the Item's filter value (the label here), so one will be dropped from the list\",\n\t\t\t\"Forgetting that value is string[] not string — passing a single string breaks Array iteration\",\n\t\t\t\"Setting closeOnSelect={true} for a power-user picker — multi-select normally stays open until the user dismisses\",\n\t\t\t\"Missing aria-label / aria-labelledby — role='combobox' does not derive its name from contents, so the trigger has no accessible name without one\",\n\t\t\t\"Relying on maxSelected to enforce business rules — the cap is a UX hint; always validate the array length on submit\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"command\", \"popover\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger has role='combobox' + aria-expanded + aria-haspopup='listbox'. aria-controls points at the inner CommandList only when open. Each option carries aria-selected; capped/disabled options carry aria-disabled. A visually-hidden aria-live='polite' region inside the trigger announces selection-count changes.\",\n\t\ttokenBudget: 1100,\n\t},\n\ttags: [\"combobox\", \"multi-select\", \"select\", \"search\", \"cmdk\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const stepperSchema: ComponentSchemaDefinition = {\n\tname: \"stepper\",\n\tdisplayName: \"Stepper\",\n\tdescription:\n\t\t\"Linear progress indicator for multi-step flows (form wizards, onboarding, checkout). Pure semantic <ol>/<li> with aria-current='step' on the active step and a per-step error status override.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"steps\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Ordered list of { id, label, description?, disabled?, status? }. `status` overrides the index-derived value.\",\n\t\t},\n\t\t{\n\t\t\tname: \"current\",\n\t\t\ttype: \"number\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Index of the current step (controlled).\",\n\t\t},\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Layout direction: 'horizontal' | 'vertical'\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Indicator size: 'sm' | 'md'\",\n\t\t},\n\t\t{\n\t\t\tname: \"onStepClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"When provided, each step renders as a clickable <button>; otherwise steps are non-interactive <span>s. Signature: (index: number) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the ordered list (e.g. 'Onboarding steps', 'Checkout progress')\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\tdescription: \"Layout direction\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"horizontal\", description: \"Steps laid out left-to-right\" },\n\t\t\t\t{ value: \"vertical\", description: \"Steps stacked top-to-bottom\" },\n\t\t\t],\n\t\t\tdefault: \"horizontal\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Indicator size\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"Compact indicator (1.75rem)\" },\n\t\t\t\t{\n\t\t\t\t\tvalue: \"md\",\n\t\t\t\t\tdescription: \"Default indicator (matches control-height-sm)\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"primary\",\n\t\t\"primary-foreground\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"input\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Form wizard\",\n\t\t\tdescription:\n\t\t\t\t\"Three-step horizontal stepper with the second step active\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Onboarding\"\\n current={1}\\n steps={[\\n { id: \"account\", label: \"Account\", description: \"Email + password\" },\\n { id: \"profile\", label: \"Profile\", description: \"Name + photo\" },\\n { id: \"confirm\", label: \"Confirm\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With error state\",\n\t\t\tdescription: \"Mark a failed step explicitly with status='error'\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Checkout\"\\n current={2}\\n steps={[\\n { id: \"cart\", label: \"Cart\" },\\n { id: \"shipping\", label: \"Shipping\", status: \"error\" },\\n { id: \"payment\", label: \"Payment\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Vertical, clickable\",\n\t\t\tdescription: \"Vertical orientation with onStepClick to jump back\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Settings\"\\n orientation=\"vertical\"\\n current={1}\\n onStepClick={(i) => console.log(i)}\\n steps={[\\n { id: \"profile\", label: \"Profile\" },\\n { id: \"security\", label: \"Security\" },\\n { id: \"billing\", label: \"Billing\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to communicate progress through a multi-step flow with a known fixed sequence: form wizards, onboarding, checkout, ticket triage. Mark per-step error status when validation fails.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for free navigation across unrelated sections (use Tabs). Don't use for indeterminate progress (use Progress with no value). Don't use for >7 steps — collapse into a multi-screen wizard with a sub-stepper instead.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — the <ol> needs an accessible name to be understood as a step list\",\n\t\t\t\"Setting current to an out-of-range index — derives all steps as 'upcoming'\",\n\t\t\t\"Mixing index-derived status with manual status overrides without intent — once you set status on one step, set it on all of them or know the precedence rules\",\n\t\t\t\"Making the stepper interactive (onStepClick) but allowing forward jumps before validation — gate jumps in your handler\",\n\t\t\t\"Treating it as a tab control — Stepper communicates direction; users can't pick step 5 then go back to 2 to review without your wiring\",\n\t\t],\n\t\trelatedComponents: [\"progress\", \"tabs\", \"breadcrumb\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders <ol> with the provided aria-label. The active step's interactive element gets aria-current='step'. Completed steps prefix the label with visually-hidden 'Completed:'; error steps prefix with 'Error:' and set aria-invalid='true' on the indicator. Connector lines are aria-hidden. When onStepClick is omitted, steps are plain <span>s — not fake buttons.\",\n\t\ttokenBudget: 1400,\n\t},\n\ttags: [\"stepper\", \"wizard\", \"progress\", \"navigation\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const timelineSchema: ComponentSchemaDefinition = {\n\tname: \"timeline\",\n\tdisplayName: \"Timeline\",\n\tdescription:\n\t\t\"Vertical chronological event feed for activity logs, audit trails, release notes, and notification streams. Pure semantic <ol>/<li> with a status-colored indicator and an optional icon override.\",\n\tcategory: \"component\",\n\tsubcategory: \"data-display\",\n\tprops: [\n\t\t{\n\t\t\tname: \"events\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Ordered list of { id, title, timestamp?, description?, icon?, status? } events.\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Indicator size: 'sm' | 'md'\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the ordered list (e.g. 'Activity log', 'Release notes')\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Indicator size\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"Compact 1.25rem indicator\" },\n\t\t\t\t{ value: \"md\", description: \"Default 1.75rem indicator\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"input\",\n\t\t\"primary\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Activity log\",\n\t\t\tdescription: \"Three-entry vertical feed with mixed status colors\",\n\t\t\tcode: 'import { Timeline } from \"@/components/ui/timeline\";\\n\\nexport function Example() {\\n return (\\n <Timeline\\n aria-label=\"Activity\"\\n events={[\\n { id: \"1\", title: \"Pull request opened\", timestamp: \"2 hours ago\", status: \"info\" },\\n { id: \"2\", title: \"CI passed\", timestamp: \"1 hour ago\", status: \"success\" },\\n { id: \"3\", title: \"Merged to main\", timestamp: \"12 minutes ago\", description: \"Squash + merge by @oscar\", status: \"success\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom icon\",\n\t\t\tdescription: \"Override the default dot with a custom node\",\n\t\t\tcode: 'import { Timeline } from \"@/components/ui/timeline\";\\n\\nexport function Example() {\\n return (\\n <Timeline\\n aria-label=\"Release notes\"\\n events={[\\n { id: \"v1\", title: \"v1.0\", timestamp: \"Apr 24\", icon: <span>⚡</span> },\\n { id: \"v2\", title: \"v1.1\", timestamp: \"Apr 27\", icon: <span>🐛</span>, status: \"warning\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to show a chronological event feed: activity logs, audit trails, release notes, notification history, ticket events. Each event has a title and optional timestamp + description.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for project schedules / Gantt charts (build a custom layout). Don't use for navigation between time periods (use Tabs or Stepper). Don't use for paginated data (use Table or DataTable). Don't use for >50 events without virtualization — Timeline renders every item.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — the <ol> needs an accessible name to be understood as a feed\",\n\t\t\t\"Using duplicate event ids — breaks React keys and event reconciliation on re-render\",\n\t\t\t\"Stuffing the description with rich layouts that overflow the timeline rail — keep it short or move to a Card\",\n\t\t\t\"Setting status='error' on every event for emphasis — color loses meaning when overused\",\n\t\t\t\"Mixing controlled timestamps as Date objects without formatting — Timeline accepts ReactNode, so format upstream (date-fns) before passing in\",\n\t\t],\n\t\trelatedComponents: [\"card\", \"stepper\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders <ol> with the provided aria-label. The status-colored indicator and connector line are aria-hidden — meaning is carried entirely by the title/timestamp/description text. No aria-current; events are historical, not navigational. For >50 events consider a windowing solution outside Timeline.\",\n\t\ttokenBudget: 1100,\n\t},\n\ttags: [\"timeline\", \"feed\", \"activity\", \"audit-log\", \"history\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dropzoneSchema: ComponentSchemaDefinition = {\n\tname: \"dropzone\",\n\tdisplayName: \"Dropzone\",\n\tdescription:\n\t\t\"Drag-and-drop file input built on the native HTML5 drag-drop API plus a visually-hidden <input type='file'> for keyboard + screen-reader access. Filters by accept/maxSize/maxFiles before emitting.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"onFilesSelected\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired with the accepted File[] on pick or drop.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onFilesRejected\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback fired with the rejected File[] when files fail accept/maxSize/maxFiles, OR when multiple={false} and extras were sliced off. Receives the rejected File[]. Use to surface 'wrong type' / 'too large' toasts.\",\n\t\t},\n\t\t{\n\t\t\tname: \"accept\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Accept attribute forwarded to the hidden file input. Three forms: MIME type ('application/pdf'), MIME wildcard ('image/*'), or extension with leading dot ('.csv'). Extension matching is suffix-based (mirrors HTML5) — '.csv' will match 'notes.md.csv' as well.\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription:\n\t\t\t\t\"Allow multiple files. With `multiple={false}`, the first accepted file flows to onFilesSelected and any extras flow to onFilesRejected so consumers can toast them.\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxFiles\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Cap on the number of accepted files. Excess files are dropped silently — surface in your handler if needed.\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxSize\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Maximum size per file in bytes. Files over the cap are filtered before onFilesSelected fires.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable interaction (click + drop + keyboard).\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Render override for the body. Pass a node, or a function receiving { isDragOver, isDisabled, openFileDialog } for layout control.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Required accessible name for the drop area.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"Body of the drop area (icon + copy). Optional — sensible default included.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\", \"function\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"primary\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Image upload\",\n\t\t\tdescription: \"Filter to images only with a 5MB cap\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Dropzone } from \"@/components/ui/dropzone\";\\n\\nexport function Example() {\\n const [files, setFiles] = useState<File[]>([]);\\n return (\\n <>\\n <Dropzone\\n accept=\"image/*\"\\n maxSize={5 * 1024 * 1024}\\n onFilesSelected={(picked) => setFiles((f) => [...f, ...picked])}\\n aria-label=\"Upload images\"\\n />\\n <ul>{files.map((f) => <li key={f.name}>{f.name}</li>)}</ul>\\n </>\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom body via render prop\",\n\t\t\tdescription: \"Take full control of the drop area visuals\",\n\t\t\tcode: 'import { Dropzone } from \"@/components/ui/dropzone\";\\n\\nexport function Example() {\\n return (\\n <Dropzone aria-label=\"Upload\" onFilesSelected={(f) => console.log(f)}>\\n {({ isDragOver }) => (\\n <span>{isDragOver ? \"Release to upload\" : \"Drop a file or click\"}</span>\\n )}\\n </Dropzone>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any file upload UX where drag-drop is helpful (image uploaders, CSV import, attachment pickers). Built on native HTML5 + a hidden <input type='file'> so keyboard and screen-reader users get the same affordance.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for camera/microphone capture (use <input type='file' capture> directly or a media-specific component). Don't use for chunked/resumable uploads — Dropzone only emits File[]; pair with a real upload pipeline (tus, S3 multipart). Don't use for clipboard paste image upload — listen on document for that.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — without it the drop area is announced as just 'button' to screen readers\",\n\t\t\t\"Setting accept='image' (missing the slash or wildcard) — must be a MIME type, MIME prefix with /*, or a .extension\",\n\t\t\t\"Forgetting that extension matching is suffix-based — '.csv' will match 'notes.md.csv'. Acceptable (mirrors HTML5) but document upstream if business logic requires strict suffix-only\",\n\t\t\t\"Treating maxFiles as enforcement — files past the cap are dropped silently; if business rules require it, validate again on submit\",\n\t\t\t\"Forgetting to clear the file input value after a successful upload — Dropzone resets the hidden input automatically; if you wrap it, do the same\",\n\t\t\t\"Calling preventDefault on parent containers' onDragOver — without it the browser opens the file when dropped on the window outside the dropzone\",\n\t\t\t\"Treating empty drops as no-op silently when the user expected feedback — pair with onFilesRejected to surface filter failures\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"button\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"The drop area is a role='button' div with tabIndex=0 and the required aria-label; Enter and Space open the file dialog. The file input is visually-hidden but live in the DOM so keyboard focus + assistive-tech file pickers work. Drag-state is exposed via data-drag-over for CSS-only state styling. When disabled, the drop area is removed from the tab order and aria-disabled is set.\",\n\t\ttokenBudget: 1500,\n\t},\n\ttags: [\"dropzone\", \"file-upload\", \"drag-drop\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const timePickerSchema: ComponentSchemaDefinition = {\n\tname: \"time-picker\",\n\tdisplayName: \"Time Picker\",\n\tdescription:\n\t\t\"Time input — styled wrapper around the native <input type='time'>. Value is a 'HH:MM' (or 'HH:MM:SS' with step=1) string. The browser provides 12/24-hour locale handling, keyboard arrow spinning, and screen-reader announcement.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled time value as 'HH:MM' or 'HH:MM:SS' (24-hour).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback when the user picks a time: (value: string) => void. Value is always 24-hour 'HH:MM' (or 'HH:MM:SS' when step=1).\",\n\t\t},\n\t\t{\n\t\t\tname: \"step\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Step in seconds. Use 60 (default) for HH:MM, 1 for HH:MM:SS, 300 for 5-minute steps, 900 for 15-minute. Note: Chrome/Edge picker dropdown UI does NOT visually snap minutes to the step — it only affects keyboard arrow stepping and form validation. Off-step values are still rejected.\",\n\t\t},\n\t\t{\n\t\t\tname: \"min\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Earliest selectable time as 'HH:MM'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"max\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Latest selectable time as 'HH:MM'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the input.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible <label> is used.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"input\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic time picker\",\n\t\t\tdescription: \"Bind a string state and render the picker\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { TimePicker } from \"@/components/ui/time-picker\";\\n\\nexport function Example() {\\n const [time, setTime] = useState<string>();\\n return <TimePicker value={time} onChange={setTime} aria-label=\"Meeting time\" />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With seconds + 5-minute step\",\n\t\t\tdescription:\n\t\t\t\t\"step={1} adds a seconds segment; step={300} steps minutes by 5 in browsers that support it\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { TimePicker } from \"@/components/ui/time-picker\";\\n\\nexport function Example() {\\n const [time, setTime] = useState<string>(\"09:00\");\\n return <TimePicker value={time} onChange={setTime} step={300} min=\"09:00\" max=\"17:00\" aria-label=\"Working hours start\" />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for selecting a time of day in a form (meeting time, reminder, business hours start/end). Browser handles 12/24-hour locale automatically based on user system settings; the wire format is always 24-hour 'HH:MM'. Component is controlled-only — pair `value` with `onChange`; for uncontrolled use, the input behaves as a controlled empty input with no upstream state.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for durations (hours/minutes elapsed) — use composite Input fields. Don't use for date+time together — combine with DatePicker. Don't use when explicit AM/PM segments matter for layout — compose Input + Select yourself; the native input renders AM/PM only in 12-hour locales. Don't use when you need pixel-identical chrome across browsers — the dropdown indicator is webkit-styled (Chrome/Edge/Safari) and absent in Firefox.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a Date object to value — must be a string in 'HH:MM' format\",\n\t\t\t\"Treating onChange as 12-hour — the value is always 24-hour, the browser only displays it in user locale\",\n\t\t\t\"Missing aria-label when there's no adjacent visible <label> — input gets no accessible name\",\n\t\t\t\"Setting step to a value that doesn't divide evenly into 3600 (e.g. step=7) — confusing UX in browsers that snap to it\",\n\t\t\t\"Expecting Chrome/Edge's picker dropdown to visually skip minutes per step — it doesn't. The minute scroll wheel always shows every minute; step only constrains keyboard arrow stepping and form validation\",\n\t\t\t\"Setting min/max with seconds when step!=1 — the seconds segment is hidden, so users can't actually reach values that need it\",\n\t\t\t\"Expecting the dropdown picker indicator to render in Firefox — only webkit browsers paint it; Firefox renders the input without that affordance\",\n\t\t\t\"Expecting an uncontrolled mode — TimePicker is controlled-only. Pass both value + onChange, or omit both and accept that user input has no place to live\",\n\t\t],\n\t\trelatedComponents: [\"date-picker\", \"input\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Native <input type='time'> — assistive tech announces hour/minute (and seconds if shown) segments individually. Arrow keys spin each segment. Disabled state is announced. Pass aria-label or wrap with a <label htmlFor>. Visual chrome (icon, dropdown affordance) is browser-controlled and varies across Chrome/Edge/Safari (rendered) and Firefox (absent).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"time-picker\", \"time\", \"input\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const fileTreeSchema: ComponentSchemaDefinition = {\n\tname: \"file-tree\",\n\tdisplayName: \"File Tree\",\n\tdescription:\n\t\t\"Hierarchical tree view for files, folders, and any nested navigation. Implements the WAI-ARIA tree pattern with role='tree' / 'treeitem' / 'group', aria-level, aria-expanded, aria-selected, and full keyboard navigation (Up/Down/Left/Right/Home/End/Enter/Space).\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Tree of { id, name, children?, icon?, disabled? }. Presence of `children` (even an empty array) marks the node as a folder.\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultExpanded\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Uncontrolled — initial expanded ids (string[]).\",\n\t\t},\n\t\t{\n\t\t\tname: \"expanded\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled expanded ids (string[]). Pair with onExpandedChange.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onExpandedChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Fired with the new expanded ids: (ids: string[]) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"selected\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected node id.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Fired when the user activates a node via click, Enter, or Space: (id: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the tree (e.g. 'File explorer', 'Settings sections').\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic file tree\",\n\t\t\tdescription: \"Uncontrolled expanded set; selected state controlled\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { FileTree } from \"@/components/ui/file-tree\";\\n\\nconst nodes = [\\n {\\n id: \"src\",\\n name: \"src\",\\n children: [\\n { id: \"src/index.tsx\", name: \"index.tsx\" },\\n {\\n id: \"src/components\",\\n name: \"components\",\\n children: [\\n { id: \"src/components/Button.tsx\", name: \"Button.tsx\" },\\n { id: \"src/components/Input.tsx\", name: \"Input.tsx\" },\\n ],\\n },\\n ],\\n },\\n { id: \"package.json\", name: \"package.json\" },\\n];\\n\\nexport function Example() {\\n const [selected, setSelected] = useState<string>();\\n return (\\n <FileTree\\n aria-label=\"Project files\"\\n nodes={nodes}\\n defaultExpanded={[\"src\"]}\\n selected={selected}\\n onSelect={setSelected}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for hierarchical navigation: file/folder explorers, settings sections, org charts, taxonomy browsers. Renders a real ARIA tree with full keyboard support, so it works for sighted, keyboard, and screen-reader users.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for flat lists (use ScrollArea + a list). Don't use for navigation menus (use NavigationMenu). Don't use for very deep trees (>5 levels) without virtualization — every node is rendered. Don't use for selecting multiple files concurrently — multi-select tree UX is a different beast; ship a separate component when you need it.\",\n\t\tcommonMistakes: [\n\t\t\t\"Mixing controlled `expanded` with `defaultExpanded` — pass exactly one\",\n\t\t\t\"Using non-stable node ids (e.g. array index) — collapsing/expanding shifts state\",\n\t\t\t\"Marking a leaf with `children: []` instead of omitting `children` — empty array still flags it as a folder, so the chevron shows\",\n\t\t\t\"Forgetting aria-label — the tree gets no accessible name and screen readers announce just 'tree'\",\n\t\t\t\"Calling onSelect to navigate without de-bouncing arrow-key focus changes — focus moves on arrows but does NOT call onSelect; only Enter/Space/click selects, so navigation should hang off onSelect, not focused state\",\n\t\t\t\"Expecting row-click to toggle expand — per WAI-ARIA tree pattern the row click only selects; toggling is the chevron button (or ArrowRight/Left, or Enter/Space when the row is focused). Common surprise after coming from VS Code-style trees\",\n\t\t\t\"Passing `selected` pointing at a node inside a collapsed branch — the tree falls back to the first visible node for tab focus, so the consumer can't rely on tabIndex to land on the selected target until it's revealed via expanded\",\n\t\t],\n\t\trelatedComponents: [\"accordion\", \"navigation-menu\", \"sidebar\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root: role='tree' with aria-label. Each node: role='treeitem' with aria-level, aria-expanded (folders only), aria-selected, tabIndex=0 only on the active visible node (roving tabindex). Children container: role='group'. Click semantics: row click selects only; the chevron is a separate decorative button that toggles. Keyboard: ArrowDown/Up move through visible non-disabled nodes (disabled nodes are skipped); ArrowRight expands a closed folder or moves to first child; ArrowLeft collapses an open folder or moves to parent; Home/End jump to first/last visible; Enter/Space activate (toggle on folders, select on all).\",\n\t\ttokenBudget: 2000,\n\t},\n\ttags: [\"file-tree\", \"tree\", \"navigation\", \"explorer\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const colorPickerSchema: ComponentSchemaDefinition = {\n\tname: \"color-picker\",\n\tdisplayName: \"Color Picker\",\n\tdescription:\n\t\t\"HSL-native color picker that edits an HSL triplet directly via three sliders (H/S/L). Hex input is a display adapter; sliders are the source of truth so the value round-trips losslessly through the `@hex-core/tokens` triplet format.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Current color as an HSL triplet string (`\\\"<H> <S>% <L>%\\\"`, e.g. `\\\"240 5.9% 10%\\\"`). Match the format used by `@hex-core/tokens`.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Called with the next HSL triplet when the user drags a slider or commits a valid hex value. Not called for invalid hex input.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Disable interaction. Trigger renders dimmed; mouse and keyboard activation are blocked by the native `disabled` attribute.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: '\"Pick color\"',\n\t\t\tdescription: \"Accessible name for the trigger button.\",\n\t\t},\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Additional class names merged onto the trigger.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-popover\", \"@radix-ui/react-slider\", \"@radix-ui/react-label\"],\n\t\tinternal: [\n\t\t\t\"primitives/slider/slider\",\n\t\t\t\"primitives/input/input\",\n\t\t\t\"primitives/label/label\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/color\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"background\", \"ring\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Edit a token live\",\n\t\t\tdescription: \"Bind a state variable to a CSS custom property to preview a token edit in real time.\",\n\t\t\tcode: 'const [color, setColor] = React.useState(\"240 5.9% 10%\");\\n\\nreturn (\\n <div style={{ \"--primary\": color } as React.CSSProperties}>\\n <ColorPicker value={color} onChange={setColor} aria-label=\"Primary color\" />\\n <Button>Live preview</Button>\\n </div>\\n);',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Disabled\",\n\t\t\tdescription: \"Prevent edits while a parent operation is in flight.\",\n\t\t\tcode: '<ColorPicker value=\"240 5.9% 10%\" onChange={() => {}} disabled />',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use whenever the user is editing a color that will round-trip through the `@hex-core/tokens` HSL triplet format — token editors, theme builders, branding panels, custom-color surfaces in design tools.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for picking a color from a fixed palette — use a `Select` or `RadioGroup` of swatches. Don't use for image-based color sampling (eyedropper) — that's a separate primitive. Don't reach for ColorPicker when only a hex string matters: bind it directly to `<input type=\\\"color\\\">` for the simplest cases.\",\n\t\tcommonMistakes: [\n\t\t\t\"Treating the value as hex — the prop is an HSL triplet, not a hex string. Use `hexToHslTriplet` and `hslTripletToHex` from `@hex-core/components/lib/color` if you need to bridge.\",\n\t\t\t\"Forgetting to wrap the value in `hsl(...)` when applying it as a CSS color: `style={{ color: \\\\`hsl(${value})\\\\` }}`.\",\n\t\t\t\"Calling `onChange` synchronously inside a parent's render — the picker batches slider updates and that pattern can desync controlled state.\",\n\t\t],\n\t\trelatedComponents: [\"slider\", \"input\", \"label\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Each slider has a per-axis `aria-label` (Hue / Saturation / Lightness). The trigger button needs an explicit `aria-label` describing what color is being edited (e.g. `\\\"Primary color\\\"`) — the default `\\\"Pick color\\\"` is generic. The hex input is keyboard-accessible and round-trips with the sliders.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"color-picker\", \"color\", \"hsl\", \"hex\", \"form\", \"theme-editor\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sheetSchema: ComponentSchemaDefinition = {\n\tname: \"sheet\",\n\tdisplayName: \"Sheet\",\n\tdescription:\n\t\t\"Side drawer built on Radix Dialog with a directional slide animation. Use for navigation, filters, quick edit, or any off-canvas panel.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, content outside the sheet is inert\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sheet slides in from\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"top\", description: \"Slides down from the top edge\" },\n\t\t\t\t{ value: \"bottom\", description: \"Slides up from the bottom edge\" },\n\t\t\t\t{ value: \"left\", description: \"Slides in from the left edge\" },\n\t\t\t\t{ value: \"right\", description: \"Slides in from the right edge (default)\" },\n\t\t\t],\n\t\t\tdefault: \"right\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SheetTrigger + SheetContent (with SheetHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dialog\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted-foreground\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-side sheet\",\n\t\t\tdescription: \"Quick edit panel anchored to the right edge\",\n\t\t\tcode: '<Sheet>\\n <SheetTrigger asChild>\\n <Button variant=\"outline\">Open</Button>\\n </SheetTrigger>\\n <SheetContent>\\n <SheetHeader>\\n <SheetTitle>Edit profile</SheetTitle>\\n <SheetDescription>Make changes and save when done.</SheetDescription>\\n </SheetHeader>\\n <div className=\"grid gap-4 py-4\">\\n <Input placeholder=\"Name\" />\\n </div>\\n <SheetFooter>\\n <Button>Save</Button>\\n </SheetFooter>\\n </SheetContent>\\n</Sheet>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for off-canvas panels — mobile nav menus, filter panels, side forms, detail views, or multi-step flows. Slides in from an edge, dismisses on outside click, Escape, or close button.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for center-focused modals (use Dialog). Don't use for transient bottom sheets on mobile (use Drawer). Don't use for dropdown menus or quick popover actions (use DropdownMenu or Popover).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting SheetTitle — Radix warns at runtime and screen readers announce an unnamed dialog\",\n\t\t\t\"Putting a full page's content inside a sheet — too much friction; use a route instead\",\n\t\t\t\"Overriding the side slide animation without matching the 'side' variant\",\n\t\t\t\"Not handling controlled open state after SheetClose — use onOpenChange not manual state\",\n\t\t],\n\t\trelatedComponents: [\"dialog\", \"drawer\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix traps focus, handles Escape to close, and wires aria-labelledby/describedby to SheetTitle/Description. The Close button has sr-only text. Always include a SheetTitle.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"sheet\", \"drawer\", \"side-panel\", \"off-canvas\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const drawerSchema: ComponentSchemaDefinition = {\n\tname: \"drawer\",\n\tdisplayName: \"Drawer\",\n\tdescription:\n\t\t\"Bottom-sheet drawer built on vaul. Mobile-native feel: drag-to-dismiss, snap points, body-scale-on-open. Use for quick mobile actions, filters, pickers.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"shouldScaleBackground\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Scale the <body> element when the drawer opens (creates depth)\",\n\t\t},\n\t\t{\n\t\t\tname: \"snapPoints\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of snap positions ('40%', 400, '100%') — defines resting heights the user can snap to\",\n\t\t},\n\t\t{\n\t\t\tname: \"activeSnapPoint\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active snap point value (matches one entry in snapPoints)\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeThreshold\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0.25,\n\t\t\tdescription: \"Fraction of height the user must drag down to close (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"dismissible\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Allow drag-to-dismiss and outside-click-to-dismiss\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DrawerTrigger + DrawerContent (with DrawerHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"vaul\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic drawer\",\n\t\t\tdescription: \"Mobile-friendly bottom sheet with a quick action\",\n\t\t\tcode: '<Drawer>\\n <DrawerTrigger asChild>\\n <Button variant=\"outline\">Open drawer</Button>\\n </DrawerTrigger>\\n <DrawerContent>\\n <DrawerHeader>\\n <DrawerTitle>Edit profile</DrawerTitle>\\n <DrawerDescription>Make changes to your profile.</DrawerDescription>\\n </DrawerHeader>\\n <div className=\"p-4\"><Input placeholder=\"Name\" /></div>\\n <DrawerFooter>\\n <Button>Save</Button>\\n <DrawerClose asChild>\\n <Button variant=\"outline\">Cancel</Button>\\n </DrawerClose>\\n </DrawerFooter>\\n </DrawerContent>\\n</Drawer>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use on mobile-first or mobile-primary UX when a native app-like bottom sheet matters. Good for filters, quick pickers, confirm-then-do flows, or anywhere a user expects drag-to-dismiss.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use on desktop-primary UIs (use Dialog or Sheet). Don't use for side navigation (use Sheet). Don't use for transient info (use Popover or Tooltip). Don't use when you must prevent dismissal — drawers invite drag-down.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting DrawerTitle — vaul/Radix warn and screen readers announce an unnamed dialog\",\n\t\t\t\"Placing long forms inside a drawer without snap points — content gets cramped\",\n\t\t\t\"Disabling shouldScaleBackground when the background context-cue matters for UX\",\n\t\t\t\"Wrapping DrawerContent in Portal yourself — DrawerContent already portals via DrawerPortal\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"vaul delegates to Radix Dialog: focus trap, Escape to close, aria-labelledby/describedby wired to DrawerTitle/Description. The top handle is decorative (aria-hidden).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"drawer\", \"bottom-sheet\", \"vaul\", \"mobile\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const resizableSchema: ComponentSchemaDefinition = {\n\tname: \"resizable\",\n\tdisplayName: \"Resizable\",\n\tdescription:\n\t\t\"Draggable split panes built on react-resizable-panels v4. Horizontal or vertical, with keyboard-accessible handles and persistable layout.\",\n\tcategory: \"component\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Group orientation: 'horizontal' | 'vertical'\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultLayout\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of initial panel sizes in order (percentages summing to 100)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onLayoutChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Fires when the user drags a handle; receives the new layout array\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable resizing for the whole group\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Alternating ResizablePanel + ResizableHandle nodes\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"react-resizable-panels\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Horizontal split pane\",\n\t\t\tdescription: \"Two resizable panels with a grab-grip handle\",\n\t\t\tcode: '<ResizablePanelGroup orientation=\"horizontal\" className=\"min-h-[300px] max-w-md rounded-lg border\">\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">One</div>\\n </ResizablePanel>\\n <ResizableHandle withHandle />\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">Two</div>\\n </ResizablePanel>\\n</ResizablePanelGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for editor-style layouts (file tree + editor), dashboards with configurable panels, or any UI where users need to trade space between regions. Layouts can be persisted to localStorage via the group's id.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for responsive layouts — use CSS grid/flex with breakpoints. Don't use for modal layouts (use Dialog/Sheet). Don't nest deeply (>2 levels) — it hurts a11y and perception. Don't use if panels need to collapse/expand as a single action (use Collapsible).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting ResizableHandle between panels — they won't resize\",\n\t\t\t\"Using 'cols'/'rows' instead of orientation='horizontal'/'vertical' (old v1 API)\",\n\t\t\t\"Not providing defaultSize on each panel — initial layout will be uneven\",\n\t\t\t\"Rendering panel content that changes DOM size during drag — react-resizable-panels performance suffers\",\n\t\t\t\"Omitting a group id when you want layout to persist via localStorage\",\n\t\t],\n\t\trelatedComponents: [\"separator\", \"collapsible\"],\n\t\taccessibilityNotes:\n\t\t\t\"ResizableHandle is focusable and resizable via keyboard arrows. role='separator' is set, with aria-valuenow/min/max wired by react-resizable-panels. The grab-grip is aria-hidden (decorative).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"resizable\", \"split-pane\", \"layout\", \"panels\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sidebarSchema: ComponentSchemaDefinition = {\n\tname: \"sidebar\",\n\tdisplayName: \"Sidebar\",\n\tdescription:\n\t\t\"App-shell sidebar with collapsible width, context-driven open state, and composable Header/Content/Footer/Item parts. Provider-based so any descendant can toggle it.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled open state — read from SidebarProvider\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Initial open state (uncontrolled)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state flips: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"side\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"left\",\n\t\t\tdescription: \"Which edge the sidebar sits on: 'left' | 'right'\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sidebar docks against\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"left\", description: \"Docks to the left edge (default)\" },\n\t\t\t\t{ value: \"right\", description: \"Docks to the right edge\" },\n\t\t\t],\n\t\t\tdefault: \"left\",\n\t\t},\n\t\t{\n\t\t\tname: \"state\",\n\t\t\tdescription: \"Width state (derived from SidebarProvider open value)\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"open\", description: \"Sidebar expanded at full width\" },\n\t\t\t\t{ value: \"closed\", description: \"Sidebar collapsed to zero width\" },\n\t\t\t],\n\t\t\tdefault: \"open\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SidebarHeader + SidebarContent + SidebarFooter (any combination)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"accent\", \"accent-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App shell with collapsible sidebar\",\n\t\t\tdescription: \"Provider holds open state; the trigger toggles it\",\n\t\t\tcode: '<SidebarProvider>\\n <Sidebar>\\n <SidebarHeader>\\n <span className=\"font-semibold\">Acme</span>\\n </SidebarHeader>\\n <SidebarContent>\\n <SidebarItem active>Dashboard</SidebarItem>\\n <SidebarItem>Projects</SidebarItem>\\n <SidebarItem>Settings</SidebarItem>\\n </SidebarContent>\\n <SidebarFooter>Signed in as jane</SidebarFooter>\\n </Sidebar>\\n <main className=\"flex-1 p-4\">\\n <SidebarTrigger />\\n <h1>Hello</h1>\\n </main>\\n</SidebarProvider>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for persistent app-shell navigation: admin dashboards, document editors, SaaS sidebars. The Provider pattern lets any descendant component toggle the sidebar (e.g. a topbar button on mobile).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for mobile-first UX (use Sheet — sidebar collapses to zero-width but Sheet gives a native drawer feel). Don't use for marketing sites (no shell). Don't use for contextual menus (use DropdownMenu or NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering Sidebar outside SidebarProvider — useSidebar throws\",\n\t\t\t\"Forgetting that SidebarProvider is a flex container — main content must be its direct sibling\",\n\t\t\t\"Using the wrong ordering for side='right' — SidebarProvider handles this via order-last\",\n\t\t\t\"Overriding the width variant manually instead of toggling open state\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"navigation-menu\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sidebar is an <aside> landmark (not a modal — no focus trap). When collapsed, the aside sets inert + aria-hidden so its children are removed from the tab order and the accessibility tree. SidebarTrigger exposes aria-expanded and a rotating aria-label (suppressed when asChild so the consumer's visible label/aria-label wins). SidebarItem uses aria-current='page' when active. Focus rings use the ring token.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"sidebar\", \"navigation\", \"app-shell\", \"layout\"],\n};\n"],"mappings":"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","names":["React","jsx","cva","React","jsx","cva","React","jsx","React","jsx","jsxs","React","jsx","cva","jsx","cva","React","jsx","React","jsx","jsxs","React","jsx","React","jsx","jsxs","cva","React","jsx","cva","React","jsx","React","jsx","jsx","React","jsx","React","jsx","jsxs","Slot","cva","jsx","cva","Slot","cva","jsx","cva","cva","jsx","cva","cva","jsx","cva","cva","jsx","cva","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","Slot","React","jsx","Slot","cva","React","jsx","cva","jsx","CollapsibleTrigger","CollapsibleContent","React","jsx","React","jsx","jsxs","React","jsx","cva","React","jsx","jsxs","cva","Slot","React","jsx","jsxs","Slot","React","jsx","jsx","jsxs","React","jsx","jsxs","Fragment","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","jsx","jsxs","React","Fragment","jsx","jsxs","cva","Fragment","jsx","jsxs","cva","cva","jsx","jsxs","cva","React","Fragment","jsx","jsxs","React","jsx","React","jsx","jsxs","cva","React","jsx","jsxs","cva","React","jsx","jsxs","jsx","jsxs","Slot","cva","React","Fragment","jsx","jsxs","cva","Slot"]}
|