@flikk/ui 1.0.0-beta.31 → 1.0.0-beta.33

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 (460) hide show
  1. package/CHANGELOG.md +497 -22
  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/CodeBlock/CodeBlock.theme.js +1 -1
  11. package/dist/components/ai/PromptInput/PromptInput.js +2 -2
  12. package/dist/components/ai/PromptInput/PromptInput.theme.js +2 -2
  13. package/dist/components/ai/PromptSuggestion/PromptSuggestion.theme.js +2 -2
  14. package/dist/components/ai/Reasoning/Reasoning.js +27 -3
  15. package/dist/components/ai/Reasoning/Reasoning.theme.d.ts +6 -0
  16. package/dist/components/ai/Reasoning/Reasoning.theme.js +36 -0
  17. package/dist/components/ai/Reasoning/Reasoning.types.d.ts +58 -5
  18. package/dist/components/ai/Reasoning/ReasoningTrace.d.ts +11 -0
  19. package/dist/components/ai/Reasoning/ReasoningTrace.js +84 -0
  20. package/dist/components/ai/Reasoning/index.d.ts +2 -1
  21. package/dist/components/ai/StreamingResponse/AnimatedText.d.ts +7 -0
  22. package/dist/components/ai/StreamingResponse/AnimatedText.js +8 -7
  23. package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -0
  24. package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +4 -4
  25. package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
  26. package/dist/components/ai/StreamingResponse/StreamingCursor.js +10 -7
  27. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +10 -0
  28. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +59 -33
  29. package/dist/components/ai/StreamingResponse/StreamingResponse.js +13 -7
  30. package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +33 -2
  31. package/dist/components/ai/StreamingResponse/StreamingSurface.d.ts +13 -0
  32. package/dist/components/ai/StreamingResponse/StreamingSurface.js +38 -0
  33. package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +5 -0
  34. package/dist/components/ai/StreamingResponse/WordAnimationContext.js +5 -4
  35. package/dist/components/ai/StreamingResponse/index.d.ts +4 -2
  36. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
  37. package/dist/components/ai/index.d.ts +3 -2
  38. package/dist/components/ai/index.js +4 -0
  39. package/dist/components/canvas/BaseNode.js +1 -1
  40. package/dist/components/canvas/CanvasToolbar.js +0 -1
  41. package/dist/components/canvas/Edge.js +2 -2
  42. package/dist/components/canvas/NodeControls.js +0 -1
  43. package/dist/components/canvas/NodeRenderer.js +2 -2
  44. package/dist/components/charts/ActivityRings/ActivityRings.js +2 -2
  45. package/dist/components/charts/ActivityRings/ActivityRings.theme.js +1 -1
  46. package/dist/components/charts/AreaChart/AreaChart.js +3 -3
  47. package/dist/components/charts/AreaChart/AreaChart.theme.js +3 -3
  48. package/dist/components/charts/BarChart/BarChart.js +4 -4
  49. package/dist/components/charts/ComboChart/BarRenderer.js +2 -2
  50. package/dist/components/charts/ComboChart/BarRenderer.types.d.ts +1 -1
  51. package/dist/components/charts/ComboChart/ComboChartCanvas.js +1 -1
  52. package/dist/components/charts/ComboChart/LineRenderer.js +1 -1
  53. package/dist/components/charts/ComboChart/LineRenderer.types.d.ts +1 -1
  54. package/dist/components/charts/DonutChart/DonutChart.theme.js +4 -4
  55. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
  56. package/dist/components/charts/Heatmap/Heatmap.js +49 -42
  57. package/dist/components/charts/Heatmap/Heatmap.theme.d.ts +6 -2
  58. package/dist/components/charts/Heatmap/Heatmap.theme.js +20 -8
  59. package/dist/components/charts/Heatmap/Heatmap.types.d.ts +49 -82
  60. package/dist/components/charts/Heatmap/HeatmapCell.js +30 -81
  61. package/dist/components/charts/Heatmap/HeatmapLegend.d.ts +7 -6
  62. package/dist/components/charts/Heatmap/HeatmapLegend.js +6 -6
  63. package/dist/components/charts/Heatmap/index.d.ts +1 -1
  64. package/dist/components/charts/Heatmap/utils/heatmapUtils.d.ts +7 -12
  65. package/dist/components/charts/Heatmap/utils/heatmapUtils.js +16 -61
  66. package/dist/components/charts/Heatmap/utils/heatmapUtils.test.d.ts +1 -0
  67. package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.js +1 -1
  68. package/dist/components/charts/LineChart/LineChart.js +2 -2
  69. package/dist/components/charts/LollipopChart/LollipopChart.js +1 -1
  70. package/dist/components/charts/RadarChart/RadarChart.js +1 -1
  71. package/dist/components/charts/StackedBarChart/StackedBarChart.js +3 -3
  72. package/dist/components/charts/hooks/useChartAccessibility.js +9 -6
  73. package/dist/components/charts/index.d.ts +4 -8
  74. package/dist/components/charts/index.js +2 -4
  75. package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
  76. package/dist/components/charts/shared/index.d.ts +1 -1
  77. package/dist/components/charts/theme/chart.theme.js +3 -3
  78. package/dist/components/charts/utils/animation-utils.d.ts +12 -7
  79. package/dist/components/charts/utils/animation-utils.js +19 -19
  80. package/dist/components/core/Accordion/Accordion.theme.js +1 -1
  81. package/dist/components/core/Alert/Alert.animations.d.ts +11 -4
  82. package/dist/components/core/Alert/Alert.animations.js +11 -4
  83. package/dist/components/core/Alert/Alert.js +16 -2
  84. package/dist/components/core/Alert/Alert.theme.js +1 -1
  85. package/dist/components/core/Alert/Alert.types.d.ts +4 -2
  86. package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
  87. package/dist/components/core/Avatar/Avatar.theme.js +1 -1
  88. package/dist/components/core/Badge/Badge.animations.d.ts +0 -5
  89. package/dist/components/core/Badge/Badge.animations.js +5 -84
  90. package/dist/components/core/Badge/Badge.d.ts +7 -4
  91. package/dist/components/core/Badge/Badge.js +27 -64
  92. package/dist/components/core/Badge/Badge.theme.js +8 -12
  93. package/dist/components/core/Badge/Badge.types.d.ts +18 -34
  94. package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +4 -4
  95. package/dist/components/core/Button/Button.js +7 -43
  96. package/dist/components/core/Button/Button.theme.js +5 -5
  97. package/dist/components/core/Button/Button.types.d.ts +8 -12
  98. package/dist/components/core/Button/index.d.ts +0 -2
  99. package/dist/components/core/Calendar/Calendar.theme.js +1 -1
  100. package/dist/components/core/Calendar/CalendarMini/CalendarMini.theme.js +2 -2
  101. package/dist/components/core/Card/Card.js +7 -2
  102. package/dist/components/core/Card/Card.theme.js +29 -1
  103. package/dist/components/core/Card/Card.types.d.ts +20 -0
  104. package/dist/components/core/Card/CardBody.js +9 -1
  105. package/dist/components/core/Card/CardContext.d.ts +13 -0
  106. package/dist/components/core/Card/CardContext.js +14 -0
  107. package/dist/components/core/Card/CardHeader.js +4 -1
  108. package/dist/components/core/ContextMenu/ContextMenu.theme.js +4 -3
  109. package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +8 -1
  110. package/dist/components/core/ContextMenu/ContextMenuSub.d.ts +11 -1
  111. package/dist/components/core/ContextMenu/ContextMenuSub.js +35 -22
  112. package/dist/components/core/ContextMenu/ContextMenuSubBody.js +14 -3
  113. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +21 -8
  114. package/dist/components/core/DragDrop/DragDrop.theme.js +2 -2
  115. package/dist/components/core/Drawer/Drawer.theme.js +1 -1
  116. package/dist/components/core/Drawer/DrawerHeader.js +0 -1
  117. package/dist/components/core/Dropdown/DropdownMenu.js +22 -7
  118. package/dist/components/core/Link/Link.js +1 -1
  119. package/dist/components/core/Masonry/Masonry.theme.js +1 -1
  120. package/dist/components/core/MenuItem/MenuItem.js +2 -1
  121. package/dist/components/core/MenuItem/MenuItem.theme.js +13 -1
  122. package/dist/components/core/Message/Message.js +2 -0
  123. package/dist/components/core/Message/Message.theme.js +3 -3
  124. package/dist/components/core/Modal/Modal.animations.d.ts +1 -1
  125. package/dist/components/core/Modal/Modal.animations.js +50 -11
  126. package/dist/components/core/Modal/Modal.js +5 -1
  127. package/dist/components/core/Modal/Modal.theme.js +1 -1
  128. package/dist/components/core/Modal/ModalHeader.js +0 -1
  129. package/dist/components/core/ModalStack/ModalStackModal.js +3 -1
  130. package/dist/components/core/NavItem/NavItem.js +3 -2
  131. package/dist/components/core/NavItem/NavItem.theme.js +1 -1
  132. package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +4 -2
  133. package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
  134. package/dist/components/core/Pagination/Pagination.theme.js +2 -2
  135. package/dist/components/core/Pill/Pill.js +34 -18
  136. package/dist/components/core/Pill/Pill.theme.js +4 -2
  137. package/dist/components/core/Pill/Pill.types.d.ts +14 -1
  138. package/dist/components/core/Popover/PopoverBody.js +16 -5
  139. package/dist/components/core/Progress/Progress.d.ts +0 -25
  140. package/dist/components/core/Progress/Progress.js +79 -11
  141. package/dist/components/core/Progress/Progress.theme.js +17 -0
  142. package/dist/components/core/Progress/Progress.types.d.ts +47 -1
  143. package/dist/components/core/Rating/Rating.theme.js +1 -1
  144. package/dist/components/core/Rating/Rating.types.d.ts +3 -2
  145. package/dist/components/core/ScrollArea/ScrollArea.js +1 -1
  146. package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
  147. package/dist/components/core/Segmented/Segmented.theme.js +3 -3
  148. package/dist/components/core/Segmented/SegmentedContext.js +1 -0
  149. package/dist/components/core/Sidebar/Sidebar.js +5 -2
  150. package/dist/components/core/Sidebar/Sidebar.theme.js +2 -2
  151. package/dist/components/core/Sidebar/SidebarContent.js +1 -1
  152. package/dist/components/core/Sidebar/SidebarHeader.js +1 -1
  153. package/dist/components/core/Sidebar/SidebarSearch.js +2 -2
  154. package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
  155. package/dist/components/core/Sidebar/SidebarUserProfile.js +1 -1
  156. package/dist/components/core/SlidingNumber/SlidingNumber.d.ts +8 -0
  157. package/dist/components/core/SlidingNumber/SlidingNumber.js +12 -3
  158. package/dist/components/core/Sortable/Sortable.theme.js +1 -1
  159. package/dist/components/core/Tabs/Tabs.theme.js +1 -1
  160. package/dist/components/core/Tag/Tag.theme.js +1 -1
  161. package/dist/components/core/Toast/ToastProvider.js +1 -1
  162. package/dist/components/core/Tree/Tree.theme.js +1 -1
  163. package/dist/components/core/index.d.ts +0 -2
  164. package/dist/components/core/index.js +0 -4
  165. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.d.ts +4 -0
  166. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.js +20 -0
  167. package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.js +1 -1
  168. package/dist/components/core/shared/Ripple.d.ts +16 -0
  169. package/dist/components/core/shared/Ripple.js +141 -0
  170. package/dist/components/data-display/GanttChart/GanttChart.theme.js +6 -6
  171. package/dist/components/data-display/GanttChart/GanttTaskBar.js +1 -1
  172. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +1 -1
  173. package/dist/components/data-display/GanttChart/GanttToolbar.js +0 -1
  174. package/dist/components/data-display/KPI/KPI.js +11 -20
  175. package/dist/components/data-display/KPI/KPI.theme.js +8 -4
  176. package/dist/components/data-display/Metric/Metric.theme.js +4 -4
  177. package/dist/components/data-display/Table/Table.theme.js +2 -2
  178. package/dist/components/data-display/Table/TableColumnManager.js +1 -2
  179. package/dist/components/data-display/Table/TableContext.js +1 -0
  180. package/dist/components/data-display/Table/TableFilter.js +9 -2
  181. package/dist/components/data-display/Table/TableSelectionHeader.js +1 -1
  182. package/dist/components/data-display/Timeline/Timeline.theme.js +1 -1
  183. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +1 -1
  184. package/dist/components/effects/CustomCursor/CustomCursor.js +1 -1
  185. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +4 -4
  186. package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -1
  187. package/dist/components/effects/Overlay/Overlay.js +7 -3
  188. package/dist/components/effects/index.d.ts +0 -32
  189. package/dist/components/effects/index.js +0 -16
  190. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.d.ts +0 -2
  191. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.js +1 -93
  192. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +0 -10
  193. package/dist/components/effects/shared/ShaderCanvas/index.d.ts +1 -1
  194. package/dist/components/effects/shared/index.d.ts +1 -3
  195. package/dist/components/effects/shared/shaderNoise.glsl.d.ts +1 -1
  196. package/dist/components/effects/shared/shaderNoise.glsl.js +2 -11
  197. package/dist/components/forms/Checkbox/Checkbox.theme.js +1 -1
  198. package/dist/components/forms/ColorPicker/ColorPicker.js +45 -3
  199. package/dist/components/forms/ColorPicker/ColorPickerBody.js +8 -4
  200. package/dist/components/forms/ColorPicker/ColorPickerHeader.js +1 -1
  201. package/dist/components/forms/ColorPicker/ColorPickerImage.js +1 -1
  202. package/dist/components/forms/Combobox/Combobox.js +10 -4
  203. package/dist/components/forms/Combobox/Combobox.theme.js +9 -0
  204. package/dist/components/forms/Combobox/Combobox.types.d.ts +13 -0
  205. package/dist/components/forms/DatePicker/DatePicker.js +19 -12
  206. package/dist/components/forms/DatePicker/DatePicker.theme.js +5 -0
  207. package/dist/components/forms/DatePicker/DatePicker.types.d.ts +8 -0
  208. package/dist/components/forms/DatePicker/DatePickerContext.d.ts +0 -1
  209. package/dist/components/forms/DatePicker/DatePickerTrigger.js +5 -3
  210. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +6 -1
  211. package/dist/components/forms/DateRangePicker/DateRangePicker.types.d.ts +8 -0
  212. package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +1 -0
  213. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +5 -3
  214. package/dist/components/forms/FileUpload/FileUpload.theme.js +2 -2
  215. package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +1 -1
  216. package/dist/components/forms/Input/Input.js +17 -12
  217. package/dist/components/forms/Input/Input.theme.js +10 -0
  218. package/dist/components/forms/Input/Input.types.d.ts +14 -0
  219. package/dist/components/forms/InputAddress/InputAddress.js +5 -5
  220. package/dist/components/forms/InputAddress/InputAddress.types.d.ts +9 -2
  221. package/dist/components/forms/InputCounter/InputCounter.js +194 -17
  222. package/dist/components/forms/InputCounter/InputCounter.theme.d.ts +12 -0
  223. package/dist/components/forms/InputCounter/InputCounter.theme.js +92 -2
  224. package/dist/components/forms/InputCounter/InputCounter.types.d.ts +47 -4
  225. package/dist/components/forms/InputCreditCard/InputCreditCard.js +4 -4
  226. package/dist/components/forms/InputCreditCard/InputCreditCard.types.d.ts +7 -0
  227. package/dist/components/forms/Mention/Mention.js +13 -11
  228. package/dist/components/forms/Radio/Radio.theme.js +1 -1
  229. package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +12 -16
  230. package/dist/components/forms/RichTextEditor/RichTextEditor.js +174 -1680
  231. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +12 -56
  232. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +60 -118
  233. package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +62 -126
  234. package/dist/components/forms/RichTextEditor/RichTextLinkField.d.ts +18 -0
  235. package/dist/components/forms/RichTextEditor/RichTextLinkField.js +46 -0
  236. package/dist/components/forms/RichTextEditor/RichTextToolbar.d.ts +15 -0
  237. package/dist/components/forms/RichTextEditor/RichTextToolbar.js +93 -0
  238. package/dist/components/forms/RichTextEditor/editorCommands.d.ts +50 -0
  239. package/dist/components/forms/RichTextEditor/editorCommands.js +58 -0
  240. package/dist/components/forms/RichTextEditor/editorState.d.ts +19 -0
  241. package/dist/components/forms/RichTextEditor/editorState.js +103 -0
  242. package/dist/components/forms/RichTextEditor/index.d.ts +5 -3
  243. package/dist/components/forms/RichTextEditor/sanitizeHtml.d.ts +38 -0
  244. package/dist/components/forms/RichTextEditor/sanitizeHtml.js +179 -0
  245. package/dist/components/forms/RichTextEditor/sanitizeHtml.test.d.ts +1 -0
  246. package/dist/components/forms/Select/Select.js +19 -12
  247. package/dist/components/forms/Select/Select.theme.js +9 -1
  248. package/dist/components/forms/Select/Select.types.d.ts +86 -8
  249. package/dist/components/forms/Select/useSelectState.d.ts +9 -3
  250. package/dist/components/forms/Select/useSelectState.js +4 -1
  251. package/dist/components/forms/SelectableCard/SelectableCard.js +2 -1
  252. package/dist/components/forms/SelectableCard/SelectableCard.theme.js +1 -1
  253. package/dist/components/forms/Switch/Switch.theme.js +2 -2
  254. package/dist/components/forms/Textarea/Textarea.js +14 -25
  255. package/dist/components/forms/TimePicker/TimePicker.theme.js +10 -1
  256. package/dist/components/forms/TimePicker/TimePicker.types.d.ts +11 -0
  257. package/dist/components/forms/TimePicker/TimePickerTrigger.js +7 -5
  258. package/dist/components/forms/forms.theme.d.ts +57 -0
  259. package/dist/components/forms/forms.theme.js +102 -13
  260. package/dist/components/forms/index.js +1 -0
  261. package/dist/components/generative/FormShell.d.ts +22 -0
  262. package/dist/components/generative/FormShell.js +102 -0
  263. package/dist/components/generative/GenerativeView.d.ts +52 -1
  264. package/dist/components/generative/GenerativeView.js +203 -11
  265. package/dist/components/generative/actions.d.ts +5 -0
  266. package/dist/components/generative/ai-sdk/index.d.ts +1 -0
  267. package/dist/components/generative/ai-sdk/index.js +1 -0
  268. package/dist/components/generative/ai-sdk/useGenerativeChat.d.ts +52 -0
  269. package/dist/components/generative/ai-sdk/useGenerativeChat.js +73 -0
  270. package/dist/components/generative/ai-sdk/useGenerativeChat.test.d.ts +1 -0
  271. package/dist/components/generative/fieldBinding.d.ts +31 -0
  272. package/dist/components/generative/fieldBinding.js +33 -0
  273. package/dist/components/generative/fieldBinding.test.d.ts +1 -0
  274. package/dist/components/generative/formScope.d.ts +71 -0
  275. package/dist/components/generative/formScope.js +135 -0
  276. package/dist/components/generative/index.d.ts +4 -0
  277. package/dist/components/generative/index.js +4 -0
  278. package/dist/components/generative/registry.d.ts +2 -0
  279. package/dist/components/generative/registry.js +11 -10
  280. package/dist/components/generative/schema.generated.js +199 -293
  281. package/dist/components/generative/toToolResult.d.ts +21 -0
  282. package/dist/components/generative/toToolResult.js +15 -0
  283. package/dist/components/generative/toToolResult.test.d.ts +1 -0
  284. package/dist/components/generative/validate.d.ts +10 -1
  285. package/dist/components/generative/validate.js +126 -11
  286. package/dist/components/layout/Grid/Grid.js +1 -0
  287. package/dist/components/layout/Section/Section.theme.js +1 -1
  288. package/dist/components/layout/Stack/Stack.js +1 -0
  289. package/dist/generative.schema.json +199 -293
  290. package/dist/index.js +1 -4
  291. package/dist/registry.json +2765 -2450
  292. package/dist/shadcn-compat.css +5 -5
  293. package/dist/styles/theme.test.d.ts +1 -0
  294. package/dist/styles.css +1 -1
  295. package/dist/test/render.d.ts +17 -0
  296. package/dist/themes/precision.css +232 -0
  297. package/dist/tools.json +200 -295
  298. package/dist/utils/composeEventHandlers.d.ts +19 -0
  299. package/dist/utils/composeEventHandlers.js +26 -0
  300. package/dist/utils/composeEventHandlers.test.d.ts +1 -0
  301. package/dist/utils/index.d.ts +1 -1
  302. package/package.json +31 -1
  303. package/src/global.scss +21 -28
  304. package/src/styles/theme.css +157 -50
  305. package/src/styles/theme.test.ts +119 -0
  306. package/tailwind.preset.cjs +30 -20
  307. package/dist/components/charts/FunnelChart/FunnelChart.animations.d.ts +0 -35
  308. package/dist/components/charts/FunnelChart/FunnelChart.animations.js +0 -59
  309. package/dist/components/charts/FunnelChart/FunnelChart.d.ts +0 -8
  310. package/dist/components/charts/FunnelChart/FunnelChart.js +0 -410
  311. package/dist/components/charts/FunnelChart/FunnelChart.theme.d.ts +0 -2
  312. package/dist/components/charts/FunnelChart/FunnelChart.theme.js +0 -12
  313. package/dist/components/charts/FunnelChart/FunnelChart.types.d.ts +0 -105
  314. package/dist/components/charts/FunnelChart/index.d.ts +0 -4
  315. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +0 -9
  316. package/dist/components/charts/ScatterPlot/ScatterPlot.js +0 -208
  317. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -18
  318. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -42
  319. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +0 -60
  320. package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +0 -19
  321. package/dist/components/charts/ScatterPlot/index.d.ts +0 -3
  322. package/dist/components/core/Button/Button.ripple.d.ts +0 -71
  323. package/dist/components/core/Button/Button.ripple.js +0 -236
  324. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.d.ts +0 -4
  325. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.theme.d.ts +0 -12
  326. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.types.d.ts +0 -23
  327. package/dist/components/core/Calendar/CalendarEvent/index.d.ts +0 -2
  328. package/dist/components/core/CardStack/CardStack.animations.d.ts +0 -47
  329. package/dist/components/core/CardStack/CardStack.d.ts +0 -3
  330. package/dist/components/core/CardStack/CardStack.js +0 -187
  331. package/dist/components/core/CardStack/CardStack.theme.d.ts +0 -6
  332. package/dist/components/core/CardStack/CardStack.theme.js +0 -33
  333. package/dist/components/core/CardStack/CardStack.types.d.ts +0 -139
  334. package/dist/components/core/CardStack/index.d.ts +0 -7
  335. package/dist/components/core/Carousel/Carousel.d.ts +0 -3
  336. package/dist/components/core/Carousel/Carousel.js +0 -83
  337. package/dist/components/core/Carousel/Carousel.theme.d.ts +0 -10
  338. package/dist/components/core/Carousel/Carousel.theme.js +0 -20
  339. package/dist/components/core/Carousel/Carousel.types.d.ts +0 -113
  340. package/dist/components/core/Carousel/CarouselBody.d.ts +0 -4
  341. package/dist/components/core/Carousel/CarouselBody.js +0 -59
  342. package/dist/components/core/Carousel/CarouselContext.d.ts +0 -3
  343. package/dist/components/core/Carousel/CarouselContext.js +0 -13
  344. package/dist/components/core/Carousel/CarouselItem.d.ts +0 -4
  345. package/dist/components/core/Carousel/CarouselItem.js +0 -11
  346. package/dist/components/core/Carousel/CarouselNext.d.ts +0 -4
  347. package/dist/components/core/Carousel/CarouselNext.js +0 -16
  348. package/dist/components/core/Carousel/CarouselPrevious.d.ts +0 -4
  349. package/dist/components/core/Carousel/CarouselPrevious.js +0 -16
  350. package/dist/components/core/Carousel/index.d.ts +0 -3
  351. package/dist/components/effects/ColorPanels/ColorPanels.d.ts +0 -8
  352. package/dist/components/effects/ColorPanels/ColorPanels.js +0 -66
  353. package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +0 -12
  354. package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +0 -218
  355. package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +0 -29
  356. package/dist/components/effects/ColorPanels/ColorPanels.types.js +0 -3
  357. package/dist/components/effects/ColorPanels/index.d.ts +0 -2
  358. package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +0 -9
  359. package/dist/components/effects/FlutedGlass/FlutedGlass.js +0 -80
  360. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +0 -12
  361. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +0 -335
  362. package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +0 -61
  363. package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +0 -16
  364. package/dist/components/effects/FlutedGlass/index.d.ts +0 -3
  365. package/dist/components/effects/GlassEffect/GlassEffect.d.ts +0 -15
  366. package/dist/components/effects/GlassEffect/GlassEffect.js +0 -38
  367. package/dist/components/effects/GlassEffect/GlassEffect.types.d.ts +0 -19
  368. package/dist/components/effects/GlassEffect/index.d.ts +0 -2
  369. package/dist/components/effects/GlassSurface/GlassSurface.d.ts +0 -8
  370. package/dist/components/effects/GlassSurface/GlassSurface.js +0 -250
  371. package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +0 -66
  372. package/dist/components/effects/GlassSurface/index.d.ts +0 -2
  373. package/dist/components/effects/GodRays/GodRays.d.ts +0 -8
  374. package/dist/components/effects/GodRays/GodRays.js +0 -68
  375. package/dist/components/effects/GodRays/GodRays.shaders.d.ts +0 -10
  376. package/dist/components/effects/GodRays/GodRays.shaders.js +0 -128
  377. package/dist/components/effects/GodRays/GodRays.types.d.ts +0 -25
  378. package/dist/components/effects/GodRays/GodRays.types.js +0 -3
  379. package/dist/components/effects/GodRays/index.d.ts +0 -2
  380. package/dist/components/effects/GridPattern/GridPattern.d.ts +0 -18
  381. package/dist/components/effects/GridPattern/GridPattern.js +0 -65
  382. package/dist/components/effects/GridPattern/GridPattern.types.d.ts +0 -47
  383. package/dist/components/effects/GridPattern/index.d.ts +0 -2
  384. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +0 -10
  385. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +0 -78
  386. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +0 -22
  387. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +0 -239
  388. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +0 -52
  389. package/dist/components/effects/HalftoneCmyk/index.d.ts +0 -2
  390. package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +0 -9
  391. package/dist/components/effects/HalftoneDots/HalftoneDots.js +0 -68
  392. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +0 -13
  393. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +0 -296
  394. package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +0 -43
  395. package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +0 -12
  396. package/dist/components/effects/HalftoneDots/index.d.ts +0 -3
  397. package/dist/components/effects/ImageDithering/ImageDithering.d.ts +0 -9
  398. package/dist/components/effects/ImageDithering/ImageDithering.js +0 -68
  399. package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +0 -12
  400. package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +0 -117
  401. package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +0 -30
  402. package/dist/components/effects/ImageDithering/ImageDithering.types.js +0 -8
  403. package/dist/components/effects/ImageDithering/index.d.ts +0 -3
  404. package/dist/components/effects/MagneticElement/MagneticElement.d.ts +0 -30
  405. package/dist/components/effects/MagneticElement/MagneticElement.js +0 -111
  406. package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +0 -44
  407. package/dist/components/effects/MagneticElement/index.d.ts +0 -2
  408. package/dist/components/effects/Metaballs/Metaballs.d.ts +0 -8
  409. package/dist/components/effects/Metaballs/Metaballs.js +0 -59
  410. package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +0 -10
  411. package/dist/components/effects/Metaballs/Metaballs.shaders.js +0 -102
  412. package/dist/components/effects/Metaballs/Metaballs.types.d.ts +0 -16
  413. package/dist/components/effects/Metaballs/Metaballs.types.js +0 -3
  414. package/dist/components/effects/Metaballs/index.d.ts +0 -2
  415. package/dist/components/effects/PaperTexture/PaperTexture.d.ts +0 -9
  416. package/dist/components/effects/PaperTexture/PaperTexture.js +0 -61
  417. package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +0 -22
  418. package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +0 -145
  419. package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +0 -19
  420. package/dist/components/effects/PaperTexture/index.d.ts +0 -2
  421. package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +0 -27
  422. package/dist/components/effects/PulsingBorder/PulsingBorder.js +0 -174
  423. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +0 -14
  424. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +0 -258
  425. package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +0 -75
  426. package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +0 -3
  427. package/dist/components/effects/PulsingBorder/index.d.ts +0 -2
  428. package/dist/components/effects/SmokeRing/SmokeRing.d.ts +0 -8
  429. package/dist/components/effects/SmokeRing/SmokeRing.js +0 -62
  430. package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +0 -14
  431. package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +0 -130
  432. package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +0 -22
  433. package/dist/components/effects/SmokeRing/SmokeRing.types.js +0 -3
  434. package/dist/components/effects/SmokeRing/index.d.ts +0 -2
  435. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +0 -9
  436. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +0 -59
  437. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +0 -14
  438. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +0 -129
  439. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +0 -23
  440. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +0 -3
  441. package/dist/components/effects/StaticGradientMesh/index.d.ts +0 -2
  442. package/dist/components/effects/Water/Water.d.ts +0 -9
  443. package/dist/components/effects/Water/Water.js +0 -65
  444. package/dist/components/effects/Water/Water.shaders.d.ts +0 -11
  445. package/dist/components/effects/Water/Water.shaders.js +0 -123
  446. package/dist/components/effects/Water/Water.types.d.ts +0 -25
  447. package/dist/components/effects/Water/index.d.ts +0 -2
  448. package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +0 -10
  449. package/dist/components/effects/shared/bayerMatrices.glsl.js +0 -44
  450. package/dist/components/effects/shared/imageUV.glsl.d.ts +0 -12
  451. package/dist/components/effects/shared/imageUV.glsl.js +0 -26
  452. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.d.ts +0 -7
  453. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +0 -32
  454. package/dist/utils/calendarUtils.d.ts +0 -60
  455. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.d.ts +0 -0
  456. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.d.ts +0 -0
  457. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.js +0 -0
  458. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.types.d.ts +0 -0
  459. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltipContent.d.ts +0 -0
  460. /package/dist/components/{charts → core}/shared/ChartTooltip/index.d.ts +0 -0
