@hex-core/components 1.6.0 → 1.8.0
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/_tsup-dts-rollup.d.ts +1597 -0
- package/dist/arc.d.ts +4 -0
- package/dist/arc.js +147 -0
- package/dist/arc.js.map +1 -0
- package/dist/audio-player.d.ts +2 -0
- package/dist/audio-player.js +119 -0
- package/dist/audio-player.js.map +1 -0
- package/dist/audio-waveform.d.ts +2 -0
- package/dist/audio-waveform.js +72 -0
- package/dist/audio-waveform.js.map +1 -0
- package/dist/canvas.d.ts +2 -0
- package/dist/canvas.js +73 -0
- package/dist/canvas.js.map +1 -0
- package/dist/chord.d.ts +4 -0
- package/dist/chord.js +230 -0
- package/dist/chord.js.map +1 -0
- package/dist/cloze.d.ts +3 -0
- package/dist/cloze.js +98 -0
- package/dist/cloze.js.map +1 -0
- package/dist/compare-table.d.ts +4 -0
- package/dist/compare-table.js +109 -0
- package/dist/compare-table.js.map +1 -0
- package/dist/deck.d.ts +3 -0
- package/dist/deck.js +231 -0
- package/dist/deck.js.map +1 -0
- package/dist/dendrogram.d.ts +3 -0
- package/dist/dendrogram.js +162 -0
- package/dist/dendrogram.js.map +1 -0
- package/dist/diagram.d.ts +2 -0
- package/dist/diagram.js +70 -0
- package/dist/diagram.js.map +1 -0
- package/dist/flashcard.d.ts +2 -0
- package/dist/flashcard.js +107 -0
- package/dist/flashcard.js.map +1 -0
- package/dist/flowchart.d.ts +4 -0
- package/dist/flowchart.js +275 -0
- package/dist/flowchart.js.map +1 -0
- package/dist/funnel.d.ts +3 -0
- package/dist/funnel.js +157 -0
- package/dist/funnel.js.map +1 -0
- package/dist/gantt.d.ts +3 -0
- package/dist/gantt.js +279 -0
- package/dist/gantt.js.map +1 -0
- package/dist/image-occlusion.d.ts +3 -0
- package/dist/image-occlusion.js +106 -0
- package/dist/image-occlusion.js.map +1 -0
- package/dist/index.d.ts +86 -0
- package/dist/index.js +4085 -2
- package/dist/index.js.map +1 -1
- package/dist/matrix.d.ts +3 -0
- package/dist/matrix.js +155 -0
- package/dist/matrix.js.map +1 -0
- package/dist/mind-map.d.ts +3 -0
- package/dist/mind-map.js +167 -0
- package/dist/mind-map.js.map +1 -0
- package/dist/org-chart.d.ts +3 -0
- package/dist/org-chart.js +215 -0
- package/dist/org-chart.js.map +1 -0
- package/dist/pyramid.d.ts +3 -0
- package/dist/pyramid.js +150 -0
- package/dist/pyramid.js.map +1 -0
- package/dist/quiz.d.ts +3 -0
- package/dist/quiz.js +128 -0
- package/dist/quiz.js.map +1 -0
- package/dist/sankey.d.ts +4 -0
- package/dist/sankey.js +190 -0
- package/dist/sankey.js.map +1 -0
- package/dist/schemas.d.ts +23 -0
- package/dist/schemas.js +2211 -4
- package/dist/schemas.js.map +1 -1
- package/dist/sequence.d.ts +4 -0
- package/dist/sequence.js +229 -0
- package/dist/sequence.js.map +1 -0
- package/dist/spaced-repetition.d.ts +3 -0
- package/dist/spaced-repetition.js +73 -0
- package/dist/spaced-repetition.js.map +1 -0
- package/dist/speech-recognition.d.ts +2 -0
- package/dist/speech-recognition.js +152 -0
- package/dist/speech-recognition.js.map +1 -0
- package/dist/sunburst.d.ts +3 -0
- package/dist/sunburst.js +205 -0
- package/dist/sunburst.js.map +1 -0
- package/dist/terminal.d.ts +2 -0
- package/dist/terminal.js +153 -0
- package/dist/terminal.js.map +1 -0
- package/dist/time-axis.d.ts +3 -0
- package/dist/time-axis.js +233 -0
- package/dist/time-axis.js.map +1 -0
- package/dist/tool-call.js +6 -1
- package/dist/tool-call.js.map +1 -1
- package/dist/tree-map.d.ts +3 -0
- package/dist/tree-map.js +171 -0
- package/dist/tree-map.js.map +1 -0
- package/dist/venn.d.ts +3 -0
- package/dist/venn.js +196 -0
- package/dist/venn.js.map +1 -0
- package/package.json +47 -3
package/dist/schemas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/primitives/button/button.schema.ts","../src/primitives/input/input.schema.ts","../src/primitives/label/label.schema.ts","../src/primitives/textarea/textarea.schema.ts","../src/primitives/checkbox/checkbox.schema.ts","../src/primitives/switch/switch.schema.ts","../src/primitives/badge/badge.schema.ts","../src/primitives/separator/separator.schema.ts","../src/components/card/card.schema.ts","../src/components/tabs/tabs.schema.ts","../src/components/accordion/accordion.schema.ts","../src/components/dialog/dialog.schema.ts","../src/components/alert-dialog/alert-dialog.schema.ts","../src/components/dropdown-menu/dropdown-menu.schema.ts","../src/components/popover/popover.schema.ts","../src/components/tooltip/tooltip.schema.ts","../src/primitives/select/select.schema.ts","../src/primitives/radio-group/radio-group.schema.ts","../src/primitives/slider/slider.schema.ts","../src/primitives/toggle/toggle.schema.ts","../src/primitives/toggle-group/toggle-group.schema.ts","../src/components/form/form.schema.ts","../src/primitives/avatar/avatar.schema.ts","../src/primitives/skeleton/skeleton.schema.ts","../src/primitives/progress/progress.schema.ts","../src/primitives/scroll-area/scroll-area.schema.ts","../src/primitives/aspect-ratio/aspect-ratio.schema.ts","../src/primitives/container/container.schema.ts","../src/primitives/stack/stack.schema.ts","../src/primitives/cluster/cluster.schema.ts","../src/primitives/grid/grid.schema.ts","../src/primitives/spacer/spacer.schema.ts","../src/components/collapsible/collapsible.schema.ts","../src/components/hover-card/hover-card.schema.ts","../src/components/context-menu/context-menu.schema.ts","../src/components/menubar/menubar.schema.ts","../src/components/navigation-menu/navigation-menu.schema.ts","../src/components/breadcrumb/breadcrumb.schema.ts","../src/components/alert/alert.schema.ts","../src/components/sonner/sonner.schema.ts","../src/components/table/table.schema.ts","../src/components/data-table/data-table.schema.ts","../src/components/pagination/pagination.schema.ts","../src/components/calendar/calendar.schema.ts","../src/components/date-picker/date-picker.schema.ts","../src/components/input-otp/input-otp.schema.ts","../src/components/command/command.schema.ts","../src/components/combobox/combobox.schema.ts","../src/components/multi-combobox/multi-combobox.schema.ts","../src/components/stepper/stepper.schema.ts","../src/components/timeline/timeline.schema.ts","../src/components/dropzone/dropzone.schema.ts","../src/components/time-picker/time-picker.schema.ts","../src/components/file-tree/file-tree.schema.ts","../src/components/color-picker/color-picker.schema.ts","../src/components/sheet/sheet.schema.ts","../src/components/drawer/drawer.schema.ts","../src/components/resizable/resizable.schema.ts","../src/components/sidebar/sidebar.schema.ts","../src/primitives/empty/empty.schema.ts","../src/primitives/loading/loading.schema.ts","../src/primitives/error-state/error-state.schema.ts","../src/primitives/tag/tag.schema.ts","../src/components/tree/tree.schema.ts","../src/components/toolbar/toolbar.schema.ts","../src/ai/attachment/attachment.schema.ts","../src/ai/message/message.schema.ts","../src/ai/message-list/message-list.schema.ts","../src/ai/composer/composer.schema.ts","../src/ai/loading-indicator/loading-indicator.schema.ts","../src/ai/suggestion/suggestion.schema.ts","../src/ai/tool-call/tool-call.schema.ts","../src/ai/reasoning/reasoning.schema.ts","../src/ai/message-actions/message-actions.schema.ts","../src/ai/citation/citation.schema.ts","../src/ai/markdown/markdown.schema.ts","../src/ai/code-block/code-block.schema.ts"],"names":[],"mappings":"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","file":"schemas.js","sourcesContent":["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\tuseWhen: \"the single most important action on the screen — exactly one per view (Save, Submit, Continue)\",\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\tuseWhen: \"the action cannot be undone without recreating data: Delete, Archive, Deactivate, Leave team, Force-quit\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"outline\",\n\t\t\t\t\tdescription: \"Bordered button with hover fill for secondary actions\",\n\t\t\t\t\tuseWhen: \"tertiary actions on a flat (non-elevated) surface; signals 'optional' next to a primary\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"secondary\",\n\t\t\t\t\tdescription: \"Muted filled button for less prominent actions\",\n\t\t\t\t\tuseWhen: \"the second-most-important action next to a primary CTA: Cancel, Save Draft, Skip\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"ghost\",\n\t\t\t\t\tdescription: \"Transparent button, background appears on hover\",\n\t\t\t\t\tuseWhen: \"low-emphasis action inside a list, toolbar, or row where chrome should disappear at rest\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"link\",\n\t\t\t\t\tdescription: \"Styled as a hyperlink with underline on hover, no padding\",\n\t\t\t\t\tuseWhen: \"an inline action inside flowing text, or a 'Learn more' affordance in an empty state\",\n\t\t\t\t},\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{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Standard size (h-10, px-4)\",\n\t\t\t\t\tuseWhen: \"default everywhere; the only size you need on most surfaces\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"sm\",\n\t\t\t\t\tdescription: \"Compact size (h-9, px-3)\",\n\t\t\t\t\tuseWhen: \"buttons living inside a row, toolbar, or table cell where vertical density matters\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"lg\",\n\t\t\t\t\tdescription: \"Large size (h-11, px-8, text-base)\",\n\t\t\t\t\tuseWhen: \"the single hero CTA on a marketing page, pricing card, or empty-state action\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"icon\",\n\t\t\t\t\tdescription: \"Square icon-only size (h-10, w-10)\",\n\t\t\t\t\tuseWhen: \"icon-only actions (close, settings, more). Always pair with aria-label\",\n\t\t\t\t},\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\tcomposition: [\"form-action\"],\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\tcomposition: [\"showcase\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Destructive confirm in dialog\",\n\t\t\tdescription: \"The canonical destructive action, paired with Cancel inside an alert-dialog footer\",\n\t\t\tcode: '<AlertDialog>\\n <AlertDialogTrigger asChild>\\n <Button variant=\"outline\">Delete account</Button>\\n </AlertDialogTrigger>\\n <AlertDialogContent>\\n <AlertDialogHeader>\\n <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n <AlertDialogDescription>This action cannot be undone.</AlertDialogDescription>\\n </AlertDialogHeader>\\n <AlertDialogFooter>\\n <AlertDialogCancel>Cancel</AlertDialogCancel>\\n <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\\n </AlertDialogFooter>\\n </AlertDialogContent>\\n</AlertDialog>',\n\t\t\tcomposition: [\"dialog\", \"alert-dialog\", \"destructive\", \"confirm\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Form action pair\",\n\t\t\tdescription: \"Primary submit + secondary cancel — the universal end-of-form pattern\",\n\t\t\tcode: '<div className=\"flex justify-end gap-2\">\\n <Button variant=\"secondary\" type=\"button\">Cancel</Button>\\n <Button type=\"submit\">Save changes</Button>\\n</div>',\n\t\t\tcomposition: [\"form\", \"form-action\"],\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\tcomposition: [\"form-action\", \"async\"],\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\tcomposition: [\"navigation\", \"as-child\"],\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\tcomposition: [\"icon-only\", \"toolbar\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Leading icon\",\n\t\t\tdescription: \"Button with an icon before its label — clarifies intent without sacrificing readability\",\n\t\t\tcode: '<Button>\\n <PlusIcon />\\n Add member\\n</Button>',\n\t\t\tcomposition: [\"icon-leading\", \"form-action\"],\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\"Nesting interactive elements inside asChild button\",\n\t\t\t\"Using <Button> with plain onClick for navigation instead of <Button asChild><a href=...></a></Button> — breaks middle-click, cmd-click, and right-click → 'open in new tab', and skips the browser history entry\",\n\t\t\t\"Using <Button variant='destructive'> for recoverable actions like 'Reset filters' — reserve destructive for delete/archive/leave; use 'secondary' or 'ghost' for resets\",\n\t\t\t\"Using <Button size='icon'> without an aria-label — screen readers have nothing to announce; always pair icon-only buttons with aria-label or visible text\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using <Button> to flip a boolean state on/off (volume mute, dark mode, airplane mode)\",\n\t\t\t\tinsteadUse: \"switch\",\n\t\t\t\twhy: \"Switch communicates the on/off semantic to assistive tech (role=switch + aria-checked). A button announces 'press' which loses the state semantic.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Button> as a tab to switch between sibling content panels\",\n\t\t\t\tinsteadUse: \"tabs\",\n\t\t\t\twhy: \"Tabs ship role=tablist + roving tabindex + arrow-key navigation. Buttons in a row don't — assistive tech will announce them as N independent actions instead of a tab group.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Button> to expand/collapse a content section\",\n\t\t\t\tinsteadUse: \"accordion\",\n\t\t\t\twhy: \"Accordion handles aria-expanded / aria-controls automatically and ships the chevron rotation animation. A bare button doing the same job is missing those affordances.\",\n\t\t\t},\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{\n\t\t\ttitle: \"Basic\",\n\t\t\tdescription: \"Switch with label\",\n\t\t\tcode: '<div className=\"flex items-center gap-2\">\\n <Switch id=\"airplane\" />\\n <Label htmlFor=\"airplane\">Airplane Mode</Label>\\n</div>',\n\t\t\tcomposition: [\"form\", \"boolean\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Settings row\",\n\t\t\tdescription: \"Right-aligned switch in a settings list — the canonical Apple-style preference UI\",\n\t\t\tcode: '<div className=\"flex items-center justify-between py-3\">\\n <div>\\n <Label htmlFor=\"notifications\">Email notifications</Label>\\n <p className=\"text-sm text-muted-foreground\">Daily digest, mentions, and replies</p>\\n </div>\\n <Switch id=\"notifications\" />\\n</div>',\n\t\t\tcomposition: [\"settings\", \"preference-row\", \"boolean\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for instant-effect boolean settings: dark mode, notifications on/off, feature toggles, airplane mode. The change takes effect immediately — no submit step.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for form fields that get submitted in a batch (use Checkbox). Don't use for mutually exclusive options (use RadioGroup). Don't use to filter a list of options (use Toggle or ToggleGroup).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Switch for form fields that need explicit submit\",\n\t\t\t\"Missing <Label> for the switch — without htmlFor/id pairing, screen readers announce the toggle without context\",\n\t\t\t\"Putting the switch label INSIDE the switch instead of next to it\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Switch inside a form that gets submitted with a Save button\",\n\t\t\t\tinsteadUse: \"checkbox\",\n\t\t\t\twhy: \"Switch implies the change applies immediately. A Save button suggests batch submission — that's Checkbox semantics. Mixing them confuses the user about whether they need to click Save.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Putting two Switches side-by-side to choose between mutually exclusive options\",\n\t\t\t\tinsteadUse: \"radio-group\",\n\t\t\t\twhy: \"Switches don't represent 'pick one of N'. RadioGroup announces the group + the active selection to assistive tech and prevents the user from selecting both.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"checkbox\", \"label\", \"form\", \"toggle\"],\n\t\taccessibilityNotes:\n\t\t\t\"Always pair with Label (htmlFor / id). Radix handles role='switch' + aria-checked + keyboard activation (Space).\",\n\t\ttokenBudget: 350,\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 header, content, and footer\",\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\tcomposition: [\"showcase\", \"settings\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Stat card\",\n\t\t\tdescription: \"Single-metric dashboard card — title + large number + trend\",\n\t\t\tcode: '<Card>\\n <CardHeader className=\"pb-2\">\\n <CardDescription>Total revenue</CardDescription>\\n <CardTitle className=\"text-3xl tabular-nums\">$45,231.89</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <p className=\"text-xs text-muted-foreground\">+20.1% from last month</p>\\n </CardContent>\\n</Card>',\n\t\t\tcomposition: [\"dashboard\", \"stat\", \"metric\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Form section card\",\n\t\t\tdescription: \"Card framing a form section, with submit pinned to the footer\",\n\t\t\tcode: '<Card>\\n <CardHeader>\\n <CardTitle>Profile</CardTitle>\\n <CardDescription>Update your account details.</CardDescription>\\n </CardHeader>\\n <CardContent className=\"space-y-4\">\\n <Input placeholder=\"Display name\" />\\n <Input type=\"email\" placeholder=\"Email\" />\\n </CardContent>\\n <CardFooter className=\"justify-end gap-2\">\\n <Button variant=\"secondary\">Cancel</Button>\\n <Button type=\"submit\">Save</Button>\\n </CardFooter>\\n</Card>',\n\t\t\tcomposition: [\"form\", \"settings\", \"form-action\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to group related content with a visual boundary: settings panels, product listings, dashboard widgets, form sections, content previews. Each card should feel like one self-contained unit.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for full-page layouts (use plain divs). Don't use a card to hold one tiny thing (use a Badge or inline content). Don't use a card as a button — use Button with asChild.\",\n\t\tcommonMistakes: [\n\t\t\t\"Nesting cards\",\n\t\t\t\"Using Card when a simple div with border would suffice\",\n\t\t\t\"Forgetting CardContent padding when placing forms inside\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Nesting <Card> inside <Card> to group sub-sections\",\n\t\t\t\tinsteadUse: \"separator\",\n\t\t\t\twhy: \"Two raised surfaces inside each other muddles the elevation model — readers can't tell which container 'owns' an action. Use Separator + extra padding within a single Card to visually divide sections, or split into sibling Cards.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Putting an entire Card inside a <button> or <a> to make it clickable\",\n\t\t\t\tinsteadUse: \"button\",\n\t\t\t\twhy: \"Browsers don't fully support nested interactive content; screen readers announce the full card text every focus. Use <Card asChild><a>...</a></Card> patterns or move just the action inside CardFooter.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Card for a top-bar / app-shell wrapper\",\n\t\t\t\tinsteadUse: \"container\",\n\t\t\t\twhy: \"Card adds elevation chrome that fights with the chrome of the app shell. Use Container for layout boundaries and reserve Card for the content INSIDE the layout.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"button\", \"separator\", \"container\", \"stack\"],\n\t\taccessibilityNotes:\n\t\t\t\"Card is a div by default. Add role='region' and aria-labelledby (pointing to CardTitle's id) for landmark cards. CardTitle renders h3 — ensure heading hierarchy is correct on the page.\",\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: \"Edit profile\",\n\t\t\tdescription: \"Dialog wrapping a short form — the canonical 'edit detail in place' pattern\",\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\tcomposition: [\"form\", \"edit-in-place\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Confirm dialog\",\n\t\t\tdescription: \"Non-destructive confirmation with primary + secondary actions\",\n\t\t\tcode: '<Dialog>\\n <DialogTrigger asChild>\\n <Button>Publish post</Button>\\n </DialogTrigger>\\n <DialogContent>\\n <DialogHeader>\\n <DialogTitle>Publish post?</DialogTitle>\\n <DialogDescription>Your followers will be notified by email.</DialogDescription>\\n </DialogHeader>\\n <DialogFooter>\\n <DialogClose asChild>\\n <Button variant=\"secondary\">Cancel</Button>\\n </DialogClose>\\n <Button>Publish</Button>\\n </DialogFooter>\\n </DialogContent>\\n</Dialog>',\n\t\t\tcomposition: [\"confirm\", \"form-action\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for focused, interruptive tasks: short forms, confirmations, 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). Don't use for mobile-bottom-sheet patterns (use Drawer).\",\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\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using <Dialog> for irreversible actions like Delete account\",\n\t\t\t\tinsteadUse: \"alert-dialog\",\n\t\t\t\twhy: \"AlertDialog uses role='alertdialog' which forces the user to interact (cannot click-outside to dismiss) and announces destructively to screen readers. Dialog can be dismissed by clicking the overlay — the wrong default for delete confirmations.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Dialog> for a long multi-step wizard\",\n\t\t\t\tinsteadUse: \"stepper\",\n\t\t\t\twhy: \"Modals trap focus and disable scroll on the page below — that fights long content. Multi-step flows belong on a full page with a Stepper for orientation.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Dialog> for the mobile-only 'pull up from bottom' interaction\",\n\t\t\t\tinsteadUse: \"drawer\",\n\t\t\t\twhy: \"Drawer is purpose-built for the bottom-sheet gesture (swipe handle, drag-to-dismiss). Dialog will technically work but loses the native-feeling affordance.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Putting two equal-weight primary buttons in DialogFooter ('Save and continue' + 'Save and close')\",\n\t\t\t\tinsteadUse: \"button\",\n\t\t\t\twhy: \"Two primaries dilute the call to action — users hesitate. Pick one primary; demote the other to secondary or split them via a DropdownMenu attached to a single Button.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"popover\", \"sheet\", \"drawer\"],\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: \"Volume control with display\",\n\t\t\tdescription: \"Single-thumb slider paired with the live numeric value — the canonical 'continuous range with feedback' pattern\",\n\t\t\tcode: 'function VolumeControl() {\\n const [value, setValue] = React.useState([60]);\\n return (\\n <div className=\"space-y-2\">\\n <div className=\"flex justify-between text-sm\">\\n <Label htmlFor=\"vol\">Volume</Label>\\n <span className=\"text-muted-foreground tabular-nums\">{value[0]}%</span>\\n </div>\\n <Slider id=\"vol\" value={value} onValueChange={setValue} max={100} step={1} aria-label=\"Volume\" />\\n </div>\\n );\\n}',\n\t\t\tcomposition: [\"form\", \"settings\", \"continuous-range\", \"with-display\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Price-range filter\",\n\t\t\tdescription: \"Two-thumb range slider with per-thumb labels — the canonical e-commerce filter UI\",\n\t\t\tcode: '<Slider\\n defaultValue={[20, 80]}\\n max={100}\\n step={1}\\n thumbLabels={[\"Minimum price\", \"Maximum price\"]}\\n/>',\n\t\t\tcomposition: [\"filter\", \"range\", \"ecommerce\"],\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). Don't use for boolean on/off (use Switch).\",\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\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Slider with min=0/max=1 to represent on/off\",\n\t\t\t\tinsteadUse: \"switch\",\n\t\t\t\twhy: \"Slider is 'continuous range'. Switch is 'boolean'. Assistive tech announces them differently — Slider says '0 of 1, 1 of 1'; Switch says 'on / off'. Always reach for Switch when the values are binary.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Slider for picking a number from a small discrete set (1–5 rating, 'pages per row')\",\n\t\t\t\tinsteadUse: \"radio-group\",\n\t\t\t\twhy: \"Sliders make exact target values hard to land on. RadioGroup gives 5 buttons that name themselves and are easier with assistive tech. Reach for Slider only when 50+ values are valid.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Slider for the user to type a known exact number (price, age, count)\",\n\t\t\t\tinsteadUse: \"input\",\n\t\t\t\twhy: \"Drag-to-set is slower and less accurate than typing. Use <Input type='number'> when the user has the exact value in mind.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"input\", \"switch\", \"radio-group\"],\n\t\taccessibilityNotes:\n\t\t\t\"Arrow keys step by step, Home/End jump to min/max, PageUp/PageDown step larger. Radix handles aria-valuemin/max/now. Each thumb has its own accessible name: explicit via thumbLabels[i], else mirrored from the Root's aria-label (single thumb) or indexed '(i of N)' fallback (range). Add aria-label / aria-labelledby on the Root when there's no visible label.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"slider\", \"range\", \"form\", \"numeric\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toggleSchema: ComponentSchemaDefinition = {\n\tname: \"toggle\",\n\tdisplayName: \"Toggle\",\n\tdescription:\n\t\t\"A two-state button that stays pressed when toggled on. Used for formatting toolbars (bold/italic) or option toggles.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"pressed\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled pressed state\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultPressed\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default pressed state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onPressedChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on pressed change: (pressed: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Toggle size\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the toggle\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Visual variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Transparent ghost-style toggle\" },\n\t\t\t\t{ value: \"outline\", description: \"Bordered toggle\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Size variants\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Standard size (h-10)\" },\n\t\t\t\t{ value: \"sm\", description: \"Compact size (h-9)\" },\n\t\t\t\t{ value: \"lg\", description: \"Large size (h-11)\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Toggle label or icon\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-toggle\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"accent\", \"accent-foreground\", \"input\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic toggle\",\n\t\t\tdescription: \"Bold text toggle\",\n\t\t\tcode: '<Toggle aria-label=\"Toggle bold\">B</Toggle>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for binary on/off actions that persist: toolbar formatting buttons (bold, italic), layout mode switches, filter toggles. Not submitted as form data.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for instant settings (use Switch). Don't use for form boolean fields (use Checkbox). Don't use for choosing one of many (use ToggleGroup).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using for form field submission (use Checkbox instead)\",\n\t\t\t\"Forgetting aria-label on icon-only toggles\",\n\t\t\t\"Using Toggle when ToggleGroup's single-select mode is needed\",\n\t\t],\n\t\trelatedComponents: [\"toggle-group\", \"switch\", \"checkbox\", \"button\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets aria-pressed correctly. Icon-only toggles MUST have aria-label. Space/Enter toggles state.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"toggle\", \"button\", \"pressed\", \"two-state\", \"toolbar\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toggleGroupSchema: ComponentSchemaDefinition = {\n\tname: \"toggle-group\",\n\tdisplayName: \"Toggle Group\",\n\tdescription:\n\t\t\"A set of toggles where one or multiple can be pressed. Inherits Toggle's variant/size via context. Useful for alignment/formatting toolbars.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Single allows one pressed at a time, multiple allows many\",\n\t\t\tenumValues: [\"single\", \"multiple\"],\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Controlled pressed value(s). string when type='single', string[] when type='multiple'\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultValue\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Default pressed value(s). string when type='single', string[] when type='multiple'\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback on value change\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Inherited by all ToggleGroupItems\",\n\t\t\tenumValues: [\"default\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Inherited by all ToggleGroupItems\",\n\t\t\tenumValues: [\"default\", \"sm\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable all items\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"ToggleGroupItem elements\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\n\t\t\t\"@radix-ui/react-toggle-group\",\n\t\t\t\"@radix-ui/react-toggle\",\n\t\t\t\"class-variance-authority\",\n\t\t\t\"clsx\",\n\t\t\t\"tailwind-merge\",\n\t\t],\n\t\tinternal: [\"toggle\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"accent\", \"accent-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Text alignment group\",\n\t\t\tdescription: \"Single-select toggle group for text alignment\",\n\t\t\tcode: '<ToggleGroup type=\"single\" defaultValue=\"left\">\\n <ToggleGroupItem value=\"left\" aria-label=\"Left align\">L</ToggleGroupItem>\\n <ToggleGroupItem value=\"center\" aria-label=\"Center align\">C</ToggleGroupItem>\\n <ToggleGroupItem value=\"right\" aria-label=\"Right align\">R</ToggleGroupItem>\\n</ToggleGroup>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Formatting group\",\n\t\t\tdescription: \"Multiple-select toggle group for text formatting\",\n\t\t\tcode: '<ToggleGroup type=\"multiple\">\\n <ToggleGroupItem value=\"bold\" aria-label=\"Bold\">B</ToggleGroupItem>\\n <ToggleGroupItem value=\"italic\" aria-label=\"Italic\">I</ToggleGroupItem>\\n <ToggleGroupItem value=\"underline\" aria-label=\"Underline\">U</ToggleGroupItem>\\n</ToggleGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for toolbar toggles where users pick one of many (type='single') or multiple (type='multiple'): text alignment, formatting (bold/italic/underline), view modes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for form radio fields (use RadioGroup). Don't use for standalone two-state buttons (use Toggle). Don't use for navigation (use Tabs).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting the type prop (required)\",\n\t\t\t\"Missing aria-label on icon-only items\",\n\t\t\t\"Using for form submission without name prop\",\n\t\t],\n\t\trelatedComponents: [\"toggle\", \"radio-group\", \"tabs\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA toolbar pattern with roving focus. Arrow keys move focus, Space/Enter toggles. Each icon-only item needs aria-label.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"toggle-group\", \"toolbar\", \"formatting\", \"alignment\", \"multi-select\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const formSchema: ComponentSchemaDefinition = {\n\tname: \"form\",\n\tdisplayName: \"Form\",\n\tdescription:\n\t\t\"A form primitive built on react-hook-form + zod. Provides Form/FormField/FormItem/FormLabel/FormControl/FormDescription/FormMessage with automatic aria wiring and error display.\",\n\tcategory: \"component\",\n\tsubcategory: \"forms\",\n\tprops: [],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"FormField + FormItem subtrees\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\n\t\t\t\"react-hook-form\",\n\t\t\t\"@hookform/resolvers\",\n\t\t\t\"zod\",\n\t\t\t\"@radix-ui/react-label\",\n\t\t\t\"@radix-ui/react-slot\",\n\t\t\t\"clsx\",\n\t\t\t\"tailwind-merge\",\n\t\t],\n\t\tinternal: [\"label\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"destructive\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Zod-validated form\",\n\t\t\tdescription: \"Username form with react-hook-form + zod\",\n\t\t\tcode: 'import { zodResolver } from \"@hookform/resolvers/zod\";\\nimport { useForm } from \"react-hook-form\";\\nimport { z } from \"zod\";\\n\\nconst formSchema = z.object({\\n username: z.string().min(2, \"Username must be at least 2 characters\"),\\n});\\n\\nfunction ProfileForm() {\\n const form = useForm({\\n resolver: zodResolver(formSchema),\\n defaultValues: { username: \"\" },\\n });\\n\\n return (\\n <Form {...form}>\\n <form onSubmit={form.handleSubmit((values) => console.log(values))} className=\"space-y-6\">\\n <FormField\\n control={form.control}\\n name=\"username\"\\n render={({ field }) => (\\n <FormItem>\\n <FormLabel>Username</FormLabel>\\n <FormControl><Input placeholder=\"shadcn\" {...field} /></FormControl>\\n <FormDescription>Your public display name.</FormDescription>\\n <FormMessage />\\n </FormItem>\\n )}\\n />\\n <Button type=\"submit\">Submit</Button>\\n </form>\\n </Form>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any form that needs validation, per-field errors, and accessible aria-describedby/aria-invalid wiring. Pair with zod schemas via @hookform/resolvers/zod.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for trivial single-input forms that don't need validation (render a plain Input + Button). Don't use for server actions forms in Next.js 16 (consider useActionState + useFormStatus instead).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to spread {...field} into the form control (connects value/onChange)\",\n\t\t\t\"Putting FormLabel outside FormItem (loses htmlFor wiring)\",\n\t\t\t\"Using useForm without a resolver when zod validation is desired\",\n\t\t\t\"Calling form.handleSubmit without a callback\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"textarea\", \"select\", \"checkbox\", \"radio-group\", \"switch\"],\n\t\taccessibilityNotes:\n\t\t\t\"FormControl automatically wires id, aria-describedby, and aria-invalid. FormLabel uses htmlFor matching the control id. Errors are announced via FormMessage with matching aria-describedby.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"form\", \"react-hook-form\", \"zod\", \"validation\", \"field\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const avatarSchema: ComponentSchemaDefinition = {\n\tname: \"avatar\",\n\tdisplayName: \"Avatar\",\n\tdescription:\n\t\t\"A user profile image with a fallback (usually initials) rendered when the image is missing or fails to load. Built on Radix UI Avatar — AvatarFallback accepts a delayMs prop to avoid flashing during fast loads.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"display\",\n\tprops: [{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the root\" }],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"AvatarImage + AvatarFallback\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-avatar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic avatar\",\n\t\t\tdescription: \"Image with initials fallback\",\n\t\t\tcode: '<Avatar>\\n <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\\n <AvatarFallback>CN</AvatarFallback>\\n</Avatar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for user profile images: headers, comments, user lists. Always include AvatarFallback for accessibility and loading states.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for decorative icons (use an <img> or icon component). Don't use for product/brand images (use <img> with proper sizing).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing alt text on AvatarImage\",\n\t\t\t\"No AvatarFallback — shows nothing when image is missing or errors\",\n\t\t\t\"Omitting delayMs on AvatarFallback causes flicker for fast-loading images\",\n\t\t\t\"Using for non-circular images (override rounded-full if needed)\",\n\t\t],\n\t\trelatedComponents: [\"badge\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"AvatarImage requires alt text. AvatarFallback renders initials or an icon — ensure the visible text is meaningful.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"avatar\", \"profile\", \"user\", \"image\", \"display\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const skeletonSchema: ComponentSchemaDefinition = {\n\tname: \"skeleton\",\n\tdisplayName: \"Skeleton\",\n\tdescription: \"A pulsing placeholder shown while content is loading. Pair with explicit dimensions.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Width/height and any additional styling via Tailwind classes\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Card skeleton\",\n\t\t\tdescription: \"Avatar + two lines of text placeholder\",\n\t\t\tcode: '<div className=\"flex items-center gap-4\">\\n <Skeleton className=\"h-12 w-12 rounded-full\" />\\n <div className=\"space-y-2\">\\n <Skeleton className=\"h-4 w-[250px]\" />\\n <Skeleton className=\"h-4 w-[200px]\" />\\n </div>\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use during async data loads to show the shape of forthcoming content. Match the dimensions and layout of the real content to avoid layout shift on load.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for fast operations (<200ms — users prefer a brief spinner or nothing). Don't use as a permanent empty state (use proper empty-state UI).\",\n\t\tcommonMistakes: [\n\t\t\t\"Skeleton dimensions don't match loaded content — causes layout shift\",\n\t\t\t\"Leaving Skeleton visible for long loads without a timeout/retry\",\n\t\t\t\"Using Skeleton for interactive elements users might tap\",\n\t\t],\n\t\trelatedComponents: [\"progress\", \"avatar\", \"card\", \"table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Add aria-busy='true' on the loading container and a visually hidden status (aria-live='polite') to announce load completion to screen readers.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"skeleton\", \"loading\", \"placeholder\", \"shimmer\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const progressSchema: ComponentSchemaDefinition = {\n\tname: \"progress\",\n\tdisplayName: \"Progress\",\n\tdescription: \"A horizontal progress bar showing completion from 0 to 100%. Built on Radix UI Progress.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Current value (0–max). Omit to render at 0% (both visually and in ARIA — the component clamps undefined to 0). Use Skeleton for indeterminate loading states.\",\n\t\t},\n\t\t{ name: \"max\", type: \"number\", required: false, default: 100, description: \"Maximum value\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-progress\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"primary\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic progress\",\n\t\t\tdescription: \"At 60%\",\n\t\t\tcode: \"<Progress value={60} />\",\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for deterministic progress where completion is measurable: file uploads, multi-step form completion, batch processing. Pair with a visible numeric label where precision matters.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for indeterminate waits (use a spinner or Skeleton). Don't use for completion over long time-spans without a human-readable ETA.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing 0–1 float instead of 0–100\",\n\t\t\t\"Not labeling the progress (users can't tell what's progressing)\",\n\t\t\t\"Updating too frequently (>30fps) — wastes renders\",\n\t\t],\n\t\trelatedComponents: [\"skeleton\", \"slider\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix wires role='progressbar', aria-valuenow, aria-valuemin, aria-valuemax. Pair with a visible label or aria-label for context.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"progress\", \"loading\", \"bar\", \"feedback\", \"determinate\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const scrollAreaSchema: ComponentSchemaDefinition = {\n\tname: \"scroll-area\",\n\tdisplayName: \"Scroll Area\",\n\tdescription: \"A scrollable region with custom-styled scrollbars that match the design system. Content must be explicitly sized.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"hover\",\n\t\t\tdescription: \"When scrollbars are visible\",\n\t\t\tenumValues: [\"auto\", \"always\", \"scroll\", \"hover\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Set dimensions via Tailwind (e.g. h-72 w-48)\" },\n\t\t{\n\t\t\tname: \"viewportTabIndex\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"tabIndex applied to the scroll viewport. Defaults to 0 so keyboard users can scroll without a pointer; pass -1 to skip the viewport in the tab order when wrapping decorative or already-keyboard-reachable content.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Any content — will be wrapped in a scrollable viewport\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-scroll-area\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Fixed-height list\",\n\t\t\tdescription: \"50 items in a 200px-tall scrollable region\",\n\t\t\tcode: '<ScrollArea className=\"h-[200px] w-[350px] rounded-md border p-4\">\\n {Array.from({ length: 50 }).map((_, i) => (\\n <div key={i} className=\"text-sm\">Item {i + 1}</div>\\n ))}\\n</ScrollArea>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when you need styled scrollbars that match the design system — sidebars, code blocks, large lists in dialogs. Must have explicit dimensions (height/width).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the whole page (use native browser scrollbars). Don't use for content that should grow freely (omit the ScrollArea and use overflow-auto directly).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set height/width — scrollbars don't appear\",\n\t\t\t\"Using for the whole page\",\n\t\t\t\"Nesting ScrollAreas (confusing UX)\",\n\t\t\t\"Wrapping decorative or already-keyboard-reachable content without setting viewportTabIndex={-1} — adds an unnecessary tab stop\",\n\t\t],\n\t\trelatedComponents: [],\n\t\taccessibilityNotes:\n\t\t\t\"The viewport is keyboard-focusable by default (viewportTabIndex=0) so users can scroll long content via arrow keys / PgUp / PgDn / Home / End without a pointer. Pass viewportTabIndex={-1} when the contents are already in the tab order or purely decorative. For very long lists, consider pagination or virtualization.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"scroll-area\", \"scroll\", \"overflow\", \"scrollbar\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const aspectRatioSchema: ComponentSchemaDefinition = {\n\tname: \"aspect-ratio\",\n\tdisplayName: \"Aspect Ratio\",\n\tdescription: \"Constrain children to a specific width-to-height ratio (e.g. 16/9 for video, 1/1 for square).\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"ratio\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"Width-to-height ratio (e.g. 16/9 ≈ 1.778)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Content to constrain (usually an image or iframe)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-aspect-ratio\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"16:9 video thumbnail\",\n\t\t\tdescription: \"Image constrained to widescreen ratio\",\n\t\t\tcode: '<AspectRatio ratio={16 / 9} className=\"bg-muted\">\\n <img src=\"/hero.jpg\" alt=\"Hero\" className=\"h-full w-full rounded-md object-cover\" />\\n</AspectRatio>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when an image or iframe must maintain a specific ratio regardless of container width: video thumbnails, product images, hero banners, embeds.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for content with known fixed dimensions (just use width/height). Don't use for text content (ratios don't make sense for prose).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing ratio as a string instead of a number (use {16/9}, not '16/9')\",\n\t\t\t\"Forgetting that children must fill 100% width + height (add object-cover or similar)\",\n\t\t],\n\t\trelatedComponents: [\"card\", \"avatar\", \"skeleton\"],\n\t\taccessibilityNotes:\n\t\t\t\"AspectRatio is purely structural. Ensure inner <img> has alt text and inner <iframe> has a descriptive title.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"aspect-ratio\", \"layout\", \"image\", \"video\", \"ratio\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const containerSchema: ComponentSchemaDefinition = {\n\tname: \"container\",\n\tdisplayName: \"Container\",\n\tdescription:\n\t\t\"Centered max-width wrapper that constrains content to readable widths. Sizes map to `--container-*` prose-width tokens; padding maps to `--space-*`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"lg\",\n\t\t\tdescription:\n\t\t\t\t\"Max-width preset bound to `--container-*` tokens (sm=33rem, md=40rem, lg=50rem, xl=66rem, full=100%).\",\n\t\t\tenumValues: [\"sm\", \"md\", \"lg\", \"xl\", \"full\"],\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Horizontal padding bound to `--space-*` tokens (none=0, sm=0.75rem, md=1rem, lg=2rem).\",\n\t\t\tenumValues: [\"none\", \"sm\", \"md\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"asChild\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Render as a different element via Radix `Slot`. Use to render as `<main>`, `<section>`, etc. for landmark semantics.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Max-width preset bound to `--container-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"33rem (≈530px) — narrow column for short content.\" },\n\t\t\t\t{ value: \"md\", description: \"40rem (≈640px) — comfortable reading width.\" },\n\t\t\t\t{ value: \"lg\", description: \"50rem (≈800px) — default; standard article width.\" },\n\t\t\t\t{ value: \"xl\", description: \"66rem (≈1056px) — wider canvas for dashboards or marketing.\" },\n\t\t\t\t{ value: \"full\", description: \"100% — disable max-width clamp.\" },\n\t\t\t],\n\t\t\tdefault: \"lg\",\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\tdescription: \"Horizontal padding bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"none\", description: \"0 — flush to container edges.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.75rem — tight gutter.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard reading gutter.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — generous gutter for marketing pages.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Page content to constrain — typically a section, article, or grid.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"@radix-ui/react-slot\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\n\t\t\"--container-sm\",\n\t\t\"--container-md\",\n\t\t\"--container-lg\",\n\t\t\"--container-xl\",\n\t\t\"--space-3\",\n\t\t\"--space-4\",\n\t\t\"--space-8\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Reading-width article\",\n\t\t\tdescription: \"lg size (50rem) + md padding for an article body.\",\n\t\t\tcode: '<Container size=\"lg\" padding=\"md\">\\n <article>...</article>\\n</Container>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Full-width hero\",\n\t\t\tdescription: \"Use size=full when you want the section to span the viewport.\",\n\t\t\tcode: '<Container size=\"full\" padding=\"none\">\\n <Hero />\\n</Container>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to constrain page content to readable widths. Pair with `Stack` or `Grid` inside for vertical/grid layouts. Default for any centered article, settings page, or marketing section.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use inside another `Container` (double-clamping). Don't use as a drop-in for `<main>` semantics — it's a layout primitive, not a landmark. For full-bleed sections (edge-to-edge banners), pass `size=\\\"full\\\" padding=\\\"none\\\"`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Wrapping a `Container` in another `Container` and getting an unexpectedly narrow column\",\n\t\t\t\"Using `padding=\\\"none\\\"` and forgetting that children still need their own gutter — the parent contributes nothing\",\n\t\t\t\"Treating `lg` as the largest size — `xl` (66rem) and `full` are bigger\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"cluster\"],\n\t\taccessibilityNotes:\n\t\t\t\"Container is presentational. Wrap in a semantic landmark (`<main>`, `<section>`, `<article>`) when the page structure needs it; Container itself renders a plain `<div>`.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"container\", \"layout\", \"wrapper\", \"max-width\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const stackSchema: ComponentSchemaDefinition = {\n\tname: \"stack\",\n\tdisplayName: \"Stack\",\n\tdescription:\n\t\t\"Vertical flex flow with token-bound gap. The headless equivalent of `<div className=\\\"flex flex-col gap-X\\\">` with consistent spacing scale.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Vertical spacing between children, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Vertical gap between children, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grouping.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — section-level spacing.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Children align to left edge.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Children align to right edge.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — children fill container width.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — children pack to top.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Children pack to bottom.\" },\n\t\t\t\t{ value: \"between\", description: \"First child to top, last to bottom, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to stack vertically.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Form sections\",\n\t\t\tdescription: \"Lg gap separates labelled groups; nested Stack with sm gap groups label+input.\",\n\t\t\tcode: '<Stack gap=\"lg\">\\n <Stack gap=\"sm\"><Label>Email</Label><Input /></Stack>\\n <Stack gap=\"sm\"><Label>Password</Label><Input type=\"password\" /></Stack>\\n <Button>Submit</Button>\\n</Stack>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Centered hero\",\n\t\t\tdescription: \"Center children horizontally for a centered call-to-action stack.\",\n\t\t\tcode: '<Stack gap=\"md\" align=\"center\">\\n <h1>Title</h1>\\n <p>Subtitle</p>\\n <Button>Get started</Button>\\n</Stack>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use anywhere you'd write `flex flex-col gap-X`. Default for vertical lists of dissimilar items (label + input + helper text), section bodies, sidebar items, button groups stacked vertically.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for tabular data — use `<table>` or DataTable. Don't use for grid-like layouts — use `Grid`. Don't reach for `Stack` when a single child needs no spacing — just render the child.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `gap=\\\"md\\\"` then adding `mt-*` / `space-y-*` on individual children — pick one spacing system\",\n\t\t\t\"Using `align=\\\"center\\\"` and wondering why children expand to full width — that's the `stretch` default for cross-axis\",\n\t\t\t\"Nesting Stack inside Stack with the same gap when one Stack with two children would suffice\",\n\t\t],\n\t\trelatedComponents: [\"cluster\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Stack is presentational. Wrap stacked navigation links in a `<nav>`, stacked form fields in a `<form>`, etc. — Stack does not contribute landmark semantics.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"stack\", \"layout\", \"flex\", \"column\", \"vertical\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const clusterSchema: ComponentSchemaDefinition = {\n\tname: \"cluster\",\n\tdisplayName: \"Cluster\",\n\tdescription:\n\t\t\"Horizontal flex flow with wrap and token-bound gap. Use for tag lists, button rows, breadcrumbs, and any group of equally-weighted inline items.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Gap between items, bound to `--gap-*` tokens. Applies to both row and column gaps when wrapping.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"center\",\n\t\t\tdescription:\n\t\t\t\t\"Cross-axis alignment (CSS `align-items`). `baseline` aligns text-baselines for mixed-size siblings; `stretch` makes items fill row height (useful for wrap-card layouts).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\", \"baseline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between items, bound to `--gap-*` tokens (applies to row + column gaps when wrapping).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight chip group.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — section-scale spacing.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Items align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Default — items center vertically in the row.\" },\n\t\t\t\t{ value: \"end\", description: \"Items align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Items fill row height — use for wrap layouts of equal-height cards.\" },\n\t\t\t\t{ value: \"baseline\", description: \"Text-baselines align across mixed-size siblings.\" },\n\t\t\t],\n\t\t\tdefault: \"center\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — items pack to start of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Items center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Items pack to end of row.\" },\n\t\t\t\t{ value: \"between\", description: \"First item flush left, last flush right, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to lay out horizontally with wrap.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Tag chips\",\n\t\t\tdescription: \"Small gap, wraps when overflowing the row.\",\n\t\t\tcode: '<Cluster gap=\"sm\">\\n {tags.map((t) => <Badge key={t}>{t}</Badge>)}\\n</Cluster>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Action bar\",\n\t\t\tdescription: \"Right-aligned buttons inside a panel footer.\",\n\t\t\tcode: '<Cluster gap=\"sm\" justify=\"end\">\\n <Button variant=\"ghost\">Cancel</Button>\\n <Button>Save</Button>\\n</Cluster>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any horizontal row of items that should wrap when space runs out: tag clouds, breadcrumbs, button rows, social-link icon strips, inline metadata badges. Pick `Cluster` over `flex` when you want predictable wrap + gap behavior.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for two-element rows where you need precise positional control (left/right) — use `Stack` rotated or a flex with `justify-between` directly. Don't use for grid-aligned layouts where columns must line up across rows — use `Grid`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting that `Cluster` wraps — adding `flex-nowrap` defeats the purpose; if you don't want wrap, use a flex row or `Stack` rotated\",\n\t\t\t\"Setting `align=\\\"baseline\\\"` for icon+text rows where the icon's bbox doesn't have a baseline — use `center` instead\",\n\t\t\t\"Reaching for `Cluster` for tabular alignment — use `Grid` or a real `<table>` when columns must line up\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Cluster is presentational. Lists of navigational items should be wrapped in `<nav>` (and ideally `<ul>` / `<li>`). Lists of tags can use a list element for screen-reader semantics; the visual wrap is independent.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"cluster\", \"layout\", \"flex\", \"wrap\", \"horizontal\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const gridSchema: ComponentSchemaDefinition = {\n\tname: \"grid\",\n\tdisplayName: \"Grid\",\n\tdescription:\n\t\t\"CSS grid with column-count presets and token-bound gap. Pass `cols=\\\"auto-fit\\\"` + `minColWidth` for responsive grids without media queries.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"3\",\n\t\t\tdescription:\n\t\t\t\t\"Number of fixed columns, or `\\\"auto-fit\\\"` for responsive tracks (use with `minColWidth`).\",\n\t\t\tenumValues: [\"1\", \"2\", \"3\", \"4\", \"6\", \"auto-fit\"],\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"minColWidth\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"16rem\",\n\t\t\tdescription:\n\t\t\t\t\"Min track size for `cols=\\\"auto-fit\\\"` (e.g. `\\\"20rem\\\"`). Ignored when `cols` is a fixed integer.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\tdescription: \"Column count or `auto-fit` mode.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"1\", description: \"Single column — items stack vertically inside the grid.\" },\n\t\t\t\t{ value: \"2\", description: \"Two even columns.\" },\n\t\t\t\t{ value: \"3\", description: \"Default — three even columns.\" },\n\t\t\t\t{ value: \"4\", description: \"Four even columns.\" },\n\t\t\t\t{ value: \"6\", description: \"Six even columns — dense layouts.\" },\n\t\t\t\t{ value: \"auto-fit\", description: \"Tracks repeat to fill width, never below `minColWidth`.\" },\n\t\t\t],\n\t\t\tdefault: \"3\",\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — minimal separation.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grid.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation between cards.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Cells align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Cells center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Cells align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — cells fill row height.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Grid cells — typically Cards, images, or any uniform block.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-column card grid\",\n\t\t\tdescription: \"Fixed 3 columns with medium gap.\",\n\t\t\tcode: '<Grid cols={3} gap=\"md\">\\n {items.map((i) => <Card key={i.id}>{i.title}</Card>)}\\n</Grid>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Responsive auto-fit\",\n\t\t\tdescription: \"Tracks fit as many 20rem columns as the viewport allows; no media queries needed.\",\n\t\t\tcode: '<Grid cols=\"auto-fit\" minColWidth=\"20rem\" gap=\"lg\">\\n {items.map(...)}\\n</Grid>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for visually-aligned grids of similar items: card galleries, image walls, dashboard tiles, settings panels. Prefer `cols=\\\"auto-fit\\\"` + `minColWidth` over hand-written breakpoints when the column count should adapt to viewport width.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for one-dimensional flows — use `Stack` (vertical) or `Cluster` (horizontal). Don't use for tabular data — use `<table>` or DataTable. Don't fight `Grid` to make uneven columns; if cells need different sizes, use a flexbox layout or a CSS grid with named tracks directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `cols={5}` and getting nothing — the preset only supports 1/2/3/4/6 (deliberate, to avoid odd visual rhythms); use `cols=\\\"auto-fit\\\"` for arbitrary counts\",\n\t\t\t\"Passing `cols=\\\"auto-fit\\\"` without `minColWidth` — the default `16rem` may not match your design intent\",\n\t\t\t\"Using `Grid` for two children when `Cluster` or `Stack` would communicate intent better\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"container\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"Grid is presentational. If the grid renders a list of similar items, wrap in `<ul>`/`<li>` for screen-reader semantics — Grid only handles visual layout.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"grid\", \"layout\", \"css-grid\", \"responsive\", \"auto-fit\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const spacerSchema: ComponentSchemaDefinition = {\n\tname: \"spacer\",\n\tdisplayName: \"Spacer\",\n\tdescription:\n\t\t\"Declarative whitespace block bound to `--space-*` tokens. Use when sibling spacing can't come from a parent's `gap`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Spacing token (xs=0.25rem, sm=0.5rem, md=1rem, lg=2rem, xl=4rem). Bound to `--space-*`.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"vertical\",\n\t\t\tdescription: \"Which axis to expand. Vertical = height; horizontal = width; both = square.\",\n\t\t\tenumValues: [\"vertical\", \"horizontal\", \"both\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Spacer extent bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — micro-gap.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight separation.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard breathing room.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — section-scale separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"4rem — major separation between hero areas.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\tdescription: \"Which axis the spacer extends along.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"vertical\", description: \"Default — fixed height, 1px width.\" },\n\t\t\t\t{ value: \"horizontal\", description: \"Fixed width, 1px height — for flex rows.\" },\n\t\t\t\t{ value: \"both\", description: \"Square block — rare; usually pick one axis.\" },\n\t\t\t],\n\t\t\tdefault: \"vertical\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--space-1\", \"--space-2\", \"--space-4\", \"--space-8\", \"--space-16\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Vertical breathing room\",\n\t\t\tdescription: \"Push two sections apart inside a parent that doesn't manage gap.\",\n\t\t\tcode: '<>\\n <Hero />\\n <Spacer size=\"xl\" />\\n <Features />\\n</>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Horizontal flex spacer\",\n\t\t\tdescription: \"Push siblings to opposite ends of a flex row.\",\n\t\t\tcode: '<div className=\"flex items-center\">\\n <Logo />\\n <Spacer axis=\"horizontal\" size=\"lg\" />\\n <Nav />\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use as an explicit whitespace primitive when you can't (or don't want to) use `gap` on the parent — typically: pushing siblings apart inside a flex row that already has gap-0, or inserting one-off vertical breathing room between top-level sections that aren't wrapped in a Stack.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use Spacer when a `Stack` or `Cluster` parent's `gap` would do the same thing — that scales better and keeps the spacing concern with the layout primitive. Don't use Spacer to flush content to one edge of a flex container — use `ml-auto` / `justify-between` directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using `<Spacer />` between every child in a Stack — just set the Stack's `gap` instead\",\n\t\t\t\"Using `axis=\\\"both\\\"` and getting a square block where you wanted a line — `both` is rare, usually you want vertical or horizontal\",\n\t\t\t\"Setting size=\\\"lg\\\" on a horizontal spacer and getting nothing visible because the parent isn't a flex row — Spacer reserves space, it doesn't push siblings on its own\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Spacer is `aria-hidden=\\\"true\\\"` — screen readers skip it. Don't use a Spacer where a `Separator` would convey meaning (a thematic break should be `Separator`, not `Spacer`).\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"spacer\", \"layout\", \"whitespace\", \"spacing\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const collapsibleSchema: ComponentSchemaDefinition = {\n\tname: \"collapsible\",\n\tdisplayName: \"Collapsible\",\n\tdescription: \"A single section that can be expanded or collapsed. For multiple independent sections use Accordion with type='multiple'.\",\n\tcategory: \"component\",\n\tsubcategory: \"disclosure\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change: (open: boolean) => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable toggling\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"CollapsibleTrigger + CollapsibleContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Show more\",\n\t\t\tdescription: \"Expand additional content below a preview\",\n\t\t\tcode: '<Collapsible>\\n <div>Yesterday at 9:00 AM</div>\\n <CollapsibleTrigger asChild>\\n <Button variant=\"ghost\" size=\"sm\">Toggle</Button>\\n </CollapsibleTrigger>\\n <CollapsibleContent>\\n <div>Additional details here</div>\\n </CollapsibleContent>\\n</Collapsible>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a single show-more/show-less section: 'View full details', 'Advanced settings', preview cards with expandable notes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for multiple related sections (use Accordion). Don't use for overlays (use Dialog/Popover). Don't use for navigation (use DropdownMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Collapsible for multiple sections instead of Accordion\",\n\t\t\t\"Missing asChild when passing a Button as trigger\",\n\t\t\t\"Not animating content height (Radix exposes --radix-collapsible-content-height for CSS keyframes)\",\n\t\t],\n\t\trelatedComponents: [\"accordion\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets aria-expanded on the trigger and aria-controls → content id. Trigger is keyboard-operable (Enter/Space).\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"collapsible\", \"disclosure\", \"expand\", \"show-more\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const hoverCardSchema: ComponentSchemaDefinition = {\n\tname: \"hover-card\",\n\tdisplayName: \"Hover Card\",\n\tdescription: \"Rich floating content revealed on hover or focus. Use when Tooltip is too small and Popover requires a click.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"openDelay\", type: \"number\", required: false, default: 700, description: \"Milliseconds before the card appears\" },\n\t\t{ name: \"closeDelay\", type: \"number\", required: false, default: 300, description: \"Milliseconds before the card closes after leaving\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"HoverCardTrigger + HoverCardContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-hover-card\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"User profile preview\",\n\t\t\tdescription: \"Username link that expands into a mini profile on hover\",\n\t\t\tcode: '<HoverCard>\\n <HoverCardTrigger asChild>\\n <a href=\"#\">@shadcn</a>\\n </HoverCardTrigger>\\n <HoverCardContent>\\n <div className=\"flex gap-3\">\\n <Avatar><AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" /><AvatarFallback>CN</AvatarFallback></Avatar>\\n <div>\\n <h4 className=\"font-semibold\">@shadcn</h4>\\n <p className=\"text-xs text-muted-foreground\">Builds UI components</p>\\n </div>\\n </div>\\n </HoverCardContent>\\n</HoverCard>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for rich hover previews: user profile cards, link previews, inline references. Contains multiple elements — more than a tooltip can hold.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for simple hover labels (use Tooltip). Don't use for click-triggered content (use Popover). Don't use as primary info on touch devices — hover doesn't exist there.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using HoverCard for critical info (invisible on touch)\",\n\t\t\t\"Too-short openDelay causes flicker on mouse-over traffic\",\n\t\t\t\"Omitting asChild on HoverCardTrigger with a custom element\",\n\t\t],\n\t\trelatedComponents: [\"tooltip\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix opens on hover and keyboard focus. Content must be meaningful on focus as well as hover. Consider an alternative for touch users.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"hover-card\", \"preview\", \"overlay\", \"rich-tooltip\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const contextMenuSchema: ComponentSchemaDefinition = {\n\tname: \"context-menu\",\n\tdisplayName: \"Context Menu\",\n\tdescription: \"Right-click (or long-press on touch) menu anchored to the trigger region. Same item vocabulary as DropdownMenu.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"modal\", type: \"boolean\", required: false, default: true, description: \"When true, interaction outside is blocked\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"ContextMenuTrigger + ContextMenuContent. Content accepts ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioGroup/ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, and ContextMenuShortcut.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-context-menu\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-click menu\",\n\t\t\tdescription: \"Right-click the trigger region for actions\",\n\t\t\tcode: '<ContextMenu>\\n <ContextMenuTrigger className=\"flex h-40 items-center justify-center rounded-md border border-dashed\">Right-click here</ContextMenuTrigger>\\n <ContextMenuContent>\\n <ContextMenuItem>Back</ContextMenuItem>\\n <ContextMenuItem disabled>Forward</ContextMenuItem>\\n <ContextMenuSeparator />\\n <ContextMenuItem>Reload<ContextMenuShortcut>\\u2318R</ContextMenuShortcut></ContextMenuItem>\\n </ContextMenuContent>\\n</ContextMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for right-click menus on a specific region: file-manager-style actions, canvas/editor context actions, row-level actions in tables.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for actions triggered by a button (use DropdownMenu). Don't use as the only way to access an action — must have a keyboard/button alternative.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using ContextMenu as the only affordance (unreachable on touch)\",\n\t\t\t\"Triggering on the whole document (put it on a specific region)\",\n\t\t\t\"Missing a keyboard alternative for items\",\n\t\t],\n\t\trelatedComponents: [\"dropdown-menu\", \"menubar\"],\n\t\taccessibilityNotes:\n\t\t\t\"Triggered via right-click or Shift+F10 on keyboard. Radix handles role='menu', aria-labelledby, focus management.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"context-menu\", \"right-click\", \"menu\", \"actions\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const menubarSchema: ComponentSchemaDefinition = {\n\tname: \"menubar\",\n\tdisplayName: \"Menubar\",\n\tdescription: \"Desktop-app style menu bar (File / Edit / View). Horizontal menu strip with nested dropdowns.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled open menu id\" },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default open menu for uncontrolled usage\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when open menu changes\" },\n\t\t{ name: \"loop\", type: \"boolean\", required: false, default: true, description: \"When true, arrow-key navigation wraps\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the Menubar root\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"MenubarMenu elements (each containing MenubarTrigger + MenubarContent)\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-menubar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"File / Edit bar\",\n\t\t\tdescription: \"Two-menu bar with keyboard shortcuts\",\n\t\t\tcode: '<Menubar>\\n <MenubarMenu>\\n <MenubarTrigger>File</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>New Tab<MenubarShortcut>\\u2318T</MenubarShortcut></MenubarItem>\\n <MenubarItem>New Window<MenubarShortcut>\\u2318N</MenubarShortcut></MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Share</MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Print\\u2026<MenubarShortcut>\\u2318P</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n <MenubarMenu>\\n <MenubarTrigger>Edit</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>Undo<MenubarShortcut>\\u2318Z</MenubarShortcut></MenubarItem>\\n <MenubarItem>Redo<MenubarShortcut>\\u21E7\\u2318Z</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n</Menubar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for desktop-app shell menus: editors, IDEs, creative tools. Provides persistent menu bar with keyboard shortcuts.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for website navigation (use NavigationMenu). Don't use for single-button menus (use DropdownMenu). Poor fit for mobile — consider a hamburger menu.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using for website navigation (user expectations don't match)\",\n\t\t\t\"Missing shortcuts (expected affordance in menubar UX)\",\n\t\t\t\"Deeply nested sub-menus (>2 levels feels labyrinthine)\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full WAI-ARIA menubar pattern: arrow keys navigate menus, Enter/Space opens, Escape closes. Radix handles roles and state.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"menubar\", \"menu\", \"desktop\", \"app-shell\", \"navigation\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const navigationMenuSchema: ComponentSchemaDefinition = {\n\tname: \"navigation-menu\",\n\tdisplayName: \"Navigation Menu\",\n\tdescription: \"Website-style mega-menu with hover-triggered content panels. Used for marketing/site navigation headers.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled active menu value\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when active menu changes\" },\n\t\t{ name: \"delayDuration\", type: \"number\", required: false, default: 200, description: \"Delay before opening a menu on hover (ms)\" },\n\t\t{ name: \"orientation\", type: \"enum\", required: false, default: \"horizontal\", description: \"Layout direction\", enumValues: [\"horizontal\", \"vertical\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"NavigationMenuList containing NavigationMenuItem elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-navigation-menu\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"accent\", \"accent-foreground\", \"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Simple nav\",\n\t\t\tdescription: \"Top-level link + mega-menu trigger\",\n\t\t\tcode: '<NavigationMenu>\\n <NavigationMenuList>\\n <NavigationMenuItem>\\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\\n <NavigationMenuContent>\\n <ul className=\"grid w-[400px] gap-3 p-4\">\\n <li><NavigationMenuLink href=\"/docs\">Docs</NavigationMenuLink></li>\\n <li><NavigationMenuLink href=\"/pricing\">Pricing</NavigationMenuLink></li>\\n </ul>\\n </NavigationMenuContent>\\n </NavigationMenuItem>\\n <NavigationMenuItem>\\n <NavigationMenuLink className={navigationMenuTriggerStyle()} href=\"/about\">About</NavigationMenuLink>\\n </NavigationMenuItem>\\n </NavigationMenuList>\\n</NavigationMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for marketing-site top nav with grouped links and mega-menus: Products, Resources, Pricing flyouts. Desktop-first but keyboard accessible.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for app shell menus (use Menubar). Don't use for single dropdowns (use DropdownMenu). On mobile, pair with a separate hamburger/Drawer pattern — NavigationMenu collapses poorly on small screens.\",\n\t\tcommonMistakes: [\n\t\t\t\"Mixing regular <a> with NavigationMenuLink — must use NavigationMenuLink for keyboard/roving focus\",\n\t\t\t\"Forgetting the viewport — handled automatically when using the composed NavigationMenu root\",\n\t\t\t\"Too many top-level items overflow on mobile\",\n\t\t],\n\t\trelatedComponents: [\"menubar\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA menu-button pattern with hover-intent delays and focus trapping in content. Links inside NavigationMenuLink get roving tabindex.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"navigation-menu\", \"mega-menu\", \"nav\", \"header\", \"site\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const breadcrumbSchema: ComponentSchemaDefinition = {\n\tname: \"breadcrumb\",\n\tdisplayName: \"Breadcrumb\",\n\tdescription: \"A path trail showing the user's location within a hierarchy, with links back to ancestors and a non-interactive current page.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the nav element\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"BreadcrumbList containing BreadcrumbItem + BreadcrumbSeparator elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-level path\",\n\t\t\tdescription: \"Home / Components / Breadcrumb\",\n\t\t\tcode: '<Breadcrumb>\\n <BreadcrumbList>\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/docs/components\">Components</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n </BreadcrumbItem>\\n </BreadcrumbList>\\n</Breadcrumb>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to show location within a hierarchical site or app: docs pages, product categories, nested settings. Include the current page as a non-link BreadcrumbPage.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for primary navigation (use NavigationMenu). Don't use for flat sites without hierarchy. Don't use when the hierarchy is too deep to display — truncate with BreadcrumbEllipsis.\",\n\t\tcommonMistakes: [\n\t\t\t\"Making the current page a link (use BreadcrumbPage)\",\n\t\t\t\"Showing just one item (defeats the purpose)\",\n\t\t\t\"Using plain text separators without aria-hidden\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root <nav aria-label='breadcrumb'> creates a landmark. BreadcrumbPage has aria-current='page'. Separators are aria-hidden (decorative). BreadcrumbEllipsis is decorative (SVG aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"breadcrumb\", \"navigation\", \"path\", \"trail\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const alertSchema: ComponentSchemaDefinition = {\n\tname: \"alert\",\n\tdisplayName: \"Alert\",\n\tdescription: \"An inline notification banner for important messages. Supports default and destructive variants with optional leading icon.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"destructive\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Alert style\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Neutral inline notification\" },\n\t\t\t\t{ value: \"destructive\", description: \"Error or warning with red accent + tinted background\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Optional icon SVG + AlertTitle + AlertDescription\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"destructive\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Info alert\",\n\t\t\tdescription: \"Default alert with title and description\",\n\t\t\tcode: '<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>You can add components to your app via the CLI.</AlertDescription>\\n</Alert>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Destructive alert\",\n\t\t\tdescription: \"Error alert\",\n\t\t\tcode: '<Alert variant=\"destructive\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>Your session has expired. Please sign in again.</AlertDescription>\\n</Alert>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline, persistent messages that contextualize a page or section: info banners, warning about deprecated features, error summaries above forms.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for transient messages (use Toast/Sonner). Don't use for modal confirmations (use AlertDialog). Don't use as the only way to communicate a critical error — pair with field-level feedback.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using destructive for non-error messages\",\n\t\t\t\"Missing AlertTitle (reduces scannability)\",\n\t\t\t\"Stacking multiple Alerts on the same page instead of grouping\",\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root renders role='alert' so screen readers announce it. For non-urgent info banners consider role='status' or aria-live='polite' via className overrides.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"alert\", \"notification\", \"banner\", \"info\", \"warning\", \"error\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sonnerSchema: ComponentSchemaDefinition = {\n\tname: \"sonner\",\n\tdisplayName: \"Sonner (Toast)\",\n\tdescription: \"Ephemeral toast notifications via Sonner. Render <Toaster /> once at app root, then call toast() anywhere.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"position\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"bottom-right\",\n\t\t\tdescription: \"Where toasts appear on screen\",\n\t\t\tenumValues: [\n\t\t\t\t\"top-left\",\n\t\t\t\t\"top-center\",\n\t\t\t\t\"top-right\",\n\t\t\t\t\"bottom-left\",\n\t\t\t\t\"bottom-center\",\n\t\t\t\t\"bottom-right\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: \"richColors\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Enable success/error/warning color variants via toast.success/error/warning\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeButton\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Show a close button on each toast\",\n\t\t},\n\t\t{\n\t\t\tname: \"theme\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"system\",\n\t\t\tdescription: \"Visual theme\",\n\t\t\tenumValues: [\"light\", \"dark\", \"system\"],\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"sonner\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"muted\", \"muted-foreground\", \"primary\", \"primary-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App setup + fire toast\",\n\t\t\tdescription: \"Render Toaster once, call toast() anywhere\",\n\t\t\tcode: '// In your root layout:\\n<Toaster />\\n\\n// Anywhere in your app:\\nimport { toast } from \"@/components/ui/sonner\";\\n\\n<Button onClick={() => toast(\"Event created\", { description: \"Friday, Dec 11 at 10:00 AM\" })}>\\n Show toast\\n</Button>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for transient feedback: save confirmations, error messages, background task completion. Pairs well with mutation handlers (onSuccess/onError).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for persistent info (use Alert). Don't use for destructive confirmations (use AlertDialog). Don't use for critical errors that block user workflow.\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering multiple <Toaster /> components (one is enough)\",\n\t\t\t\"Calling toast() during server rendering (must be client-side)\",\n\t\t\t\"Using toast for messages the user needs to re-read (they auto-dismiss)\",\n\t\t],\n\t\trelatedComponents: [\"alert\", \"alert-dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sonner handles aria-live='polite' on the toast region so screen readers announce new toasts. Critical messages should still use Alert/AlertDialog for persistent visibility.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"toast\", \"sonner\", \"notification\", \"transient\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tableSchema: ComponentSchemaDefinition = {\n\tname: \"table\",\n\tdisplayName: \"Table\",\n\tdescription: \"Styled HTML table primitives (Table / TableHeader / TableBody / TableRow / TableHead / TableCell / TableCaption / TableFooter). Low-level building blocks — use DataTable for sorting/filtering/pagination.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <table>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"TableHeader + TableBody + TableFooter + TableCaption. Use TableRow/TableHead/TableCell inside.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic table\",\n\t\t\tdescription: \"Three-column styled table with header + rows\",\n\t\t\tcode: '<Table>\\n <TableCaption>A list of your recent invoices.</TableCaption>\\n <TableHeader>\\n <TableRow>\\n <TableHead>Invoice</TableHead>\\n <TableHead>Status</TableHead>\\n <TableHead className=\"text-right\">Amount</TableHead>\\n </TableRow>\\n </TableHeader>\\n <TableBody>\\n <TableRow>\\n <TableCell className=\"font-medium\">INV001</TableCell>\\n <TableCell>Paid</TableCell>\\n <TableCell className=\"text-right\">$250.00</TableCell>\\n </TableRow>\\n </TableBody>\\n</Table>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for simple tabular data where you render rows manually: invoice lists, pricing rows, settings tables. Responsive container wraps the <table> to allow horizontal scroll on small screens.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for large datasets that need sorting/filtering/pagination (use DataTable). Don't use for layout (use CSS grid/flex). Don't use for <form> field arrays (use native fields).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using <div> grids instead of a real <table> for tabular data (breaks a11y)\",\n\t\t\t\"Putting interactive controls in headers without keyboard semantics\",\n\t\t\t\"Missing TableCaption when the table has no other label\",\n\t\t],\n\t\trelatedComponents: [\"data-table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Semantic <table> / <thead> / <tbody> is used, so screen readers announce rows/columns. Include a TableCaption or aria-label. Mark column sort buttons with aria-sort.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"table\", \"data\", \"rows\", \"tabular\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dataTableSchema: ComponentSchemaDefinition = {\n\tname: \"data-table\",\n\tdisplayName: \"Data Table\",\n\tdescription: \"Generic data-driven table built on TanStack Table + Hex UI Table primitives. Pass columns + data; add sorting/filtering/pagination via TanStack hooks.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"columns\", type: \"object\", required: true, description: \"ColumnDef<TData, TValue>[] from @tanstack/react-table\" },\n\t\t{ name: \"data\", type: \"object\", required: true, description: \"Array of row data\" },\n\t\t{\n\t\t\tname: \"caption\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Visible caption rendered below the table; announced by screen readers when entering the table\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label forwarded as aria-label on the underlying <table>; use when no visible caption is shown\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@tanstack/react-table\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"components/table/table\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic data table\",\n\t\t\tdescription: \"Three-column table rendered from TanStack column defs\",\n\t\t\tcode: 'import type { ColumnDef } from \"@tanstack/react-table\";\\nimport { DataTable } from \"@/components/ui/data-table\";\\n\\ntype Payment = { id: string; amount: number; status: \"pending\" | \"paid\" | \"failed\"; email: string };\\n\\nconst columns: ColumnDef<Payment>[] = [\\n { accessorKey: \"status\", header: \"Status\" },\\n { accessorKey: \"email\", header: \"Email\" },\\n { accessorKey: \"amount\", header: \"Amount\" },\\n];\\n\\nconst data: Payment[] = [\\n { id: \"1\", amount: 100, status: \"paid\", email: \"a@x.com\" },\\n { id: \"2\", amount: 250, status: \"pending\", email: \"b@x.com\" },\\n];\\n\\nexport function Example() {\\n return <DataTable columns={columns} data={data} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for tabular data that needs sorting, filtering, pagination, or row selection. Define columns once, feed data — TanStack handles the row model. Add more features incrementally (getSortedRowModel, getFilteredRowModel, getPaginationRowModel).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for static/simple tables (use Table primitives directly). Don't use for virtualized very-large lists (use TanStack Virtual). Don't use for grid layouts (use CSS grid). DataTable is a Client Component (uses useReactTable hook) — fetch data in a Server Component and pass it as props.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting getCoreRowModel() (table renders nothing)\",\n\t\t\t\"Recreating columns array on every render (breaks memoization — wrap in useMemo or define outside the component)\",\n\t\t\t\"Using accessorKey with nested paths without accessorFn\",\n\t\t\t\"Not adding filter/sort row models when those features are needed\",\n\t\t\t\"Shipping a table without `caption` or `aria-label` — the table is unlabelled to assistive tech\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Pass either `caption` (visible) or `aria-label` so screen readers announce the table when the user enters it. Add aria-sort to sortable column headers. Announce filter/sort changes via aria-live for dynamic updates.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"data-table\", \"tanstack\", \"sortable\", \"filterable\", \"paginated\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const paginationSchema: ComponentSchemaDefinition = {\n\tname: \"pagination\",\n\tdisplayName: \"Pagination\",\n\tdescription: \"Composable pagination controls (Pagination / PaginationContent / PaginationItem / PaginationLink / PaginationPrevious / PaginationNext / PaginationEllipsis). Link-based by default — pair with client-side navigation or server params.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <nav>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"PaginationContent containing PaginationItem elements (PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"primitives/button/button\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"input\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic pagination\",\n\t\t\tdescription: \"Previous + 3 pages + ellipsis + Next with current page marked\",\n\t\t\tcode: '<Pagination>\\n <PaginationContent>\\n <PaginationItem>\\n <PaginationPrevious href=\"#\" />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">1</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\" isActive>2</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">3</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationEllipsis />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationNext href=\"#\" />\\n </PaginationItem>\\n </PaginationContent>\\n</Pagination>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for navigating between pages of a paginated dataset: blog lists, search results, table rows. Use PaginationEllipsis to truncate long ranges.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for infinite scroll (use IntersectionObserver). Don't use for step-by-step wizards (use a stepper). Don't use for fewer than ~3 pages (just show all the items).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using PaginationLink without href (anchor is not keyboard-reachable)\",\n\t\t\t\"Forgetting isActive on the current page (no visual or aria-current feedback)\",\n\t\t\t\"Showing every page number on long ranges — use PaginationEllipsis to truncate\",\n\t\t\t\"Using onClick-only <button> instead of PaginationLink — loses right-click-open-new-tab affordance; prefer href + Next.js Link when client-side routing is needed\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"data-table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root is role='navigation' aria-label='pagination'. Active link gets aria-current='page'. Previous/Next have aria-label. Ellipsis is decorative (aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"pagination\", \"pages\", \"navigation\", \"list\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const calendarSchema: ComponentSchemaDefinition = {\n\tname: \"calendar\",\n\tdisplayName: \"Calendar\",\n\tdescription:\n\t\t\"Date grid built on react-day-picker v9. Supports single, multiple, and range selection modes. Keyboard navigable and localizable.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"mode\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"single\",\n\t\t\tdescription: \"Selection mode: 'single' | 'multiple' | 'range'\",\n\t\t},\n\t\t{\n\t\t\tname: \"selected\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected value (Date, Date[], or DateRange depending on mode)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when selection changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"DayPicker Matcher — accepts a Date, Date[], { from, to }, { before | after }, or a (date: Date) => boolean predicate\",\n\t\t},\n\t\t{\n\t\t\tname: \"showOutsideDays\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Render days from the previous/next month in the grid\",\n\t\t},\n\t\t{\n\t\t\tname: \"numberOfMonths\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"How many months to display side-by-side\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"The month to render first (uncontrolled). Date object.\",\n\t\t},\n\t\t{\n\t\t\tname: \"fromDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Earliest selectable date (Date). Days before are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"toDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Latest selectable date (Date). Days after are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"locale\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"date-fns Locale object (e.g. `import { es } from 'date-fns/locale'`) for weekday/month labels\",\n\t\t},\n\t\t{\n\t\t\tname: \"weekStartsOn\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"First day of the week (0 = Sunday, 1 = Monday, …, 6 = Saturday)\",\n\t\t},\n\t\t{\n\t\t\tname: \"classNames\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Per-part className overrides (merged with defaults)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"primary\", \"primary-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Single date selection\",\n\t\t\tdescription: \"Bind a Date state to selected/onSelect\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>(new Date());\\n return <Calendar mode=\"single\" selected={date} onSelect={setDate} className=\"rounded-md border\" />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Range selection\",\n\t\t\tdescription: \"Pick a start and end date\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport type { DateRange } from \"react-day-picker\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [range, setRange] = useState<DateRange | undefined>();\\n return <Calendar mode=\"range\" selected={range} onSelect={setRange} numberOfMonths={2} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline date selection UIs, or as the month-grid inside a DatePicker (wrapped in a Popover). Supports single date, multi-date, and range modes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when only a text date input is needed (use Input type=date). Don't embed inside a very narrow container — the grid needs ~280px min width. For scheduling UIs with time, combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to selected (must be a Date, Date[], or DateRange object)\",\n\t\t\t\"Forgetting mode prop (default is single, but being explicit avoids confusion)\",\n\t\t\t\"Overriding classNames completely instead of spreading — loses default styling\",\n\t\t\t\"Using inside a Server Component without marking the consumer 'use client'\",\n\t\t],\n\t\trelatedComponents: [\"date-picker\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"react-day-picker wires aria-label, aria-selected, and keyboard navigation (arrows, Home/End, PageUp/Down). Focus rings on day buttons use the ring token.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"calendar\", \"date\", \"date-picker\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const datePickerSchema: ComponentSchemaDefinition = {\n\tname: \"date-picker\",\n\tdisplayName: \"Date Picker\",\n\tdescription:\n\t\t\"Date input composed from Popover + Calendar. Shows the selected date formatted via date-fns, opens a calendar grid on click.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected Date\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user selects a date: (date: Date | undefined) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Pick a date\",\n\t\t\tdescription: \"Text shown on the trigger when no date is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"dateFormat\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"PPP\",\n\t\t\tdescription: \"date-fns format token for the trigger label (e.g. 'PPP', 'yyyy-MM-dd')\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the picker trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible <label> is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"captionLayout\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Caption layout forwarded to react-day-picker. Use 'dropdown' (or 'dropdown-years' / 'dropdown-months') for native <select> navigation — common for birth-date pickers. Default is 'label' (chevron buttons only).\",\n\t\t},\n\t\t{\n\t\t\tname: \"startMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Earliest month/year navigable in the calendar (Date). Forwarded to react-day-picker. Pair with captionLayout='dropdown'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"endMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Latest month/year navigable in the calendar (Date). Forwarded to react-day-picker. Pair with captionLayout='dropdown'.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/calendar/calendar\", \"components/popover/popover\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"border\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic date picker\",\n\t\t\tdescription: \"Bind a Date state and render the picker\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { DatePicker } from \"@/components/ui/date-picker\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>();\\n return <DatePicker value={date} onChange={setDate} />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Birth-date picker with year dropdown\",\n\t\t\tdescription:\n\t\t\t\t\"Use captionLayout='dropdown' with explicit startMonth/endMonth to get native <select> year navigation\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { DatePicker } from \"@/components/ui/date-picker\";\\n\\nexport function Example() {\\n const [dob, setDob] = useState<Date | undefined>();\\n return (\\n <DatePicker\\n value={dob}\\n onChange={setDob}\\n placeholder=\"Date of birth\"\\n captionLayout=\"dropdown\"\\n startMonth={new Date(1925, 0)}\\n endMonth={new Date(new Date().getFullYear(), 11)}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for selecting a single date in a form. Shows a formatted text label and opens a month grid on click. Composes Popover + Calendar + button trigger. For far-away years (birthdays, historical dates), pass captionLayout='dropdown' plus startMonth/endMonth.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for date ranges (compose Calendar mode='range' + Popover yourself). Don't use for native mobile date UX (<input type='date'> is often better on phones). Don't use if you need time selection — combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to value — must be a Date object\",\n\t\t\t\"Missing aria-label when the picker has no adjacent visible <label>\",\n\t\t\t\"Overriding className in a way that hurts focus ring visibility\",\n\t\t\t\"Forgetting that the popover auto-closes on select — provide onChange to capture the value\",\n\t\t\t\"Setting captionLayout='dropdown' without startMonth/endMonth — react-day-picker defaults to ±100 years, producing a 200-option dropdown\",\n\t\t],\n\t\trelatedComponents: [\"calendar\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger is a real <button> with focus ring. When rendered without a visible label, pass aria-label. The popover portals and traps keyboard focus inside Calendar until the user selects or presses Escape.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"date-picker\", \"date\", \"input\", \"popover\", \"calendar\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const inputOTPSchema: ComponentSchemaDefinition = {\n\tname: \"input-otp\",\n\tdisplayName: \"Input OTP\",\n\tdescription:\n\t\t\"One-time-password / verification-code entry built on the input-otp library. Renders N character slots with active/caret state and auto-advance on type.\",\n\tcategory: \"component\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"maxLength\",\n\t\t\ttype: \"number\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Total number of slots (typically 4–8 for OTPs)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled value — the current entered string\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired as the user types: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"onComplete\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called when all slots are filled (useful to auto-submit)\",\n\t\t},\n\t\t{\n\t\t\tname: \"pattern\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Regex to restrict input (use REGEXP_ONLY_DIGITS, REGEXP_ONLY_CHARS, or REGEXP_ONLY_DIGITS_AND_CHARS)\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the whole input\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"InputOTPGroup with InputOTPSlot index={0..maxLength-1}, optional InputOTPSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"input-otp\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"ring\", \"background\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"6-digit OTP with separator\",\n\t\t\tdescription: \"Two groups of 3 slots divided by a bullet\",\n\t\t\tcode: 'import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from \"@/components/ui/input-otp\";\\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\";\\n\\nexport function Example() {\\n return (\\n <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n <InputOTPGroup>\\n <InputOTPSlot index={0} />\\n <InputOTPSlot index={1} />\\n <InputOTPSlot index={2} />\\n </InputOTPGroup>\\n <InputOTPSeparator />\\n <InputOTPGroup>\\n <InputOTPSlot index={3} />\\n <InputOTPSlot index={4} />\\n <InputOTPSlot index={5} />\\n </InputOTPGroup>\\n </InputOTP>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for one-time password, email verification code, 2FA code, or any fixed-length code entry. Auto-advances on type, supports paste of the full code, and supports regex validation.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for variable-length codes (use a plain Input). Don't use for passwords (use Input type='password'). Don't use for open-ended short text — the slot UI implies a code.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to render maxLength slots — the underlying input's maxLength won't match the visible UI\",\n\t\t\t\"Using pattern without importing one of the REGEXP_ONLY_* constants from 'input-otp'\",\n\t\t\t\"Wrapping the whole thing in a <form> without a submit handler — onComplete is often a better auto-submit hook\",\n\t\t\t\"Overriding slot className in a way that removes the first/last border-radius rules\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"input-otp manages a single hidden <input> so screen readers hear one field of N characters. Each slot is a visual representation. The active slot gets a focus ring via the ring token.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"input-otp\", \"otp\", \"verification\", \"2fa\", \"code\", \"pin\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const commandSchema: ComponentSchemaDefinition = {\n\tname: \"command\",\n\tdisplayName: \"Command\",\n\tdescription:\n\t\t\"Composable command menu built on cmdk — search input + filtered list with keyboard navigation. Use as an inline palette or, wrapped in CommandDialog, as a ⌘K-style launcher.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"shouldFilter\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Built-in filtering. Set to false for fully-controlled filtering.\",\n\t\t},\n\t\t{\n\t\t\tname: \"filter\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Custom scoring function: (value, search, keywords?) => number (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active-item value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the highlighted item changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"loop\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Loop arrow-key navigation at the ends of the list\",\n\t\t},\n\t\t{\n\t\t\tname: \"label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label for the menu (not shown visually)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"CommandInput + CommandList with CommandEmpty, CommandGroup, CommandItem, CommandSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/dialog/dialog\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Command dialog launcher (⌘K)\",\n\t\t\tdescription: \"Toggle a command palette with keyboard shortcut\",\n\t\t\tcode: 'import { useEffect, useState } from \"react\";\\nimport { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"@/components/ui/command\";\\n\\nexport function Example() {\\n const [open, setOpen] = useState(false);\\n useEffect(() => {\\n const down = (e: KeyboardEvent) => {\\n if (e.key === \"k\" && (e.metaKey || e.ctrlKey)) {\\n e.preventDefault();\\n setOpen(v => !v);\\n }\\n };\\n document.addEventListener(\"keydown\", down);\\n return () => document.removeEventListener(\"keydown\", down);\\n }, []);\\n return (\\n <CommandDialog open={open} onOpenChange={setOpen}>\\n <CommandInput placeholder=\"Type a command or search…\" />\\n <CommandList>\\n <CommandEmpty>No results found.</CommandEmpty>\\n <CommandGroup heading=\"Suggestions\">\\n <CommandItem onSelect={() => setOpen(false)}>Profile</CommandItem>\\n <CommandItem onSelect={() => setOpen(false)}>Settings</CommandItem>\\n </CommandGroup>\\n </CommandList>\\n </CommandDialog>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for searchable menus, command palettes, ⌘K launchers, or as the list body of a Combobox. Built-in fuzzy filter + arrow-key nav + Enter-to-select.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for small static lists (use plain DropdownMenu). Don't use for large data tables (use DataTable). If you need a select input with a single bound value, Combobox is the higher-level wrapper.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting CommandList — items won't be scrollable or grouped properly\",\n\t\t\t\"Giving CommandItem non-unique values (breaks filtering and controlled state)\",\n\t\t\t\"Overriding CommandInput className to remove the border/padding — breaks the ⌘K icon layout\",\n\t\t\t\"Not rendering CommandEmpty — the list looks broken when a search has no matches\",\n\t\t\t\"Querying CommandSeparator via cmdk's internal Separator state — Hex UI renders it as a presentational div with role='none' (and the `data-cmdk-separator` attribute preserved for selector compatibility) so it can sit inside CommandList's role=listbox without violating ARIA\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"dialog\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"cmdk wires role=listbox/option and aria-activedescendant. Use the `label` prop on Command for a screen-reader-only name when no visible heading exists. CommandSeparator renders with role='none' (still selectable via `[data-cmdk-separator]`) so listbox-children rules are satisfied.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"command\", \"cmdk\", \"palette\", \"search\", \"launcher\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const comboboxSchema: ComponentSchemaDefinition = {\n\tname: \"combobox\",\n\tdisplayName: \"Combobox\",\n\tdescription:\n\t\t\"Searchable single-select input. Composes Popover + Command (cmdk) + a styled trigger. Pass a list of { value, label } options.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { value: string, label: string, disabled?: boolean }\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected option value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user picks an option: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Select…\",\n\t\t\tdescription: \"Text shown on the trigger when nothing is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"searchPlaceholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Search…\",\n\t\t\tdescription: \"Placeholder for the filter input\",\n\t\t},\n\t\t{\n\t\t\tname: \"emptyText\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"No results found.\",\n\t\t\tdescription: \"Shown inside the list when the search has no matches\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible label is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the combobox\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\n\t\t\t\"components/command/command\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Framework picker\",\n\t\t\tdescription: \"Searchable single-select with a small static list\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Combobox } from \"@/components/ui/combobox\";\\n\\nconst frameworks = [\\n { value: \"next\", label: \"Next.js\" },\\n { value: \"remix\", label: \"Remix\" },\\n { value: \"astro\", label: \"Astro\" },\\n { value: \"nuxt\", label: \"Nuxt\" },\\n];\\n\\nexport function Example() {\\n const [value, setValue] = useState<string>();\\n return <Combobox options={frameworks} value={value} onChange={setValue} placeholder=\"Pick a framework\" />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a select input when the list is >~8 items or users benefit from typing to narrow. Fuzzy search + keyboard nav + selected-item checkmark.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for native-select parity on mobile (use Select). Don't use for multi-select (this component is single-value — compose Command + Popover yourself for multi). Don't use for free-text entry (use Input).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing duplicate option values (breaks selection and filtering)\",\n\t\t\t\"Two options with identical labels — cmdk dedupes by the Item's filter value (the label here), so one will be dropped from the list\",\n\t\t\t\"Using the label as the value — fine if stable, but prefer a short stable `value` string\",\n\t\t\t\"Forgetting to bind value + onChange — uncontrolled mode doesn't exist on this wrapper\",\n\t\t\t\"Mixing translated labels without keying on value — label changes won't update selection\",\n\t\t\t\"Missing aria-label / aria-labelledby — role='combobox' does not allow name from contents, so without one of these the trigger has no accessible name\",\n\t\t],\n\t\trelatedComponents: [\"command\", \"popover\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger has role='combobox' + aria-expanded + aria-haspopup='listbox'. aria-controls points at the inner CommandList (a useId-stabilized listbox). Pass aria-label or aria-labelledby — combobox does not derive its name from contents.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"combobox\", \"select\", \"search\", \"cmdk\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const multiComboboxSchema: ComponentSchemaDefinition = {\n\tname: \"multi-combobox\",\n\tdisplayName: \"MultiCombobox\",\n\tdescription:\n\t\t\"Searchable multi-select input. Composes Popover + Command (cmdk) + a styled trigger. Trigger shows '{n} selected'; each option exposes aria-selected.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { value: string, label: string, disabled?: boolean }\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected values (string[])\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback when the user toggles an option: (values: string[]) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Select…\",\n\t\t\tdescription: \"Text shown on the trigger when nothing is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"searchPlaceholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Search…\",\n\t\t\tdescription: \"Placeholder for the filter input\",\n\t\t},\n\t\t{\n\t\t\tname: \"emptyText\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"No results found.\",\n\t\t\tdescription: \"Shown inside the list when the search has no matches\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxSelected\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Soft cap on selections — once reached, unselected options become aria-disabled and clicks are ignored\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeOnSelect\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Close the popover after every pick. Default false matches multi-select UX (Linear/Notion).\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible label is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the combobox\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\n\t\t\t\"components/command/command\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"ring\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Tag picker\",\n\t\t\tdescription: \"Multi-select with a small static list and chip count\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { MultiCombobox } from \"@/components/ui/multi-combobox\";\\n\\nconst tags = [\\n { value: \"bug\", label: \"Bug\" },\\n { value: \"feature\", label: \"Feature\" },\\n { value: \"question\", label: \"Question\" },\\n { value: \"docs\", label: \"Documentation\" },\\n];\\n\\nexport function Example() {\\n const [picks, setPicks] = useState<string[]>([]);\\n return (\\n <MultiCombobox\\n options={tags}\\n value={picks}\\n onChange={setPicks}\\n placeholder=\"Pick tags\"\\n aria-label=\"Tags\"\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Capped selection\",\n\t\t\tdescription: \"Limit the number of items the user can pick\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { MultiCombobox } from \"@/components/ui/multi-combobox\";\\n\\nexport function Example() {\\n const [picks, setPicks] = useState<string[]>([]);\\n return (\\n <MultiCombobox\\n options={tags}\\n value={picks}\\n onChange={setPicks}\\n maxSelected={3}\\n aria-label=\"Up to 3 tags\"\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to pick multiple items from a list of >~8 options where users benefit from typing to narrow. Common for tags, recipients, filters. Trigger shows count, each option exposes aria-selected.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for single-select (use Combobox). Don't use for free-text entry (use Input or a tag input). Don't use for very large lists (>500 options) without server-side filtering — cmdk filters in-memory.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing duplicate option values — Set-based selection treats them as one\",\n\t\t\t\"Two options with identical labels — cmdk dedupes by the Item's filter value (the label here), so one will be dropped from the list\",\n\t\t\t\"Forgetting that value is string[] not string — passing a single string breaks Array iteration\",\n\t\t\t\"Setting closeOnSelect={true} for a power-user picker — multi-select normally stays open until the user dismisses\",\n\t\t\t\"Missing aria-label / aria-labelledby — role='combobox' does not derive its name from contents, so the trigger has no accessible name without one\",\n\t\t\t\"Relying on maxSelected to enforce business rules — the cap is a UX hint; always validate the array length on submit\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"command\", \"popover\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger has role='combobox' + aria-expanded + aria-haspopup='listbox'. aria-controls points at the inner CommandList only when open. Each option carries aria-selected; capped/disabled options carry aria-disabled. A visually-hidden aria-live='polite' region inside the trigger announces selection-count changes.\",\n\t\ttokenBudget: 1100,\n\t},\n\ttags: [\"combobox\", \"multi-select\", \"select\", \"search\", \"cmdk\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const stepperSchema: ComponentSchemaDefinition = {\n\tname: \"stepper\",\n\tdisplayName: \"Stepper\",\n\tdescription:\n\t\t\"Linear progress indicator for multi-step flows (form wizards, onboarding, checkout). Pure semantic <ol>/<li> with aria-current='step' on the active step and a per-step error status override.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"steps\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Ordered list of { id, label, description?, disabled?, status? }. `status` overrides the index-derived value.\",\n\t\t},\n\t\t{\n\t\t\tname: \"current\",\n\t\t\ttype: \"number\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Index of the current step (controlled).\",\n\t\t},\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Layout direction: 'horizontal' | 'vertical'\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Indicator size: 'sm' | 'md'\",\n\t\t},\n\t\t{\n\t\t\tname: \"onStepClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"When provided, each step renders as a clickable <button>; otherwise steps are non-interactive <span>s. Signature: (index: number) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the ordered list (e.g. 'Onboarding steps', 'Checkout progress')\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\tdescription: \"Layout direction\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"horizontal\", description: \"Steps laid out left-to-right\" },\n\t\t\t\t{ value: \"vertical\", description: \"Steps stacked top-to-bottom\" },\n\t\t\t],\n\t\t\tdefault: \"horizontal\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Indicator size\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"Compact indicator (1.75rem)\" },\n\t\t\t\t{\n\t\t\t\t\tvalue: \"md\",\n\t\t\t\t\tdescription: \"Default indicator (matches control-height-sm)\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"primary\",\n\t\t\"primary-foreground\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"input\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Form wizard\",\n\t\t\tdescription:\n\t\t\t\t\"Three-step horizontal stepper with the second step active\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Onboarding\"\\n current={1}\\n steps={[\\n { id: \"account\", label: \"Account\", description: \"Email + password\" },\\n { id: \"profile\", label: \"Profile\", description: \"Name + photo\" },\\n { id: \"confirm\", label: \"Confirm\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With error state\",\n\t\t\tdescription: \"Mark a failed step explicitly with status='error'\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Checkout\"\\n current={2}\\n steps={[\\n { id: \"cart\", label: \"Cart\" },\\n { id: \"shipping\", label: \"Shipping\", status: \"error\" },\\n { id: \"payment\", label: \"Payment\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Vertical, clickable\",\n\t\t\tdescription: \"Vertical orientation with onStepClick to jump back\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Settings\"\\n orientation=\"vertical\"\\n current={1}\\n onStepClick={(i) => console.log(i)}\\n steps={[\\n { id: \"profile\", label: \"Profile\" },\\n { id: \"security\", label: \"Security\" },\\n { id: \"billing\", label: \"Billing\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to communicate progress through a multi-step flow with a known fixed sequence: form wizards, onboarding, checkout, ticket triage. Mark per-step error status when validation fails.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for free navigation across unrelated sections (use Tabs). Don't use for indeterminate progress (use Progress with no value). Don't use for >7 steps — collapse into a multi-screen wizard with a sub-stepper instead.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — the <ol> needs an accessible name to be understood as a step list\",\n\t\t\t\"Setting current to an out-of-range index — derives all steps as 'upcoming'\",\n\t\t\t\"Mixing index-derived status with manual status overrides without intent — once you set status on one step, set it on all of them or know the precedence rules\",\n\t\t\t\"Making the stepper interactive (onStepClick) but allowing forward jumps before validation — gate jumps in your handler\",\n\t\t\t\"Treating it as a tab control — Stepper communicates direction; users can't pick step 5 then go back to 2 to review without your wiring\",\n\t\t],\n\t\trelatedComponents: [\"progress\", \"tabs\", \"breadcrumb\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders <ol> with the provided aria-label. The active step's interactive element gets aria-current='step'. Completed steps prefix the label with visually-hidden 'Completed:'; error steps prefix with 'Error:' and set aria-invalid='true' on the indicator. Connector lines are aria-hidden. When onStepClick is omitted, steps are plain <span>s — not fake buttons.\",\n\t\ttokenBudget: 1400,\n\t},\n\ttags: [\"stepper\", \"wizard\", \"progress\", \"navigation\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const timelineSchema: ComponentSchemaDefinition = {\n\tname: \"timeline\",\n\tdisplayName: \"Timeline\",\n\tdescription:\n\t\t\"Vertical chronological event feed for activity logs, audit trails, release notes, and notification streams. Pure semantic <ol>/<li> with a status-colored indicator and an optional icon override.\",\n\tcategory: \"component\",\n\tsubcategory: \"data-display\",\n\tprops: [\n\t\t{\n\t\t\tname: \"events\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Ordered list of { id, title, timestamp?, description?, icon?, status? } events.\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Indicator size: 'sm' | 'md'\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the ordered list (e.g. 'Activity log', 'Release notes')\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Indicator size\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"Compact 1.25rem indicator\" },\n\t\t\t\t{ value: \"md\", description: \"Default 1.75rem indicator\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"input\",\n\t\t\"primary\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Activity log\",\n\t\t\tdescription: \"Three-entry vertical feed with mixed status colors\",\n\t\t\tcode: 'import { Timeline } from \"@/components/ui/timeline\";\\n\\nexport function Example() {\\n return (\\n <Timeline\\n aria-label=\"Activity\"\\n events={[\\n { id: \"1\", title: \"Pull request opened\", timestamp: \"2 hours ago\", status: \"info\" },\\n { id: \"2\", title: \"CI passed\", timestamp: \"1 hour ago\", status: \"success\" },\\n { id: \"3\", title: \"Merged to main\", timestamp: \"12 minutes ago\", description: \"Squash + merge by @oscar\", status: \"success\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom icon\",\n\t\t\tdescription: \"Override the default dot with a custom node\",\n\t\t\tcode: 'import { Timeline } from \"@/components/ui/timeline\";\\n\\nexport function Example() {\\n return (\\n <Timeline\\n aria-label=\"Release notes\"\\n events={[\\n { id: \"v1\", title: \"v1.0\", timestamp: \"Apr 24\", icon: <span>⚡</span> },\\n { id: \"v2\", title: \"v1.1\", timestamp: \"Apr 27\", icon: <span>🐛</span>, status: \"warning\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to show a chronological event feed: activity logs, audit trails, release notes, notification history, ticket events. Each event has a title and optional timestamp + description.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for project schedules / Gantt charts (build a custom layout). Don't use for navigation between time periods (use Tabs or Stepper). Don't use for paginated data (use Table or DataTable). Don't use for >50 events without virtualization — Timeline renders every item.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — the <ol> needs an accessible name to be understood as a feed\",\n\t\t\t\"Using duplicate event ids — breaks React keys and event reconciliation on re-render\",\n\t\t\t\"Stuffing the description with rich layouts that overflow the timeline rail — keep it short or move to a Card\",\n\t\t\t\"Setting status='error' on every event for emphasis — color loses meaning when overused\",\n\t\t\t\"Mixing controlled timestamps as Date objects without formatting — Timeline accepts ReactNode, so format upstream (date-fns) before passing in\",\n\t\t],\n\t\trelatedComponents: [\"card\", \"stepper\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders <ol> with the provided aria-label. The status-colored indicator and connector line are aria-hidden — meaning is carried entirely by the title/timestamp/description text. No aria-current; events are historical, not navigational. For >50 events consider a windowing solution outside Timeline.\",\n\t\ttokenBudget: 1100,\n\t},\n\ttags: [\"timeline\", \"feed\", \"activity\", \"audit-log\", \"history\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dropzoneSchema: ComponentSchemaDefinition = {\n\tname: \"dropzone\",\n\tdisplayName: \"Dropzone\",\n\tdescription:\n\t\t\"Drag-and-drop file input built on the native HTML5 drag-drop API plus a visually-hidden <input type='file'> for keyboard + screen-reader access. Filters by accept/maxSize/maxFiles before emitting.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"onFilesSelected\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired with the accepted File[] on pick or drop.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onFilesRejected\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback fired with the rejected File[] when files fail accept/maxSize/maxFiles, OR when multiple={false} and extras were sliced off. Receives the rejected File[]. Use to surface 'wrong type' / 'too large' toasts.\",\n\t\t},\n\t\t{\n\t\t\tname: \"accept\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Accept attribute forwarded to the hidden file input. Three forms: MIME type ('application/pdf'), MIME wildcard ('image/*'), or extension with leading dot ('.csv'). Extension matching is suffix-based (mirrors HTML5) — '.csv' will match 'notes.md.csv' as well.\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription:\n\t\t\t\t\"Allow multiple files. With `multiple={false}`, the first accepted file flows to onFilesSelected and any extras flow to onFilesRejected so consumers can toast them.\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxFiles\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Cap on the number of accepted files. Excess files are dropped silently — surface in your handler if needed.\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxSize\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Maximum size per file in bytes. Files over the cap are filtered before onFilesSelected fires.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable interaction (click + drop + keyboard).\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Render override for the body. Pass a node, or a function receiving { isDragOver, isDisabled, openFileDialog } for layout control.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Required accessible name for the drop area.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"Body of the drop area (icon + copy). Optional — sensible default included.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\", \"function\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"primary\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Image upload\",\n\t\t\tdescription: \"Filter to images only with a 5MB cap\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Dropzone } from \"@/components/ui/dropzone\";\\n\\nexport function Example() {\\n const [files, setFiles] = useState<File[]>([]);\\n return (\\n <>\\n <Dropzone\\n accept=\"image/*\"\\n maxSize={5 * 1024 * 1024}\\n onFilesSelected={(picked) => setFiles((f) => [...f, ...picked])}\\n aria-label=\"Upload images\"\\n />\\n <ul>{files.map((f) => <li key={f.name}>{f.name}</li>)}</ul>\\n </>\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom body via render prop\",\n\t\t\tdescription: \"Take full control of the drop area visuals\",\n\t\t\tcode: 'import { Dropzone } from \"@/components/ui/dropzone\";\\n\\nexport function Example() {\\n return (\\n <Dropzone aria-label=\"Upload\" onFilesSelected={(f) => console.log(f)}>\\n {({ isDragOver }) => (\\n <span>{isDragOver ? \"Release to upload\" : \"Drop a file or click\"}</span>\\n )}\\n </Dropzone>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any file upload UX where drag-drop is helpful (image uploaders, CSV import, attachment pickers). Built on native HTML5 + a hidden <input type='file'> so keyboard and screen-reader users get the same affordance.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for camera/microphone capture (use <input type='file' capture> directly or a media-specific component). Don't use for chunked/resumable uploads — Dropzone only emits File[]; pair with a real upload pipeline (tus, S3 multipart). Don't use for clipboard paste image upload — listen on document for that.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — without it the drop area is announced as just 'button' to screen readers\",\n\t\t\t\"Setting accept='image' (missing the slash or wildcard) — must be a MIME type, MIME prefix with /*, or a .extension\",\n\t\t\t\"Forgetting that extension matching is suffix-based — '.csv' will match 'notes.md.csv'. Acceptable (mirrors HTML5) but document upstream if business logic requires strict suffix-only\",\n\t\t\t\"Treating maxFiles as enforcement — files past the cap are dropped silently; if business rules require it, validate again on submit\",\n\t\t\t\"Forgetting to clear the file input value after a successful upload — Dropzone resets the hidden input automatically; if you wrap it, do the same\",\n\t\t\t\"Calling preventDefault on parent containers' onDragOver — without it the browser opens the file when dropped on the window outside the dropzone\",\n\t\t\t\"Treating empty drops as no-op silently when the user expected feedback — pair with onFilesRejected to surface filter failures\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"button\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"The drop area is a role='button' div with tabIndex=0 and the required aria-label; Enter and Space open the file dialog. The file input is visually-hidden but live in the DOM so keyboard focus + assistive-tech file pickers work. Drag-state is exposed via data-drag-over for CSS-only state styling. When disabled, the drop area is removed from the tab order and aria-disabled is set.\",\n\t\ttokenBudget: 1500,\n\t},\n\ttags: [\"dropzone\", \"file-upload\", \"drag-drop\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const timePickerSchema: ComponentSchemaDefinition = {\n\tname: \"time-picker\",\n\tdisplayName: \"Time Picker\",\n\tdescription:\n\t\t\"Time input — styled wrapper around the native <input type='time'>. Value is a 'HH:MM' (or 'HH:MM:SS' with step=1) string. The browser provides 12/24-hour locale handling, keyboard arrow spinning, and screen-reader announcement.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled time value as 'HH:MM' or 'HH:MM:SS' (24-hour).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback when the user picks a time: (value: string) => void. Value is always 24-hour 'HH:MM' (or 'HH:MM:SS' when step=1).\",\n\t\t},\n\t\t{\n\t\t\tname: \"step\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Step in seconds. Use 60 (default) for HH:MM, 1 for HH:MM:SS, 300 for 5-minute steps, 900 for 15-minute. Note: Chrome/Edge picker dropdown UI does NOT visually snap minutes to the step — it only affects keyboard arrow stepping and form validation. Off-step values are still rejected.\",\n\t\t},\n\t\t{\n\t\t\tname: \"min\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Earliest selectable time as 'HH:MM'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"max\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Latest selectable time as 'HH:MM'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the input.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible <label> is used.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"input\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic time picker\",\n\t\t\tdescription: \"Bind a string state and render the picker\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { TimePicker } from \"@/components/ui/time-picker\";\\n\\nexport function Example() {\\n const [time, setTime] = useState<string>();\\n return <TimePicker value={time} onChange={setTime} aria-label=\"Meeting time\" />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With seconds + 5-minute step\",\n\t\t\tdescription:\n\t\t\t\t\"step={1} adds a seconds segment; step={300} steps minutes by 5 in browsers that support it\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { TimePicker } from \"@/components/ui/time-picker\";\\n\\nexport function Example() {\\n const [time, setTime] = useState<string>(\"09:00\");\\n return <TimePicker value={time} onChange={setTime} step={300} min=\"09:00\" max=\"17:00\" aria-label=\"Working hours start\" />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for selecting a time of day in a form (meeting time, reminder, business hours start/end). Browser handles 12/24-hour locale automatically based on user system settings; the wire format is always 24-hour 'HH:MM'. Component is controlled-only — pair `value` with `onChange`; for uncontrolled use, the input behaves as a controlled empty input with no upstream state.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for durations (hours/minutes elapsed) — use composite Input fields. Don't use for date+time together — combine with DatePicker. Don't use when explicit AM/PM segments matter for layout — compose Input + Select yourself; the native input renders AM/PM only in 12-hour locales. Don't use when you need pixel-identical chrome across browsers — the dropdown indicator is webkit-styled (Chrome/Edge/Safari) and absent in Firefox.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a Date object to value — must be a string in 'HH:MM' format\",\n\t\t\t\"Treating onChange as 12-hour — the value is always 24-hour, the browser only displays it in user locale\",\n\t\t\t\"Missing aria-label when there's no adjacent visible <label> — input gets no accessible name\",\n\t\t\t\"Setting step to a value that doesn't divide evenly into 3600 (e.g. step=7) — confusing UX in browsers that snap to it\",\n\t\t\t\"Expecting Chrome/Edge's picker dropdown to visually skip minutes per step — it doesn't. The minute scroll wheel always shows every minute; step only constrains keyboard arrow stepping and form validation\",\n\t\t\t\"Setting min/max with seconds when step!=1 — the seconds segment is hidden, so users can't actually reach values that need it\",\n\t\t\t\"Expecting the dropdown picker indicator to render in Firefox — only webkit browsers paint it; Firefox renders the input without that affordance\",\n\t\t\t\"Expecting an uncontrolled mode — TimePicker is controlled-only. Pass both value + onChange, or omit both and accept that user input has no place to live\",\n\t\t],\n\t\trelatedComponents: [\"date-picker\", \"input\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Native <input type='time'> — assistive tech announces hour/minute (and seconds if shown) segments individually. Arrow keys spin each segment. Disabled state is announced. Pass aria-label or wrap with a <label htmlFor>. Visual chrome (icon, dropdown affordance) is browser-controlled and varies across Chrome/Edge/Safari (rendered) and Firefox (absent).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"time-picker\", \"time\", \"input\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const fileTreeSchema: ComponentSchemaDefinition = {\n\tname: \"file-tree\",\n\tdisplayName: \"File Tree\",\n\tdescription:\n\t\t\"Hierarchical tree view for files, folders, and any nested navigation. Implements the WAI-ARIA tree pattern with role='tree' / 'treeitem' / 'group', aria-level, aria-expanded, aria-selected, and full keyboard navigation (Up/Down/Left/Right/Home/End/Enter/Space).\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Tree of { id, name, children?, icon?, disabled? }. Presence of `children` (even an empty array) marks the node as a folder.\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultExpanded\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Uncontrolled — initial expanded ids (string[]).\",\n\t\t},\n\t\t{\n\t\t\tname: \"expanded\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled expanded ids (string[]). Pair with onExpandedChange.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onExpandedChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Fired with the new expanded ids: (ids: string[]) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"selected\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected node id.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Fired when the user activates a node via click, Enter, or Space: (id: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the tree (e.g. 'File explorer', 'Settings sections').\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic file tree\",\n\t\t\tdescription: \"Uncontrolled expanded set; selected state controlled\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { FileTree } from \"@/components/ui/file-tree\";\\n\\nconst nodes = [\\n {\\n id: \"src\",\\n name: \"src\",\\n children: [\\n { id: \"src/index.tsx\", name: \"index.tsx\" },\\n {\\n id: \"src/components\",\\n name: \"components\",\\n children: [\\n { id: \"src/components/Button.tsx\", name: \"Button.tsx\" },\\n { id: \"src/components/Input.tsx\", name: \"Input.tsx\" },\\n ],\\n },\\n ],\\n },\\n { id: \"package.json\", name: \"package.json\" },\\n];\\n\\nexport function Example() {\\n const [selected, setSelected] = useState<string>();\\n return (\\n <FileTree\\n aria-label=\"Project files\"\\n nodes={nodes}\\n defaultExpanded={[\"src\"]}\\n selected={selected}\\n onSelect={setSelected}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for hierarchical navigation: file/folder explorers, settings sections, org charts, taxonomy browsers. Renders a real ARIA tree with full keyboard support, so it works for sighted, keyboard, and screen-reader users.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for flat lists (use ScrollArea + a list). Don't use for navigation menus (use NavigationMenu). Don't use for very deep trees (>5 levels) without virtualization — every node is rendered. Don't use for selecting multiple files concurrently — multi-select tree UX is a different beast; ship a separate component when you need it.\",\n\t\tcommonMistakes: [\n\t\t\t\"Mixing controlled `expanded` with `defaultExpanded` — pass exactly one\",\n\t\t\t\"Using non-stable node ids (e.g. array index) — collapsing/expanding shifts state\",\n\t\t\t\"Marking a leaf with `children: []` instead of omitting `children` — empty array still flags it as a folder, so the chevron shows\",\n\t\t\t\"Forgetting aria-label — the tree gets no accessible name and screen readers announce just 'tree'\",\n\t\t\t\"Calling onSelect to navigate without de-bouncing arrow-key focus changes — focus moves on arrows but does NOT call onSelect; only Enter/Space/click selects, so navigation should hang off onSelect, not focused state\",\n\t\t\t\"Expecting row-click to toggle expand — per WAI-ARIA tree pattern the row click only selects; toggling is the chevron button (or ArrowRight/Left, or Enter/Space when the row is focused). Common surprise after coming from VS Code-style trees\",\n\t\t\t\"Passing `selected` pointing at a node inside a collapsed branch — the tree falls back to the first visible node for tab focus, so the consumer can't rely on tabIndex to land on the selected target until it's revealed via expanded\",\n\t\t],\n\t\trelatedComponents: [\"accordion\", \"navigation-menu\", \"sidebar\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root: role='tree' with aria-label. Each node: role='treeitem' with aria-level, aria-expanded (folders only), aria-selected, tabIndex=0 only on the active visible node (roving tabindex). Children container: role='group'. Click semantics: row click selects only; the chevron is a separate decorative button that toggles. Keyboard: ArrowDown/Up move through visible non-disabled nodes (disabled nodes are skipped); ArrowRight expands a closed folder or moves to first child; ArrowLeft collapses an open folder or moves to parent; Home/End jump to first/last visible; Enter/Space activate (toggle on folders, select on all).\",\n\t\ttokenBudget: 2000,\n\t},\n\ttags: [\"file-tree\", \"tree\", \"navigation\", \"explorer\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const colorPickerSchema: ComponentSchemaDefinition = {\n\tname: \"color-picker\",\n\tdisplayName: \"Color Picker\",\n\tdescription:\n\t\t\"HSL-native color picker that edits an HSL triplet directly via three sliders (H/S/L). Hex input is a display adapter; sliders are the source of truth so the value round-trips losslessly through the `@hex-core/tokens` triplet format.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Current color as an HSL triplet string (`\\\"<H> <S>% <L>%\\\"`, e.g. `\\\"240 5.9% 10%\\\"`). Match the format used by `@hex-core/tokens`.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Called with the next HSL triplet when the user drags a slider or commits a valid hex value. Not called for invalid hex input.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Disable interaction. Trigger renders dimmed; mouse and keyboard activation are blocked by the native `disabled` attribute.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: '\"Pick color\"',\n\t\t\tdescription: \"Accessible name for the trigger button.\",\n\t\t},\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Additional class names merged onto the trigger.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-popover\", \"@radix-ui/react-slider\", \"@radix-ui/react-label\"],\n\t\tinternal: [\n\t\t\t\"primitives/slider/slider\",\n\t\t\t\"primitives/input/input\",\n\t\t\t\"primitives/label/label\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/color\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"background\", \"ring\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Edit a token live\",\n\t\t\tdescription: \"Bind a state variable to a CSS custom property to preview a token edit in real time.\",\n\t\t\tcode: 'const [color, setColor] = React.useState(\"240 5.9% 10%\");\\n\\nreturn (\\n <div style={{ \"--primary\": color } as React.CSSProperties}>\\n <ColorPicker value={color} onChange={setColor} aria-label=\"Primary color\" />\\n <Button>Live preview</Button>\\n </div>\\n);',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Disabled\",\n\t\t\tdescription: \"Prevent edits while a parent operation is in flight.\",\n\t\t\tcode: '<ColorPicker value=\"240 5.9% 10%\" onChange={() => {}} disabled />',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use whenever the user is editing a color that will round-trip through the `@hex-core/tokens` HSL triplet format — token editors, theme builders, branding panels, custom-color surfaces in design tools.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for picking a color from a fixed palette — use a `Select` or `RadioGroup` of swatches. Don't use for image-based color sampling (eyedropper) — that's a separate primitive. Don't reach for ColorPicker when only a hex string matters: bind it directly to `<input type=\\\"color\\\">` for the simplest cases.\",\n\t\tcommonMistakes: [\n\t\t\t\"Treating the value as hex — the prop is an HSL triplet, not a hex string. Use `hexToHslTriplet` and `hslTripletToHex` from `@hex-core/components/lib/color` if you need to bridge.\",\n\t\t\t\"Forgetting to wrap the value in `hsl(...)` when applying it as a CSS color: `style={{ color: \\\\`hsl(${value})\\\\` }}`.\",\n\t\t\t\"Calling `onChange` synchronously inside a parent's render — the picker batches slider updates and that pattern can desync controlled state.\",\n\t\t],\n\t\trelatedComponents: [\"slider\", \"input\", \"label\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Each slider has a per-axis `aria-label` (Hue / Saturation / Lightness). The trigger button needs an explicit `aria-label` describing what color is being edited (e.g. `\\\"Primary color\\\"`) — the default `\\\"Pick color\\\"` is generic. The hex input is keyboard-accessible and round-trips with the sliders.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"color-picker\", \"color\", \"hsl\", \"hex\", \"form\", \"theme-editor\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sheetSchema: ComponentSchemaDefinition = {\n\tname: \"sheet\",\n\tdisplayName: \"Sheet\",\n\tdescription:\n\t\t\"Side drawer built on Radix Dialog with a directional slide animation. Use for navigation, filters, quick edit, or any off-canvas panel.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, content outside the sheet is inert\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sheet slides in from\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"top\", description: \"Slides down from the top edge\" },\n\t\t\t\t{ value: \"bottom\", description: \"Slides up from the bottom edge\" },\n\t\t\t\t{ value: \"left\", description: \"Slides in from the left edge\" },\n\t\t\t\t{ value: \"right\", description: \"Slides in from the right edge (default)\" },\n\t\t\t],\n\t\t\tdefault: \"right\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SheetTrigger + SheetContent (with SheetHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dialog\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted-foreground\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-side sheet\",\n\t\t\tdescription: \"Quick edit panel anchored to the right edge\",\n\t\t\tcode: '<Sheet>\\n <SheetTrigger asChild>\\n <Button variant=\"outline\">Open</Button>\\n </SheetTrigger>\\n <SheetContent>\\n <SheetHeader>\\n <SheetTitle>Edit profile</SheetTitle>\\n <SheetDescription>Make changes and save when done.</SheetDescription>\\n </SheetHeader>\\n <div className=\"grid gap-4 py-4\">\\n <Input placeholder=\"Name\" />\\n </div>\\n <SheetFooter>\\n <Button>Save</Button>\\n </SheetFooter>\\n </SheetContent>\\n</Sheet>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for off-canvas panels — mobile nav menus, filter panels, side forms, detail views, or multi-step flows. Slides in from an edge, dismisses on outside click, Escape, or close button.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for center-focused modals (use Dialog). Don't use for transient bottom sheets on mobile (use Drawer). Don't use for dropdown menus or quick popover actions (use DropdownMenu or Popover).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting SheetTitle — Radix warns at runtime and screen readers announce an unnamed dialog\",\n\t\t\t\"Putting a full page's content inside a sheet — too much friction; use a route instead\",\n\t\t\t\"Overriding the side slide animation without matching the 'side' variant\",\n\t\t\t\"Not handling controlled open state after SheetClose — use onOpenChange not manual state\",\n\t\t],\n\t\trelatedComponents: [\"dialog\", \"drawer\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix traps focus, handles Escape to close, and wires aria-labelledby/describedby to SheetTitle/Description. The Close button has sr-only text. Always include a SheetTitle.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"sheet\", \"drawer\", \"side-panel\", \"off-canvas\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const drawerSchema: ComponentSchemaDefinition = {\n\tname: \"drawer\",\n\tdisplayName: \"Drawer\",\n\tdescription:\n\t\t\"Bottom-sheet drawer built on vaul. Mobile-native feel: drag-to-dismiss, snap points, body-scale-on-open. Use for quick mobile actions, filters, pickers.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"shouldScaleBackground\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Scale the <body> element when the drawer opens (creates depth)\",\n\t\t},\n\t\t{\n\t\t\tname: \"snapPoints\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of snap positions ('40%', 400, '100%') — defines resting heights the user can snap to\",\n\t\t},\n\t\t{\n\t\t\tname: \"activeSnapPoint\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active snap point value (matches one entry in snapPoints)\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeThreshold\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0.25,\n\t\t\tdescription: \"Fraction of height the user must drag down to close (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"dismissible\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Allow drag-to-dismiss and outside-click-to-dismiss\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DrawerTrigger + DrawerContent (with DrawerHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"vaul\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic drawer\",\n\t\t\tdescription: \"Mobile-friendly bottom sheet with a quick action\",\n\t\t\tcode: '<Drawer>\\n <DrawerTrigger asChild>\\n <Button variant=\"outline\">Open drawer</Button>\\n </DrawerTrigger>\\n <DrawerContent>\\n <DrawerHeader>\\n <DrawerTitle>Edit profile</DrawerTitle>\\n <DrawerDescription>Make changes to your profile.</DrawerDescription>\\n </DrawerHeader>\\n <div className=\"p-4\"><Input placeholder=\"Name\" /></div>\\n <DrawerFooter>\\n <Button>Save</Button>\\n <DrawerClose asChild>\\n <Button variant=\"outline\">Cancel</Button>\\n </DrawerClose>\\n </DrawerFooter>\\n </DrawerContent>\\n</Drawer>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use on mobile-first or mobile-primary UX when a native app-like bottom sheet matters. Good for filters, quick pickers, confirm-then-do flows, or anywhere a user expects drag-to-dismiss.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use on desktop-primary UIs (use Dialog or Sheet). Don't use for side navigation (use Sheet). Don't use for transient info (use Popover or Tooltip). Don't use when you must prevent dismissal — drawers invite drag-down.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting DrawerTitle — vaul/Radix warn and screen readers announce an unnamed dialog\",\n\t\t\t\"Placing long forms inside a drawer without snap points — content gets cramped\",\n\t\t\t\"Disabling shouldScaleBackground when the background context-cue matters for UX\",\n\t\t\t\"Wrapping DrawerContent in Portal yourself — DrawerContent already portals via DrawerPortal\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"vaul delegates to Radix Dialog: focus trap, Escape to close, aria-labelledby/describedby wired to DrawerTitle/Description. The top handle is decorative (aria-hidden).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"drawer\", \"bottom-sheet\", \"vaul\", \"mobile\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const resizableSchema: ComponentSchemaDefinition = {\n\tname: \"resizable\",\n\tdisplayName: \"Resizable\",\n\tdescription:\n\t\t\"Draggable split panes built on react-resizable-panels v4. Horizontal or vertical, with keyboard-accessible handles and persistable layout.\",\n\tcategory: \"component\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Group orientation: 'horizontal' | 'vertical'\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultLayout\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of initial panel sizes in order (percentages summing to 100)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onLayoutChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Fires when the user drags a handle; receives the new layout array\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable resizing for the whole group\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Alternating ResizablePanel + ResizableHandle nodes\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"react-resizable-panels\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Horizontal split pane\",\n\t\t\tdescription: \"Two resizable panels with a grab-grip handle\",\n\t\t\tcode: '<ResizablePanelGroup orientation=\"horizontal\" className=\"min-h-[300px] max-w-md rounded-lg border\">\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">One</div>\\n </ResizablePanel>\\n <ResizableHandle withHandle />\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">Two</div>\\n </ResizablePanel>\\n</ResizablePanelGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for editor-style layouts (file tree + editor), dashboards with configurable panels, or any UI where users need to trade space between regions. Layouts can be persisted to localStorage via the group's id.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for responsive layouts — use CSS grid/flex with breakpoints. Don't use for modal layouts (use Dialog/Sheet). Don't nest deeply (>2 levels) — it hurts a11y and perception. Don't use if panels need to collapse/expand as a single action (use Collapsible).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting ResizableHandle between panels — they won't resize\",\n\t\t\t\"Using 'cols'/'rows' instead of orientation='horizontal'/'vertical' (old v1 API)\",\n\t\t\t\"Not providing defaultSize on each panel — initial layout will be uneven\",\n\t\t\t\"Rendering panel content that changes DOM size during drag — react-resizable-panels performance suffers\",\n\t\t\t\"Omitting a group id when you want layout to persist via localStorage\",\n\t\t],\n\t\trelatedComponents: [\"separator\", \"collapsible\"],\n\t\taccessibilityNotes:\n\t\t\t\"ResizableHandle is focusable and resizable via keyboard arrows. role='separator' is set, with aria-valuenow/min/max wired by react-resizable-panels. The grab-grip is aria-hidden (decorative).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"resizable\", \"split-pane\", \"layout\", \"panels\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sidebarSchema: ComponentSchemaDefinition = {\n\tname: \"sidebar\",\n\tdisplayName: \"Sidebar\",\n\tdescription:\n\t\t\"App-shell sidebar with collapsible width, context-driven open state, and composable Header/Content/Footer/Item parts. Provider-based so any descendant can toggle it.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled open state — read from SidebarProvider\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Initial open state (uncontrolled)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state flips: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"side\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"left\",\n\t\t\tdescription: \"Which edge the sidebar sits on: 'left' | 'right'\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sidebar docks against\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"left\", description: \"Docks to the left edge (default)\" },\n\t\t\t\t{ value: \"right\", description: \"Docks to the right edge\" },\n\t\t\t],\n\t\t\tdefault: \"left\",\n\t\t},\n\t\t{\n\t\t\tname: \"state\",\n\t\t\tdescription: \"Width state (derived from SidebarProvider open value)\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"open\", description: \"Sidebar expanded at full width\" },\n\t\t\t\t{ value: \"closed\", description: \"Sidebar collapsed to zero width\" },\n\t\t\t],\n\t\t\tdefault: \"open\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SidebarHeader + SidebarContent + SidebarFooter (any combination)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"accent\", \"accent-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App shell with collapsible sidebar\",\n\t\t\tdescription: \"Provider holds open state; the trigger toggles it\",\n\t\t\tcode: '<SidebarProvider>\\n <Sidebar>\\n <SidebarHeader>\\n <span className=\"font-semibold\">Acme</span>\\n </SidebarHeader>\\n <SidebarContent>\\n <SidebarItem active>Dashboard</SidebarItem>\\n <SidebarItem>Projects</SidebarItem>\\n <SidebarItem>Settings</SidebarItem>\\n </SidebarContent>\\n <SidebarFooter>Signed in as jane</SidebarFooter>\\n </Sidebar>\\n <main className=\"flex-1 p-4\">\\n <SidebarTrigger />\\n <h1>Hello</h1>\\n </main>\\n</SidebarProvider>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for persistent app-shell navigation: admin dashboards, document editors, SaaS sidebars. The Provider pattern lets any descendant component toggle the sidebar (e.g. a topbar button on mobile).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for mobile-first UX (use Sheet — sidebar collapses to zero-width but Sheet gives a native drawer feel). Don't use for marketing sites (no shell). Don't use for contextual menus (use DropdownMenu or NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering Sidebar outside SidebarProvider — useSidebar throws\",\n\t\t\t\"Forgetting that SidebarProvider is a flex container — main content must be its direct sibling\",\n\t\t\t\"Using the wrong ordering for side='right' — SidebarProvider handles this via order-last\",\n\t\t\t\"Overriding the width variant manually instead of toggling open state\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"navigation-menu\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sidebar is an <aside> landmark (not a modal — no focus trap). When collapsed, the aside sets inert + aria-hidden so its children are removed from the tab order and the accessibility tree. SidebarTrigger exposes aria-expanded and a rotating aria-label (suppressed when asChild so the consumer's visible label/aria-label wins). SidebarItem uses aria-current='page' when active. Focus rings use the ring token.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"sidebar\", \"navigation\", \"app-shell\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const emptySchema: ComponentSchemaDefinition = {\n\tname: \"empty\",\n\tdisplayName: \"Empty\",\n\tdescription:\n\t\t\"A zero-state surface for lists, dashboards, and search results with no content. Explains why the slot is empty + provides a call-to-action.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Icon (typically an <svg>) rendered in a circular muted container above the title.\",\n\t\t},\n\t\t{\n\t\t\tname: \"title\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Heading copy. Becomes the region's accessible name via aria-labelledby.\",\n\t\t},\n\t\t{\n\t\t\tname: \"description\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Supporting copy that explains why the slot is empty + what to do next.\",\n\t\t},\n\t\t{\n\t\t\tname: \"action\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Call-to-action — typically a <Button> that creates the missing record.\",\n\t\t},\n\t\t{\n\t\t\tname: \"titleAs\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"h3\",\n\t\t\tdescription: \"Heading level for the title. Pick to match surrounding heading hierarchy.\",\n\t\t\tenumValues: [\"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"p\"],\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: \"Visual scale.\",\n\t\t\tenumValues: [\"sm\", \"default\", \"lg\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Vertical density of the empty-state surface.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"sm\",\n\t\t\t\t\tdescription: \"Compact — fits inside a card / panel.\",\n\t\t\t\t\tuseWhen: \"the empty surface is one of several stacked pieces of content; full-bleed would dominate\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Standard — for table / list / dashboard widget empty states.\",\n\t\t\t\t\tuseWhen: \"default everywhere; the only size you need on most surfaces\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"lg\",\n\t\t\t\t\tdescription: \"Large — for full-page empty states (no items at all yet).\",\n\t\t\t\t\tuseWhen: \"the empty surface owns the entire page — onboarding, first-run, no records yet\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\tdescription: \"Icon rendered in the circular muted container above the title.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t\t{\n\t\t\tname: \"action\",\n\t\t\tdescription: \"Call-to-action button under the description.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"List zero-state\",\n\t\t\tdescription: \"Inbox with no messages — icon + title + description + compose button\",\n\t\t\tcode: '<Empty\\n icon={<InboxIcon />}\\n title=\"No messages yet\"\\n description=\"When someone sends a message, it shows up here.\"\\n action={<Button>Compose</Button>}\\n/>',\n\t\t\tcomposition: [\"zero-state\", \"list\", \"with-action\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Search zero-state\",\n\t\t\tdescription: \"Search returned zero results — show the query + suggest a reset\",\n\t\t\tcode: '<Empty\\n icon={<SearchIcon />}\\n title=\"No results found\"\\n description={`No items match \"${query}\". Try a different search.`}\\n action={<Button variant=\"secondary\" onClick={onReset}>Clear search</Button>}\\n size=\"sm\"\\n/>',\n\t\t\tcomposition: [\"zero-state\", \"search\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Onboarding\",\n\t\t\tdescription: \"Full-page first-run state\",\n\t\t\tcode: '<Empty\\n icon={<SparklesIcon />}\\n title=\"Welcome to your dashboard\"\\n description=\"Create your first project to get started.\"\\n action={<Button size=\"lg\">Create project</Button>}\\n size=\"lg\"\\n titleAs=\"h1\"\\n/>',\n\t\t\tcomposition: [\"zero-state\", \"onboarding\", \"first-run\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for lists, search results, or dashboards where the request returned successfully but there's nothing to show. Explain why and what to do — the title names the absence, the description sets context, the action gives a way out.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use while data is still loading (use Loading). Don't use when something failed (use ErrorState). Don't use for inline form-field 'no options' messages (use Combobox's empty slot or Form's helper text).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Empty without an action — leaves the user stuck\",\n\t\t\t\"Long descriptions — keep to one sentence; this is a state surface, not documentation\",\n\t\t\t\"Forgetting titleAs when the page already has an h2 above (heading hierarchy break)\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Empty while data is still being fetched\",\n\t\t\t\tinsteadUse: \"loading\",\n\t\t\t\twhy: \"Empty announces 'no items exist'; Loading announces 'fetching items.' Showing Empty during the fetch flashes a misleading 'no results' state then snaps to real data on resolution.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Empty to display a fetch failure\",\n\t\t\t\tinsteadUse: \"error-state\",\n\t\t\t\twhy: \"ErrorState carries role='alert' so screen readers announce the failure on first render, AND it ships a retry affordance. Empty is silent on retry semantics.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Empty as an inline 'no matching options' notice inside a Combobox or Select\",\n\t\t\t\tinsteadUse: \"combobox\",\n\t\t\t\twhy: \"Combobox + Command already render a sub-AA-conformant empty state inside the listbox. Using Empty there leaks the page-level zero-state language into a focused interaction.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"loading\", \"error-state\", \"alert\", \"card\", \"skeleton\"],\n\t\taccessibilityNotes:\n\t\t\t\"Wrapped in a region landmark labeled by the title (aria-labelledby + auto-generated id). Icon is decorative (aria-hidden). Pair the action with a Button that has a visible label.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"empty\", \"zero-state\", \"feedback\", \"list\", \"dashboard\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const loadingSchema: ComponentSchemaDefinition = {\n\tname: \"loading\",\n\tdisplayName: \"Loading\",\n\tdescription:\n\t\t\"A composed loading-placeholder pattern for lists, cards, and stacks. Skeleton is the atom; Loading is the canonical molecule most surfaces want.\",\n\tcategory: \"primitive\",\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: \"list\",\n\t\t\tdescription: \"Layout family — picks the row shape.\",\n\t\t\tenumValues: [\"list\", \"card\", \"stack\"],\n\t\t},\n\t\t{\n\t\t\tname: \"rows\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 3,\n\t\t\tdescription: \"Number of placeholder rows to render. Each row may contain multiple Skeleton elements depending on variant — list emits 1 per row; card emits 3 (heading + 2 body lines); stack emits 3 (avatar + 2 text lines).\",\n\t\t},\n\t\t{\n\t\t\tname: \"label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Loading…\",\n\t\t\tdescription: \"sr-only label announced by screen readers via aria-live polite.\",\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: \"Layout family for the placeholder rows.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"list\",\n\t\t\t\t\tdescription: \"Single full-width line per row — table / list / sidebar nav loaders.\",\n\t\t\t\t\tuseWhen: \"the surface being filled is a flat list of equally-shaped rows\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"card\",\n\t\t\t\t\tdescription: \"Heading + two body lines inside a bordered card surface.\",\n\t\t\t\t\tuseWhen: \"loading a Card-shaped widget (settings panel, dashboard tile)\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"stack\",\n\t\t\t\t\tdescription: \"Avatar + two-line text block per row — message / contact / search-result loaders.\",\n\t\t\t\t\tuseWhen: \"loading a list of avatar-paired items (chat history, contact list, comment thread)\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"list\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"skeleton\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"card\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"List loader\",\n\t\t\tdescription: \"5 placeholder rows for a dashboard table\",\n\t\t\tcode: '<Loading rows={5} variant=\"list\" />',\n\t\t\tcomposition: [\"loading\", \"table\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Card loader\",\n\t\t\tdescription: \"Card-shaped placeholder with heading + 2 body lines\",\n\t\t\tcode: '<Loading variant=\"card\" />',\n\t\t\tcomposition: [\"loading\", \"card\", \"widget\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Stack loader (chat / contacts)\",\n\t\t\tdescription: \"Avatar + 2-line text rows\",\n\t\t\tcode: '<Loading rows={4} variant=\"stack\" />',\n\t\t\tcomposition: [\"loading\", \"stack\", \"chat\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when fetching data for a list, card, or avatar-paired stack and you want pre-arranged placeholders. Pair the rows count with how many items you expect — avoid 10-row loaders for 2-item results (jarring on resolve).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for a single shaped placeholder (use Skeleton). Don't use when the wait has a measurable percent-done (use Progress). Don't use for full-page transitions where a top progress bar is more informative.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting `aria-live` would prevent screen-reader announcement — Loading already wires it; don't override role\",\n\t\t\t\"Using too many rows — flashes a heavy 'something's wrong' impression\",\n\t\t\t\"Applying Loading inside a Card AND also wrapping in another Card — double-bordered shimmer\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Loading for a single shaped placeholder (avatar circle, heading line, image rectangle)\",\n\t\t\t\tinsteadUse: \"skeleton\",\n\t\t\t\twhy: \"Skeleton is the atom; render exactly one Skeleton with the right size class. Loading composes Skeletons for canonical multi-row patterns — no value if you only need one shape.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Loading when the wait has a measurable percent (file upload, batch import)\",\n\t\t\t\tinsteadUse: \"progress\",\n\t\t\t\twhy: \"Progress's `value` prop announces actual completion to assistive tech. Loading is for indeterminate waits.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Loading for a full-page route transition where the user just clicked a link\",\n\t\t\t\tinsteadUse: \"skeleton\",\n\t\t\t\twhy: \"Compose page-shaped Skeletons via `generateStaticParams` + Suspense; full-page Loading flashes 'work is happening here' while the right answer is 'show the page shell instantly.'\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"skeleton\", \"progress\", \"empty\", \"error-state\"],\n\t\taccessibilityNotes:\n\t\t\t\"role='status' + aria-live='polite' + sr-only label, so screen readers announce on first render. Caller doesn't need to wire any of this.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"loading\", \"skeleton\", \"placeholder\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const errorStateSchema: ComponentSchemaDefinition = {\n\tname: \"error-state\",\n\tdisplayName: \"ErrorState\",\n\tdescription:\n\t\t\"A surface for failed-fetch / failed-action states. Visually mirrors Empty but with destructive bias and an optional retry button. Mounts with role='alert' so screen readers announce on first render.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{ name: \"icon\", type: \"ReactNode\", required: false, description: \"Icon (typically an alert / x-circle SVG).\" },\n\t\t{ name: \"title\", type: \"ReactNode\", required: false, default: \"Something went wrong\", description: \"Heading copy. Falls back to a generic message.\" },\n\t\t{ name: \"message\", type: \"ReactNode\", required: true, description: \"Body copy explaining what failed and (optionally) what the user can do.\" },\n\t\t{ name: \"action\", type: \"ReactNode\", required: false, description: \"Call-to-action slot — typically a <Button onClick={refetch}>Retry</Button>. Consumer controls the button variant, loading state, and asChild composition.\" },\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 tone — destructive draws more attention, default is calmer.\",\n\t\t\tenumValues: [\"default\", \"destructive\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Tone of the surface.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Muted neutral surface — for recoverable / transient failures.\",\n\t\t\t\t\tuseWhen: \"the failure is recoverable and you don't want to alarm: 'temporarily unavailable,' 'try again in a moment'\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"destructive\",\n\t\t\t\t\tdescription: \"Tinted destructive surface — for hard / unrecoverable failures.\",\n\t\t\t\t\tuseWhen: \"the failure is significant: data lost, permission denied, server error 5xx\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\tdescription: \"Icon rendered in the circular tinted container.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t\t{\n\t\t\tname: \"action\",\n\t\t\tdescription: \"Call-to-action — typically a Button. Consumer composes the button variant + click handler.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"destructive\", \"muted\", \"muted-foreground\", \"foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Fetch failure with retry\",\n\t\t\tdescription: \"Couldn't load messages — show the error + a Retry button in the action slot\",\n\t\t\tcode: '<ErrorState\\n icon={<AlertCircleIcon />}\\n title=\"Couldn\\'t load messages\"\\n message=\"The server didn\\'t respond. Check your connection and try again.\"\\n action={<Button onClick={() => refetch()}>Retry</Button>}\\n/>',\n\t\t\tcomposition: [\"error-state\", \"retry\", \"fetch-failure\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Hard failure (destructive)\",\n\t\t\tdescription: \"Server returned 5xx and we want to alarm\",\n\t\t\tcode: '<ErrorState\\n icon={<XCircleIcon />}\\n variant=\"destructive\"\\n title=\"Sync failed\"\\n message=\"We couldn\\'t save your changes. They\\'re still on this device — refresh to retry.\"\\n/>',\n\t\t\tcomposition: [\"error-state\", \"destructive\", \"sync-failure\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any failure surface where the user might benefit from context + a retry path. Pair with onRetry whenever the operation is genuinely retryable; omit it when the user has to take a different action (e.g. log in again).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for inline form-field errors (Form's <FormMessage> handles those). Don't use for blocking destructive confirmations (AlertDialog). Don't use for transient toasts (Sonner / Toaster).\",\n\t\tcommonMistakes: [\n\t\t\t\"Generic 'Something went wrong' message without context — at minimum, name what failed\",\n\t\t\t\"Using destructive variant for recoverable network blips (cries wolf)\",\n\t\t\t\"Wiring the action's click handler to a function that doesn't actually re-trigger the failed operation\",\n\t\t\t\"Forgetting the action slot when the failure IS retryable — leaves the user stuck\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using ErrorState for an inline form-field validation error\",\n\t\t\t\tinsteadUse: \"form\",\n\t\t\t\twhy: \"Form ships <FormMessage> which is wired to the field's aria-describedby. ErrorState announces page-level failures; using it inline duplicates the role='alert' on every keystroke and confuses assistive tech.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using ErrorState as a blocking destructive confirmation modal\",\n\t\t\t\tinsteadUse: \"alert-dialog\",\n\t\t\t\twhy: \"AlertDialog is role='alertdialog' (modal, focus-trapped, dismiss-on-Escape). ErrorState is a passive surface — no interaction guarantees. If you need the user to confirm before proceeding, use AlertDialog.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using ErrorState for a transient toast notification\",\n\t\t\t\tinsteadUse: \"sonner\",\n\t\t\t\twhy: \"Sonner / Toaster auto-dismiss + stack + animate. ErrorState sits in the layout. For 'fire-and-forget failure ack,' use the toaster.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"alert\", \"alert-dialog\", \"form\", \"empty\", \"loading\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"role='alert' so screen readers announce on first render. Icon decorative (aria-hidden). Retry button uses focus-visible ring; pressing it doesn't dismiss the surface — caller controls that via state.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"error\", \"error-state\", \"failure\", \"retry\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tagSchema: ComponentSchemaDefinition = {\n\tname: \"tag\",\n\tdisplayName: \"Tag\",\n\tdescription:\n\t\t\"Interactive tag / chip primitive — Badge with an optional dismiss button. Mirrors Badge's variants so the visual sibling is obvious; ships with a close affordance for filter pills, multi-select selections, draft attachments.\",\n\tcategory: \"primitive\",\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\", \"secondary\", \"destructive\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional leading icon (sized 12x12 inside the tag).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onRemove\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Click handler for the close button. When provided, the dismiss ✕ is rendered. Signature: () => void.\",\n\t\t},\n\t\t{\n\t\t\tname: \"removeLabel\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Override the auto-derived close-button aria-label (default: 'Remove ${children}').\",\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 — mirrors Badge so users get consistent token use.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Primary-tinted filled tag.\",\n\t\t\t\t\tuseWhen: \"the tag represents an active selected state — applied filter, picked option\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"secondary\",\n\t\t\t\t\tdescription: \"Muted neutral filled tag with a hairline border.\",\n\t\t\t\t\tuseWhen: \"default for everyday tags — list of selected items, draft attachments, filter pills\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"destructive\",\n\t\t\t\t\tdescription: \"Red-tinted filled tag.\",\n\t\t\t\t\tuseWhen: \"the tag represents a flagged / problematic value — banned user, archived item\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"outline\",\n\t\t\t\t\tdescription: \"Bordered transparent tag.\",\n\t\t\t\t\tuseWhen: \"the tag lives on a busy surface and shouldn't add visual fill weight\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\tdescription: \"Leading icon (sized 12x12).\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Tag label content (string preferred for auto aria-label derivation).\",\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: [],\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{\n\t\t\ttitle: \"Filter pill with dismiss\",\n\t\t\tdescription: \"Removable filter chip in a search bar\",\n\t\t\tcode: '<Tag variant=\"secondary\" onRemove={() => removeFilter(\"urgent\")}>Urgent</Tag>',\n\t\t\tcomposition: [\"filter\", \"search\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Multi-select selections\",\n\t\t\tdescription: \"Stack of selected values with per-tag dismiss\",\n\t\t\tcode: '<div className=\"flex flex-wrap gap-2\">\\n {selected.map((tag) => (\\n <Tag key={tag} variant=\"secondary\" onRemove={() => deselect(tag)}>\\n {tag}\\n </Tag>\\n ))}\\n</div>',\n\t\t\tcomposition: [\"multi-select\", \"form\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Status tag (non-interactive)\",\n\t\t\tdescription: \"Static tag without dismiss — equivalent to Badge but uses Tag for consistency\",\n\t\t\tcode: '<Tag variant=\"outline\">Beta</Tag>',\n\t\t\tcomposition: [\"status\", \"label\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for tokens the user can dismiss: filter pills, multi-select selections, draft attachments. Pair onRemove with a state setter that drops the value from your collection.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-interactive labels (use Badge). Don't use for state-bearing 'click to filter' affordances — those should be Toggle or ToggleGroup so the active state is announced as 'pressed'/'not pressed' to assistive tech.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting onRemove on a tag the user CAN dismiss — leaves the affordance invisible\",\n\t\t\t\"Calling it Tag but rendering inside a list of static labels — confuses Tag (interactive) vs Badge (decorative) semantics\",\n\t\t\t\"Wrapping the tag itself in a <button> — the dismiss button already handles its own click; double-button breaks accessibility\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Tag without onRemove for a static / decorative label\",\n\t\t\t\tinsteadUse: \"badge\",\n\t\t\t\twhy: \"Badge is the non-interactive sibling. Tag without onRemove ships an unused close-button container — wasted DOM and ambiguous semantics. Reach for Badge when there's nothing to dismiss.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tag as a click-to-filter chip (selected vs unselected state)\",\n\t\t\t\tinsteadUse: \"toggle\",\n\t\t\t\twhy: \"Toggle's role='button' + aria-pressed announces selected state to AT. Tag's close-button doesn't model 'pressed'; consumers end up with non-announced state.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tag for a single-select dropdown's chosen value\",\n\t\t\t\tinsteadUse: \"select\",\n\t\t\t\twhy: \"Select renders its value text inside the trigger. Tag would duplicate the token and complicate the keyboard nav (focus on Tag's close vs Select's trigger).\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"badge\", \"toggle\", \"toggle-group\", \"multi-combobox\"],\n\t\taccessibilityNotes:\n\t\t\t\"Close button gets aria-label derived from children when they're a string ('Remove Urgent'). Override via removeLabel. Tag itself is a span — wrap in a list (`role='list'` + `role='listitem'`) when rendering N tags as a collection.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"tag\", \"chip\", \"pill\", \"filter\", \"removable\", \"multi-select\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const treeSchema: ComponentSchemaDefinition = {\n\tname: \"tree\",\n\tdisplayName: \"Tree\",\n\tdescription:\n\t\t\"Generic hierarchical list with roving-tabindex keyboard navigation. Distinct from FileTree (which adds folder/file icon-by-extension logic) — Tree is content-agnostic for org charts, taxonomy pickers, navigation trees.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"data\", type: \"object\", required: true, description: \"Root nodes (TreeNode[]).\" },\n\t\t{ name: \"defaultExpanded\", type: \"object\", required: false, description: \"Initial expanded ids (uncontrolled). string[].\" },\n\t\t{ name: \"expanded\", type: \"object\", required: false, description: \"Controlled expanded ids. string[].\" },\n\t\t{ name: \"onExpandedChange\", type: \"function\", required: false, description: \"Callback (ids: string[]) => void.\" },\n\t\t{ name: \"selected\", type: \"string\", required: false, description: \"Controlled selected node id.\" },\n\t\t{ name: \"onSelect\", type: \"function\", required: false, description: \"Callback (id: string) => void on activation.\" },\n\t\t{ name: \"aria-label\", type: \"string\", required: true, description: \"Accessible name for the tree landmark.\" },\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: [\"foreground\", \"accent\", \"accent-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Org chart\",\n\t\t\tdescription: \"Hierarchical staff tree with expand/select\",\n\t\t\tcode: '<Tree\\n aria-label=\"Org chart\"\\n data={[\\n { id: \"ceo\", label: \"CEO\", children: [\\n { id: \"cto\", label: \"CTO\", children: [{ id: \"eng-lead\", label: \"Eng Lead\" }] },\\n { id: \"cmo\", label: \"CMO\" },\\n ]},\\n ]}\\n defaultExpanded={[\"ceo\"]}\\n onSelect={(id) => console.log(id)}\\n/>',\n\t\t\tcomposition: [\"tree\", \"navigation\", \"hierarchy\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Taxonomy picker\",\n\t\t\tdescription: \"Categorize a record by picking a leaf in a 3-level taxonomy\",\n\t\t\tcode: '<Tree\\n aria-label=\"Category\"\\n data={taxonomy}\\n selected={category}\\n onSelect={setCategory}\\n/>',\n\t\t\tcomposition: [\"tree\", \"form\", \"picker\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for hierarchical data the user navigates by keyboard or click — org charts, taxonomy pickers, generic nav trees. Pair with selected + onSelect for picker semantics; pair with onExpandedChange to control expansion externally.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for filesystem-shaped data — FileTree adds folder/file icon-by-extension. Don't use for two-level groupings without item-selection — Accordion is the cleaner abstraction. Don't use for primary site nav (NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — required, no fallback\",\n\t\t\t\"Confusing data prop (TreeNode[]) with FileTree's nodes prop (FileTreeNode[]) — same shape but different icon defaults\",\n\t\t\t\"Trying to pass selected without onSelect — controlled-mode without an updater leaves it stuck\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Tree for filesystem-shaped data (folders + files with icon-by-extension)\",\n\t\t\t\tinsteadUse: \"file-tree\",\n\t\t\t\twhy: \"FileTree ships file/folder icon defaults + extension-based color hints. Tree is icon-agnostic — using it for files means hand-wiring icon logic each time.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tree for a two-level grouping (sections that expand to reveal content) without item-selection\",\n\t\t\t\tinsteadUse: \"accordion\",\n\t\t\t\twhy: \"Accordion is purpose-built for collapse-content-into-sections. Tree's role='tree' implies item-selection semantics that don't fit pure expand/collapse content groups.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tree for primary site / app navigation\",\n\t\t\t\tinsteadUse: \"navigation-menu\",\n\t\t\t\twhy: \"NavigationMenu ships landmark role + skip links + the right ARIA for primary nav. Tree's tree role is for data, not routing.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"file-tree\", \"accordion\", \"navigation-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"role='tree' on root, role='treeitem' per row, aria-expanded on parents, aria-selected on the chosen leaf. Keyboard: ↑↓ move focus, → expand (or jump to first child if expanded), ← collapse (or jump to parent), Home/End first/last visible row, Enter/Space activate.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"tree\", \"hierarchy\", \"navigation\", \"picker\", \"ARIA-tree\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toolbarSchema: ComponentSchemaDefinition = {\n\tname: \"toolbar\",\n\tdisplayName: \"Toolbar\",\n\tdescription:\n\t\t\"A horizontal or vertical group of related controls (buttons, toggles, links, separators) with arrow-key roving focus. Wraps Radix Toolbar so the keyboard semantics are correct out of the box.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\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: \"Layout direction. Drives arrow-key behavior — ←→ for horizontal, ↑↓ for vertical.\",\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: true,\n\t\t\tdescription: \"Accessible name for the toolbar landmark. Toolbar mounts as a role='toolbar' region — without a name, AT users hear an unlabelled landmark. If a visible heading sits adjacent, you may pair via aria-labelledby instead (which still satisfies this requirement).\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\tdescription: \"Layout direction.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"horizontal\",\n\t\t\t\t\tdescription: \"Default — controls flow left-to-right.\",\n\t\t\t\t\tuseWhen: \"the toolbar sits at the top or bottom of a panel / editor\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"vertical\",\n\t\t\t\t\tdescription: \"Controls flow top-to-bottom.\",\n\t\t\t\t\tuseWhen: \"the toolbar runs alongside a canvas / editor as a side rail\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"horizontal\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Mix of ToolbarButton / ToolbarToggleGroup / ToolbarToggleItem / ToolbarLink / ToolbarSeparator.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-toolbar\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"border\", \"foreground\", \"accent\", \"accent-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Editor toolbar with toggle group\",\n\t\t\tdescription: \"Undo + Redo + Separator + alignment toggles\",\n\t\t\tcode: '<Toolbar aria-label=\"Editor controls\">\\n <ToolbarButton onClick={onUndo}>Undo</ToolbarButton>\\n <ToolbarButton onClick={onRedo}>Redo</ToolbarButton>\\n <ToolbarSeparator />\\n <ToolbarToggleGroup type=\"single\" defaultValue=\"left\">\\n <ToolbarToggleItem value=\"left\">Left</ToolbarToggleItem>\\n <ToolbarToggleItem value=\"center\">Center</ToolbarToggleItem>\\n <ToolbarToggleItem value=\"right\">Right</ToolbarToggleItem>\\n </ToolbarToggleGroup>\\n</Toolbar>',\n\t\t\tcomposition: [\"toolbar\", \"editor\", \"toggle-group\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Side-rail vertical toolbar\",\n\t\t\tdescription: \"Vertical toolbar alongside a canvas\",\n\t\t\tcode: '<Toolbar orientation=\"vertical\" aria-label=\"Drawing tools\">\\n <ToolbarToggleGroup type=\"single\" defaultValue=\"select\">\\n <ToolbarToggleItem value=\"select\"><CursorIcon /></ToolbarToggleItem>\\n <ToolbarToggleItem value=\"pen\"><PenIcon /></ToolbarToggleItem>\\n <ToolbarToggleItem value=\"eraser\"><EraserIcon /></ToolbarToggleItem>\\n </ToolbarToggleGroup>\\n <ToolbarSeparator />\\n <ToolbarButton aria-label=\"Settings\"><SettingsIcon /></ToolbarButton>\\n</Toolbar>',\n\t\t\tcomposition: [\"toolbar\", \"vertical\", \"canvas\", \"icon-only\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to group related controls that operate on a single content area (editor, canvas, table). The roving-tabindex behavior means Tab enters the toolbar at the first item, then arrow keys navigate within — preserves the surrounding page's tab order.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for app-level menus (use Menubar). Don't use for a single mutually-exclusive selection (use ToggleGroup directly — Toolbar is for groupING ToggleGroups + Buttons + Links). Don't use for navigation (use NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label when the toolbar isn't adjacent to a visible heading\",\n\t\t\t\"Mixing controls that operate on different content areas — Toolbar implies a single target\",\n\t\t\t\"Using Toolbar inside a Toolbar — nest a vertical Toolbar inside a horizontal one if you really need a 2D grid, but consider whether a single Toolbar with Separators is clearer\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Toolbar for a single-axis mutually-exclusive selection (alignment, list-style)\",\n\t\t\t\tinsteadUse: \"toggle-group\",\n\t\t\t\twhy: \"Toolbar is the multi-control container. ToggleGroup directly gives you 'pick one of N' with proper keyboard semantics — adding a Toolbar wrapper just costs DOM.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Toolbar for an application top-level menu (File, Edit, View, …)\",\n\t\t\t\tinsteadUse: \"menubar\",\n\t\t\t\twhy: \"Menubar models nested menus with proper open-on-focus semantics. Toolbar is for flat command groups; the menu pattern needs Menubar.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Toolbar for primary site / app navigation\",\n\t\t\t\tinsteadUse: \"navigation-menu\",\n\t\t\t\twhy: \"NavigationMenu ships landmark role + skip links + the right ARIA attributes for primary nav. Toolbar is for content-region controls, not page-level routing.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"toggle\", \"toggle-group\", \"menubar\", \"navigation-menu\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix wires role='toolbar', roving tabindex (Tab enters at the first focusable item, arrows move within), Home/End jump to first/last. Always pass aria-label when there's no visible heading next to the toolbar.\",\n\t\ttokenBudget: 600,\n\t},\n\ttags: [\"toolbar\", \"editor\", \"controls\", \"command-group\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const attachmentSchema: ComponentSchemaDefinition = {\n\tname: \"attachment\",\n\tdisplayName: \"Attachment\",\n\tdescription:\n\t\t\"File / image thumbnail with optional remove affordance + upload-progress overlay. Composes with the AI Composer for multimodal message drafts. Auto-detects image vs file variant from MIME type + preview URL.\",\n\tcategory: \"ai\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"file\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Native File OR { name, size, type, preview? } metadata. Drives variant auto-detection (image+preview → thumbnail; else file icon + name + size).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onRemove\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Click handler for the × overlay button. Signature: () => void.\",\n\t\t},\n\t\t{\n\t\t\tname: \"progress\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Upload progress in [0, 1). Values >= 1 (or undefined) hide the progressbar — pass undefined once the upload completes. Internally scaled to 0–100 for aria-valuenow so AT announces 'NN percent.'\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Override the auto-detected variant. 'image' renders a thumbnail; 'file' renders icon + name + size.\",\n\t\t\tenumValues: [\"file\", \"image\"],\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 layout. Auto-detected unless overridden.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"file\",\n\t\t\t\t\tdescription: \"Generic file icon + name + size. Bordered card with horizontal padding.\",\n\t\t\t\t\tuseWhen: \"the attachment is a non-image (PDF, code, archive, audio) OR an image without a preview URL\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"image\",\n\t\t\t\t\tdescription: \"80×80 thumbnail of the preview URL. Zero padding so the image fills the card.\",\n\t\t\t\t\tuseWhen: \"the attachment is an image AND a preview URL is available (use URL.createObjectURL on the File before passing in)\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"file\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"border\", \"foreground\", \"muted\", \"muted-foreground\", \"primary\", \"accent\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Image preview in composer\",\n\t\t\tdescription: \"Image attachment with remove affordance\",\n\t\t\tcode: 'function ComposerWithImage() {\\n const [file, setFile] = React.useState<File | null>(null);\\n const preview = file ? URL.createObjectURL(file) : null;\\n return (\\n <Composer>\\n {file && preview ? (\\n <Attachment\\n file={{ name: file.name, size: file.size, type: file.type, preview }}\\n onRemove={() => setFile(null)}\\n />\\n ) : null}\\n {/* …textarea + send button… */}\\n </Composer>\\n );\\n}',\n\t\t\tcomposition: [\"composer\", \"ai\", \"image\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Upload progress\",\n\t\t\tdescription: \"File attachment with live progress overlay\",\n\t\t\tcode: '<Attachment\\n file={{ name: \"report.pdf\", size: 2_400_000, type: \"application/pdf\" }}\\n progress={uploadProgress}\\n onRemove={() => cancelUpload()}\\n/>',\n\t\t\tcomposition: [\"upload\", \"progress\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Static file preview (no remove)\",\n\t\t\tdescription: \"Read-only attachment in a sent message\",\n\t\t\tcode: '<Attachment file={{ name: \"diagram.svg\", size: 18000, type: \"image/svg+xml\" }} />',\n\t\t\tcomposition: [\"read-only\", \"message\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use inside a Composer to show pending attachments the user can remove before sending, or inside a Message to show attached files in a sent turn. Pair native File objects with URL.createObjectURL(file) before rendering — the component doesn't manage object URLs.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the upload-target affordance itself (that's Dropzone — it handles drag-drop + click-to-pick). Don't use for static document previews outside a chat composer (use Card with a file icon). Don't use for inline images in markdown — use Markdown's image rendering.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting URL.createObjectURL on a native File — preview won't render and the variant falls back to file\",\n\t\t\t\"Not revoking object URLs when the attachment is removed — leaks memory\",\n\t\t\t\"Using Attachment without onRemove inside a Composer — leaves the user unable to remove\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Attachment as the upload-input affordance (drag-drop area, click-to-pick)\",\n\t\t\t\tinsteadUse: \"dropzone\",\n\t\t\t\twhy: \"Dropzone is purpose-built for the upload-target — drag/drop semantics, click-to-pick, accept-MIME validation. Attachment SHOWS the result; Dropzone is the input.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Attachment for static document previews on a profile / details page\",\n\t\t\t\tinsteadUse: \"card\",\n\t\t\t\twhy: \"Card is the static-content surface. Attachment ships remove + progress overlays consumers don't need outside the chat-composer flow.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Attachment to render an inline image inside markdown body text\",\n\t\t\t\tinsteadUse: \"markdown\",\n\t\t\t\twhy: \"Markdown's `` already renders an inline image with the right semantics. Attachment is for the discrete-attachment-token UX (with name, size, remove); markdown handles inline media.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"composer\", \"dropzone\", \"message\", \"message-list\"],\n\t\taccessibilityNotes:\n\t\t\t\"Image variant uses <img alt> from the file name. Remove button gets aria-label='Remove ${name}'. Progress overlay is role='progressbar' with aria-valuemin=0 / aria-valuemax=100 / aria-valuenow=Math.round(progress * 100) and a generic 'Uploading ${name}' aria-label — AT announces 'NN percent.'\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"attachment\", \"ai\", \"composer\", \"file\", \"image\", \"upload\", \"multimodal\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const messageSchema: ComponentSchemaDefinition = {\n\tname: \"message\",\n\tdisplayName: \"Message\",\n\tdescription:\n\t\t\"Single chat-message row scoped to one speaker (user / assistant / system / tool). Headless content slot — pair with Markdown, CodeBlock, or ToolCall children.\",\n\tcategory: \"ai\",\n\tsubcategory: \"chat\",\n\tprops: [\n\t\t{\n\t\t\tname: \"role\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Speaker. Drives variant styling and the data-role attribute.\",\n\t\t\tenumValues: [\"user\", \"assistant\", \"system\", \"tool\"],\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Message content. Strings, Markdown, CodeBlock, ToolCall, or any composition.\",\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 merged onto the row.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"role\",\n\t\t\tdescription: \"Visual treatment per speaker.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"user\", description: \"Tinted secondary background — user turns.\", useWhen: \"The author is the human.\" },\n\t\t\t\t{ value: \"assistant\", description: \"Card background — model output.\", useWhen: \"The author is the LLM/agent.\" },\n\t\t\t\t{ value: \"system\", description: \"Muted, italic — system instructions.\", useWhen: \"Rendering a visible system prompt or framing message.\" },\n\t\t\t\t{ value: \"tool\", description: \"Accent left-border — tool messages distinct from assistant text.\", useWhen: \"Showing raw tool/function output as its own turn.\" },\n\t\t\t],\n\t\t\tdefault: \"assistant\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Message body. Compose with Markdown, CodeBlock, ToolCall, or plain text.\",\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\", \"ai/types\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"foreground\", \"card\", \"card-foreground\", \"muted\", \"muted-foreground\", \"accent\", \"accent-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"User and assistant turns\",\n\t\t\tdescription: \"Two messages alternating roles.\",\n\t\t\tcode: '<>\\n <Message role=\"user\">What\\'s the capital of France?</Message>\\n <Message role=\"assistant\">Paris.</Message>\\n</>',\n\t\t\tcomposition: [\"chat\", \"turns\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Composed assistant turn\",\n\t\t\tdescription: \"Markdown + ToolCall inside one assistant message.\",\n\t\t\tcode: '<Message role=\"assistant\">\\n <Markdown>{response}</Markdown>\\n <ToolCall name=\"search\" state=\"result\" result={hits} />\\n</Message>',\n\t\t\tcomposition: [\"chat\", \"agent\", \"tool-use\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Wrap every conversation turn — user, assistant, system, or tool. Pair with MessageList for the scrolling viewport. Compose Markdown, CodeBlock, and ToolCall as children for rich assistant turns.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-conversational text (use Card or plain elements). Don't put streaming logic here — the consumer drives state, Message just renders.\",\n\t\tcommonMistakes: [\n\t\t\t\"Adding streaming/fetch logic inside Message — keep it pure\",\n\t\t\t\"Using `role=\\\"tool\\\"` for assistant text that mentions a tool — `tool` is for the actual tool turn\",\n\t\t\t\"Hard-coding markdown rendering inside Message — pass <Markdown>{...}</Markdown> as a child instead\",\n\t\t],\n\t\trelatedComponents: [\"message-list\", \"markdown\", \"code-block\", \"tool-call\", \"message-actions\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders as a div with `data-role`. For screen-reader chat semantics, wrap MessageList in `role=\\\"log\\\"` and consider `aria-live=\\\"polite\\\"` on the streaming container.\",\n\t\ttokenBudget: 220,\n\t},\n\ttags: [\"ai\", \"chat\", \"message\", \"turn\", \"conversation\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const messageListSchema: ComponentSchemaDefinition = {\n\tname: \"message-list\",\n\tdisplayName: \"MessageList\",\n\tdescription:\n\t\t\"Auto-scrolling viewport for a chat stream. Pins to the bottom during streaming unless the user scrolls up to read history.\",\n\tcategory: \"ai\",\n\tsubcategory: \"chat\",\n\tprops: [\n\t\t{\n\t\t\tname: \"autoScroll\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Pin to bottom on content change (when the user is already near the bottom).\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Sequence of <Message> elements.\",\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 (e.g. height, padding).\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Messages to render in order.\",\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: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic chat\",\n\t\t\tdescription: \"Map messages from useChat into a viewport with bottom-pin behavior.\",\n\t\t\tcode: '<MessageList className=\"h-96\">\\n {messages.map((m) => (\\n <Message key={m.id} role={m.role}>{m.content}</Message>\\n ))}\\n</MessageList>',\n\t\t\tcomposition: [\"chat\", \"scroll\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Wrap a list of <Message> components when you want auto-scroll-on-stream behavior. Always set an explicit height (h-*, max-h-*) on the className so the viewport actually scrolls.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for static FAQs or non-streaming layouts (use a normal Stack). Don't use as a generic scroll container — its bottom-pin behavior is opinionated.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set a height — the viewport won't scroll without `h-*` or `max-h-*`\",\n\t\t\t\"Disabling autoScroll while still expecting bottom-pin behavior — they're the same flag\",\n\t\t\t\"Putting non-Message children inside — a divider or banner breaks the role=log semantics\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"composer\", \"loading-indicator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders as `role=\\\"log\\\"` with `aria-live=\\\"polite\\\"` and `aria-relevant=\\\"additions\\\"` so assistive tech announces new turns. If you replace turns wholesale (e.g. on regenerate), pass `aria-relevant=\\\"additions removals\\\"` as a prop — props spread onto the underlying div and override the default.\",\n\t\ttokenBudget: 240,\n\t},\n\ttags: [\"ai\", \"chat\", \"scroll\", \"viewport\", \"streaming\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const composerSchema: ComponentSchemaDefinition = {\n\tname: \"composer\",\n\tdisplayName: \"Composer\",\n\tdescription:\n\t\t\"Multi-line input + submission shell for chat. Submits on Enter (Shift+Enter inserts newline). Trailing slot for attachment + send buttons.\",\n\tcategory: \"ai\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Controlled textarea value.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Called with the new value on each keystroke.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSubmit\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Called with the trimmed value on Enter or form submit.\",\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: \"Lock the input and suppress submission (e.g. during streaming).\",\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: \"Textarea placeholder copy.\",\n\t\t},\n\t\t{\n\t\t\tname: \"submitOnEnter\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Submit when Enter is pressed without Shift. Disable to require button click.\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Trailing slot — attachment buttons, voice toggle, send button, etc.\",\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 on the form wrapper.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Trailing action buttons rendered after the textarea.\",\n\t\t\trequired: false,\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: [\"background\", \"ring\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic composer\",\n\t\t\tdescription: \"Controlled input + send button.\",\n\t\t\tcode: 'const [value, setValue] = useState(\"\");\\n<Composer\\n value={value}\\n onValueChange={setValue}\\n onSubmit={(v) => { send(v); setValue(\"\"); }}\\n placeholder=\"Ask anything…\"\\n>\\n <Button type=\"submit\" disabled={!value.trim()}>Send</Button>\\n</Composer>',\n\t\t\tcomposition: [\"chat\", \"form\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"With attachment slot\",\n\t\t\tdescription: \"Attach button on the leading edge of the trailing slot.\",\n\t\t\tcode: '<Composer value={v} onValueChange={setV} onSubmit={send}>\\n <Button variant=\"ghost\" size=\"icon\" onClick={pickFile}><Paperclip /></Button>\\n <Button type=\"submit\">Send</Button>\\n</Composer>',\n\t\t\tcomposition: [\"chat\", \"form\", \"attachment\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Wrap any user-input surface in an AI app — chatbots, AI editors, agent prompts. Pair with `useChat` from @ai-sdk/react or any equivalent state hook.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-chat forms (use Form + Textarea). Don't bake fetch/streaming logic into onSubmit — keep the network call in the consumer.\",\n\t\tcommonMistakes: [\n\t\t\t\"Calling onSubmit with the raw event instead of the value — onSubmit receives the trimmed string already\",\n\t\t\t\"Forgetting to clear `value` after submit — Composer is fully controlled\",\n\t\t\t\"Wrapping the component in <form> — Composer renders its own form element\",\n\t\t],\n\t\trelatedComponents: [\"message-list\", \"suggestion\", \"loading-indicator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders a real <form> + <textarea>, so Enter submission and screen-reader announcements work without extra ARIA. Pass `aria-label` on the wrapper if there's no visible label.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"ai\", \"input\", \"chat\", \"form\", \"composer\", \"textarea\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const loadingIndicatorSchema: ComponentSchemaDefinition = {\n\tname: \"loading-indicator\",\n\tdisplayName: \"LoadingIndicator\",\n\tdescription: \"Streaming/typing feedback with three motion variants — dots, pulse, bar.\",\n\tcategory: \"ai\",\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: \"dots\",\n\t\t\tdescription: \"Animation style.\",\n\t\t\tenumValues: [\"dots\", \"pulse\", \"bar\"],\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: \"md\",\n\t\t\tdescription: \"Text/icon scale.\",\n\t\t\tenumValues: [\"sm\", \"md\"],\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: 'Optional adjacent text label (e.g. \"Thinking…\").',\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.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Motion style.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"dots\", description: \"Three bouncing dots — classic typing indicator.\", useWhen: \"You want a familiar chat-style loading affordance.\" },\n\t\t\t\t{ value: \"pulse\", description: \"Single throbbing circle — minimal.\", useWhen: \"Tight inline space; one-character signal.\" },\n\t\t\t\t{ value: \"bar\", description: \"Horizontal sweep — implies progress without claiming a percentage.\", useWhen: \"Longer-running task (search, retrieval) where dots feel too perpetual.\" },\n\t\t\t],\n\t\t\tdefault: \"dots\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Inline typing dots\",\n\t\t\tdescription: \"Render while waiting for the first token.\",\n\t\t\tcode: '{isLoading && <LoadingIndicator label=\"Thinking…\" />}',\n\t\t\tcomposition: [\"chat\", \"loading\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Show during the gap between submitting a prompt and the first streamed token, or while a long-running tool call is in flight.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for known-percent progress (use Progress). Don't keep visible after the first token streams in — stream itself signals activity.\",\n\t\tcommonMistakes: [\n\t\t\t\"Leaving the indicator visible while content streams — overlap looks broken\",\n\t\t\t\"Using `bar` for sub-second waits — the sweep can't complete a cycle\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"composer\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders as `role=\\\"status\\\"` with `aria-live=\\\"polite\\\"` and an `aria-label`. Pass a meaningful label so screen readers announce \\\"Searching docs\\\" rather than the default \\\"Loading\\\".\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"ai\", \"loading\", \"spinner\", \"typing\", \"indicator\", \"streaming\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const suggestionSchema: ComponentSchemaDefinition = {\n\tname: \"suggestion\",\n\tdisplayName: \"Suggestion\",\n\tdescription: \"Clickable prompt pill / quick-action chip. Forwards a payload to onSelect on click.\",\n\tcategory: \"ai\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Payload sent to onSelect. Defaults to the rendered children when they are a string.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Called with the payload when the chip is clicked.\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Visible label.\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Visible label of the chip.\",\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: [\"background\", \"secondary\", \"ring\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Starter prompts\",\n\t\t\tdescription: \"Render onboarding suggestions and drop into the composer on click.\",\n\t\t\tcode: '<Cluster gap=\"sm\">\\n {STARTERS.map((s) => (\\n <Suggestion key={s} value={s} onSelect={setInput}>{s}</Suggestion>\\n ))}\\n</Cluster>',\n\t\t\tcomposition: [\"chat\", \"onboarding\", \"prompts\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Show 3–6 starter prompts before the first turn, or follow-up prompts after an assistant turn. Combine with Cluster for wrap-friendly layout.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for navigation (use Button or a link). Don't auto-send on click without showing the user what's about to be sent — set the value into Composer first.\",\n\t\tcommonMistakes: [\n\t\t\t\"Auto-firing onSelect into useChat.append without populating the input first — feels surprising\",\n\t\t\t\"Long labels — these are pills, keep under ~40 chars\",\n\t\t],\n\t\trelatedComponents: [\"composer\", \"cluster\", \"button\"],\n\t\taccessibilityNotes:\n\t\t\t\"Real <button>, so keyboard activation and screen-reader announcement work natively. If the label is non-text, set `aria-label`.\",\n\t\ttokenBudget: 220,\n\t},\n\ttags: [\"ai\", \"suggestion\", \"prompt\", \"pill\", \"chip\", \"quick-action\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toolCallSchema: ComponentSchemaDefinition = {\n\tname: \"tool-call\",\n\tdisplayName: \"ToolCall\",\n\tdescription:\n\t\t\"Collapsible card showing a tool/function invocation — name, lifecycle state badge, expandable args + result body.\",\n\tcategory: \"ai\",\n\tsubcategory: \"agent\",\n\tprops: [\n\t\t{\n\t\t\tname: \"name\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Tool / function name (e.g. searchDocs, getWeather).\",\n\t\t},\n\t\t{\n\t\t\tname: \"state\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Lifecycle of the invocation.\",\n\t\t\tenumValues: [\"pending\", \"running\", \"result\", \"error\"],\n\t\t},\n\t\t{\n\t\t\tname: \"args\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"JSON-stringifiable input passed to the tool.\",\n\t\t},\n\t\t{\n\t\t\tname: \"result\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"JSON-stringifiable output returned by the tool. May be a string for plain-text results.\",\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: \"Start expanded. Default collapsed to keep the chat clean.\",\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 on the outer Collapsible root.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"ai/types\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"card-foreground\", \"muted\", \"muted-foreground\", \"primary\", \"accent\", \"accent-foreground\", \"destructive\", \"ring\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Done invocation\",\n\t\t\tdescription: \"Map an AI SDK `tool-*` part to a ToolCall.\",\n\t\t\tcode: '<ToolCall\\n name=\"searchDocs\"\\n state=\"result\"\\n args={{ query: \"auth\" }}\\n result={{ hits: docs.length }}\\n/>',\n\t\t\tcomposition: [\"agent\", \"tool-use\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Streaming run\",\n\t\t\tdescription: \"While the tool is executing, show running state without args.\",\n\t\t\tcode: '<ToolCall name=\"getWeather\" state=\"running\" args={{ city: \"NYC\" }} />',\n\t\t\tcomposition: [\"agent\", \"tool-use\", \"streaming\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render every tool/function invocation in an agent UI. Map AI SDK v5 `tool-TOOLNAME` parts (state: input-streaming|input-available|output-available|output-error) or LangChain `AIMessage.tool_calls` directly.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for plain assistant text (use Message). Don't render the tool's actual UI here — ToolCall is a debug/transparency card; for a rich tool UI, render that as a sibling node inside the Message.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing the entire AI SDK part object as `result` — extract the output payload first\",\n\t\t\t\"Setting `defaultOpen` for every call — quickly clutters the chat\",\n\t\t\t\"Using `state=\\\"result\\\"` for an error — use `error` so the user sees red\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"reasoning\", \"loading-indicator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Built on Radix Collapsible — keyboard expand/collapse with Enter/Space works natively. Add `aria-label` on the trigger if the tool name is opaque.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"ai\", \"agent\", \"tool-call\", \"function-call\", \"collapsible\", \"transparency\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const reasoningSchema: ComponentSchemaDefinition = {\n\tname: \"reasoning\",\n\tdisplayName: \"Reasoning\",\n\tdescription:\n\t\t\"Collapsible thinking-trace block for Anthropic-style reasoning or chain-of-thought scratchpads. Optional duration in the header.\",\n\tcategory: \"ai\",\n\tsubcategory: \"agent\",\n\tprops: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Reasoning content. Wrap with Markdown for formatted thinking traces.\",\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: \"Start expanded. Default collapsed.\",\n\t\t},\n\t\t{\n\t\t\tname: \"durationMs\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: 'Time spent thinking in ms — renders \"Thought for 4.2s\" in the header.',\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: \"Override the default header label.\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Reasoning trace body.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"muted\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Thinking trace with duration\",\n\t\t\tdescription: 'Header reads \"Thought for 4.2s\" — body reveals the full trace on click.',\n\t\t\tcode: '<Reasoning durationMs={4200}>\\n <Markdown>{thinkingMarkdown}</Markdown>\\n</Reasoning>',\n\t\t\tcomposition: [\"agent\", \"reasoning\", \"anthropic\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render Anthropic `thinking` blocks, chain-of-thought scratchpads, or any model-internal reasoning the user can optionally inspect.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the assistant's actual answer (use Message). Don't auto-open for routine turns — only worth expanding for debug or trust-building UX.\",\n\t\tcommonMistakes: [\n\t\t\t\"Showing reasoning that wasn't actually produced — fabricating thinking blocks erodes trust\",\n\t\t\t\"`durationMs` measured from request start instead of model thinking time — use the model's reported duration when available\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"tool-call\", \"markdown\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix Collapsible — keyboard expand/collapse via Enter/Space. The italic header is decorative; use the visible label for screen readers.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"ai\", \"agent\", \"reasoning\", \"thinking\", \"chain-of-thought\", \"collapsible\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const messageActionsSchema: ComponentSchemaDefinition = {\n\tname: \"message-actions\",\n\tdisplayName: \"MessageActions\",\n\tdescription:\n\t\t\"Inline action-button row beneath a message — copy, regenerate, thumbs-up/down. Pure container; consumer supplies the buttons + handlers.\",\n\tcategory: \"ai\",\n\tsubcategory: \"chat\",\n\tprops: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Action buttons (typically Button variant=\\\"ghost\\\" size=\\\"icon\\\").\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Action buttons rendered in a horizontal row.\",\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: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Copy + regenerate\",\n\t\t\tdescription: \"Two ghost icon buttons under an assistant message.\",\n\t\t\tcode: '<MessageActions>\\n <Button variant=\"ghost\" size=\"icon\" onClick={() => navigator.clipboard.writeText(text)}><CopyIcon /></Button>\\n <Button variant=\"ghost\" size=\"icon\" onClick={onRegenerate}><RetryIcon /></Button>\\n</MessageActions>',\n\t\t\tcomposition: [\"chat\", \"actions\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render after assistant turns where the user might want to copy, regenerate, or rate the response. Combine with `group/message` on the parent Message to enable hover-reveal.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use under user turns (no actions to take). Don't put primary CTAs here — actions row is for secondary, optional follow-ups.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting `group/message` on the parent Message — hover-reveal won't trigger\",\n\t\t\t\"Stacking too many buttons (more than ~4) — overwhelms the chat\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"button\"],\n\t\taccessibilityNotes:\n\t\t\t\"Pure layout container. Each child button must carry its own `aria-label` since icon-only buttons have no accessible text.\",\n\t\ttokenBudget: 180,\n\t},\n\ttags: [\"ai\", \"chat\", \"actions\", \"row\", \"container\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const citationSchema: ComponentSchemaDefinition = {\n\tname: \"citation\",\n\tdisplayName: \"Citation\",\n\tdescription:\n\t\t\"Source attribution chip — renders a citation for a RAG hit, search result, or any external reference. Becomes a focusable link when url is provided.\",\n\tcategory: \"ai\",\n\tsubcategory: \"rag\",\n\tprops: [\n\t\t{\n\t\t\tname: \"title\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Source title or filename (e.g. \\\"auth-overview.md\\\").\",\n\t\t},\n\t\t{\n\t\t\tname: \"url\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"If provided, the chip becomes an anchor opening in a new tab.\",\n\t\t},\n\t\t{\n\t\t\tname: \"page\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional page number (renders \\\"p.3\\\").\",\n\t\t},\n\t\t{\n\t\t\tname: \"index\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional inline footnote number (renders \\\"[1]\\\").\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Trailing slot — extra metadata (e.g. relevance score).\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Trailing extras — relevance score, badge, etc.\",\n\t\t\trequired: false,\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: [\"card\", \"secondary\", \"ring\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Footnote-style citations\",\n\t\t\tdescription: \"Numbered citations after an assistant turn.\",\n\t\t\tcode: '<Cluster gap=\"xs\">\\n {sources.map((s, i) => (\\n <Citation key={s.id} title={s.title} url={s.url} index={i + 1} />\\n ))}\\n</Cluster>',\n\t\t\tcomposition: [\"rag\", \"citations\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Surface RAG/search-result sources after an assistant message. Use `index` for footnote-style numbering tied to inline `[1]` markers in the answer.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for general external links in chat (use Markdown). Don't fabricate sources — only render Citation for retrievals the model actually used.\",\n\t\tcommonMistakes: [\n\t\t\t\"Showing the URL twice (in `title` AND `url`) — pick a human title separately\",\n\t\t\t\"Skipping `target=\\\"_blank\\\"` — handled automatically when url is set; don't override\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"cluster\"],\n\t\taccessibilityNotes:\n\t\t\t\"With `url`, renders a real anchor (`rel=\\\"noreferrer noopener\\\"`). Without `url`, renders a static span. Add `aria-label` on the wrapper if title alone lacks context.\",\n\t\ttokenBudget: 240,\n\t},\n\ttags: [\"ai\", \"rag\", \"citation\", \"source\", \"footnote\", \"chip\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const markdownSchema: ComponentSchemaDefinition = {\n\tname: \"markdown\",\n\tdisplayName: \"Markdown\",\n\tdescription:\n\t\t\"Streaming-safe markdown renderer wrapping Vercel's streamdown. Handles partial input mid-stream without throwing.\",\n\tcategory: \"ai\",\n\tsubcategory: \"content\",\n\tprops: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Raw markdown. May be a partial chunk during streaming.\",\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 on the root element.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Markdown source as a string.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"string\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"streamdown\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"primary\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Streaming assistant turn\",\n\t\t\tdescription: \"Render the in-flight assistant message as it arrives.\",\n\t\t\tcode: '<Message role=\"assistant\">\\n <Markdown>{message.content}</Markdown>\\n</Message>',\n\t\t\tcomposition: [\"chat\", \"streaming\", \"markdown\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom rendering: drop down to Streamdown\",\n\t\t\tdescription: \"For per-element overrides, use streamdown directly with our CodeBlock primitive.\",\n\t\t\tcode: 'import { Streamdown } from \"streamdown\";\\nimport { CodeBlock } from \"@hex-core/components\";\\n\\n<Streamdown components={{ pre: ({ children }) => <CodeBlock code={extractCode(children)} /> }}>\\n {markdown}\\n</Streamdown>',\n\t\t\tcomposition: [\"chat\", \"code\", \"override\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render any markdown content from an LLM — assistant turns, system messages with formatting, RAG citations with inline links. Required for streaming because raw markdown parsers throw on unfinished input.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for plain text without formatting (just render the string). Don't bypass it for streamed content — partial input WILL break a non-streaming parser.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing JSX children instead of a markdown string — Markdown only accepts strings\",\n\t\t\t\"Trying to override per-element renderers via Markdown — drop down to `Streamdown` directly for that (we keep our public surface minimal so the DTS bundle doesn't drag in shiki's giant language union)\",\n\t\t\t\"Forgetting Tailwind Typography (`prose`) classes are required to style the output\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"code-block\", \"citation\"],\n\t\taccessibilityNotes:\n\t\t\t\"Inherits semantics from streamdown: real headings, lists, links. Verify Tailwind Typography (prose) is enabled in your CSS — without it, output renders unstyled.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"ai\", \"markdown\", \"streaming\", \"content\", \"renderer\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const codeBlockSchema: ComponentSchemaDefinition = {\n\tname: \"code-block\",\n\tdisplayName: \"CodeBlock\",\n\tdescription:\n\t\t\"Server-rendered, syntax-highlighted code block with a language-label header and a copy button. Dual-theme via Shiki — same HTML for light + dark.\",\n\tcategory: \"ai\",\n\tsubcategory: \"content\",\n\tprops: [\n\t\t{\n\t\t\tname: \"code\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"The code to display. Plain text — no markdown fences.\",\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: 'Header label (e.g. \"pnpm\", \"tsx\"). Inferred from `language` if omitted.',\n\t\t},\n\t\t{\n\t\t\tname: \"language\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Shiki grammar key. Overrides inference from `label`.\",\n\t\t\tenumValues: [\"bash\", \"ts\", \"tsx\", \"js\", \"jsx\", \"json\", \"css\", \"html\", \"md\", \"py\", \"text\"],\n\t\t},\n\t\t{\n\t\t\tname: \"themes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdefault: { light: \"github-light-high-contrast\", dark: \"github-dark\" },\n\t\t\tdescription: \"Override the default theme pair. Keys: `light`, `dark` — values are Shiki theme IDs.\",\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 on the outer card.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"shiki\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"ai/code-block-copy\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"card-foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Install command\",\n\t\t\tdescription: \"Header label drives both the visible chip and Shiki grammar inference.\",\n\t\t\tcode: '<CodeBlock label=\"pnpm\" code=\"pnpm add @hex-core/components\" />',\n\t\t\tcomposition: [\"docs\", \"install\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Inline TS sample\",\n\t\t\tdescription: \"Explicit language overrides label inference.\",\n\t\t\tcode: '<CodeBlock language=\"tsx\" code={`<Button>Click</Button>`} />',\n\t\t\tcomposition: [\"docs\", \"code\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render any code snippet in docs, copy-to-clipboard install commands, or static AI chat output where server rendering is acceptable. Pair with Markdown's `components.pre` override to take over markdown code fences.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for streaming chat where the code grows mid-render — async Server Components can't update token-by-token. Use Streamdown's built-in client CodeBlock for that.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing markdown-fenced code (with ```) — strip the fences first\",\n\t\t\t\"Forgetting that this is async — must be awaited or rendered as RSC\",\n\t\t\t\"Using a Shiki theme that isn't bundled — fails with a runtime fetch error\",\n\t\t],\n\t\trelatedComponents: [\"markdown\", \"message\"],\n\t\taccessibilityNotes:\n\t\t\t\"Highlighted output is plain text inside a `<pre>` — screen readers read it normally. The copy button has its own `aria-label`. Add a meaningful `aria-label` on the wrapper if the label alone isn't descriptive.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"ai\", \"code\", \"shiki\", \"highlight\", \"copy\", \"rsc\"],\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/primitives/button/button.schema.ts","../src/primitives/input/input.schema.ts","../src/primitives/label/label.schema.ts","../src/primitives/textarea/textarea.schema.ts","../src/primitives/checkbox/checkbox.schema.ts","../src/primitives/switch/switch.schema.ts","../src/primitives/badge/badge.schema.ts","../src/primitives/separator/separator.schema.ts","../src/components/card/card.schema.ts","../src/components/tabs/tabs.schema.ts","../src/components/accordion/accordion.schema.ts","../src/components/dialog/dialog.schema.ts","../src/components/alert-dialog/alert-dialog.schema.ts","../src/components/dropdown-menu/dropdown-menu.schema.ts","../src/components/popover/popover.schema.ts","../src/components/tooltip/tooltip.schema.ts","../src/primitives/select/select.schema.ts","../src/primitives/radio-group/radio-group.schema.ts","../src/primitives/slider/slider.schema.ts","../src/primitives/toggle/toggle.schema.ts","../src/primitives/toggle-group/toggle-group.schema.ts","../src/components/form/form.schema.ts","../src/primitives/avatar/avatar.schema.ts","../src/primitives/skeleton/skeleton.schema.ts","../src/primitives/progress/progress.schema.ts","../src/primitives/scroll-area/scroll-area.schema.ts","../src/primitives/aspect-ratio/aspect-ratio.schema.ts","../src/primitives/container/container.schema.ts","../src/primitives/stack/stack.schema.ts","../src/primitives/cluster/cluster.schema.ts","../src/primitives/grid/grid.schema.ts","../src/primitives/spacer/spacer.schema.ts","../src/components/collapsible/collapsible.schema.ts","../src/components/hover-card/hover-card.schema.ts","../src/components/context-menu/context-menu.schema.ts","../src/components/menubar/menubar.schema.ts","../src/components/navigation-menu/navigation-menu.schema.ts","../src/components/breadcrumb/breadcrumb.schema.ts","../src/components/alert/alert.schema.ts","../src/components/sonner/sonner.schema.ts","../src/components/table/table.schema.ts","../src/components/data-table/data-table.schema.ts","../src/components/pagination/pagination.schema.ts","../src/components/calendar/calendar.schema.ts","../src/components/date-picker/date-picker.schema.ts","../src/components/input-otp/input-otp.schema.ts","../src/components/command/command.schema.ts","../src/components/combobox/combobox.schema.ts","../src/components/multi-combobox/multi-combobox.schema.ts","../src/components/stepper/stepper.schema.ts","../src/components/timeline/timeline.schema.ts","../src/components/dropzone/dropzone.schema.ts","../src/components/time-picker/time-picker.schema.ts","../src/components/file-tree/file-tree.schema.ts","../src/components/color-picker/color-picker.schema.ts","../src/components/sheet/sheet.schema.ts","../src/components/drawer/drawer.schema.ts","../src/components/resizable/resizable.schema.ts","../src/components/sidebar/sidebar.schema.ts","../src/primitives/empty/empty.schema.ts","../src/primitives/loading/loading.schema.ts","../src/primitives/error-state/error-state.schema.ts","../src/primitives/tag/tag.schema.ts","../src/components/tree/tree.schema.ts","../src/components/toolbar/toolbar.schema.ts","../src/ai/attachment/attachment.schema.ts","../src/ai/message/message.schema.ts","../src/ai/message-list/message-list.schema.ts","../src/ai/composer/composer.schema.ts","../src/ai/loading-indicator/loading-indicator.schema.ts","../src/ai/suggestion/suggestion.schema.ts","../src/ai/tool-call/tool-call.schema.ts","../src/ai/reasoning/reasoning.schema.ts","../src/ai/message-actions/message-actions.schema.ts","../src/ai/citation/citation.schema.ts","../src/ai/markdown/markdown.schema.ts","../src/ai/code-block/code-block.schema.ts","../src/artifacts/mind-map/mind-map.schema.ts","../src/artifacts/tree-map/tree-map.schema.ts","../src/artifacts/org-chart/org-chart.schema.ts","../src/artifacts/sunburst/sunburst.schema.ts","../src/artifacts/dendrogram/dendrogram.schema.ts","../src/artifacts/sankey/sankey.schema.ts","../src/artifacts/funnel/funnel.schema.ts","../src/artifacts/pyramid/pyramid.schema.ts","../src/artifacts/flowchart/flowchart.schema.ts","../src/artifacts/venn/venn.schema.ts","../src/artifacts/chord/chord.schema.ts","../src/artifacts/arc/arc.schema.ts","../src/artifacts/matrix/matrix.schema.ts","../src/artifacts/time-axis/time-axis.schema.ts","../src/artifacts/gantt/gantt.schema.ts","../src/artifacts/sequence/sequence.schema.ts","../src/artifacts/flashcard/flashcard.schema.ts","../src/artifacts/cloze/cloze.schema.ts","../src/artifacts/image-occlusion/image-occlusion.schema.ts","../src/artifacts/quiz/quiz.schema.ts","../src/artifacts/compare-table/compare-table.schema.ts","../src/artifacts/deck/deck.schema.ts","../src/artifacts/spaced-repetition/spaced-repetition.schema.ts"],"names":[],"mappings":"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","file":"schemas.js","sourcesContent":["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\tuseWhen: \"the single most important action on the screen — exactly one per view (Save, Submit, Continue)\",\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\tuseWhen: \"the action cannot be undone without recreating data: Delete, Archive, Deactivate, Leave team, Force-quit\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"outline\",\n\t\t\t\t\tdescription: \"Bordered button with hover fill for secondary actions\",\n\t\t\t\t\tuseWhen: \"tertiary actions on a flat (non-elevated) surface; signals 'optional' next to a primary\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"secondary\",\n\t\t\t\t\tdescription: \"Muted filled button for less prominent actions\",\n\t\t\t\t\tuseWhen: \"the second-most-important action next to a primary CTA: Cancel, Save Draft, Skip\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"ghost\",\n\t\t\t\t\tdescription: \"Transparent button, background appears on hover\",\n\t\t\t\t\tuseWhen: \"low-emphasis action inside a list, toolbar, or row where chrome should disappear at rest\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"link\",\n\t\t\t\t\tdescription: \"Styled as a hyperlink with underline on hover, no padding\",\n\t\t\t\t\tuseWhen: \"an inline action inside flowing text, or a 'Learn more' affordance in an empty state\",\n\t\t\t\t},\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{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Standard size (h-10, px-4)\",\n\t\t\t\t\tuseWhen: \"default everywhere; the only size you need on most surfaces\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"sm\",\n\t\t\t\t\tdescription: \"Compact size (h-9, px-3)\",\n\t\t\t\t\tuseWhen: \"buttons living inside a row, toolbar, or table cell where vertical density matters\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"lg\",\n\t\t\t\t\tdescription: \"Large size (h-11, px-8, text-base)\",\n\t\t\t\t\tuseWhen: \"the single hero CTA on a marketing page, pricing card, or empty-state action\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"icon\",\n\t\t\t\t\tdescription: \"Square icon-only size (h-10, w-10)\",\n\t\t\t\t\tuseWhen: \"icon-only actions (close, settings, more). Always pair with aria-label\",\n\t\t\t\t},\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\tcomposition: [\"form-action\"],\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\tcomposition: [\"showcase\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Destructive confirm in dialog\",\n\t\t\tdescription: \"The canonical destructive action, paired with Cancel inside an alert-dialog footer\",\n\t\t\tcode: '<AlertDialog>\\n <AlertDialogTrigger asChild>\\n <Button variant=\"outline\">Delete account</Button>\\n </AlertDialogTrigger>\\n <AlertDialogContent>\\n <AlertDialogHeader>\\n <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>\\n <AlertDialogDescription>This action cannot be undone.</AlertDialogDescription>\\n </AlertDialogHeader>\\n <AlertDialogFooter>\\n <AlertDialogCancel>Cancel</AlertDialogCancel>\\n <AlertDialogAction variant=\"destructive\">Delete</AlertDialogAction>\\n </AlertDialogFooter>\\n </AlertDialogContent>\\n</AlertDialog>',\n\t\t\tcomposition: [\"dialog\", \"alert-dialog\", \"destructive\", \"confirm\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Form action pair\",\n\t\t\tdescription: \"Primary submit + secondary cancel — the universal end-of-form pattern\",\n\t\t\tcode: '<div className=\"flex justify-end gap-2\">\\n <Button variant=\"secondary\" type=\"button\">Cancel</Button>\\n <Button type=\"submit\">Save changes</Button>\\n</div>',\n\t\t\tcomposition: [\"form\", \"form-action\"],\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\tcomposition: [\"form-action\", \"async\"],\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\tcomposition: [\"navigation\", \"as-child\"],\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\tcomposition: [\"icon-only\", \"toolbar\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Leading icon\",\n\t\t\tdescription: \"Button with an icon before its label — clarifies intent without sacrificing readability\",\n\t\t\tcode: '<Button>\\n <PlusIcon />\\n Add member\\n</Button>',\n\t\t\tcomposition: [\"icon-leading\", \"form-action\"],\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\"Nesting interactive elements inside asChild button\",\n\t\t\t\"Using <Button> with plain onClick for navigation instead of <Button asChild><a href=...></a></Button> — breaks middle-click, cmd-click, and right-click → 'open in new tab', and skips the browser history entry\",\n\t\t\t\"Using <Button variant='destructive'> for recoverable actions like 'Reset filters' — reserve destructive for delete/archive/leave; use 'secondary' or 'ghost' for resets\",\n\t\t\t\"Using <Button size='icon'> without an aria-label — screen readers have nothing to announce; always pair icon-only buttons with aria-label or visible text\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using <Button> to flip a boolean state on/off (volume mute, dark mode, airplane mode)\",\n\t\t\t\tinsteadUse: \"switch\",\n\t\t\t\twhy: \"Switch communicates the on/off semantic to assistive tech (role=switch + aria-checked). A button announces 'press' which loses the state semantic.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Button> as a tab to switch between sibling content panels\",\n\t\t\t\tinsteadUse: \"tabs\",\n\t\t\t\twhy: \"Tabs ship role=tablist + roving tabindex + arrow-key navigation. Buttons in a row don't — assistive tech will announce them as N independent actions instead of a tab group.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Button> to expand/collapse a content section\",\n\t\t\t\tinsteadUse: \"accordion\",\n\t\t\t\twhy: \"Accordion handles aria-expanded / aria-controls automatically and ships the chevron rotation animation. A bare button doing the same job is missing those affordances.\",\n\t\t\t},\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{\n\t\t\ttitle: \"Basic\",\n\t\t\tdescription: \"Switch with label\",\n\t\t\tcode: '<div className=\"flex items-center gap-2\">\\n <Switch id=\"airplane\" />\\n <Label htmlFor=\"airplane\">Airplane Mode</Label>\\n</div>',\n\t\t\tcomposition: [\"form\", \"boolean\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Settings row\",\n\t\t\tdescription: \"Right-aligned switch in a settings list — the canonical Apple-style preference UI\",\n\t\t\tcode: '<div className=\"flex items-center justify-between py-3\">\\n <div>\\n <Label htmlFor=\"notifications\">Email notifications</Label>\\n <p className=\"text-sm text-muted-foreground\">Daily digest, mentions, and replies</p>\\n </div>\\n <Switch id=\"notifications\" />\\n</div>',\n\t\t\tcomposition: [\"settings\", \"preference-row\", \"boolean\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for instant-effect boolean settings: dark mode, notifications on/off, feature toggles, airplane mode. The change takes effect immediately — no submit step.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for form fields that get submitted in a batch (use Checkbox). Don't use for mutually exclusive options (use RadioGroup). Don't use to filter a list of options (use Toggle or ToggleGroup).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Switch for form fields that need explicit submit\",\n\t\t\t\"Missing <Label> for the switch — without htmlFor/id pairing, screen readers announce the toggle without context\",\n\t\t\t\"Putting the switch label INSIDE the switch instead of next to it\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Switch inside a form that gets submitted with a Save button\",\n\t\t\t\tinsteadUse: \"checkbox\",\n\t\t\t\twhy: \"Switch implies the change applies immediately. A Save button suggests batch submission — that's Checkbox semantics. Mixing them confuses the user about whether they need to click Save.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Putting two Switches side-by-side to choose between mutually exclusive options\",\n\t\t\t\tinsteadUse: \"radio-group\",\n\t\t\t\twhy: \"Switches don't represent 'pick one of N'. RadioGroup announces the group + the active selection to assistive tech and prevents the user from selecting both.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"checkbox\", \"label\", \"form\", \"toggle\"],\n\t\taccessibilityNotes:\n\t\t\t\"Always pair with Label (htmlFor / id). Radix handles role='switch' + aria-checked + keyboard activation (Space).\",\n\t\ttokenBudget: 350,\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 header, content, and footer\",\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\tcomposition: [\"showcase\", \"settings\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Stat card\",\n\t\t\tdescription: \"Single-metric dashboard card — title + large number + trend\",\n\t\t\tcode: '<Card>\\n <CardHeader className=\"pb-2\">\\n <CardDescription>Total revenue</CardDescription>\\n <CardTitle className=\"text-3xl tabular-nums\">$45,231.89</CardTitle>\\n </CardHeader>\\n <CardContent>\\n <p className=\"text-xs text-muted-foreground\">+20.1% from last month</p>\\n </CardContent>\\n</Card>',\n\t\t\tcomposition: [\"dashboard\", \"stat\", \"metric\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Form section card\",\n\t\t\tdescription: \"Card framing a form section, with submit pinned to the footer\",\n\t\t\tcode: '<Card>\\n <CardHeader>\\n <CardTitle>Profile</CardTitle>\\n <CardDescription>Update your account details.</CardDescription>\\n </CardHeader>\\n <CardContent className=\"space-y-4\">\\n <Input placeholder=\"Display name\" />\\n <Input type=\"email\" placeholder=\"Email\" />\\n </CardContent>\\n <CardFooter className=\"justify-end gap-2\">\\n <Button variant=\"secondary\">Cancel</Button>\\n <Button type=\"submit\">Save</Button>\\n </CardFooter>\\n</Card>',\n\t\t\tcomposition: [\"form\", \"settings\", \"form-action\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to group related content with a visual boundary: settings panels, product listings, dashboard widgets, form sections, content previews. Each card should feel like one self-contained unit.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for full-page layouts (use plain divs). Don't use a card to hold one tiny thing (use a Badge or inline content). Don't use a card as a button — use Button with asChild.\",\n\t\tcommonMistakes: [\n\t\t\t\"Nesting cards\",\n\t\t\t\"Using Card when a simple div with border would suffice\",\n\t\t\t\"Forgetting CardContent padding when placing forms inside\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Nesting <Card> inside <Card> to group sub-sections\",\n\t\t\t\tinsteadUse: \"separator\",\n\t\t\t\twhy: \"Two raised surfaces inside each other muddles the elevation model — readers can't tell which container 'owns' an action. Use Separator + extra padding within a single Card to visually divide sections, or split into sibling Cards.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Putting an entire Card inside a <button> or <a> to make it clickable\",\n\t\t\t\tinsteadUse: \"button\",\n\t\t\t\twhy: \"Browsers don't fully support nested interactive content; screen readers announce the full card text every focus. Use <Card asChild><a>...</a></Card> patterns or move just the action inside CardFooter.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Card for a top-bar / app-shell wrapper\",\n\t\t\t\tinsteadUse: \"container\",\n\t\t\t\twhy: \"Card adds elevation chrome that fights with the chrome of the app shell. Use Container for layout boundaries and reserve Card for the content INSIDE the layout.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"button\", \"separator\", \"container\", \"stack\"],\n\t\taccessibilityNotes:\n\t\t\t\"Card is a div by default. Add role='region' and aria-labelledby (pointing to CardTitle's id) for landmark cards. CardTitle renders h3 — ensure heading hierarchy is correct on the page.\",\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: \"Edit profile\",\n\t\t\tdescription: \"Dialog wrapping a short form — the canonical 'edit detail in place' pattern\",\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\tcomposition: [\"form\", \"edit-in-place\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Confirm dialog\",\n\t\t\tdescription: \"Non-destructive confirmation with primary + secondary actions\",\n\t\t\tcode: '<Dialog>\\n <DialogTrigger asChild>\\n <Button>Publish post</Button>\\n </DialogTrigger>\\n <DialogContent>\\n <DialogHeader>\\n <DialogTitle>Publish post?</DialogTitle>\\n <DialogDescription>Your followers will be notified by email.</DialogDescription>\\n </DialogHeader>\\n <DialogFooter>\\n <DialogClose asChild>\\n <Button variant=\"secondary\">Cancel</Button>\\n </DialogClose>\\n <Button>Publish</Button>\\n </DialogFooter>\\n </DialogContent>\\n</Dialog>',\n\t\t\tcomposition: [\"confirm\", \"form-action\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for focused, interruptive tasks: short forms, confirmations, 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). Don't use for mobile-bottom-sheet patterns (use Drawer).\",\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\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using <Dialog> for irreversible actions like Delete account\",\n\t\t\t\tinsteadUse: \"alert-dialog\",\n\t\t\t\twhy: \"AlertDialog uses role='alertdialog' which forces the user to interact (cannot click-outside to dismiss) and announces destructively to screen readers. Dialog can be dismissed by clicking the overlay — the wrong default for delete confirmations.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Dialog> for a long multi-step wizard\",\n\t\t\t\tinsteadUse: \"stepper\",\n\t\t\t\twhy: \"Modals trap focus and disable scroll on the page below — that fights long content. Multi-step flows belong on a full page with a Stepper for orientation.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using <Dialog> for the mobile-only 'pull up from bottom' interaction\",\n\t\t\t\tinsteadUse: \"drawer\",\n\t\t\t\twhy: \"Drawer is purpose-built for the bottom-sheet gesture (swipe handle, drag-to-dismiss). Dialog will technically work but loses the native-feeling affordance.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Putting two equal-weight primary buttons in DialogFooter ('Save and continue' + 'Save and close')\",\n\t\t\t\tinsteadUse: \"button\",\n\t\t\t\twhy: \"Two primaries dilute the call to action — users hesitate. Pick one primary; demote the other to secondary or split them via a DropdownMenu attached to a single Button.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"popover\", \"sheet\", \"drawer\"],\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: \"Volume control with display\",\n\t\t\tdescription: \"Single-thumb slider paired with the live numeric value — the canonical 'continuous range with feedback' pattern\",\n\t\t\tcode: 'function VolumeControl() {\\n const [value, setValue] = React.useState([60]);\\n return (\\n <div className=\"space-y-2\">\\n <div className=\"flex justify-between text-sm\">\\n <Label htmlFor=\"vol\">Volume</Label>\\n <span className=\"text-muted-foreground tabular-nums\">{value[0]}%</span>\\n </div>\\n <Slider id=\"vol\" value={value} onValueChange={setValue} max={100} step={1} aria-label=\"Volume\" />\\n </div>\\n );\\n}',\n\t\t\tcomposition: [\"form\", \"settings\", \"continuous-range\", \"with-display\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Price-range filter\",\n\t\t\tdescription: \"Two-thumb range slider with per-thumb labels — the canonical e-commerce filter UI\",\n\t\t\tcode: '<Slider\\n defaultValue={[20, 80]}\\n max={100}\\n step={1}\\n thumbLabels={[\"Minimum price\", \"Maximum price\"]}\\n/>',\n\t\t\tcomposition: [\"filter\", \"range\", \"ecommerce\"],\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). Don't use for boolean on/off (use Switch).\",\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\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Slider with min=0/max=1 to represent on/off\",\n\t\t\t\tinsteadUse: \"switch\",\n\t\t\t\twhy: \"Slider is 'continuous range'. Switch is 'boolean'. Assistive tech announces them differently — Slider says '0 of 1, 1 of 1'; Switch says 'on / off'. Always reach for Switch when the values are binary.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Slider for picking a number from a small discrete set (1–5 rating, 'pages per row')\",\n\t\t\t\tinsteadUse: \"radio-group\",\n\t\t\t\twhy: \"Sliders make exact target values hard to land on. RadioGroup gives 5 buttons that name themselves and are easier with assistive tech. Reach for Slider only when 50+ values are valid.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Slider for the user to type a known exact number (price, age, count)\",\n\t\t\t\tinsteadUse: \"input\",\n\t\t\t\twhy: \"Drag-to-set is slower and less accurate than typing. Use <Input type='number'> when the user has the exact value in mind.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"input\", \"switch\", \"radio-group\"],\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: [\"primitives/toggle/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: [\"primitives/label/label\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"destructive\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Zod-validated form\",\n\t\t\tdescription: \"Username form with react-hook-form + zod\",\n\t\t\tcode: 'import { zodResolver } from \"@hookform/resolvers/zod\";\\nimport { useForm } from \"react-hook-form\";\\nimport { z } from \"zod\";\\n\\nconst formSchema = z.object({\\n username: z.string().min(2, \"Username must be at least 2 characters\"),\\n});\\n\\nfunction ProfileForm() {\\n const form = useForm({\\n resolver: zodResolver(formSchema),\\n defaultValues: { username: \"\" },\\n });\\n\\n return (\\n <Form {...form}>\\n <form onSubmit={form.handleSubmit((values) => console.log(values))} className=\"space-y-6\">\\n <FormField\\n control={form.control}\\n name=\"username\"\\n render={({ field }) => (\\n <FormItem>\\n <FormLabel>Username</FormLabel>\\n <FormControl><Input placeholder=\"shadcn\" {...field} /></FormControl>\\n <FormDescription>Your public display name.</FormDescription>\\n <FormMessage />\\n </FormItem>\\n )}\\n />\\n <Button type=\"submit\">Submit</Button>\\n </form>\\n </Form>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any form that needs validation, per-field errors, and accessible aria-describedby/aria-invalid wiring. Pair with zod schemas via @hookform/resolvers/zod.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for trivial single-input forms that don't need validation (render a plain Input + Button). Don't use for server actions forms in Next.js 16 (consider useActionState + useFormStatus instead).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to spread {...field} into the form control (connects value/onChange)\",\n\t\t\t\"Putting FormLabel outside FormItem (loses htmlFor wiring)\",\n\t\t\t\"Using useForm without a resolver when zod validation is desired\",\n\t\t\t\"Calling form.handleSubmit without a callback\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"textarea\", \"select\", \"checkbox\", \"radio-group\", \"switch\"],\n\t\taccessibilityNotes:\n\t\t\t\"FormControl automatically wires id, aria-describedby, and aria-invalid. FormLabel uses htmlFor matching the control id. Errors are announced via FormMessage with matching aria-describedby.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"form\", \"react-hook-form\", \"zod\", \"validation\", \"field\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const avatarSchema: ComponentSchemaDefinition = {\n\tname: \"avatar\",\n\tdisplayName: \"Avatar\",\n\tdescription:\n\t\t\"A user profile image with a fallback (usually initials) rendered when the image is missing or fails to load. Built on Radix UI Avatar — AvatarFallback accepts a delayMs prop to avoid flashing during fast loads.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"display\",\n\tprops: [{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the root\" }],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"AvatarImage + AvatarFallback\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-avatar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic avatar\",\n\t\t\tdescription: \"Image with initials fallback\",\n\t\t\tcode: '<Avatar>\\n <AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" />\\n <AvatarFallback>CN</AvatarFallback>\\n</Avatar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for user profile images: headers, comments, user lists. Always include AvatarFallback for accessibility and loading states.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for decorative icons (use an <img> or icon component). Don't use for product/brand images (use <img> with proper sizing).\",\n\t\tcommonMistakes: [\n\t\t\t\"Missing alt text on AvatarImage\",\n\t\t\t\"No AvatarFallback — shows nothing when image is missing or errors\",\n\t\t\t\"Omitting delayMs on AvatarFallback causes flicker for fast-loading images\",\n\t\t\t\"Using for non-circular images (override rounded-full if needed)\",\n\t\t],\n\t\trelatedComponents: [\"badge\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"AvatarImage requires alt text. AvatarFallback renders initials or an icon — ensure the visible text is meaningful.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"avatar\", \"profile\", \"user\", \"image\", \"display\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const skeletonSchema: ComponentSchemaDefinition = {\n\tname: \"skeleton\",\n\tdisplayName: \"Skeleton\",\n\tdescription: \"A pulsing placeholder shown while content is loading. Pair with explicit dimensions.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Width/height and any additional styling via Tailwind classes\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Card skeleton\",\n\t\t\tdescription: \"Avatar + two lines of text placeholder\",\n\t\t\tcode: '<div className=\"flex items-center gap-4\">\\n <Skeleton className=\"h-12 w-12 rounded-full\" />\\n <div className=\"space-y-2\">\\n <Skeleton className=\"h-4 w-[250px]\" />\\n <Skeleton className=\"h-4 w-[200px]\" />\\n </div>\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use during async data loads to show the shape of forthcoming content. Match the dimensions and layout of the real content to avoid layout shift on load.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for fast operations (<200ms — users prefer a brief spinner or nothing). Don't use as a permanent empty state (use proper empty-state UI).\",\n\t\tcommonMistakes: [\n\t\t\t\"Skeleton dimensions don't match loaded content — causes layout shift\",\n\t\t\t\"Leaving Skeleton visible for long loads without a timeout/retry\",\n\t\t\t\"Using Skeleton for interactive elements users might tap\",\n\t\t],\n\t\trelatedComponents: [\"progress\", \"avatar\", \"card\", \"table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Add aria-busy='true' on the loading container and a visually hidden status (aria-live='polite') to announce load completion to screen readers.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"skeleton\", \"loading\", \"placeholder\", \"shimmer\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const progressSchema: ComponentSchemaDefinition = {\n\tname: \"progress\",\n\tdisplayName: \"Progress\",\n\tdescription: \"A horizontal progress bar showing completion from 0 to 100%. Built on Radix UI Progress.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Current value (0–max). Omit to render at 0% (both visually and in ARIA — the component clamps undefined to 0). Use Skeleton for indeterminate loading states.\",\n\t\t},\n\t\t{ name: \"max\", type: \"number\", required: false, default: 100, description: \"Maximum value\" },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-progress\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"primary\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic progress\",\n\t\t\tdescription: \"At 60%\",\n\t\t\tcode: \"<Progress value={60} />\",\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for deterministic progress where completion is measurable: file uploads, multi-step form completion, batch processing. Pair with a visible numeric label where precision matters.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for indeterminate waits (use a spinner or Skeleton). Don't use for completion over long time-spans without a human-readable ETA.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing 0–1 float instead of 0–100\",\n\t\t\t\"Not labeling the progress (users can't tell what's progressing)\",\n\t\t\t\"Updating too frequently (>30fps) — wastes renders\",\n\t\t],\n\t\trelatedComponents: [\"skeleton\", \"slider\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix wires role='progressbar', aria-valuenow, aria-valuemin, aria-valuemax. Pair with a visible label or aria-label for context.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"progress\", \"loading\", \"bar\", \"feedback\", \"determinate\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const scrollAreaSchema: ComponentSchemaDefinition = {\n\tname: \"scroll-area\",\n\tdisplayName: \"Scroll Area\",\n\tdescription: \"A scrollable region with custom-styled scrollbars that match the design system. Content must be explicitly sized.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"type\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"hover\",\n\t\t\tdescription: \"When scrollbars are visible\",\n\t\t\tenumValues: [\"auto\", \"always\", \"scroll\", \"hover\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Set dimensions via Tailwind (e.g. h-72 w-48)\" },\n\t\t{\n\t\t\tname: \"viewportTabIndex\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"tabIndex applied to the scroll viewport. Defaults to 0 so keyboard users can scroll without a pointer; pass -1 to skip the viewport in the tab order when wrapping decorative or already-keyboard-reachable content.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Any content — will be wrapped in a scrollable viewport\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-scroll-area\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Fixed-height list\",\n\t\t\tdescription: \"50 items in a 200px-tall scrollable region\",\n\t\t\tcode: '<ScrollArea className=\"h-[200px] w-[350px] rounded-md border p-4\">\\n {Array.from({ length: 50 }).map((_, i) => (\\n <div key={i} className=\"text-sm\">Item {i + 1}</div>\\n ))}\\n</ScrollArea>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when you need styled scrollbars that match the design system — sidebars, code blocks, large lists in dialogs. Must have explicit dimensions (height/width).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the whole page (use native browser scrollbars). Don't use for content that should grow freely (omit the ScrollArea and use overflow-auto directly).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set height/width — scrollbars don't appear\",\n\t\t\t\"Using for the whole page\",\n\t\t\t\"Nesting ScrollAreas (confusing UX)\",\n\t\t\t\"Wrapping decorative or already-keyboard-reachable content without setting viewportTabIndex={-1} — adds an unnecessary tab stop\",\n\t\t],\n\t\trelatedComponents: [],\n\t\taccessibilityNotes:\n\t\t\t\"The viewport is keyboard-focusable by default (viewportTabIndex=0) so users can scroll long content via arrow keys / PgUp / PgDn / Home / End without a pointer. Pass viewportTabIndex={-1} when the contents are already in the tab order or purely decorative. For very long lists, consider pagination or virtualization.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"scroll-area\", \"scroll\", \"overflow\", \"scrollbar\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const aspectRatioSchema: ComponentSchemaDefinition = {\n\tname: \"aspect-ratio\",\n\tdisplayName: \"Aspect Ratio\",\n\tdescription: \"Constrain children to a specific width-to-height ratio (e.g. 16/9 for video, 1/1 for square).\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"ratio\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"Width-to-height ratio (e.g. 16/9 ≈ 1.778)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Content to constrain (usually an image or iframe)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-aspect-ratio\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"16:9 video thumbnail\",\n\t\t\tdescription: \"Image constrained to widescreen ratio\",\n\t\t\tcode: '<AspectRatio ratio={16 / 9} className=\"bg-muted\">\\n <img src=\"/hero.jpg\" alt=\"Hero\" className=\"h-full w-full rounded-md object-cover\" />\\n</AspectRatio>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when an image or iframe must maintain a specific ratio regardless of container width: video thumbnails, product images, hero banners, embeds.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for content with known fixed dimensions (just use width/height). Don't use for text content (ratios don't make sense for prose).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing ratio as a string instead of a number (use {16/9}, not '16/9')\",\n\t\t\t\"Forgetting that children must fill 100% width + height (add object-cover or similar)\",\n\t\t],\n\t\trelatedComponents: [\"card\", \"avatar\", \"skeleton\"],\n\t\taccessibilityNotes:\n\t\t\t\"AspectRatio is purely structural. Ensure inner <img> has alt text and inner <iframe> has a descriptive title.\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"aspect-ratio\", \"layout\", \"image\", \"video\", \"ratio\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const containerSchema: ComponentSchemaDefinition = {\n\tname: \"container\",\n\tdisplayName: \"Container\",\n\tdescription:\n\t\t\"Centered max-width wrapper that constrains content to readable widths. Sizes map to `--container-*` prose-width tokens; padding maps to `--space-*`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"lg\",\n\t\t\tdescription:\n\t\t\t\t\"Max-width preset bound to `--container-*` tokens (sm=33rem, md=40rem, lg=50rem, xl=66rem, full=100%).\",\n\t\t\tenumValues: [\"sm\", \"md\", \"lg\", \"xl\", \"full\"],\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Horizontal padding bound to `--space-*` tokens (none=0, sm=0.75rem, md=1rem, lg=2rem).\",\n\t\t\tenumValues: [\"none\", \"sm\", \"md\", \"lg\"],\n\t\t},\n\t\t{\n\t\t\tname: \"asChild\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Render as a different element via Radix `Slot`. Use to render as `<main>`, `<section>`, etc. for landmark semantics.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Max-width preset bound to `--container-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"33rem (≈530px) — narrow column for short content.\" },\n\t\t\t\t{ value: \"md\", description: \"40rem (≈640px) — comfortable reading width.\" },\n\t\t\t\t{ value: \"lg\", description: \"50rem (≈800px) — default; standard article width.\" },\n\t\t\t\t{ value: \"xl\", description: \"66rem (≈1056px) — wider canvas for dashboards or marketing.\" },\n\t\t\t\t{ value: \"full\", description: \"100% — disable max-width clamp.\" },\n\t\t\t],\n\t\t\tdefault: \"lg\",\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\tdescription: \"Horizontal padding bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"none\", description: \"0 — flush to container edges.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.75rem — tight gutter.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard reading gutter.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — generous gutter for marketing pages.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Page content to constrain — typically a section, article, or grid.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"@radix-ui/react-slot\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\n\t\t\"--container-sm\",\n\t\t\"--container-md\",\n\t\t\"--container-lg\",\n\t\t\"--container-xl\",\n\t\t\"--space-3\",\n\t\t\"--space-4\",\n\t\t\"--space-8\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Reading-width article\",\n\t\t\tdescription: \"lg size (50rem) + md padding for an article body.\",\n\t\t\tcode: '<Container size=\"lg\" padding=\"md\">\\n <article>...</article>\\n</Container>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Full-width hero\",\n\t\t\tdescription: \"Use size=full when you want the section to span the viewport.\",\n\t\t\tcode: '<Container size=\"full\" padding=\"none\">\\n <Hero />\\n</Container>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to constrain page content to readable widths. Pair with `Stack` or `Grid` inside for vertical/grid layouts. Default for any centered article, settings page, or marketing section.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use inside another `Container` (double-clamping). Don't use as a drop-in for `<main>` semantics — it's a layout primitive, not a landmark. For full-bleed sections (edge-to-edge banners), pass `size=\\\"full\\\" padding=\\\"none\\\"`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Wrapping a `Container` in another `Container` and getting an unexpectedly narrow column\",\n\t\t\t\"Using `padding=\\\"none\\\"` and forgetting that children still need their own gutter — the parent contributes nothing\",\n\t\t\t\"Treating `lg` as the largest size — `xl` (66rem) and `full` are bigger\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"cluster\"],\n\t\taccessibilityNotes:\n\t\t\t\"Container is presentational. Wrap in a semantic landmark (`<main>`, `<section>`, `<article>`) when the page structure needs it; Container itself renders a plain `<div>`.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"container\", \"layout\", \"wrapper\", \"max-width\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const stackSchema: ComponentSchemaDefinition = {\n\tname: \"stack\",\n\tdisplayName: \"Stack\",\n\tdescription:\n\t\t\"Vertical flex flow with token-bound gap. The headless equivalent of `<div className=\\\"flex flex-col gap-X\\\">` with consistent spacing scale.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Vertical spacing between children, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Vertical gap between children, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grouping.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — section-level spacing.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Children align to left edge.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Children align to right edge.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — children fill container width.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — children pack to top.\" },\n\t\t\t\t{ value: \"center\", description: \"Children center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Children pack to bottom.\" },\n\t\t\t\t{ value: \"between\", description: \"First child to top, last to bottom, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to stack vertically.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Form sections\",\n\t\t\tdescription: \"Lg gap separates labelled groups; nested Stack with sm gap groups label+input.\",\n\t\t\tcode: '<Stack gap=\"lg\">\\n <Stack gap=\"sm\"><Label>Email</Label><Input /></Stack>\\n <Stack gap=\"sm\"><Label>Password</Label><Input type=\"password\" /></Stack>\\n <Button>Submit</Button>\\n</Stack>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Centered hero\",\n\t\t\tdescription: \"Center children horizontally for a centered call-to-action stack.\",\n\t\t\tcode: '<Stack gap=\"md\" align=\"center\">\\n <h1>Title</h1>\\n <p>Subtitle</p>\\n <Button>Get started</Button>\\n</Stack>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use anywhere you'd write `flex flex-col gap-X`. Default for vertical lists of dissimilar items (label + input + helper text), section bodies, sidebar items, button groups stacked vertically.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for tabular data — use `<table>` or DataTable. Don't use for grid-like layouts — use `Grid`. Don't reach for `Stack` when a single child needs no spacing — just render the child.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `gap=\\\"md\\\"` then adding `mt-*` / `space-y-*` on individual children — pick one spacing system\",\n\t\t\t\"Using `align=\\\"center\\\"` and wondering why children expand to full width — that's the `stretch` default for cross-axis\",\n\t\t\t\"Nesting Stack inside Stack with the same gap when one Stack with two children would suffice\",\n\t\t],\n\t\trelatedComponents: [\"cluster\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Stack is presentational. Wrap stacked navigation links in a `<nav>`, stacked form fields in a `<form>`, etc. — Stack does not contribute landmark semantics.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"stack\", \"layout\", \"flex\", \"column\", \"vertical\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const clusterSchema: ComponentSchemaDefinition = {\n\tname: \"cluster\",\n\tdisplayName: \"Cluster\",\n\tdescription:\n\t\t\"Horizontal flex flow with wrap and token-bound gap. Use for tag lists, button rows, breadcrumbs, and any group of equally-weighted inline items.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Gap between items, bound to `--gap-*` tokens. Applies to both row and column gaps when wrapping.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"center\",\n\t\t\tdescription:\n\t\t\t\t\"Cross-axis alignment (CSS `align-items`). `baseline` aligns text-baselines for mixed-size siblings; `stretch` makes items fill row height (useful for wrap-card layouts).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\", \"baseline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"start\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"between\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between items, bound to `--gap-*` tokens (applies to row + column gaps when wrapping).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — barely-there spacing.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight chip group.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — section-scale spacing.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cross-axis alignment (CSS `align-items`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Items align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Default — items center vertically in the row.\" },\n\t\t\t\t{ value: \"end\", description: \"Items align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Items fill row height — use for wrap layouts of equal-height cards.\" },\n\t\t\t\t{ value: \"baseline\", description: \"Text-baselines align across mixed-size siblings.\" },\n\t\t\t],\n\t\t\tdefault: \"center\",\n\t\t},\n\t\t{\n\t\t\tname: \"justify\",\n\t\t\tdescription: \"Main-axis distribution (CSS `justify-content`).\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Default — items pack to start of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Items center horizontally.\" },\n\t\t\t\t{ value: \"end\", description: \"Items pack to end of row.\" },\n\t\t\t\t{ value: \"between\", description: \"First item flush left, last flush right, even distribution.\" },\n\t\t\t],\n\t\t\tdefault: \"start\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Items to lay out horizontally with wrap.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Tag chips\",\n\t\t\tdescription: \"Small gap, wraps when overflowing the row.\",\n\t\t\tcode: '<Cluster gap=\"sm\">\\n {tags.map((t) => <Badge key={t}>{t}</Badge>)}\\n</Cluster>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Action bar\",\n\t\t\tdescription: \"Right-aligned buttons inside a panel footer.\",\n\t\t\tcode: '<Cluster gap=\"sm\" justify=\"end\">\\n <Button variant=\"ghost\">Cancel</Button>\\n <Button>Save</Button>\\n</Cluster>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any horizontal row of items that should wrap when space runs out: tag clouds, breadcrumbs, button rows, social-link icon strips, inline metadata badges. Pick `Cluster` over `flex` when you want predictable wrap + gap behavior.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for two-element rows where you need precise positional control (left/right) — use `Stack` rotated or a flex with `justify-between` directly. Don't use for grid-aligned layouts where columns must line up across rows — use `Grid`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting that `Cluster` wraps — adding `flex-nowrap` defeats the purpose; if you don't want wrap, use a flex row or `Stack` rotated\",\n\t\t\t\"Setting `align=\\\"baseline\\\"` for icon+text rows where the icon's bbox doesn't have a baseline — use `center` instead\",\n\t\t\t\"Reaching for `Cluster` for tabular alignment — use `Grid` or a real `<table>` when columns must line up\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"grid\", \"container\"],\n\t\taccessibilityNotes:\n\t\t\t\"Cluster is presentational. Lists of navigational items should be wrapped in `<nav>` (and ideally `<ul>` / `<li>`). Lists of tags can use a list element for screen-reader semantics; the visual wrap is independent.\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"cluster\", \"layout\", \"flex\", \"wrap\", \"horizontal\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const gridSchema: ComponentSchemaDefinition = {\n\tname: \"grid\",\n\tdisplayName: \"Grid\",\n\tdescription:\n\t\t\"CSS grid with column-count presets and token-bound gap. Pass `cols=\\\"auto-fit\\\"` + `minColWidth` for responsive grids without media queries.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"3\",\n\t\t\tdescription:\n\t\t\t\t\"Number of fixed columns, or `\\\"auto-fit\\\"` for responsive tracks (use with `minColWidth`).\",\n\t\t\tenumValues: [\"1\", \"2\", \"3\", \"4\", \"6\", \"auto-fit\"],\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"stretch\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tenumValues: [\"start\", \"center\", \"end\", \"stretch\"],\n\t\t},\n\t\t{\n\t\t\tname: \"minColWidth\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"16rem\",\n\t\t\tdescription:\n\t\t\t\t\"Min track size for `cols=\\\"auto-fit\\\"` (e.g. `\\\"20rem\\\"`). Ignored when `cols` is a fixed integer.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"cols\",\n\t\t\tdescription: \"Column count or `auto-fit` mode.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"1\", description: \"Single column — items stack vertically inside the grid.\" },\n\t\t\t\t{ value: \"2\", description: \"Two even columns.\" },\n\t\t\t\t{ value: \"3\", description: \"Default — three even columns.\" },\n\t\t\t\t{ value: \"4\", description: \"Four even columns.\" },\n\t\t\t\t{ value: \"6\", description: \"Six even columns — dense layouts.\" },\n\t\t\t\t{ value: \"auto-fit\", description: \"Tracks repeat to fill width, never below `minColWidth`.\" },\n\t\t\t],\n\t\t\tdefault: \"3\",\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\tdescription: \"Gap between cells, bound to `--gap-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — minimal separation.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight grid.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard rhythm.\" },\n\t\t\t\t{ value: \"lg\", description: \"1.5rem — generous separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"2rem — major separation between cards.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"align\",\n\t\t\tdescription: \"Cell vertical alignment within their grid row.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"start\", description: \"Cells align to top of row.\" },\n\t\t\t\t{ value: \"center\", description: \"Cells center vertically.\" },\n\t\t\t\t{ value: \"end\", description: \"Cells align to bottom of row.\" },\n\t\t\t\t{ value: \"stretch\", description: \"Default — cells fill row height.\" },\n\t\t\t],\n\t\t\tdefault: \"stretch\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Grid cells — typically Cards, images, or any uniform block.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--gap-xs\", \"--gap-sm\", \"--gap-md\", \"--gap-lg\", \"--gap-xl\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-column card grid\",\n\t\t\tdescription: \"Fixed 3 columns with medium gap.\",\n\t\t\tcode: '<Grid cols={3} gap=\"md\">\\n {items.map((i) => <Card key={i.id}>{i.title}</Card>)}\\n</Grid>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Responsive auto-fit\",\n\t\t\tdescription: \"Tracks fit as many 20rem columns as the viewport allows; no media queries needed.\",\n\t\t\tcode: '<Grid cols=\"auto-fit\" minColWidth=\"20rem\" gap=\"lg\">\\n {items.map(...)}\\n</Grid>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for visually-aligned grids of similar items: card galleries, image walls, dashboard tiles, settings panels. Prefer `cols=\\\"auto-fit\\\"` + `minColWidth` over hand-written breakpoints when the column count should adapt to viewport width.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for one-dimensional flows — use `Stack` (vertical) or `Cluster` (horizontal). Don't use for tabular data — use `<table>` or DataTable. Don't fight `Grid` to make uneven columns; if cells need different sizes, use a flexbox layout or a CSS grid with named tracks directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Setting `cols={5}` and getting nothing — the preset only supports 1/2/3/4/6 (deliberate, to avoid odd visual rhythms); use `cols=\\\"auto-fit\\\"` for arbitrary counts\",\n\t\t\t\"Passing `cols=\\\"auto-fit\\\"` without `minColWidth` — the default `16rem` may not match your design intent\",\n\t\t\t\"Using `Grid` for two children when `Cluster` or `Stack` would communicate intent better\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"container\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"Grid is presentational. If the grid renders a list of similar items, wrap in `<ul>`/`<li>` for screen-reader semantics — Grid only handles visual layout.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"grid\", \"layout\", \"css-grid\", \"responsive\", \"auto-fit\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const spacerSchema: ComponentSchemaDefinition = {\n\tname: \"spacer\",\n\tdisplayName: \"Spacer\",\n\tdescription:\n\t\t\"Declarative whitespace block bound to `--space-*` tokens. Use when sibling spacing can't come from a parent's `gap`.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription:\n\t\t\t\t\"Spacing token (xs=0.25rem, sm=0.5rem, md=1rem, lg=2rem, xl=4rem). Bound to `--space-*`.\",\n\t\t\tenumValues: [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"],\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"vertical\",\n\t\t\tdescription: \"Which axis to expand. Vertical = height; horizontal = width; both = square.\",\n\t\t\tenumValues: [\"vertical\", \"horizontal\", \"both\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Spacer extent bound to `--space-*` tokens.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"xs\", description: \"0.25rem — micro-gap.\" },\n\t\t\t\t{ value: \"sm\", description: \"0.5rem — tight separation.\" },\n\t\t\t\t{ value: \"md\", description: \"1rem — default; standard breathing room.\" },\n\t\t\t\t{ value: \"lg\", description: \"2rem — section-scale separation.\" },\n\t\t\t\t{ value: \"xl\", description: \"4rem — major separation between hero areas.\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t\t{\n\t\t\tname: \"axis\",\n\t\t\tdescription: \"Which axis the spacer extends along.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"vertical\", description: \"Default — fixed height, 1px width.\" },\n\t\t\t\t{ value: \"horizontal\", description: \"Fixed width, 1px height — for flex rows.\" },\n\t\t\t\t{ value: \"both\", description: \"Square block — rare; usually pick one axis.\" },\n\t\t\t],\n\t\t\tdefault: \"vertical\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\"],\n\t},\n\ttokensUsed: [\"--space-1\", \"--space-2\", \"--space-4\", \"--space-8\", \"--space-16\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Vertical breathing room\",\n\t\t\tdescription: \"Push two sections apart inside a parent that doesn't manage gap.\",\n\t\t\tcode: '<>\\n <Hero />\\n <Spacer size=\"xl\" />\\n <Features />\\n</>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Horizontal flex spacer\",\n\t\t\tdescription: \"Push siblings to opposite ends of a flex row.\",\n\t\t\tcode: '<div className=\"flex items-center\">\\n <Logo />\\n <Spacer axis=\"horizontal\" size=\"lg\" />\\n <Nav />\\n</div>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use as an explicit whitespace primitive when you can't (or don't want to) use `gap` on the parent — typically: pushing siblings apart inside a flex row that already has gap-0, or inserting one-off vertical breathing room between top-level sections that aren't wrapped in a Stack.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use Spacer when a `Stack` or `Cluster` parent's `gap` would do the same thing — that scales better and keeps the spacing concern with the layout primitive. Don't use Spacer to flush content to one edge of a flex container — use `ml-auto` / `justify-between` directly.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using `<Spacer />` between every child in a Stack — just set the Stack's `gap` instead\",\n\t\t\t\"Using `axis=\\\"both\\\"` and getting a square block where you wanted a line — `both` is rare, usually you want vertical or horizontal\",\n\t\t\t\"Setting size=\\\"lg\\\" on a horizontal spacer and getting nothing visible because the parent isn't a flex row — Spacer reserves space, it doesn't push siblings on its own\",\n\t\t],\n\t\trelatedComponents: [\"stack\", \"cluster\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Spacer is `aria-hidden=\\\"true\\\"` — screen readers skip it. Don't use a Spacer where a `Separator` would convey meaning (a thematic break should be `Separator`, not `Spacer`).\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"spacer\", \"layout\", \"whitespace\", \"spacing\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const collapsibleSchema: ComponentSchemaDefinition = {\n\tname: \"collapsible\",\n\tdisplayName: \"Collapsible\",\n\tdescription: \"A single section that can be expanded or collapsed. For multiple independent sections use Accordion with type='multiple'.\",\n\tcategory: \"component\",\n\tsubcategory: \"disclosure\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change: (open: boolean) => void\" },\n\t\t{ name: \"disabled\", type: \"boolean\", required: false, default: false, description: \"Disable toggling\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"CollapsibleTrigger + CollapsibleContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Show more\",\n\t\t\tdescription: \"Expand additional content below a preview\",\n\t\t\tcode: '<Collapsible>\\n <div>Yesterday at 9:00 AM</div>\\n <CollapsibleTrigger asChild>\\n <Button variant=\"ghost\" size=\"sm\">Toggle</Button>\\n </CollapsibleTrigger>\\n <CollapsibleContent>\\n <div>Additional details here</div>\\n </CollapsibleContent>\\n</Collapsible>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a single show-more/show-less section: 'View full details', 'Advanced settings', preview cards with expandable notes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for multiple related sections (use Accordion). Don't use for overlays (use Dialog/Popover). Don't use for navigation (use DropdownMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Collapsible for multiple sections instead of Accordion\",\n\t\t\t\"Missing asChild when passing a Button as trigger\",\n\t\t\t\"Not animating content height (Radix exposes --radix-collapsible-content-height for CSS keyframes)\",\n\t\t],\n\t\trelatedComponents: [\"accordion\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix sets aria-expanded on the trigger and aria-controls → content id. Trigger is keyboard-operable (Enter/Space).\",\n\t\ttokenBudget: 250,\n\t},\n\ttags: [\"collapsible\", \"disclosure\", \"expand\", \"show-more\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const hoverCardSchema: ComponentSchemaDefinition = {\n\tname: \"hover-card\",\n\tdisplayName: \"Hover Card\",\n\tdescription: \"Rich floating content revealed on hover or focus. Use when Tooltip is too small and Popover requires a click.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{ name: \"defaultOpen\", type: \"boolean\", required: false, default: false, description: \"Default open state\" },\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"openDelay\", type: \"number\", required: false, default: 700, description: \"Milliseconds before the card appears\" },\n\t\t{ name: \"closeDelay\", type: \"number\", required: false, default: 300, description: \"Milliseconds before the card closes after leaving\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"HoverCardTrigger + HoverCardContent\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-hover-card\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"User profile preview\",\n\t\t\tdescription: \"Username link that expands into a mini profile on hover\",\n\t\t\tcode: '<HoverCard>\\n <HoverCardTrigger asChild>\\n <a href=\"#\">@shadcn</a>\\n </HoverCardTrigger>\\n <HoverCardContent>\\n <div className=\"flex gap-3\">\\n <Avatar><AvatarImage src=\"https://github.com/shadcn.png\" alt=\"@shadcn\" /><AvatarFallback>CN</AvatarFallback></Avatar>\\n <div>\\n <h4 className=\"font-semibold\">@shadcn</h4>\\n <p className=\"text-xs text-muted-foreground\">Builds UI components</p>\\n </div>\\n </div>\\n </HoverCardContent>\\n</HoverCard>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for rich hover previews: user profile cards, link previews, inline references. Contains multiple elements — more than a tooltip can hold.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for simple hover labels (use Tooltip). Don't use for click-triggered content (use Popover). Don't use as primary info on touch devices — hover doesn't exist there.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using HoverCard for critical info (invisible on touch)\",\n\t\t\t\"Too-short openDelay causes flicker on mouse-over traffic\",\n\t\t\t\"Omitting asChild on HoverCardTrigger with a custom element\",\n\t\t],\n\t\trelatedComponents: [\"tooltip\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix opens on hover and keyboard focus. Content must be meaningful on focus as well as hover. Consider an alternative for touch users.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"hover-card\", \"preview\", \"overlay\", \"rich-tooltip\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const contextMenuSchema: ComponentSchemaDefinition = {\n\tname: \"context-menu\",\n\tdisplayName: \"Context Menu\",\n\tdescription: \"Right-click (or long-press on touch) menu anchored to the trigger region. Same item vocabulary as DropdownMenu.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"onOpenChange\", type: \"function\", required: false, description: \"Callback on open change\" },\n\t\t{ name: \"modal\", type: \"boolean\", required: false, default: true, description: \"When true, interaction outside is blocked\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"ContextMenuTrigger + ContextMenuContent. Content accepts ContextMenuItem, ContextMenuCheckboxItem, ContextMenuRadioGroup/ContextMenuRadioItem, ContextMenuLabel, ContextMenuSeparator, and ContextMenuShortcut.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-context-menu\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-click menu\",\n\t\t\tdescription: \"Right-click the trigger region for actions\",\n\t\t\tcode: '<ContextMenu>\\n <ContextMenuTrigger className=\"flex h-40 items-center justify-center rounded-md border border-dashed\">Right-click here</ContextMenuTrigger>\\n <ContextMenuContent>\\n <ContextMenuItem>Back</ContextMenuItem>\\n <ContextMenuItem disabled>Forward</ContextMenuItem>\\n <ContextMenuSeparator />\\n <ContextMenuItem>Reload<ContextMenuShortcut>\\u2318R</ContextMenuShortcut></ContextMenuItem>\\n </ContextMenuContent>\\n</ContextMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for right-click menus on a specific region: file-manager-style actions, canvas/editor context actions, row-level actions in tables.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for actions triggered by a button (use DropdownMenu). Don't use as the only way to access an action — must have a keyboard/button alternative.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using ContextMenu as the only affordance (unreachable on touch)\",\n\t\t\t\"Triggering on the whole document (put it on a specific region)\",\n\t\t\t\"Missing a keyboard alternative for items\",\n\t\t],\n\t\trelatedComponents: [\"dropdown-menu\", \"menubar\"],\n\t\taccessibilityNotes:\n\t\t\t\"Triggered via right-click or Shift+F10 on keyboard. Radix handles role='menu', aria-labelledby, focus management.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"context-menu\", \"right-click\", \"menu\", \"actions\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const menubarSchema: ComponentSchemaDefinition = {\n\tname: \"menubar\",\n\tdisplayName: \"Menubar\",\n\tdescription: \"Desktop-app style menu bar (File / Edit / View). Horizontal menu strip with nested dropdowns.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled open menu id\" },\n\t\t{ name: \"defaultValue\", type: \"string\", required: false, description: \"Default open menu for uncontrolled usage\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when open menu changes\" },\n\t\t{ name: \"loop\", type: \"boolean\", required: false, default: true, description: \"When true, arrow-key navigation wraps\" },\n\t\t{ name: \"dir\", type: \"enum\", required: false, description: \"Reading direction\", enumValues: [\"ltr\", \"rtl\"] },\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the Menubar root\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"MenubarMenu elements (each containing MenubarTrigger + MenubarContent)\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-menubar\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"File / Edit bar\",\n\t\t\tdescription: \"Two-menu bar with keyboard shortcuts\",\n\t\t\tcode: '<Menubar>\\n <MenubarMenu>\\n <MenubarTrigger>File</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>New Tab<MenubarShortcut>\\u2318T</MenubarShortcut></MenubarItem>\\n <MenubarItem>New Window<MenubarShortcut>\\u2318N</MenubarShortcut></MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Share</MenubarItem>\\n <MenubarSeparator />\\n <MenubarItem>Print\\u2026<MenubarShortcut>\\u2318P</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n <MenubarMenu>\\n <MenubarTrigger>Edit</MenubarTrigger>\\n <MenubarContent>\\n <MenubarItem>Undo<MenubarShortcut>\\u2318Z</MenubarShortcut></MenubarItem>\\n <MenubarItem>Redo<MenubarShortcut>\\u21E7\\u2318Z</MenubarShortcut></MenubarItem>\\n </MenubarContent>\\n </MenubarMenu>\\n</Menubar>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for desktop-app shell menus: editors, IDEs, creative tools. Provides persistent menu bar with keyboard shortcuts.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for website navigation (use NavigationMenu). Don't use for single-button menus (use DropdownMenu). Poor fit for mobile — consider a hamburger menu.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using for website navigation (user expectations don't match)\",\n\t\t\t\"Missing shortcuts (expected affordance in menubar UX)\",\n\t\t\t\"Deeply nested sub-menus (>2 levels feels labyrinthine)\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Full WAI-ARIA menubar pattern: arrow keys navigate menus, Enter/Space opens, Escape closes. Radix handles roles and state.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"menubar\", \"menu\", \"desktop\", \"app-shell\", \"navigation\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const navigationMenuSchema: ComponentSchemaDefinition = {\n\tname: \"navigation-menu\",\n\tdisplayName: \"Navigation Menu\",\n\tdescription: \"Website-style mega-menu with hover-triggered content panels. Used for marketing/site navigation headers.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"value\", type: \"string\", required: false, description: \"Controlled active menu value\" },\n\t\t{ name: \"onValueChange\", type: \"function\", required: false, description: \"Callback when active menu changes\" },\n\t\t{ name: \"delayDuration\", type: \"number\", required: false, default: 200, description: \"Delay before opening a menu on hover (ms)\" },\n\t\t{ name: \"orientation\", type: \"enum\", required: false, default: \"horizontal\", description: \"Layout direction\", enumValues: [\"horizontal\", \"vertical\"] },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"NavigationMenuList containing NavigationMenuItem elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-navigation-menu\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"accent\", \"accent-foreground\", \"popover\", \"popover-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Simple nav\",\n\t\t\tdescription: \"Top-level link + mega-menu trigger\",\n\t\t\tcode: '<NavigationMenu>\\n <NavigationMenuList>\\n <NavigationMenuItem>\\n <NavigationMenuTrigger>Products</NavigationMenuTrigger>\\n <NavigationMenuContent>\\n <ul className=\"grid w-[400px] gap-3 p-4\">\\n <li><NavigationMenuLink href=\"/docs\">Docs</NavigationMenuLink></li>\\n <li><NavigationMenuLink href=\"/pricing\">Pricing</NavigationMenuLink></li>\\n </ul>\\n </NavigationMenuContent>\\n </NavigationMenuItem>\\n <NavigationMenuItem>\\n <NavigationMenuLink className={navigationMenuTriggerStyle()} href=\"/about\">About</NavigationMenuLink>\\n </NavigationMenuItem>\\n </NavigationMenuList>\\n</NavigationMenu>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for marketing-site top nav with grouped links and mega-menus: Products, Resources, Pricing flyouts. Desktop-first but keyboard accessible.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for app shell menus (use Menubar). Don't use for single dropdowns (use DropdownMenu). On mobile, pair with a separate hamburger/Drawer pattern — NavigationMenu collapses poorly on small screens.\",\n\t\tcommonMistakes: [\n\t\t\t\"Mixing regular <a> with NavigationMenuLink — must use NavigationMenuLink for keyboard/roving focus\",\n\t\t\t\"Forgetting the viewport — handled automatically when using the composed NavigationMenu root\",\n\t\t\t\"Too many top-level items overflow on mobile\",\n\t\t],\n\t\trelatedComponents: [\"menubar\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix implements the WAI-ARIA menu-button pattern with hover-intent delays and focus trapping in content. Links inside NavigationMenuLink get roving tabindex.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"navigation-menu\", \"mega-menu\", \"nav\", \"header\", \"site\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const breadcrumbSchema: ComponentSchemaDefinition = {\n\tname: \"breadcrumb\",\n\tdisplayName: \"Breadcrumb\",\n\tdescription: \"A path trail showing the user's location within a hierarchy, with links back to ancestors and a non-interactive current page.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the nav element\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{ name: \"children\", description: \"BreadcrumbList containing BreadcrumbItem + BreadcrumbSeparator elements\", required: true, acceptedTypes: [\"ReactNode\"] },\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-level path\",\n\t\t\tdescription: \"Home / Components / Breadcrumb\",\n\t\t\tcode: '<Breadcrumb>\\n <BreadcrumbList>\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbLink href=\"/docs/components\">Components</BreadcrumbLink>\\n </BreadcrumbItem>\\n <BreadcrumbSeparator />\\n <BreadcrumbItem>\\n <BreadcrumbPage>Breadcrumb</BreadcrumbPage>\\n </BreadcrumbItem>\\n </BreadcrumbList>\\n</Breadcrumb>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to show location within a hierarchical site or app: docs pages, product categories, nested settings. Include the current page as a non-link BreadcrumbPage.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for primary navigation (use NavigationMenu). Don't use for flat sites without hierarchy. Don't use when the hierarchy is too deep to display — truncate with BreadcrumbEllipsis.\",\n\t\tcommonMistakes: [\n\t\t\t\"Making the current page a link (use BreadcrumbPage)\",\n\t\t\t\"Showing just one item (defeats the purpose)\",\n\t\t\t\"Using plain text separators without aria-hidden\",\n\t\t],\n\t\trelatedComponents: [\"navigation-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root <nav aria-label='breadcrumb'> creates a landmark. BreadcrumbPage has aria-current='page'. Separators are aria-hidden (decorative). BreadcrumbEllipsis is decorative (SVG aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 400,\n\t},\n\ttags: [\"breadcrumb\", \"navigation\", \"path\", \"trail\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const alertSchema: ComponentSchemaDefinition = {\n\tname: \"alert\",\n\tdisplayName: \"Alert\",\n\tdescription: \"An inline notification banner for important messages. Supports default and destructive variants with optional leading icon.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"default\",\n\t\t\tdescription: \"Visual style\",\n\t\t\tenumValues: [\"default\", \"destructive\"],\n\t\t},\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes\" },\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Alert style\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"default\", description: \"Neutral inline notification\" },\n\t\t\t\t{ value: \"destructive\", description: \"Error or warning with red accent + tinted background\" },\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Optional icon SVG + AlertTitle + AlertDescription\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"destructive\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Info alert\",\n\t\t\tdescription: \"Default alert with title and description\",\n\t\t\tcode: '<Alert>\\n <AlertTitle>Heads up!</AlertTitle>\\n <AlertDescription>You can add components to your app via the CLI.</AlertDescription>\\n</Alert>',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Destructive alert\",\n\t\t\tdescription: \"Error alert\",\n\t\t\tcode: '<Alert variant=\"destructive\">\\n <AlertTitle>Error</AlertTitle>\\n <AlertDescription>Your session has expired. Please sign in again.</AlertDescription>\\n</Alert>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline, persistent messages that contextualize a page or section: info banners, warning about deprecated features, error summaries above forms.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for transient messages (use Toast/Sonner). Don't use for modal confirmations (use AlertDialog). Don't use as the only way to communicate a critical error — pair with field-level feedback.\",\n\t\tcommonMistakes: [\n\t\t\t\"Using destructive for non-error messages\",\n\t\t\t\"Missing AlertTitle (reduces scannability)\",\n\t\t\t\"Stacking multiple Alerts on the same page instead of grouping\",\n\t\t],\n\t\trelatedComponents: [\"alert-dialog\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root renders role='alert' so screen readers announce it. For non-urgent info banners consider role='status' or aria-live='polite' via className overrides.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"alert\", \"notification\", \"banner\", \"info\", \"warning\", \"error\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sonnerSchema: ComponentSchemaDefinition = {\n\tname: \"sonner\",\n\tdisplayName: \"Sonner (Toast)\",\n\tdescription: \"Ephemeral toast notifications via Sonner. Render <Toaster /> once at app root, then call toast() anywhere.\",\n\tcategory: \"component\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"position\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"bottom-right\",\n\t\t\tdescription: \"Where toasts appear on screen\",\n\t\t\tenumValues: [\n\t\t\t\t\"top-left\",\n\t\t\t\t\"top-center\",\n\t\t\t\t\"top-right\",\n\t\t\t\t\"bottom-left\",\n\t\t\t\t\"bottom-center\",\n\t\t\t\t\"bottom-right\",\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tname: \"richColors\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Enable success/error/warning color variants via toast.success/error/warning\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeButton\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Show a close button on each toast\",\n\t\t},\n\t\t{\n\t\t\tname: \"theme\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"system\",\n\t\t\tdescription: \"Visual theme\",\n\t\t\tenumValues: [\"light\", \"dark\", \"system\"],\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"sonner\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"muted\", \"muted-foreground\", \"primary\", \"primary-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App setup + fire toast\",\n\t\t\tdescription: \"Render Toaster once, call toast() anywhere\",\n\t\t\tcode: '// In your root layout:\\n<Toaster />\\n\\n// Anywhere in your app:\\nimport { toast } from \"@/components/ui/sonner\";\\n\\n<Button onClick={() => toast(\"Event created\", { description: \"Friday, Dec 11 at 10:00 AM\" })}>\\n Show toast\\n</Button>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for transient feedback: save confirmations, error messages, background task completion. Pairs well with mutation handlers (onSuccess/onError).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for persistent info (use Alert). Don't use for destructive confirmations (use AlertDialog). Don't use for critical errors that block user workflow.\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering multiple <Toaster /> components (one is enough)\",\n\t\t\t\"Calling toast() during server rendering (must be client-side)\",\n\t\t\t\"Using toast for messages the user needs to re-read (they auto-dismiss)\",\n\t\t],\n\t\trelatedComponents: [\"alert\", \"alert-dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sonner handles aria-live='polite' on the toast region so screen readers announce new toasts. Critical messages should still use Alert/AlertDialog for persistent visibility.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"toast\", \"sonner\", \"notification\", \"transient\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tableSchema: ComponentSchemaDefinition = {\n\tname: \"table\",\n\tdisplayName: \"Table\",\n\tdescription: \"Styled HTML table primitives (Table / TableHeader / TableBody / TableRow / TableHead / TableCell / TableCaption / TableFooter). Low-level building blocks — use DataTable for sorting/filtering/pagination.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <table>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"TableHeader + TableBody + TableFooter + TableCaption. Use TableRow/TableHead/TableCell inside.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic table\",\n\t\t\tdescription: \"Three-column styled table with header + rows\",\n\t\t\tcode: '<Table>\\n <TableCaption>A list of your recent invoices.</TableCaption>\\n <TableHeader>\\n <TableRow>\\n <TableHead>Invoice</TableHead>\\n <TableHead>Status</TableHead>\\n <TableHead className=\"text-right\">Amount</TableHead>\\n </TableRow>\\n </TableHeader>\\n <TableBody>\\n <TableRow>\\n <TableCell className=\"font-medium\">INV001</TableCell>\\n <TableCell>Paid</TableCell>\\n <TableCell className=\"text-right\">$250.00</TableCell>\\n </TableRow>\\n </TableBody>\\n</Table>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for simple tabular data where you render rows manually: invoice lists, pricing rows, settings tables. Responsive container wraps the <table> to allow horizontal scroll on small screens.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for large datasets that need sorting/filtering/pagination (use DataTable). Don't use for layout (use CSS grid/flex). Don't use for <form> field arrays (use native fields).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using <div> grids instead of a real <table> for tabular data (breaks a11y)\",\n\t\t\t\"Putting interactive controls in headers without keyboard semantics\",\n\t\t\t\"Missing TableCaption when the table has no other label\",\n\t\t],\n\t\trelatedComponents: [\"data-table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Semantic <table> / <thead> / <tbody> is used, so screen readers announce rows/columns. Include a TableCaption or aria-label. Mark column sort buttons with aria-sort.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"table\", \"data\", \"rows\", \"tabular\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dataTableSchema: ComponentSchemaDefinition = {\n\tname: \"data-table\",\n\tdisplayName: \"Data Table\",\n\tdescription: \"Generic data-driven table built on TanStack Table + Hex UI Table primitives. Pass columns + data; add sorting/filtering/pagination via TanStack hooks.\",\n\tcategory: \"component\",\n\tsubcategory: \"data\",\n\tprops: [\n\t\t{ name: \"columns\", type: \"object\", required: true, description: \"ColumnDef<TData, TValue>[] from @tanstack/react-table\" },\n\t\t{ name: \"data\", type: \"object\", required: true, description: \"Array of row data\" },\n\t\t{\n\t\t\tname: \"caption\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Visible caption rendered below the table; announced by screen readers when entering the table\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label forwarded as aria-label on the underlying <table>; use when no visible caption is shown\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@tanstack/react-table\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"components/table/table\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"muted\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic data table\",\n\t\t\tdescription: \"Three-column table rendered from TanStack column defs\",\n\t\t\tcode: 'import type { ColumnDef } from \"@tanstack/react-table\";\\nimport { DataTable } from \"@/components/ui/data-table\";\\n\\ntype Payment = { id: string; amount: number; status: \"pending\" | \"paid\" | \"failed\"; email: string };\\n\\nconst columns: ColumnDef<Payment>[] = [\\n { accessorKey: \"status\", header: \"Status\" },\\n { accessorKey: \"email\", header: \"Email\" },\\n { accessorKey: \"amount\", header: \"Amount\" },\\n];\\n\\nconst data: Payment[] = [\\n { id: \"1\", amount: 100, status: \"paid\", email: \"a@x.com\" },\\n { id: \"2\", amount: 250, status: \"pending\", email: \"b@x.com\" },\\n];\\n\\nexport function Example() {\\n return <DataTable columns={columns} data={data} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for tabular data that needs sorting, filtering, pagination, or row selection. Define columns once, feed data — TanStack handles the row model. Add more features incrementally (getSortedRowModel, getFilteredRowModel, getPaginationRowModel).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for static/simple tables (use Table primitives directly). Don't use for virtualized very-large lists (use TanStack Virtual). Don't use for grid layouts (use CSS grid). DataTable is a Client Component (uses useReactTable hook) — fetch data in a Server Component and pass it as props.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting getCoreRowModel() (table renders nothing)\",\n\t\t\t\"Recreating columns array on every render (breaks memoization — wrap in useMemo or define outside the component)\",\n\t\t\t\"Using accessorKey with nested paths without accessorFn\",\n\t\t\t\"Not adding filter/sort row models when those features are needed\",\n\t\t\t\"Shipping a table without `caption` or `aria-label` — the table is unlabelled to assistive tech\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"pagination\"],\n\t\taccessibilityNotes:\n\t\t\t\"Pass either `caption` (visible) or `aria-label` so screen readers announce the table when the user enters it. Add aria-sort to sortable column headers. Announce filter/sort changes via aria-live for dynamic updates.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"data-table\", \"tanstack\", \"sortable\", \"filterable\", \"paginated\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const paginationSchema: ComponentSchemaDefinition = {\n\tname: \"pagination\",\n\tdisplayName: \"Pagination\",\n\tdescription: \"Composable pagination controls (Pagination / PaginationContent / PaginationItem / PaginationLink / PaginationPrevious / PaginationNext / PaginationEllipsis). Link-based by default — pair with client-side navigation or server params.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"className\", type: \"string\", required: false, description: \"Additional CSS classes on the <nav>\" },\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"PaginationContent containing PaginationItem elements (PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"primitives/button/button\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"input\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic pagination\",\n\t\t\tdescription: \"Previous + 3 pages + ellipsis + Next with current page marked\",\n\t\t\tcode: '<Pagination>\\n <PaginationContent>\\n <PaginationItem>\\n <PaginationPrevious href=\"#\" />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">1</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\" isActive>2</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationLink href=\"#\">3</PaginationLink>\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationEllipsis />\\n </PaginationItem>\\n <PaginationItem>\\n <PaginationNext href=\"#\" />\\n </PaginationItem>\\n </PaginationContent>\\n</Pagination>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for navigating between pages of a paginated dataset: blog lists, search results, table rows. Use PaginationEllipsis to truncate long ranges.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for infinite scroll (use IntersectionObserver). Don't use for step-by-step wizards (use a stepper). Don't use for fewer than ~3 pages (just show all the items).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using PaginationLink without href (anchor is not keyboard-reachable)\",\n\t\t\t\"Forgetting isActive on the current page (no visual or aria-current feedback)\",\n\t\t\t\"Showing every page number on long ranges — use PaginationEllipsis to truncate\",\n\t\t\t\"Using onClick-only <button> instead of PaginationLink — loses right-click-open-new-tab affordance; prefer href + Next.js Link when client-side routing is needed\",\n\t\t],\n\t\trelatedComponents: [\"table\", \"data-table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root is role='navigation' aria-label='pagination'. Active link gets aria-current='page'. Previous/Next have aria-label. Ellipsis is decorative (aria-hidden) with a sr-only 'More pages' label.\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"pagination\", \"pages\", \"navigation\", \"list\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const calendarSchema: ComponentSchemaDefinition = {\n\tname: \"calendar\",\n\tdisplayName: \"Calendar\",\n\tdescription:\n\t\t\"Date grid built on react-day-picker v9. Supports single, multiple, and range selection modes. Keyboard navigable and localizable.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"mode\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"single\",\n\t\t\tdescription: \"Selection mode: 'single' | 'multiple' | 'range'\",\n\t\t},\n\t\t{\n\t\t\tname: \"selected\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected value (Date, Date[], or DateRange depending on mode)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when selection changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"DayPicker Matcher — accepts a Date, Date[], { from, to }, { before | after }, or a (date: Date) => boolean predicate\",\n\t\t},\n\t\t{\n\t\t\tname: \"showOutsideDays\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Render days from the previous/next month in the grid\",\n\t\t},\n\t\t{\n\t\t\tname: \"numberOfMonths\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 1,\n\t\t\tdescription: \"How many months to display side-by-side\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"The month to render first (uncontrolled). Date object.\",\n\t\t},\n\t\t{\n\t\t\tname: \"fromDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Earliest selectable date (Date). Days before are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"toDate\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Latest selectable date (Date). Days after are disabled.\",\n\t\t},\n\t\t{\n\t\t\tname: \"locale\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"date-fns Locale object (e.g. `import { es } from 'date-fns/locale'`) for weekday/month labels\",\n\t\t},\n\t\t{\n\t\t\tname: \"weekStartsOn\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0,\n\t\t\tdescription: \"First day of the week (0 = Sunday, 1 = Monday, …, 6 = Saturday)\",\n\t\t},\n\t\t{\n\t\t\tname: \"classNames\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Per-part className overrides (merged with defaults)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"accent\", \"accent-foreground\", \"primary\", \"primary-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Single date selection\",\n\t\t\tdescription: \"Bind a Date state to selected/onSelect\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>(new Date());\\n return <Calendar mode=\"single\" selected={date} onSelect={setDate} className=\"rounded-md border\" />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Range selection\",\n\t\t\tdescription: \"Pick a start and end date\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport type { DateRange } from \"react-day-picker\";\\nimport { Calendar } from \"@/components/ui/calendar\";\\n\\nexport function Example() {\\n const [range, setRange] = useState<DateRange | undefined>();\\n return <Calendar mode=\"range\" selected={range} onSelect={setRange} numberOfMonths={2} />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for inline date selection UIs, or as the month-grid inside a DatePicker (wrapped in a Popover). Supports single date, multi-date, and range modes.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when only a text date input is needed (use Input type=date). Don't embed inside a very narrow container — the grid needs ~280px min width. For scheduling UIs with time, combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to selected (must be a Date, Date[], or DateRange object)\",\n\t\t\t\"Forgetting mode prop (default is single, but being explicit avoids confusion)\",\n\t\t\t\"Overriding classNames completely instead of spreading — loses default styling\",\n\t\t\t\"Using inside a Server Component without marking the consumer 'use client'\",\n\t\t],\n\t\trelatedComponents: [\"date-picker\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"react-day-picker wires aria-label, aria-selected, and keyboard navigation (arrows, Home/End, PageUp/Down). Focus rings on day buttons use the ring token.\",\n\t\ttokenBudget: 800,\n\t},\n\ttags: [\"calendar\", \"date\", \"date-picker\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const datePickerSchema: ComponentSchemaDefinition = {\n\tname: \"date-picker\",\n\tdisplayName: \"Date Picker\",\n\tdescription:\n\t\t\"Date input composed from Popover + Calendar. Shows the selected date formatted via date-fns, opens a calendar grid on click.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected Date\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user selects a date: (date: Date | undefined) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Pick a date\",\n\t\t\tdescription: \"Text shown on the trigger when no date is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"dateFormat\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"PPP\",\n\t\t\tdescription: \"date-fns format token for the trigger label (e.g. 'PPP', 'yyyy-MM-dd')\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the picker trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible <label> is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"captionLayout\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Caption layout forwarded to react-day-picker. Use 'dropdown' (or 'dropdown-years' / 'dropdown-months') for native <select> navigation — common for birth-date pickers. Default is 'label' (chevron buttons only).\",\n\t\t},\n\t\t{\n\t\t\tname: \"startMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Earliest month/year navigable in the calendar (Date). Forwarded to react-day-picker. Pair with captionLayout='dropdown'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"endMonth\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Latest month/year navigable in the calendar (Date). Forwarded to react-day-picker. Pair with captionLayout='dropdown'.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"react-day-picker\", \"date-fns\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/calendar/calendar\", \"components/popover/popover\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"border\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic date picker\",\n\t\t\tdescription: \"Bind a Date state and render the picker\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { DatePicker } from \"@/components/ui/date-picker\";\\n\\nexport function Example() {\\n const [date, setDate] = useState<Date | undefined>();\\n return <DatePicker value={date} onChange={setDate} />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Birth-date picker with year dropdown\",\n\t\t\tdescription:\n\t\t\t\t\"Use captionLayout='dropdown' with explicit startMonth/endMonth to get native <select> year navigation\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { DatePicker } from \"@/components/ui/date-picker\";\\n\\nexport function Example() {\\n const [dob, setDob] = useState<Date | undefined>();\\n return (\\n <DatePicker\\n value={dob}\\n onChange={setDob}\\n placeholder=\"Date of birth\"\\n captionLayout=\"dropdown\"\\n startMonth={new Date(1925, 0)}\\n endMonth={new Date(new Date().getFullYear(), 11)}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for selecting a single date in a form. Shows a formatted text label and opens a month grid on click. Composes Popover + Calendar + button trigger. For far-away years (birthdays, historical dates), pass captionLayout='dropdown' plus startMonth/endMonth.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for date ranges (compose Calendar mode='range' + Popover yourself). Don't use for native mobile date UX (<input type='date'> is often better on phones). Don't use if you need time selection — combine with a separate time picker.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a string to value — must be a Date object\",\n\t\t\t\"Missing aria-label when the picker has no adjacent visible <label>\",\n\t\t\t\"Overriding className in a way that hurts focus ring visibility\",\n\t\t\t\"Forgetting that the popover auto-closes on select — provide onChange to capture the value\",\n\t\t\t\"Setting captionLayout='dropdown' without startMonth/endMonth — react-day-picker defaults to ±100 years, producing a 200-option dropdown\",\n\t\t],\n\t\trelatedComponents: [\"calendar\", \"popover\", \"input\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger is a real <button> with focus ring. When rendered without a visible label, pass aria-label. The popover portals and traps keyboard focus inside Calendar until the user selects or presses Escape.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"date-picker\", \"date\", \"input\", \"popover\", \"calendar\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const inputOTPSchema: ComponentSchemaDefinition = {\n\tname: \"input-otp\",\n\tdisplayName: \"Input OTP\",\n\tdescription:\n\t\t\"One-time-password / verification-code entry built on the input-otp library. Renders N character slots with active/caret state and auto-advance on type.\",\n\tcategory: \"component\",\n\tsubcategory: \"forms\",\n\tprops: [\n\t\t{\n\t\t\tname: \"maxLength\",\n\t\t\ttype: \"number\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Total number of slots (typically 4–8 for OTPs)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled value — the current entered string\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired as the user types: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"onComplete\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called when all slots are filled (useful to auto-submit)\",\n\t\t},\n\t\t{\n\t\t\tname: \"pattern\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Regex to restrict input (use REGEXP_ONLY_DIGITS, REGEXP_ONLY_CHARS, or REGEXP_ONLY_DIGITS_AND_CHARS)\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the whole input\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"InputOTPGroup with InputOTPSlot index={0..maxLength-1}, optional InputOTPSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"input-otp\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"ring\", \"background\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"6-digit OTP with separator\",\n\t\t\tdescription: \"Two groups of 3 slots divided by a bullet\",\n\t\t\tcode: 'import { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot } from \"@/components/ui/input-otp\";\\nimport { REGEXP_ONLY_DIGITS } from \"input-otp\";\\n\\nexport function Example() {\\n return (\\n <InputOTP maxLength={6} pattern={REGEXP_ONLY_DIGITS}>\\n <InputOTPGroup>\\n <InputOTPSlot index={0} />\\n <InputOTPSlot index={1} />\\n <InputOTPSlot index={2} />\\n </InputOTPGroup>\\n <InputOTPSeparator />\\n <InputOTPGroup>\\n <InputOTPSlot index={3} />\\n <InputOTPSlot index={4} />\\n <InputOTPSlot index={5} />\\n </InputOTPGroup>\\n </InputOTP>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for one-time password, email verification code, 2FA code, or any fixed-length code entry. Auto-advances on type, supports paste of the full code, and supports regex validation.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for variable-length codes (use a plain Input). Don't use for passwords (use Input type='password'). Don't use for open-ended short text — the slot UI implies a code.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to render maxLength slots — the underlying input's maxLength won't match the visible UI\",\n\t\t\t\"Using pattern without importing one of the REGEXP_ONLY_* constants from 'input-otp'\",\n\t\t\t\"Wrapping the whole thing in a <form> without a submit handler — onComplete is often a better auto-submit hook\",\n\t\t\t\"Overriding slot className in a way that removes the first/last border-radius rules\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"form\"],\n\t\taccessibilityNotes:\n\t\t\t\"input-otp manages a single hidden <input> so screen readers hear one field of N characters. Each slot is a visual representation. The active slot gets a focus ring via the ring token.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"input-otp\", \"otp\", \"verification\", \"2fa\", \"code\", \"pin\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const commandSchema: ComponentSchemaDefinition = {\n\tname: \"command\",\n\tdisplayName: \"Command\",\n\tdescription:\n\t\t\"Composable command menu built on cmdk — search input + filtered list with keyboard navigation. Use as an inline palette or, wrapped in CommandDialog, as a ⌘K-style launcher.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{\n\t\t\tname: \"shouldFilter\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Built-in filtering. Set to false for fully-controlled filtering.\",\n\t\t},\n\t\t{\n\t\t\tname: \"filter\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Custom scoring function: (value, search, keywords?) => number (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active-item value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the highlighted item changes\",\n\t\t},\n\t\t{\n\t\t\tname: \"loop\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Loop arrow-key navigation at the ends of the list\",\n\t\t},\n\t\t{\n\t\t\tname: \"label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label for the menu (not shown visually)\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"CommandInput + CommandList with CommandEmpty, CommandGroup, CommandItem, CommandSeparator\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"components/dialog/dialog\", \"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"popover\", \"popover-foreground\", \"accent\", \"accent-foreground\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Command dialog launcher (⌘K)\",\n\t\t\tdescription: \"Toggle a command palette with keyboard shortcut\",\n\t\t\tcode: 'import { useEffect, useState } from \"react\";\\nimport { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from \"@/components/ui/command\";\\n\\nexport function Example() {\\n const [open, setOpen] = useState(false);\\n useEffect(() => {\\n const down = (e: KeyboardEvent) => {\\n if (e.key === \"k\" && (e.metaKey || e.ctrlKey)) {\\n e.preventDefault();\\n setOpen(v => !v);\\n }\\n };\\n document.addEventListener(\"keydown\", down);\\n return () => document.removeEventListener(\"keydown\", down);\\n }, []);\\n return (\\n <CommandDialog open={open} onOpenChange={setOpen}>\\n <CommandInput placeholder=\"Type a command or search…\" />\\n <CommandList>\\n <CommandEmpty>No results found.</CommandEmpty>\\n <CommandGroup heading=\"Suggestions\">\\n <CommandItem onSelect={() => setOpen(false)}>Profile</CommandItem>\\n <CommandItem onSelect={() => setOpen(false)}>Settings</CommandItem>\\n </CommandGroup>\\n </CommandList>\\n </CommandDialog>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for searchable menus, command palettes, ⌘K launchers, or as the list body of a Combobox. Built-in fuzzy filter + arrow-key nav + Enter-to-select.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for small static lists (use plain DropdownMenu). Don't use for large data tables (use DataTable). If you need a select input with a single bound value, Combobox is the higher-level wrapper.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting CommandList — items won't be scrollable or grouped properly\",\n\t\t\t\"Giving CommandItem non-unique values (breaks filtering and controlled state)\",\n\t\t\t\"Overriding CommandInput className to remove the border/padding — breaks the ⌘K icon layout\",\n\t\t\t\"Not rendering CommandEmpty — the list looks broken when a search has no matches\",\n\t\t\t\"Querying CommandSeparator via cmdk's internal Separator state — Hex UI renders it as a presentational div with role='none' (and the `data-cmdk-separator` attribute preserved for selector compatibility) so it can sit inside CommandList's role=listbox without violating ARIA\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"dialog\", \"dropdown-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"cmdk wires role=listbox/option and aria-activedescendant. Use the `label` prop on Command for a screen-reader-only name when no visible heading exists. CommandSeparator renders with role='none' (still selectable via `[data-cmdk-separator]`) so listbox-children rules are satisfied.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"command\", \"cmdk\", \"palette\", \"search\", \"launcher\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const comboboxSchema: ComponentSchemaDefinition = {\n\tname: \"combobox\",\n\tdisplayName: \"Combobox\",\n\tdescription:\n\t\t\"Searchable single-select input. Composes Popover + Command (cmdk) + a styled trigger. Pass a list of { value, label } options.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { value: string, label: string, disabled?: boolean }\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected option value\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when the user picks an option: (value: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Select…\",\n\t\t\tdescription: \"Text shown on the trigger when nothing is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"searchPlaceholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Search…\",\n\t\t\tdescription: \"Placeholder for the filter input\",\n\t\t},\n\t\t{\n\t\t\tname: \"emptyText\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"No results found.\",\n\t\t\tdescription: \"Shown inside the list when the search has no matches\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible label is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the combobox\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\n\t\t\t\"components/command/command\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"input\", \"ring\", \"accent\", \"accent-foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Framework picker\",\n\t\t\tdescription: \"Searchable single-select with a small static list\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Combobox } from \"@/components/ui/combobox\";\\n\\nconst frameworks = [\\n { value: \"next\", label: \"Next.js\" },\\n { value: \"remix\", label: \"Remix\" },\\n { value: \"astro\", label: \"Astro\" },\\n { value: \"nuxt\", label: \"Nuxt\" },\\n];\\n\\nexport function Example() {\\n const [value, setValue] = useState<string>();\\n return <Combobox options={frameworks} value={value} onChange={setValue} placeholder=\"Pick a framework\" />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for a select input when the list is >~8 items or users benefit from typing to narrow. Fuzzy search + keyboard nav + selected-item checkmark.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for native-select parity on mobile (use Select). Don't use for multi-select (this component is single-value — compose Command + Popover yourself for multi). Don't use for free-text entry (use Input).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing duplicate option values (breaks selection and filtering)\",\n\t\t\t\"Two options with identical labels — cmdk dedupes by the Item's filter value (the label here), so one will be dropped from the list\",\n\t\t\t\"Using the label as the value — fine if stable, but prefer a short stable `value` string\",\n\t\t\t\"Forgetting to bind value + onChange — uncontrolled mode doesn't exist on this wrapper\",\n\t\t\t\"Mixing translated labels without keying on value — label changes won't update selection\",\n\t\t\t\"Missing aria-label / aria-labelledby — role='combobox' does not allow name from contents, so without one of these the trigger has no accessible name\",\n\t\t],\n\t\trelatedComponents: [\"command\", \"popover\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger has role='combobox' + aria-expanded + aria-haspopup='listbox'. aria-controls points at the inner CommandList (a useId-stabilized listbox). Pass aria-label or aria-labelledby — combobox does not derive its name from contents.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"combobox\", \"select\", \"search\", \"cmdk\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const multiComboboxSchema: ComponentSchemaDefinition = {\n\tname: \"multi-combobox\",\n\tdisplayName: \"MultiCombobox\",\n\tdescription:\n\t\t\"Searchable multi-select input. Composes Popover + Command (cmdk) + a styled trigger. Trigger shows '{n} selected'; each option exposes aria-selected.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { value: string, label: string, disabled?: boolean }\",\n\t\t},\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected values (string[])\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback when the user toggles an option: (values: string[]) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"placeholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Select…\",\n\t\t\tdescription: \"Text shown on the trigger when nothing is selected\",\n\t\t},\n\t\t{\n\t\t\tname: \"searchPlaceholder\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Search…\",\n\t\t\tdescription: \"Placeholder for the filter input\",\n\t\t},\n\t\t{\n\t\t\tname: \"emptyText\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"No results found.\",\n\t\t\tdescription: \"Shown inside the list when the search has no matches\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxSelected\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Soft cap on selections — once reached, unselected options become aria-disabled and clicks are ignored\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeOnSelect\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Close the popover after every pick. Default false matches multi-select UX (Linear/Notion).\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the trigger\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible label is used\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-labelledby\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Id of an external visible label that names the combobox\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"cmdk\", \"@radix-ui/react-popover\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\n\t\t\t\"components/command/command\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"ring\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Tag picker\",\n\t\t\tdescription: \"Multi-select with a small static list and chip count\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { MultiCombobox } from \"@/components/ui/multi-combobox\";\\n\\nconst tags = [\\n { value: \"bug\", label: \"Bug\" },\\n { value: \"feature\", label: \"Feature\" },\\n { value: \"question\", label: \"Question\" },\\n { value: \"docs\", label: \"Documentation\" },\\n];\\n\\nexport function Example() {\\n const [picks, setPicks] = useState<string[]>([]);\\n return (\\n <MultiCombobox\\n options={tags}\\n value={picks}\\n onChange={setPicks}\\n placeholder=\"Pick tags\"\\n aria-label=\"Tags\"\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Capped selection\",\n\t\t\tdescription: \"Limit the number of items the user can pick\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { MultiCombobox } from \"@/components/ui/multi-combobox\";\\n\\nexport function Example() {\\n const [picks, setPicks] = useState<string[]>([]);\\n return (\\n <MultiCombobox\\n options={tags}\\n value={picks}\\n onChange={setPicks}\\n maxSelected={3}\\n aria-label=\"Up to 3 tags\"\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to pick multiple items from a list of >~8 options where users benefit from typing to narrow. Common for tags, recipients, filters. Trigger shows count, each option exposes aria-selected.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for single-select (use Combobox). Don't use for free-text entry (use Input or a tag input). Don't use for very large lists (>500 options) without server-side filtering — cmdk filters in-memory.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing duplicate option values — Set-based selection treats them as one\",\n\t\t\t\"Two options with identical labels — cmdk dedupes by the Item's filter value (the label here), so one will be dropped from the list\",\n\t\t\t\"Forgetting that value is string[] not string — passing a single string breaks Array iteration\",\n\t\t\t\"Setting closeOnSelect={true} for a power-user picker — multi-select normally stays open until the user dismisses\",\n\t\t\t\"Missing aria-label / aria-labelledby — role='combobox' does not derive its name from contents, so the trigger has no accessible name without one\",\n\t\t\t\"Relying on maxSelected to enforce business rules — the cap is a UX hint; always validate the array length on submit\",\n\t\t],\n\t\trelatedComponents: [\"combobox\", \"command\", \"popover\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Trigger has role='combobox' + aria-expanded + aria-haspopup='listbox'. aria-controls points at the inner CommandList only when open. Each option carries aria-selected; capped/disabled options carry aria-disabled. A visually-hidden aria-live='polite' region inside the trigger announces selection-count changes.\",\n\t\ttokenBudget: 1100,\n\t},\n\ttags: [\"combobox\", \"multi-select\", \"select\", \"search\", \"cmdk\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const stepperSchema: ComponentSchemaDefinition = {\n\tname: \"stepper\",\n\tdisplayName: \"Stepper\",\n\tdescription:\n\t\t\"Linear progress indicator for multi-step flows (form wizards, onboarding, checkout). Pure semantic <ol>/<li> with aria-current='step' on the active step and a per-step error status override.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"steps\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Ordered list of { id, label, description?, disabled?, status? }. `status` overrides the index-derived value.\",\n\t\t},\n\t\t{\n\t\t\tname: \"current\",\n\t\t\ttype: \"number\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Index of the current step (controlled).\",\n\t\t},\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Layout direction: 'horizontal' | 'vertical'\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Indicator size: 'sm' | 'md'\",\n\t\t},\n\t\t{\n\t\t\tname: \"onStepClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"When provided, each step renders as a clickable <button>; otherwise steps are non-interactive <span>s. Signature: (index: number) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the ordered list (e.g. 'Onboarding steps', 'Checkout progress')\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\tdescription: \"Layout direction\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"horizontal\", description: \"Steps laid out left-to-right\" },\n\t\t\t\t{ value: \"vertical\", description: \"Steps stacked top-to-bottom\" },\n\t\t\t],\n\t\t\tdefault: \"horizontal\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Indicator size\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"Compact indicator (1.75rem)\" },\n\t\t\t\t{\n\t\t\t\t\tvalue: \"md\",\n\t\t\t\t\tdescription: \"Default indicator (matches control-height-sm)\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"primary\",\n\t\t\"primary-foreground\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"input\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Form wizard\",\n\t\t\tdescription:\n\t\t\t\t\"Three-step horizontal stepper with the second step active\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Onboarding\"\\n current={1}\\n steps={[\\n { id: \"account\", label: \"Account\", description: \"Email + password\" },\\n { id: \"profile\", label: \"Profile\", description: \"Name + photo\" },\\n { id: \"confirm\", label: \"Confirm\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With error state\",\n\t\t\tdescription: \"Mark a failed step explicitly with status='error'\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Checkout\"\\n current={2}\\n steps={[\\n { id: \"cart\", label: \"Cart\" },\\n { id: \"shipping\", label: \"Shipping\", status: \"error\" },\\n { id: \"payment\", label: \"Payment\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Vertical, clickable\",\n\t\t\tdescription: \"Vertical orientation with onStepClick to jump back\",\n\t\t\tcode: 'import { Stepper } from \"@/components/ui/stepper\";\\n\\nexport function Example() {\\n return (\\n <Stepper\\n aria-label=\"Settings\"\\n orientation=\"vertical\"\\n current={1}\\n onStepClick={(i) => console.log(i)}\\n steps={[\\n { id: \"profile\", label: \"Profile\" },\\n { id: \"security\", label: \"Security\" },\\n { id: \"billing\", label: \"Billing\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to communicate progress through a multi-step flow with a known fixed sequence: form wizards, onboarding, checkout, ticket triage. Mark per-step error status when validation fails.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for free navigation across unrelated sections (use Tabs). Don't use for indeterminate progress (use Progress with no value). Don't use for >7 steps — collapse into a multi-screen wizard with a sub-stepper instead.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — the <ol> needs an accessible name to be understood as a step list\",\n\t\t\t\"Setting current to an out-of-range index — derives all steps as 'upcoming'\",\n\t\t\t\"Mixing index-derived status with manual status overrides without intent — once you set status on one step, set it on all of them or know the precedence rules\",\n\t\t\t\"Making the stepper interactive (onStepClick) but allowing forward jumps before validation — gate jumps in your handler\",\n\t\t\t\"Treating it as a tab control — Stepper communicates direction; users can't pick step 5 then go back to 2 to review without your wiring\",\n\t\t],\n\t\trelatedComponents: [\"progress\", \"tabs\", \"breadcrumb\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders <ol> with the provided aria-label. The active step's interactive element gets aria-current='step'. Completed steps prefix the label with visually-hidden 'Completed:'; error steps prefix with 'Error:' and set aria-invalid='true' on the indicator. Connector lines are aria-hidden. When onStepClick is omitted, steps are plain <span>s — not fake buttons.\",\n\t\ttokenBudget: 1400,\n\t},\n\ttags: [\"stepper\", \"wizard\", \"progress\", \"navigation\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const timelineSchema: ComponentSchemaDefinition = {\n\tname: \"timeline\",\n\tdisplayName: \"Timeline\",\n\tdescription:\n\t\t\"Vertical chronological event feed for activity logs, audit trails, release notes, and notification streams. Pure semantic <ol>/<li> with a status-colored indicator and an optional icon override.\",\n\tcategory: \"component\",\n\tsubcategory: \"data-display\",\n\tprops: [\n\t\t{\n\t\t\tname: \"events\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Ordered list of { id, title, timestamp?, description?, icon?, status? } events.\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"md\",\n\t\t\tdescription: \"Indicator size: 'sm' | 'md'\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the ordered list (e.g. 'Activity log', 'Release notes')\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Indicator size\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"sm\", description: \"Compact 1.25rem indicator\" },\n\t\t\t\t{ value: \"md\", description: \"Default 1.75rem indicator\" },\n\t\t\t],\n\t\t\tdefault: \"md\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"foreground\",\n\t\t\"muted-foreground\",\n\t\t\"input\",\n\t\t\"primary\",\n\t\t\"destructive\",\n\t\t\"destructive-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Activity log\",\n\t\t\tdescription: \"Three-entry vertical feed with mixed status colors\",\n\t\t\tcode: 'import { Timeline } from \"@/components/ui/timeline\";\\n\\nexport function Example() {\\n return (\\n <Timeline\\n aria-label=\"Activity\"\\n events={[\\n { id: \"1\", title: \"Pull request opened\", timestamp: \"2 hours ago\", status: \"info\" },\\n { id: \"2\", title: \"CI passed\", timestamp: \"1 hour ago\", status: \"success\" },\\n { id: \"3\", title: \"Merged to main\", timestamp: \"12 minutes ago\", description: \"Squash + merge by @oscar\", status: \"success\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom icon\",\n\t\t\tdescription: \"Override the default dot with a custom node\",\n\t\t\tcode: 'import { Timeline } from \"@/components/ui/timeline\";\\n\\nexport function Example() {\\n return (\\n <Timeline\\n aria-label=\"Release notes\"\\n events={[\\n { id: \"v1\", title: \"v1.0\", timestamp: \"Apr 24\", icon: <span>⚡</span> },\\n { id: \"v2\", title: \"v1.1\", timestamp: \"Apr 27\", icon: <span>🐛</span>, status: \"warning\" },\\n ]}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to show a chronological event feed: activity logs, audit trails, release notes, notification history, ticket events. Each event has a title and optional timestamp + description.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for project schedules / Gantt charts (build a custom layout). Don't use for navigation between time periods (use Tabs or Stepper). Don't use for paginated data (use Table or DataTable). Don't use for >50 events without virtualization — Timeline renders every item.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — the <ol> needs an accessible name to be understood as a feed\",\n\t\t\t\"Using duplicate event ids — breaks React keys and event reconciliation on re-render\",\n\t\t\t\"Stuffing the description with rich layouts that overflow the timeline rail — keep it short or move to a Card\",\n\t\t\t\"Setting status='error' on every event for emphasis — color loses meaning when overused\",\n\t\t\t\"Mixing controlled timestamps as Date objects without formatting — Timeline accepts ReactNode, so format upstream (date-fns) before passing in\",\n\t\t],\n\t\trelatedComponents: [\"card\", \"stepper\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders <ol> with the provided aria-label. The status-colored indicator and connector line are aria-hidden — meaning is carried entirely by the title/timestamp/description text. No aria-current; events are historical, not navigational. For >50 events consider a windowing solution outside Timeline.\",\n\t\ttokenBudget: 1100,\n\t},\n\ttags: [\"timeline\", \"feed\", \"activity\", \"audit-log\", \"history\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dropzoneSchema: ComponentSchemaDefinition = {\n\tname: \"dropzone\",\n\tdisplayName: \"Dropzone\",\n\tdescription:\n\t\t\"Drag-and-drop file input built on the native HTML5 drag-drop API plus a visually-hidden <input type='file'> for keyboard + screen-reader access. Filters by accept/maxSize/maxFiles before emitting.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"onFilesSelected\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback fired with the accepted File[] on pick or drop.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onFilesRejected\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback fired with the rejected File[] when files fail accept/maxSize/maxFiles, OR when multiple={false} and extras were sliced off. Receives the rejected File[]. Use to surface 'wrong type' / 'too large' toasts.\",\n\t\t},\n\t\t{\n\t\t\tname: \"accept\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Accept attribute forwarded to the hidden file input. Three forms: MIME type ('application/pdf'), MIME wildcard ('image/*'), or extension with leading dot ('.csv'). Extension matching is suffix-based (mirrors HTML5) — '.csv' will match 'notes.md.csv' as well.\",\n\t\t},\n\t\t{\n\t\t\tname: \"multiple\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription:\n\t\t\t\t\"Allow multiple files. With `multiple={false}`, the first accepted file flows to onFilesSelected and any extras flow to onFilesRejected so consumers can toast them.\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxFiles\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Cap on the number of accepted files. Excess files are dropped silently — surface in your handler if needed.\",\n\t\t},\n\t\t{\n\t\t\tname: \"maxSize\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Maximum size per file in bytes. Files over the cap are filtered before onFilesSelected fires.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable interaction (click + drop + keyboard).\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Render override for the body. Pass a node, or a function receiving { isDragOver, isDisabled, openFileDialog } for layout control.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Required accessible name for the drop area.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription:\n\t\t\t\t\"Body of the drop area (icon + copy). Optional — sensible default included.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\", \"function\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"background\",\n\t\t\"input\",\n\t\t\"primary\",\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Image upload\",\n\t\t\tdescription: \"Filter to images only with a 5MB cap\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { Dropzone } from \"@/components/ui/dropzone\";\\n\\nexport function Example() {\\n const [files, setFiles] = useState<File[]>([]);\\n return (\\n <>\\n <Dropzone\\n accept=\"image/*\"\\n maxSize={5 * 1024 * 1024}\\n onFilesSelected={(picked) => setFiles((f) => [...f, ...picked])}\\n aria-label=\"Upload images\"\\n />\\n <ul>{files.map((f) => <li key={f.name}>{f.name}</li>)}</ul>\\n </>\\n );\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom body via render prop\",\n\t\t\tdescription: \"Take full control of the drop area visuals\",\n\t\t\tcode: 'import { Dropzone } from \"@/components/ui/dropzone\";\\n\\nexport function Example() {\\n return (\\n <Dropzone aria-label=\"Upload\" onFilesSelected={(f) => console.log(f)}>\\n {({ isDragOver }) => (\\n <span>{isDragOver ? \"Release to upload\" : \"Drop a file or click\"}</span>\\n )}\\n </Dropzone>\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any file upload UX where drag-drop is helpful (image uploaders, CSV import, attachment pickers). Built on native HTML5 + a hidden <input type='file'> so keyboard and screen-reader users get the same affordance.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for camera/microphone capture (use <input type='file' capture> directly or a media-specific component). Don't use for chunked/resumable uploads — Dropzone only emits File[]; pair with a real upload pipeline (tus, S3 multipart). Don't use for clipboard paste image upload — listen on document for that.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — without it the drop area is announced as just 'button' to screen readers\",\n\t\t\t\"Setting accept='image' (missing the slash or wildcard) — must be a MIME type, MIME prefix with /*, or a .extension\",\n\t\t\t\"Forgetting that extension matching is suffix-based — '.csv' will match 'notes.md.csv'. Acceptable (mirrors HTML5) but document upstream if business logic requires strict suffix-only\",\n\t\t\t\"Treating maxFiles as enforcement — files past the cap are dropped silently; if business rules require it, validate again on submit\",\n\t\t\t\"Forgetting to clear the file input value after a successful upload — Dropzone resets the hidden input automatically; if you wrap it, do the same\",\n\t\t\t\"Calling preventDefault on parent containers' onDragOver — without it the browser opens the file when dropped on the window outside the dropzone\",\n\t\t\t\"Treating empty drops as no-op silently when the user expected feedback — pair with onFilesRejected to surface filter failures\",\n\t\t],\n\t\trelatedComponents: [\"input\", \"button\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"The drop area is a role='button' div with tabIndex=0 and the required aria-label; Enter and Space open the file dialog. The file input is visually-hidden but live in the DOM so keyboard focus + assistive-tech file pickers work. Drag-state is exposed via data-drag-over for CSS-only state styling. When disabled, the drop area is removed from the tab order and aria-disabled is set.\",\n\t\ttokenBudget: 1500,\n\t},\n\ttags: [\"dropzone\", \"file-upload\", \"drag-drop\", \"input\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const timePickerSchema: ComponentSchemaDefinition = {\n\tname: \"time-picker\",\n\tdisplayName: \"Time Picker\",\n\tdescription:\n\t\t\"Time input — styled wrapper around the native <input type='time'>. Value is a 'HH:MM' (or 'HH:MM:SS' with step=1) string. The browser provides 12/24-hour locale handling, keyboard arrow spinning, and screen-reader announcement.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled time value as 'HH:MM' or 'HH:MM:SS' (24-hour).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Callback when the user picks a time: (value: string) => void. Value is always 24-hour 'HH:MM' (or 'HH:MM:SS' when step=1).\",\n\t\t},\n\t\t{\n\t\t\tname: \"step\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Step in seconds. Use 60 (default) for HH:MM, 1 for HH:MM:SS, 300 for 5-minute steps, 900 for 15-minute. Note: Chrome/Edge picker dropdown UI does NOT visually snap minutes to the step — it only affects keyboard arrow stepping and form validation. Off-step values are still rejected.\",\n\t\t},\n\t\t{\n\t\t\tname: \"min\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Earliest selectable time as 'HH:MM'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"max\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Latest selectable time as 'HH:MM'.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable the input.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Accessible label — required when no adjacent visible <label> is used.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"input\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic time picker\",\n\t\t\tdescription: \"Bind a string state and render the picker\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { TimePicker } from \"@/components/ui/time-picker\";\\n\\nexport function Example() {\\n const [time, setTime] = useState<string>();\\n return <TimePicker value={time} onChange={setTime} aria-label=\"Meeting time\" />;\\n}',\n\t\t},\n\t\t{\n\t\t\ttitle: \"With seconds + 5-minute step\",\n\t\t\tdescription:\n\t\t\t\t\"step={1} adds a seconds segment; step={300} steps minutes by 5 in browsers that support it\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { TimePicker } from \"@/components/ui/time-picker\";\\n\\nexport function Example() {\\n const [time, setTime] = useState<string>(\"09:00\");\\n return <TimePicker value={time} onChange={setTime} step={300} min=\"09:00\" max=\"17:00\" aria-label=\"Working hours start\" />;\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for selecting a time of day in a form (meeting time, reminder, business hours start/end). Browser handles 12/24-hour locale automatically based on user system settings; the wire format is always 24-hour 'HH:MM'. Component is controlled-only — pair `value` with `onChange`; for uncontrolled use, the input behaves as a controlled empty input with no upstream state.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for durations (hours/minutes elapsed) — use composite Input fields. Don't use for date+time together — combine with DatePicker. Don't use when explicit AM/PM segments matter for layout — compose Input + Select yourself; the native input renders AM/PM only in 12-hour locales. Don't use when you need pixel-identical chrome across browsers — the dropdown indicator is webkit-styled (Chrome/Edge/Safari) and absent in Firefox.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing a Date object to value — must be a string in 'HH:MM' format\",\n\t\t\t\"Treating onChange as 12-hour — the value is always 24-hour, the browser only displays it in user locale\",\n\t\t\t\"Missing aria-label when there's no adjacent visible <label> — input gets no accessible name\",\n\t\t\t\"Setting step to a value that doesn't divide evenly into 3600 (e.g. step=7) — confusing UX in browsers that snap to it\",\n\t\t\t\"Expecting Chrome/Edge's picker dropdown to visually skip minutes per step — it doesn't. The minute scroll wheel always shows every minute; step only constrains keyboard arrow stepping and form validation\",\n\t\t\t\"Setting min/max with seconds when step!=1 — the seconds segment is hidden, so users can't actually reach values that need it\",\n\t\t\t\"Expecting the dropdown picker indicator to render in Firefox — only webkit browsers paint it; Firefox renders the input without that affordance\",\n\t\t\t\"Expecting an uncontrolled mode — TimePicker is controlled-only. Pass both value + onChange, or omit both and accept that user input has no place to live\",\n\t\t],\n\t\trelatedComponents: [\"date-picker\", \"input\", \"select\"],\n\t\taccessibilityNotes:\n\t\t\t\"Native <input type='time'> — assistive tech announces hour/minute (and seconds if shown) segments individually. Arrow keys spin each segment. Disabled state is announced. Pass aria-label or wrap with a <label htmlFor>. Visual chrome (icon, dropdown affordance) is browser-controlled and varies across Chrome/Edge/Safari (rendered) and Firefox (absent).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"time-picker\", \"time\", \"input\", \"form\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const fileTreeSchema: ComponentSchemaDefinition = {\n\tname: \"file-tree\",\n\tdisplayName: \"File Tree\",\n\tdescription:\n\t\t\"Hierarchical tree view for files, folders, and any nested navigation. Implements the WAI-ARIA tree pattern with role='tree' / 'treeitem' / 'group', aria-level, aria-expanded, aria-selected, and full keyboard navigation (Up/Down/Left/Right/Home/End/Enter/Space).\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Tree of { id, name, children?, icon?, disabled? }. Presence of `children` (even an empty array) marks the node as a folder.\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultExpanded\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Uncontrolled — initial expanded ids (string[]).\",\n\t\t},\n\t\t{\n\t\t\tname: \"expanded\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled expanded ids (string[]). Pair with onExpandedChange.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onExpandedChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Fired with the new expanded ids: (ids: string[]) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"selected\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled selected node id.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription:\n\t\t\t\t\"Fired when the user activates a node via click, Enter, or Space: (id: string) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Required accessible name for the tree (e.g. 'File explorer', 'Settings sections').\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\n\t\t\"accent\",\n\t\t\"accent-foreground\",\n\t\t\"muted-foreground\",\n\t\t\"ring\",\n\t],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic file tree\",\n\t\t\tdescription: \"Uncontrolled expanded set; selected state controlled\",\n\t\t\tcode: 'import { useState } from \"react\";\\nimport { FileTree } from \"@/components/ui/file-tree\";\\n\\nconst nodes = [\\n {\\n id: \"src\",\\n name: \"src\",\\n children: [\\n { id: \"src/index.tsx\", name: \"index.tsx\" },\\n {\\n id: \"src/components\",\\n name: \"components\",\\n children: [\\n { id: \"src/components/Button.tsx\", name: \"Button.tsx\" },\\n { id: \"src/components/Input.tsx\", name: \"Input.tsx\" },\\n ],\\n },\\n ],\\n },\\n { id: \"package.json\", name: \"package.json\" },\\n];\\n\\nexport function Example() {\\n const [selected, setSelected] = useState<string>();\\n return (\\n <FileTree\\n aria-label=\"Project files\"\\n nodes={nodes}\\n defaultExpanded={[\"src\"]}\\n selected={selected}\\n onSelect={setSelected}\\n />\\n );\\n}',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for hierarchical navigation: file/folder explorers, settings sections, org charts, taxonomy browsers. Renders a real ARIA tree with full keyboard support, so it works for sighted, keyboard, and screen-reader users.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for flat lists (use ScrollArea + a list). Don't use for navigation menus (use NavigationMenu). Don't use for very deep trees (>5 levels) without virtualization — every node is rendered. Don't use for selecting multiple files concurrently — multi-select tree UX is a different beast; ship a separate component when you need it.\",\n\t\tcommonMistakes: [\n\t\t\t\"Mixing controlled `expanded` with `defaultExpanded` — pass exactly one\",\n\t\t\t\"Using non-stable node ids (e.g. array index) — collapsing/expanding shifts state\",\n\t\t\t\"Marking a leaf with `children: []` instead of omitting `children` — empty array still flags it as a folder, so the chevron shows\",\n\t\t\t\"Forgetting aria-label — the tree gets no accessible name and screen readers announce just 'tree'\",\n\t\t\t\"Calling onSelect to navigate without de-bouncing arrow-key focus changes — focus moves on arrows but does NOT call onSelect; only Enter/Space/click selects, so navigation should hang off onSelect, not focused state\",\n\t\t\t\"Expecting row-click to toggle expand — per WAI-ARIA tree pattern the row click only selects; toggling is the chevron button (or ArrowRight/Left, or Enter/Space when the row is focused). Common surprise after coming from VS Code-style trees\",\n\t\t\t\"Passing `selected` pointing at a node inside a collapsed branch — the tree falls back to the first visible node for tab focus, so the consumer can't rely on tabIndex to land on the selected target until it's revealed via expanded\",\n\t\t],\n\t\trelatedComponents: [\"accordion\", \"navigation-menu\", \"sidebar\"],\n\t\taccessibilityNotes:\n\t\t\t\"Root: role='tree' with aria-label. Each node: role='treeitem' with aria-level, aria-expanded (folders only), aria-selected, tabIndex=0 only on the active visible node (roving tabindex). Children container: role='group'. Click semantics: row click selects only; the chevron is a separate decorative button that toggles. Keyboard: ArrowDown/Up move through visible non-disabled nodes (disabled nodes are skipped); ArrowRight expands a closed folder or moves to first child; ArrowLeft collapses an open folder or moves to parent; Home/End jump to first/last visible; Enter/Space activate (toggle on folders, select on all).\",\n\t\ttokenBudget: 2000,\n\t},\n\ttags: [\"file-tree\", \"tree\", \"navigation\", \"explorer\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const colorPickerSchema: ComponentSchemaDefinition = {\n\tname: \"color-picker\",\n\tdisplayName: \"Color Picker\",\n\tdescription:\n\t\t\"HSL-native color picker that edits an HSL triplet directly via three sliders (H/S/L). Hex input is a display adapter; sliders are the source of truth so the value round-trips losslessly through the `@hex-core/tokens` triplet format.\",\n\tcategory: \"component\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Current color as an HSL triplet string (`\\\"<H> <S>% <L>%\\\"`, e.g. `\\\"240 5.9% 10%\\\"`). Match the format used by `@hex-core/tokens`.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Called with the next HSL triplet when the user drags a slider or commits a valid hex value. Not called for invalid hex input.\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription:\n\t\t\t\t\"Disable interaction. Trigger renders dimmed; mouse and keyboard activation are blocked by the native `disabled` attribute.\",\n\t\t},\n\t\t{\n\t\t\tname: \"aria-label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: '\"Pick color\"',\n\t\t\tdescription: \"Accessible name for the trigger button.\",\n\t\t},\n\t\t{\n\t\t\tname: \"className\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Additional class names merged onto the trigger.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-popover\", \"@radix-ui/react-slider\", \"@radix-ui/react-label\"],\n\t\tinternal: [\n\t\t\t\"primitives/slider/slider\",\n\t\t\t\"primitives/input/input\",\n\t\t\t\"primitives/label/label\",\n\t\t\t\"components/popover/popover\",\n\t\t\t\"lib/color\",\n\t\t\t\"lib/utils\",\n\t\t],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"input\", \"background\", \"ring\", \"border\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Edit a token live\",\n\t\t\tdescription: \"Bind a state variable to a CSS custom property to preview a token edit in real time.\",\n\t\t\tcode: 'const [color, setColor] = React.useState(\"240 5.9% 10%\");\\n\\nreturn (\\n <div style={{ \"--primary\": color } as React.CSSProperties}>\\n <ColorPicker value={color} onChange={setColor} aria-label=\"Primary color\" />\\n <Button>Live preview</Button>\\n </div>\\n);',\n\t\t},\n\t\t{\n\t\t\ttitle: \"Disabled\",\n\t\t\tdescription: \"Prevent edits while a parent operation is in flight.\",\n\t\t\tcode: '<ColorPicker value=\"240 5.9% 10%\" onChange={() => {}} disabled />',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use whenever the user is editing a color that will round-trip through the `@hex-core/tokens` HSL triplet format — token editors, theme builders, branding panels, custom-color surfaces in design tools.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for picking a color from a fixed palette — use a `Select` or `RadioGroup` of swatches. Don't use for image-based color sampling (eyedropper) — that's a separate primitive. Don't reach for ColorPicker when only a hex string matters: bind it directly to `<input type=\\\"color\\\">` for the simplest cases.\",\n\t\tcommonMistakes: [\n\t\t\t\"Treating the value as hex — the prop is an HSL triplet, not a hex string. Use `hexToHslTriplet` and `hslTripletToHex` from `@hex-core/components/lib/color` if you need to bridge.\",\n\t\t\t\"Forgetting to wrap the value in `hsl(...)` when applying it as a CSS color: `style={{ color: \\\\`hsl(${value})\\\\` }}`.\",\n\t\t\t\"Calling `onChange` synchronously inside a parent's render — the picker batches slider updates and that pattern can desync controlled state.\",\n\t\t],\n\t\trelatedComponents: [\"slider\", \"input\", \"label\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Each slider has a per-axis `aria-label` (Hue / Saturation / Lightness). The trigger button needs an explicit `aria-label` describing what color is being edited (e.g. `\\\"Primary color\\\"`) — the default `\\\"Pick color\\\"` is generic. The hex input is keyboard-accessible and round-trips with the sliders.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"color-picker\", \"color\", \"hsl\", \"hex\", \"form\", \"theme-editor\", \"primitive\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sheetSchema: ComponentSchemaDefinition = {\n\tname: \"sheet\",\n\tdisplayName: \"Sheet\",\n\tdescription:\n\t\t\"Side drawer built on Radix Dialog with a directional slide animation. Use for navigation, filters, quick edit, or any off-canvas panel.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state for uncontrolled usage\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"modal\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, content outside the sheet is inert\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sheet slides in from\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"top\", description: \"Slides down from the top edge\" },\n\t\t\t\t{ value: \"bottom\", description: \"Slides up from the bottom edge\" },\n\t\t\t\t{ value: \"left\", description: \"Slides in from the left edge\" },\n\t\t\t\t{ value: \"right\", description: \"Slides in from the right edge (default)\" },\n\t\t\t],\n\t\t\tdefault: \"right\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SheetTrigger + SheetContent (with SheetHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-dialog\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted-foreground\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Right-side sheet\",\n\t\t\tdescription: \"Quick edit panel anchored to the right edge\",\n\t\t\tcode: '<Sheet>\\n <SheetTrigger asChild>\\n <Button variant=\"outline\">Open</Button>\\n </SheetTrigger>\\n <SheetContent>\\n <SheetHeader>\\n <SheetTitle>Edit profile</SheetTitle>\\n <SheetDescription>Make changes and save when done.</SheetDescription>\\n </SheetHeader>\\n <div className=\"grid gap-4 py-4\">\\n <Input placeholder=\"Name\" />\\n </div>\\n <SheetFooter>\\n <Button>Save</Button>\\n </SheetFooter>\\n </SheetContent>\\n</Sheet>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for off-canvas panels — mobile nav menus, filter panels, side forms, detail views, or multi-step flows. Slides in from an edge, dismisses on outside click, Escape, or close button.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for center-focused modals (use Dialog). Don't use for transient bottom sheets on mobile (use Drawer). Don't use for dropdown menus or quick popover actions (use DropdownMenu or Popover).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting SheetTitle — Radix warns at runtime and screen readers announce an unnamed dialog\",\n\t\t\t\"Putting a full page's content inside a sheet — too much friction; use a route instead\",\n\t\t\t\"Overriding the side slide animation without matching the 'side' variant\",\n\t\t\t\"Not handling controlled open state after SheetClose — use onOpenChange not manual state\",\n\t\t],\n\t\trelatedComponents: [\"dialog\", \"drawer\", \"popover\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix traps focus, handles Escape to close, and wires aria-labelledby/describedby to SheetTitle/Description. The Close button has sr-only text. Always include a SheetTitle.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"sheet\", \"drawer\", \"side-panel\", \"off-canvas\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const drawerSchema: ComponentSchemaDefinition = {\n\tname: \"drawer\",\n\tdisplayName: \"Drawer\",\n\tdescription:\n\t\t\"Bottom-sheet drawer built on vaul. Mobile-native feel: drag-to-dismiss, snap points, body-scale-on-open. Use for quick mobile actions, filters, pickers.\",\n\tcategory: \"component\",\n\tsubcategory: \"overlay\",\n\tprops: [\n\t\t{ name: \"open\", type: \"boolean\", required: false, description: \"Controlled open state\" },\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Default open state\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state changes: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"shouldScaleBackground\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Scale the <body> element when the drawer opens (creates depth)\",\n\t\t},\n\t\t{\n\t\t\tname: \"snapPoints\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of snap positions ('40%', 400, '100%') — defines resting heights the user can snap to\",\n\t\t},\n\t\t{\n\t\t\tname: \"activeSnapPoint\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled active snap point value (matches one entry in snapPoints)\",\n\t\t},\n\t\t{\n\t\t\tname: \"closeThreshold\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0.25,\n\t\t\tdescription: \"Fraction of height the user must drag down to close (0..1)\",\n\t\t},\n\t\t{\n\t\t\tname: \"dismissible\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Allow drag-to-dismiss and outside-click-to-dismiss\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"DrawerTrigger + DrawerContent (with DrawerHeader/Footer/Title/Description)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"vaul\", \"@radix-ui/react-dialog\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic drawer\",\n\t\t\tdescription: \"Mobile-friendly bottom sheet with a quick action\",\n\t\t\tcode: '<Drawer>\\n <DrawerTrigger asChild>\\n <Button variant=\"outline\">Open drawer</Button>\\n </DrawerTrigger>\\n <DrawerContent>\\n <DrawerHeader>\\n <DrawerTitle>Edit profile</DrawerTitle>\\n <DrawerDescription>Make changes to your profile.</DrawerDescription>\\n </DrawerHeader>\\n <div className=\"p-4\"><Input placeholder=\"Name\" /></div>\\n <DrawerFooter>\\n <Button>Save</Button>\\n <DrawerClose asChild>\\n <Button variant=\"outline\">Cancel</Button>\\n </DrawerClose>\\n </DrawerFooter>\\n </DrawerContent>\\n</Drawer>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use on mobile-first or mobile-primary UX when a native app-like bottom sheet matters. Good for filters, quick pickers, confirm-then-do flows, or anywhere a user expects drag-to-dismiss.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use on desktop-primary UIs (use Dialog or Sheet). Don't use for side navigation (use Sheet). Don't use for transient info (use Popover or Tooltip). Don't use when you must prevent dismissal — drawers invite drag-down.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting DrawerTitle — vaul/Radix warn and screen readers announce an unnamed dialog\",\n\t\t\t\"Placing long forms inside a drawer without snap points — content gets cramped\",\n\t\t\t\"Disabling shouldScaleBackground when the background context-cue matters for UX\",\n\t\t\t\"Wrapping DrawerContent in Portal yourself — DrawerContent already portals via DrawerPortal\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"dialog\"],\n\t\taccessibilityNotes:\n\t\t\t\"vaul delegates to Radix Dialog: focus trap, Escape to close, aria-labelledby/describedby wired to DrawerTitle/Description. The top handle is decorative (aria-hidden).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"drawer\", \"bottom-sheet\", \"vaul\", \"mobile\", \"overlay\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const resizableSchema: ComponentSchemaDefinition = {\n\tname: \"resizable\",\n\tdisplayName: \"Resizable\",\n\tdescription:\n\t\t\"Draggable split panes built on react-resizable-panels v4. Horizontal or vertical, with keyboard-accessible handles and persistable layout.\",\n\tcategory: \"component\",\n\tsubcategory: \"layout\",\n\tprops: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"horizontal\",\n\t\t\tdescription: \"Group orientation: 'horizontal' | 'vertical'\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultLayout\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Array of initial panel sizes in order (percentages summing to 100)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onLayoutChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Fires when the user drags a handle; receives the new layout array\",\n\t\t},\n\t\t{\n\t\t\tname: \"disabled\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Disable resizing for the whole group\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Alternating ResizablePanel + ResizableHandle nodes\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"react-resizable-panels\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Horizontal split pane\",\n\t\t\tdescription: \"Two resizable panels with a grab-grip handle\",\n\t\t\tcode: '<ResizablePanelGroup orientation=\"horizontal\" className=\"min-h-[300px] max-w-md rounded-lg border\">\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">One</div>\\n </ResizablePanel>\\n <ResizableHandle withHandle />\\n <ResizablePanel defaultSize={50}>\\n <div className=\"flex h-full items-center justify-center p-6\">Two</div>\\n </ResizablePanel>\\n</ResizablePanelGroup>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for editor-style layouts (file tree + editor), dashboards with configurable panels, or any UI where users need to trade space between regions. Layouts can be persisted to localStorage via the group's id.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for responsive layouts — use CSS grid/flex with breakpoints. Don't use for modal layouts (use Dialog/Sheet). Don't nest deeply (>2 levels) — it hurts a11y and perception. Don't use if panels need to collapse/expand as a single action (use Collapsible).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting ResizableHandle between panels — they won't resize\",\n\t\t\t\"Using 'cols'/'rows' instead of orientation='horizontal'/'vertical' (old v1 API)\",\n\t\t\t\"Not providing defaultSize on each panel — initial layout will be uneven\",\n\t\t\t\"Rendering panel content that changes DOM size during drag — react-resizable-panels performance suffers\",\n\t\t\t\"Omitting a group id when you want layout to persist via localStorage\",\n\t\t],\n\t\trelatedComponents: [\"separator\", \"collapsible\"],\n\t\taccessibilityNotes:\n\t\t\t\"ResizableHandle is focusable and resizable via keyboard arrows. role='separator' is set, with aria-valuenow/min/max wired by react-resizable-panels. The grab-grip is aria-hidden (decorative).\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"resizable\", \"split-pane\", \"layout\", \"panels\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sidebarSchema: ComponentSchemaDefinition = {\n\tname: \"sidebar\",\n\tdisplayName: \"Sidebar\",\n\tdescription:\n\t\t\"App-shell sidebar with collapsible width, context-driven open state, and composable Header/Content/Footer/Item parts. Provider-based so any descendant can toggle it.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{\n\t\t\tname: \"open\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled open state — read from SidebarProvider\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultOpen\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Initial open state (uncontrolled)\",\n\t\t},\n\t\t{\n\t\t\tname: \"onOpenChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Callback when open state flips: (open: boolean) => void\",\n\t\t},\n\t\t{\n\t\t\tname: \"side\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"left\",\n\t\t\tdescription: \"Which edge the sidebar sits on: 'left' | 'right'\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"side\",\n\t\t\tdescription: \"Which edge the sidebar docks against\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"left\", description: \"Docks to the left edge (default)\" },\n\t\t\t\t{ value: \"right\", description: \"Docks to the right edge\" },\n\t\t\t],\n\t\t\tdefault: \"left\",\n\t\t},\n\t\t{\n\t\t\tname: \"state\",\n\t\t\tdescription: \"Width state (derived from SidebarProvider open value)\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"open\", description: \"Sidebar expanded at full width\" },\n\t\t\t\t{ value: \"closed\", description: \"Sidebar collapsed to zero width\" },\n\t\t\t],\n\t\t\tdefault: \"open\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"SidebarHeader + SidebarContent + SidebarFooter (any combination)\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-slot\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"background\", \"foreground\", \"border\", \"accent\", \"accent-foreground\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"App shell with collapsible sidebar\",\n\t\t\tdescription: \"Provider holds open state; the trigger toggles it\",\n\t\t\tcode: '<SidebarProvider>\\n <Sidebar>\\n <SidebarHeader>\\n <span className=\"font-semibold\">Acme</span>\\n </SidebarHeader>\\n <SidebarContent>\\n <SidebarItem active>Dashboard</SidebarItem>\\n <SidebarItem>Projects</SidebarItem>\\n <SidebarItem>Settings</SidebarItem>\\n </SidebarContent>\\n <SidebarFooter>Signed in as jane</SidebarFooter>\\n </Sidebar>\\n <main className=\"flex-1 p-4\">\\n <SidebarTrigger />\\n <h1>Hello</h1>\\n </main>\\n</SidebarProvider>',\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for persistent app-shell navigation: admin dashboards, document editors, SaaS sidebars. The Provider pattern lets any descendant component toggle the sidebar (e.g. a topbar button on mobile).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for mobile-first UX (use Sheet — sidebar collapses to zero-width but Sheet gives a native drawer feel). Don't use for marketing sites (no shell). Don't use for contextual menus (use DropdownMenu or NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Rendering Sidebar outside SidebarProvider — useSidebar throws\",\n\t\t\t\"Forgetting that SidebarProvider is a flex container — main content must be its direct sibling\",\n\t\t\t\"Using the wrong ordering for side='right' — SidebarProvider handles this via order-last\",\n\t\t\t\"Overriding the width variant manually instead of toggling open state\",\n\t\t],\n\t\trelatedComponents: [\"sheet\", \"navigation-menu\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Sidebar is an <aside> landmark (not a modal — no focus trap). When collapsed, the aside sets inert + aria-hidden so its children are removed from the tab order and the accessibility tree. SidebarTrigger exposes aria-expanded and a rotating aria-label (suppressed when asChild so the consumer's visible label/aria-label wins). SidebarItem uses aria-current='page' when active. Focus rings use the ring token.\",\n\t\ttokenBudget: 900,\n\t},\n\ttags: [\"sidebar\", \"navigation\", \"app-shell\", \"layout\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const emptySchema: ComponentSchemaDefinition = {\n\tname: \"empty\",\n\tdisplayName: \"Empty\",\n\tdescription:\n\t\t\"A zero-state surface for lists, dashboards, and search results with no content. Explains why the slot is empty + provides a call-to-action.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Icon (typically an <svg>) rendered in a circular muted container above the title.\",\n\t\t},\n\t\t{\n\t\t\tname: \"title\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Heading copy. Becomes the region's accessible name via aria-labelledby.\",\n\t\t},\n\t\t{\n\t\t\tname: \"description\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Supporting copy that explains why the slot is empty + what to do next.\",\n\t\t},\n\t\t{\n\t\t\tname: \"action\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Call-to-action — typically a <Button> that creates the missing record.\",\n\t\t},\n\t\t{\n\t\t\tname: \"titleAs\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"h3\",\n\t\t\tdescription: \"Heading level for the title. Pick to match surrounding heading hierarchy.\",\n\t\t\tenumValues: [\"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"p\"],\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: \"Visual scale.\",\n\t\t\tenumValues: [\"sm\", \"default\", \"lg\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"size\",\n\t\t\tdescription: \"Vertical density of the empty-state surface.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"sm\",\n\t\t\t\t\tdescription: \"Compact — fits inside a card / panel.\",\n\t\t\t\t\tuseWhen: \"the empty surface is one of several stacked pieces of content; full-bleed would dominate\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Standard — for table / list / dashboard widget empty states.\",\n\t\t\t\t\tuseWhen: \"default everywhere; the only size you need on most surfaces\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"lg\",\n\t\t\t\t\tdescription: \"Large — for full-page empty states (no items at all yet).\",\n\t\t\t\t\tuseWhen: \"the empty surface owns the entire page — onboarding, first-run, no records yet\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\tdescription: \"Icon rendered in the circular muted container above the title.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t\t{\n\t\t\tname: \"action\",\n\t\t\tdescription: \"Call-to-action button under the description.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"muted-foreground\", \"foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"List zero-state\",\n\t\t\tdescription: \"Inbox with no messages — icon + title + description + compose button\",\n\t\t\tcode: '<Empty\\n icon={<InboxIcon />}\\n title=\"No messages yet\"\\n description=\"When someone sends a message, it shows up here.\"\\n action={<Button>Compose</Button>}\\n/>',\n\t\t\tcomposition: [\"zero-state\", \"list\", \"with-action\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Search zero-state\",\n\t\t\tdescription: \"Search returned zero results — show the query + suggest a reset\",\n\t\t\tcode: '<Empty\\n icon={<SearchIcon />}\\n title=\"No results found\"\\n description={`No items match \"${query}\". Try a different search.`}\\n action={<Button variant=\"secondary\" onClick={onReset}>Clear search</Button>}\\n size=\"sm\"\\n/>',\n\t\t\tcomposition: [\"zero-state\", \"search\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Onboarding\",\n\t\t\tdescription: \"Full-page first-run state\",\n\t\t\tcode: '<Empty\\n icon={<SparklesIcon />}\\n title=\"Welcome to your dashboard\"\\n description=\"Create your first project to get started.\"\\n action={<Button size=\"lg\">Create project</Button>}\\n size=\"lg\"\\n titleAs=\"h1\"\\n/>',\n\t\t\tcomposition: [\"zero-state\", \"onboarding\", \"first-run\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for lists, search results, or dashboards where the request returned successfully but there's nothing to show. Explain why and what to do — the title names the absence, the description sets context, the action gives a way out.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use while data is still loading (use Loading). Don't use when something failed (use ErrorState). Don't use for inline form-field 'no options' messages (use Combobox's empty slot or Form's helper text).\",\n\t\tcommonMistakes: [\n\t\t\t\"Using Empty without an action — leaves the user stuck\",\n\t\t\t\"Long descriptions — keep to one sentence; this is a state surface, not documentation\",\n\t\t\t\"Forgetting titleAs when the page already has an h2 above (heading hierarchy break)\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Empty while data is still being fetched\",\n\t\t\t\tinsteadUse: \"loading\",\n\t\t\t\twhy: \"Empty announces 'no items exist'; Loading announces 'fetching items.' Showing Empty during the fetch flashes a misleading 'no results' state then snaps to real data on resolution.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Empty to display a fetch failure\",\n\t\t\t\tinsteadUse: \"error-state\",\n\t\t\t\twhy: \"ErrorState carries role='alert' so screen readers announce the failure on first render, AND it ships a retry affordance. Empty is silent on retry semantics.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Empty as an inline 'no matching options' notice inside a Combobox or Select\",\n\t\t\t\tinsteadUse: \"combobox\",\n\t\t\t\twhy: \"Combobox + Command already render a sub-AA-conformant empty state inside the listbox. Using Empty there leaks the page-level zero-state language into a focused interaction.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"loading\", \"error-state\", \"alert\", \"card\", \"skeleton\"],\n\t\taccessibilityNotes:\n\t\t\t\"Wrapped in a region landmark labeled by the title (aria-labelledby + auto-generated id). Icon is decorative (aria-hidden). Pair the action with a Button that has a visible label.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"empty\", \"zero-state\", \"feedback\", \"list\", \"dashboard\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const loadingSchema: ComponentSchemaDefinition = {\n\tname: \"loading\",\n\tdisplayName: \"Loading\",\n\tdescription:\n\t\t\"A composed loading-placeholder pattern for lists, cards, and stacks. Skeleton is the atom; Loading is the canonical molecule most surfaces want.\",\n\tcategory: \"primitive\",\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: \"list\",\n\t\t\tdescription: \"Layout family — picks the row shape.\",\n\t\t\tenumValues: [\"list\", \"card\", \"stack\"],\n\t\t},\n\t\t{\n\t\t\tname: \"rows\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 3,\n\t\t\tdescription: \"Number of placeholder rows to render. Each row may contain multiple Skeleton elements depending on variant — list emits 1 per row; card emits 3 (heading + 2 body lines); stack emits 3 (avatar + 2 text lines).\",\n\t\t},\n\t\t{\n\t\t\tname: \"label\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Loading…\",\n\t\t\tdescription: \"sr-only label announced by screen readers via aria-live polite.\",\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: \"Layout family for the placeholder rows.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"list\",\n\t\t\t\t\tdescription: \"Single full-width line per row — table / list / sidebar nav loaders.\",\n\t\t\t\t\tuseWhen: \"the surface being filled is a flat list of equally-shaped rows\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"card\",\n\t\t\t\t\tdescription: \"Heading + two body lines inside a bordered card surface.\",\n\t\t\t\t\tuseWhen: \"loading a Card-shaped widget (settings panel, dashboard tile)\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"stack\",\n\t\t\t\t\tdescription: \"Avatar + two-line text block per row — message / contact / search-result loaders.\",\n\t\t\t\t\tuseWhen: \"loading a list of avatar-paired items (chat history, contact list, comment thread)\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"list\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"primitives/skeleton/skeleton\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted\", \"card\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"List loader\",\n\t\t\tdescription: \"5 placeholder rows for a dashboard table\",\n\t\t\tcode: '<Loading rows={5} variant=\"list\" />',\n\t\t\tcomposition: [\"loading\", \"table\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Card loader\",\n\t\t\tdescription: \"Card-shaped placeholder with heading + 2 body lines\",\n\t\t\tcode: '<Loading variant=\"card\" />',\n\t\t\tcomposition: [\"loading\", \"card\", \"widget\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Stack loader (chat / contacts)\",\n\t\t\tdescription: \"Avatar + 2-line text rows\",\n\t\t\tcode: '<Loading rows={4} variant=\"stack\" />',\n\t\t\tcomposition: [\"loading\", \"stack\", \"chat\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use when fetching data for a list, card, or avatar-paired stack and you want pre-arranged placeholders. Pair the rows count with how many items you expect — avoid 10-row loaders for 2-item results (jarring on resolve).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for a single shaped placeholder (use Skeleton). Don't use when the wait has a measurable percent-done (use Progress). Don't use for full-page transitions where a top progress bar is more informative.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting `aria-live` would prevent screen-reader announcement — Loading already wires it; don't override role\",\n\t\t\t\"Using too many rows — flashes a heavy 'something's wrong' impression\",\n\t\t\t\"Applying Loading inside a Card AND also wrapping in another Card — double-bordered shimmer\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Loading for a single shaped placeholder (avatar circle, heading line, image rectangle)\",\n\t\t\t\tinsteadUse: \"skeleton\",\n\t\t\t\twhy: \"Skeleton is the atom; render exactly one Skeleton with the right size class. Loading composes Skeletons for canonical multi-row patterns — no value if you only need one shape.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Loading when the wait has a measurable percent (file upload, batch import)\",\n\t\t\t\tinsteadUse: \"progress\",\n\t\t\t\twhy: \"Progress's `value` prop announces actual completion to assistive tech. Loading is for indeterminate waits.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Loading for a full-page route transition where the user just clicked a link\",\n\t\t\t\tinsteadUse: \"skeleton\",\n\t\t\t\twhy: \"Compose page-shaped Skeletons via `generateStaticParams` + Suspense; full-page Loading flashes 'work is happening here' while the right answer is 'show the page shell instantly.'\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"skeleton\", \"progress\", \"empty\", \"error-state\"],\n\t\taccessibilityNotes:\n\t\t\t\"role='status' + aria-live='polite' + sr-only label, so screen readers announce on first render. Caller doesn't need to wire any of this.\",\n\t\ttokenBudget: 300,\n\t},\n\ttags: [\"loading\", \"skeleton\", \"placeholder\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const errorStateSchema: ComponentSchemaDefinition = {\n\tname: \"error-state\",\n\tdisplayName: \"ErrorState\",\n\tdescription:\n\t\t\"A surface for failed-fetch / failed-action states. Visually mirrors Empty but with destructive bias and an optional retry button. Mounts with role='alert' so screen readers announce on first render.\",\n\tcategory: \"primitive\",\n\tsubcategory: \"feedback\",\n\tprops: [\n\t\t{ name: \"icon\", type: \"ReactNode\", required: false, description: \"Icon (typically an alert / x-circle SVG).\" },\n\t\t{ name: \"title\", type: \"ReactNode\", required: false, default: \"Something went wrong\", description: \"Heading copy. Falls back to a generic message.\" },\n\t\t{ name: \"message\", type: \"ReactNode\", required: true, description: \"Body copy explaining what failed and (optionally) what the user can do.\" },\n\t\t{ name: \"action\", type: \"ReactNode\", required: false, description: \"Call-to-action slot — typically a <Button onClick={refetch}>Retry</Button>. Consumer controls the button variant, loading state, and asChild composition.\" },\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 tone — destructive draws more attention, default is calmer.\",\n\t\t\tenumValues: [\"default\", \"destructive\"],\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Tone of the surface.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Muted neutral surface — for recoverable / transient failures.\",\n\t\t\t\t\tuseWhen: \"the failure is recoverable and you don't want to alarm: 'temporarily unavailable,' 'try again in a moment'\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"destructive\",\n\t\t\t\t\tdescription: \"Tinted destructive surface — for hard / unrecoverable failures.\",\n\t\t\t\t\tuseWhen: \"the failure is significant: data lost, permission denied, server error 5xx\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\tdescription: \"Icon rendered in the circular tinted container.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t\t{\n\t\t\tname: \"action\",\n\t\t\tdescription: \"Call-to-action — typically a Button. Consumer composes the button variant + click handler.\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"destructive\", \"muted\", \"muted-foreground\", \"foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Fetch failure with retry\",\n\t\t\tdescription: \"Couldn't load messages — show the error + a Retry button in the action slot\",\n\t\t\tcode: '<ErrorState\\n icon={<AlertCircleIcon />}\\n title=\"Couldn\\'t load messages\"\\n message=\"The server didn\\'t respond. Check your connection and try again.\"\\n action={<Button onClick={() => refetch()}>Retry</Button>}\\n/>',\n\t\t\tcomposition: [\"error-state\", \"retry\", \"fetch-failure\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Hard failure (destructive)\",\n\t\t\tdescription: \"Server returned 5xx and we want to alarm\",\n\t\t\tcode: '<ErrorState\\n icon={<XCircleIcon />}\\n variant=\"destructive\"\\n title=\"Sync failed\"\\n message=\"We couldn\\'t save your changes. They\\'re still on this device — refresh to retry.\"\\n/>',\n\t\t\tcomposition: [\"error-state\", \"destructive\", \"sync-failure\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for any failure surface where the user might benefit from context + a retry path. Pair with onRetry whenever the operation is genuinely retryable; omit it when the user has to take a different action (e.g. log in again).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for inline form-field errors (Form's <FormMessage> handles those). Don't use for blocking destructive confirmations (AlertDialog). Don't use for transient toasts (Sonner / Toaster).\",\n\t\tcommonMistakes: [\n\t\t\t\"Generic 'Something went wrong' message without context — at minimum, name what failed\",\n\t\t\t\"Using destructive variant for recoverable network blips (cries wolf)\",\n\t\t\t\"Wiring the action's click handler to a function that doesn't actually re-trigger the failed operation\",\n\t\t\t\"Forgetting the action slot when the failure IS retryable — leaves the user stuck\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using ErrorState for an inline form-field validation error\",\n\t\t\t\tinsteadUse: \"form\",\n\t\t\t\twhy: \"Form ships <FormMessage> which is wired to the field's aria-describedby. ErrorState announces page-level failures; using it inline duplicates the role='alert' on every keystroke and confuses assistive tech.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using ErrorState as a blocking destructive confirmation modal\",\n\t\t\t\tinsteadUse: \"alert-dialog\",\n\t\t\t\twhy: \"AlertDialog is role='alertdialog' (modal, focus-trapped, dismiss-on-Escape). ErrorState is a passive surface — no interaction guarantees. If you need the user to confirm before proceeding, use AlertDialog.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using ErrorState for a transient toast notification\",\n\t\t\t\tinsteadUse: \"sonner\",\n\t\t\t\twhy: \"Sonner / Toaster auto-dismiss + stack + animate. ErrorState sits in the layout. For 'fire-and-forget failure ack,' use the toaster.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"alert\", \"alert-dialog\", \"form\", \"empty\", \"loading\", \"sonner\"],\n\t\taccessibilityNotes:\n\t\t\t\"role='alert' so screen readers announce on first render. Icon decorative (aria-hidden). Retry button uses focus-visible ring; pressing it doesn't dismiss the surface — caller controls that via state.\",\n\t\ttokenBudget: 450,\n\t},\n\ttags: [\"error\", \"error-state\", \"failure\", \"retry\", \"feedback\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const tagSchema: ComponentSchemaDefinition = {\n\tname: \"tag\",\n\tdisplayName: \"Tag\",\n\tdescription:\n\t\t\"Interactive tag / chip primitive — Badge with an optional dismiss button. Mirrors Badge's variants so the visual sibling is obvious; ships with a close affordance for filter pills, multi-select selections, draft attachments.\",\n\tcategory: \"primitive\",\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\", \"secondary\", \"destructive\", \"outline\"],\n\t\t},\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional leading icon (sized 12x12 inside the tag).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onRemove\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Click handler for the close button. When provided, the dismiss ✕ is rendered. Signature: () => void.\",\n\t\t},\n\t\t{\n\t\t\tname: \"removeLabel\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Override the auto-derived close-button aria-label (default: 'Remove ${children}').\",\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 — mirrors Badge so users get consistent token use.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"default\",\n\t\t\t\t\tdescription: \"Primary-tinted filled tag.\",\n\t\t\t\t\tuseWhen: \"the tag represents an active selected state — applied filter, picked option\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"secondary\",\n\t\t\t\t\tdescription: \"Muted neutral filled tag with a hairline border.\",\n\t\t\t\t\tuseWhen: \"default for everyday tags — list of selected items, draft attachments, filter pills\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"destructive\",\n\t\t\t\t\tdescription: \"Red-tinted filled tag.\",\n\t\t\t\t\tuseWhen: \"the tag represents a flagged / problematic value — banned user, archived item\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"outline\",\n\t\t\t\t\tdescription: \"Bordered transparent tag.\",\n\t\t\t\t\tuseWhen: \"the tag lives on a busy surface and shouldn't add visual fill weight\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"default\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"icon\",\n\t\t\tdescription: \"Leading icon (sized 12x12).\",\n\t\t\trequired: false,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Tag label content (string preferred for auto aria-label derivation).\",\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: [],\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{\n\t\t\ttitle: \"Filter pill with dismiss\",\n\t\t\tdescription: \"Removable filter chip in a search bar\",\n\t\t\tcode: '<Tag variant=\"secondary\" onRemove={() => removeFilter(\"urgent\")}>Urgent</Tag>',\n\t\t\tcomposition: [\"filter\", \"search\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Multi-select selections\",\n\t\t\tdescription: \"Stack of selected values with per-tag dismiss\",\n\t\t\tcode: '<div className=\"flex flex-wrap gap-2\">\\n {selected.map((tag) => (\\n <Tag key={tag} variant=\"secondary\" onRemove={() => deselect(tag)}>\\n {tag}\\n </Tag>\\n ))}\\n</div>',\n\t\t\tcomposition: [\"multi-select\", \"form\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Status tag (non-interactive)\",\n\t\t\tdescription: \"Static tag without dismiss — equivalent to Badge but uses Tag for consistency\",\n\t\t\tcode: '<Tag variant=\"outline\">Beta</Tag>',\n\t\t\tcomposition: [\"status\", \"label\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for tokens the user can dismiss: filter pills, multi-select selections, draft attachments. Pair onRemove with a state setter that drops the value from your collection.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-interactive labels (use Badge). Don't use for state-bearing 'click to filter' affordances — those should be Toggle or ToggleGroup so the active state is announced as 'pressed'/'not pressed' to assistive tech.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting onRemove on a tag the user CAN dismiss — leaves the affordance invisible\",\n\t\t\t\"Calling it Tag but rendering inside a list of static labels — confuses Tag (interactive) vs Badge (decorative) semantics\",\n\t\t\t\"Wrapping the tag itself in a <button> — the dismiss button already handles its own click; double-button breaks accessibility\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Tag without onRemove for a static / decorative label\",\n\t\t\t\tinsteadUse: \"badge\",\n\t\t\t\twhy: \"Badge is the non-interactive sibling. Tag without onRemove ships an unused close-button container — wasted DOM and ambiguous semantics. Reach for Badge when there's nothing to dismiss.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tag as a click-to-filter chip (selected vs unselected state)\",\n\t\t\t\tinsteadUse: \"toggle\",\n\t\t\t\twhy: \"Toggle's role='button' + aria-pressed announces selected state to AT. Tag's close-button doesn't model 'pressed'; consumers end up with non-announced state.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tag for a single-select dropdown's chosen value\",\n\t\t\t\tinsteadUse: \"select\",\n\t\t\t\twhy: \"Select renders its value text inside the trigger. Tag would duplicate the token and complicate the keyboard nav (focus on Tag's close vs Select's trigger).\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"badge\", \"toggle\", \"toggle-group\", \"multi-combobox\"],\n\t\taccessibilityNotes:\n\t\t\t\"Close button gets aria-label derived from children when they're a string ('Remove Urgent'). Override via removeLabel. Tag itself is a span — wrap in a list (`role='list'` + `role='listitem'`) when rendering N tags as a collection.\",\n\t\ttokenBudget: 350,\n\t},\n\ttags: [\"tag\", \"chip\", \"pill\", \"filter\", \"removable\", \"multi-select\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const treeSchema: ComponentSchemaDefinition = {\n\tname: \"tree\",\n\tdisplayName: \"Tree\",\n\tdescription:\n\t\t\"Generic hierarchical list with roving-tabindex keyboard navigation. Distinct from FileTree (which adds folder/file icon-by-extension logic) — Tree is content-agnostic for org charts, taxonomy pickers, navigation trees.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\n\t\t{ name: \"data\", type: \"object\", required: true, description: \"Root nodes (TreeNode[]).\" },\n\t\t{ name: \"defaultExpanded\", type: \"object\", required: false, description: \"Initial expanded ids (uncontrolled). string[].\" },\n\t\t{ name: \"expanded\", type: \"object\", required: false, description: \"Controlled expanded ids. string[].\" },\n\t\t{ name: \"onExpandedChange\", type: \"function\", required: false, description: \"Callback (ids: string[]) => void.\" },\n\t\t{ name: \"selected\", type: \"string\", required: false, description: \"Controlled selected node id.\" },\n\t\t{ name: \"onSelect\", type: \"function\", required: false, description: \"Callback (id: string) => void on activation.\" },\n\t\t{ name: \"aria-label\", type: \"string\", required: true, description: \"Accessible name for the tree landmark.\" },\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: [\"foreground\", \"accent\", \"accent-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Org chart\",\n\t\t\tdescription: \"Hierarchical staff tree with expand/select\",\n\t\t\tcode: '<Tree\\n aria-label=\"Org chart\"\\n data={[\\n { id: \"ceo\", label: \"CEO\", children: [\\n { id: \"cto\", label: \"CTO\", children: [{ id: \"eng-lead\", label: \"Eng Lead\" }] },\\n { id: \"cmo\", label: \"CMO\" },\\n ]},\\n ]}\\n defaultExpanded={[\"ceo\"]}\\n onSelect={(id) => console.log(id)}\\n/>',\n\t\t\tcomposition: [\"tree\", \"navigation\", \"hierarchy\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Taxonomy picker\",\n\t\t\tdescription: \"Categorize a record by picking a leaf in a 3-level taxonomy\",\n\t\t\tcode: '<Tree\\n aria-label=\"Category\"\\n data={taxonomy}\\n selected={category}\\n onSelect={setCategory}\\n/>',\n\t\t\tcomposition: [\"tree\", \"form\", \"picker\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use for hierarchical data the user navigates by keyboard or click — org charts, taxonomy pickers, generic nav trees. Pair with selected + onSelect for picker semantics; pair with onExpandedChange to control expansion externally.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for filesystem-shaped data — FileTree adds folder/file icon-by-extension. Don't use for two-level groupings without item-selection — Accordion is the cleaner abstraction. Don't use for primary site nav (NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label — required, no fallback\",\n\t\t\t\"Confusing data prop (TreeNode[]) with FileTree's nodes prop (FileTreeNode[]) — same shape but different icon defaults\",\n\t\t\t\"Trying to pass selected without onSelect — controlled-mode without an updater leaves it stuck\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Tree for filesystem-shaped data (folders + files with icon-by-extension)\",\n\t\t\t\tinsteadUse: \"file-tree\",\n\t\t\t\twhy: \"FileTree ships file/folder icon defaults + extension-based color hints. Tree is icon-agnostic — using it for files means hand-wiring icon logic each time.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tree for a two-level grouping (sections that expand to reveal content) without item-selection\",\n\t\t\t\tinsteadUse: \"accordion\",\n\t\t\t\twhy: \"Accordion is purpose-built for collapse-content-into-sections. Tree's role='tree' implies item-selection semantics that don't fit pure expand/collapse content groups.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Tree for primary site / app navigation\",\n\t\t\t\tinsteadUse: \"navigation-menu\",\n\t\t\t\twhy: \"NavigationMenu ships landmark role + skip links + the right ARIA for primary nav. Tree's tree role is for data, not routing.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"file-tree\", \"accordion\", \"navigation-menu\"],\n\t\taccessibilityNotes:\n\t\t\t\"role='tree' on root, role='treeitem' per row, aria-expanded on parents, aria-selected on the chosen leaf. Keyboard: ↑↓ move focus, → expand (or jump to first child if expanded), ← collapse (or jump to parent), Home/End first/last visible row, Enter/Space activate.\",\n\t\ttokenBudget: 700,\n\t},\n\ttags: [\"tree\", \"hierarchy\", \"navigation\", \"picker\", \"ARIA-tree\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toolbarSchema: ComponentSchemaDefinition = {\n\tname: \"toolbar\",\n\tdisplayName: \"Toolbar\",\n\tdescription:\n\t\t\"A horizontal or vertical group of related controls (buttons, toggles, links, separators) with arrow-key roving focus. Wraps Radix Toolbar so the keyboard semantics are correct out of the box.\",\n\tcategory: \"component\",\n\tsubcategory: \"navigation\",\n\tprops: [\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: \"Layout direction. Drives arrow-key behavior — ←→ for horizontal, ↑↓ for vertical.\",\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: true,\n\t\t\tdescription: \"Accessible name for the toolbar landmark. Toolbar mounts as a role='toolbar' region — without a name, AT users hear an unlabelled landmark. If a visible heading sits adjacent, you may pair via aria-labelledby instead (which still satisfies this requirement).\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"orientation\",\n\t\t\tdescription: \"Layout direction.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"horizontal\",\n\t\t\t\t\tdescription: \"Default — controls flow left-to-right.\",\n\t\t\t\t\tuseWhen: \"the toolbar sits at the top or bottom of a panel / editor\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"vertical\",\n\t\t\t\t\tdescription: \"Controls flow top-to-bottom.\",\n\t\t\t\t\tuseWhen: \"the toolbar runs alongside a canvas / editor as a side rail\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"horizontal\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Mix of ToolbarButton / ToolbarToggleGroup / ToolbarToggleItem / ToolbarLink / ToolbarSeparator.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-toolbar\", \"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"border\", \"foreground\", \"accent\", \"accent-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Editor toolbar with toggle group\",\n\t\t\tdescription: \"Undo + Redo + Separator + alignment toggles\",\n\t\t\tcode: '<Toolbar aria-label=\"Editor controls\">\\n <ToolbarButton onClick={onUndo}>Undo</ToolbarButton>\\n <ToolbarButton onClick={onRedo}>Redo</ToolbarButton>\\n <ToolbarSeparator />\\n <ToolbarToggleGroup type=\"single\" defaultValue=\"left\">\\n <ToolbarToggleItem value=\"left\">Left</ToolbarToggleItem>\\n <ToolbarToggleItem value=\"center\">Center</ToolbarToggleItem>\\n <ToolbarToggleItem value=\"right\">Right</ToolbarToggleItem>\\n </ToolbarToggleGroup>\\n</Toolbar>',\n\t\t\tcomposition: [\"toolbar\", \"editor\", \"toggle-group\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Side-rail vertical toolbar\",\n\t\t\tdescription: \"Vertical toolbar alongside a canvas\",\n\t\t\tcode: '<Toolbar orientation=\"vertical\" aria-label=\"Drawing tools\">\\n <ToolbarToggleGroup type=\"single\" defaultValue=\"select\">\\n <ToolbarToggleItem value=\"select\"><CursorIcon /></ToolbarToggleItem>\\n <ToolbarToggleItem value=\"pen\"><PenIcon /></ToolbarToggleItem>\\n <ToolbarToggleItem value=\"eraser\"><EraserIcon /></ToolbarToggleItem>\\n </ToolbarToggleGroup>\\n <ToolbarSeparator />\\n <ToolbarButton aria-label=\"Settings\"><SettingsIcon /></ToolbarButton>\\n</Toolbar>',\n\t\t\tcomposition: [\"toolbar\", \"vertical\", \"canvas\", \"icon-only\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use to group related controls that operate on a single content area (editor, canvas, table). The roving-tabindex behavior means Tab enters the toolbar at the first item, then arrow keys navigate within — preserves the surrounding page's tab order.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for app-level menus (use Menubar). Don't use for a single mutually-exclusive selection (use ToggleGroup directly — Toolbar is for groupING ToggleGroups + Buttons + Links). Don't use for navigation (use NavigationMenu).\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting aria-label when the toolbar isn't adjacent to a visible heading\",\n\t\t\t\"Mixing controls that operate on different content areas — Toolbar implies a single target\",\n\t\t\t\"Using Toolbar inside a Toolbar — nest a vertical Toolbar inside a horizontal one if you really need a 2D grid, but consider whether a single Toolbar with Separators is clearer\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Toolbar for a single-axis mutually-exclusive selection (alignment, list-style)\",\n\t\t\t\tinsteadUse: \"toggle-group\",\n\t\t\t\twhy: \"Toolbar is the multi-control container. ToggleGroup directly gives you 'pick one of N' with proper keyboard semantics — adding a Toolbar wrapper just costs DOM.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Toolbar for an application top-level menu (File, Edit, View, …)\",\n\t\t\t\tinsteadUse: \"menubar\",\n\t\t\t\twhy: \"Menubar models nested menus with proper open-on-focus semantics. Toolbar is for flat command groups; the menu pattern needs Menubar.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Toolbar for primary site / app navigation\",\n\t\t\t\tinsteadUse: \"navigation-menu\",\n\t\t\t\twhy: \"NavigationMenu ships landmark role + skip links + the right ARIA attributes for primary nav. Toolbar is for content-region controls, not page-level routing.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"toggle\", \"toggle-group\", \"menubar\", \"navigation-menu\", \"separator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix wires role='toolbar', roving tabindex (Tab enters at the first focusable item, arrows move within), Home/End jump to first/last. Always pass aria-label when there's no visible heading next to the toolbar.\",\n\t\ttokenBudget: 600,\n\t},\n\ttags: [\"toolbar\", \"editor\", \"controls\", \"command-group\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const attachmentSchema: ComponentSchemaDefinition = {\n\tname: \"attachment\",\n\tdisplayName: \"Attachment\",\n\tdescription:\n\t\t\"File / image thumbnail with optional remove affordance + upload-progress overlay. Composes with the AI Composer for multimodal message drafts. Auto-detects image vs file variant from MIME type + preview URL.\",\n\tcategory: \"ai\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"file\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Native File OR { name, size, type, preview? } metadata. Drives variant auto-detection (image+preview → thumbnail; else file icon + name + size).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onRemove\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Click handler for the × overlay button. Signature: () => void.\",\n\t\t},\n\t\t{\n\t\t\tname: \"progress\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Upload progress in [0, 1). Values >= 1 (or undefined) hide the progressbar — pass undefined once the upload completes. Internally scaled to 0–100 for aria-valuenow so AT announces 'NN percent.'\",\n\t\t},\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Override the auto-detected variant. 'image' renders a thumbnail; 'file' renders icon + name + size.\",\n\t\t\tenumValues: [\"file\", \"image\"],\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 layout. Auto-detected unless overridden.\",\n\t\t\tvalues: [\n\t\t\t\t{\n\t\t\t\t\tvalue: \"file\",\n\t\t\t\t\tdescription: \"Generic file icon + name + size. Bordered card with horizontal padding.\",\n\t\t\t\t\tuseWhen: \"the attachment is a non-image (PDF, code, archive, audio) OR an image without a preview URL\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tvalue: \"image\",\n\t\t\t\t\tdescription: \"80×80 thumbnail of the preview URL. Zero padding so the image fills the card.\",\n\t\t\t\t\tuseWhen: \"the attachment is an image AND a preview URL is available (use URL.createObjectURL on the File before passing in)\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tdefault: \"file\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"border\", \"foreground\", \"muted\", \"muted-foreground\", \"primary\", \"accent\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Image preview in composer\",\n\t\t\tdescription: \"Image attachment with remove affordance\",\n\t\t\tcode: 'function ComposerWithImage() {\\n const [file, setFile] = React.useState<File | null>(null);\\n const preview = file ? URL.createObjectURL(file) : null;\\n return (\\n <Composer>\\n {file && preview ? (\\n <Attachment\\n file={{ name: file.name, size: file.size, type: file.type, preview }}\\n onRemove={() => setFile(null)}\\n />\\n ) : null}\\n {/* …textarea + send button… */}\\n </Composer>\\n );\\n}',\n\t\t\tcomposition: [\"composer\", \"ai\", \"image\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Upload progress\",\n\t\t\tdescription: \"File attachment with live progress overlay\",\n\t\t\tcode: '<Attachment\\n file={{ name: \"report.pdf\", size: 2_400_000, type: \"application/pdf\" }}\\n progress={uploadProgress}\\n onRemove={() => cancelUpload()}\\n/>',\n\t\t\tcomposition: [\"upload\", \"progress\", \"removable\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Static file preview (no remove)\",\n\t\t\tdescription: \"Read-only attachment in a sent message\",\n\t\t\tcode: '<Attachment file={{ name: \"diagram.svg\", size: 18000, type: \"image/svg+xml\" }} />',\n\t\t\tcomposition: [\"read-only\", \"message\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Use inside a Composer to show pending attachments the user can remove before sending, or inside a Message to show attached files in a sent turn. Pair native File objects with URL.createObjectURL(file) before rendering — the component doesn't manage object URLs.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the upload-target affordance itself (that's Dropzone — it handles drag-drop + click-to-pick). Don't use for static document previews outside a chat composer (use Card with a file icon). Don't use for inline images in markdown — use Markdown's image rendering.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting URL.createObjectURL on a native File — preview won't render and the variant falls back to file\",\n\t\t\t\"Not revoking object URLs when the attachment is removed — leaks memory\",\n\t\t\t\"Using Attachment without onRemove inside a Composer — leaves the user unable to remove\",\n\t\t],\n\t\tantiPatterns: [\n\t\t\t{\n\t\t\t\tmistake: \"Using Attachment as the upload-input affordance (drag-drop area, click-to-pick)\",\n\t\t\t\tinsteadUse: \"dropzone\",\n\t\t\t\twhy: \"Dropzone is purpose-built for the upload-target — drag/drop semantics, click-to-pick, accept-MIME validation. Attachment SHOWS the result; Dropzone is the input.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Attachment for static document previews on a profile / details page\",\n\t\t\t\tinsteadUse: \"card\",\n\t\t\t\twhy: \"Card is the static-content surface. Attachment ships remove + progress overlays consumers don't need outside the chat-composer flow.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmistake: \"Using Attachment to render an inline image inside markdown body text\",\n\t\t\t\tinsteadUse: \"markdown\",\n\t\t\t\twhy: \"Markdown's `` already renders an inline image with the right semantics. Attachment is for the discrete-attachment-token UX (with name, size, remove); markdown handles inline media.\",\n\t\t\t},\n\t\t],\n\t\trelatedComponents: [\"composer\", \"dropzone\", \"message\", \"message-list\"],\n\t\taccessibilityNotes:\n\t\t\t\"Image variant uses <img alt> from the file name. Remove button gets aria-label='Remove ${name}'. Progress overlay is role='progressbar' with aria-valuemin=0 / aria-valuemax=100 / aria-valuenow=Math.round(progress * 100) and a generic 'Uploading ${name}' aria-label — AT announces 'NN percent.'\",\n\t\ttokenBudget: 500,\n\t},\n\ttags: [\"attachment\", \"ai\", \"composer\", \"file\", \"image\", \"upload\", \"multimodal\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const messageSchema: ComponentSchemaDefinition = {\n\tname: \"message\",\n\tdisplayName: \"Message\",\n\tdescription:\n\t\t\"Single chat-message row scoped to one speaker (user / assistant / system / tool). Headless content slot — pair with Markdown, CodeBlock, or ToolCall children.\",\n\tcategory: \"ai\",\n\tsubcategory: \"chat\",\n\tprops: [\n\t\t{\n\t\t\tname: \"role\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Speaker. Drives variant styling and the data-role attribute.\",\n\t\t\tenumValues: [\"user\", \"assistant\", \"system\", \"tool\"],\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Message content. Strings, Markdown, CodeBlock, ToolCall, or any composition.\",\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 merged onto the row.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"role\",\n\t\t\tdescription: \"Visual treatment per speaker.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"user\", description: \"Tinted secondary background — user turns.\", useWhen: \"The author is the human.\" },\n\t\t\t\t{ value: \"assistant\", description: \"Card background — model output.\", useWhen: \"The author is the LLM/agent.\" },\n\t\t\t\t{ value: \"system\", description: \"Muted, italic — system instructions.\", useWhen: \"Rendering a visible system prompt or framing message.\" },\n\t\t\t\t{ value: \"tool\", description: \"Accent left-border — tool messages distinct from assistant text.\", useWhen: \"Showing raw tool/function output as its own turn.\" },\n\t\t\t],\n\t\t\tdefault: \"assistant\",\n\t\t},\n\t],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Message body. Compose with Markdown, CodeBlock, ToolCall, or plain text.\",\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\", \"ai/types\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"secondary\", \"foreground\", \"card\", \"card-foreground\", \"muted\", \"muted-foreground\", \"accent\", \"accent-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"User and assistant turns\",\n\t\t\tdescription: \"Two messages alternating roles.\",\n\t\t\tcode: '<>\\n <Message role=\"user\">What\\'s the capital of France?</Message>\\n <Message role=\"assistant\">Paris.</Message>\\n</>',\n\t\t\tcomposition: [\"chat\", \"turns\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Composed assistant turn\",\n\t\t\tdescription: \"Markdown + ToolCall inside one assistant message.\",\n\t\t\tcode: '<Message role=\"assistant\">\\n <Markdown>{response}</Markdown>\\n <ToolCall name=\"search\" state=\"result\" result={hits} />\\n</Message>',\n\t\t\tcomposition: [\"chat\", \"agent\", \"tool-use\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Wrap every conversation turn — user, assistant, system, or tool. Pair with MessageList for the scrolling viewport. Compose Markdown, CodeBlock, and ToolCall as children for rich assistant turns.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-conversational text (use Card or plain elements). Don't put streaming logic here — the consumer drives state, Message just renders.\",\n\t\tcommonMistakes: [\n\t\t\t\"Adding streaming/fetch logic inside Message — keep it pure\",\n\t\t\t\"Using `role=\\\"tool\\\"` for assistant text that mentions a tool — `tool` is for the actual tool turn\",\n\t\t\t\"Hard-coding markdown rendering inside Message — pass <Markdown>{...}</Markdown> as a child instead\",\n\t\t],\n\t\trelatedComponents: [\"message-list\", \"markdown\", \"code-block\", \"tool-call\", \"message-actions\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders as a div with `data-role`. For screen-reader chat semantics, wrap MessageList in `role=\\\"log\\\"` and consider `aria-live=\\\"polite\\\"` on the streaming container.\",\n\t\ttokenBudget: 220,\n\t},\n\ttags: [\"ai\", \"chat\", \"message\", \"turn\", \"conversation\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const messageListSchema: ComponentSchemaDefinition = {\n\tname: \"message-list\",\n\tdisplayName: \"MessageList\",\n\tdescription:\n\t\t\"Auto-scrolling viewport for a chat stream. Pins to the bottom during streaming unless the user scrolls up to read history.\",\n\tcategory: \"ai\",\n\tsubcategory: \"chat\",\n\tprops: [\n\t\t{\n\t\t\tname: \"autoScroll\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Pin to bottom on content change (when the user is already near the bottom).\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Sequence of <Message> elements.\",\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 (e.g. height, padding).\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Messages to render in order.\",\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: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic chat\",\n\t\t\tdescription: \"Map messages from useChat into a viewport with bottom-pin behavior.\",\n\t\t\tcode: '<MessageList className=\"h-96\">\\n {messages.map((m) => (\\n <Message key={m.id} role={m.role}>{m.content}</Message>\\n ))}\\n</MessageList>',\n\t\t\tcomposition: [\"chat\", \"scroll\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Wrap a list of <Message> components when you want auto-scroll-on-stream behavior. Always set an explicit height (h-*, max-h-*) on the className so the viewport actually scrolls.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for static FAQs or non-streaming layouts (use a normal Stack). Don't use as a generic scroll container — its bottom-pin behavior is opinionated.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to set a height — the viewport won't scroll without `h-*` or `max-h-*`\",\n\t\t\t\"Disabling autoScroll while still expecting bottom-pin behavior — they're the same flag\",\n\t\t\t\"Putting non-Message children inside — a divider or banner breaks the role=log semantics\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"composer\", \"loading-indicator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders as `role=\\\"log\\\"` with `aria-live=\\\"polite\\\"` and `aria-relevant=\\\"additions\\\"` so assistive tech announces new turns. If you replace turns wholesale (e.g. on regenerate), pass `aria-relevant=\\\"additions removals\\\"` as a prop — props spread onto the underlying div and override the default.\",\n\t\ttokenBudget: 240,\n\t},\n\ttags: [\"ai\", \"chat\", \"scroll\", \"viewport\", \"streaming\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const composerSchema: ComponentSchemaDefinition = {\n\tname: \"composer\",\n\tdisplayName: \"Composer\",\n\tdescription:\n\t\t\"Multi-line input + submission shell for chat. Submits on Enter (Shift+Enter inserts newline). Trailing slot for attachment + send buttons.\",\n\tcategory: \"ai\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Controlled textarea value.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onValueChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Called with the new value on each keystroke.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSubmit\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Called with the trimmed value on Enter or form submit.\",\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: \"Lock the input and suppress submission (e.g. during streaming).\",\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: \"Textarea placeholder copy.\",\n\t\t},\n\t\t{\n\t\t\tname: \"submitOnEnter\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Submit when Enter is pressed without Shift. Disable to require button click.\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Trailing slot — attachment buttons, voice toggle, send button, etc.\",\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 on the form wrapper.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Trailing action buttons rendered after the textarea.\",\n\t\t\trequired: false,\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: [\"background\", \"ring\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Basic composer\",\n\t\t\tdescription: \"Controlled input + send button.\",\n\t\t\tcode: 'const [value, setValue] = useState(\"\");\\n<Composer\\n value={value}\\n onValueChange={setValue}\\n onSubmit={(v) => { send(v); setValue(\"\"); }}\\n placeholder=\"Ask anything…\"\\n>\\n <Button type=\"submit\" disabled={!value.trim()}>Send</Button>\\n</Composer>',\n\t\t\tcomposition: [\"chat\", \"form\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"With attachment slot\",\n\t\t\tdescription: \"Attach button on the leading edge of the trailing slot.\",\n\t\t\tcode: '<Composer value={v} onValueChange={setV} onSubmit={send}>\\n <Button variant=\"ghost\" size=\"icon\" onClick={pickFile}><Paperclip /></Button>\\n <Button type=\"submit\">Send</Button>\\n</Composer>',\n\t\t\tcomposition: [\"chat\", \"form\", \"attachment\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Wrap any user-input surface in an AI app — chatbots, AI editors, agent prompts. Pair with `useChat` from @ai-sdk/react or any equivalent state hook.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-chat forms (use Form + Textarea). Don't bake fetch/streaming logic into onSubmit — keep the network call in the consumer.\",\n\t\tcommonMistakes: [\n\t\t\t\"Calling onSubmit with the raw event instead of the value — onSubmit receives the trimmed string already\",\n\t\t\t\"Forgetting to clear `value` after submit — Composer is fully controlled\",\n\t\t\t\"Wrapping the component in <form> — Composer renders its own form element\",\n\t\t],\n\t\trelatedComponents: [\"message-list\", \"suggestion\", \"loading-indicator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders a real <form> + <textarea>, so Enter submission and screen-reader announcements work without extra ARIA. Pass `aria-label` on the wrapper if there's no visible label.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"ai\", \"input\", \"chat\", \"form\", \"composer\", \"textarea\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const loadingIndicatorSchema: ComponentSchemaDefinition = {\n\tname: \"loading-indicator\",\n\tdisplayName: \"LoadingIndicator\",\n\tdescription: \"Streaming/typing feedback with three motion variants — dots, pulse, bar.\",\n\tcategory: \"ai\",\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: \"dots\",\n\t\t\tdescription: \"Animation style.\",\n\t\t\tenumValues: [\"dots\", \"pulse\", \"bar\"],\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: \"md\",\n\t\t\tdescription: \"Text/icon scale.\",\n\t\t\tenumValues: [\"sm\", \"md\"],\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: 'Optional adjacent text label (e.g. \"Thinking…\").',\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.\",\n\t\t},\n\t],\n\tvariants: [\n\t\t{\n\t\t\tname: \"variant\",\n\t\t\tdescription: \"Motion style.\",\n\t\t\tvalues: [\n\t\t\t\t{ value: \"dots\", description: \"Three bouncing dots — classic typing indicator.\", useWhen: \"You want a familiar chat-style loading affordance.\" },\n\t\t\t\t{ value: \"pulse\", description: \"Single throbbing circle — minimal.\", useWhen: \"Tight inline space; one-character signal.\" },\n\t\t\t\t{ value: \"bar\", description: \"Horizontal sweep — implies progress without claiming a percentage.\", useWhen: \"Longer-running task (search, retrieval) where dots feel too perpetual.\" },\n\t\t\t],\n\t\t\tdefault: \"dots\",\n\t\t},\n\t],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"class-variance-authority\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Inline typing dots\",\n\t\t\tdescription: \"Render while waiting for the first token.\",\n\t\t\tcode: '{isLoading && <LoadingIndicator label=\"Thinking…\" />}',\n\t\t\tcomposition: [\"chat\", \"loading\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Show during the gap between submitting a prompt and the first streamed token, or while a long-running tool call is in flight.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for known-percent progress (use Progress). Don't keep visible after the first token streams in — stream itself signals activity.\",\n\t\tcommonMistakes: [\n\t\t\t\"Leaving the indicator visible while content streams — overlap looks broken\",\n\t\t\t\"Using `bar` for sub-second waits — the sweep can't complete a cycle\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"composer\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders as `role=\\\"status\\\"` with `aria-live=\\\"polite\\\"` and an `aria-label`. Pass a meaningful label so screen readers announce \\\"Searching docs\\\" rather than the default \\\"Loading\\\".\",\n\t\ttokenBudget: 200,\n\t},\n\ttags: [\"ai\", \"loading\", \"spinner\", \"typing\", \"indicator\", \"streaming\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const suggestionSchema: ComponentSchemaDefinition = {\n\tname: \"suggestion\",\n\tdisplayName: \"Suggestion\",\n\tdescription: \"Clickable prompt pill / quick-action chip. Forwards a payload to onSelect on click.\",\n\tcategory: \"ai\",\n\tsubcategory: \"input\",\n\tprops: [\n\t\t{\n\t\t\tname: \"value\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Payload sent to onSelect. Defaults to the rendered children when they are a string.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSelect\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Called with the payload when the chip is clicked.\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Visible label.\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Visible label of the chip.\",\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: [\"background\", \"secondary\", \"ring\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Starter prompts\",\n\t\t\tdescription: \"Render onboarding suggestions and drop into the composer on click.\",\n\t\t\tcode: '<Cluster gap=\"sm\">\\n {STARTERS.map((s) => (\\n <Suggestion key={s} value={s} onSelect={setInput}>{s}</Suggestion>\\n ))}\\n</Cluster>',\n\t\t\tcomposition: [\"chat\", \"onboarding\", \"prompts\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Show 3–6 starter prompts before the first turn, or follow-up prompts after an assistant turn. Combine with Cluster for wrap-friendly layout.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for navigation (use Button or a link). Don't auto-send on click without showing the user what's about to be sent — set the value into Composer first.\",\n\t\tcommonMistakes: [\n\t\t\t\"Auto-firing onSelect into useChat.append without populating the input first — feels surprising\",\n\t\t\t\"Long labels — these are pills, keep under ~40 chars\",\n\t\t],\n\t\trelatedComponents: [\"composer\", \"cluster\", \"button\"],\n\t\taccessibilityNotes:\n\t\t\t\"Real <button>, so keyboard activation and screen-reader announcement work natively. If the label is non-text, set `aria-label`.\",\n\t\ttokenBudget: 220,\n\t},\n\ttags: [\"ai\", \"suggestion\", \"prompt\", \"pill\", \"chip\", \"quick-action\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const toolCallSchema: ComponentSchemaDefinition = {\n\tname: \"tool-call\",\n\tdisplayName: \"ToolCall\",\n\tdescription:\n\t\t\"Collapsible card showing a tool/function invocation — name, lifecycle state badge, expandable args + result body.\",\n\tcategory: \"ai\",\n\tsubcategory: \"agent\",\n\tprops: [\n\t\t{\n\t\t\tname: \"name\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Tool / function name (e.g. searchDocs, getWeather).\",\n\t\t},\n\t\t{\n\t\t\tname: \"state\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Lifecycle of the invocation.\",\n\t\t\tenumValues: [\"pending\", \"running\", \"result\", \"error\"],\n\t\t},\n\t\t{\n\t\t\tname: \"args\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"JSON-stringifiable input passed to the tool.\",\n\t\t},\n\t\t{\n\t\t\tname: \"result\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"JSON-stringifiable output returned by the tool. May be a string for plain-text results.\",\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: \"Start expanded. Default collapsed to keep the chat clean.\",\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 on the outer Collapsible root.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"ai/types\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"card-foreground\", \"muted\", \"muted-foreground\", \"primary\", \"accent\", \"accent-foreground\", \"destructive\", \"ring\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Done invocation\",\n\t\t\tdescription: \"Map an AI SDK `tool-*` part to a ToolCall.\",\n\t\t\tcode: '<ToolCall\\n name=\"searchDocs\"\\n state=\"result\"\\n args={{ query: \"auth\" }}\\n result={{ hits: docs.length }}\\n/>',\n\t\t\tcomposition: [\"agent\", \"tool-use\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Streaming run\",\n\t\t\tdescription: \"While the tool is executing, show running state without args.\",\n\t\t\tcode: '<ToolCall name=\"getWeather\" state=\"running\" args={{ city: \"NYC\" }} />',\n\t\t\tcomposition: [\"agent\", \"tool-use\", \"streaming\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render every tool/function invocation in an agent UI. Map AI SDK v5 `tool-TOOLNAME` parts (state: input-streaming|input-available|output-available|output-error) or LangChain `AIMessage.tool_calls` directly.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for plain assistant text (use Message). Don't render the tool's actual UI here — ToolCall is a debug/transparency card; for a rich tool UI, render that as a sibling node inside the Message.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing the entire AI SDK part object as `result` — extract the output payload first\",\n\t\t\t\"Setting `defaultOpen` for every call — quickly clutters the chat\",\n\t\t\t\"Using `state=\\\"result\\\"` for an error — use `error` so the user sees red\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"reasoning\", \"loading-indicator\"],\n\t\taccessibilityNotes:\n\t\t\t\"Built on Radix Collapsible — keyboard expand/collapse with Enter/Space works natively. Add `aria-label` on the trigger if the tool name is opaque.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"ai\", \"agent\", \"tool-call\", \"function-call\", \"collapsible\", \"transparency\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const reasoningSchema: ComponentSchemaDefinition = {\n\tname: \"reasoning\",\n\tdisplayName: \"Reasoning\",\n\tdescription:\n\t\t\"Collapsible thinking-trace block for Anthropic-style reasoning or chain-of-thought scratchpads. Optional duration in the header.\",\n\tcategory: \"ai\",\n\tsubcategory: \"agent\",\n\tprops: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Reasoning content. Wrap with Markdown for formatted thinking traces.\",\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: \"Start expanded. Default collapsed.\",\n\t\t},\n\t\t{\n\t\t\tname: \"durationMs\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: 'Time spent thinking in ms — renders \"Thought for 4.2s\" in the header.',\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: \"Override the default header label.\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Reasoning trace body.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"ReactNode\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"@radix-ui/react-collapsible\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"muted\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Thinking trace with duration\",\n\t\t\tdescription: 'Header reads \"Thought for 4.2s\" — body reveals the full trace on click.',\n\t\t\tcode: '<Reasoning durationMs={4200}>\\n <Markdown>{thinkingMarkdown}</Markdown>\\n</Reasoning>',\n\t\t\tcomposition: [\"agent\", \"reasoning\", \"anthropic\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render Anthropic `thinking` blocks, chain-of-thought scratchpads, or any model-internal reasoning the user can optionally inspect.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for the assistant's actual answer (use Message). Don't auto-open for routine turns — only worth expanding for debug or trust-building UX.\",\n\t\tcommonMistakes: [\n\t\t\t\"Showing reasoning that wasn't actually produced — fabricating thinking blocks erodes trust\",\n\t\t\t\"`durationMs` measured from request start instead of model thinking time — use the model's reported duration when available\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"tool-call\", \"markdown\"],\n\t\taccessibilityNotes:\n\t\t\t\"Radix Collapsible — keyboard expand/collapse via Enter/Space. The italic header is decorative; use the visible label for screen readers.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"ai\", \"agent\", \"reasoning\", \"thinking\", \"chain-of-thought\", \"collapsible\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const messageActionsSchema: ComponentSchemaDefinition = {\n\tname: \"message-actions\",\n\tdisplayName: \"MessageActions\",\n\tdescription:\n\t\t\"Inline action-button row beneath a message — copy, regenerate, thumbs-up/down. Pure container; consumer supplies the buttons + handlers.\",\n\tcategory: \"ai\",\n\tsubcategory: \"chat\",\n\tprops: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Action buttons (typically Button variant=\\\"ghost\\\" size=\\\"icon\\\").\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Action buttons rendered in a horizontal row.\",\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: [],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Copy + regenerate\",\n\t\t\tdescription: \"Two ghost icon buttons under an assistant message.\",\n\t\t\tcode: '<MessageActions>\\n <Button variant=\"ghost\" size=\"icon\" onClick={() => navigator.clipboard.writeText(text)}><CopyIcon /></Button>\\n <Button variant=\"ghost\" size=\"icon\" onClick={onRegenerate}><RetryIcon /></Button>\\n</MessageActions>',\n\t\t\tcomposition: [\"chat\", \"actions\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render after assistant turns where the user might want to copy, regenerate, or rate the response. Combine with `group/message` on the parent Message to enable hover-reveal.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use under user turns (no actions to take). Don't put primary CTAs here — actions row is for secondary, optional follow-ups.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting `group/message` on the parent Message — hover-reveal won't trigger\",\n\t\t\t\"Stacking too many buttons (more than ~4) — overwhelms the chat\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"button\"],\n\t\taccessibilityNotes:\n\t\t\t\"Pure layout container. Each child button must carry its own `aria-label` since icon-only buttons have no accessible text.\",\n\t\ttokenBudget: 180,\n\t},\n\ttags: [\"ai\", \"chat\", \"actions\", \"row\", \"container\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const citationSchema: ComponentSchemaDefinition = {\n\tname: \"citation\",\n\tdisplayName: \"Citation\",\n\tdescription:\n\t\t\"Source attribution chip — renders a citation for a RAG hit, search result, or any external reference. Becomes a focusable link when url is provided.\",\n\tcategory: \"ai\",\n\tsubcategory: \"rag\",\n\tprops: [\n\t\t{\n\t\t\tname: \"title\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Source title or filename (e.g. \\\"auth-overview.md\\\").\",\n\t\t},\n\t\t{\n\t\t\tname: \"url\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdescription: \"If provided, the chip becomes an anchor opening in a new tab.\",\n\t\t},\n\t\t{\n\t\t\tname: \"page\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional page number (renders \\\"p.3\\\").\",\n\t\t},\n\t\t{\n\t\t\tname: \"index\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional inline footnote number (renders \\\"[1]\\\").\",\n\t\t},\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Trailing slot — extra metadata (e.g. relevance score).\",\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.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Trailing extras — relevance score, badge, etc.\",\n\t\t\trequired: false,\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: [\"card\", \"secondary\", \"ring\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Footnote-style citations\",\n\t\t\tdescription: \"Numbered citations after an assistant turn.\",\n\t\t\tcode: '<Cluster gap=\"xs\">\\n {sources.map((s, i) => (\\n <Citation key={s.id} title={s.title} url={s.url} index={i + 1} />\\n ))}\\n</Cluster>',\n\t\t\tcomposition: [\"rag\", \"citations\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Surface RAG/search-result sources after an assistant message. Use `index` for footnote-style numbering tied to inline `[1]` markers in the answer.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for general external links in chat (use Markdown). Don't fabricate sources — only render Citation for retrievals the model actually used.\",\n\t\tcommonMistakes: [\n\t\t\t\"Showing the URL twice (in `title` AND `url`) — pick a human title separately\",\n\t\t\t\"Skipping `target=\\\"_blank\\\"` — handled automatically when url is set; don't override\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"cluster\"],\n\t\taccessibilityNotes:\n\t\t\t\"With `url`, renders a real anchor (`rel=\\\"noreferrer noopener\\\"`). Without `url`, renders a static span. Add `aria-label` on the wrapper if title alone lacks context.\",\n\t\ttokenBudget: 240,\n\t},\n\ttags: [\"ai\", \"rag\", \"citation\", \"source\", \"footnote\", \"chip\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const markdownSchema: ComponentSchemaDefinition = {\n\tname: \"markdown\",\n\tdisplayName: \"Markdown\",\n\tdescription:\n\t\t\"Streaming-safe markdown renderer wrapping Vercel's streamdown. Handles partial input mid-stream without throwing.\",\n\tcategory: \"ai\",\n\tsubcategory: \"content\",\n\tprops: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Raw markdown. May be a partial chunk during streaming.\",\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 on the root element.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"children\",\n\t\t\tdescription: \"Markdown source as a string.\",\n\t\t\trequired: true,\n\t\t\tacceptedTypes: [\"string\"],\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"streamdown\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"foreground\", \"primary\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Streaming assistant turn\",\n\t\t\tdescription: \"Render the in-flight assistant message as it arrives.\",\n\t\t\tcode: '<Message role=\"assistant\">\\n <Markdown>{message.content}</Markdown>\\n</Message>',\n\t\t\tcomposition: [\"chat\", \"streaming\", \"markdown\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom rendering: drop down to Streamdown\",\n\t\t\tdescription: \"For per-element overrides, use streamdown directly with our CodeBlock primitive.\",\n\t\t\tcode: 'import { Streamdown } from \"streamdown\";\\nimport { CodeBlock } from \"@hex-core/components\";\\n\\n<Streamdown components={{ pre: ({ children }) => <CodeBlock code={extractCode(children)} /> }}>\\n {markdown}\\n</Streamdown>',\n\t\t\tcomposition: [\"chat\", \"code\", \"override\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render any markdown content from an LLM — assistant turns, system messages with formatting, RAG citations with inline links. Required for streaming because raw markdown parsers throw on unfinished input.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for plain text without formatting (just render the string). Don't bypass it for streamed content — partial input WILL break a non-streaming parser.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing JSX children instead of a markdown string — Markdown only accepts strings\",\n\t\t\t\"Trying to override per-element renderers via Markdown — drop down to `Streamdown` directly for that (we keep our public surface minimal so the DTS bundle doesn't drag in shiki's giant language union)\",\n\t\t\t\"Forgetting Tailwind Typography (`prose`) classes are required to style the output\",\n\t\t],\n\t\trelatedComponents: [\"message\", \"code-block\", \"citation\"],\n\t\taccessibilityNotes:\n\t\t\t\"Inherits semantics from streamdown: real headings, lists, links. Verify Tailwind Typography (prose) is enabled in your CSS — without it, output renders unstyled.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"ai\", \"markdown\", \"streaming\", \"content\", \"renderer\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const codeBlockSchema: ComponentSchemaDefinition = {\n\tname: \"code-block\",\n\tdisplayName: \"CodeBlock\",\n\tdescription:\n\t\t\"Server-rendered, syntax-highlighted code block with a language-label header and a copy button. Dual-theme via Shiki — same HTML for light + dark.\",\n\tcategory: \"ai\",\n\tsubcategory: \"content\",\n\tprops: [\n\t\t{\n\t\t\tname: \"code\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"The code to display. Plain text — no markdown fences.\",\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: 'Header label (e.g. \"pnpm\", \"tsx\"). Inferred from `language` if omitted.',\n\t\t},\n\t\t{\n\t\t\tname: \"language\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Shiki grammar key. Overrides inference from `label`.\",\n\t\t\tenumValues: [\"bash\", \"ts\", \"tsx\", \"js\", \"jsx\", \"json\", \"css\", \"html\", \"md\", \"py\", \"text\"],\n\t\t},\n\t\t{\n\t\t\tname: \"themes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdefault: { light: \"github-light-high-contrast\", dark: \"github-dark\" },\n\t\t\tdescription: \"Override the default theme pair. Keys: `light`, `dark` — values are Shiki theme IDs.\",\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 on the outer card.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [],\n\tdependencies: {\n\t\tnpm: [\"shiki\", \"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"ai/code-block-copy\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"card-foreground\", \"muted\", \"muted-foreground\", \"border\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Install command\",\n\t\t\tdescription: \"Header label drives both the visible chip and Shiki grammar inference.\",\n\t\t\tcode: '<CodeBlock label=\"pnpm\" code=\"pnpm add @hex-core/components\" />',\n\t\t\tcomposition: [\"docs\", \"install\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Inline TS sample\",\n\t\t\tdescription: \"Explicit language overrides label inference.\",\n\t\t\tcode: '<CodeBlock language=\"tsx\" code={`<Button>Click</Button>`} />',\n\t\t\tcomposition: [\"docs\", \"code\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render any code snippet in docs, copy-to-clipboard install commands, or static AI chat output where server rendering is acceptable. Pair with Markdown's `components.pre` override to take over markdown code fences.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for streaming chat where the code grows mid-render — async Server Components can't update token-by-token. Use Streamdown's built-in client CodeBlock for that.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing markdown-fenced code (with ```) — strip the fences first\",\n\t\t\t\"Forgetting that this is async — must be awaited or rendered as RSC\",\n\t\t\t\"Using a Shiki theme that isn't bundled — fails with a runtime fetch error\",\n\t\t],\n\t\trelatedComponents: [\"markdown\", \"message\"],\n\t\taccessibilityNotes:\n\t\t\t\"Highlighted output is plain text inside a `<pre>` — screen readers read it normally. The copy button has its own `aria-label`. Add a meaningful `aria-label` on the wrapper if the label alone isn't descriptive.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"ai\", \"code\", \"shiki\", \"highlight\", \"copy\", \"rsc\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const mindMapSchema: ComponentSchemaDefinition = {\n\tname: \"mind-map\",\n\tdisplayName: \"MindMap\",\n\tdescription:\n\t\t\"Typed React mind map. Pass a hierarchical root node and the component lays children out radially (or horizontally) using d3-hierarchy's tree layout — no Mermaid string DSL required.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"hierarchy\",\n\tprops: [\n\t\t{\n\t\t\tname: \"root\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Hierarchy root: { id, label, children?, data? }. Children are laid out radially around the root.\",\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: \"radial\",\n\t\t\tdescription: \"Layout direction — \\\"radial\\\" (children orbit the root) or \\\"horizontal\\\" (left-to-right tree).\",\n\t\t\tenumValues: [\"radial\", \"horizontal\"],\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 600,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 400,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onNodeClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked MindMapNode when a user clicks any node.\",\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 on the SVG element.\",\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\theavyPeer: [\n\t\t\t{\n\t\t\t\tname: \"d3-hierarchy\",\n\t\t\t\tversion: \"^3.1.2\",\n\t\t\t\tbundleKbGzip: 3,\n\t\t\t\treason: \"Computes the radial / horizontal tree layout; the component renders SVG with the result\",\n\t\t\t},\n\t\t],\n\t},\n\ttokensUsed: [\"primary\", \"background\", \"foreground\", \"muted\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Radial mind map\",\n\t\t\tdescription: \"Default radial layout with three branches.\",\n\t\t\tcode:\n\t\t\t\t\"<MindMap root={{\\n id: \\\"root\\\",\\n label: \\\"Project\\\",\\n children: [\\n { id: \\\"ui\\\", label: \\\"UI\\\", children: [{ id: \\\"btn\\\", label: \\\"Button\\\" }] },\\n { id: \\\"api\\\", label: \\\"API\\\" },\\n { id: \\\"db\\\", label: \\\"DB\\\" },\\n ],\\n}} />\",\n\t\t\tcomposition: [\"mind-map\", \"hierarchy\", \"radial\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Horizontal mind map with click handler\",\n\t\t\tdescription: \"Left-to-right tree useful for sidebars and detail panes.\",\n\t\t\tcode:\n\t\t\t\t\"<MindMap orientation=\\\"horizontal\\\" onNodeClick={(n) => select(n.id)} root={data} />\",\n\t\t\tcomposition: [\"mind-map\", \"horizontal\", \"interactive\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize a typed hierarchy when you have structured data (not a Mermaid string) — concept maps, knowledge graphs, project decompositions, agent plan trees. Use radial when the root is conceptually central; horizontal when the hierarchy is left-to-right (file trees, decision trees).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for free-form node graphs with arbitrary edges (use Canvas with reactflow). Don't use to render Mermaid markdown from agents (use Diagram). Don't use for hierarchies sized by value (use TreeMap or Sunburst).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing an unmemoized `root` object on every render — the layout pass re-runs and node positions thrash. Memoize\",\n\t\t\t\"Sizing the SVG to 0 (no explicit width/height and no parent layout) — the layout returns degenerate coordinates\",\n\t\t\t\"Mutating the root hierarchy in place between renders — d3-hierarchy mutates its own internal tree, but the input object should be treated as immutable\",\n\t\t],\n\t\trelatedComponents: [\"tree-map\", \"org-chart\", \"sunburst\", \"dendrogram\", \"canvas\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing the node count and root label. For agent outputs, also expose a parallel text representation (a nested <ul> of node labels in a <details>) so screen-reader users get the structure.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"mind-map\", \"hierarchy\", \"tree\", \"radial\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const treeMapSchema: ComponentSchemaDefinition = {\n\tname: \"tree-map\",\n\tdisplayName: \"TreeMap\",\n\tdescription:\n\t\t\"Nested rectangles sized by value — each leaf's area is proportional to its `value`. Squarified by default for legibility.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"hierarchy\",\n\tprops: [\n\t\t{\n\t\t\tname: \"root\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Hierarchy root: { id, label, value?, children? }. Leaves require a positive `value`; internal nodes are summed.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 600,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 400,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"padding\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 2,\n\t\t\tdescription: \"Inner padding between sibling rectangles, in pixels.\",\n\t\t},\n\t\t{\n\t\t\tname: \"tile\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"squarify\",\n\t\t\tdescription: \"Tiling algorithm — \\\"squarify\\\" keeps rectangles close to square; \\\"binary\\\" is faster; \\\"slice-dice\\\" alternates direction by depth.\",\n\t\t\tenumValues: [\"squarify\", \"binary\", \"slice-dice\"],\n\t\t},\n\t\t{\n\t\t\tname: \"colorBy\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"depth\",\n\t\t\tdescription: \"Fill strategy — \\\"depth\\\" cycles palette tokens, \\\"value\\\" interpolates the primary token by value, or pass a (node, depth) => string.\",\n\t\t\tenumValues: [\"depth\", \"value\"],\n\t\t},\n\t\t{\n\t\t\tname: \"onLeafClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked TreeMapNode when a user clicks any leaf.\",\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 on the SVG element.\",\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\theavyPeer: [\n\t\t\t{\n\t\t\t\tname: \"d3-hierarchy\",\n\t\t\t\tversion: \"^3.1.2\",\n\t\t\t\tbundleKbGzip: 3,\n\t\t\t\treason: \"Computes the squarified treemap layout; the component renders SVG rectangles with the result\",\n\t\t\t},\n\t\t],\n\t},\n\ttokensUsed: [\"primary\", \"accent\", \"secondary\", \"muted\", \"background\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"File-size treemap\",\n\t\t\tdescription: \"Visualize the relative size of files in a folder.\",\n\t\t\tcode:\n\t\t\t\t\"<TreeMap root={{\\n id: \\\"root\\\", label: \\\"src\\\",\\n children: [\\n { id: \\\"a\\\", label: \\\"app\\\", value: 240 },\\n { id: \\\"l\\\", label: \\\"lib\\\", value: 90 },\\n { id: \\\"t\\\", label: \\\"tests\\\", value: 120 },\\n ],\\n}} />\",\n\t\t\tcomposition: [\"tree-map\", \"hierarchy\", \"value-scaled\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Heatmap-style coloring by value\",\n\t\t\tdescription: \"Use the value-interpolated palette to highlight outliers.\",\n\t\t\tcode: \"<TreeMap colorBy=\\\"value\\\" root={budgetTree} />\",\n\t\t\tcomposition: [\"tree-map\", \"heatmap\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Compare relative sizes inside a hierarchy — file sizes, budgets, market caps, allocations. Use when the user cares about \\\"which slice of the whole is biggest\\\" and the hierarchy is at most 2–3 levels deep.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use to show edges/relationships (use MindMap or Canvas). Don't use for time series (use a chart). Don't use when leaves all have similar values — area differences become invisible.\",\n\t\tcommonMistakes: [\n\t\t\t\"Leaf values that don't sum to the parent — d3-hierarchy aggregates leaves; internal-node `value` props are ignored when children exist\",\n\t\t\t\"Negative or zero leaf values — produce zero-area rectangles or NaN positions. Filter or clamp upstream\",\n\t\t\t\"Passing the same root reference but mutating its children in place — React skips the re-layout. Provide a new root object on data change\",\n\t\t],\n\t\trelatedComponents: [\"mind-map\", \"sunburst\", \"org-chart\", \"dendrogram\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing the leaf count and root label. For large or interactive treemaps, also expose a parallel <table> of label/value pairs for screen readers.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"tree-map\", \"hierarchy\", \"area\", \"squarify\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const orgChartSchema: ComponentSchemaDefinition = {\n\tname: \"org-chart\",\n\tdisplayName: \"OrgChart\",\n\tdescription:\n\t\t\"Top-down organizational chart with collapsible subtrees. Each node renders as a rounded card showing label + subtitle; click any node with children to fold its subtree behind a +N badge.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"hierarchy\",\n\tprops: [\n\t\t{\n\t\t\tname: \"root\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Hierarchy root: { id, label, subtitle?, avatarUrl?, children? }.\",\n\t\t},\n\t\t{\n\t\t\tname: \"collapsible\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, clicking a node with children toggles its collapsed state.\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultExpandedDepth\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Nodes deeper than this depth render collapsed initially. Defaults to Infinity (all expanded).\",\n\t\t},\n\t\t{\n\t\t\tname: \"nodeWidth\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 180,\n\t\t\tdescription: \"Pixel width of each node card.\",\n\t\t},\n\t\t{\n\t\t\tname: \"nodeHeight\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 64,\n\t\t\tdescription: \"Pixel height of each node card.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 800,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 480,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onNodeClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked OrgNode. Fires before any internal collapse toggle.\",\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 on the SVG element.\",\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\theavyPeer: [\n\t\t\t{\n\t\t\t\tname: \"d3-hierarchy\",\n\t\t\t\tversion: \"^3.1.2\",\n\t\t\t\tbundleKbGzip: 3,\n\t\t\t\treason: \"Computes the top-down tree layout; the component renders SVG node cards with the result\",\n\t\t\t},\n\t\t],\n\t},\n\ttokensUsed: [\"card\", \"border\", \"foreground\", \"muted-foreground\", \"primary\", \"primary-foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-level org chart\",\n\t\t\tdescription: \"CEO with two reports, one of whom has further reports.\",\n\t\t\tcode:\n\t\t\t\t\"<OrgChart root={{\\n id: \\\"ceo\\\", label: \\\"Jane Doe\\\", subtitle: \\\"CEO\\\",\\n children: [\\n { id: \\\"cto\\\", label: \\\"Bob Smith\\\", subtitle: \\\"CTO\\\",\\n children: [{ id: \\\"eng\\\", label: \\\"Eng Team\\\", subtitle: \\\"12 people\\\" }] },\\n { id: \\\"cfo\\\", label: \\\"Sara Lin\\\", subtitle: \\\"CFO\\\" },\\n ],\\n}} />\",\n\t\t\tcomposition: [\"org-chart\", \"hierarchy\", \"people\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Initially collapsed past depth 1\",\n\t\t\tdescription: \"Render only the top two layers expanded; click +N badges to drill down.\",\n\t\t\tcode: \"<OrgChart defaultExpandedDepth={1} root={orgTree} />\",\n\t\t\tcomposition: [\"org-chart\", \"collapsible\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize people / team / department hierarchies, or any tree where each node is a labeled entity (not a value-sized bucket). Use when relationships are strictly parent-child and the user wants to drill into branches. `onNodeClick` fires for ALL nodes (root, internal, leaves) BEFORE the internal collapse toggle so consumers can observe pre-toggle state.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for value-scaled hierarchies (use TreeMap or Sunburst). Don't use for arbitrary node graphs with cross-edges (use Canvas). Don't use for purely conceptual maps (use MindMap).\",\n\t\tcommonMistakes: [\n\t\t\t\"Hierarchies thousands of nodes deep — d3.tree's horizontal spread becomes unreadable. Combine with `defaultExpandedDepth` and let users drill\",\n\t\t\t\"Mutating `root` in place when toggling expansion externally — internal collapse state keys off ids, so the controlled escape hatch should provide a stable id and a NEW root object\",\n\t\t\t\"Placing the SVG in a 0×0 container — the layout computes from `width`/`height`, but the rendered SVG inherits its container's dimensions\",\n\t\t],\n\t\trelatedComponents: [\"mind-map\", \"tree-map\", \"sunburst\", \"dendrogram\", \"canvas\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing the visible node count and root label. Collapsed-count badges are visual; for screen readers, also expose a parallel <ul> listing label/subtitle/depth.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"org-chart\", \"hierarchy\", \"tree\", \"people\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sunburstSchema: ComponentSchemaDefinition = {\n\tname: \"sunburst\",\n\tdisplayName: \"Sunburst\",\n\tdescription:\n\t\t\"Radial hierarchy by value. Each ring is a deeper level of the tree; segment angles are proportional to summed values. Click a segment to drill in; click the center to zoom out.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"hierarchy\",\n\tprops: [\n\t\t{\n\t\t\tname: \"root\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Hierarchy root: { id, label, value?, children? }. Leaves require a positive `value`; internal nodes are summed.\",\n\t\t},\n\t\t{\n\t\t\tname: \"drillable\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"When true, clicking a segment with children focuses it as the new center. Click the center to zoom back out.\",\n\t\t},\n\t\t{\n\t\t\tname: \"centerLabel\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional content rendered at the SVG center (e.g. a total). Falls back to the focused node's label.\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 400,\n\t\t\tdescription: \"Pixel size of the rendered SVG (it's square).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSegmentClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked SunburstNode. Fires before any internal drill.\",\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 on the SVG element.\",\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\theavyPeer: [\n\t\t\t{\n\t\t\t\tname: \"d3-hierarchy\",\n\t\t\t\tversion: \"^3.1.2\",\n\t\t\t\tbundleKbGzip: 3,\n\t\t\t\treason: \"Computes the partition layout that positions each ring segment\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"d3-shape\",\n\t\t\t\tversion: \"^3.2.0\",\n\t\t\t\tbundleKbGzip: 6,\n\t\t\t\treason: \"Generates the SVG arc path for each segment\",\n\t\t\t},\n\t\t],\n\t},\n\ttokensUsed: [\"primary\", \"accent\", \"secondary\", \"muted\", \"card\", \"border\", \"foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Two-level sunburst\",\n\t\t\tdescription: \"Visualize a portfolio split with sub-allocations.\",\n\t\t\tcode:\n\t\t\t\t\"<Sunburst root={{\\n id: \\\"root\\\", label: \\\"Portfolio\\\",\\n children: [\\n { id: \\\"eq\\\", label: \\\"Equity\\\", children: [\\n { id: \\\"us\\\", label: \\\"US\\\", value: 60 },\\n { id: \\\"intl\\\", label: \\\"Intl\\\", value: 20 },\\n ]},\\n { id: \\\"fx\\\", label: \\\"Fixed Income\\\", value: 20 },\\n ],\\n}} />\",\n\t\t\tcomposition: [\"sunburst\", \"hierarchy\", \"value-scaled\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Custom center label with totals\",\n\t\t\tdescription: \"Use centerLabel to show the sum or other context.\",\n\t\t\tcode: \"<Sunburst centerLabel={<strong>$1.2M</strong>} root={portfolio} />\",\n\t\t\tcomposition: [\"sunburst\", \"center-label\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize a value-scaled hierarchy where the user wants to see both the parent share and child sub-shares at once — portfolio allocations, time spent by category × subcategory, file system disk usage. Drill-down lets users focus a branch. `onSegmentClick` fires for ALL segments BEFORE the internal drill so consumers can observe pre-drill focus.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for hierarchies without meaningful values per leaf (use MindMap or OrgChart). Don't use for >4 levels — outer rings become unreadable. Don't use for arbitrary node-edge graphs (use Canvas).\",\n\t\tcommonMistakes: [\n\t\t\t\"Leaf values that don't sum at internal nodes — d3-hierarchy aggregates leaves; internal-node `value` props are ignored when children exist\",\n\t\t\t\"Negative or zero leaf values — produce zero-width arcs or NaN angles. Filter or clamp upstream\",\n\t\t\t\"Forgetting the resetting effect — when the parent updates `root` to a different tree, the focused id may no longer exist; the component re-syncs to the new root automatically\",\n\t\t],\n\t\trelatedComponents: [\"tree-map\", \"mind-map\", \"org-chart\", \"dendrogram\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing segment count and focused node. Drill-down is mouse-only by default; expose a parallel <table> or breadcrumb for keyboard / screen-reader users.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"sunburst\", \"hierarchy\", \"radial\", \"value-scaled\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const dendrogramSchema: ComponentSchemaDefinition = {\n\tname: \"dendrogram\",\n\tdisplayName: \"Dendrogram\",\n\tdescription:\n\t\t\"Clustering tree where every leaf sits at the same depth, regardless of branch length — the visual signature of taxonomies, phylogenetic trees, and hierarchical-clustering output.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"hierarchy\",\n\tprops: [\n\t\t{\n\t\t\tname: \"root\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Hierarchy root: { id, label, children? }.\",\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: \"\\\"horizontal\\\" runs root-to-leaves left→right; \\\"vertical\\\" runs top→bottom.\",\n\t\t\tenumValues: [\"horizontal\", \"vertical\"],\n\t\t},\n\t\t{\n\t\t\tname: \"linkShape\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"step\",\n\t\t\tdescription: \"\\\"step\\\" draws right-angle elbow links (taxonomy aesthetic); \\\"diagonal\\\" uses smooth Bezier curves.\",\n\t\t\tenumValues: [\"step\", \"diagonal\"],\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 600,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 400,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onLeafClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked DendrogramNode when a user clicks any leaf.\",\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 on the SVG element.\",\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\theavyPeer: [\n\t\t\t{\n\t\t\t\tname: \"d3-hierarchy\",\n\t\t\t\tversion: \"^3.1.2\",\n\t\t\t\tbundleKbGzip: 3,\n\t\t\t\treason: \"Computes the cluster layout (equal-depth leaves) used to position nodes\",\n\t\t\t},\n\t\t],\n\t},\n\ttokensUsed: [\"primary\", \"muted-foreground\", \"foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Taxonomy dendrogram\",\n\t\t\tdescription: \"Equal-depth leaves arranged horizontally with step links.\",\n\t\t\tcode:\n\t\t\t\t\"<Dendrogram root={{\\n id: \\\"root\\\", label: \\\"Animals\\\",\\n children: [\\n { id: \\\"mammals\\\", label: \\\"Mammals\\\", children: [\\n { id: \\\"cat\\\", label: \\\"Cat\\\" },\\n { id: \\\"dog\\\", label: \\\"Dog\\\" },\\n ]},\\n { id: \\\"birds\\\", label: \\\"Birds\\\", children: [{ id: \\\"robin\\\", label: \\\"Robin\\\" }] },\\n ],\\n}} />\",\n\t\t\tcomposition: [\"dendrogram\", \"hierarchy\", \"taxonomy\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Vertical dendrogram with diagonal links\",\n\t\t\tdescription: \"Top-down orientation with smooth Bezier links.\",\n\t\t\tcode: \"<Dendrogram orientation=\\\"vertical\\\" linkShape=\\\"diagonal\\\" root={tree} />\",\n\t\t\tcomposition: [\"dendrogram\", \"vertical\", \"diagonal\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize taxonomic / phylogenetic / clustering hierarchies where the user expects every leaf to sit at the same depth. Ideal when the tree shape itself is the message (groupings, sibling relationships). `onLeafClick` fires for LEAVES ONLY — internal-node clicks are no-ops (use OrgChart if you need callbacks on every node).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for value-scaled hierarchies (use TreeMap or Sunburst). Don't use for tree shapes where depth has meaning (use OrgChart, which uses d3.tree). Don't use for arbitrary node graphs (use Canvas).\",\n\t\tcommonMistakes: [\n\t\t\t\"Confusing dendrogram with org chart — dendrogram aligns ALL leaves at a single edge regardless of branch depth, which is wrong for org structures where reporting depth is meaningful\",\n\t\t\t\"Hundreds of leaves on a fixed-size SVG — leaves overlap. Either grow the SVG or paginate the tree\",\n\t\t\t\"Mutating the root object in place — the layout pass treats input as immutable; always provide a new root reference on data change\",\n\t\t],\n\t\trelatedComponents: [\"mind-map\", \"tree-map\", \"org-chart\", \"sunburst\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing the leaf count and root label. For agent outputs, expose a parallel <ul> grouping leaves by their parent so screen-reader users get the clustering structure.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"dendrogram\", \"hierarchy\", \"cluster\", \"taxonomy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sankeySchema: ComponentSchemaDefinition = {\n\tname: \"sankey\",\n\tdisplayName: \"Sankey\",\n\tdescription:\n\t\t\"Weighted-flow diagram. Nodes arranged in horizontal columns by topological depth; link thickness encodes flow value. Use for funnels, energy/material/money flows, and any \\\"value moving from A to B\\\" picture.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"flow\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label }. Every link's source/target MUST match an id here.\",\n\t\t},\n\t\t{\n\t\t\tname: \"links\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { source, target, value }. Values must be positive.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 720,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 420,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"nodeAlign\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"justify\",\n\t\t\tdescription: \"Column alignment strategy.\",\n\t\t\tenumValues: [\"left\", \"right\", \"center\", \"justify\"],\n\t\t},\n\t\t{\n\t\t\tname: \"nodeWidth\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 12,\n\t\t\tdescription: \"Pixel width of each node rectangle.\",\n\t\t},\n\t\t{\n\t\t\tname: \"nodePadding\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 8,\n\t\t\tdescription: \"Vertical pixel gap between nodes in the same column.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onLinkHover\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the hovered SankeyLink (or null when hover ends).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onNodeClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked SankeyNode.\",\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 on the SVG element.\",\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\theavyPeer: [\n\t\t\t{\n\t\t\t\tname: \"d3-sankey\",\n\t\t\t\tversion: \"^0.12.3\",\n\t\t\t\tbundleKbGzip: 6,\n\t\t\t\treason: \"Computes the column layout and link routing; the component renders SVG with the result\",\n\t\t\t},\n\t\t],\n\t},\n\ttokensUsed: [\"primary\", \"background\", \"foreground\", \"muted\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Energy flow\",\n\t\t\tdescription: \"Two sources flowing into a single sink.\",\n\t\t\tcode:\n\t\t\t\t\"<Sankey\\n nodes={[\\n { id: \\\"coal\\\", label: \\\"Coal\\\" },\\n { id: \\\"gas\\\", label: \\\"Gas\\\" },\\n { id: \\\"grid\\\", label: \\\"Grid\\\" },\\n ]}\\n links={[\\n { source: \\\"coal\\\", target: \\\"grid\\\", value: 60 },\\n { source: \\\"gas\\\", target: \\\"grid\\\", value: 30 },\\n ]}\\n/>\",\n\t\t\tcomposition: [\"sankey\", \"flow\", \"energy\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Funnel-style with hover\",\n\t\t\tdescription: \"Surface link details on hover for tooltips.\",\n\t\t\tcode:\n\t\t\t\t\"<Sankey\\n nodes={steps}\\n links={transitions}\\n onLinkHover={(l) => setActive(l)}\\n/>\",\n\t\t\tcomposition: [\"sankey\", \"interactive\", \"tooltip\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize how a quantity is distributed and re-distributed across a multi-step pipeline — energy mix, marketing-funnel transitions, traffic referral flows, budget allocation by department × line-item. The thicker the link, the more value moves along it.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for hierarchies (use TreeMap or Sunburst). Don't use for arbitrary node-edge graphs without a clear left-to-right flow (use Canvas). Don't use when total flow doesn't conserve from column to column — d3-sankey assumes a balanced graph.\",\n\t\tcommonMistakes: [\n\t\t\t\"A link's source or target id not present in `nodes` — d3-sankey throws an opaque error. Validate ids upstream\",\n\t\t\t\"Negative or zero `value` — produces zero-width or NaN-positioned links. Filter or clamp upstream\",\n\t\t\t\"Cycles in the link graph — d3-sankey requires a DAG. If your data has feedback loops, collapse them or split into multiple Sankeys\",\n\t\t\t\"Mutating the input `nodes` / `links` between renders — the component clones internally to protect consumer arrays, but unmemoized inputs still trigger a full re-layout each render. Memoize\",\n\t\t],\n\t\trelatedComponents: [\"funnel\", \"pyramid\", \"flowchart\", \"canvas\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing node and link counts. For agent outputs, also expose a parallel <table> of source / target / value triples so screen-reader users get the flow magnitudes.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"sankey\", \"flow\", \"weighted\", \"funnel\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const funnelSchema: ComponentSchemaDefinition = {\n\tname: \"funnel\",\n\tdisplayName: \"Funnel\",\n\tdescription:\n\t\t\"Conversion funnel — vertical stack of trapezoidal stages whose width is proportional to each stage's value. Pure SVG; no heavy peer dep.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"flow\",\n\tprops: [\n\t\t{\n\t\t\tname: \"stages\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Ordered top-to-bottom array of { id, label, value }. Values must be non-negative.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 480,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 360,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 4,\n\t\t\tdescription: \"Pixel gap between stages.\",\n\t\t},\n\t\t{\n\t\t\tname: \"showConversion\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Show stage-to-stage conversion percentages alongside the funnel.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onStageClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked FunnelStage.\",\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 on the SVG element.\",\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: [\"primary\", \"primary-foreground\", \"muted-foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Signup funnel\",\n\t\t\tdescription: \"Standard top-of-funnel → conversion drop-off.\",\n\t\t\tcode:\n\t\t\t\t\"<Funnel stages={[\\n { id: \\\"visit\\\", label: \\\"Visited\\\", value: 10000 },\\n { id: \\\"signup\\\", label: \\\"Signed up\\\", value: 1200 },\\n { id: \\\"active\\\", label: \\\"Active\\\", value: 480 },\\n { id: \\\"paid\\\", label: \\\"Paid\\\", value: 95 },\\n]} />\",\n\t\t\tcomposition: [\"funnel\", \"conversion\", \"stages\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Click stages to drill in\",\n\t\t\tdescription: \"Wire onStageClick to a route or modal for stage detail.\",\n\t\t\tcode: \"<Funnel stages={data} onStageClick={(s) => router.push(`/stages/${s.id}`)} />\",\n\t\t\tcomposition: [\"funnel\", \"interactive\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize linear conversion drop-off — onboarding step completion, marketing-funnel rates, sales pipeline stages, ETL row counts. Use when each stage is a strict subset of the previous and the magnitude of the drop is the message.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for non-monotonic data where a later stage can exceed an earlier one (use a column chart). Don't use for branching funnels where flow splits across paths (use Sankey). Don't use for ranked categorical data without a flow concept (use Pyramid).\",\n\t\tcommonMistakes: [\n\t\t\t\"Stage values that aren't monotonically non-increasing — visually misleads users into thinking the funnel \\\"recovers\\\". Validate upstream\",\n\t\t\t\"Negative values — produce zero-width stages or NaN positions. Filter or clamp upstream\",\n\t\t\t\"More than ~8 stages — labels become unreadable. Group adjacent stages or use Sankey\",\n\t\t],\n\t\trelatedComponents: [\"sankey\", \"pyramid\", \"flowchart\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing stage count and peak value. For agent outputs, also expose a parallel <table> of label/value/conversion-rate triples so screen-reader users get the magnitudes.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"funnel\", \"conversion\", \"flow\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const pyramidSchema: ComponentSchemaDefinition = {\n\tname: \"pyramid\",\n\tdisplayName: \"Pyramid\",\n\tdescription:\n\t\t\"Ranked-tier pyramid. Tiers stack top-to-bottom; widths can grow toward the base (widening) or shrink (narrowing). Pure SVG; no heavy peer dep. Distinct from Funnel — Pyramid encodes RANK, Funnel encodes FLOW.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"flow\",\n\tprops: [\n\t\t{\n\t\t\tname: \"tiers\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Ordered top-to-bottom array of { id, label, value? }. The first entry is the apex.\",\n\t\t},\n\t\t{\n\t\t\tname: \"shape\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"widening\",\n\t\t\tdescription: \"Tier-width direction — \\\"widening\\\" grows toward the base; \\\"narrowing\\\" shrinks toward it.\",\n\t\t\tenumValues: [\"widening\", \"narrowing\"],\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 480,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 360,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"gap\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 4,\n\t\t\tdescription: \"Pixel gap between tiers.\",\n\t\t},\n\t\t{\n\t\t\tname: \"showValues\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Show each tier's `value` next to its label when present.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onTierClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked PyramidTier.\",\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 on the SVG element.\",\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: [\"primary\", \"primary-foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Maslow's hierarchy\",\n\t\t\tdescription: \"Classic widening pyramid with 5 tiers.\",\n\t\t\tcode:\n\t\t\t\t\"<Pyramid tiers={[\\n { id: \\\"a\\\", label: \\\"Self-actualization\\\" },\\n { id: \\\"e\\\", label: \\\"Esteem\\\" },\\n { id: \\\"l\\\", label: \\\"Love & belonging\\\" },\\n { id: \\\"s\\\", label: \\\"Safety\\\" },\\n { id: \\\"p\\\", label: \\\"Physiological\\\" },\\n]} />\",\n\t\t\tcomposition: [\"pyramid\", \"rank\", \"hierarchy\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Inverted pyramid (narrowing) for ranked output\",\n\t\t\tdescription: \"Use \\\"narrowing\\\" when the most important tier sits at the top.\",\n\t\t\tcode:\n\t\t\t\t\"<Pyramid shape=\\\"narrowing\\\" tiers={[\\n { id: \\\"north-star\\\", label: \\\"North star\\\" },\\n { id: \\\"okrs\\\", label: \\\"OKRs\\\" },\\n { id: \\\"projects\\\", label: \\\"Projects\\\" },\\n { id: \\\"tasks\\\", label: \\\"Tasks\\\" },\\n]} />\",\n\t\t\tcomposition: [\"pyramid\", \"narrowing\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize a ranked categorical hierarchy where tier order is meaningful but each tier is a distinct level (not a subset of the previous). Maslow-style needs hierarchy, organizational tiers, content hierarchy (north star → tasks).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for conversion drop-off where each stage is a strict subset of the previous (use Funnel — it shows the conversion ratio between stages). Don't use for value-scaled hierarchies (use TreeMap or Sunburst). Don't use for >7 tiers — labels become unreadable.\",\n\t\tcommonMistakes: [\n\t\t\t\"Confusing Pyramid with Funnel — Funnel encodes FLOW (value moves between stages); Pyramid encodes RANK (each tier is a distinct level)\",\n\t\t\t\"Tier order matters — the first array element is the apex. Reversing the array flips the meaning\",\n\t\t\t\"Passing values that don't actually rank — Pyramid doesn't sort; it trusts your order\",\n\t\t],\n\t\trelatedComponents: [\"funnel\", \"sankey\", \"tree-map\", \"sunburst\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing tier count and shape. For agent outputs, also expose a parallel ordered list (<ol>) of labels so screen-reader users get the rank order without relying on visual position.\",\n\t\ttokenBudget: 260,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"pyramid\", \"rank\", \"hierarchy\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const flowchartSchema: ComponentSchemaDefinition = {\n\tname: \"flowchart\",\n\tdisplayName: \"Flowchart\",\n\tdescription:\n\t\t\"Typed React flowchart. Pass nodes (with optional shape) and directional edges; the component runs a topological-rank auto-layout and renders top-to-bottom or left-to-right. Pure SVG; no heavy peer dep.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"flow\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label, shape?, rank? }. shape ∈ \\\"rect\\\" (default) | \\\"round\\\" | \\\"diamond\\\".\",\n\t\t},\n\t\t{\n\t\t\tname: \"edges\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { source, target, label? }. The graph MUST be a DAG (no cycles).\",\n\t\t},\n\t\t{\n\t\t\tname: \"direction\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"vertical\",\n\t\t\tdescription: \"Layout direction — vertical (top-to-bottom) or horizontal (left-to-right).\",\n\t\t\tenumValues: [\"vertical\", \"horizontal\"],\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 720,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 480,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"nodeWidth\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 140,\n\t\t\tdescription: \"Pixel width of each node.\",\n\t\t},\n\t\t{\n\t\t\tname: \"nodeHeight\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 48,\n\t\t\tdescription: \"Pixel height of each node.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onNodeClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked FlowchartNode.\",\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 on the SVG element.\",\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: [\"card\", \"border\", \"foreground\", \"muted-foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Authorization decision flow\",\n\t\t\tdescription: \"Diamond decision node + two outcomes.\",\n\t\t\tcode:\n\t\t\t\t\"<Flowchart\\n nodes={[\\n { id: \\\"start\\\", label: \\\"Start\\\", shape: \\\"round\\\" },\\n { id: \\\"check\\\", label: \\\"Authorized?\\\", shape: \\\"diamond\\\" },\\n { id: \\\"ok\\\", label: \\\"Continue\\\" },\\n { id: \\\"denied\\\", label: \\\"Reject\\\", shape: \\\"round\\\" },\\n ]}\\n edges={[\\n { source: \\\"start\\\", target: \\\"check\\\" },\\n { source: \\\"check\\\", target: \\\"ok\\\", label: \\\"yes\\\" },\\n { source: \\\"check\\\", target: \\\"denied\\\", label: \\\"no\\\" },\\n ]}\\n/>\",\n\t\t\tcomposition: [\"flowchart\", \"decision\", \"branching\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Horizontal pipeline with click handler\",\n\t\t\tdescription: \"Left-to-right ETL stages.\",\n\t\t\tcode:\n\t\t\t\t\"<Flowchart\\n direction=\\\"horizontal\\\"\\n nodes={stages}\\n edges={transitions}\\n onNodeClick={(n) => router.push(`/stages/${n.id}`)}\\n/>\",\n\t\t\tcomposition: [\"flowchart\", \"horizontal\", \"pipeline\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render structured process / decision / pipeline diagrams from typed application data — onboarding flows, decision trees, ETL pipelines, agent step-graphs. Use when consumers want an SVG without the bundle cost of `<Diagram>` (Mermaid) or the free-form interaction of `<Canvas>` (ReactFlow).\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for cyclic graphs (use Canvas — Flowchart's topological layout assumes a DAG). Don't use when consumers want to drag nodes around (use Canvas). Don't use when the diagram source is a Mermaid string from an LLM (use Diagram).\",\n\t\tcommonMistakes: [\n\t\t\t\"Cycles in the edge graph — `computeRanks` short-circuits cycles to rank 0, which produces a degenerate layout. Validate the DAG upstream\",\n\t\t\t\"An edge whose source or target id is missing from `nodes` — the edge is silently skipped. Validate ids upstream\",\n\t\t\t\"Too many nodes at the same rank — the cross-axis spacing collapses. Either provide explicit `rank` overrides to balance the layout, or grow the SVG width\",\n\t\t\t\"Mutating nodes/edges in place between renders — the layout pass treats inputs as immutable and re-runs on identity change\",\n\t\t],\n\t\trelatedComponents: [\"sankey\", \"funnel\", \"diagram\", \"canvas\", \"mind-map\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing node and edge counts. For agent outputs, also expose a parallel ordered list (or tree) of nodes-by-rank so screen-reader users get the flow without relying on visual position.\",\n\t\ttokenBudget: 380,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"flowchart\", \"flow\", \"dag\", \"process\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const vennSchema: ComponentSchemaDefinition = {\n\tname: \"venn\",\n\tdisplayName: \"Venn\",\n\tdescription:\n\t\t\"Set-overlap diagram for 2 or 3 sets. Pure SVG; no heavy peer dep. Shows categorical overlap (which sets intersect) — NOT exact intersection cardinality (use an Euler-diagram solver for that).\",\n\tcategory: \"artifact\",\n\tsubcategory: \"relational\",\n\tprops: [\n\t\t{\n\t\t\tname: \"sets\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label, value? }. Must have 2 or 3 entries; other counts render a friendly fallback.\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 360,\n\t\t\tdescription: \"Pixel size of the rendered SVG (it's square).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onSetClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked VennSet.\",\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 on the SVG element.\",\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: [\"primary\", \"accent\", \"secondary\", \"foreground\", \"muted-foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Three-set Venn\",\n\t\t\tdescription: \"Linux / Mac / Windows overlap.\",\n\t\t\tcode:\n\t\t\t\t\"<Venn sets={[\\n { id: \\\"linux\\\", label: \\\"Linux\\\" },\\n { id: \\\"mac\\\", label: \\\"Mac\\\" },\\n { id: \\\"windows\\\", label: \\\"Windows\\\" },\\n]} />\",\n\t\t\tcomposition: [\"venn\", \"set-overlap\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Two-set Venn with values\",\n\t\t\tdescription: \"Show set sizes alongside labels.\",\n\t\t\tcode:\n\t\t\t\t\"<Venn sets={[\\n { id: \\\"paid\\\", label: \\\"Paid\\\", value: 1200 },\\n { id: \\\"active\\\", label: \\\"Active\\\", value: 480 },\\n]} />\",\n\t\t\tcomposition: [\"venn\", \"with-values\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Show that two or three categorical sets overlap — feature support matrices (Linux ∩ Mac), cohort intersections (paid ∩ active), tag overlap. Use when the SHAPE of the overlap is the message.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use to communicate exact intersection sizes — circles are not area-scaled (use an Euler-diagram tool with a layout solver). Don't use for >3 sets — it stops being a Venn. Don't use for hierarchical / weighted / sequential relationships (use TreeMap, Sankey, Flowchart).\",\n\t\tcommonMistakes: [\n\t\t\t\"Implying intersection cardinality from circle area — Venn circles are fixed-size visual references. The component does NOT solve for area-correct overlap regions; the schema documents this clearly\",\n\t\t\t\"Passing 4+ sets — strict Venn diagrams with 4+ sets aren't visually tractable. The component renders a friendly fallback in that case\",\n\t\t\t\"Mutating the sets array in place between renders — the layout pass is memoized on identity\",\n\t\t],\n\t\trelatedComponents: [\"chord\", \"matrix\", \"arc\", \"tree-map\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> listing the participating set labels. Interactive sets carry role=\\\"button\\\", tabIndex, and Enter/Space activation. For agent outputs, also expose a parallel list of sets so screen-reader users get the labels without relying on the visual.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"venn\", \"set-overlap\", \"relational\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const chordSchema: ComponentSchemaDefinition = {\n\tname: \"chord\",\n\tdisplayName: \"Chord\",\n\tdescription:\n\t\t\"Chord diagram. Nodes sit on a ring; ribbons inside encode weighted bidirectional relationships. Use for trade flows, migration, citation networks — \\\"A relates to B with weight w\\\" at scale.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"relational\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label }. Order matches matrix rows/columns.\",\n\t\t},\n\t\t{\n\t\t\tname: \"matrix\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Square N×N matrix of weights. matrix[i][j] = flow from node i to node j.\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 480,\n\t\t\tdescription: \"Pixel size of the rendered SVG (it's square).\",\n\t\t},\n\t\t{\n\t\t\tname: \"padAngle\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 0.04,\n\t\t\tdescription: \"Padding (in radians) between adjacent ring segments.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onChordHover\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the hovered ribbon's { source, target, value } (or null when hover ends).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onNodeClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked ChordNode.\",\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 on the SVG element.\",\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\theavyPeer: [\n\t\t\t{\n\t\t\t\tname: \"d3-chord\",\n\t\t\t\tversion: \"^3.0.1\",\n\t\t\t\tbundleKbGzip: 3,\n\t\t\t\treason: \"Computes the chord layout (group ranges + chord pairs from the input matrix)\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: \"d3-shape\",\n\t\t\t\tversion: \"^3.2.0\",\n\t\t\t\tbundleKbGzip: 6,\n\t\t\t\treason: \"Generates the SVG arc and ribbon paths (already a peer of Sunburst)\",\n\t\t\t},\n\t\t],\n\t},\n\ttokensUsed: [\"primary\", \"accent\", \"secondary\", \"muted\", \"background\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Trade flow between four regions\",\n\t\t\tdescription: \"Bidirectional weighted relationships.\",\n\t\t\tcode:\n\t\t\t\t\"<Chord\\n nodes={[\\n { id: \\\"americas\\\", label: \\\"Americas\\\" },\\n { id: \\\"emea\\\", label: \\\"EMEA\\\" },\\n { id: \\\"apac\\\", label: \\\"APAC\\\" },\\n { id: \\\"africa\\\", label: \\\"Africa\\\" },\\n ]}\\n matrix={[\\n [0, 12, 8, 1],\\n [10, 0, 5, 2],\\n [7, 4, 0, 3],\\n [1, 1, 2, 0],\\n ]}\\n/>\",\n\t\t\tcomposition: [\"chord\", \"trade-flow\", \"weighted\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Hover for ribbon details\",\n\t\t\tdescription: \"Wire `onChordHover` to populate a tooltip.\",\n\t\t\tcode:\n\t\t\t\t\"<Chord nodes={people} matrix={interactions} onChordHover={(c) => setActive(c)} />\",\n\t\t\tcomposition: [\"chord\", \"interactive\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize bidirectional weighted relationships among a small set of entities (typically 4–12). Trade flows, migration corridors, citation/hyperlink networks, character interactions in narratives.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for hierarchical relationships (use TreeMap, Sunburst, OrgChart). Don't use for unidirectional flows where direction matters (use Sankey). Don't use for >~15 nodes — ribbons stack and become unreadable. Don't use for sparse matrices — most ribbons collapse to invisible.\",\n\t\tcommonMistakes: [\n\t\t\t\"Non-square matrix — d3-chord requires N×N where N matches `nodes.length`. Validate upstream\",\n\t\t\t\"Asymmetric weights expected to render symmetrically — the component honors per-direction weights as given (matrix[i][j] vs matrix[j][i])\",\n\t\t\t\"Mutating `nodes` / `matrix` between renders — the layout pass is memoized on identity. Memoize the matrix\",\n\t\t\t\"NaN entries in the matrix — the inline `descending` comparator treats NaN as equal (vs d3.descending which returns NaN). Sort positions for NaN entries are unstable; sanitize upstream\",\n\t\t\t\"Expecting `onChordHover.value` — the callback now exposes `{ sourceValue, targetValue }` so consumers see both directions of an asymmetric flow at once\",\n\t\t],\n\t\trelatedComponents: [\"sankey\", \"matrix\", \"arc\", \"venn\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing node and ribbon counts. Interactive ribbons and node arcs declare role=\\\"button\\\", tabIndex, and Enter/Space activation. For agent outputs, also expose a parallel adjacency table so screen-reader users get the matrix without relying on the visual.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"chord\", \"relational\", \"weighted\", \"circular\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const arcSchema: ComponentSchemaDefinition = {\n\tname: \"arc\",\n\tdisplayName: \"Arc\",\n\tdescription:\n\t\t\"Arc diagram. Nodes lie on a horizontal baseline; relationships are drawn as semicircle arcs above. Pure SVG; no heavy peer dep. Use when node ORDER matters (sequence, time, story position).\",\n\tcategory: \"artifact\",\n\tsubcategory: \"relational\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label, value? }. Display order along the baseline matches array order.\",\n\t\t},\n\t\t{\n\t\t\tname: \"edges\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { source, target, value? }. Edges with missing source/target are skipped.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 720,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 360,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"nodeRadius\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 5,\n\t\t\tdescription: \"Pixel radius of each node circle.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onEdgeHover\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the hovered ArcEdge (or null when hover ends).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onNodeClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked ArcNode.\",\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 on the SVG element.\",\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: [\"primary\", \"background\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Character co-occurrence\",\n\t\t\tdescription: \"Nodes in narrative order, arcs connect characters in the same chapter.\",\n\t\t\tcode:\n\t\t\t\t\"<Arc\\n nodes={characters}\\n edges={cooccurrences}\\n onEdgeHover={(e) => setActive(e)}\\n/>\",\n\t\t\tcomposition: [\"arc\", \"narrative\", \"cooccurrence\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Train route transfer connections\",\n\t\t\tdescription: \"Stations on a baseline; arcs show transfer connections.\",\n\t\t\tcode:\n\t\t\t\t\"<Arc\\n nodes={stations}\\n edges={transfers}\\n/>\",\n\t\t\tcomposition: [\"arc\", \"transit\", \"sequence\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize relationships among entities WHERE THE ORDER OF ENTITIES IS MEANINGFUL — narrative co-occurrence (chapters), transit transfer points (route order), genome interactions (chromosomal position), citation networks (publication time). Arcs encode pair relationships without breaking the linear node order.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when node order is arbitrary (use Chord — it places nodes on a ring with no implied order). Don't use for hierarchical relationships (use TreeMap, Sunburst, OrgChart). Don't use for >50 nodes — arcs overlap heavily; consider Matrix.\",\n\t\tcommonMistakes: [\n\t\t\t\"Confusing Arc with Chord — Chord = ring (no order); Arc = baseline (order matters)\",\n\t\t\t\"Edge source/target id missing from `nodes` — silently skipped. Validate ids upstream\",\n\t\t\t\"Mutating nodes / edges between renders — the layout pass is memoized on identity\",\n\t\t],\n\t\trelatedComponents: [\"chord\", \"matrix\", \"venn\", \"sankey\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing node and edge counts. Interactive nodes/edges declare role=\\\"button\\\", tabIndex, and Enter/Space activation. For agent outputs, also expose a parallel ordered list of nodes plus an adjacency table.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"arc\", \"relational\", \"sequence\", \"ordered\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const matrixSchema: ComponentSchemaDefinition = {\n\tname: \"matrix\",\n\tdisplayName: \"Matrix\",\n\tdescription:\n\t\t\"Adjacency-matrix diagram. Square grid where cell color intensity encodes the relationship from row to column. Pure SVG; no heavy peer dep. Best for dense graphs that turn into hairballs in node-link form.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"relational\",\n\tprops: [\n\t\t{\n\t\t\tname: \"nodes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label }. Used as both rows AND columns. Order matches `matrix` rows/columns.\",\n\t\t},\n\t\t{\n\t\t\tname: \"matrix\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Square N×N matrix. matrix[i][j] = relationship from node i to node j. Renamed from `values` to avoid colliding with the SVG `values` animation attribute.\",\n\t\t},\n\t\t{\n\t\t\tname: \"size\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 480,\n\t\t\tdescription: \"Pixel size of the rendered SVG (it's square).\",\n\t\t},\n\t\t{\n\t\t\tname: \"labelMargin\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 80,\n\t\t\tdescription: \"Pixel reserved for row/column labels along the top and left edges.\",\n\t\t},\n\t\t{\n\t\t\tname: \"showValues\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t\tdescription: \"Show numeric values inside cells when the cell is large enough (~28px+).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onCellHover\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the hovered cell's { row, col, value } (or null when hover ends).\",\n\t\t},\n\t\t{\n\t\t\tname: \"onCellClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked cell's { row, col, value }.\",\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 on the SVG element.\",\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: [\"primary\", \"background\", \"foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Trade flow matrix\",\n\t\t\tdescription: \"Cell intensity reflects flow from row region to column region.\",\n\t\t\tcode:\n\t\t\t\t\"<Matrix\\n nodes={regions}\\n matrix={tradeFlow}\\n onCellHover={(c) => setActive(c)}\\n/>\",\n\t\t\tcomposition: [\"matrix\", \"trade-flow\", \"heatmap\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Confusion matrix for a classifier\",\n\t\t\tdescription: \"Predicted vs actual labels.\",\n\t\t\tcode:\n\t\t\t\t\"<Matrix\\n nodes={classes}\\n matrix={confusion}\\n showValues={true}\\n/>\",\n\t\t\tcomposition: [\"matrix\", \"confusion\", \"ml\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize a dense relationship between many pairs of entities — adjacency matrices, confusion matrices, correlation matrices, trade-flow matrices, citation-count matrices. Scales gracefully to ~100 nodes where node-link diagrams degenerate. Use when SCALE matters more than seeing individual edges.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for sparse relationships (most cells empty — Sankey or Arc surfaces the actual edges better). Don't use when the user needs to follow paths from node to node (use Canvas, Flowchart). Don't use for hierarchical data (use TreeMap, Sunburst).\",\n\t\tcommonMistakes: [\n\t\t\t\"Non-square `matrix` — the component reads matrix[i][j], so missing rows or short rows render as zero. Validate dimensions upstream\",\n\t\t\t\"Mismatched length: `nodes.length` ≠ `matrix.length` — extra nodes get blank rows; extra rows are ignored. Validate upstream\",\n\t\t\t\"Mutating `nodes` / `matrix` between renders — the layout pass is memoized on identity\",\n\t\t\t\"Asymmetric values expected to render symmetrically — the component honors per-direction values exactly as given\",\n\t\t\t\"`labelMargin` smaller than the longest node label's pixel width — labels overflow the SVG. Set `labelMargin` ≥ ~0.75× longestLabelPx, or shorten labels upstream\",\n\t\t],\n\t\trelatedComponents: [\"chord\", \"arc\", \"venn\", \"sankey\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing dimensions. Interactive cells declare role=\\\"button\\\", tabIndex, and Enter/Space activation; hover/focus fire callback symmetrically. For agent outputs, also expose a parallel <table> so screen-reader users get the values without relying on color intensity.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"matrix\", \"adjacency\", \"relational\", \"heatmap\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const timeAxisSchema: ComponentSchemaDefinition = {\n\tname: \"time-axis\",\n\tdisplayName: \"TimeAxis\",\n\tdescription:\n\t\t\"Events plotted along a horizontal time axis. Pure SVG; no heavy peer dep. Distinct from the existing event-list `<Timeline>` — TimeAxis encodes elapsed time as horizontal distance, so the *gap between events* is the message.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"time\",\n\tprops: [\n\t\t{\n\t\t\tname: \"events\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label, date, category? }. `date` accepts Date / ISO string / epoch ms.\",\n\t\t},\n\t\t{\n\t\t\tname: \"start\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional explicit axis start. Auto-derived from `events` if omitted.\",\n\t\t},\n\t\t{\n\t\t\tname: \"end\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional explicit axis end. Auto-derived from `events` if omitted.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 720,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 200,\n\t\t\tdescription: \"SVG pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"tickCount\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 6,\n\t\t\tdescription: \"Number of axis ticks to show.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onEventClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked TimeAxisEvent.\",\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 on the SVG element.\",\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: [\"primary\", \"background\", \"foreground\", \"muted-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Release timeline\",\n\t\t\tdescription: \"Major version releases plotted across a year.\",\n\t\t\tcode:\n\t\t\t\t\"<TimeAxis events={[\\n { id: \\\"v1\\\", label: \\\"v1.0\\\", date: \\\"2025-01-15\\\" },\\n { id: \\\"v2\\\", label: \\\"v2.0\\\", date: \\\"2025-04-20\\\" },\\n { id: \\\"v3\\\", label: \\\"v3.0\\\", date: \\\"2025-09-10\\\" },\\n]} />\",\n\t\t\tcomposition: [\"time-axis\", \"release\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Incident frequency with explicit range\",\n\t\t\tdescription: \"Pin the axis to the quarter to compare incident clustering.\",\n\t\t\tcode:\n\t\t\t\t\"<TimeAxis\\n start=\\\"2025-07-01\\\"\\n end=\\\"2025-09-30\\\"\\n events={incidents}\\n onEventClick={(e) => router.push(`/incidents/${e.id}`)}\\n/>\",\n\t\t\tcomposition: [\"time-axis\", \"incidents\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Plot events along a horizontal time axis where the *gap between events* matters — release cadence, incident frequency, sparse-then-dense activity, project milestones across a year. Auto-stacks overlapping events into rows.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use when only event ORDER matters and absolute dates are secondary (use the existing event-list `<Timeline>` in `components/`). Don't use for tasks with duration (use Gantt). Don't use for actor-message interactions (use Sequence).\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing dates as strings in non-ISO formats — `new Date(\\\"01/02/2025\\\")` is locale-dependent. Pass ISO strings (`\\\"2025-01-02\\\"`), Date objects, or epoch ms\",\n\t\t\t\"Forgetting to set `start`/`end` when comparing two TimeAxis renders side-by-side — auto-range scales each axis to its own events, which makes magnitudes incomparable. Pin the range explicitly\",\n\t\t\t\"Mutating `events` between renders — the layout pass is memoized on identity\",\n\t\t\t\"Confusing TimeAxis with the existing `<Timeline>` in `components/` — they coexist intentionally; pick by whether elapsed-time spacing matters\",\n\t\t],\n\t\trelatedComponents: [\"gantt\", \"sequence\", \"timeline\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing event count and axis range. Interactive event markers declare role=\\\"button\\\", tabIndex, and Enter/Space activation. For agent outputs, also expose a parallel chronologically-ordered list of label/date pairs.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"time-axis\", \"time\", \"events\", \"chronological\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const ganttSchema: ComponentSchemaDefinition = {\n\tname: \"gantt\",\n\tdisplayName: \"Gantt\",\n\tdescription:\n\t\t\"Gantt chart — tasks as horizontal bars across a time axis with optional dependency arrows and progress fills. Pure SVG; no heavy peer dep.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"time\",\n\tprops: [\n\t\t{\n\t\t\tname: \"tasks\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label, start, end, progress?, dependencies? }. `start`/`end` accept Date / ISO string / epoch ms.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 800,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"rowHeight\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 32,\n\t\t\tdescription: \"Pixel height of each task row.\",\n\t\t},\n\t\t{\n\t\t\tname: \"labelMargin\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 140,\n\t\t\tdescription: \"Pixel reserved on the left for task labels.\",\n\t\t},\n\t\t{\n\t\t\tname: \"tickCount\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 6,\n\t\t\tdescription: \"Number of axis ticks to show across the top.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onTaskClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked GanttTask.\",\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 on the SVG element.\",\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: [\"primary\", \"foreground\", \"muted-foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Project schedule with dependencies\",\n\t\t\tdescription: \"Sequential tasks with dependency arrows and a progress fill.\",\n\t\t\tcode:\n\t\t\t\t\"<Gantt tasks={[\\n { id: \\\"design\\\", label: \\\"Design\\\", start: \\\"2025-01-01\\\", end: \\\"2025-01-15\\\", progress: 1 },\\n { id: \\\"build\\\", label: \\\"Build\\\", start: \\\"2025-01-10\\\", end: \\\"2025-02-20\\\", progress: 0.6, dependencies: [\\\"design\\\"] },\\n { id: \\\"ship\\\", label: \\\"Ship\\\", start: \\\"2025-02-15\\\", end: \\\"2025-02-28\\\", dependencies: [\\\"build\\\"] },\\n]} />\",\n\t\t\tcomposition: [\"gantt\", \"schedule\", \"dependencies\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Sprint board across two weeks\",\n\t\t\tdescription: \"Click a bar to open the task detail.\",\n\t\t\tcode:\n\t\t\t\t\"<Gantt\\n tasks={sprint}\\n onTaskClick={(t) => router.push(`/tasks/${t.id}`)}\\n/>\",\n\t\t\tcomposition: [\"gantt\", \"sprint\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize project schedules where each task has a START and END date, plus optional dependencies and progress. Sprint boards, release plans, ETL job schedules, content publishing calendars.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for point events without duration (use TimeAxis). Don't use for cyclic / recurring tasks (Gantt assumes a DAG of dependencies). Don't use for actor-message interactions (use Sequence). Don't use when the task list isn't ordered top-to-bottom by intended display order — Gantt trusts the array order.\",\n\t\tcommonMistakes: [\n\t\t\t\"`end` before `start` — produces zero-or-negative width bars. Validate ranges upstream\",\n\t\t\t\"Dependency cycles — `dependencies: ['x']` where `x` transitively depends on the current task. The component still renders bars, but the arrow paths cross awkwardly. Validate the dependency DAG upstream\",\n\t\t\t\"Missing dependency target — `dependencies: ['ghost']` where `ghost` isn't in `tasks`. The arrow is silently skipped\",\n\t\t\t\"Passing dates as locale-dependent strings (`\\\"01/02/2025\\\"`) — pass ISO (`\\\"2025-01-02\\\"`), Date, or epoch ms\",\n\t\t\t\"Mutating tasks between renders — the layout pass is memoized on identity\",\n\t\t],\n\t\trelatedComponents: [\"time-axis\", \"sequence\", \"timeline\", \"flowchart\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing task count and date range. Interactive task bars declare role=\\\"button\\\", tabIndex, and Enter/Space activation. The aria-label includes label, date range, and progress percent. For agent outputs, also expose a parallel ordered list of tasks with their dates.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"gantt\", \"time\", \"schedule\", \"tasks\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const sequenceSchema: ComponentSchemaDefinition = {\n\tname: \"sequence\",\n\tdisplayName: \"Sequence\",\n\tdescription:\n\t\t\"UML-style sequence diagram. Actors as columns with vertical lifelines; messages as horizontal arrows in declaration order. Pure SVG; no heavy peer dep.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"time\",\n\tprops: [\n\t\t{\n\t\t\tname: \"actors\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label }. Display order matches array order (left-to-right columns).\",\n\t\t},\n\t\t{\n\t\t\tname: \"messages\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { from, to, label?, type? }. Chronological order matches array order (top-to-bottom). Messages whose `from` or `to` actor id is missing are silently skipped.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 720,\n\t\t\tdescription: \"SVG pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"headerHeight\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 40,\n\t\t\tdescription: \"Pixel height of each actor header.\",\n\t\t},\n\t\t{\n\t\t\tname: \"messageGap\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 36,\n\t\t\tdescription: \"Pixel vertical gap between consecutive messages.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onActorClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked SequenceActor.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onMessageClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the clicked SequenceMessage.\",\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 on the SVG element.\",\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: [\"card\", \"border\", \"foreground\", \"muted-foreground\", \"background\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Signup flow\",\n\t\t\tdescription: \"User → API → DB with return arrows.\",\n\t\t\tcode:\n\t\t\t\t\"<Sequence\\n actors={[\\n { id: \\\"user\\\", label: \\\"User\\\" },\\n { id: \\\"api\\\", label: \\\"API\\\" },\\n { id: \\\"db\\\", label: \\\"DB\\\" },\\n ]}\\n messages={[\\n { from: \\\"user\\\", to: \\\"api\\\", label: \\\"POST /signup\\\" },\\n { from: \\\"api\\\", to: \\\"db\\\", label: \\\"INSERT user\\\" },\\n { from: \\\"db\\\", to: \\\"api\\\", label: \\\"ok\\\", type: \\\"return\\\" },\\n { from: \\\"api\\\", to: \\\"user\\\", label: \\\"201 Created\\\", type: \\\"return\\\" },\\n ]}\\n/>\",\n\t\t\tcomposition: [\"sequence\", \"api-flow\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Self-call (loopback) message\",\n\t\t\tdescription: \"An actor calling itself renders as a loopback arrow.\",\n\t\t\tcode:\n\t\t\t\t\"<Sequence\\n actors={[{ id: \\\"worker\\\", label: \\\"Worker\\\" }]}\\n messages={[{ from: \\\"worker\\\", to: \\\"worker\\\", label: \\\"retry\\\" }]}\\n/>\",\n\t\t\tcomposition: [\"sequence\", \"self-call\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Visualize WHO talks to WHO and IN WHAT ORDER — API request flows, distributed-system protocols, agent tool-call sequences, OAuth dance, message-queue choreography. Use when the order and direction of messages between actors is the message.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for branching process diagrams (use Flowchart). Don't use for events along a real time axis (use TimeAxis). Don't use for tasks with duration (use Gantt). Don't use for >~8 actors — columns become too narrow to read messages on.\",\n\t\tcommonMistakes: [\n\t\t\t\"`from` or `to` referencing an id missing from `actors` — the message is silently skipped. Validate ids upstream\",\n\t\t\t\"Mutating actors / messages between renders — the layout pass is memoized on identity\",\n\t\t\t\"Reordering `actors` to fix layout while keeping message ordering — that flips the visual flow direction. Order actors by their natural left-to-right reading order\",\n\t\t\t\"Using `type: \\\"return\\\"` for forward-going messages — the dashed style implies a reply, so confused readers expect a prior outgoing message\",\n\t\t],\n\t\trelatedComponents: [\"flowchart\", \"time-axis\", \"gantt\", \"canvas\", \"diagram\"],\n\t\taccessibilityNotes:\n\t\t\t\"The SVG carries role=\\\"img\\\" with a <title> and <desc> summarizing actor and message counts. Interactive actor headers and message arrows declare role=\\\"button\\\", tabIndex, and Enter/Space activation. The aria-label on each message includes its index, source/target labels, and content. For agent outputs, also expose a parallel ordered list of messages with their from/to/label triples.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"diagram\", \"sequence\", \"uml\", \"time\", \"messaging\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const flashcardSchema: ComponentSchemaDefinition = {\n\tname: \"flashcard\",\n\tdisplayName: \"Flashcard\",\n\tdescription:\n\t\t\"Front/back card with a 3D flip animation on click. Pure CSS 3D transform; no animation peer. Headless on content — front and back accept any ReactNode. Pairs with Deck for session-level paging and SpacedRepetition for confidence rating.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"study\",\n\tprops: [\n\t\t{\n\t\t\tname: \"front\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Content of the front face.\",\n\t\t},\n\t\t{\n\t\t\tname: \"back\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Content of the back face.\",\n\t\t},\n\t\t{\n\t\t\tname: \"defaultFlipped\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Uncontrolled initial flipped state.\",\n\t\t},\n\t\t{\n\t\t\tname: \"flipped\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Controlled flipped state. When set, internal state is ignored.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onFlipChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the new flipped value when the user toggles.\",\n\t\t},\n\t\t{\n\t\t\tname: \"width\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 360,\n\t\t\tdescription: \"Pixel width.\",\n\t\t},\n\t\t{\n\t\t\tname: \"height\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 240,\n\t\t\tdescription: \"Pixel height.\",\n\t\t},\n\t\t{\n\t\t\tname: \"flipDurationMs\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 500,\n\t\t\tdescription: \"Flip animation duration in ms. Set to 0 to disable the animation entirely.\",\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 on the outer container.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"front\",\n\t\t\tdescription: \"Front face of the card — typically the prompt / question / term.\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tname: \"back\",\n\t\t\tdescription: \"Back face of the card — typically the answer / definition.\",\n\t\t\trequired: true,\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: [\"card\", \"card-foreground\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Capital city flashcard\",\n\t\t\tdescription: \"Classic question-answer card with default uncontrolled state.\",\n\t\t\tcode: '<Flashcard front=\"What is the capital of France?\" back=\"Paris\" />',\n\t\t\tcomposition: [\"flashcard\", \"study\", \"qa\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Controlled flashcard inside a Deck\",\n\t\t\tdescription: \"Parent owns the flipped state to coordinate with progress tracking.\",\n\t\t\tcode:\n\t\t\t\t'<Flashcard\\n flipped={isFlipped}\\n onFlipChange={setFlipped}\\n front={term}\\n back={definition}\\n/>',\n\t\t\tcomposition: [\"flashcard\", \"controlled\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render a single self-test prompt where the user retrieves an answer from memory before checking. Vocabulary terms, formula reminders, anatomy labels, code snippets — anywhere the active-recall pattern (think first, then flip) fits.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for multiple-choice questions (use Quiz). Don't use for fill-in-the-blank (use Cloze). Don't use for image regions (use ImageOcclusion). Don't use as a generic content card with no flip semantics (use the existing `Card` in components/).\",\n\t\tcommonMistakes: [\n\t\t\t\"Putting the answer on the front — defeats the active-recall pattern. Front should be the prompt only\",\n\t\t\t\"Mixing controlled and uncontrolled use — pass either `flipped` (controlled) or rely on `defaultFlipped` + internal state, not both\",\n\t\t\t\"Wrapping a Flashcard in another clickable parent — Enter / Space activations bubble; the parent's onClick fires too. Stop propagation in the wrapper or move the click handler\",\n\t\t\t\"Sizing the card to 0×0 — the 3D transform requires non-zero dimensions to avoid the back face leaking through during the rotation\",\n\t\t],\n\t\trelatedComponents: [\"cloze\", \"quiz\", \"image-occlusion\", \"deck\", \"spaced-repetition\", \"card\"],\n\t\taccessibilityNotes:\n\t\t\t\"The card declares role=\\\"button\\\", tabIndex=0, aria-pressed reflecting flipped state, and an aria-label that announces the current side. Enter and Space toggle the flip; Space's default page-scroll is preventDefaulted. Screen readers see both faces in DOM at all times — that's intentional so the back face is announced after the flip without a content swap.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"artifact\", \"study\", \"flashcard\", \"active-recall\", \"card\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const clozeSchema: ComponentSchemaDefinition = {\n\tname: \"cloze\",\n\tdisplayName: \"Cloze\",\n\tdescription:\n\t\t\"Cloze-deletion text — sentences with redacted spans the learner reveals one at a time (or all at once). Pure HTML; no heavy peer.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"study\",\n\tprops: [\n\t\t{\n\t\t\tname: \"parts\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Mixed array of string fragments and { hidden, id? } cloze tokens. Each `hidden` value is the text the learner has to recall.\",\n\t\t},\n\t\t{\n\t\t\tname: \"revealMode\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"click\",\n\t\t\tdescription:\n\t\t\t\t'\"click\" — reveals one blank at a time (default). \"all\" — adds a \"Reveal all\" toggle that flips every blank in one shot.',\n\t\t\tenumValues: [\"click\", \"all\"],\n\t\t},\n\t\t{\n\t\t\tname: \"onReveal\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the cumulative array of revealed blank ids whenever a blank toggles.\",\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 on the outer container.\",\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: [\"primary\", \"muted\", \"foreground\", \"background\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Single-blank biology fact\",\n\t\t\tdescription: \"Classic cloze with one redacted term.\",\n\t\t\tcode:\n\t\t\t\t'<Cloze parts={[\\n \"The mitochondria is the \",\\n { hidden: \"powerhouse\" },\\n \" of the cell.\",\\n]} />',\n\t\t\tcomposition: [\"cloze\", \"study\", \"fill-in\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Multi-blank with reveal-all\",\n\t\t\tdescription: \"Useful when consumers want a quick \\\"show me everything\\\" escape hatch.\",\n\t\t\tcode:\n\t\t\t\t'<Cloze\\n revealMode=\"all\"\\n parts={[\\n \"The capital of \",\\n { hidden: \"France\" },\\n \" is \",\\n { hidden: \"Paris\" },\\n \".\",\\n ]}\\n/>',\n\t\t\tcomposition: [\"cloze\", \"multi-blank\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render a sentence-level fill-in-the-blank where the learner can target ANY missing piece independently — vocabulary in context, formula completion, code snippets with redacted operators. Especially strong when the surrounding context is the cue.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for question-answer pairs (use Flashcard). Don't use for multiple-choice (use Quiz). Don't use for image labels (use ImageOcclusion). Don't use when blanks should be free-typed and graded — Cloze is reveal-only.\",\n\t\tcommonMistakes: [\n\t\t\t\"Putting too much text in a single hidden token — the redacted block becomes the entire sentence and there's no context left to cue recall. Keep hidden segments to 1–3 words\",\n\t\t\t\"Forgetting that string fragments matter — `parts: [{hidden:'a'},{hidden:'b'}]` produces two adjacent blanks with no surrounding text. The cue context lives in the string fragments between blanks\",\n\t\t\t\"Reusing the same explicit `id` across multiple blanks — they reveal together because revealed-state keys off id. Either omit `id` (auto-numbered with a non-collidable prefix) or give each blank a unique id\",\n\t\t\t\"Mutating `parts` between renders — the layout pass is memoized on identity\",\n\t\t\t\"Treating Cloze as anti-cheating — the hidden text always lives in the DOM (transparent + user-select:none) so screen readers can announce it after reveal. A determined sighted user can still inspect element. Cloze is a recall *aid*, not a *secret*\",\n\t\t],\n\t\trelatedComponents: [\"flashcard\", \"quiz\", \"image-occlusion\", \"deck\", \"spaced-repetition\"],\n\t\taccessibilityNotes:\n\t\t\t\"Each blank renders as a real <button> with type=\\\"button\\\", aria-pressed reflecting reveal state, and an aria-label that names the blank's index and total. The hidden text always lives in the DOM (transparent when unrevealed) so screen readers announce the answer once aria-pressed flips. Enter and Space activate via the native button behavior.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"artifact\", \"study\", \"cloze\", \"fill-in-the-blank\", \"active-recall\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const imageOcclusionSchema: ComponentSchemaDefinition = {\n\tname: \"image-occlusion\",\n\tdisplayName: \"ImageOcclusion\",\n\tdescription:\n\t\t\"Image with rectangular regions hidden behind opaque overlays. Click any region to reveal what's underneath. Pure HTML; no heavy peer. Coordinates are 0–1 fractions so the layout stays correct at any rendered size.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"study\",\n\tprops: [\n\t\t{\n\t\t\tname: \"src\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Image source URL.\",\n\t\t},\n\t\t{\n\t\t\tname: \"alt\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Alt text for the underlying image.\",\n\t\t},\n\t\t{\n\t\t\tname: \"regions\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription:\n\t\t\t\t\"Array of { id, x, y, width, height, label? }. All coords are 0–1 fractions of the rendered image.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onRegionReveal\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with the region id when a region is revealed (NOT when hidden again).\",\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 on the outer container.\",\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: [\"primary\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Anatomy diagram\",\n\t\t\tdescription: \"Heart cross-section with named chambers occluded.\",\n\t\t\tcode:\n\t\t\t\t'<ImageOcclusion\\n src=\"/anatomy/heart.png\"\\n alt=\"Cross-section of a human heart\"\\n regions={[\\n { id: \"lv\", x: 0.42, y: 0.55, width: 0.18, height: 0.22, label: \"Left ventricle\" },\\n { id: \"ra\", x: 0.58, y: 0.20, width: 0.16, height: 0.18, label: \"Right atrium\" },\\n ]}\\n/>',\n\t\t\tcomposition: [\"image-occlusion\", \"anatomy\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Code snippet with redacted operators\",\n\t\t\tdescription: \"Hide language operators and have the learner reveal them.\",\n\t\t\tcode:\n\t\t\t\t'<ImageOcclusion\\n src=\"/code/snippet.png\"\\n alt=\"JavaScript array map\"\\n regions={[\\n { id: \"op1\", x: 0.30, y: 0.10, width: 0.05, height: 0.08 },\\n ]}\\n onRegionReveal={(id) => track(id)}\\n/>',\n\t\t\tcomposition: [\"image-occlusion\", \"code\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Hide labels or sub-regions of a visual the learner needs to recall. Anatomy diagrams, geographic maps, code snippets, anatomical illustrations, mathematical figures — any image where the recall target is a region rather than the whole.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for text-only fill-in-the-blank (use Cloze). Don't use when the entire image is the answer (use Flashcard with the image on `back`). Don't use when regions overlap heavily — overlapping overlays interfere with click targets.\",\n\t\tcommonMistakes: [\n\t\t\t\"Passing pixel coordinates instead of fractions — `x: 168` instead of `x: 0.42`. The component warns in dev when any region's coords escape [0, 1]\",\n\t\t\t\"Region rectangles smaller than ~20px square — too tiny to hit on touch devices. Aim for ≥40 × 40px at the rendered image size\",\n\t\t\t\"Heavily overlapping regions — later array entries get higher z-index and catch the click; regions earlier in the array are visible but unclickable underneath. Order regions back-to-front (largest/outermost first, smallest/innermost last)\",\n\t\t\t\"Mutating the regions array between renders — react re-runs reveal state, but the input identity matters for any downstream memoization. Memoize the regions array\",\n\t\t],\n\t\trelatedComponents: [\"flashcard\", \"cloze\", \"quiz\", \"deck\", \"spaced-repetition\"],\n\t\taccessibilityNotes:\n\t\t\t\"Each overlay is a real <button> with type=\\\"button\\\", aria-pressed reflecting reveal state, and an aria-label that names the region's index, total, and label (when provided). The underlying <img> carries the user-supplied alt text. The decorative overlay container is aria-hidden so screen readers don't double-announce regions.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"study\", \"image-occlusion\", \"active-recall\", \"visual\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const quizSchema: ComponentSchemaDefinition = {\n\tname: \"quiz\",\n\tdisplayName: \"Quiz\",\n\tdescription:\n\t\t\"Single-question multiple-choice quiz with submit + reveal. After submit, each option is tagged data-state=\\\"correct|incorrect|missed\\\" so consumers can theme right / wrong / unselected-but-correct independently. Pure HTML; no heavy peer.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"study\",\n\tprops: [\n\t\t{\n\t\t\tname: \"question\",\n\t\t\ttype: \"ReactNode\",\n\t\t\trequired: true,\n\t\t\tdescription: \"The question prompt — accepts any rich content.\",\n\t\t},\n\t\t{\n\t\t\tname: \"options\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label, correct?, explanation? }. `correct: true` flags the right answer(s); `explanation` renders below the option after submit.\",\n\t\t},\n\t\t{\n\t\t\tname: \"selectionMode\",\n\t\t\ttype: \"enum\",\n\t\t\trequired: false,\n\t\t\tdefault: \"single\",\n\t\t\tdescription: '\"single\" — radio inputs (one pick); \"multi\" — checkboxes (zero or more picks).',\n\t\t\tenumValues: [\"single\", \"multi\"],\n\t\t},\n\t\t{\n\t\t\tname: \"submitLabel\",\n\t\t\ttype: \"string\",\n\t\t\trequired: false,\n\t\t\tdefault: \"Submit\",\n\t\t\tdescription: \"Custom Submit button text.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onAnswer\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with (selectedIds, allCorrect) on submit. `allCorrect` is true only when the picked set equals the correct set exactly (multi-select must include all correct AND nothing extra).\",\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 on the outer container.\",\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: [\"card\", \"card-foreground\", \"background\", \"border\", \"primary\", \"primary-foreground\", \"destructive\", \"muted\", \"muted-foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Single-answer geography\",\n\t\t\tdescription: \"Standard one-correct multiple choice.\",\n\t\t\tcode:\n\t\t\t\t'<Quiz\\n question=\"Which planet is closest to the sun?\"\\n options={[\\n { id: \"m\", label: \"Mercury\", correct: true },\\n { id: \"v\", label: \"Venus\" },\\n { id: \"e\", label: \"Earth\" },\\n { id: \"ma\", label: \"Mars\" },\\n ]}\\n/>',\n\t\t\tcomposition: [\"quiz\", \"single-answer\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Multi-answer with explanations\",\n\t\t\tdescription: \"Multiple correct options + per-option explanations after submit.\",\n\t\t\tcode:\n\t\t\t\t'<Quiz\\n question=\"Which planets are gas giants?\"\\n selectionMode=\"multi\"\\n options={[\\n { id: \"j\", label: \"Jupiter\", correct: true },\\n { id: \"v\", label: \"Venus\" },\\n { id: \"s\", label: \"Saturn\", correct: true, explanation: \"Saturn\\'s atmosphere is mostly H/He.\" },\\n ]}\\n/>',\n\t\t\tcomposition: [\"quiz\", \"multi-answer\", \"explanation\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render a single self-test question with N preset answers. Vocabulary multiple choice, fact-based questions, code-output predictions, comprehension checks. Use when answers are constrained to a finite set the consumer can author upfront.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for free-form recall (use Flashcard or Cloze). Don't use for image regions (use ImageOcclusion). Don't use for multi-question quizzes — Quiz is a single-question primitive; consumers compose their own state to chain multiple instances. Don't use when the answer is graded server-side after submit — Quiz reveals correctness immediately on submit, no async hook.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting `correct: true` on any option in multi-select mode — `allCorrect` will fire as `true` only if picked-set equals correct-set, so a quiz with no correct options reports allCorrect on an empty selection\",\n\t\t\t\"Putting the explanation on the wrong option — explanations are intentionally only shown for `correct` / `incorrect` / `missed` cells (not `unanswered`), so a learner sees the explanation for what they missed, what they got wrong, and what they got right\",\n\t\t\t\"Re-mounting the Quiz to reset state — that works, but it's cheaper to clear the parent's options key (or pass a controlled `selectedIds` prop in a future iteration)\",\n\t\t\t\"Long questions or labels exceeding ~60 characters — line-wrapping inside the option list shrinks the click target. Trim or break at a natural punctuation point\",\n\t\t],\n\t\trelatedComponents: [\"flashcard\", \"cloze\", \"image-occlusion\", \"deck\", \"spaced-repetition\", \"radio-group\", \"checkbox\"],\n\t\taccessibilityNotes:\n\t\t\t\"The options list declares role=\\\"radiogroup\\\" (single mode) or role=\\\"group\\\" (multi mode). Native <input type=\\\"radio|checkbox\\\"> handles keyboard navigation (arrow keys for radios, tab+space for checkboxes). The status line uses role=\\\"status\\\" + aria-live=\\\"polite\\\" so screen readers announce correctness after submit. Each option's data-state encodes correctness for theming AND offers a hook for screen-reader-only labels if a future iteration adds them.\",\n\t\ttokenBudget: 360,\n\t},\n\ttags: [\"artifact\", \"study\", \"quiz\", \"multiple-choice\", \"active-recall\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const compareTableSchema: ComponentSchemaDefinition = {\n\tname: \"compare-table\",\n\tdisplayName: \"CompareTable\",\n\tdescription:\n\t\t\"Side-by-side comparison table. Subjects are columns; attributes are rows; cells render the per-subject value for each attribute. Optional difference highlighting flags cells that diverge from the row's reference. Pure HTML; no heavy peer.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"study\",\n\tprops: [\n\t\t{\n\t\t\tname: \"subjects\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label }. Renders as columns; display order matches array order.\",\n\t\t},\n\t\t{\n\t\t\tname: \"attributes\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, label, values }. Renders as rows; `values` is a subjectId → ReactNode map. Missing keys render as \\\"—\\\".\",\n\t\t},\n\t\t{\n\t\t\tname: \"highlightDifferences\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"When true, cells whose value differs from the row's first non-empty cell get a subtle accent.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onCellClick\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with (subjectId, attributeId) when a body cell is clicked.\",\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 on the outer container.\",\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: [\"card\", \"border\", \"muted\", \"muted-foreground\", \"accent\", \"accent-foreground\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Operating system comparison\",\n\t\t\tdescription: \"Three subjects, two attributes, with difference highlighting.\",\n\t\t\tcode:\n\t\t\t\t'<CompareTable\\n highlightDifferences\\n subjects={[\\n { id: \"linux\", label: \"Linux\" },\\n { id: \"mac\", label: \"Mac\" },\\n { id: \"win\", label: \"Windows\" },\\n ]}\\n attributes={[\\n { id: \"kernel\", label: \"Kernel\", values: { linux: \"Linux\", mac: \"Darwin\", win: \"NT\" } },\\n { id: \"fs\", label: \"Default FS\", values: { linux: \"ext4\", mac: \"APFS\", win: \"NTFS\" } },\\n ]}\\n/>',\n\t\t\tcomposition: [\"compare-table\", \"comparison\", \"feature-matrix\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Vocabulary pairs\",\n\t\t\tdescription: \"Two-column term ↔ translation table.\",\n\t\t\tcode:\n\t\t\t\t'<CompareTable\\n subjects={[\\n { id: \"en\", label: \"English\" },\\n { id: \"es\", label: \"Spanish\" },\\n ]}\\n attributes={[\\n { id: \"1\", label: \"Hello\", values: { en: \"Hello\", es: \"Hola\" } },\\n { id: \"2\", label: \"Thank you\", values: { en: \"Thank you\", es: \"Gracias\" } },\\n ]}\\n/>',\n\t\t\tcomposition: [\"compare-table\", \"vocabulary\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Compare 2–6 subjects across 2–20 attributes when the user wants to see same-row differences at a glance. Vocab translations, OS feature matrices, framework comparisons, before/after, drug-vs-drug. Use `highlightDifferences` whenever the row's *divergence* is the message.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for 1 subject (use a regular description list). Don't use for >6 subjects — columns shrink past readability; use a card grid instead. Don't use when cells contain rich nested layouts (consider DataTable). Don't use for a single learner-recall task — use Flashcard, Cloze, or Quiz instead.\",\n\t\tcommonMistakes: [\n\t\t\t\"Including a value with a subjectId that isn't in the subjects array — the cell silently doesn't render. The component warns in dev when this happens\",\n\t\t\t\"Expecting `highlightDifferences` to compare ReactElement cells — diff is skipped automatically when either the raw value or the row's reference is non-primitive (object). Cells render but never flag as `data-differs=\\\"true\\\"`. Stringify upstream if you need diffing on rich content\",\n\t\t\t\"Mutating subjects / attributes between renders — React re-renders fine, but downstream memoization in consumer code may cache stale references. Rebuild the arrays from immutable sources\",\n\t\t\t\"Long labels in subject headers (>20 chars) — they wrap and inflate the row height across the whole table. Use abbreviations + tooltips when needed\",\n\t\t],\n\t\trelatedComponents: [\"flashcard\", \"quiz\", \"cloze\", \"data-table\", \"table\"],\n\t\taccessibilityNotes:\n\t\t\t\"Renders a real <table> with semantic <thead>/<tbody>/<th scope=\\\"col|row\\\">/<td>. The first column is sticky so attribute labels stay visible during horizontal scroll on narrow viewports. Each cell carries data-subject-id and data-attribute-id for any consumer-driven aria-label or selection behavior. The diff-highlighted cells rely on color alone today — pair with a per-row screen-reader-only summary for AA-strict consumers.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"study\", \"compare-table\", \"comparison\", \"matrix\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const deckSchema: ComponentSchemaDefinition = {\n\tname: \"deck\",\n\tdisplayName: \"Deck\",\n\tdescription:\n\t\t\"Paged sequence of flashcards with optional shuffle, prev/next navigation, a progress bar, and a render slot for per-card SRS rating. Composes Flashcard internally.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"study\",\n\tprops: [\n\t\t{\n\t\t\tname: \"cards\",\n\t\t\ttype: \"object\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Array of { id, front, back }. Display order matches array order unless `shuffle` is set.\",\n\t\t},\n\t\t{\n\t\t\tname: \"shuffle\",\n\t\t\ttype: \"boolean\",\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t\tdescription: \"Initial shuffle. Order recomputes only when `cards` identity changes — not on every prev/next, so the user never gets re-shuffled mid-session.\",\n\t\t},\n\t\t{\n\t\t\tname: \"ratingSlot\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Optional render function called with the current card; renders below the deck. Used to compose SpacedRepetition under each card.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onCardChange\",\n\t\t\ttype: \"function\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Called with (index, card) whenever the active card changes (after prev / next).\",\n\t\t},\n\t\t{\n\t\t\tname: \"cardWidth\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 360,\n\t\t\tdescription: \"Pixel width of the inner Flashcard.\",\n\t\t},\n\t\t{\n\t\t\tname: \"cardHeight\",\n\t\t\ttype: \"number\",\n\t\t\trequired: false,\n\t\t\tdefault: 240,\n\t\t\tdescription: \"Pixel height of the inner Flashcard.\",\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 on the outer container.\",\n\t\t},\n\t],\n\tvariants: [],\n\tslots: [\n\t\t{\n\t\t\tname: \"ratingSlot\",\n\t\t\tdescription: \"Render-prop slot called with the current card; ideal for SpacedRepetition's onRate emission.\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\tdependencies: {\n\t\tnpm: [\"clsx\", \"tailwind-merge\"],\n\t\tinternal: [\"lib/utils\", \"artifacts/flashcard/flashcard\"],\n\t\tpeer: [\"react\", \"react-dom\"],\n\t},\n\ttokensUsed: [\"card\", \"background\", \"muted\", \"muted-foreground\", \"primary\", \"border\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Vocabulary deck with shuffle\",\n\t\t\tdescription: \"Three cards, shuffled on first render.\",\n\t\t\tcode:\n\t\t\t\t'<Deck\\n shuffle\\n cards={[\\n { id: \"1\", front: \"Hello\", back: \"Hola\" },\\n { id: \"2\", front: \"Thank you\", back: \"Gracias\" },\\n { id: \"3\", front: \"Goodbye\", back: \"Adiós\" },\\n ]}\\n/>',\n\t\t\tcomposition: [\"deck\", \"vocabulary\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Deck composed with SpacedRepetition rating\",\n\t\t\tdescription: \"Each card surfaces an Anki-style rating row after flip.\",\n\t\t\tcode:\n\t\t\t\t'<Deck\\n cards={cards}\\n ratingSlot={(card) => (\\n <SpacedRepetition cardId={card.id} onRate={(r) => save(r, card.id)} />\\n )}\\n/>',\n\t\t\tcomposition: [\"deck\", \"srs\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"Render an ordered (or shuffled) study session of N flashcards with prev/next navigation and progress feedback. Use when the user is grinding through a deck end-to-end. Pair with SpacedRepetition via `ratingSlot` for Anki-style review sessions.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use for a single card (just render Flashcard directly). Don't use when navigation is non-linear (skip-around, jump-to-id) — Deck is strictly sequential. Don't use for grading multiple-question quizzes (use Quiz directly + your own state). Don't use when shuffle should be reproducible across sessions — `Math.random()` is non-seeded; pre-shuffle in your data layer and pass `shuffle={false}`.\",\n\t\tcommonMistakes: [\n\t\t\t\"Toggling `shuffle` mid-session — the deck recomputes order and resets to card 1. Set `shuffle` once at mount or pre-shuffle in the consumer's data layer\",\n\t\t\t\"Mutating the cards array in place — internal layout treats `cards` as immutable; spread or rebuild from source on each change\",\n\t\t\t\"Card ids that aren't unique — React's reconciliation depends on the unique id key for Flashcard. Duplicate ids cause stale flip state to leak between cards\",\n\t\t\t\"Putting interactive content inside `front` / `back` that's also clickable — those click events bubble to Flashcard's flip handler. Stop propagation in the inner click handler\",\n\t\t],\n\t\trelatedComponents: [\"flashcard\", \"spaced-repetition\", \"cloze\", \"quiz\", \"progress\"],\n\t\taccessibilityNotes:\n\t\t\t\"Prev / Next buttons declare aria-label including current and total positions (\\\"Next card. Currently 3 of 12.\\\"). The progress bar is aria-hidden because the same information is in the visible '3 / 12' label and in the button labels. The inner Flashcard owns its own ARIA semantics; flipping it via Enter/Space works while the deck nav buttons remain accessible via tab order.\",\n\t\ttokenBudget: 320,\n\t},\n\ttags: [\"artifact\", \"study\", \"deck\", \"flashcard\", \"session\"],\n};\n","import type { ComponentSchemaDefinition } from \"@hex-core/registry\";\n\nexport const spacedRepetitionSchema: ComponentSchemaDefinition = {\n\tname: \"spaced-repetition\",\n\tdisplayName: \"SpacedRepetition\",\n\tdescription:\n\t\t\"Anki-style confidence rating row — four buttons (Again / Hard / Good / Easy) that emit a rating signal. Headless on scheduling: consumers wire SM-2, FSRS, or any other algorithm; this primitive just captures the learner's signal.\",\n\tcategory: \"artifact\",\n\tsubcategory: \"study\",\n\tprops: [\n\t\t{\n\t\t\tname: \"cardId\",\n\t\t\ttype: \"string\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Identifier of the card being rated. Passed back as the second argument to onRate.\",\n\t\t},\n\t\t{\n\t\t\tname: \"onRate\",\n\t\t\ttype: \"function\",\n\t\t\trequired: true,\n\t\t\tdescription: \"Called with (rating, cardId) when the learner picks a button. Rating is one of \\\"again\\\" | \\\"hard\\\" | \\\"good\\\" | \\\"easy\\\".\",\n\t\t},\n\t\t{\n\t\t\tname: \"labels\",\n\t\t\ttype: \"object\",\n\t\t\trequired: false,\n\t\t\tdescription: \"Override the default button labels. Defaults: \\\"Again\\\" / \\\"Hard\\\" / \\\"Good\\\" / \\\"Easy\\\". Pass a partial object — unspecified ratings keep the defaults.\",\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 on the outer container.\",\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: [\"destructive\", \"secondary\", \"secondary-foreground\", \"primary\", \"accent\", \"accent-foreground\", \"foreground\", \"ring\"],\n\texamples: [\n\t\t{\n\t\t\ttitle: \"Anki-default labels with a hand-rolled scheduler\",\n\t\t\tdescription: \"Forward the rating to a consumer-owned interval calculator.\",\n\t\t\tcode:\n\t\t\t\t'<SpacedRepetition\\n cardId={card.id}\\n onRate={(rating, id) => scheduler.update(id, rating)}\\n/>',\n\t\t\tcomposition: [\"spaced-repetition\", \"srs\"],\n\t\t},\n\t\t{\n\t\t\ttitle: \"Inside a Deck via ratingSlot\",\n\t\t\tdescription: \"Each card surfaces a rating row beneath it.\",\n\t\t\tcode:\n\t\t\t\t'<Deck\\n cards={cards}\\n ratingSlot={(card) => (\\n <SpacedRepetition cardId={card.id} onRate={onRate} />\\n )}\\n/>',\n\t\t\tcomposition: [\"spaced-repetition\", \"deck\", \"srs\"],\n\t\t},\n\t],\n\tai: {\n\t\twhenToUse:\n\t\t\t\"After a Flashcard / Cloze / ImageOcclusion has been revealed, surface a four-button row so the learner self-reports recall quality. Pair with a scheduler (Anki SM-2, FSRS, custom) on the consumer side. Best place: inside Deck's ratingSlot prop.\",\n\t\twhenNotToUse:\n\t\t\t\"Don't use as a generic rating widget — this is study-specific, with semantic Anki labels (Again / Hard / Good / Easy). Don't use when the rating is a continuous value or a star count (use a slider or a star-rating component). Don't use without a scheduler — the rating is meaningless without something that consumes it to schedule the next review.\",\n\t\tcommonMistakes: [\n\t\t\t\"Forgetting to wire `onRate` — the buttons fire but nothing happens. There's no internal scheduler\",\n\t\t\t\"Calling SpacedRepetition before the card is revealed — the user hasn't seen the answer yet, so any rating is a guess. Render after Flashcard's flip event, after Cloze's reveal event, or after Quiz's submit\",\n\t\t\t\"Reusing the same cardId across multiple cards in a session — the consumer's scheduler will misroute interval updates. Pass each card's unique id\",\n\t\t\t\"Overriding labels with non-Anki semantics — \\\"Again / Hard / Good / Easy\\\" map to standard SM-2/FSRS difficulty grades 1–4. Custom labels are fine, but the four buckets should still mean roughly forgot / barely / fluent / instant\",\n\t\t],\n\t\trelatedComponents: [\"flashcard\", \"cloze\", \"image-occlusion\", \"quiz\", \"deck\"],\n\t\taccessibilityNotes:\n\t\t\t\"Outer container has role=\\\"group\\\" with aria-label=\\\"Confidence rating\\\". Each button is a real <button> with an aria-label that includes the rating label AND a hint about its effect on the next review (\\\"Again: Couldn't recall — show this card again soon.\\\"). Native button focus + Enter/Space activation handle keyboard interaction.\",\n\t\ttokenBudget: 280,\n\t},\n\ttags: [\"artifact\", \"study\", \"spaced-repetition\", \"srs\", \"anki\", \"rating\"],\n};\n"]}
|