@flikk/ui 1.0.0-beta.30 → 1.0.0-beta.32

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 (610) hide show
  1. package/CHANGELOG.md +375 -5
  2. package/dist/components/ai/AgentRequest/AgentRequest.animations.d.ts +25 -0
  3. package/dist/components/ai/AgentRequest/AgentRequest.animations.js +81 -0
  4. package/dist/components/ai/AgentRequest/AgentRequest.d.ts +3 -0
  5. package/dist/components/ai/AgentRequest/AgentRequest.js +435 -0
  6. package/dist/components/ai/AgentRequest/AgentRequest.theme.d.ts +2 -0
  7. package/dist/components/ai/AgentRequest/AgentRequest.theme.js +106 -0
  8. package/dist/components/ai/AgentRequest/AgentRequest.types.d.ts +241 -0
  9. package/dist/components/ai/AgentRequest/index.d.ts +3 -0
  10. package/dist/components/ai/AgentStatus/AgentStatus.d.ts +3 -0
  11. package/dist/components/ai/AgentStatus/AgentStatus.js +144 -0
  12. package/dist/components/ai/AgentStatus/AgentStatus.theme.d.ts +2 -0
  13. package/dist/components/ai/AgentStatus/AgentStatus.theme.js +37 -0
  14. package/dist/components/ai/AgentStatus/AgentStatus.types.d.ts +116 -0
  15. package/dist/components/ai/AgentStatus/index.d.ts +3 -0
  16. package/dist/components/ai/CodeBlock/CodeBlock.js +3 -3
  17. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +2 -2
  18. package/dist/components/ai/PromptInput/PromptInput.js +13 -14
  19. package/dist/components/ai/PromptInput/PromptInput.theme.js +3 -3
  20. package/dist/components/ai/PromptInput/VoiceRecorder.js +3 -3
  21. package/dist/components/ai/PromptSuggestion/PromptSuggestion.theme.js +2 -2
  22. package/dist/components/ai/Reasoning/Reasoning.d.ts +5 -0
  23. package/dist/components/ai/Reasoning/Reasoning.js +40 -0
  24. package/dist/components/ai/Reasoning/Reasoning.theme.d.ts +6 -0
  25. package/dist/components/ai/Reasoning/Reasoning.theme.js +36 -0
  26. package/dist/components/ai/Reasoning/Reasoning.types.d.ts +73 -0
  27. package/dist/components/ai/Reasoning/ReasoningTrace.d.ts +11 -0
  28. package/dist/components/ai/Reasoning/ReasoningTrace.js +84 -0
  29. package/dist/components/ai/Reasoning/index.d.ts +3 -0
  30. package/dist/components/ai/SourceCitation/SourceCitation.d.ts +4 -0
  31. package/dist/components/ai/SourceCitation/SourceCitation.js +29 -0
  32. package/dist/components/ai/SourceCitation/SourceCitation.theme.d.ts +2 -0
  33. package/dist/components/ai/SourceCitation/SourceCitation.theme.js +23 -0
  34. package/dist/components/ai/SourceCitation/SourceCitation.types.d.ts +55 -0
  35. package/dist/components/ai/SourceCitation/index.d.ts +3 -0
  36. package/dist/components/ai/StreamingResponse/AnimatedText.d.ts +7 -0
  37. package/dist/components/ai/StreamingResponse/AnimatedText.js +8 -7
  38. package/dist/components/ai/StreamingResponse/ErrorDisplay.js +2 -2
  39. package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -0
  40. package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +4 -4
  41. package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
  42. package/dist/components/ai/StreamingResponse/StreamingCursor.js +10 -7
  43. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +10 -0
  44. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +59 -33
  45. package/dist/components/ai/StreamingResponse/StreamingResponse.js +14 -10
  46. package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +3 -1
  47. package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +33 -2
  48. package/dist/components/ai/StreamingResponse/StreamingSurface.d.ts +13 -0
  49. package/dist/components/ai/StreamingResponse/StreamingSurface.js +38 -0
  50. package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +5 -0
  51. package/dist/components/ai/StreamingResponse/WordAnimationContext.js +5 -4
  52. package/dist/components/ai/StreamingResponse/index.d.ts +4 -2
  53. package/dist/components/ai/TokenCounter/TokenCounter.js +2 -2
  54. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
  55. package/dist/components/ai/index.d.ts +6 -2
  56. package/dist/components/ai/index.js +10 -3
  57. package/dist/components/ai/shared/StatusIndicator.d.ts +8 -0
  58. package/dist/components/ai/shared/StatusIndicator.js +34 -0
  59. package/dist/components/canvas/BaseNode.js +1 -1
  60. package/dist/components/canvas/CanvasToolbar.js +2 -3
  61. package/dist/components/canvas/Edge.js +2 -2
  62. package/dist/components/canvas/NodeControls.js +2 -3
  63. package/dist/components/canvas/NodeRenderer.js +4 -4
  64. package/dist/components/charts/ActivityRings/ActivityRings.js +4 -4
  65. package/dist/components/charts/ActivityRings/ActivityRings.theme.js +1 -1
  66. package/dist/components/charts/AreaChart/AreaChart.js +24 -35
  67. package/dist/components/charts/AreaChart/AreaChart.theme.d.ts +1 -6
  68. package/dist/components/charts/AreaChart/AreaChart.theme.js +10 -22
  69. package/dist/components/charts/AreaChart/AreaChart.types.d.ts +18 -11
  70. package/dist/components/charts/AreaChart/AreaChart.types.js +10 -3
  71. package/dist/components/charts/AreaChart/index.d.ts +1 -1
  72. package/dist/components/charts/BarChart/BarChart.js +13 -32
  73. package/dist/components/charts/BarChart/BarChart.types.d.ts +20 -16
  74. package/dist/components/charts/BarChart/BarChart.types.js +11 -4
  75. package/dist/components/charts/ComboChart/BarRenderer.js +10 -7
  76. package/dist/components/charts/ComboChart/BarRenderer.types.d.ts +1 -1
  77. package/dist/components/charts/ComboChart/ComboChart.js +11 -24
  78. package/dist/components/charts/ComboChart/ComboChart.types.d.ts +15 -13
  79. package/dist/components/charts/ComboChart/ComboChart.types.js +14 -2
  80. package/dist/components/charts/ComboChart/ComboChartCanvas.js +1 -1
  81. package/dist/components/charts/ComboChart/LineRenderer.js +16 -11
  82. package/dist/components/charts/ComboChart/LineRenderer.types.d.ts +1 -1
  83. package/dist/components/charts/DonutChart/DonutChart.theme.js +4 -4
  84. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
  85. package/dist/components/charts/Heatmap/Heatmap.js +49 -42
  86. package/dist/components/charts/Heatmap/Heatmap.theme.d.ts +6 -2
  87. package/dist/components/charts/Heatmap/Heatmap.theme.js +20 -8
  88. package/dist/components/charts/Heatmap/Heatmap.types.d.ts +49 -82
  89. package/dist/components/charts/Heatmap/HeatmapCell.js +30 -81
  90. package/dist/components/charts/Heatmap/HeatmapLegend.d.ts +7 -6
  91. package/dist/components/charts/Heatmap/HeatmapLegend.js +6 -6
  92. package/dist/components/charts/Heatmap/index.d.ts +1 -1
  93. package/dist/components/charts/Heatmap/utils/heatmapUtils.d.ts +7 -12
  94. package/dist/components/charts/Heatmap/utils/heatmapUtils.js +16 -61
  95. package/dist/components/charts/Heatmap/utils/heatmapUtils.test.d.ts +1 -0
  96. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.d.ts +16 -0
  97. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.js +237 -0
  98. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.d.ts +62 -0
  99. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.types.js +21 -0
  100. package/dist/components/charts/HorizontalBarChart/index.d.ts +3 -0
  101. package/dist/components/charts/LineChart/LineChart.js +11 -28
  102. package/dist/components/charts/LineChart/LineChart.types.d.ts +11 -14
  103. package/dist/components/charts/LineChart/LineChart.types.js +11 -3
  104. package/dist/components/charts/LollipopChart/LollipopChart.d.ts +3 -0
  105. package/dist/components/charts/LollipopChart/LollipopChart.js +361 -0
  106. package/dist/components/charts/LollipopChart/LollipopChart.types.d.ts +42 -0
  107. package/dist/components/charts/LollipopChart/LollipopChart.types.js +12 -0
  108. package/dist/components/charts/LollipopChart/index.d.ts +3 -0
  109. package/dist/components/charts/RadarChart/RadarChart.js +1 -1
  110. package/dist/components/charts/StackedBarChart/StackedBarChart.js +151 -133
  111. package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +20 -18
  112. package/dist/components/charts/StackedBarChart/StackedBarChart.types.js +10 -4
  113. package/dist/components/charts/hooks/useChartAccessibility.d.ts +1 -1
  114. package/dist/components/charts/hooks/useChartAccessibility.js +12 -6
  115. package/dist/components/charts/hooks/useTooltipPosition.js +18 -6
  116. package/dist/components/charts/index.d.ts +10 -8
  117. package/dist/components/charts/index.js +8 -4
  118. package/dist/components/charts/shared/ChartAxis/CategoryYAxis.d.ts +14 -0
  119. package/dist/components/charts/shared/ChartAxis/CategoryYAxis.js +35 -0
  120. package/dist/components/charts/shared/ChartAxis/ChartAxis.types.d.ts +69 -8
  121. package/dist/components/charts/shared/ChartAxis/ValueXAxis.d.ts +14 -0
  122. package/dist/components/charts/shared/ChartAxis/ValueXAxis.js +64 -0
  123. package/dist/components/charts/shared/ChartAxis/XAxis.js +1 -1
  124. package/dist/components/charts/shared/ChartAxis/YAxis.js +2 -2
  125. package/dist/components/charts/shared/ChartAxis/index.d.ts +3 -1
  126. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.d.ts +0 -2
  127. package/dist/components/charts/shared/ChartGrid/HorizontalGrid.js +1 -1
  128. package/dist/components/charts/shared/ChartGrid/VerticalGrid.d.ts +29 -0
  129. package/dist/components/charts/shared/ChartGrid/VerticalGrid.js +26 -0
  130. package/dist/components/charts/shared/ChartGrid/index.d.ts +2 -0
  131. package/dist/components/charts/shared/ChartMarker/ChartMarker.js +7 -1
  132. package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
  133. package/dist/components/charts/shared/index.d.ts +1 -1
  134. package/dist/components/charts/theme/chart.theme.js +21 -26
  135. package/dist/components/charts/types/chart.types.d.ts +9 -5
  136. package/dist/components/charts/types/chart.types.js +1 -7
  137. package/dist/components/charts/utils/animation-utils.d.ts +12 -7
  138. package/dist/components/charts/utils/animation-utils.js +19 -21
  139. package/dist/components/charts/utils/bar-emphasis.d.ts +32 -3
  140. package/dist/components/charts/utils/bar-emphasis.js +24 -8
  141. package/dist/components/charts/utils/index.d.ts +1 -0
  142. package/dist/components/charts/utils/series-color.d.ts +7 -0
  143. package/dist/components/charts/utils/series-color.js +20 -0
  144. package/dist/components/core/Accordion/Accordion.theme.js +3 -3
  145. package/dist/components/core/Accordion/AccordionTrigger.js +2 -2
  146. package/dist/components/core/Alert/Alert.animations.d.ts +11 -3
  147. package/dist/components/core/Alert/Alert.animations.js +30 -8
  148. package/dist/components/core/Alert/Alert.js +23 -9
  149. package/dist/components/core/Alert/Alert.theme.js +1 -1
  150. package/dist/components/core/Alert/Alert.types.d.ts +4 -2
  151. package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
  152. package/dist/components/core/Avatar/Avatar.js +50 -42
  153. package/dist/components/core/Avatar/Avatar.theme.d.ts +8 -4
  154. package/dist/components/core/Avatar/Avatar.theme.js +64 -8
  155. package/dist/components/core/Avatar/Avatar.types.d.ts +13 -2
  156. package/dist/components/core/Avatar/index.d.ts +1 -1
  157. package/dist/components/core/AvatarGroup/AvatarGroup.js +6 -8
  158. package/dist/components/core/AvatarGroup/AvatarGroup.theme.d.ts +1 -2
  159. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +2 -6
  160. package/dist/components/core/AvatarGroup/AvatarGroup.types.d.ts +0 -6
  161. package/dist/components/core/AvatarGroup/index.d.ts +1 -1
  162. package/dist/components/core/Badge/Badge.animations.d.ts +0 -5
  163. package/dist/components/core/Badge/Badge.animations.js +5 -82
  164. package/dist/components/core/Badge/Badge.d.ts +7 -4
  165. package/dist/components/core/Badge/Badge.js +33 -65
  166. package/dist/components/core/Badge/Badge.theme.js +26 -24
  167. package/dist/components/core/Badge/Badge.types.d.ts +18 -34
  168. package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.d.ts +1 -4
  169. package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +6 -6
  170. package/dist/components/core/Button/Button.js +14 -58
  171. package/dist/components/core/Button/Button.theme.d.ts +2 -0
  172. package/dist/components/core/Button/Button.theme.js +35 -22
  173. package/dist/components/core/Button/Button.types.d.ts +26 -13
  174. package/dist/components/core/Button/index.d.ts +0 -2
  175. package/dist/components/core/Calendar/Calendar.js +20 -5
  176. package/dist/components/core/Calendar/Calendar.theme.js +15 -23
  177. package/dist/components/core/Calendar/Calendar.types.d.ts +0 -1
  178. package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +3 -3
  179. package/dist/components/core/Calendar/CalendarMini/CalendarMini.theme.js +2 -2
  180. package/dist/components/core/Card/Card.js +7 -2
  181. package/dist/components/core/Card/Card.theme.js +40 -4
  182. package/dist/components/core/Card/Card.types.d.ts +20 -0
  183. package/dist/components/core/Card/CardBody.js +9 -1
  184. package/dist/components/core/Card/CardContext.d.ts +13 -0
  185. package/dist/components/core/Card/CardContext.js +14 -0
  186. package/dist/components/core/Card/CardFooter.js +1 -1
  187. package/dist/components/core/Card/CardHeader.js +4 -1
  188. package/dist/components/core/CommandPalette/CommandPalette.js +5 -4
  189. package/dist/components/core/CommandPalette/CommandPalette.theme.js +3 -7
  190. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -0
  191. package/dist/components/core/ContextMenu/ContextMenu.theme.js +4 -3
  192. package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +8 -1
  193. package/dist/components/core/ContextMenu/ContextMenuItem.js +2 -2
  194. package/dist/components/core/ContextMenu/ContextMenuSub.d.ts +11 -1
  195. package/dist/components/core/ContextMenu/ContextMenuSub.js +35 -22
  196. package/dist/components/core/ContextMenu/ContextMenuSubBody.js +14 -3
  197. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +22 -9
  198. package/dist/components/core/DragDrop/DragDrop.theme.js +2 -2
  199. package/dist/components/core/Drawer/Drawer.theme.js +7 -4
  200. package/dist/components/core/Drawer/DrawerHeader.js +2 -3
  201. package/dist/components/core/Dropdown/Dropdown.theme.js +3 -1
  202. package/dist/components/core/Dropdown/DropdownItem.js +2 -2
  203. package/dist/components/core/Dropdown/DropdownMenu.js +22 -7
  204. package/dist/components/core/Dropdown/DropdownTrigger.js +16 -5
  205. package/dist/components/core/HeroCard/HeroCard.theme.js +5 -2
  206. package/dist/components/core/Kbd/Kbd.theme.js +4 -2
  207. package/dist/components/core/Link/Link.js +7 -5
  208. package/dist/components/core/Masonry/Masonry.theme.js +1 -1
  209. package/dist/components/core/MenuItem/MenuItem.js +2 -1
  210. package/dist/components/core/MenuItem/MenuItem.theme.js +13 -1
  211. package/dist/components/core/Message/Message.js +4 -2
  212. package/dist/components/core/Message/Message.theme.js +8 -10
  213. package/dist/components/core/Message/MessageAudio.js +2 -2
  214. package/dist/components/core/Message/MessageFile.js +2 -2
  215. package/dist/components/core/Message/MessageLink.js +2 -2
  216. package/dist/components/core/Message/MessageStatusIndicator.js +5 -5
  217. package/dist/components/core/Modal/Modal.animations.d.ts +1 -1
  218. package/dist/components/core/Modal/Modal.animations.js +50 -11
  219. package/dist/components/core/Modal/Modal.d.ts +1 -1
  220. package/dist/components/core/Modal/Modal.js +6 -2
  221. package/dist/components/core/Modal/Modal.theme.js +9 -4
  222. package/dist/components/core/Modal/ModalHeader.js +2 -3
  223. package/dist/components/core/ModalStack/ModalStackModal.js +4 -2
  224. package/dist/components/core/NavItem/NavItem.js +8 -7
  225. package/dist/components/core/NavItem/NavItem.theme.js +1 -1
  226. package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.d.ts +22 -0
  227. package/dist/components/core/OfflineIndicator/OfflineIndicator.animations.js +54 -0
  228. package/dist/components/core/OfflineIndicator/OfflineIndicator.js +23 -24
  229. package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +27 -6
  230. package/dist/components/core/OfflineIndicator/OfflineIndicator.types.d.ts +17 -0
  231. package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
  232. package/dist/components/core/PageHeading/PageHeadingBackButton.js +2 -2
  233. package/dist/components/core/Pagination/Pagination.js +3 -3
  234. package/dist/components/core/Pagination/Pagination.theme.js +5 -5
  235. package/dist/components/core/Pill/Pill.js +5 -2
  236. package/dist/components/core/Pill/Pill.theme.js +9 -5
  237. package/dist/components/core/Popover/PopoverBody.js +16 -5
  238. package/dist/components/core/Progress/Progress.d.ts +0 -25
  239. package/dist/components/core/Progress/Progress.js +79 -11
  240. package/dist/components/core/Progress/Progress.theme.js +17 -0
  241. package/dist/components/core/Progress/Progress.types.d.ts +47 -1
  242. package/dist/components/core/Rating/Rating.js +4 -5
  243. package/dist/components/core/Rating/Rating.theme.js +2 -2
  244. package/dist/components/core/Rating/Rating.types.d.ts +3 -2
  245. package/dist/components/core/ScrollArea/ScrollArea.js +1 -1
  246. package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
  247. package/dist/components/core/Segmented/Segmented.theme.js +10 -7
  248. package/dist/components/core/Segmented/SegmentedContext.js +1 -0
  249. package/dist/components/core/Sidebar/Sidebar.js +5 -2
  250. package/dist/components/core/Sidebar/Sidebar.theme.js +2 -2
  251. package/dist/components/core/Sidebar/Sidebar.types.d.ts +4 -2
  252. package/dist/components/core/Sidebar/SidebarContent.js +1 -1
  253. package/dist/components/core/Sidebar/SidebarHeader.js +3 -3
  254. package/dist/components/core/Sidebar/SidebarMobileTrigger.js +2 -2
  255. package/dist/components/core/Sidebar/SidebarSearch.js +4 -4
  256. package/dist/components/core/Sidebar/SidebarToggle.js +3 -3
  257. package/dist/components/core/Sidebar/SidebarUserProfile.js +3 -3
  258. package/dist/components/core/Sortable/Sortable.js +2 -2
  259. package/dist/components/core/Sortable/Sortable.theme.js +1 -1
  260. package/dist/components/core/Tabs/Tabs.theme.js +1 -1
  261. package/dist/components/core/Tag/Tag.js +2 -2
  262. package/dist/components/core/Tag/Tag.theme.js +5 -3
  263. package/dist/components/core/Toast/Toast.js +3 -3
  264. package/dist/components/core/Toast/Toast.types.d.ts +1 -1
  265. package/dist/components/core/Toast/ToastProvider.js +1 -1
  266. package/dist/components/core/Toast/useToast.js +5 -5
  267. package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
  268. package/dist/components/core/Tooltip/Tooltip.js +42 -10
  269. package/dist/components/core/Tooltip/Tooltip.types.d.ts +25 -0
  270. package/dist/components/core/Tree/Tree.js +2 -2
  271. package/dist/components/core/Tree/Tree.theme.js +1 -1
  272. package/dist/components/core/index.d.ts +0 -2
  273. package/dist/components/core/index.js +0 -4
  274. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.d.ts +4 -0
  275. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.js +20 -0
  276. package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.js +1 -1
  277. package/dist/components/core/shared/Ripple.d.ts +16 -0
  278. package/dist/components/core/shared/Ripple.js +141 -0
  279. package/dist/components/core/shared/interaction.animations.d.ts +51 -0
  280. package/dist/components/core/shared/interaction.animations.js +59 -0
  281. package/dist/components/data-display/Feed/Feed.js +2 -2
  282. package/dist/components/data-display/GanttChart/GanttChart.theme.js +7 -7
  283. package/dist/components/data-display/GanttChart/GanttChartPanel.js +2 -2
  284. package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +3 -3
  285. package/dist/components/data-display/GanttChart/GanttTaskBar.js +1 -1
  286. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +2 -2
  287. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +1 -1
  288. package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -3
  289. package/dist/components/data-display/KPI/KPI.js +12 -21
  290. package/dist/components/data-display/KPI/KPI.theme.js +8 -4
  291. package/dist/components/data-display/Metric/Metric.js +2 -2
  292. package/dist/components/data-display/Metric/Metric.theme.js +25 -8
  293. package/dist/components/data-display/Metric/Metric.types.d.ts +1 -1
  294. package/dist/components/data-display/Table/Table.theme.js +11 -11
  295. package/dist/components/data-display/Table/TableActions.js +2 -2
  296. package/dist/components/data-display/Table/TableActionsMenu.js +1 -1
  297. package/dist/components/data-display/Table/TableColumnManager.js +2 -3
  298. package/dist/components/data-display/Table/TableContext.js +1 -0
  299. package/dist/components/data-display/Table/TableDeclarative.js +3 -3
  300. package/dist/components/data-display/Table/TableFilter.js +13 -6
  301. package/dist/components/data-display/Table/TableHeader.js +3 -3
  302. package/dist/components/data-display/Table/TableRow.js +2 -2
  303. package/dist/components/data-display/Table/TableSelectionHeader.js +4 -4
  304. package/dist/components/data-display/Timeline/Timeline.theme.js +1 -1
  305. package/dist/components/data-display/Timeline/TimelineMarker.js +2 -2
  306. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +1 -1
  307. package/dist/components/effects/CustomCursor/CustomCursor.js +3 -3
  308. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +4 -4
  309. package/dist/components/effects/DotPattern/DotPattern.js +6 -0
  310. package/dist/components/effects/DotPattern/DotPattern.types.d.ts +4 -2
  311. package/dist/components/effects/MeshGradient/MeshGradient.utils.d.ts +1 -1
  312. package/dist/components/effects/MeshGradient/MeshGradient.utils.js +1 -1
  313. package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -1
  314. package/dist/components/effects/Overlay/Overlay.js +7 -3
  315. package/dist/components/effects/index.d.ts +0 -32
  316. package/dist/components/effects/index.js +0 -16
  317. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.d.ts +0 -2
  318. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.js +1 -93
  319. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +0 -10
  320. package/dist/components/effects/shared/ShaderCanvas/index.d.ts +1 -1
  321. package/dist/components/effects/shared/index.d.ts +1 -3
  322. package/dist/components/effects/shared/shaderNoise.glsl.d.ts +1 -1
  323. package/dist/components/effects/shared/shaderNoise.glsl.js +2 -11
  324. package/dist/components/forms/Checkbox/Checkbox.js +2 -1
  325. package/dist/components/forms/Checkbox/Checkbox.theme.js +3 -3
  326. package/dist/components/forms/ColorPicker/ColorPickerEyeDropper.js +2 -2
  327. package/dist/components/forms/ColorPicker/ColorPickerGradient.js +2 -2
  328. package/dist/components/forms/ColorPicker/ColorPickerHeader.js +2 -2
  329. package/dist/components/forms/ColorPicker/ColorPickerImage.js +3 -3
  330. package/dist/components/forms/ColorPicker/ColorPickerInput.js +2 -2
  331. package/dist/components/forms/ColorPicker/ColorPickerPresets.js +2 -2
  332. package/dist/components/forms/ColorPicker/ColorPickerSavedColors.js +2 -2
  333. package/dist/components/forms/Combobox/Combobox.js +5 -3
  334. package/dist/components/forms/Combobox/Combobox.theme.js +2 -2
  335. package/dist/components/forms/DatePicker/DatePicker.animations.js +16 -25
  336. package/dist/components/forms/DatePicker/DatePicker.theme.js +2 -2
  337. package/dist/components/forms/DatePicker/DatePickerBody.js +1 -1
  338. package/dist/components/forms/DatePicker/DatePickerTrigger.js +2 -2
  339. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +4 -4
  340. package/dist/components/forms/DateRangePicker/DateRangePickerBody.js +1 -1
  341. package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +1 -0
  342. package/dist/components/forms/DateRangePicker/DateRangePickerPresets.js +2 -2
  343. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +2 -2
  344. package/dist/components/forms/FileUpload/FileUpload.js +4 -4
  345. package/dist/components/forms/FileUpload/FileUpload.theme.js +7 -3
  346. package/dist/components/forms/FileUpload/FileUploadProgress.js +7 -7
  347. package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +1 -1
  348. package/dist/components/forms/Input/Input.js +6 -7
  349. package/dist/components/forms/Input/Input.theme.js +19 -15
  350. package/dist/components/forms/InputAddress/InputAddress.js +10 -3
  351. package/dist/components/forms/InputAddress/InputAddress.types.d.ts +2 -2
  352. package/dist/components/forms/InputCounter/InputCounter.js +3 -3
  353. package/dist/components/forms/InputOTP/InputOTP.d.ts +3 -12
  354. package/dist/components/forms/InputOTP/InputOTP.js +140 -151
  355. package/dist/components/forms/InputOTP/InputOTP.theme.d.ts +5 -1
  356. package/dist/components/forms/InputOTP/InputOTP.theme.js +40 -5
  357. package/dist/components/forms/InputOTP/InputOTP.types.d.ts +45 -2
  358. package/dist/components/forms/InputOTP/index.d.ts +1 -1
  359. package/dist/components/forms/InputTag/InputTag.js +5 -5
  360. package/dist/components/forms/InputTag/InputTag.theme.js +1 -2
  361. package/dist/components/forms/Mention/Mention.theme.js +3 -5
  362. package/dist/components/forms/Radio/Radio.js +3 -2
  363. package/dist/components/forms/Radio/Radio.theme.js +3 -3
  364. package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +12 -16
  365. package/dist/components/forms/RichTextEditor/RichTextEditor.js +165 -1681
  366. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +12 -56
  367. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +60 -118
  368. package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +62 -126
  369. package/dist/components/forms/RichTextEditor/RichTextLinkField.d.ts +18 -0
  370. package/dist/components/forms/RichTextEditor/RichTextLinkField.js +46 -0
  371. package/dist/components/forms/RichTextEditor/RichTextToolbar.d.ts +15 -0
  372. package/dist/components/forms/RichTextEditor/RichTextToolbar.js +93 -0
  373. package/dist/components/forms/RichTextEditor/editorCommands.d.ts +50 -0
  374. package/dist/components/forms/RichTextEditor/editorCommands.js +58 -0
  375. package/dist/components/forms/RichTextEditor/editorState.d.ts +19 -0
  376. package/dist/components/forms/RichTextEditor/editorState.js +103 -0
  377. package/dist/components/forms/RichTextEditor/index.d.ts +5 -3
  378. package/dist/components/forms/RichTextEditor/sanitizeHtml.d.ts +38 -0
  379. package/dist/components/forms/RichTextEditor/sanitizeHtml.js +179 -0
  380. package/dist/components/forms/RichTextEditor/sanitizeHtml.test.d.ts +1 -0
  381. package/dist/components/forms/Select/Select.d.ts +5 -1
  382. package/dist/components/forms/Select/Select.js +14 -13
  383. package/dist/components/forms/Select/Select.theme.js +4 -4
  384. package/dist/components/forms/Select/Select.types.d.ts +74 -8
  385. package/dist/components/forms/Select/useSelectState.d.ts +9 -3
  386. package/dist/components/forms/Select/useSelectState.js +4 -1
  387. package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +1 -2
  388. package/dist/components/forms/SelectableCard/SelectableCard.animations.js +6 -7
  389. package/dist/components/forms/SelectableCard/SelectableCard.js +3 -2
  390. package/dist/components/forms/SelectableCard/SelectableCard.theme.js +1 -1
  391. package/dist/components/forms/Signature/Signature.js +1 -1
  392. package/dist/components/forms/Slider/Slider.js +24 -11
  393. package/dist/components/forms/Slider/Slider.theme.js +9 -3
  394. package/dist/components/forms/Switch/Switch.theme.js +3 -3
  395. package/dist/components/forms/TimePicker/TimePicker.theme.js +7 -8
  396. package/dist/components/forms/TimePicker/TimePickerContent.js +1 -1
  397. package/dist/components/forms/TimePicker/TimePickerTrigger.js +3 -3
  398. package/dist/components/forms/forms.theme.js +38 -13
  399. package/dist/components/forms/index.js +2 -1
  400. package/dist/components/generative/FormShell.d.ts +22 -0
  401. package/dist/components/generative/FormShell.js +102 -0
  402. package/dist/components/generative/GenerativeView.d.ts +52 -1
  403. package/dist/components/generative/GenerativeView.js +203 -11
  404. package/dist/components/generative/actions.d.ts +5 -0
  405. package/dist/components/generative/ai-sdk/index.d.ts +1 -0
  406. package/dist/components/generative/ai-sdk/index.js +1 -0
  407. package/dist/components/generative/ai-sdk/useGenerativeChat.d.ts +52 -0
  408. package/dist/components/generative/ai-sdk/useGenerativeChat.js +73 -0
  409. package/dist/components/generative/ai-sdk/useGenerativeChat.test.d.ts +1 -0
  410. package/dist/components/generative/fieldBinding.d.ts +31 -0
  411. package/dist/components/generative/fieldBinding.js +33 -0
  412. package/dist/components/generative/fieldBinding.test.d.ts +1 -0
  413. package/dist/components/generative/formScope.d.ts +71 -0
  414. package/dist/components/generative/formScope.js +135 -0
  415. package/dist/components/generative/index.d.ts +4 -0
  416. package/dist/components/generative/index.js +4 -0
  417. package/dist/components/generative/registry.d.ts +2 -0
  418. package/dist/components/generative/registry.js +197 -4
  419. package/dist/components/generative/resolvers.js +16 -16
  420. package/dist/components/generative/schema.generated.js +2522 -328
  421. package/dist/components/generative/toToolResult.d.ts +21 -0
  422. package/dist/components/generative/toToolResult.js +15 -0
  423. package/dist/components/generative/toToolResult.test.d.ts +1 -0
  424. package/dist/components/generative/validate.d.ts +10 -1
  425. package/dist/components/generative/validate.js +126 -11
  426. package/dist/components/layout/Grid/Grid.js +1 -0
  427. package/dist/components/layout/Section/Section.theme.js +1 -1
  428. package/dist/components/layout/Stack/Stack.js +1 -0
  429. package/dist/generative.schema.json +2522 -328
  430. package/dist/hooks/index.d.ts +2 -0
  431. package/dist/hooks/useElapsedTime.d.ts +28 -0
  432. package/dist/hooks/useElapsedTime.js +37 -0
  433. package/dist/hooks/useSelectPortal.d.ts +10 -2
  434. package/dist/hooks/useSelectPortal.js +6 -3
  435. package/dist/index.js +2 -5
  436. package/dist/registry.json +3262 -2464
  437. package/dist/shadcn-compat.css +6 -6
  438. package/dist/styles/theme.test.d.ts +1 -0
  439. package/dist/styles.css +1 -1
  440. package/dist/test/render.d.ts +17 -0
  441. package/dist/theme.css +5 -1
  442. package/dist/themes/ember.css +131 -0
  443. package/dist/themes/iris.css +94 -0
  444. package/dist/themes/jade.css +139 -0
  445. package/dist/themes/precision.css +232 -0
  446. package/dist/tools.json +2557 -328
  447. package/dist/utils/colorUtils.d.ts +6 -6
  448. package/dist/utils/colorUtils.js +8 -8
  449. package/dist/utils/index.d.ts +0 -1
  450. package/package.json +39 -6
  451. package/src/global.scss +32 -28
  452. package/src/styles/theme.css +547 -176
  453. package/src/styles/theme.test.ts +119 -0
  454. package/tailwind.preset.cjs +66 -38
  455. package/dist/components/charts/FunnelChart/FunnelChart.animations.d.ts +0 -35
  456. package/dist/components/charts/FunnelChart/FunnelChart.animations.js +0 -59
  457. package/dist/components/charts/FunnelChart/FunnelChart.d.ts +0 -8
  458. package/dist/components/charts/FunnelChart/FunnelChart.js +0 -410
  459. package/dist/components/charts/FunnelChart/FunnelChart.theme.d.ts +0 -2
  460. package/dist/components/charts/FunnelChart/FunnelChart.theme.js +0 -12
  461. package/dist/components/charts/FunnelChart/FunnelChart.types.d.ts +0 -105
  462. package/dist/components/charts/FunnelChart/index.d.ts +0 -4
  463. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +0 -9
  464. package/dist/components/charts/ScatterPlot/ScatterPlot.js +0 -207
  465. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -18
  466. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -42
  467. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +0 -65
  468. package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +0 -12
  469. package/dist/components/charts/ScatterPlot/index.d.ts +0 -3
  470. package/dist/components/core/Button/Button.ripple.d.ts +0 -71
  471. package/dist/components/core/Button/Button.ripple.js +0 -236
  472. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.d.ts +0 -4
  473. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.theme.d.ts +0 -12
  474. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.types.d.ts +0 -23
  475. package/dist/components/core/Calendar/CalendarEvent/index.d.ts +0 -2
  476. package/dist/components/core/CardStack/CardStack.animations.d.ts +0 -47
  477. package/dist/components/core/CardStack/CardStack.d.ts +0 -3
  478. package/dist/components/core/CardStack/CardStack.js +0 -187
  479. package/dist/components/core/CardStack/CardStack.theme.d.ts +0 -6
  480. package/dist/components/core/CardStack/CardStack.theme.js +0 -33
  481. package/dist/components/core/CardStack/CardStack.types.d.ts +0 -139
  482. package/dist/components/core/CardStack/index.d.ts +0 -7
  483. package/dist/components/core/Carousel/Carousel.d.ts +0 -3
  484. package/dist/components/core/Carousel/Carousel.js +0 -83
  485. package/dist/components/core/Carousel/Carousel.theme.d.ts +0 -10
  486. package/dist/components/core/Carousel/Carousel.theme.js +0 -20
  487. package/dist/components/core/Carousel/Carousel.types.d.ts +0 -113
  488. package/dist/components/core/Carousel/CarouselBody.d.ts +0 -4
  489. package/dist/components/core/Carousel/CarouselBody.js +0 -59
  490. package/dist/components/core/Carousel/CarouselContext.d.ts +0 -3
  491. package/dist/components/core/Carousel/CarouselContext.js +0 -13
  492. package/dist/components/core/Carousel/CarouselItem.d.ts +0 -4
  493. package/dist/components/core/Carousel/CarouselItem.js +0 -11
  494. package/dist/components/core/Carousel/CarouselNext.d.ts +0 -4
  495. package/dist/components/core/Carousel/CarouselNext.js +0 -16
  496. package/dist/components/core/Carousel/CarouselPrevious.d.ts +0 -4
  497. package/dist/components/core/Carousel/CarouselPrevious.js +0 -16
  498. package/dist/components/core/Carousel/index.d.ts +0 -3
  499. package/dist/components/core/Pill/Pill.animations.d.ts +0 -32
  500. package/dist/components/core/Pill/Pill.animations.js +0 -16
  501. package/dist/components/effects/ColorPanels/ColorPanels.d.ts +0 -8
  502. package/dist/components/effects/ColorPanels/ColorPanels.js +0 -66
  503. package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +0 -12
  504. package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +0 -218
  505. package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +0 -29
  506. package/dist/components/effects/ColorPanels/ColorPanels.types.js +0 -3
  507. package/dist/components/effects/ColorPanels/index.d.ts +0 -2
  508. package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +0 -9
  509. package/dist/components/effects/FlutedGlass/FlutedGlass.js +0 -80
  510. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +0 -12
  511. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +0 -335
  512. package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +0 -61
  513. package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +0 -16
  514. package/dist/components/effects/FlutedGlass/index.d.ts +0 -3
  515. package/dist/components/effects/GlassEffect/GlassEffect.d.ts +0 -15
  516. package/dist/components/effects/GlassEffect/GlassEffect.js +0 -38
  517. package/dist/components/effects/GlassEffect/GlassEffect.types.d.ts +0 -19
  518. package/dist/components/effects/GlassEffect/index.d.ts +0 -2
  519. package/dist/components/effects/GlassSurface/GlassSurface.d.ts +0 -8
  520. package/dist/components/effects/GlassSurface/GlassSurface.js +0 -250
  521. package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +0 -66
  522. package/dist/components/effects/GlassSurface/index.d.ts +0 -2
  523. package/dist/components/effects/GodRays/GodRays.d.ts +0 -8
  524. package/dist/components/effects/GodRays/GodRays.js +0 -68
  525. package/dist/components/effects/GodRays/GodRays.shaders.d.ts +0 -10
  526. package/dist/components/effects/GodRays/GodRays.shaders.js +0 -128
  527. package/dist/components/effects/GodRays/GodRays.types.d.ts +0 -25
  528. package/dist/components/effects/GodRays/GodRays.types.js +0 -3
  529. package/dist/components/effects/GodRays/index.d.ts +0 -2
  530. package/dist/components/effects/GridPattern/GridPattern.d.ts +0 -18
  531. package/dist/components/effects/GridPattern/GridPattern.js +0 -65
  532. package/dist/components/effects/GridPattern/GridPattern.types.d.ts +0 -47
  533. package/dist/components/effects/GridPattern/index.d.ts +0 -2
  534. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +0 -10
  535. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +0 -78
  536. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +0 -22
  537. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +0 -239
  538. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +0 -52
  539. package/dist/components/effects/HalftoneCmyk/index.d.ts +0 -2
  540. package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +0 -9
  541. package/dist/components/effects/HalftoneDots/HalftoneDots.js +0 -68
  542. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +0 -13
  543. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +0 -296
  544. package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +0 -43
  545. package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +0 -12
  546. package/dist/components/effects/HalftoneDots/index.d.ts +0 -3
  547. package/dist/components/effects/ImageDithering/ImageDithering.d.ts +0 -9
  548. package/dist/components/effects/ImageDithering/ImageDithering.js +0 -68
  549. package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +0 -12
  550. package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +0 -117
  551. package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +0 -30
  552. package/dist/components/effects/ImageDithering/ImageDithering.types.js +0 -8
  553. package/dist/components/effects/ImageDithering/index.d.ts +0 -3
  554. package/dist/components/effects/MagneticElement/MagneticElement.d.ts +0 -30
  555. package/dist/components/effects/MagneticElement/MagneticElement.js +0 -111
  556. package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +0 -44
  557. package/dist/components/effects/MagneticElement/index.d.ts +0 -2
  558. package/dist/components/effects/Metaballs/Metaballs.d.ts +0 -8
  559. package/dist/components/effects/Metaballs/Metaballs.js +0 -59
  560. package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +0 -10
  561. package/dist/components/effects/Metaballs/Metaballs.shaders.js +0 -102
  562. package/dist/components/effects/Metaballs/Metaballs.types.d.ts +0 -16
  563. package/dist/components/effects/Metaballs/Metaballs.types.js +0 -3
  564. package/dist/components/effects/Metaballs/index.d.ts +0 -2
  565. package/dist/components/effects/PaperTexture/PaperTexture.d.ts +0 -9
  566. package/dist/components/effects/PaperTexture/PaperTexture.js +0 -61
  567. package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +0 -22
  568. package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +0 -145
  569. package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +0 -19
  570. package/dist/components/effects/PaperTexture/index.d.ts +0 -2
  571. package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +0 -27
  572. package/dist/components/effects/PulsingBorder/PulsingBorder.js +0 -174
  573. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +0 -14
  574. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +0 -258
  575. package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +0 -75
  576. package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +0 -3
  577. package/dist/components/effects/PulsingBorder/index.d.ts +0 -2
  578. package/dist/components/effects/SmokeRing/SmokeRing.d.ts +0 -8
  579. package/dist/components/effects/SmokeRing/SmokeRing.js +0 -62
  580. package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +0 -14
  581. package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +0 -130
  582. package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +0 -22
  583. package/dist/components/effects/SmokeRing/SmokeRing.types.js +0 -3
  584. package/dist/components/effects/SmokeRing/index.d.ts +0 -2
  585. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +0 -9
  586. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +0 -59
  587. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +0 -14
  588. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +0 -129
  589. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +0 -23
  590. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +0 -3
  591. package/dist/components/effects/StaticGradientMesh/index.d.ts +0 -2
  592. package/dist/components/effects/Water/Water.d.ts +0 -9
  593. package/dist/components/effects/Water/Water.js +0 -65
  594. package/dist/components/effects/Water/Water.shaders.d.ts +0 -11
  595. package/dist/components/effects/Water/Water.shaders.js +0 -123
  596. package/dist/components/effects/Water/Water.types.d.ts +0 -25
  597. package/dist/components/effects/Water/index.d.ts +0 -2
  598. package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +0 -10
  599. package/dist/components/effects/shared/bayerMatrices.glsl.js +0 -44
  600. package/dist/components/effects/shared/imageUV.glsl.d.ts +0 -12
  601. package/dist/components/effects/shared/imageUV.glsl.js +0 -26
  602. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.d.ts +0 -7
  603. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +0 -32
  604. package/dist/utils/calendarUtils.d.ts +0 -60
  605. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.d.ts +0 -0
  606. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.d.ts +0 -0
  607. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.js +0 -0
  608. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.types.d.ts +0 -0
  609. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltipContent.d.ts +0 -0
  610. /package/dist/components/{charts → core}/shared/ChartTooltip/index.d.ts +0 -0
