@humain/ui 2.2.6 → 2.2.9

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.
Files changed (159) hide show
  1. package/dist/index101.js +2 -2
  2. package/dist/index101.js.map +1 -1
  3. package/dist/index103.js +3 -3
  4. package/dist/index103.js.map +1 -1
  5. package/dist/index108.js +1 -1
  6. package/dist/index108.js.map +1 -1
  7. package/dist/index117.js +1 -1
  8. package/dist/index117.js.map +1 -1
  9. package/dist/index122.js +6 -6
  10. package/dist/index122.js.map +1 -1
  11. package/dist/index126.js +1 -1
  12. package/dist/index126.js.map +1 -1
  13. package/dist/index130.js +2 -2
  14. package/dist/index130.js.map +1 -1
  15. package/dist/index146.js +4 -4
  16. package/dist/index146.js.map +1 -1
  17. package/dist/index152.js +1 -1
  18. package/dist/index152.js.map +1 -1
  19. package/dist/index154.js +2 -2
  20. package/dist/index154.js.map +1 -1
  21. package/dist/index166.js +1 -1
  22. package/dist/index166.js.map +1 -1
  23. package/dist/index168.js +1 -1
  24. package/dist/index168.js.map +1 -1
  25. package/dist/index169.js +1 -1
  26. package/dist/index169.js.map +1 -1
  27. package/dist/index173.js +2 -2
  28. package/dist/index173.js.map +1 -1
  29. package/dist/index175.js +4 -4
  30. package/dist/index175.js.map +1 -1
  31. package/dist/index176.js +2 -2
  32. package/dist/index176.js.map +1 -1
  33. package/dist/index177.js +2 -2
  34. package/dist/index177.js.map +1 -1
  35. package/dist/index184.js +1 -1
  36. package/dist/index184.js.map +1 -1
  37. package/dist/index191.js +3 -3
  38. package/dist/index191.js.map +1 -1
  39. package/dist/index192.js +2 -2
  40. package/dist/index192.js.map +1 -1
  41. package/dist/index201.js +2 -2
  42. package/dist/index201.js.map +1 -1
  43. package/dist/index204.js +4 -4
  44. package/dist/index204.js.map +1 -1
  45. package/dist/index228.js +1 -1
  46. package/dist/index228.js.map +1 -1
  47. package/dist/index229.js +1 -1
  48. package/dist/index229.js.map +1 -1
  49. package/dist/index24.js +2 -2
  50. package/dist/index24.js.map +1 -1
  51. package/dist/index5.js +1 -1
  52. package/dist/index5.js.map +1 -1
  53. package/dist/styles.css +1 -1
  54. package/dist/wc/AICodeBlock.js +41 -41
  55. package/dist/wc/AICodeBlock.js.map +1 -1
  56. package/dist/wc/AIMermaidDiagram.js +7 -7
  57. package/dist/wc/AIMermaidDiagram.js.map +1 -1
  58. package/dist/wc/AIMessage.js +6 -6
  59. package/dist/wc/AIMessage.js.map +1 -1
  60. package/dist/wc/AISource.js +2 -2
  61. package/dist/wc/AISource.js.map +1 -1
  62. package/dist/wc/AIToolCall.js +1 -1
  63. package/dist/wc/AIToolCall.js.map +1 -1
  64. package/dist/wc/Breadcrumb.js +43 -43
  65. package/dist/wc/Breadcrumb.js.map +1 -1
  66. package/dist/wc/DropdownMenu.js +9 -9
  67. package/dist/wc/DropdownMenu.js.map +1 -1
  68. package/dist/wc/Kbd.js +22 -22
  69. package/dist/wc/Kbd.js.map +1 -1
  70. package/dist/wc/button.js +7 -7
  71. package/dist/wc/button.js.map +1 -1
  72. package/dist/wc/close-button.js +19 -19
  73. package/dist/wc/close-button.js.map +1 -1
  74. package/dist/wc/hf-ai-prompt-suggestion.js +14 -14
  75. package/dist/wc/hf-ai-prompt-suggestion.js.map +1 -1
  76. package/dist/wc/hf-ai-reasoning-block.js +13 -13
  77. package/dist/wc/hf-ai-reasoning-block.js.map +1 -1
  78. package/dist/wc/hf-ai-steps.js +53 -53
  79. package/dist/wc/hf-ai-steps.js.map +1 -1
  80. package/dist/wc/hf-ai-system-message.js +26 -26
  81. package/dist/wc/hf-ai-system-message.js.map +1 -1
  82. package/dist/wc/hf-code-snippet.js +35 -35
  83. package/dist/wc/hf-code-snippet.js.map +1 -1
  84. package/dist/wc/hf-command-menu.js +39 -39
  85. package/dist/wc/hf-command-menu.js.map +1 -1
  86. package/dist/wc/hf-data-table.js +3 -3
  87. package/dist/wc/hf-data-table.js.map +1 -1
  88. package/dist/wc/hf-display-value.js +50 -50
  89. package/dist/wc/hf-display-value.js.map +1 -1
  90. package/dist/wc/hf-nav-account-menu.js +5 -5
  91. package/dist/wc/hf-nav-account-menu.js.map +1 -1
  92. package/dist/wc/hf-rich-textarea.js +1 -1
  93. package/dist/wc/hf-rich-textarea.js.map +1 -1
  94. package/dist/wc/hf-steps.js +8 -8
  95. package/dist/wc/hf-steps.js.map +1 -1
  96. package/dist/wc/markdown-renderer.js +1 -1
  97. package/dist/wc/markdown-renderer.js.map +1 -1
  98. package/dist/wc/selection-group.js +26 -26
  99. package/dist/wc/selection-group.js.map +1 -1
  100. package/dist/wc/syntax-highlight.js +4 -4
  101. package/dist/wc/syntax-highlight.js.map +1 -1
  102. package/dist/wc/workflow-step-renderer.js +51 -51
  103. package/dist/wc/workflow-step-renderer.js.map +1 -1
  104. package/dist/wc-react/AICodeBlock.js +17 -17
  105. package/dist/wc-react/AICodeBlock.js.map +1 -1
  106. package/dist/wc-react/AIMermaidDiagram.js +16 -16
  107. package/dist/wc-react/AIMermaidDiagram.js.map +1 -1
  108. package/dist/wc-react/AIMessage.js +7 -7
  109. package/dist/wc-react/AIMessage.js.map +1 -1
  110. package/dist/wc-react/AISource.js +41 -41
  111. package/dist/wc-react/AISource.js.map +1 -1
  112. package/dist/wc-react/AIToolCall.js +6 -6
  113. package/dist/wc-react/AIToolCall.js.map +1 -1
  114. package/dist/wc-react/Breadcrumb.js +18 -18
  115. package/dist/wc-react/Breadcrumb.js.map +1 -1
  116. package/dist/wc-react/DropdownMenu.js +27 -27
  117. package/dist/wc-react/DropdownMenu.js.map +1 -1
  118. package/dist/wc-react/Kbd.js +17 -17
  119. package/dist/wc-react/Kbd.js.map +1 -1
  120. package/dist/wc-react/button.js +12 -12
  121. package/dist/wc-react/button.js.map +1 -1
  122. package/dist/wc-react/close-button.js +19 -19
  123. package/dist/wc-react/close-button.js.map +1 -1
  124. package/dist/wc-react/hf-ai-prompt-suggestion.js +1 -1
  125. package/dist/wc-react/hf-ai-prompt-suggestion.js.map +1 -1
  126. package/dist/wc-react/hf-ai-reasoning-block.js +1 -1
  127. package/dist/wc-react/hf-ai-reasoning-block.js.map +1 -1
  128. package/dist/wc-react/hf-ai-steps.js +33 -33
  129. package/dist/wc-react/hf-ai-steps.js.map +1 -1
  130. package/dist/wc-react/hf-ai-system-message.js +9 -9
  131. package/dist/wc-react/hf-ai-system-message.js.map +1 -1
  132. package/dist/wc-react/hf-code-snippet.js +3 -3
  133. package/dist/wc-react/hf-code-snippet.js.map +1 -1
  134. package/dist/wc-react/hf-command-menu.js +56 -56
  135. package/dist/wc-react/hf-command-menu.js.map +1 -1
  136. package/dist/wc-react/hf-data-table.js +3 -3
  137. package/dist/wc-react/hf-data-table.js.map +1 -1
  138. package/dist/wc-react/hf-display-value.js +58 -58
  139. package/dist/wc-react/hf-display-value.js.map +1 -1
  140. package/dist/wc-react/hf-nav-account-menu.js +7 -7
  141. package/dist/wc-react/hf-nav-account-menu.js.map +1 -1
  142. package/dist/wc-react/hf-rich-textarea.js +5 -5
  143. package/dist/wc-react/hf-rich-textarea.js.map +1 -1
  144. package/dist/wc-react/hf-steps.js +2 -2
  145. package/dist/wc-react/hf-steps.js.map +1 -1
  146. package/dist/wc-react/markdown-renderer.js +1 -1
  147. package/dist/wc-react/markdown-renderer.js.map +1 -1
  148. package/dist/wc-react/selection-group.js +7 -7
  149. package/dist/wc-react/selection-group.js.map +1 -1
  150. package/dist/wc-react/syntax-highlight.js +4 -4
  151. package/dist/wc-react/syntax-highlight.js.map +1 -1
  152. package/dist/wc-react/workflow-step-renderer.js +44 -44
  153. package/dist/wc-react/workflow-step-renderer.js.map +1 -1
  154. package/package.json +1 -1
  155. package/skills/humain-ui/SKILL.md +1 -1
  156. package/skills/humain-ui-wc/SKILL.md +1 -1
  157. package/skills/humain-ui-wc.skill +0 -0
  158. package/skills/humain-ui.skill +0 -0
  159. package/src/tokens.css +4 -0