@@ -1,17 +1,29 @@
1
1
  /**
2
- * Heatmap theme configuration
3
- * Uses production-ready CSS variables from global.scss
2
+ * Heatmap theme configuration.
3
+ * CSS variables only (CLAUDE.md §3) — no raw Tailwind greys.
4
4
  */
5
5
  const heatmapTheme = {
6
- // Container with variants handled inline
7
6
  containerStyle: "relative w-full h-full min-h-[200px] flex flex-col",
8
- // Grid container (applied via inline styles for CSS Grid)
7
+ // `default` adds nothing; `minimal` tightens the frame.
8
+ variants: {
9
+ default: "",
10
+ minimal: "p-2",
11
+ },
12
+ // Grid container (CSS Grid template comes from inline styles).
9
13
  gridStyle: "absolute inset-0",
10
- // Base cell styles (individual cells add opacity via inline styles)
11
- cellBaseStyle: "relative w-full h-full cursor-pointer border border-transparent transition-all duration-500 animate-[flicker_0.6s_ease-out_forwards]",
12
- // Axis labels using CSS variables for dark mode support
14
+ // Cells: motion owns opacity and transform, so the CSS transition lists
15
+ // background-color only a `transition-all` here re-interpolates the
16
+ // hover/tap scale every frame (CLAUDE.md §12).
17
+ cellBaseStyle: "relative w-full h-full rounded-sm border border-transparent transition-[background-color] duration-[var(--motion-duration-fast)]",
18
+ // Missing data: a hairline well, never a painted cell. `border` supplies the
19
+ // width — `border-[var(--color-border)]` alone only sets border-color, and
20
+ // Tailwind's preflight zeroes border-width by default, so without it this
21
+ // painted nothing (this style is applied standalone by the parent's null
22
+ // branch, not merged with cellBaseStyle's own `border` utility).
23
+ cellNullStyle: "bg-transparent border border-[var(--color-border)]",
24
+ // Optional content rendered inside a cell.
25
+ cellOverlayStyle: "absolute inset-0 flex items-center justify-center text-sm font-medium text-[var(--color-text-primary)]",
13
26
  axisLabelStyle: "text-xs text-[var(--color-text-secondary)] font-medium select-none",
14
- // Legend using correct CSS variables
15
27
  legendStyle: "w-full space-y-1.5 mt-3",
16
28
  };