@@ -1,61 +1,17 @@
1
- import { RichTextEditorTheme, ColorOption } from "./RichTextEditor.types";
1
+ import type { RichTextEditorTheme } from "./RichTextEditor.types";
2
2
  /**
3
- * Legacy 10-entry color list — kept for backwards compat with consumers that
4
- * import `colorOptions` directly. The RichTextEditor's color picker now uses
5
- * the full Tailwind spectrum below.
6
- */
7
- export declare const colorOptions: ColorOption[];
8
- /**
9
- * Tailwind shade scale (same for every family). Used by both the picker
10
- * UI and the `getTailwindShadeTokens` utility below.
11
- */
12
- export declare const TAILWIND_SHADE_LABELS: readonly ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "950"];
13
- /**
14
- * The 22 Tailwind color families, in spectrum order.
15
- * Tailwind v4 exposes each shade as `--color-{family}-{shade}` automatically,
16
- * so we render swatches via `var(--color-...)` instead of hardcoding hex.
17
- */
18
- export declare const TAILWIND_COLOR_FAMILIES: readonly ["slate", "gray", "zinc", "neutral", "stone", "red", "orange", "amber", "yellow", "lime", "green", "emerald", "teal", "cyan", "sky", "blue", "indigo", "violet", "purple", "fuchsia", "pink", "rose"];
19
- /**
20
- * Returns shade tokens for a given Tailwind family.
3
+ * RichTextEditor theme.
21
4
  *
22
- * @example
23
- * getTailwindShadeTokens("slate")
24
- * // ["slate-50", "slate-100", "slate-200", ..., "slate-950"]
25
- */
26
- export declare const getTailwindShadeTokens: (family: string) => string[];
27
- /**
28
- * Resolves a Tailwind shade token to a CSS color value usable in inline
29
- * styles for swatch backgrounds. Reads `--color-{token}` directly; modern
30
- * browsers accept the resulting `oklch(...)` (or fallback `rgb()`) in
31
- * `background-color` without normalization.
5
+ * The bordered shell reuses `formsBaseTheme`'s inset-box-shadow border and state
6
+ * variants verbatim, so the editor's resting/hover/focus/invalid edges are
7
+ * pixel-identical to Input, Textarea and Select (CLAUDE.md §9).
32
8
  *
33
- * SSR-safe: returns `var(--color-{token})` literal when document is absent.
34
- */
35
- export declare const resolveTailwindColor: (token: string) => string;
36
- /**
37
- * Tailwind v4 only emits `--color-{family}-{shade}` CSS vars for shades that
38
- * appear as utility classes in source. Since the picker resolves them at
39
- * runtime via `var(...)`, we need every shade present. This sentinel string
40
- * lists `bg-{family}-{shade}` for the full 22×11 palette so Tailwind's
41
- * content scanner emits all CSS variables. Not used at runtime.
42
- */
43
- export declare const _TAILWIND_PALETTE_KEEPALIVE: string;
44
- /**
45
- * The two non-family base colors users always reach for, shown in their own row
46
- * above the spectrum.
47
- *
48
- * `value` is the resolved background color (used to paint the swatch);
49
- * `token` is the Tailwind shade fragment used to build the `text-{token}`
50
- * class applied to the editor content.
51
- */
52
- export declare const MONO_COLORS: {
53
- name: string;
54
- value: string;
55
- token: string;
56
- }[];
57
- export declare const _RTE_CLASSES_KEEPALIVE: string;
58
- /**
59
- * Rich Text Editor theme - extends common forms base theme for consistency
9
+ * 🔴 No typography or colour maps here, and no Tailwind "keepalive" sentinel.
10
+ * The previous implementation applied formatting via runtime `classList.add` of
11
+ * utility classes (`font-bold`, `text-rose-500`, `leading-relaxed`), which meant
12
+ * stored HTML only rendered correctly inside a Tailwind build that had scanned a
13
+ * 242-entry sentinel string. Formatting is now semantic markup, styled by the
14
+ * `[&_x]:` descendant rules below so the content is portable and the CSS is
15
+ * bounded.
60
16
  */