@@ -1 +1 @@
1
- {"version":3,"file":"hf-rich-textarea.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode"],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/bold.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/expand.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/italic.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/link.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/redo-2.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/type.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/underline.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/undo-2.mjs","../../src/components/molecules/forms/RichTextarea/RichTextarea.tsx","../../src/wc/hf-rich-textarea.ts"],"sourcesContent":["/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\", key: \"mg9rjx\" }\n ]\n];\nconst Bold = createLucideIcon(\"bold\", __iconNode);\n\nexport { __iconNode, Bold as default };\n//# sourceMappingURL=bold.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m15 15 6 6\", key: \"1s409w\" }],\n [\"path\", { d: \"m15 9 6-6\", key: \"ko1vev\" }],\n [\"path\", { d: \"M21 16v5h-5\", key: \"1ck2sf\" }],\n [\"path\", { d: \"M21 8V3h-5\", key: \"1qoq8a\" }],\n [\"path\", { d: \"M3 16v5h5\", key: \"1t08am\" }],\n [\"path\", { d: \"m3 21 6-6\", key: \"wwnumi\" }],\n [\"path\", { d: \"M3 8V3h5\", key: \"1ln10m\" }],\n [\"path\", { d: \"M9 9 3 3\", key: \"v551iv\" }]\n];\nconst Expand = createLucideIcon(\"expand\", __iconNode);\n\nexport { __iconNode, Expand as default };\n//# sourceMappingURL=expand.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"line\", { x1: \"19\", x2: \"10\", y1: \"4\", y2: \"4\", key: \"15jd3p\" }],\n [\"line\", { x1: \"14\", x2: \"5\", y1: \"20\", y2: \"20\", key: \"bu0au3\" }],\n [\"line\", { x1: \"15\", x2: \"9\", y1: \"4\", y2: \"20\", key: \"uljnxc\" }]\n];\nconst Italic = createLucideIcon(\"italic\", __iconNode);\n\nexport { __iconNode, Italic as default };\n//# sourceMappingURL=italic.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\", key: \"1cjeqo\" }],\n [\"path\", { d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\", key: \"19qd67\" }]\n];\nconst Link = createLucideIcon(\"link\", __iconNode);\n\nexport { __iconNode, Link as default };\n//# sourceMappingURL=link.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m15 14 5-5-5-5\", key: \"12vg1m\" }],\n [\"path\", { d: \"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13\", key: \"6uklza\" }]\n];\nconst Redo2 = createLucideIcon(\"redo-2\", __iconNode);\n\nexport { __iconNode, Redo2 as default };\n//# sourceMappingURL=redo-2.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 4v16\", key: \"1654pz\" }],\n [\"path\", { d: \"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2\", key: \"e0r10z\" }],\n [\"path\", { d: \"M9 20h6\", key: \"s66wpe\" }]\n];\nconst Type = createLucideIcon(\"type\", __iconNode);\n\nexport { __iconNode, Type as default };\n//# sourceMappingURL=type.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M6 4v6a6 6 0 0 0 12 0V4\", key: \"9kb039\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"20\", y2: \"20\", key: \"nun2al\" }]\n];\nconst Underline = createLucideIcon(\"underline\", __iconNode);\n\nexport { __iconNode, Underline as default };\n//# sourceMappingURL=underline.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 14 4 9l5-5\", key: \"102s5s\" }],\n [\"path\", { d: \"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11\", key: \"f3b9sd\" }]\n];\nconst Undo2 = createLucideIcon(\"undo-2\", __iconNode);\n\nexport { __iconNode, Undo2 as default };\n//# sourceMappingURL=undo-2.mjs.map\n","import {\n Bold,\n ChevronDown,\n Expand,\n HelpCircle,\n Italic,\n Link,\n List,\n MoreHorizontal,\n Paperclip,\n Redo2,\n Sparkles,\n Table,\n Type,\n Underline,\n Undo2,\n} from 'lucide-react';\nimport * as React from 'react';\nimport { Label } from '@/components/ui/label';\nimport { Separator } from '@/components/ui/separator';\nimport { Textarea as TextareaBase } from '@/components/ui/textarea';\nimport { Toggle } from '@/components/ui/toggle';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_MAX_LENGTH = 3000;\n\nfunction getMaxLength(maxLength: number): number {\n return Number.isFinite(maxLength) && maxLength >= 0\n ? Math.floor(maxLength)\n : DEFAULT_MAX_LENGTH;\n}\n\nfunction getCharCount(charCount: number | undefined, fallback: number): number {\n return typeof charCount === 'number' &&\n Number.isFinite(charCount) &&\n charCount >= 0\n ? Math.floor(charCount)\n : fallback;\n}\n\n// ---------------------------------------------------------------------------\n// RichTextarea Toolbar Button\n// ---------------------------------------------------------------------------\n\ninterface ToolbarButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {\n icon: React.ReactNode;\n pressed?: boolean;\n hasDropdown?: boolean;\n}\n\nconst ToolbarButton = React.forwardRef<HTMLButtonElement, ToolbarButtonProps>(\n ({ icon, pressed, hasDropdown, className, ...props }, ref) => {\n if (hasDropdown) {\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-haspopup=\"true\"\n className={cn(\n 'group/dropdown inline-flex h-8 items-center justify-center gap-1 rounded px-1.5 py-1 text-foreground transition-[color,background-color,transform] duration-200 ease-smooth motion-reduce:transition-none',\n 'hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'active:scale-95 motion-reduce:active:scale-100',\n 'disabled:pointer-events-none disabled:opacity-50',\n pressed && 'bg-muted',\n className,\n )}\n {...props}\n >\n <span className=\"[&>svg]:size-4\">{icon}</span>\n <ChevronDown className=\"size-4 text-muted-foreground transition-transform duration-200 ease-smooth motion-reduce:transition-none group-hover/dropdown:translate-y-0.5\" />\n </button>\n );\n }\n\n return (\n <Toggle\n ref={ref}\n pressed={pressed}\n size=\"sm\"\n className={className}\n disabled={props.disabled}\n onClick={props.onClick}\n aria-label={props['aria-label']}\n >\n <span className=\"[&>svg]:size-5\">{icon}</span>\n </Toggle>\n );\n },\n);\n\nToolbarButton.displayName = 'ToolbarButton';\n\n// ---------------------------------------------------------------------------\n// RichTextarea Toolbar Divider\n// ---------------------------------------------------------------------------\n\nfunction ToolbarDivider() {\n return (\n <Separator\n orientation=\"vertical\"\n className=\"mx-0.5 h-5 w-px bg-surface-2\"\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// RichTextarea Toolbar\n// ---------------------------------------------------------------------------\n\nexport interface RichTextareaToolbarProps {\n className?: string;\n /** Called when AI assist button is clicked */\n onAiAssist?: () => void;\n /** Called when undo is clicked */\n onUndo?: () => void;\n /** Called when redo is clicked */\n onRedo?: () => void;\n /** Called when expand/fullscreen button is clicked */\n onExpand?: () => void;\n /** Show AI assist button */\n showAiAssist?: boolean;\n /** Show expand button */\n showExpand?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** RTL mode */\n rtl?: boolean;\n /** Formatting state */\n formatting?: {\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n };\n /** Formatting callbacks */\n onFormatChange?: (format: 'bold' | 'italic' | 'underline') => void;\n}\n\nfunction RichTextareaToolbar({\n className,\n onAiAssist,\n onUndo,\n onRedo,\n onExpand,\n showAiAssist = true,\n showExpand = true,\n disabled,\n rtl,\n formatting = {},\n onFormatChange,\n}: RichTextareaToolbarProps) {\n return (\n <div\n data-slot=\"rich-textarea-toolbar\"\n role=\"toolbar\"\n aria-label=\"Formatting toolbar\"\n className={cn(\n 'flex flex-wrap items-center gap-2 rounded-t-xl border border-input border-b-0 bg-muted/30 p-2 transition-[border-color] duration-200 ease-smooth motion-reduce:transition-none group-has-[:focus-visible]/editor:border-ring group-has-[[aria-invalid=true]]/editor:border-destructive',\n rtl && 'flex-row-reverse',\n className,\n )}\n dir={rtl ? 'rtl' : 'ltr'}\n >\n {/* AI Assist */}\n {showAiAssist && (\n <>\n <ToolbarButton\n icon={\n <Sparkles className=\"size-5 text-primary transition-transform duration-300 ease-smooth motion-reduce:transition-none group-hover/toggle:rotate-12\" />\n }\n onClick={onAiAssist}\n disabled={disabled}\n aria-label=\"AI Assist\"\n />\n <ToolbarDivider />\n </>\n )}\n\n {/* Undo/Redo */}\n <div className=\"flex items-center gap-2\">\n <ToolbarButton\n icon={<Undo2 />}\n onClick={onUndo}\n disabled={disabled}\n aria-label=\"Undo\"\n />\n <ToolbarButton\n icon={<Redo2 />}\n onClick={onRedo}\n disabled={disabled}\n aria-label=\"Redo\"\n />\n </div>\n\n <ToolbarDivider />\n\n {/* Text formatting dropdown */}\n <ToolbarButton\n icon={<Type />}\n hasDropdown\n disabled={disabled}\n aria-label=\"Text formatting\"\n />\n\n {/* Text color dropdown */}\n <ToolbarButton\n icon={\n <span className=\"relative\">\n <span className=\"text-sm font-bold\">A</span>\n <span className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-foreground\" />\n </span>\n }\n hasDropdown\n disabled={disabled}\n aria-label=\"Text color\"\n />\n\n {/* Bold/Italic/Underline */}\n <ToolbarButton\n icon={<Bold />}\n pressed={formatting.bold}\n onClick={() => onFormatChange?.('bold')}\n disabled={disabled}\n aria-label=\"Bold\"\n />\n <ToolbarButton\n icon={<Italic />}\n pressed={formatting.italic}\n onClick={() => onFormatChange?.('italic')}\n disabled={disabled}\n aria-label=\"Italic\"\n />\n <ToolbarButton\n icon={<Underline />}\n pressed={formatting.underline}\n onClick={() => onFormatChange?.('underline')}\n disabled={disabled}\n aria-label=\"Underline\"\n />\n\n {/* List dropdown */}\n <ToolbarButton\n icon={<List />}\n hasDropdown\n disabled={disabled}\n aria-label=\"List options\"\n />\n\n <ToolbarDivider />\n\n {/* Link */}\n <ToolbarButton\n icon={<Link />}\n disabled={disabled}\n aria-label=\"Insert link\"\n />\n\n {/* Table dropdown */}\n <ToolbarButton\n icon={<Table />}\n hasDropdown\n disabled={disabled}\n aria-label=\"Table options\"\n />\n\n {/* Attachment */}\n <ToolbarButton\n icon={<Paperclip />}\n disabled={disabled}\n aria-label=\"Attach file\"\n />\n\n {/* More options */}\n <ToolbarButton\n icon={<MoreHorizontal />}\n disabled={disabled}\n aria-label=\"More options\"\n />\n\n {/* Expand */}\n {showExpand && (\n <ToolbarButton\n icon={\n <Expand className=\"transition-transform duration-200 ease-smooth motion-reduce:transition-none group-hover/toggle:scale-110\" />\n }\n onClick={onExpand}\n disabled={disabled}\n aria-label=\"Expand\"\n className=\"ms-auto\"\n />\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// RichTextarea Component\n// ---------------------------------------------------------------------------\n\nexport interface RichTextareaProps\n extends Omit<React.ComponentProps<typeof TextareaBase>, 'children'> {\n /** Label text displayed above the editor */\n label?: string;\n /** Hint text displayed below the editor */\n hint?: string;\n /** Error message displayed below the editor */\n error?: string;\n /** Show required indicator */\n required?: boolean;\n /** Show help icon next to label */\n showHelpIcon?: boolean;\n /** Callback when help icon is clicked */\n onHelpClick?: () => void;\n /** Show character count */\n showCharCount?: boolean;\n /** Maximum character count */\n maxLength?: number;\n /** Current character count (controlled) */\n charCount?: number;\n /** Show resize handle */\n showResizeHandle?: boolean;\n /** Show AI assist button in toolbar */\n showAiAssist?: boolean;\n /** Show expand button in toolbar */\n showExpand?: boolean;\n /** Called when AI assist button is clicked */\n onAiAssist?: () => void;\n /** Called when undo is clicked */\n onUndo?: () => void;\n /** Called when redo is clicked */\n onRedo?: () => void;\n /** Called when expand button is clicked */\n onExpand?: () => void;\n /** RTL mode */\n rtl?: boolean;\n /** Formatting state */\n formatting?: {\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n };\n /** Formatting callbacks */\n onFormatChange?: (format: 'bold' | 'italic' | 'underline') => void;\n}\n\nconst RichTextarea = React.forwardRef<HTMLTextAreaElement, RichTextareaProps>(\n (\n {\n label,\n hint,\n error,\n required,\n showHelpIcon,\n onHelpClick,\n showCharCount,\n maxLength = DEFAULT_MAX_LENGTH,\n charCount,\n showResizeHandle = true,\n showAiAssist = true,\n showExpand = true,\n onAiAssist,\n onUndo,\n onRedo,\n onExpand,\n rtl,\n formatting,\n onFormatChange,\n className,\n disabled,\n id,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const textareaId = id || generatedId;\n const hintId = `${textareaId}-hint`;\n const errorId = `${textareaId}-error`;\n\n // Track character count internally if not controlled\n const [internalValue, setInternalValue] = React.useState(\n defaultValue?.toString() || '',\n );\n const currentValue = value !== undefined ? value.toString() : internalValue;\n const safeMaxLength = getMaxLength(maxLength);\n const currentCharCount = getCharCount(charCount, currentValue.length);\n const isNearLimit = currentCharCount >= safeMaxLength * 0.9;\n const isApproachingLimit = currentCharCount >= safeMaxLength * 0.75;\n let describedById: string | undefined;\n if (error) {\n describedById = errorId;\n } else if (hint) {\n describedById = hintId;\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const isDestructive = !!error;\n\n return (\n <div\n data-slot=\"rich-textarea\"\n className={cn('flex flex-col gap-1.5 w-full', rtl && 'text-right')}\n dir={rtl ? 'rtl' : 'ltr'}\n >\n {/* Label */}\n {label && (\n <div\n className={cn(\n 'flex items-center gap-0.5',\n rtl && 'flex-row-reverse',\n )}\n >\n <Label\n htmlFor={textareaId}\n className=\"text-sm font-medium leading-5 text-secondary-foreground\"\n >\n {label}\n </Label>\n {required && (\n <span\n className=\"text-sm font-medium leading-5 text-destructive\"\n aria-hidden=\"true\"\n >\n *\n </span>\n )}\n {showHelpIcon && (\n <button\n type=\"button\"\n onClick={onHelpClick}\n className=\"text-muted-foreground hover:text-text-quaternary transition-colors duration-200 ease-smooth motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-full\"\n aria-label=\"Help\"\n >\n <HelpCircle className=\"size-4\" />\n </button>\n )}\n </div>\n )}\n\n {/* Toolbar + Textarea (gapless for connected borders) */}\n <div data-slot=\"rich-textarea-control\" className=\"group/editor\">\n <RichTextareaToolbar\n onAiAssist={onAiAssist}\n onUndo={onUndo}\n onRedo={onRedo}\n onExpand={onExpand}\n showAiAssist={showAiAssist}\n showExpand={showExpand}\n disabled={disabled}\n rtl={rtl}\n formatting={formatting}\n onFormatChange={onFormatChange}\n />\n\n <TextareaBase\n ref={ref}\n data-slot=\"rich-textarea-editor\"\n id={textareaId}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n disabled={disabled}\n aria-invalid={isDestructive}\n aria-required={required || undefined}\n aria-describedby={describedById}\n maxLength={safeMaxLength}\n className={cn(\n 'min-h-30 rounded-t-none border-t-0',\n isDestructive &&\n 'border-destructive focus-visible:border-destructive focus-visible:ring-destructive/20',\n !showResizeHandle && 'resize-none',\n rtl && 'text-right',\n className,\n )}\n dir={rtl ? 'rtl' : 'ltr'}\n {...props}\n />\n </div>\n\n {/* Hint/Error and Character Count */}\n <div\n className={cn(\n 'flex items-start gap-4 text-sm leading-5',\n rtl ? 'flex-row-reverse' : 'justify-between',\n )}\n >\n {/* Hint or error */}\n <div className=\"flex-1\">\n {error ? (\n <p\n id={errorId}\n className=\"text-destructive animate-in fade-in-0 slide-in-from-top-1 duration-200 motion-reduce:animate-none\"\n >\n {error}\n </p>\n ) : hint ? (\n <p id={hintId} className=\"text-muted-foreground\">\n {hint}\n </p>\n ) : null}\n </div>\n\n {/* Character count — only announces via aria-live when near the limit (≥90%) */}\n {showCharCount && (\n <span\n role={isNearLimit ? 'status' : undefined}\n aria-live={isNearLimit ? 'polite' : 'off'}\n className={cn(\n 'whitespace-nowrap transition-colors duration-300 ease-out motion-reduce:transition-none',\n isNearLimit\n ? 'text-destructive font-medium'\n : isApproachingLimit\n ? 'text-secondary-foreground'\n : 'text-muted-foreground',\n rtl && 'text-start',\n )}\n >\n {currentCharCount}/{safeMaxLength}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\n\nRichTextarea.displayName = 'RichTextarea';\n\nexport { RichTextarea, RichTextareaToolbar, ToolbarButton, ToolbarDivider };\n","/**\n * Web Component wrapper for RichTextarea\n * Custom element: <hf-rich-textarea>\n *\n * @generated by scripts/generate-wc-components.ts\n * DO NOT EDIT MANUALLY\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { RichTextarea } from '../components/molecules/forms/RichTextarea';\nimport { parseAttr, parseValue, type PropDefs } from './_shared';\n\n/**\n * Event wrapper that dispatches custom DOM events\n */\nfunction createEventDispatcher(element: HTMLElement) {\n return {\n onHelpClick: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('help-click', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onAiAssist: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('ai-assist', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onUndo: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('undo', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onRedo: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('redo', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onExpand: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('expand', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onFormatChange: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('format-change', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n }\n };\n}\n\n/**\n * Wrapper component that connects React events to DOM custom events\n */\nfunction RichTextareaWrapper(props: React.ComponentProps<typeof RichTextarea> & { _hostElement?: HTMLElement }) {\n const { _hostElement, ...restProps } = props;\n\n const eventHandlers = React.useMemo(() => {\n if (!_hostElement) return {};\n return createEventDispatcher(_hostElement);\n }, [_hostElement]);\n\n return React.createElement(RichTextarea, { ...restProps, ...eventHandlers });\n}\n\n/**\n * Prop type definitions for attribute parsing\n */\nconst propTypes: PropDefs = {\n label: 'string',\n hint: 'string',\n error: 'string',\n required: 'boolean',\n showHelpIcon: 'boolean',\n showCharCount: 'boolean',\n maxLength: 'number',\n charCount: 'number',\n showResizeHandle: 'boolean',\n showAiAssist: 'boolean',\n showExpand: 'boolean',\n rtl: 'boolean',\n formatting: 'json'\n};\n\nclass RichTextareaWC extends HTMLElement {\n private _root: ReturnType<typeof createRoot> | null = null;\n private _childrenContainer: HTMLDivElement | null = null;\n private _props: Record<string, unknown> = {};\n private _initialized = false;\n\n connectedCallback() {\n setTimeout(() => this._initialize(), 0);\n }\n\n private _initialize() {\n if (this._initialized) return;\n this._initialized = true;\n\n const originalChildren: Node[] = [];\n for (const child of Array.from(this.childNodes)) {\n if (child.nodeType === Node.TEXT_NODE && !child.textContent?.trim()) {\n continue;\n }\n originalChildren.push(child);\n }\n\n const reactContainer = this.ownerDocument.createElement('div');\n reactContainer.style.display = 'contents';\n\n this._childrenContainer = this.ownerDocument.createElement('div');\n this._childrenContainer.style.display = 'contents';\n\n originalChildren.forEach((child) => this._childrenContainer!.appendChild(child));\n\n while (this.firstChild) this.removeChild(this.firstChild);\n this.appendChild(reactContainer);\n\n this._root = createRoot(reactContainer);\n this._render();\n }\n\n disconnectedCallback() {\n this._root?.unmount();\n this._root = null;\n }\n\n attributeChangedCallback(_name: string, _oldValue: string | null, _newValue: string | null) {\n this._render();\n }\n\n static get observedAttributes() {\n return Object.keys(propTypes).map((prop) =>\n prop.replace(/([A-Z])/g, '-$1').toLowerCase(),\n );\n }\n\n _setProp(name: string, value: unknown) {\n const propType = propTypes[name] || 'string';\n this._props[name] = parseValue(value, propType);\n this._render();\n }\n\n _getProp(name: string): unknown {\n if (name in this._props) {\n return this._props[name];\n }\n const attrName = name.replace(/([A-Z])/g, '-$1').toLowerCase();\n const propType = propTypes[name] || 'string';\n return parseAttr(this.getAttribute(attrName), propType);\n }\n\n private _render() {\n if (!this._root) return;\n\n const props: Record<string, unknown> = {};\n for (const [propName, propType] of Object.entries(propTypes)) {\n if (propName in this._props) {\n props[propName] = this._props[propName];\n } else {\n const attrName = propName.replace(/([A-Z])/g, '-$1').toLowerCase();\n props[propName] = parseAttr(this.getAttribute(attrName), propType);\n }\n }\n\n const element = React.createElement(\n RichTextareaWrapper,\n { ...props, _hostElement: this },\n );\n\n this._root.render(element);\n }\n}\n\nfor (const propName of Object.keys(propTypes)) {\n Object.defineProperty(RichTextareaWC.prototype, propName, {\n get() {\n return this._getProp(propName);\n },\n set(value: unknown) {\n this._setProp(propName, value);\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nif (typeof customElements !== 'undefined' && !customElements.get('hf-rich-textarea')) {\n customElements.define('hf-rich-textarea', RichTextareaWC);\n}\n\nexport { RichTextareaWC };\nexport default RichTextareaWC;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
1
+ {"version":3,"file":"hf-rich-textarea.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode"],"sources":["../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/bold.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/expand.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/italic.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/link.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/redo-2.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/type.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/underline.mjs","../../../../../../../../../../../Users/akarim/Documents/test/humain_foundation_ui/node_modules/.bun/lucide-react@1.27.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/undo-2.mjs","../../src/components/molecules/forms/RichTextarea/RichTextarea.tsx","../../src/wc/hf-rich-textarea.ts"],"sourcesContent":["/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\", key: \"mg9rjx\" }\n ]\n];\nconst Bold = createLucideIcon(\"bold\", __iconNode);\n\nexport { __iconNode, Bold as default };\n//# sourceMappingURL=bold.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m15 15 6 6\", key: \"1s409w\" }],\n [\"path\", { d: \"m15 9 6-6\", key: \"ko1vev\" }],\n [\"path\", { d: \"M21 16v5h-5\", key: \"1ck2sf\" }],\n [\"path\", { d: \"M21 8V3h-5\", key: \"1qoq8a\" }],\n [\"path\", { d: \"M3 16v5h5\", key: \"1t08am\" }],\n [\"path\", { d: \"m3 21 6-6\", key: \"wwnumi\" }],\n [\"path\", { d: \"M3 8V3h5\", key: \"1ln10m\" }],\n [\"path\", { d: \"M9 9 3 3\", key: \"v551iv\" }]\n];\nconst Expand = createLucideIcon(\"expand\", __iconNode);\n\nexport { __iconNode, Expand as default };\n//# sourceMappingURL=expand.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"line\", { x1: \"19\", x2: \"10\", y1: \"4\", y2: \"4\", key: \"15jd3p\" }],\n [\"line\", { x1: \"14\", x2: \"5\", y1: \"20\", y2: \"20\", key: \"bu0au3\" }],\n [\"line\", { x1: \"15\", x2: \"9\", y1: \"4\", y2: \"20\", key: \"uljnxc\" }]\n];\nconst Italic = createLucideIcon(\"italic\", __iconNode);\n\nexport { __iconNode, Italic as default };\n//# sourceMappingURL=italic.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\", key: \"1cjeqo\" }],\n [\"path\", { d: \"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\", key: \"19qd67\" }]\n];\nconst Link = createLucideIcon(\"link\", __iconNode);\n\nexport { __iconNode, Link as default };\n//# sourceMappingURL=link.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m15 14 5-5-5-5\", key: \"12vg1m\" }],\n [\"path\", { d: \"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13\", key: \"6uklza\" }]\n];\nconst Redo2 = createLucideIcon(\"redo-2\", __iconNode);\n\nexport { __iconNode, Redo2 as default };\n//# sourceMappingURL=redo-2.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 4v16\", key: \"1654pz\" }],\n [\"path\", { d: \"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2\", key: \"e0r10z\" }],\n [\"path\", { d: \"M9 20h6\", key: \"s66wpe\" }]\n];\nconst Type = createLucideIcon(\"type\", __iconNode);\n\nexport { __iconNode, Type as default };\n//# sourceMappingURL=type.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M6 4v6a6 6 0 0 0 12 0V4\", key: \"9kb039\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"20\", y2: \"20\", key: \"nun2al\" }]\n];\nconst Underline = createLucideIcon(\"underline\", __iconNode);\n\nexport { __iconNode, Underline as default };\n//# sourceMappingURL=underline.mjs.map\n","/**\n * @license lucide-react v1.27.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 14 4 9l5-5\", key: \"102s5s\" }],\n [\"path\", { d: \"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11\", key: \"f3b9sd\" }]\n];\nconst Undo2 = createLucideIcon(\"undo-2\", __iconNode);\n\nexport { __iconNode, Undo2 as default };\n//# sourceMappingURL=undo-2.mjs.map\n","import {\n Bold,\n ChevronDown,\n Expand,\n HelpCircle,\n Italic,\n Link,\n List,\n MoreHorizontal,\n Paperclip,\n Redo2,\n Sparkles,\n Table,\n Type,\n Underline,\n Undo2,\n} from 'lucide-react';\nimport * as React from 'react';\nimport { Label } from '@/components/ui/label';\nimport { Separator } from '@/components/ui/separator';\nimport { Textarea as TextareaBase } from '@/components/ui/textarea';\nimport { Toggle } from '@/components/ui/toggle';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_MAX_LENGTH = 3000;\n\nfunction getMaxLength(maxLength: number): number {\n return Number.isFinite(maxLength) && maxLength >= 0\n ? Math.floor(maxLength)\n : DEFAULT_MAX_LENGTH;\n}\n\nfunction getCharCount(charCount: number | undefined, fallback: number): number {\n return typeof charCount === 'number' &&\n Number.isFinite(charCount) &&\n charCount >= 0\n ? Math.floor(charCount)\n : fallback;\n}\n\n// ---------------------------------------------------------------------------\n// RichTextarea Toolbar Button\n// ---------------------------------------------------------------------------\n\ninterface ToolbarButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {\n icon: React.ReactNode;\n pressed?: boolean;\n hasDropdown?: boolean;\n}\n\nconst ToolbarButton = React.forwardRef<HTMLButtonElement, ToolbarButtonProps>(\n ({ icon, pressed, hasDropdown, className, ...props }, ref) => {\n if (hasDropdown) {\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-haspopup=\"true\"\n className={cn(\n 'group/dropdown inline-flex h-8 items-center justify-center gap-1 rounded px-1.5 py-1 text-foreground transition-[color,background-color,transform] duration-200 ease-smooth motion-reduce:transition-none',\n 'hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n 'active:scale-95 motion-reduce:active:scale-100',\n 'disabled:pointer-events-none disabled:opacity-50',\n pressed && 'bg-muted',\n className,\n )}\n {...props}\n >\n <span className=\"[&>svg]:size-4\">{icon}</span>\n <ChevronDown className=\"size-4 text-muted-foreground transition-transform duration-200 ease-smooth motion-reduce:transition-none group-hover/dropdown:translate-y-0.5\" />\n </button>\n );\n }\n\n return (\n <Toggle\n ref={ref}\n pressed={pressed}\n size=\"sm\"\n className={className}\n disabled={props.disabled}\n onClick={props.onClick}\n aria-label={props['aria-label']}\n >\n <span className=\"[&>svg]:size-5\">{icon}</span>\n </Toggle>\n );\n },\n);\n\nToolbarButton.displayName = 'ToolbarButton';\n\n// ---------------------------------------------------------------------------\n// RichTextarea Toolbar Divider\n// ---------------------------------------------------------------------------\n\nfunction ToolbarDivider() {\n return (\n <Separator\n orientation=\"vertical\"\n className=\"mx-0.5 h-5 w-px bg-surface-2\"\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// RichTextarea Toolbar\n// ---------------------------------------------------------------------------\n\nexport interface RichTextareaToolbarProps {\n className?: string;\n /** Called when AI assist button is clicked */\n onAiAssist?: () => void;\n /** Called when undo is clicked */\n onUndo?: () => void;\n /** Called when redo is clicked */\n onRedo?: () => void;\n /** Called when expand/fullscreen button is clicked */\n onExpand?: () => void;\n /** Show AI assist button */\n showAiAssist?: boolean;\n /** Show expand button */\n showExpand?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** RTL mode */\n rtl?: boolean;\n /** Formatting state */\n formatting?: {\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n };\n /** Formatting callbacks */\n onFormatChange?: (format: 'bold' | 'italic' | 'underline') => void;\n}\n\nfunction RichTextareaToolbar({\n className,\n onAiAssist,\n onUndo,\n onRedo,\n onExpand,\n showAiAssist = true,\n showExpand = true,\n disabled,\n rtl,\n formatting = {},\n onFormatChange,\n}: RichTextareaToolbarProps) {\n return (\n <div\n data-slot=\"rich-textarea-toolbar\"\n role=\"toolbar\"\n aria-label=\"Formatting toolbar\"\n className={cn(\n 'flex flex-wrap items-center gap-2 rounded-t-xl border border-input border-b-0 bg-muted/30 p-2 transition-[border-color] duration-200 ease-smooth motion-reduce:transition-none group-has-[:focus-visible]/editor:border-ring group-has-[[aria-invalid=true]]/editor:border-destructive',\n rtl && 'flex-row-reverse',\n className,\n )}\n dir={rtl ? 'rtl' : 'ltr'}\n >\n {/* AI Assist */}\n {showAiAssist && (\n <>\n <ToolbarButton\n icon={\n <Sparkles className=\"size-5 text-primary transition-transform duration-300 ease-smooth motion-reduce:transition-none group-hover/toggle:rotate-12\" />\n }\n onClick={onAiAssist}\n disabled={disabled}\n aria-label=\"AI Assist\"\n />\n <ToolbarDivider />\n </>\n )}\n\n {/* Undo/Redo */}\n <div className=\"flex items-center gap-2\">\n <ToolbarButton\n icon={<Undo2 />}\n onClick={onUndo}\n disabled={disabled}\n aria-label=\"Undo\"\n />\n <ToolbarButton\n icon={<Redo2 />}\n onClick={onRedo}\n disabled={disabled}\n aria-label=\"Redo\"\n />\n </div>\n\n <ToolbarDivider />\n\n {/* Text formatting dropdown */}\n <ToolbarButton\n icon={<Type />}\n hasDropdown\n disabled={disabled}\n aria-label=\"Text formatting\"\n />\n\n {/* Text color dropdown */}\n <ToolbarButton\n icon={\n <span className=\"relative\">\n <span className=\"text-sm font-bold\">A</span>\n <span className=\"absolute bottom-0 left-0 right-0 h-0.5 bg-foreground\" />\n </span>\n }\n hasDropdown\n disabled={disabled}\n aria-label=\"Text color\"\n />\n\n {/* Bold/Italic/Underline */}\n <ToolbarButton\n icon={<Bold />}\n pressed={formatting.bold}\n onClick={() => onFormatChange?.('bold')}\n disabled={disabled}\n aria-label=\"Bold\"\n />\n <ToolbarButton\n icon={<Italic />}\n pressed={formatting.italic}\n onClick={() => onFormatChange?.('italic')}\n disabled={disabled}\n aria-label=\"Italic\"\n />\n <ToolbarButton\n icon={<Underline />}\n pressed={formatting.underline}\n onClick={() => onFormatChange?.('underline')}\n disabled={disabled}\n aria-label=\"Underline\"\n />\n\n {/* List dropdown */}\n <ToolbarButton\n icon={<List />}\n hasDropdown\n disabled={disabled}\n aria-label=\"List options\"\n />\n\n <ToolbarDivider />\n\n {/* Link */}\n <ToolbarButton\n icon={<Link />}\n disabled={disabled}\n aria-label=\"Insert link\"\n />\n\n {/* Table dropdown */}\n <ToolbarButton\n icon={<Table />}\n hasDropdown\n disabled={disabled}\n aria-label=\"Table options\"\n />\n\n {/* Attachment */}\n <ToolbarButton\n icon={<Paperclip />}\n disabled={disabled}\n aria-label=\"Attach file\"\n />\n\n {/* More options */}\n <ToolbarButton\n icon={<MoreHorizontal />}\n disabled={disabled}\n aria-label=\"More options\"\n />\n\n {/* Expand */}\n {showExpand && (\n <ToolbarButton\n icon={\n <Expand className=\"transition-transform duration-200 ease-smooth motion-reduce:transition-none group-hover/toggle:scale-110\" />\n }\n onClick={onExpand}\n disabled={disabled}\n aria-label=\"Expand\"\n className=\"ms-auto\"\n />\n )}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// RichTextarea Component\n// ---------------------------------------------------------------------------\n\nexport interface RichTextareaProps\n extends Omit<React.ComponentProps<typeof TextareaBase>, 'children'> {\n /** Label text displayed above the editor */\n label?: string;\n /** Hint text displayed below the editor */\n hint?: string;\n /** Error message displayed below the editor */\n error?: string;\n /** Show required indicator */\n required?: boolean;\n /** Show help icon next to label */\n showHelpIcon?: boolean;\n /** Callback when help icon is clicked */\n onHelpClick?: () => void;\n /** Show character count */\n showCharCount?: boolean;\n /** Maximum character count */\n maxLength?: number;\n /** Current character count (controlled) */\n charCount?: number;\n /** Show resize handle */\n showResizeHandle?: boolean;\n /** Show AI assist button in toolbar */\n showAiAssist?: boolean;\n /** Show expand button in toolbar */\n showExpand?: boolean;\n /** Called when AI assist button is clicked */\n onAiAssist?: () => void;\n /** Called when undo is clicked */\n onUndo?: () => void;\n /** Called when redo is clicked */\n onRedo?: () => void;\n /** Called when expand button is clicked */\n onExpand?: () => void;\n /** RTL mode */\n rtl?: boolean;\n /** Formatting state */\n formatting?: {\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n };\n /** Formatting callbacks */\n onFormatChange?: (format: 'bold' | 'italic' | 'underline') => void;\n}\n\nconst RichTextarea = React.forwardRef<HTMLTextAreaElement, RichTextareaProps>(\n (\n {\n label,\n hint,\n error,\n required,\n showHelpIcon,\n onHelpClick,\n showCharCount,\n maxLength = DEFAULT_MAX_LENGTH,\n charCount,\n showResizeHandle = true,\n showAiAssist = true,\n showExpand = true,\n onAiAssist,\n onUndo,\n onRedo,\n onExpand,\n rtl,\n formatting,\n onFormatChange,\n className,\n disabled,\n id,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const textareaId = id || generatedId;\n const hintId = `${textareaId}-hint`;\n const errorId = `${textareaId}-error`;\n\n // Track character count internally if not controlled\n const [internalValue, setInternalValue] = React.useState(\n defaultValue?.toString() || '',\n );\n const currentValue = value !== undefined ? value.toString() : internalValue;\n const safeMaxLength = getMaxLength(maxLength);\n const currentCharCount = getCharCount(charCount, currentValue.length);\n const isNearLimit = currentCharCount >= safeMaxLength * 0.9;\n const isApproachingLimit = currentCharCount >= safeMaxLength * 0.75;\n let describedById: string | undefined;\n if (error) {\n describedById = errorId;\n } else if (hint) {\n describedById = hintId;\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const isDestructive = !!error;\n\n return (\n <div\n data-slot=\"rich-textarea\"\n className={cn('flex flex-col gap-1.5 w-full', rtl && 'text-right')}\n dir={rtl ? 'rtl' : 'ltr'}\n >\n {/* Label */}\n {label && (\n <div\n className={cn(\n 'flex items-center gap-0.5',\n rtl && 'flex-row-reverse',\n )}\n >\n <Label\n htmlFor={textareaId}\n className=\"text-sm font-medium leading-5 text-secondary-foreground\"\n >\n {label}\n </Label>\n {required && (\n <span\n className=\"text-sm font-medium leading-5 text-destructive\"\n aria-hidden=\"true\"\n >\n *\n </span>\n )}\n {showHelpIcon && (\n <button\n type=\"button\"\n onClick={onHelpClick}\n className=\"text-muted-foreground hover:text-secondary-foreground transition-colors duration-200 ease-smooth motion-reduce:transition-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-full\"\n aria-label=\"Help\"\n >\n <HelpCircle className=\"size-4\" />\n </button>\n )}\n </div>\n )}\n\n {/* Toolbar + Textarea (gapless for connected borders) */}\n <div data-slot=\"rich-textarea-control\" className=\"group/editor\">\n <RichTextareaToolbar\n onAiAssist={onAiAssist}\n onUndo={onUndo}\n onRedo={onRedo}\n onExpand={onExpand}\n showAiAssist={showAiAssist}\n showExpand={showExpand}\n disabled={disabled}\n rtl={rtl}\n formatting={formatting}\n onFormatChange={onFormatChange}\n />\n\n <TextareaBase\n ref={ref}\n data-slot=\"rich-textarea-editor\"\n id={textareaId}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n disabled={disabled}\n aria-invalid={isDestructive}\n aria-required={required || undefined}\n aria-describedby={describedById}\n maxLength={safeMaxLength}\n className={cn(\n 'min-h-30 rounded-t-none border-t-0',\n isDestructive &&\n 'border-destructive focus-visible:border-destructive focus-visible:ring-destructive/20',\n !showResizeHandle && 'resize-none',\n rtl && 'text-right',\n className,\n )}\n dir={rtl ? 'rtl' : 'ltr'}\n {...props}\n />\n </div>\n\n {/* Hint/Error and Character Count */}\n <div\n className={cn(\n 'flex items-start gap-4 text-sm leading-5',\n rtl ? 'flex-row-reverse' : 'justify-between',\n )}\n >\n {/* Hint or error */}\n <div className=\"flex-1\">\n {error ? (\n <p\n id={errorId}\n className=\"text-destructive animate-in fade-in-0 slide-in-from-top-1 duration-200 motion-reduce:animate-none\"\n >\n {error}\n </p>\n ) : hint ? (\n <p id={hintId} className=\"text-muted-foreground\">\n {hint}\n </p>\n ) : null}\n </div>\n\n {/* Character count — only announces via aria-live when near the limit (≥90%) */}\n {showCharCount && (\n <span\n role={isNearLimit ? 'status' : undefined}\n aria-live={isNearLimit ? 'polite' : 'off'}\n className={cn(\n 'whitespace-nowrap transition-colors duration-300 ease-out motion-reduce:transition-none',\n isNearLimit\n ? 'text-destructive font-medium'\n : isApproachingLimit\n ? 'text-secondary-foreground'\n : 'text-muted-foreground',\n rtl && 'text-start',\n )}\n >\n {currentCharCount}/{safeMaxLength}\n </span>\n )}\n </div>\n </div>\n );\n },\n);\n\nRichTextarea.displayName = 'RichTextarea';\n\nexport { RichTextarea, RichTextareaToolbar, ToolbarButton, ToolbarDivider };\n","/**\n * Web Component wrapper for RichTextarea\n * Custom element: <hf-rich-textarea>\n *\n * @generated by scripts/generate-wc-components.ts\n * DO NOT EDIT MANUALLY\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { RichTextarea } from '../components/molecules/forms/RichTextarea';\nimport { parseAttr, parseValue, type PropDefs } from './_shared';\n\n/**\n * Event wrapper that dispatches custom DOM events\n */\nfunction createEventDispatcher(element: HTMLElement) {\n return {\n onHelpClick: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('help-click', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onAiAssist: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('ai-assist', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onUndo: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('undo', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onRedo: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('redo', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onExpand: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('expand', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n },\n onFormatChange: (value: unknown) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('format-change', {\n detail: value,\n bubbles: true,\n composed: true\n }));\n }\n };\n}\n\n/**\n * Wrapper component that connects React events to DOM custom events\n */\nfunction RichTextareaWrapper(props: React.ComponentProps<typeof RichTextarea> & { _hostElement?: HTMLElement }) {\n const { _hostElement, ...restProps } = props;\n\n const eventHandlers = React.useMemo(() => {\n if (!_hostElement) return {};\n return createEventDispatcher(_hostElement);\n }, [_hostElement]);\n\n return React.createElement(RichTextarea, { ...restProps, ...eventHandlers });\n}\n\n/**\n * Prop type definitions for attribute parsing\n */\nconst propTypes: PropDefs = {\n label: 'string',\n hint: 'string',\n error: 'string',\n required: 'boolean',\n showHelpIcon: 'boolean',\n showCharCount: 'boolean',\n maxLength: 'number',\n charCount: 'number',\n showResizeHandle: 'boolean',\n showAiAssist: 'boolean',\n showExpand: 'boolean',\n rtl: 'boolean',\n formatting: 'json'\n};\n\nclass RichTextareaWC extends HTMLElement {\n private _root: ReturnType<typeof createRoot> | null = null;\n private _childrenContainer: HTMLDivElement | null = null;\n private _props: Record<string, unknown> = {};\n private _initialized = false;\n\n connectedCallback() {\n setTimeout(() => this._initialize(), 0);\n }\n\n private _initialize() {\n if (this._initialized) return;\n this._initialized = true;\n\n const originalChildren: Node[] = [];\n for (const child of Array.from(this.childNodes)) {\n if (child.nodeType === Node.TEXT_NODE && !child.textContent?.trim()) {\n continue;\n }\n originalChildren.push(child);\n }\n\n const reactContainer = this.ownerDocument.createElement('div');\n reactContainer.style.display = 'contents';\n\n this._childrenContainer = this.ownerDocument.createElement('div');\n this._childrenContainer.style.display = 'contents';\n\n originalChildren.forEach((child) => this._childrenContainer!.appendChild(child));\n\n while (this.firstChild) this.removeChild(this.firstChild);\n this.appendChild(reactContainer);\n\n this._root = createRoot(reactContainer);\n this._render();\n }\n\n disconnectedCallback() {\n this._root?.unmount();\n this._root = null;\n }\n\n attributeChangedCallback(_name: string, _oldValue: string | null, _newValue: string | null) {\n this._render();\n }\n\n static get observedAttributes() {\n return Object.keys(propTypes).map((prop) =>\n prop.replace(/([A-Z])/g, '-$1').toLowerCase(),\n );\n }\n\n _setProp(name: string, value: unknown) {\n const propType = propTypes[name] || 'string';\n this._props[name] = parseValue(value, propType);\n this._render();\n }\n\n _getProp(name: string): unknown {\n if (name in this._props) {\n return this._props[name];\n }\n const attrName = name.replace(/([A-Z])/g, '-$1').toLowerCase();\n const propType = propTypes[name] || 'string';\n return parseAttr(this.getAttribute(attrName), propType);\n }\n\n private _render() {\n if (!this._root) return;\n\n const props: Record<string, unknown> = {};\n for (const [propName, propType] of Object.entries(propTypes)) {\n if (propName in this._props) {\n props[propName] = this._props[propName];\n } else {\n const attrName = propName.replace(/([A-Z])/g, '-$1').toLowerCase();\n props[propName] = parseAttr(this.getAttribute(attrName), propType);\n }\n }\n\n const element = React.createElement(\n RichTextareaWrapper,\n { ...props, _hostElement: this },\n );\n\n this._root.render(element);\n }\n}\n\nfor (const propName of Object.keys(propTypes)) {\n Object.defineProperty(RichTextareaWC.prototype, propName, {\n get() {\n return this._getProp(propName);\n },\n set(value: unknown) {\n this._setProp(propName, value);\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nif (typeof customElements !== 'undefined' && !customElements.get('hf-rich-textarea')) {\n customElements.define('hf-rich-textarea', RichTextareaWC);\n}\n\nexport { RichTextareaWC };\nexport default RichTextareaWC;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7],"mappings":"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"}
@@ -40,10 +40,10 @@ var a = /* @__PURE__ */ I(A(), 1), s = O(), H = g("flex items-center justify-cen
40
40
  variants: { status: {
41
41
  complete: "text-card-foreground",
42
42
  active: "text-card-foreground",
43
- incomplete: "text-muted-foreground"
43
+ incomplete: "text-secondary-foreground"
44
44
  } },
45
45
  defaultVariants: { status: "incomplete" }
46
- }), F = g("text-sm leading-5 text-muted-foreground"), [R, X] = q("Steps"), y = a.createContext(0);
46
+ }), F = g("text-sm leading-5 text-secondary-foreground"), [R, X] = q("Steps"), S = a.createContext(0);
47
47
  function B({ index: e, status: t, shape: r, bulletType: i }) {
48
48
  return i === "icon" ? t === "complete" ? /* @__PURE__ */ (0, s.jsx)(M, { className: "size-[22px] delight-check-draw" }) : t === "active" ? /* @__PURE__ */ (0, s.jsx)("div", { className: c("size-5 bg-primary", r === "rounded" ? "rounded-sm" : "rounded-full") }) : /* @__PURE__ */ (0, s.jsx)("div", { className: "size-1.5 rounded-full bg-current" }) : e + 1;
49
49
  }