17
29
 
@@ -1,9 +1,8 @@
1
1
  import { ReactNode } from 'react';
2
- import { BaseChartProps, ChartConfig } from '../types/chart.types';
3
- /**
4
- * Semantic color options for the heatmap
5
- */
6
- export type SemanticColor = 'primary' | 'success' | 'warning' | 'danger';
2
+ import { BaseChartProps, ChartConfig, ChartLegendPosition, StandardChartDisplayProps } from '../types/chart.types';
3
+ import type { SemanticColor } from '../../../utils/colorUtils';
4
+ /** Heatmap has no gradient fill, so it narrows the family's ChartVariant. */
5
+ export type HeatmapVariant = 'default' | 'minimal';
7
6
  /**
8
7
  * Heatmap data point structure
9
8
  * @property {string | number} x - X-axis category (e.g., day, month, hour)
@@ -25,6 +24,8 @@ export interface HeatmapCellProps {
25
24
  intensity: number;
26
25
  minOpacity?: number;
27
26
  color?: string;
27
+ /** Entrance delay in seconds, computed by the parent from the cell's grid position */
28
+ delay?: number;
28
29
  className?: string;
29
30
  onClick?: (data: HeatmapDataPoint) => void;
30
31
  onHover?: (data: HeatmapDataPoint, event: React.MouseEvent) => void;