61
17
  export declare const richTextEditorTheme: RichTextEditorTheme;
@@ -1,129 +1,71 @@
1
- "use client";
2
1
  import { formsBaseTheme } from '../forms.theme.js';
3
2
 
4
3
  /**
5
- * Tailwind shade scale (same for every family). Used by both the picker
6
- * UI and the `getTailwindShadeTokens` utility below.
7
- */
8
- const TAILWIND_SHADE_LABELS = [
9
- "50",
10
- "100",
11
- "200",
12
- "300",
13
- "400",
14
- "500",
15
- "600",
16
- "700",
17
- "800",
18
- "900",
19
- "950",
20
- ];
21
- /**
22
- * The 22 Tailwind color families, in spectrum order.
23
- * Tailwind v4 exposes each shade as `--color-{family}-{shade}` automatically,
24
- * so we render swatches via `var(--color-...)` instead of hardcoding hex.
25
- */
26
- const TAILWIND_COLOR_FAMILIES = [
27
- "slate",
28
- "gray",
29
- "zinc",
30
- "neutral",
31
- "stone",
32
- "red",
33
- "orange",
34
- "amber",
35
- "yellow",
36
- "lime",
37
- "green",
38
- "emerald",
39
- "teal",
40
- "cyan",
41
- "sky",
42
- "blue",
43
- "indigo",
44
- "violet",
45
- "purple",
46
- "fuchsia",
47
- "pink",
48
- "rose",
49
- ];
50
- /**
51
- * Returns shade tokens for a given Tailwind family.
4
+ * RichTextEditor theme.
52
5
  *
53
- * @example
54
- * getTailwindShadeTokens("slate")
55
- * // ["slate-50", "slate-100", "slate-200", ..., "slate-950"]
56
- */
57
- const getTailwindShadeTokens = (family) => TAILWIND_SHADE_LABELS.map((shade) => `${family}-${shade}`);
58
- /**
59
- * Resolves a Tailwind shade token to a CSS color value usable in inline
60
- * styles for swatch backgrounds. Reads `--color-{token}` directly; modern
61
- * browsers accept the resulting `oklch(...)` (or fallback `rgb()`) in
62
- * `background-color` without normalization.
6
+ * The bordered shell reuses `formsBaseTheme`'s inset-box-shadow border and state
7
+ * variants verbatim, so the editor's resting/hover/focus/invalid edges are
8
+ * pixel-identical to Input, Textarea and Select (CLAUDE.md §9).
63
9
  *
64
- * SSR-safe: returns `var(--color-{token})` literal when document is absent.
65
- */
66
- const resolveTailwindColor = (token) => {
67
- const cssVar = `--color-${token}`;
68
- if (typeof window === "undefined")
69
- return `var(${cssVar})`;
70
- const resolved = getComputedStyle(document.documentElement)
71
- .getPropertyValue(cssVar)
72
- .trim();
73
- return resolved || `var(${cssVar})`;
74
- };
75
- /**
76
- * The two non-family base colors users always reach for, shown in their own row
77
- * above the spectrum.
78
- *
79
- * `value` is the resolved background color (used to paint the swatch);
80
- * `token` is the Tailwind shade fragment used to build the `text-{token}`
81
- * class applied to the editor content.
82
- */
83
- const MONO_COLORS = [
84
- { name: "white", value: "#ffffff", token: "white" },
85
- { name: "black", value: "#000000", token: "black" },
86
- ];
87
- /**
88
- * Rich Text Editor theme - extends common forms base theme for consistency
10
+ * 🔴 No typography or colour maps here, and no Tailwind "keepalive" sentinel.
11
+ * The previous implementation applied formatting via runtime `classList.add` of
12
+ * utility classes (`font-bold`, `text-rose-500`, `leading-relaxed`), which meant
13
+ * stored HTML only rendered correctly inside a Tailwind build that had scanned a
14
+ * 242-entry sentinel string. Formatting is now semantic markup, styled by the
15
+ * `[&_x]:` descendant rules below — so the content is portable and the CSS is
16
+ * bounded.
89
17
  */