@@ -84,7 +84,7 @@ function C({ children: e, className: t }) {
84
84
  }
85
85
  C.displayName = "Steps.Subtext";
86
86
  function j({ status: e, onClick: t, children: r, className: i }) {
87
- const o = X(), l = a.useContext(y), u = e ?? o.getStepStatus(l), h = l === 0, p = t ?? (o.onStepClick ? () => o.onStepClick?.(l) : void 0);
87
+ const o = X(), l = a.useContext(S), u = e ?? o.getStepStatus(l), h = l === 0, p = t ?? (o.onStepClick ? () => o.onStepClick?.(l) : void 0);
88
88
  let m = null, b = null;
89
89
  a.Children.forEach(r, (f) => {
90
90
  a.isValidElement(f) && f.type === C ? b = f : f != null && f !== !1 && (m = f);
@@ -116,16 +116,16 @@ function j({ status: e, onClick: t, children: r, className: i }) {
116
116
  className: "flex items-center",
117
117
  children: [d, N]
118
118
  })]
119
- }), S = a.useMemo(() => D(m), [m]), w = u === "complete" ? ", completed" : u === "active" ? ", current" : "";
119
+ }), y = a.useMemo(() => D(m), [m]), w = u === "complete" ? ", completed" : u === "active" ? ", current" : "";
120
120
  return /* @__PURE__ */ (0, s.jsx)("li", {
121
121
  "data-slot": "steps-item",
122
122
  "aria-current": u === "active" ? "step" : void 0,
123
- "aria-label": !p && S ? `Step ${l + 1}: ${S}${w}` : void 0,
123
+ "aria-label": !p && y ? `Step ${l + 1}: ${y}${w}` : void 0,
124
124
  className: c(n && !h && "flex-1", !p && i),
125
125
  children: p ? /* @__PURE__ */ (0, s.jsx)("button", {
126
126
  type: "button",
127
127
  onClick: p,
128
- "aria-label": `Step ${l + 1}: ${S || ""}${w}`,
128
+ "aria-label": `Step ${l + 1}: ${y || ""}${w}`,
129
129
  className: c("cursor-pointer", n && "w-full", i, "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-sm"),
130
130
  children: E
131
131
  }) : E
@@ -145,10 +145,10 @@ function T({ steps: e, currentStep: t = 0, orientation: r = "horizontal", shape:
145
145
  o,
146
146
  l,
147
147
  p
148
- ]), b = !e && a.Children.count(u) > 0, _ = () => !e || e.length === 0 ? null : e.map((n, d) => /* @__PURE__ */ (0, s.jsx)(y.Provider, {
148
+ ]), b = !e && a.Children.count(u) > 0, _ = () => !e || e.length === 0 ? null : e.map((n, d) => /* @__PURE__ */ (0, s.jsx)(S.Provider, {
149
149
  value: d,
150
150
  children: /* @__PURE__ */ (0, s.jsxs)(j, { children: [n.label, n.subtext && /* @__PURE__ */ (0, s.jsx)(C, { children: n.subtext })] })
151
- }, `${d}-${n.label}`)), v = () => a.Children.map(u, (n, d) => /* @__PURE__ */ (0, s.jsx)(y.Provider, {
151
+ }, `${d}-${n.label}`)), v = () => a.Children.map(u, (n, d) => /* @__PURE__ */ (0, s.jsx)(S.Provider, {
152
152
  value: d,
153
153
  children: n
154
154
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"hf-steps.js","names":[],"sources":["../../src/components/organisms/content/Steps/Steps.tsx","../../src/wc/hf-steps.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\nimport { createSafeContext } from '@/lib/create-safe-context';\nimport { cn, extractText } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Types\n * -------------------------------------------------------------------------- */\n\nexport type StepStatus = 'complete' | 'active' | 'incomplete';\n\nexport interface StepData {\n label: string;\n subtext?: string;\n}\n\nexport interface StepsProps {\n /** Steps data for flat API */\n steps?: StepData[];\n /** Current step index (0-based) for flat API */\n currentStep?: number;\n /** Orientation of the steps */\n orientation?: 'horizontal' | 'vertical';\n /** Shape of step indicators */\n shape?: 'rounded' | 'round';\n /** Type of bullet content */\n bulletType?: 'text' | 'icon';\n /** Callback when a step is clicked */\n onStepClick?: (index: number) => void;\n /** Children for compound API */\n children?: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\nexport interface StepsItemProps {\n /** Override auto-calculated status */\n status?: StepStatus;\n /** Click handler for this step */\n onClick?: () => void;\n /** Step label content */\n children: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\nexport interface StepsSubtextProps {\n children: React.ReactNode;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------------\n * Variants\n * -------------------------------------------------------------------------- */\n\nconst stepIndicatorVariants = cva(\n 'flex items-center justify-center shrink-0 size-[38px] font-medium text-lg transition-all duration-200 ease-out motion-reduce:transition-none',\n {\n variants: {\n shape: {\n rounded: 'rounded-lg',\n round: 'rounded-full',\n },\n status: {\n complete: 'bg-primary text-primary-foreground shadow-sm',\n active: 'bg-background border-2 border-primary text-primary shadow-sm',\n incomplete: 'bg-accent text-muted-foreground',\n },\n },\n defaultVariants: {\n shape: 'rounded',\n status: 'incomplete',\n },\n },\n);\n\nconst stepConnectorVariants = cva(\n 'shrink-0 transition-colors duration-200 ease-out motion-reduce:transition-none',\n {\n variants: {\n orientation: {\n // Horizontal: fluid width fills available space; mt-[18px] centers 2px line with 38px indicator\n horizontal: 'h-0.5 flex-1 min-w-4 mx-2 mt-[18px]',\n // Vertical: fixed size, centered under 38px indicator\n vertical: 'w-0.5 h-[30px] my-1 ml-[18px]',\n },\n status: {\n complete: 'bg-primary',\n incomplete: 'bg-border',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n status: 'incomplete',\n },\n },\n);\n\nconst stepLabelVariants = cva('text-base leading-6', {\n variants: {\n status: {\n complete: 'text-card-foreground',\n active: 'text-card-foreground',\n incomplete: 'text-muted-foreground',\n },\n },\n defaultVariants: {\n status: 'incomplete',\n },\n});\n\nconst stepSubtextVariants = cva('text-sm leading-5 text-muted-foreground');\n\n/* -----------------------------------------------------------------------------\n * Context\n * -------------------------------------------------------------------------- */\n\ninterface StepsContextValue {\n orientation: 'horizontal' | 'vertical';\n shape: 'rounded' | 'round';\n bulletType: 'text' | 'icon';\n onStepClick?: (index: number) => void;\n getStepStatus: (index: number) => StepStatus;\n}\n\nconst [StepsContext, useStepsContext] =\n createSafeContext<StepsContextValue>('Steps');\n\n/** Per-item index context — injected by Steps parent via Children.map or flat API */\nconst StepIndexContext = React.createContext<number>(0);\n\n/* -----------------------------------------------------------------------------\n * Sub-components\n * -------------------------------------------------------------------------- */\n\ninterface StepIndicatorProps {\n index: number;\n status: StepStatus;\n shape: 'rounded' | 'round';\n bulletType: 'text' | 'icon';\n}\n\nfunction StepIndicatorContent({\n index,\n status,\n shape,\n bulletType,\n}: StepIndicatorProps) {\n if (bulletType === 'icon') {\n if (status === 'complete') {\n return <Check className=\"size-[22px] delight-check-draw\" />;\n }\n if (status === 'active') {\n return (\n <div\n className={cn(\n 'size-5 bg-primary',\n shape === 'rounded' ? 'rounded-sm' : 'rounded-full',\n )}\n />\n );\n }\n\n return <div className=\"size-1.5 rounded-full bg-current\" />;\n }\n\n return index + 1;\n}\n\nfunction StepIndicator({\n index,\n status,\n shape,\n bulletType,\n}: StepIndicatorProps) {\n return (\n <div\n data-slot=\"steps-indicator\"\n aria-hidden=\"true\"\n className={cn(\n stepIndicatorVariants({ shape, status }),\n status === 'complete' && 'delight-check-bounce',\n status === 'active' && 'delight-pulse-once',\n )}\n >\n <StepIndicatorContent\n index={index}\n status={status}\n shape={shape}\n bulletType={bulletType}\n />\n </div>\n );\n}\n\nStepIndicator.displayName = 'StepIndicator';\n\ninterface StepConnectorProps {\n orientation: 'horizontal' | 'vertical';\n isComplete: boolean;\n}\n\nfunction StepConnector({ orientation, isComplete }: StepConnectorProps) {\n return (\n <div\n data-slot=\"steps-connector\"\n aria-hidden=\"true\"\n className={cn(\n stepConnectorVariants({\n orientation,\n status: isComplete ? 'complete' : 'incomplete',\n }),\n isComplete && 'delight-connector-fill',\n )}\n />\n );\n}\n\nStepConnector.displayName = 'StepConnector';\n\nfunction StepsSubtext({ children, className }: StepsSubtextProps) {\n return (\n <span\n data-slot=\"steps-subtext\"\n className={cn(stepSubtextVariants(), className)}\n >\n {children}\n </span>\n );\n}\n\nStepsSubtext.displayName = 'Steps.Subtext';\n\nfunction StepsItem({\n status: statusOverride,\n onClick,\n children,\n className,\n}: StepsItemProps) {\n const ctx = useStepsContext();\n const index = React.useContext(StepIndexContext);\n const status = statusOverride ?? ctx.getStepStatus(index);\n const isFirst = index === 0;\n const handleClick =\n onClick ?? (ctx.onStepClick ? () => ctx.onStepClick?.(index) : undefined);\n\n // Extract subtext from children\n let label: React.ReactNode = null;\n let subtext: React.ReactNode = null;\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === StepsSubtext) {\n subtext = child;\n } else if (child != null && child !== false) {\n label = child;\n }\n });\n\n // Connector colored based on previous step's completion (source step, not destination)\n const prevStepStatus = !isFirst ? ctx.getStepStatus(index - 1) : undefined;\n const connector = !isFirst && (\n <StepConnector\n orientation={ctx.orientation}\n isComplete={prevStepStatus === 'complete'}\n />\n );\n\n const isHorizontal = ctx.orientation === 'horizontal';\n\n // Build indicator element\n const indicator = (\n <StepIndicator\n index={index}\n status={status}\n shape={ctx.shape}\n bulletType={ctx.bulletType}\n />\n );\n\n // Build label element\n // In horizontal mode, w-0 ensures the label doesn't affect the indicator column width.\n // The text overflows visually (centered under the 38px indicator) but the layout\n // width stays fixed, keeping all connectors equally spaced (matching Figma spec).\n const labelElement = (\n <div\n data-slot=\"steps-label\"\n className={cn(\n 'flex flex-col',\n isHorizontal\n ? 'items-center gap-0.5 text-center w-0 whitespace-nowrap'\n : 'items-start gap-0.5 ml-2.5',\n )}\n >\n <span className={stepLabelVariants({ status })}>{label}</span>\n {subtext}\n </div>\n );\n\n // Layout differs by orientation:\n // - Horizontal: connector + (indicator column), items-start so indicators align at top\n // - Vertical: connector above, indicator + label in row\n const content = isHorizontal ? (\n <div className=\"flex w-full items-start\">\n {connector}\n <div className=\"flex flex-col items-center\">\n {indicator}\n {labelElement}\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col items-start\">\n {connector}\n <div className=\"flex items-center\">\n {indicator}\n {labelElement}\n </div>\n </div>\n );\n\n const labelText = React.useMemo(() => extractText(label), [label]);\n const statusSuffix =\n status === 'complete'\n ? ', completed'\n : status === 'active'\n ? ', current'\n : '';\n\n return (\n <li\n data-slot=\"steps-item\"\n aria-current={status === 'active' ? 'step' : undefined}\n aria-label={\n !handleClick && labelText\n ? `Step ${index + 1}: ${labelText}${statusSuffix}`\n : undefined\n }\n className={cn(\n isHorizontal && !isFirst && 'flex-1',\n !handleClick && className,\n )}\n >\n {handleClick ? (\n <button\n type=\"button\"\n onClick={handleClick}\n aria-label={`Step ${index + 1}: ${labelText || ''}${statusSuffix}`}\n className={cn(\n 'cursor-pointer',\n isHorizontal && 'w-full',\n className,\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-sm',\n )}\n >\n {content}\n </button>\n ) : (\n content\n )}\n </li>\n );\n}\n\nStepsItem.displayName = 'Steps.Item';\n\n/* -----------------------------------------------------------------------------\n * Main Component\n * -------------------------------------------------------------------------- */\n\n/**\n * Steps displays a multi-step progress indicator for wizards and workflows.\n * Supports horizontal/vertical orientation, numbered or icon bullets, and clickable steps.\n *\n * @llms Wizard/workflow progress with horizontal/vertical layout, numbered or icon steps\n * @example\n * ```tsx\n * <Steps\n * steps={[{ label: 'Details' }, { label: 'Payment' }, { label: 'Confirm' }]}\n * currentStep={1}\n * orientation=\"horizontal\"\n * />\n * ```\n */\nfunction Steps({\n steps,\n currentStep = 0,\n orientation = 'horizontal',\n shape = 'rounded',\n bulletType = 'text',\n onStepClick,\n children,\n className,\n}: StepsProps) {\n const getStepStatus = React.useCallback(\n (index: number): StepStatus => {\n if (index < currentStep) return 'complete';\n if (index === currentStep) return 'active';\n return 'incomplete';\n },\n [currentStep],\n );\n\n const contextValue = React.useMemo<StepsContextValue>(\n () => ({\n orientation,\n shape,\n bulletType,\n onStepClick,\n getStepStatus,\n }),\n [orientation, shape, bulletType, onStepClick, getStepStatus],\n );\n\n // Determine if using flat API or compound API\n const useCompoundAPI = !steps && React.Children.count(children) > 0;\n\n const renderFlatAPI = () => {\n if (!steps || steps.length === 0) return null;\n\n return steps.map((step, index) => (\n <StepIndexContext.Provider key={`${index}-${step.label}`} value={index}>\n <StepsItem>\n {step.label}\n {step.subtext && <StepsSubtext>{step.subtext}</StepsSubtext>}\n </StepsItem>\n </StepIndexContext.Provider>\n ));\n };\n\n const renderCompoundAPI = () => {\n return React.Children.map(children, (child, index) => (\n <StepIndexContext.Provider value={index}>\n {child}\n </StepIndexContext.Provider>\n ));\n };\n\n return (\n <StepsContext.Provider value={contextValue}>\n <nav\n aria-label=\"Progress steps\"\n data-slot=\"steps\"\n // biome-ignore lint/a11y/noNoninteractiveTabindex: Focusable scroll region satisfies axe scrollable-region-focusable.\n tabIndex={0}\n className={cn(\n 'overflow-x-auto focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring',\n className,\n )}\n >\n <ol\n data-slot=\"steps-list\"\n className={cn(\n 'flex',\n orientation === 'horizontal'\n ? 'flex-row items-start px-4'\n : 'flex-col items-start',\n )}\n >\n {useCompoundAPI ? renderCompoundAPI() : renderFlatAPI()}\n </ol>\n </nav>\n </StepsContext.Provider>\n );\n}\n\nSteps.displayName = 'Steps';\n\n/* -----------------------------------------------------------------------------\n * Compound Export\n * -------------------------------------------------------------------------- */\n\n/**\n * @llms Wizard/workflow progress with horizontal/vertical layout, numbered or icon steps\n */\nexport const StepsCompound = Object.assign(Steps, {\n Item: StepsItem,\n Subtext: StepsSubtext,\n});\n\nexport {\n StepsCompound as Steps,\n StepsItem,\n StepsSubtext,\n stepConnectorVariants,\n stepIndicatorVariants,\n stepLabelVariants,\n stepSubtextVariants,\n};\n","/**\n * Web Component wrapper for Steps\n * Custom element: <hf-steps>\n *\n * @generated by scripts/generate-wc-components.ts\n * DO NOT EDIT MANUALLY\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { Steps } from '../components/organisms/content/Steps';\nimport { parseAttr, parseValue, type PropDefs } from './_shared';\n\n/**\n * Event wrapper that dispatches custom DOM events\n */\nfunction createEventDispatcher(element: HTMLElement) {\n return {\n onStepClick: (index: number) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('step-click', {\n detail: index,\n bubbles: true,\n composed: true\n }));\n }\n };\n}\n\n/**\n * Wrapper component that connects React events to DOM custom events\n */\nfunction StepsWrapper(props: React.ComponentProps<typeof Steps> & { _hostElement?: HTMLElement }) {\n const { _hostElement, ...restProps } = props;\n\n const eventHandlers = React.useMemo(() => {\n if (!_hostElement) return {};\n return createEventDispatcher(_hostElement);\n }, [_hostElement]);\n\n return React.createElement(Steps, { ...restProps, ...eventHandlers });\n}\n\n/**\n * Prop type definitions for attribute parsing\n */\nconst propTypes: PropDefs = {\n steps: 'json',\n currentStep: 'number',\n orientation: 'string',\n shape: 'string',\n bulletType: 'string',\n className: 'string'\n};\n\nclass StepsWC extends HTMLElement {\n private _root: ReturnType<typeof createRoot> | null = null;\n private _childrenContainer: HTMLDivElement | null = null;\n private _props: Record<string, unknown> = {};\n private _initialized = false;\n\n connectedCallback() {\n setTimeout(() => this._initialize(), 0);\n }\n\n private _initialize() {\n if (this._initialized) return;\n this._initialized = true;\n\n const originalChildren: Node[] = [];\n for (const child of Array.from(this.childNodes)) {\n if (child.nodeType === Node.TEXT_NODE && !child.textContent?.trim()) {\n continue;\n }\n originalChildren.push(child);\n }\n\n const reactContainer = this.ownerDocument.createElement('div');\n reactContainer.style.display = 'contents';\n\n this._childrenContainer = this.ownerDocument.createElement('div');\n this._childrenContainer.style.display = 'contents';\n\n originalChildren.forEach((child) => this._childrenContainer!.appendChild(child));\n\n while (this.firstChild) this.removeChild(this.firstChild);\n this.appendChild(reactContainer);\n\n this._root = createRoot(reactContainer);\n this._render();\n }\n\n disconnectedCallback() {\n this._root?.unmount();\n this._root = null;\n }\n\n attributeChangedCallback(_name: string, _oldValue: string | null, _newValue: string | null) {\n this._render();\n }\n\n static get observedAttributes() {\n return Object.keys(propTypes).map((prop) =>\n prop.replace(/([A-Z])/g, '-$1').toLowerCase(),\n );\n }\n\n _setProp(name: string, value: unknown) {\n const propType = propTypes[name] || 'string';\n this._props[name] = parseValue(value, propType);\n this._render();\n }\n\n _getProp(name: string): unknown {\n if (name in this._props) {\n return this._props[name];\n }\n const attrName = name.replace(/([A-Z])/g, '-$1').toLowerCase();\n const propType = propTypes[name] || 'string';\n return parseAttr(this.getAttribute(attrName), propType);\n }\n\n private _render() {\n if (!this._root || !this._childrenContainer) return;\n\n const props: Record<string, unknown> = {};\n for (const [propName, propType] of Object.entries(propTypes)) {\n if (propName in this._props) {\n props[propName] = this._props[propName];\n } else {\n const attrName = propName.replace(/([A-Z])/g, '-$1').toLowerCase();\n props[propName] = parseAttr(this.getAttribute(attrName), propType);\n }\n }\n\n const element = React.createElement(\n StepsWrapper,\n { ...props, _hostElement: this },\n React.createElement('span', {\n ref: (el: HTMLSpanElement | null) => {\n if (el && this._childrenContainer) {\n el.replaceWith(this._childrenContainer);\n }\n },\n style: { display: 'contents' },\n }),\n );\n\n this._root.render(element);\n }\n}\n\nfor (const propName of Object.keys(propTypes)) {\n Object.defineProperty(StepsWC.prototype, propName, {\n get() {\n return this._getProp(propName);\n },\n set(value: unknown) {\n this._setProp(propName, value);\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nif (typeof customElements !== 'undefined' && !customElements.get('hf-steps')) {\n customElements.define('hf-steps', StepsWC);\n}\n\nexport { StepsWC };\nexport default StepsWC;\n"],"mappings":"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"}
1
+ {"version":3,"file":"hf-steps.js","names":[],"sources":["../../src/components/organisms/content/Steps/Steps.tsx","../../src/wc/hf-steps.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\nimport { createSafeContext } from '@/lib/create-safe-context';\nimport { cn, extractText } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Types\n * -------------------------------------------------------------------------- */\n\nexport type StepStatus = 'complete' | 'active' | 'incomplete';\n\nexport interface StepData {\n label: string;\n subtext?: string;\n}\n\nexport interface StepsProps {\n /** Steps data for flat API */\n steps?: StepData[];\n /** Current step index (0-based) for flat API */\n currentStep?: number;\n /** Orientation of the steps */\n orientation?: 'horizontal' | 'vertical';\n /** Shape of step indicators */\n shape?: 'rounded' | 'round';\n /** Type of bullet content */\n bulletType?: 'text' | 'icon';\n /** Callback when a step is clicked */\n onStepClick?: (index: number) => void;\n /** Children for compound API */\n children?: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\nexport interface StepsItemProps {\n /** Override auto-calculated status */\n status?: StepStatus;\n /** Click handler for this step */\n onClick?: () => void;\n /** Step label content */\n children: React.ReactNode;\n /** Additional className */\n className?: string;\n}\n\nexport interface StepsSubtextProps {\n children: React.ReactNode;\n className?: string;\n}\n\n/* -----------------------------------------------------------------------------\n * Variants\n * -------------------------------------------------------------------------- */\n\nconst stepIndicatorVariants = cva(\n 'flex items-center justify-center shrink-0 size-[38px] font-medium text-lg transition-all duration-200 ease-out motion-reduce:transition-none',\n {\n variants: {\n shape: {\n rounded: 'rounded-lg',\n round: 'rounded-full',\n },\n status: {\n complete: 'bg-primary text-primary-foreground shadow-sm',\n active: 'bg-background border-2 border-primary text-primary shadow-sm',\n incomplete: 'bg-accent text-muted-foreground',\n },\n },\n defaultVariants: {\n shape: 'rounded',\n status: 'incomplete',\n },\n },\n);\n\nconst stepConnectorVariants = cva(\n 'shrink-0 transition-colors duration-200 ease-out motion-reduce:transition-none',\n {\n variants: {\n orientation: {\n // Horizontal: fluid width fills available space; mt-[18px] centers 2px line with 38px indicator\n horizontal: 'h-0.5 flex-1 min-w-4 mx-2 mt-[18px]',\n // Vertical: fixed size, centered under 38px indicator\n vertical: 'w-0.5 h-[30px] my-1 ml-[18px]',\n },\n status: {\n complete: 'bg-primary',\n incomplete: 'bg-border',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n status: 'incomplete',\n },\n },\n);\n\nconst stepLabelVariants = cva('text-base leading-6', {\n variants: {\n status: {\n complete: 'text-card-foreground',\n active: 'text-card-foreground',\n incomplete: 'text-secondary-foreground',\n },\n },\n defaultVariants: {\n status: 'incomplete',\n },\n});\n\nconst stepSubtextVariants = cva('text-sm leading-5 text-secondary-foreground');\n\n/* -----------------------------------------------------------------------------\n * Context\n * -------------------------------------------------------------------------- */\n\ninterface StepsContextValue {\n orientation: 'horizontal' | 'vertical';\n shape: 'rounded' | 'round';\n bulletType: 'text' | 'icon';\n onStepClick?: (index: number) => void;\n getStepStatus: (index: number) => StepStatus;\n}\n\nconst [StepsContext, useStepsContext] =\n createSafeContext<StepsContextValue>('Steps');\n\n/** Per-item index context — injected by Steps parent via Children.map or flat API */\nconst StepIndexContext = React.createContext<number>(0);\n\n/* -----------------------------------------------------------------------------\n * Sub-components\n * -------------------------------------------------------------------------- */\n\ninterface StepIndicatorProps {\n index: number;\n status: StepStatus;\n shape: 'rounded' | 'round';\n bulletType: 'text' | 'icon';\n}\n\nfunction StepIndicatorContent({\n index,\n status,\n shape,\n bulletType,\n}: StepIndicatorProps) {\n if (bulletType === 'icon') {\n if (status === 'complete') {\n return <Check className=\"size-[22px] delight-check-draw\" />;\n }\n if (status === 'active') {\n return (\n <div\n className={cn(\n 'size-5 bg-primary',\n shape === 'rounded' ? 'rounded-sm' : 'rounded-full',\n )}\n />\n );\n }\n\n return <div className=\"size-1.5 rounded-full bg-current\" />;\n }\n\n return index + 1;\n}\n\nfunction StepIndicator({\n index,\n status,\n shape,\n bulletType,\n}: StepIndicatorProps) {\n return (\n <div\n data-slot=\"steps-indicator\"\n aria-hidden=\"true\"\n className={cn(\n stepIndicatorVariants({ shape, status }),\n status === 'complete' && 'delight-check-bounce',\n status === 'active' && 'delight-pulse-once',\n )}\n >\n <StepIndicatorContent\n index={index}\n status={status}\n shape={shape}\n bulletType={bulletType}\n />\n </div>\n );\n}\n\nStepIndicator.displayName = 'StepIndicator';\n\ninterface StepConnectorProps {\n orientation: 'horizontal' | 'vertical';\n isComplete: boolean;\n}\n\nfunction StepConnector({ orientation, isComplete }: StepConnectorProps) {\n return (\n <div\n data-slot=\"steps-connector\"\n aria-hidden=\"true\"\n className={cn(\n stepConnectorVariants({\n orientation,\n status: isComplete ? 'complete' : 'incomplete',\n }),\n isComplete && 'delight-connector-fill',\n )}\n />\n );\n}\n\nStepConnector.displayName = 'StepConnector';\n\nfunction StepsSubtext({ children, className }: StepsSubtextProps) {\n return (\n <span\n data-slot=\"steps-subtext\"\n className={cn(stepSubtextVariants(), className)}\n >\n {children}\n </span>\n );\n}\n\nStepsSubtext.displayName = 'Steps.Subtext';\n\nfunction StepsItem({\n status: statusOverride,\n onClick,\n children,\n className,\n}: StepsItemProps) {\n const ctx = useStepsContext();\n const index = React.useContext(StepIndexContext);\n const status = statusOverride ?? ctx.getStepStatus(index);\n const isFirst = index === 0;\n const handleClick =\n onClick ?? (ctx.onStepClick ? () => ctx.onStepClick?.(index) : undefined);\n\n // Extract subtext from children\n let label: React.ReactNode = null;\n let subtext: React.ReactNode = null;\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === StepsSubtext) {\n subtext = child;\n } else if (child != null && child !== false) {\n label = child;\n }\n });\n\n // Connector colored based on previous step's completion (source step, not destination)\n const prevStepStatus = !isFirst ? ctx.getStepStatus(index - 1) : undefined;\n const connector = !isFirst && (\n <StepConnector\n orientation={ctx.orientation}\n isComplete={prevStepStatus === 'complete'}\n />\n );\n\n const isHorizontal = ctx.orientation === 'horizontal';\n\n // Build indicator element\n const indicator = (\n <StepIndicator\n index={index}\n status={status}\n shape={ctx.shape}\n bulletType={ctx.bulletType}\n />\n );\n\n // Build label element\n // In horizontal mode, w-0 ensures the label doesn't affect the indicator column width.\n // The text overflows visually (centered under the 38px indicator) but the layout\n // width stays fixed, keeping all connectors equally spaced (matching Figma spec).\n const labelElement = (\n <div\n data-slot=\"steps-label\"\n className={cn(\n 'flex flex-col',\n isHorizontal\n ? 'items-center gap-0.5 text-center w-0 whitespace-nowrap'\n : 'items-start gap-0.5 ml-2.5',\n )}\n >\n <span className={stepLabelVariants({ status })}>{label}</span>\n {subtext}\n </div>\n );\n\n // Layout differs by orientation:\n // - Horizontal: connector + (indicator column), items-start so indicators align at top\n // - Vertical: connector above, indicator + label in row\n const content = isHorizontal ? (\n <div className=\"flex w-full items-start\">\n {connector}\n <div className=\"flex flex-col items-center\">\n {indicator}\n {labelElement}\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col items-start\">\n {connector}\n <div className=\"flex items-center\">\n {indicator}\n {labelElement}\n </div>\n </div>\n );\n\n const labelText = React.useMemo(() => extractText(label), [label]);\n const statusSuffix =\n status === 'complete'\n ? ', completed'\n : status === 'active'\n ? ', current'\n : '';\n\n return (\n <li\n data-slot=\"steps-item\"\n aria-current={status === 'active' ? 'step' : undefined}\n aria-label={\n !handleClick && labelText\n ? `Step ${index + 1}: ${labelText}${statusSuffix}`\n : undefined\n }\n className={cn(\n isHorizontal && !isFirst && 'flex-1',\n !handleClick && className,\n )}\n >\n {handleClick ? (\n <button\n type=\"button\"\n onClick={handleClick}\n aria-label={`Step ${index + 1}: ${labelText || ''}${statusSuffix}`}\n className={cn(\n 'cursor-pointer',\n isHorizontal && 'w-full',\n className,\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-sm',\n )}\n >\n {content}\n </button>\n ) : (\n content\n )}\n </li>\n );\n}\n\nStepsItem.displayName = 'Steps.Item';\n\n/* -----------------------------------------------------------------------------\n * Main Component\n * -------------------------------------------------------------------------- */\n\n/**\n * Steps displays a multi-step progress indicator for wizards and workflows.\n * Supports horizontal/vertical orientation, numbered or icon bullets, and clickable steps.\n *\n * @llms Wizard/workflow progress with horizontal/vertical layout, numbered or icon steps\n * @example\n * ```tsx\n * <Steps\n * steps={[{ label: 'Details' }, { label: 'Payment' }, { label: 'Confirm' }]}\n * currentStep={1}\n * orientation=\"horizontal\"\n * />\n * ```\n */\nfunction Steps({\n steps,\n currentStep = 0,\n orientation = 'horizontal',\n shape = 'rounded',\n bulletType = 'text',\n onStepClick,\n children,\n className,\n}: StepsProps) {\n const getStepStatus = React.useCallback(\n (index: number): StepStatus => {\n if (index < currentStep) return 'complete';\n if (index === currentStep) return 'active';\n return 'incomplete';\n },\n [currentStep],\n );\n\n const contextValue = React.useMemo<StepsContextValue>(\n () => ({\n orientation,\n shape,\n bulletType,\n onStepClick,\n getStepStatus,\n }),\n [orientation, shape, bulletType, onStepClick, getStepStatus],\n );\n\n // Determine if using flat API or compound API\n const useCompoundAPI = !steps && React.Children.count(children) > 0;\n\n const renderFlatAPI = () => {\n if (!steps || steps.length === 0) return null;\n\n return steps.map((step, index) => (\n <StepIndexContext.Provider key={`${index}-${step.label}`} value={index}>\n <StepsItem>\n {step.label}\n {step.subtext && <StepsSubtext>{step.subtext}</StepsSubtext>}\n </StepsItem>\n </StepIndexContext.Provider>\n ));\n };\n\n const renderCompoundAPI = () => {\n return React.Children.map(children, (child, index) => (\n <StepIndexContext.Provider value={index}>\n {child}\n </StepIndexContext.Provider>\n ));\n };\n\n return (\n <StepsContext.Provider value={contextValue}>\n <nav\n aria-label=\"Progress steps\"\n data-slot=\"steps\"\n // biome-ignore lint/a11y/noNoninteractiveTabindex: Focusable scroll region satisfies axe scrollable-region-focusable.\n tabIndex={0}\n className={cn(\n 'overflow-x-auto focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring',\n className,\n )}\n >\n <ol\n data-slot=\"steps-list\"\n className={cn(\n 'flex',\n orientation === 'horizontal'\n ? 'flex-row items-start px-4'\n : 'flex-col items-start',\n )}\n >\n {useCompoundAPI ? renderCompoundAPI() : renderFlatAPI()}\n </ol>\n </nav>\n </StepsContext.Provider>\n );\n}\n\nSteps.displayName = 'Steps';\n\n/* -----------------------------------------------------------------------------\n * Compound Export\n * -------------------------------------------------------------------------- */\n\n/**\n * @llms Wizard/workflow progress with horizontal/vertical layout, numbered or icon steps\n */\nexport const StepsCompound = Object.assign(Steps, {\n Item: StepsItem,\n Subtext: StepsSubtext,\n});\n\nexport {\n StepsCompound as Steps,\n StepsItem,\n StepsSubtext,\n stepConnectorVariants,\n stepIndicatorVariants,\n stepLabelVariants,\n stepSubtextVariants,\n};\n","/**\n * Web Component wrapper for Steps\n * Custom element: <hf-steps>\n *\n * @generated by scripts/generate-wc-components.ts\n * DO NOT EDIT MANUALLY\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { Steps } from '../components/organisms/content/Steps';\nimport { parseAttr, parseValue, type PropDefs } from './_shared';\n\n/**\n * Event wrapper that dispatches custom DOM events\n */\nfunction createEventDispatcher(element: HTMLElement) {\n return {\n onStepClick: (index: number) => {\n const CustomEventConstructor =\n element.ownerDocument.defaultView?.CustomEvent ?? CustomEvent;\n element.dispatchEvent(new CustomEventConstructor('step-click', {\n detail: index,\n bubbles: true,\n composed: true\n }));\n }\n };\n}\n\n/**\n * Wrapper component that connects React events to DOM custom events\n */\nfunction StepsWrapper(props: React.ComponentProps<typeof Steps> & { _hostElement?: HTMLElement }) {\n const { _hostElement, ...restProps } = props;\n\n const eventHandlers = React.useMemo(() => {\n if (!_hostElement) return {};\n return createEventDispatcher(_hostElement);\n }, [_hostElement]);\n\n return React.createElement(Steps, { ...restProps, ...eventHandlers });\n}\n\n/**\n * Prop type definitions for attribute parsing\n */\nconst propTypes: PropDefs = {\n steps: 'json',\n currentStep: 'number',\n orientation: 'string',\n shape: 'string',\n bulletType: 'string',\n className: 'string'\n};\n\nclass StepsWC extends HTMLElement {\n private _root: ReturnType<typeof createRoot> | null = null;\n private _childrenContainer: HTMLDivElement | null = null;\n private _props: Record<string, unknown> = {};\n private _initialized = false;\n\n connectedCallback() {\n setTimeout(() => this._initialize(), 0);\n }\n\n private _initialize() {\n if (this._initialized) return;\n this._initialized = true;\n\n const originalChildren: Node[] = [];\n for (const child of Array.from(this.childNodes)) {\n if (child.nodeType === Node.TEXT_NODE && !child.textContent?.trim()) {\n continue;\n }\n originalChildren.push(child);\n }\n\n const reactContainer = this.ownerDocument.createElement('div');\n reactContainer.style.display = 'contents';\n\n this._childrenContainer = this.ownerDocument.createElement('div');\n this._childrenContainer.style.display = 'contents';\n\n originalChildren.forEach((child) => this._childrenContainer!.appendChild(child));\n\n while (this.firstChild) this.removeChild(this.firstChild);\n this.appendChild(reactContainer);\n\n this._root = createRoot(reactContainer);\n this._render();\n }\n\n disconnectedCallback() {\n this._root?.unmount();\n this._root = null;\n }\n\n attributeChangedCallback(_name: string, _oldValue: string | null, _newValue: string | null) {\n this._render();\n }\n\n static get observedAttributes() {\n return Object.keys(propTypes).map((prop) =>\n prop.replace(/([A-Z])/g, '-$1').toLowerCase(),\n );\n }\n\n _setProp(name: string, value: unknown) {\n const propType = propTypes[name] || 'string';\n this._props[name] = parseValue(value, propType);\n this._render();\n }\n\n _getProp(name: string): unknown {\n if (name in this._props) {\n return this._props[name];\n }\n const attrName = name.replace(/([A-Z])/g, '-$1').toLowerCase();\n const propType = propTypes[name] || 'string';\n return parseAttr(this.getAttribute(attrName), propType);\n }\n\n private _render() {\n if (!this._root || !this._childrenContainer) return;\n\n const props: Record<string, unknown> = {};\n for (const [propName, propType] of Object.entries(propTypes)) {\n if (propName in this._props) {\n props[propName] = this._props[propName];\n } else {\n const attrName = propName.replace(/([A-Z])/g, '-$1').toLowerCase();\n props[propName] = parseAttr(this.getAttribute(attrName), propType);\n }\n }\n\n const element = React.createElement(\n StepsWrapper,\n { ...props, _hostElement: this },\n React.createElement('span', {\n ref: (el: HTMLSpanElement | null) => {\n if (el && this._childrenContainer) {\n el.replaceWith(this._childrenContainer);\n }\n },\n style: { display: 'contents' },\n }),\n );\n\n this._root.render(element);\n }\n}\n\nfor (const propName of Object.keys(propTypes)) {\n Object.defineProperty(StepsWC.prototype, propName, {\n get() {\n return this._getProp(propName);\n },\n set(value: unknown) {\n this._setProp(propName, value);\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nif (typeof customElements !== 'undefined' && !customElements.get('hf-steps')) {\n customElements.define('hf-steps', StepsWC);\n}\n\nexport { StepsWC };\nexport default StepsWC;\n"],"mappings":"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"}
@@ -31926,7 +31926,7 @@ var bp = [$5, ep], xp = [[Nm, { output: "mathml" }]], Ue = "min-w-0 max-w-full b
31926
31926
  inverted: "text-primary-foreground/70"
31927
31927
  },
31928
31928
  faint: {
31929
- default: "text-text-quaternary",
31929
+ default: "text-secondary-foreground",
31930
31930
  inverted: "text-primary-foreground/50"
31931
31931
  },
31932
31932
  border: {