@@ -33,93 +34,59 @@ export interface HeatmapCellProps {
33
34
  children?: ReactNode;
34
35
  }
35
36
  /**
36
- * Color scale configuration
37
- */
38
- export interface HeatmapColorScale {
39
- /** Custom color steps from light to dark */
40
- colors?: string[];
41
- /** Number of color steps (default: 10) */
42
- steps?: number;
43
- /** Minimum opacity for null/zero values */
44
- minOpacity?: number;
45
- }
46
- /**
47
- * Heatmap layout configuration
48
- */
49
- export interface HeatmapLayout {
50
- /** Gap between cells */
51
- gap?: number | string;
52
- }
53
- /**
54
- * Heatmap axis configuration
37
+ * 🔴 `Pick` of StandardChartDisplayProps, never `extends` — see the rule on
38
+ * StandardVisualProps in chart.types.ts. `showGrid`/`theme` are meaningless
39
+ * here and `variant` is narrowed below, so none of the three are picked.
40
+ *
41
+ * `enableKeyboardNavigation` is omitted from BaseChartProps: the grid has no
42
+ * arrow-key roving navigation, so advertising the prop would promise behaviour
43
+ * the component doesn't have — exactly the failure mode that rule describes.
44
+ * (Individual cells remain Enter/Space activatable via native `tabIndex`/
45
+ * `onKeyDown` when `onCellClick` is set — that part is unrelated to this prop,
46
+ * which is specifically about grid-level arrow-key navigation.)
55
47
  */
