@hex-core/components 1.0.0 → 1.1.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 +178 -1
- package/dist/index.js +942 -232
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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/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/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\"border border-input bg-background\",\n\t\t\t\t\t\"shadow-sm\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md\",\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\",\n\t\t\t\t\t\"hover:bg-secondary/80 hover:shadow-md\",\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\"shadow-sm\",\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\",\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\",\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\"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: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\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: \"text-foreground\",\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-border\",\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\",\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 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-muted\", 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\",\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 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: \"border border-input bg-transparent shadow-sm 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 <div className={cn(\"animate-pulse rounded-md bg-muted\", className)} {...props} />;\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 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-border\" />\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 * 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 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 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\", 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 bg-background shadow-lg rounded-lg\"\n\t\t\t\t\t: \"gap-[var(--gap-md,1rem)] border 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 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\",\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\",\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 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-muted\", 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 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: \"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 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 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-border\", 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 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 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-muted\", 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 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-border 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\", 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 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 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\">\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 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 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\"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\"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 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-border\", 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\"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\"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 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-border 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-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 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 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 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","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/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\"border border-input bg-background\",\n\t\t\t\t\t\"shadow-sm\",\n\t\t\t\t\t\"hover:bg-accent hover:text-accent-foreground hover:shadow-md\",\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\",\n\t\t\t\t\t\"hover:bg-secondary/80 hover:shadow-md\",\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\"shadow-sm\",\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\",\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\",\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\"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: \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\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: \"text-foreground\",\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-border\",\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\",\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 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-muted\", 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\",\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 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: \"border border-input bg-transparent shadow-sm 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 <div className={cn(\"animate-pulse rounded-md bg-muted\", className)} {...props} />;\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 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-border\" />\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 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 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\", 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 bg-background shadow-lg rounded-lg\"\n\t\t\t\t\t: \"gap-[var(--gap-md,1rem)] border 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 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\",\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\",\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 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-muted\", 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 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: \"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 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 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-border\", 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 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 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-muted\", 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 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-border 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\", 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 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 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\">\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 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 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\"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\"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 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-border\", 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\"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\"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 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-border 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-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 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 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"]}
|