90
18
  const richTextEditorTheme = {
91
- // Base container styles - inherited from common form theme
92
19
  wrapperStyle: formsBaseTheme.wrapperStyle,
93
- // Container with common input group style + RTE-specific overrides
94
- containerStyle: `${formsBaseTheme.inputGroupBaseStyle} flex-col min-h-[120px] overflow-hidden`,
95
- // Editor content area - extends common control base style
96
- editorStyle: `${formsBaseTheme.controlBaseStyle} min-h-[100px] px-3 py-2 resize-none overflow-y-auto [&_p]:my-1 [&_p:first-child]:mt-0 [&_p:last-child]:mb-0 [&_strong]:font-semibold [&_em]:italic [&_u]:underline data-[state=disabled]:cursor-not-allowed empty:before:content-[attr(data-placeholder)] empty:before:text-[var(--color-text-placeholder)] empty:before:pointer-events-none`,
97
- // Toolbar styling (docked variant)
98
- // `rounded-t-[var(--form-radius)]` matches the container's radius so the
99
- // toolbar's own bg/backdrop-blur respects the top corners — prevents the
100
- // 1px bleed past the parent's `overflow-hidden` clip in Safari/Chromium.
101
- toolbarStyle: "flex items-center m-0.5 gap-0.5 p-0.5 rounded-[var(--form-radius)] dark:bg-[var(--color-surface)]/0",
102
- // Toolbar styling (floating variant — selection-anchored)
103
- floatingToolbarStyle: "flex items-center gap-1 p-1 rounded-xl border border-[var(--color-border)] backdrop-blur-md overflow-hidden",
104
- // Toolbar button — single source of truth via data-[state=active]
105
- // (aria-pressed remains as proper ARIA on toggle buttons, but styling is decoupled)
106
- toolbarButtonStyle: "inline-flex items-center justify-center rounded-[calc(var(--radius-base)*0.85)] border border-transparent bg-transparent text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] hover:bg-[var(--color-background-secondary)] transition-colors duration-300 disabled:opacity-50 disabled:cursor-not-allowed data-[state=active]:bg-[var(--color-background-secondary)] data-[state=active]:text-[var(--color-text-primary)] data-[state=active]:border-[var(--color-border)] data-[state=active]:shadow-inner",
107
- // Dropdown surface (visual only — positioning handled at use site via portal)
108
- dropdownStyle: "min-w-[120px] max-h-[18rem] overflow-y-auto py-1 backdrop-blur-md rounded-[var(--form-radius)] shadow-xl ring-1 ring-[var(--color-border)] focus:outline-none",
109
- // Dropdown item uses data-[active=true] for selected state
110
- dropdownItemStyle: "block w-full px-3 py-2 text-left text-sm text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)] transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed data-[active=true]:bg-[var(--color-primary-50)] data-[active=true]:text-[var(--color-primary-900)] data-[active=true]:dark:bg-[var(--color-primary-400)]/10 data-[active=true]:dark:text-[var(--color-primary-400)]",
111
- // Separator between toolbar sections
112
- separatorStyle: "w-px h-6 bg-[var(--color-border)] mx-1",
113
- // Color picker layout column of family rows, plus optional Recent + Mono rows
114
- colorPickerStyle: "flex flex-col gap-1 p-2 w-fit",
115
- // Color swatch button (original size + rounding)
116
- colorSwatchStyle: "size-6 rounded-[calc(var(--radius-base)*0.75)] cursor-pointer hover:scale-105 transition-transform focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-offset-1 data-[active=true]:ring-2 data-[active=true]:ring-[var(--color-primary)] data-[active=true]:ring-offset-1 border border-[var(--color-border)]",
117
- // Size variants - use common form sizes for consistency
118
- sizes: {
119
- sm: `${formsBaseTheme.sizes.sm.text} min-h-[80px]`,
120
- md: `${formsBaseTheme.sizes.md.text} min-h-[120px]`,
121
- lg: `${formsBaseTheme.sizes.lg.text} min-h-[160px]`,
20
+ // The shell is a content-bearing container, so its radius is CAPPED (§3) — it
21
+ // must not scale uncapped with --radius-base the way a control does.
22
+ containerStyle: "relative flex flex-col overflow-hidden bg-[var(--field-fill)] " +
23
+ "rounded-[min(calc(var(--radius-base)*1.5),var(--surface-radius-cap-sm))] " +
24
+ "shadow-[inset_0_0_0_1px_var(--color-border)] " +
25
+ "focus-within:shadow-[inset_0_0_0_1px_var(--color-primary-600)] " +
26
+ "focus-within:ring-4 focus-within:ring-[var(--color-primary)]/10 " +
27
+ "not-focus-within:hover:shadow-[inset_0_0_0_1px_var(--color-border-secondary)] " +
28
+ "transition-[box-shadow] duration-[var(--motion-duration-fast)] " +
29
+ "dark:focus-within:shadow-[inset_0_0_0_1px_var(--color-primary-500)] " +
30
+ "dark:focus-within:ring-[var(--color-primary-500)]/20",
31
+ containerStates: {
32
+ default: "",
33
+ disabled: formsBaseTheme.states.disabled,
34
+ invalid: formsBaseTheme.states.invalid,
35
+ },
36
+ toolbarStyle: "flex flex-wrap items-center gap-1 p-1.5 " +
37
+ "border-b border-[var(--color-border)]",
38
+ // Descendant rules style the semantic markup the editor produces. This is the
39
+ // ONLY place editor content is styled — nothing is written into the HTML.
40
+ editorStyle: "w-full overflow-y-auto outline-none text-[var(--color-text-primary)] " +
41
+ "focus:outline-none " +
42
+ "[&_h1]:text-2xl [&_h1]:font-semibold [&_h1]:mb-2 " +
43
+ "[&_h2]:text-xl [&_h2]:font-semibold [&_h2]:mb-2 " +
44
+ "[&_h3]:text-lg [&_h3]:font-semibold [&_h3]:mb-1.5 " +
45
+ "[&_h4]:text-base [&_h4]:font-semibold [&_h4]:mb-1.5 " +
46
+ "[&_p]:mb-2 last:[&_p]:mb-0 " +
47
+ "[&_ul]:list-disc [&_ul]:pl-5 [&_ul]:mb-2 " +
48
+ "[&_ol]:list-decimal [&_ol]:pl-5 [&_ol]:mb-2 " +
49
+ "[&_li]:mb-0.5 " +
50
+ "[&_a]:text-[var(--color-primary)] [&_a]:underline [&_a]:underline-offset-2 " +
51
+ "[&_blockquote]:border-l-2 [&_blockquote]:border-[var(--color-border-secondary)] " +
52
+ "[&_blockquote]:pl-3 [&_blockquote]:text-[var(--color-text-secondary)] [&_blockquote]:mb-2 " +
53
+ "[&_code]:rounded-[var(--radius-base)] [&_code]:bg-[var(--color-surface-sunken)] " +
54
+ "[&_code]:px-1 [&_code]:py-0.5 [&_code]:text-[0.9em] " +
55
+ "[&_pre]:rounded-[min(calc(var(--radius-base)*1.5),var(--surface-radius-cap-xs))] " +
56
+ "[&_pre]:bg-[var(--color-surface-sunken)] [&_pre]:p-3 [&_pre]:mb-2 [&_pre]:overflow-x-auto",
57
+ editorSizes: {
58
+ sm: "px-[var(--form-px-sm)] py-[var(--form-py-sm)] text-[length:var(--form-text-size-sm)]/[var(--form-line-height-sm)]",
59
+ md: "px-[var(--form-px-md)] py-[var(--form-py-md)] text-[length:var(--form-text-size-md)]/[var(--form-line-height-md)]",
60
+ lg: "px-[var(--form-px-lg)] py-[var(--form-py-lg)] text-[length:var(--form-text-size-lg)]/[var(--form-line-height-lg)]",
122
61
  },
123
- // State variants - inherited from common form theme
124
- states: formsBaseTheme.states,
125
- // Helper text styles - inherited from common form theme
126
- helperText: formsBaseTheme.helperText,
62
+ separatorStyle: "mx-0.5 h-5 w-px shrink-0 bg-[var(--color-border)]",
63
+ // `:empty` alone is unreliable in a contentEditable (browsers leave a stray
64
+ // <br>), so the editor sets data-empty from its own value check.
65
+ placeholderStyle: "before:content-[attr(data-placeholder)] before:pointer-events-none " +
66
+ "before:absolute before:text-[var(--color-text-placeholder)]",
67
+ helperTextStyle: "mt-1.5 text-xs text-[var(--color-text-secondary)]",
68
+ errorTextStyle: "mt-1.5 text-xs text-[var(--color-danger)]",
127
69
  };
128
70
 
129
- export { MONO_COLORS, TAILWIND_COLOR_FAMILIES, TAILWIND_SHADE_LABELS, getTailwindShadeTokens, resolveTailwindColor, richTextEditorTheme };
71
+ export { richTextEditorTheme };
@@ -1,18 +1,11 @@
1
1
  import React from 'react';
2
- import type { SurfaceElevation } from '../../../theme/SurfaceContext';
3
2
  /**
4
- * Rich Text Editor component props
5
- * @property {RichTextEditorSize} size - The size of the editor
6
- * @property {RichTextEditorState} state - The state of the editor (default, disabled, invalid)
7
- * @property {string} label - Optional label text for the editor
8
- * @property {string} helperText - Optional helper text displayed below the editor
9
- * @property {string} value - The HTML content value
10
- * @property {function} onChange - Callback when content changes
11
- * @property {string} placeholder - Placeholder text when editor is empty
12
- * @property {boolean} required - Whether the editor is required
13
- * @property {number} minHeight - Minimum height of the editor in pixels
14
- * @property {number} maxHeight - Maximum height of the editor in pixels
15
- * @property {ToolbarConfig} toolbar - Toolbar configuration
3
+ * Rich Text Editor component props.
4
+ *
5
+ * 🔴 Per CLAUDE.md §9, `className`, `ref` and `...rest` all target the PRIMARY
6
+ * FUNCTIONAL ELEMENT here the contentEditable surface exactly as `className`
7
+ * targets the inner `<input>` on `Input`. The wrapper, bordered shell and toolbar
8
+ * each get their own explicit prop.
16
9
  */
17
10
  export interface RichTextEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'value'> {
18
11
  /** The size of the editor */
@@ -29,63 +22,53 @@ export interface RichTextEditorProps extends Omit<React.HTMLAttributes<HTMLDivEl
29
22
  * unaffected/still shown as normal otherwise.
30
23
  */
31
24
  errorMessage?: React.ReactNode;
32
- /** The HTML content value */
25
+ /**
26
+ * The HTML content value. Always sanitized before it reaches the DOM.
27
+ *
28
+ * Serialized as portable semantic HTML (`<h2>`, `<strong>`, `<ul>`) with no
29
+ * framework classes or inline styles, so stored content renders identically
30
+ * outside this library.
31
+ */
33
32
  value?: string;
34
- /** Callback when content changes */
33
+ /** Callback when content changes. Receives sanitized HTML. */
35
34
  onChange?: (value: string) => void;
36
35
  /** Placeholder text when editor is empty */
37
36
  placeholder?: string;
38
- /** Additional class name for the editor */
37
+ /** Class name for the editable surface (the primary element). */
39
38
  className?: string;
39
+ /** Class name for the outer wrapper (label + field + helper text). */
40
+ wrapperClassName?: string;
41
+ /** Class name for the bordered editor shell (toolbar + editable surface). */
42
+ containerClassName?: string;
43
+ /** Class name for the toolbar. */
44
+ toolbarClassName?: string;
40
45
  /** Additional class name for the label */
41
46
  labelClassName?: string;
42
47
  /** Additional class name for the helper text */
43
48
  helperTextClassName?: string;
44
- /** Additional class name for the wrapper */
45
- wrapperClassName?: string;
46
- /** Additional class name for the editor container */
47
- editorClassName?: string;
48
49
  /** Whether the editor is required */
49
50
  required?: boolean;
50
- /** Minimum height of the editor in pixels */
51
+ /** Minimum height of the editable surface in pixels */
51
52
  minHeight?: number;
52
- /** Maximum height of the editor in pixels */
53
+ /** Maximum height of the editable surface in pixels */
53
54
  maxHeight?: number;
54
55
  /** Toolbar configuration */
55
56
  toolbar?: ToolbarConfig;
56
57
  /** Component-level theme overrides */
57
58
  theme?: RichTextEditorThemeOverrides;
58
59
  /**
59
- * Custom list of font families shown by the `fontFamily` toolbar tool.
60
- * If omitted, ships with a curated default set (system Default + 8 Google Fonts).
61
- * Provide your own list when you self-host fonts or want a custom curation.
62
- */
63
- fontFamilies?: FontFamilyOption[];
64
- /**
65
- * Whether the editor should lazy-load Google Fonts when picked.
66
- * Defaults to `true`. Set to `false` if you load fonts yourself
67
- * (e.g. via `next/font` or a `<link>` in your app head) — the picker still
68
- * applies the font, but no network request is fired.
69
- */
70
- loadFontsOnDemand?: boolean;
71
- /**
72
- * Optional HTML sanitizer function applied before setting innerHTML.
73
- * Receives raw HTML string, must return sanitized HTML string.
74
- * Recommended: pass DOMPurify.sanitize for robust XSS protection.
75
- * If not provided, a basic built-in sanitizer strips script tags and on* event handlers.
60
+ * Optional HTML sanitizer, replacing the built-in one on every write path
61
+ * (`value`, paste, drop, and the value handed to `onChange`).
62
+ *
63
+ * The built-in sanitizer is a strict deny-by-default allowlist and is safe for
64
+ * content authored in this editor. If you render hostile third-party HTML,
65
+ * pass a hardened sanitizer instead.
76
66
  *
77
67
  * @example
78
68
  * import DOMPurify from 'dompurify';
79
69
  * <RichTextEditor sanitize={DOMPurify.sanitize} />
80
70
  */
81
71
  sanitize?: (html: string) => string;
82
- /**
83
- * Pin the floating toolbar / dropdown surface elevation rung (overrides the
84
- * automatic relative lift) — a rung number (1–8) or a semantic alias.
85
- */
86
- elevation?: SurfaceElevation;
87
- /** `false` opts out of the relative lift — paints at the floating surface's base rung. */
88
- lift?: boolean;
89
72
  }
90
73
  export type RichTextEditorSize = 'sm' | 'md' | 'lg';
91
74
  export type RichTextEditorState = 'default' | 'disabled' | 'invalid';
@@ -95,107 +78,60 @@ export type RichTextEditorState = 'default' | 'disabled' | 'invalid';
95
78
  export interface ToolbarConfig {
96
79
  /** Whether to show the toolbar */
97
80
  show?: boolean;
98
- /** Position of the toolbar */
99
- position?: 'top' | 'floating';
100
- /** Which tools to show in the toolbar */
81
+ /** Which tools to show, in order. Defaults to `DEFAULT_TOOLBAR_TOOLS`. */
101
82
  tools?: ToolbarTool[];
102
83
  /** Custom toolbar className */
103
84
  className?: string;
104
85
  }
105
86
  /**
106
- * Available toolbar tools
107
- */
108
- export type ToolbarTool = 'bold' | 'italic' | 'underline' | 'fontWeight' | 'fontFamily' | 'fontSize' | 'lineHeight' | 'letterSpacing' | 'textColor' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'undo' | 'redo' | 'separator';
109
- /**
110
- * Font family option used by the RichTextEditor font picker.
111
- * - `key` is the stable identifier matched against the current selection.
112
- * - `family` is the canonical Google Fonts family name (used to build the load URL).
113
- * Omit for system fonts (e.g. "Default" or "Sans") — they will not be lazy-loaded.
114
- * - `stack` is the CSS font-family value applied to the selection. Always include
115
- * safe fallbacks so text remains readable while the font is loading.
116
- * - `weights` is the optional list of weights to request (defaults to all 9).
87
+ * Available toolbar tools.
88
+ *
89
+ * Deliberately semantic: this editor produces meaning (headings, lists, quotes),
90
+ * not typography. Font family/size/weight/colour controls were removed — they
91
+ * forced formatting to serialize as framework utility classes, which made stored
92
+ * content unrenderable outside a Tailwind context.
117
93
  */
118
- export interface FontFamilyOption {
119
- key: string;
120
- label: string;
121
- stack: string;
122
- family?: string;
123
- weights?: number[];
124
- }
125
- export type RichTextFontSizeKey = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl' | '7xl' | '8xl' | '9xl';
126
- export type RichTextFontWeightKey = 'thin' | 'extralight' | 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold' | 'black';
127
- export type RichTextLineHeightKey = 'tight' | 'snug' | 'normal' | 'relaxed' | 'loose';
128
- export type RichTextLetterSpacingKey = 'tighter' | 'tight' | 'normal' | 'wide' | 'wider' | 'widest';
94
+ export type ToolbarTool = 'blockStyle' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'link' | 'bulletList' | 'orderedList' | 'blockquote' | 'code' | 'clearFormat' | 'undo' | 'redo' | 'separator';
95
+ /** Block-level style applied to the selection's containing block. */
96
+ export type BlockStyle = 'paragraph' | 'h1' | 'h2' | 'h3' | 'h4';
129
97
  /**
130
- * Text formatting state
98
+ * The formatting active at the current selection.
99
+ *
100
+ * Read by walking the selection's ancestors (see `editorState.ts`) rather than
101
+ * via `document.queryCommandState`, which is unreliable for block-level state.
131
102
  */
132
103
  export interface FormattingState {
133
104
  bold: boolean;
134
105
  italic: boolean;
135
106
  underline: boolean;
136
- textAlign: 'left' | 'center' | 'right' | 'justify';
137
- fontSize: RichTextFontSizeKey;
138
- fontWeight: RichTextFontWeightKey;
139
- fontFamily: string;
140
- lineHeight: RichTextLineHeightKey;
141
- letterSpacing: RichTextLetterSpacingKey;
142
- textColor: string;
107
+ strikethrough: boolean;
108
+ bulletList: boolean;
109
+ orderedList: boolean;
110
+ blockquote: boolean;
111
+ code: boolean;
112
+ /** `href` of the anchor containing the selection, or `null`. */
113
+ link: string | null;
114
+ block: BlockStyle;
143
115
  }
144
- /**
145
- * Color palette for text color picker
146
- */
147
- export interface ColorOption {
148
- label: string;
149
- value: string;
150
- className: string;
151
- }
152
- /**
153
- * Theme overrides for the RichTextEditor component
154
- */
155
116
  export interface RichTextEditorThemeOverrides {
156
- /** Base wrapper style */
157
117
  wrapperStyle?: string;
158
- /** Editor container style */
159
118
  containerStyle?: string;
160
- /** ContentEditable element style */
161
- editorStyle?: string;
162
- /** Toolbar container style (docked variant) */
163
119
  toolbarStyle?: string;
164
- /** Floating toolbar container style (selection-anchored variant) */
165
- floatingToolbarStyle?: string;
166
- /** Toolbar button style */
167
- toolbarButtonStyle?: string;
168
- /** Size variants */
169
- sizes?: Partial<Record<RichTextEditorSize, string>>;
170
- /** State variants */
171
- states?: {
172
- default?: string;
173
- disabled?: string;
174
- invalid?: string;
175
- };
176
- /** Helper text style */
177
- helperText?: string;
120
+ editorStyle?: string;
121
+ separatorStyle?: string;
122
+ placeholderStyle?: string;
123
+ helperTextStyle?: string;
124
+ errorTextStyle?: string;
178
125
  }
179
- /**
180
- * Complete theme structure for RichTextEditor component
181
- */
182
126
  export interface RichTextEditorTheme {
183
127
  wrapperStyle: string;
184
128
  containerStyle: string;
185
- editorStyle: string;
129
+ containerStates: Record<RichTextEditorState, string>;
186
130
  toolbarStyle: string;
187
- floatingToolbarStyle: string;
188
- toolbarButtonStyle: string;
189
- dropdownStyle: string;
190
- dropdownItemStyle: string;
131
+ editorStyle: string;
132
+ editorSizes: Record<RichTextEditorSize, string>;
191
133
  separatorStyle: string;
192
- colorPickerStyle: string;
193
- colorSwatchStyle: string;
194
- sizes: Record<RichTextEditorSize, string>;
195
- states: {
196
- default: string;
197
- disabled: string;
198
- invalid: string;
199
- };
200
- helperText: string;
134
+ placeholderStyle: string;
135
+ helperTextStyle: string;
136
+ errorTextStyle: string;
201
137
  }
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ export interface RichTextLinkFieldProps {
3
+ /** Existing href when editing a link, `null` when creating one. */
4
+ initialHref: string | null;
5
+ onApply: (href: string) => void;
6
+ onRemove: () => void;
7
+ onCancel: () => void;
8
+ className?: string;
9
+ }
10
+ /**
11
+ * Inline link editor, revealed under the toolbar.
12
+ *
13
+ * Deliberately NOT a portaled popover: this row appears while the user's text
14
+ * selection must stay intact, and an anchored overlay adds focus-restore and
15
+ * placement problems for no benefit at this size. The row takes focus on open
16
+ * and returns it to the editor when it closes.
17
+ */
18
+ export declare const RichTextLinkField: React.FC<RichTextLinkFieldProps>;
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useState, useRef, useEffect } from 'react';
4
+ import { Check, Trash, X } from '@phosphor-icons/react';
5
+ import { Button } from '../../core/Button/Button.js';
6
+ import { Input } from '../Input/Input.js';
7
+ import '../Input/Input.theme.js';
8
+ import { cn } from '../../../utils/cn.js';
9
+
10
+ /**
11
+ * Inline link editor, revealed under the toolbar.
12
+ *
13
+ * Deliberately NOT a portaled popover: this row appears while the user's text
14
+ * selection must stay intact, and an anchored overlay adds focus-restore and
15
+ * placement problems for no benefit at this size. The row takes focus on open
16
+ * and returns it to the editor when it closes.
17
+ */
18
+ const RichTextLinkField = ({ initialHref, onApply, onRemove, onCancel, className, }) => {
19
+ const [href, setHref] = useState(initialHref !== null && initialHref !== void 0 ? initialHref : "");
20
+ const inputRef = useRef(null);
21
+ useEffect(() => {
22
+ var _a, _b;
23
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
24
+ (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.select();
25
+ }, []);
26
+ const apply = () => {
27
+ const trimmed = href.trim();
28
+ if (trimmed)
29
+ onApply(trimmed);
30
+ else
31
+ onCancel();
32
+ };
33
+ return (jsxs("div", { className: cn("flex items-center gap-1.5 border-b border-[var(--color-border)] p-1.5", className), children: [jsx(Input, { ref: inputRef, size: "sm", type: "url", value: href, placeholder: "https://example.com", "aria-label": "Link URL", inputGroupClassName: "flex-1", onValueChange: setHref, onKeyDown: (event) => {
34
+ if (event.key === "Enter") {
35
+ event.preventDefault();
36
+ apply();
37
+ }
38
+ else if (event.key === "Escape") {
39
+ event.preventDefault();
40
+ onCancel();
41
+ }
42
+ } }), jsx(Button, { type: "button", iconOnly: true, size: "sm", variant: "ghost", color: "mono", "aria-label": "Apply link", iconStart: jsx(Check, {}), onClick: apply }), initialHref !== null && (jsx(Button, { type: "button", iconOnly: true, size: "sm", variant: "ghost", color: "danger", "aria-label": "Remove link", iconStart: jsx(Trash, {}), onClick: onRemove })), jsx(Button, { type: "button", iconOnly: true, size: "sm", variant: "ghost", color: "mono", "aria-label": "Cancel", iconStart: jsx(X, {}), onClick: onCancel })] }));
43
+ };
44
+ RichTextLinkField.displayName = "RichTextLinkField";
45
+
46
+ export { RichTextLinkField };
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import type { BlockStyle, FormattingState, RichTextEditorSize, ToolbarTool } from "./RichTextEditor.types";
3
+ /** The compact default: block style, inline marks, links, lists, history. */
4
+ export declare const DEFAULT_TOOLBAR_TOOLS: ToolbarTool[];
5
+ export interface RichTextToolbarProps {
6
+ tools: ToolbarTool[];
7
+ formatting: FormattingState;
8
+ disabled: boolean;
9
+ size: RichTextEditorSize;
10
+ className?: string;
11
+ /** Invoked for every button-shaped tool. */
12
+ onCommand: (tool: Exclude<ToolbarTool, "blockStyle" | "separator">) => void;
13
+ onBlockChange: (block: BlockStyle) => void;
14
+ }
15
+ export declare const RichTextToolbar: React.FC<RichTextToolbarProps>;