56
- export interface HeatmapAxisConfig {
57
- /** Show X-axis labels */
58
- showXAxis?: boolean;
59
- /** Show Y-axis labels */
60
- showYAxis?: boolean;
48
+ export interface HeatmapProps extends Omit<BaseChartProps, 'data' | 'config' | 'enableKeyboardNavigation'>, Pick<StandardChartDisplayProps, 'showXAxis' | 'showYAxis' | 'minValue' | 'maxValue'> {
49
+ /**
50
+ * Colour-ramp legend position. Same union as every other chart, but redeclared
51
+ * rather than picked so it carries Heatmap's own documentation: this legend is
52
+ * a continuous ramp (see HeatmapLegend), not the series swatches `config`
53
+ * drives elsewhere, and it defaults to `'bottom'` rather than resolving to
54
+ * `'none'` for a single-series config — the ramp IS a heatmap's value key.
55
+ * @default 'bottom'
56
+ */
57
+ legend?: ChartLegendPosition;
58
+ /** Heatmap data array — optional when using ChartContainer context */
59
+ data?: HeatmapDataPoint[];
60
+ /** Chart configuration — optional when using ChartContainer context */
61
+ config?: ChartConfig;
62
+ /** Semantic colour for heatmap cells @default 'primary' */
63
+ color?: SemanticColor;
64
+ /** Visual variant @default 'default' */
65
+ variant?: HeatmapVariant;
61
66
  /** X-axis label formatter */
62
67
  xAxisFormatter?: (value: string | number, index: number) => string;
63
68
  /** Y-axis label formatter */
64
69
  yAxisFormatter?: (value: string | number, index: number) => string;
65
- /** X-axis label rotation */
66
- xAxisRotation?: number;
67
- /** Y-axis label rotation */
68
- yAxisRotation?: number;
69
- }
70
- /**
71
- * Heatmap tooltip configuration
72
- */
73
- export interface HeatmapTooltipConfig {
74
- /** Show tooltip on hover */
75
- enabled?: boolean;
76
- /** Custom tooltip formatter */
77
- formatter?: (data: HeatmapDataPoint) => ReactNode;
78
- /** Tooltip delay in ms */
79
- delay?: number;
80
- }
81
- /**
82
- * Heatmap legend configuration
83
- */
84
- export interface HeatmapLegendConfig {
85
- /** Show legend */
86
- enabled?: boolean;
87
- /** Custom labels for min and max values */
88
- labels?: {
70
+ /**
71
+ * Captions at each end of the colour ramp.
72
+ * @default { min: 'Low activity', max: 'High activity' }
73
+ */
74
+ legendLabels?: {
89
75
  min?: string;
90
76
  max?: string;
91
77
  };
92
- }
93
- /**
94
- * Main Heatmap component props
95
- */
96
- export interface HeatmapProps extends Omit<BaseChartProps, 'data' | 'config' | 'variant' | 'theme'> {
97
- /** Heatmap data array - optional when using ChartContainer context */
98
- data?: HeatmapDataPoint[];
99
- /** Chart configuration - optional when using ChartContainer context */
100
- config?: ChartConfig;
101
- /** Semantic color for heatmap cells (primary, success, warning, danger) */
102
- color?: SemanticColor;
103
- /** Color scale configuration */
104
- colorScale?: HeatmapColorScale;
105
- /** Layout configuration */
106
- layout?: HeatmapLayout;
107
- /** Axis configuration */
108
- axis?: HeatmapAxisConfig;
109
- /** Tooltip configuration */
110
- tooltip?: HeatmapTooltipConfig;
111
- /** Legend configuration */
112
- legend?: HeatmapLegendConfig;
113
- /** Custom value range [min, max] - if not provided, will be calculated from data */
114
- valueRange?: [number, number];
115
- /** Cell click handler */
116
- onCellClick?: (data: HeatmapDataPoint) => void;
78
+ /** Gap between cells @default 6 */
79
+ cellGap?: number | string;
80
+ /** Opacity floor for zero/lowest-intensity cells @default 0.1 */
81
+ minOpacity?: number;
117
82
  /** Custom cell renderer */
118
83
  cellRenderer?: (props: HeatmapCellProps) => ReactNode;
119
- /** Additional CSS classes */
120
- className?: string;
121
- /** Chart variant */
122
- variant?: 'default' | 'minimal' | 'bordered';
84
+ /** Cell click handler */
85
+ onCellClick?: (data: HeatmapDataPoint) => void;
86
+ /** Show the hover tooltip @default true */
87
+ showTooltip?: boolean;
88
+ /** Custom tooltip content */
89
+ tooltipFormatter?: (data: HeatmapDataPoint) => ReactNode;
123
90
  }
124
91
  /**
125
92
  * Processed heatmap data with calculated values
@@ -1,95 +1,44 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import React__default, { useRef } from 'react';
4
- import { motion } from 'motion/react';
3
+ import React__default from 'react';
4
+ import { useReducedMotion, motion } from 'motion/react';
5
5
  import { cn } from '../../../utils/cn.js';
6
6
  import { heatmapTheme } from './Heatmap.theme.js';
7
+ import { HEATMAP_CELL_TAP_TRANSITION, HEATMAP_CELL_HOVER_TRANSITION, HEATMAP_CELL_FADE_DURATION } from '../utils/animation-utils.js';
7
8
 
8
9
  /**
9
- * Individual heatmap cell component with hover animations and color intensity
10
+ * Individual heatmap cell colour intensity plus a deterministic fade-in.
11
+ *
12
+ * The resting opacity is the animation target (not an inline style), so motion
13
+ * owns it end to end; `data-intensity-opacity` publishes the resolved value for
14
+ * consumers and tests.
10
15
  */
11
- const HeatmapCellInner = ({ data, intensity, minOpacity = 0.1, color = 'var(--color-primary)', // Default to primary color (correct CSS variable)
12
- className, onClick, onHover, onMouseMove, onLeave, children, }) => {
13
- // Calculate cell color and opacity based on intensity
14
- const getColorStyle = (intensity) => {
15
- // Only return empty object for null values (will use CSS class)
16
- if (data.value === null) {
17
- return {};
18
- }
19
- // Calculate base opacity from intensity
20
- let baseOpacity;
21
- // For 0 values, use minOpacity
22
- if (data.value === 0) {
23
- baseOpacity = minOpacity;
24
- }
25
- else {
26
- // Map intensity (0-1) to opacity levels (minOpacity-1.0) in 10% increments
27
- const opacityStep = Math.ceil(intensity * 10) / 10; // Round up to nearest 10%
28
- baseOpacity = Math.max(minOpacity, Math.min(1.0, opacityStep));
29
- }
30
- // Use the passed color prop with calculated opacity
31
- return {
32
- backgroundColor: color,
33
- opacity: baseOpacity
34
- };
35
- };
36
- const getColorClass = (intensity) => {
37
- // Only use gray colors for null values (missing data)
38
- if (data.value === null) {
39
- return 'bg-transparent border border-gray-200/80';
40
- }
41
- // For non-null values, we'll use inline styles
42
- return '';
43
- };
44
- const handleClick = () => {
45
- if (onClick) {
46
- onClick(data);
47
- }
48
- };
49
- const handleMouseEnter = (event) => {
50
- if (onHover) {
51
- onHover(data, event);
52
- }
53
- };
54
- const handleMouseMove = (event) => {
55
- if (onMouseMove) {
56
- onMouseMove(data, event);
57
- }
58
- };
59
- const handleMouseLeave = () => {
60
- if (onLeave) {
61
- onLeave();
62
- }
63
- };
64
- const handleAnimationEnd = () => {
65
- // Remove animation class after flicker completes to prevent interference with opacity
66
- if (containerRef.current) {
67
- containerRef.current.classList.remove('animate-[flicker_0.6s_ease-out_forwards]');
68
- }
69
- };
70
- const containerRef = useRef(null);
71
- const flickerDelayRef = useRef(`${Math.random() * 0.3}s`);
72
- return (jsx(motion.div, { ref: containerRef, className: cn(heatmapTheme.cellBaseStyle, getColorClass(), onClick && 'cursor-pointer', className), style: {
73
- ...getColorStyle(intensity),
74
- // CSS custom properties for the animation
75
- '--flicker-delay': flickerDelayRef.current,
76
- animationDelay: `var(--flicker-delay)`,
77
- }, onAnimationEnd: handleAnimationEnd, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave,
78
- // Framer Motion animations (just for hover/tap, not initial load)
79
- whileHover: {
80
- scale: 1.025,
81
- transition: { duration: 0.15, ease: 'easeOut' }
82
- }, whileTap: {
83
- scale: 0.95,
84
- transition: { duration: 0.1, ease: 'easeOut' }
85
- },
86
- // Accessibility
87
- role: "gridcell", tabIndex: onClick ? 0 : -1, "aria-label": `Value: ${data.value}, X: ${data.x}, Y: ${data.y}`, onKeyDown: (e) => {
16
+ const HeatmapCellInner = ({ data, intensity, minOpacity = 0.1, color = 'var(--color-primary)', delay = 0, className, onClick, onHover, onMouseMove, onLeave, children, }) => {
17
+ const shouldReduceMotion = useReducedMotion();
18
+ const isNull = data.value === null;
19
+ // Map intensity (0-1) onto [minOpacity, 1] in 10% steps; a 0 value pins to
20
+ // minOpacity so an empty cell still reads as "measured, but nothing here".
21
+ const resolvedOpacity = isNull
22
+ ? 0
23
+ : data.value === 0
24
+ ? minOpacity
25
+ : Math.max(minOpacity, Math.min(1, Math.ceil(intensity * 10) / 10));
26
+ const handleClick = () => onClick === null || onClick === void 0 ? void 0 : onClick(data);
27
+ const handleMouseEnter = (event) => onHover === null || onHover === void 0 ? void 0 : onHover(data, event);
28
+ const handleMouseMove = (event) => onMouseMove === null || onMouseMove === void 0 ? void 0 : onMouseMove(data, event);
29
+ const handleMouseLeave = () => onLeave === null || onLeave === void 0 ? void 0 : onLeave();
30
+ return (jsx(motion.div, { "data-heatmap-cell": "", "data-intensity-opacity": resolvedOpacity, className: cn(heatmapTheme.cellBaseStyle, isNull && heatmapTheme.cellNullStyle, onClick && 'cursor-pointer', className), style: isNull ? undefined : { backgroundColor: color }, initial: shouldReduceMotion ? false : { opacity: 0 }, animate: { opacity: resolvedOpacity }, transition: shouldReduceMotion
31
+ ? { duration: 0 }
32
+ : { duration: HEATMAP_CELL_FADE_DURATION, delay, ease: 'easeOut' }, onClick: handleClick, onMouseEnter: handleMouseEnter, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, whileHover: shouldReduceMotion
33
+ ? undefined
34
+ : { scale: 1.025, transition: HEATMAP_CELL_HOVER_TRANSITION }, whileTap: shouldReduceMotion
35
+ ? undefined
36
+ : { scale: 0.95, transition: HEATMAP_CELL_TAP_TRANSITION }, role: "gridcell", tabIndex: onClick ? 0 : -1, "aria-label": `Value: ${data.value}, X: ${data.x}, Y: ${data.y}`, onKeyDown: (e) => {
88
37
  if ((e.key === 'Enter' || e.key === ' ') && onClick) {
89
38
  e.preventDefault();
90
39
  onClick(data);
91
40
  }
92
- }, children: children && (jsx("div", { className: "absolute inset-0 flex items-center justify-center text-sm font-medium text-gray-700 dark:text-gray-300", children: children })) }));
41
+ }, children: children && (jsx("div", { className: heatmapTheme.cellOverlayStyle, children: children })) }));
93
42
  };
94
43
  const HeatmapCell = React__default.memo(HeatmapCellInner);
95
44
 
@@ -1,13 +1,14 @@
1
1
  import React from 'react';
2
+ /**
3
+ * The ramp is a purely visual scale: it renders the two end captions, never the
4
+ * numeric bounds. `minValue`/`maxValue` used to sit here and were never read —
5
+ * the same advertise-a-prop-you-ignore trap the flat-API refactor removed from
6
+ * `HeatmapProps`. If the numbers are ever wanted beside the ramp, that is a
7
+ * deliberate feature with its own rendering, not two dormant props.
8
+ */
2
9
  export interface HeatmapLegendProps {
3
- /** Base color key from chart config (e.g., 'value', 'activity') */
4
- colorKey?: string;
5
10
  /** Color to use for the gradient */
6
11
  color?: string;
7
- /** Minimum value for the legend */
8
- minValue?: number;
9
- /** Maximum value for the legend */
10
- maxValue?: number;
11
12
  /** Custom labels for min and max */
12
13
  labels?: {
13
14
  min?: string;
@@ -2,16 +2,16 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { cn } from '../../../utils/cn.js';
3
3
  import { heatmapTheme } from './Heatmap.theme.js';
4
4
 
5
- const HeatmapLegend = ({ colorKey = 'value', color = 'var(--color-primary)', // Correct CSS variable
6
- minValue = 0, maxValue = 100, labels = {
7
- min: 'Low activity',
8
- max: 'High activity'
9
- }, className }) => {
5
+ const HeatmapLegend = ({ color = 'var(--color-primary)', // Correct CSS variable
6
+ labels, className }) => {
7
+ var _a, _b;
8
+ const min = (_a = labels === null || labels === void 0 ? void 0 : labels.min) !== null && _a !== void 0 ? _a : 'Low activity';
9
+ const max = (_b = labels === null || labels === void 0 ? void 0 : labels.max) !== null && _b !== void 0 ? _b : 'High activity';
10
10
  // Create gradient using passed color (supports CSS variables and hex)
11
11
  const gradientStyle = {
12
12
  background: `linear-gradient(to right, color-mix(in srgb, ${color} 20%, transparent), ${color})`
13
13
  };
14
- return (jsxs("div", { className: cn(heatmapTheme.legendStyle, className), children: [jsx("div", { className: "w-full h-1.5 rounded-full", style: gradientStyle }), jsxs("div", { className: "flex items-center justify-between text-sm font-medium text-[var(--color-text-secondary)]", children: [jsx("div", { children: labels.min }), jsx("div", { children: labels.max })] })] }));
14
+ return (jsxs("div", { className: cn(heatmapTheme.legendStyle, className), children: [jsx("div", { className: "w-full h-1.5 rounded-full", style: gradientStyle }), jsxs("div", { className: "flex items-center justify-between text-xs font-medium text-[var(--color-text-secondary)]", children: [jsx("div", { children: min }), jsx("div", { children: max })] })] }));
15
15
  };
16
16
 
17
17
  export { HeatmapLegend };
@@ -2,6 +2,6 @@ export { Heatmap } from './Heatmap';
2
2
  export { HeatmapCell } from './HeatmapCell';
3
3
  export { HeatmapLegend } from './HeatmapLegend';
4
4
  export { heatmapTheme } from './Heatmap.theme';
5
- export type { HeatmapProps, HeatmapDataPoint, HeatmapCellProps, SemanticColor } from './Heatmap.types';
5
+ export type { HeatmapProps, HeatmapDataPoint, HeatmapCellProps, HeatmapVariant } from './Heatmap.types';
6
6
  export * from './Heatmap.types';
7
7
  export * from './utils/heatmapUtils';
@@ -1,8 +1,10 @@
1
1
  import type { HeatmapDataPoint, ProcessedHeatmapData } from '../Heatmap.types';
2
2
  /**
3
- * Process raw heatmap data and calculate necessary values
3
+ * Process raw heatmap data and calculate necessary values.
4
+ * `minValue`/`maxValue` are the flat family-standard bounds; either may be
5
+ * omitted, in which case it is derived from the data.
4
6
  */
5
- export declare function processHeatmapData(data: HeatmapDataPoint[], valueRange?: [number, number]): ProcessedHeatmapData;
7
+ export declare function processHeatmapData(data: HeatmapDataPoint[], minValue?: number, maxValue?: number): ProcessedHeatmapData;
6
8
  /**
7
9
  * Calculate intensity (0-1) for a given value within the range
8
10
  */
@@ -13,18 +15,11 @@ export declare function calculateIntensity(value: number | null, minValue: numbe
13
15
  */
14
16
  export declare function createGridMatrix(data: HeatmapDataPoint[], xCategories: (string | number)[], yCategories: (string | number)[]): HeatmapDataPoint[][];
15
17
  /**
16
- * Generate default tooltip content for a data point
18
+ * Default tooltip content for a data point. `label` is the series label from
19
+ * `config[key].label` — the family contract every other chart already honours.
17
20
  */
18
- export declare function getDefaultTooltipContent(data: HeatmapDataPoint): string;
21
+ export declare function getDefaultTooltipContent(data: HeatmapDataPoint, label?: string): string;
19
22
  /**
20
23
  * Format axis labels with common patterns
21
24
  */
22
25
  export declare function formatAxisLabel(value: string | number, type?: 'day' | 'month' | 'hour' | 'date' | 'number' | 'default'): string;
23
- /**
24
- * Calculate responsive cell size based on container dimensions
25
- */
26
- export declare function calculateCellSize(containerWidth: number, containerHeight: number, xCount: number, yCount: number, gap?: number, minSize?: number, maxSize?: number): number;
27
- /**
28
- * Generate sample heatmap data for testing/examples
29
- */
30
- export declare function generateSampleData(type?: 'weekly' | 'monthly' | 'hourly'): HeatmapDataPoint[];
@@ -1,11 +1,12 @@
1
1
  /**
2
- * Process raw heatmap data and calculate necessary values
2
+ * Process raw heatmap data and calculate necessary values.
3
+ * `minValue`/`maxValue` are the flat family-standard bounds; either may be
4
+ * omitted, in which case it is derived from the data.
3
5
  */
4
- function processHeatmapData(data, valueRange) {
6
+ function processHeatmapData(data, minValue, maxValue) {
5
7
  // Extract unique categories preserving the order they appear in the data
6
8
  const xCategories = [];
7
9
  const yCategories = [];
8
- // Preserve order by iterating through data and collecting unique values
9
10
  data.forEach(point => {
10
11
  if (!xCategories.includes(point.x)) {
11
12
  xCategories.push(point.x);
@@ -14,18 +15,18 @@ function processHeatmapData(data, valueRange) {
14
15
  yCategories.push(point.y);
15
16
  }
16
17
  });
17
- // Calculate value range if not provided
18
18
  const values = data.map(d => d.value).filter(v => v !== null);
19
19
  const calculatedMin = Math.min(...values);
20
20
  const calculatedMax = Math.max(...values);
21
- const finalValueRange = valueRange || [calculatedMin, calculatedMax];
21
+ const resolvedMin = minValue !== null && minValue !== void 0 ? minValue : calculatedMin;
22
+ const resolvedMax = maxValue !== null && maxValue !== void 0 ? maxValue : calculatedMax;
22
23
  return {
23
24
  data,
24
25
  xCategories,
25
26
  yCategories,
26
- valueRange: finalValueRange,
27
- minValue: finalValueRange[0],
28
- maxValue: finalValueRange[1],
27
+ valueRange: [resolvedMin, resolvedMax],
28
+ minValue: resolvedMin,
29
+ maxValue: resolvedMax,
29
30
  };
30
31
  }
31
32
  /**
@@ -56,11 +57,14 @@ function createGridMatrix(data, xCategories, yCategories) {
56
57
  }));
57
58
  }
58
59
  /**
59
- * Generate default tooltip content for a data point
60
+ * Default tooltip content for a data point. `label` is the series label from
61
+ * `config[key].label` — the family contract every other chart already honours.
60
62
  */
61
- function getDefaultTooltipContent(data) {
63
+ function getDefaultTooltipContent(data, label) {
62
64
  const value = data.value !== null ? data.value.toString() : 'No data';
63
- return `${data.x}, ${data.y}: ${value}`;
65
+ return label
66
+ ? `${data.x} · ${data.y} — ${label}: ${value}`
67
+ : `${data.x}, ${data.y}: ${value}`;
64
68
  }
65
69
  /**
66
70
  * Format axis labels with common patterns
@@ -117,54 +121,5 @@ function formatAxisLabel(value, type = 'default') {
117
121
  }
118
122
  return String(value);
119
123
  }
120
- /**
121
- * Generate sample heatmap data for testing/examples
122
- */
123
- function generateSampleData(type = 'weekly') {
124
- const data = [];
125
- switch (type) {
126
- case 'weekly':
127
- const days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
128
- const weeks = Array.from({ length: 12 }, (_, i) => `Week ${i + 1}`);
129
- weeks.forEach(week => {
130
- days.forEach(day => {
131
- data.push({
132
- x: day,
133
- y: week,
134
- value: Math.floor(Math.random() * 20),
135
- });
136
- });
137
- });
138
- break;
139
- case 'monthly':
140
- const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
141
- 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
142
- const years = ['2022', '2023', '2024'];
143
- years.forEach(year => {
144
- months.forEach(month => {
145
- data.push({
146
- x: month,
147
- y: year,
148
- value: Math.floor(Math.random() * 100),
149
- });
150
- });
151
- });
152
- break;
153
- case 'hourly':
154
- const hours = Array.from({ length: 24 }, (_, i) => i);
155
- const daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
156
- daysOfWeek.forEach(day => {
157
- hours.forEach(hour => {
158
- data.push({
159
- x: hour,
160
- y: day,
161
- value: Math.floor(Math.random() * 50),
162
- });
163
- });
164
- });
165
- break;
166
- }
167
- return data;
168
- }
169
124
 
170
- export { calculateIntensity, createGridMatrix, formatAxisLabel, generateSampleData, getDefaultTooltipContent, processHeatmapData };
125
+ export { calculateIntensity, createGridMatrix, formatAxisLabel, getDefaultTooltipContent, processHeatmapData };
@@ -11,7 +11,7 @@ import { ChartErrorBoundary } from '../shared/ChartErrorBoundary/ChartErrorBound
11
11
  import { CategoryYAxis } from '../shared/ChartAxis/CategoryYAxis.js';
12
12
  import { ValueXAxis } from '../shared/ChartAxis/ValueXAxis.js';
13
13
  import { VerticalGrid } from '../shared/ChartGrid/VerticalGrid.js';
14
- import { ChartTooltip } from '../shared/ChartTooltip/ChartTooltip.js';
14
+ import { ChartTooltip } from '../../core/shared/ChartTooltip/ChartTooltip.js';
15
15
  import { resolveLegendPosition, ChartLegend } from '../shared/ChartLegend/ChartLegend.js';
16
16
  import { HORIZONTAL_BAR_CHART_DEFAULTS } from './HorizontalBarChart.types.js';
17
17
  import { X_AXIS_MARGIN } from '../types/chart.types.js';
@@ -9,7 +9,7 @@ import { useChartDimensions } from '../hooks/useChartDimensions.js';
9
9
  import { XAxis } from '../shared/ChartAxis/XAxis.js';
10
10
  import { YAxis } from '../shared/ChartAxis/YAxis.js';
11
11
  import { HorizontalGrid } from '../shared/ChartGrid/HorizontalGrid.js';
12
- import { ChartTooltip } from '../shared/ChartTooltip/ChartTooltip.js';
12
+ import { ChartTooltip } from '../../core/shared/ChartTooltip/ChartTooltip.js';
13
13
  import { resolveLegendPosition, ChartLegend } from '../shared/ChartLegend/ChartLegend.js';
14
14
  import { ChartMarker } from '../shared/ChartMarker/ChartMarker.js';
15
15
  import { ChartCrosshair } from '../shared/ChartCrosshair/ChartCrosshair.js';
@@ -285,7 +285,7 @@ className, title, description, enableKeyboardNavigation = LINE_CHART_DEFAULTS.en
285
285
  // lowest point), so the line grows UP from the x-axis.
286
286
  style: RISE_FROM_BASELINE, children: [jsx("rect", { x: margin.left, y: margin.top, width: innerWidth, height: innerHeight, fill: "none", stroke: "none", style: { pointerEvents: "none" } }), jsx("path", { d: targetPath, fill: "none", strokeWidth: strokeWidth, strokeLinecap: "round",
287
287
  // Constant stroke width through the scaleY rise (no squash).
288
- vectorEffect: "non-scaling-stroke", className: cn("transition-all duration-200", colorClass), style: { stroke: (_a = config[key]) === null || _a === void 0 ? void 0 : _a.color },
288
+ vectorEffect: "non-scaling-stroke", className: cn("transition-all duration-[var(--motion-duration-base)]", colorClass), style: { stroke: (_a = config[key]) === null || _a === void 0 ? void 0 : _a.color },
289
289
  // Soft series-colored glow instead of a hard black drop shadow.
290
290
  filter: `url(#${getSeriesGlowId(keyIndex)})` })] }, shouldReduceMotion ? "line-static" : dataSignature), showDots &&
291
291
  data.map((item, dataIndex) => {
@@ -9,7 +9,7 @@ import { useChartValidation } from '../hooks/useChartValidation.js';
9
9
  import { useChartAccessibility } from '../hooks/useChartAccessibility.js';
10
10
  import { useTooltipPosition } from '../hooks/useTooltipPosition.js';
11
11
  import { ChartErrorBoundary } from '../shared/ChartErrorBoundary/ChartErrorBoundary.js';
12
- import { ChartTooltip } from '../shared/ChartTooltip/ChartTooltip.js';
12
+ import { ChartTooltip } from '../../core/shared/ChartTooltip/ChartTooltip.js';
13
13
  import { HorizontalGrid } from '../shared/ChartGrid/HorizontalGrid.js';
14
14
  import { YAxis } from '../shared/ChartAxis/YAxis.js';
15
15
  import { XAxis } from '../shared/ChartAxis/XAxis.js';
@@ -6,7 +6,7 @@ import { cn } from '../../../utils/cn.js';
6
6
  import { radarChartTheme } from './RadarChart.theme.js';
7
7
  import { RADAR_CHART_ANIMATIONS } from './RadarChart.animations.js';
8
8
  import { getSpringAnimation, getStaggerDelay } from '../utils/animation-utils.js';
9
- import { ChartTooltip } from '../shared/ChartTooltip/ChartTooltip.js';
9
+ import { ChartTooltip } from '../../core/shared/ChartTooltip/ChartTooltip.js';
10
10
  import { ChartLegend } from '../shared/ChartLegend/ChartLegend.js';
11
11
  import { useTooltipPosition } from '../hooks/useTooltipPosition.js';
12
12
 
@@ -11,7 +11,7 @@ import { ChartErrorBoundary } from '../shared/ChartErrorBoundary/ChartErrorBound
11
11
  import { XAxis } from '../shared/ChartAxis/XAxis.js';
12
12
  import { YAxis } from '../shared/ChartAxis/YAxis.js';
13
13
  import { HorizontalGrid } from '../shared/ChartGrid/HorizontalGrid.js';
14
- import { ChartTooltip } from '../shared/ChartTooltip/ChartTooltip.js';
14
+ import { ChartTooltip } from '../../core/shared/ChartTooltip/ChartTooltip.js';
15
15
  import { resolveLegendPosition, ChartLegend } from '../shared/ChartLegend/ChartLegend.js';
16
16
  import { STACKED_BAR_CHART_DEFAULTS } from './StackedBarChart.types.js';
17
17
  import { X_AXIS_MARGIN } from '../types/chart.types.js';
@@ -245,8 +245,8 @@ className, title, description, enableKeyboardNavigation = STACKED_BAR_CHART_DEFA
245
245
  // plain style values at mount and ignores re-render changes.
246
246
  opacity: shouldReduceOpacity ? (isGradientVariant ? 0.42 : 0.9) : 1,
247
247
  }, transition: stackedSegmentTransition(delay, hasAnimated), className: cn(isGradientVariant
248
- ? "transition-all duration-300 ease-out cursor-pointer"
249
- : "transition-colors duration-200 cursor-pointer", isFocused && "stroke-2"), style: {
248
+ ? "transition-all duration-[var(--motion-duration-slow)] ease-out cursor-pointer"
249
+ : "transition-colors duration-[var(--motion-duration-base)] cursor-pointer", isFocused && "stroke-2"), style: {
250
250
  ...RISE_FROM_BASELINE,
251
251
  fill: isGradientVariant
252
252
  ? `url(#${stackGradientId(keyIndex)})`