@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
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Compose a component's own event handler with the consumer's.
3
+ *
4
+ * 🔴 §9: a prop the component also sets is MERGED, never clobbered. Spreading
5
+ * `{...rest}` before the element's own `onKeyUp` drops the consumer's handler
6
+ * silently; spreading it after lets the consumer silently replace load-bearing
7
+ * internal machinery. Composition is the only option that serves both.
8
+ *
9
+ * **Ours runs first**, so consumer code observes settled internal state.
10
+ *
11
+ * 🔴 **Both handlers ALWAYS run.** A `preventDefault()` in either does NOT skip
12
+ * the other — a consumer that cares reads `event.defaultPrevented`. Dropping the
13
+ * second handler conditionally would reintroduce the invisible-drop bug this
14
+ * helper exists to remove.
15
+ *
16
+ * @example
17
+ * <div onKeyUp={composeEventHandlers(syncFormatting, onKeyUpProp)} />
18
+ */
19
+ export declare function composeEventHandlers<E>(ours: ((event: E) => void) | undefined, theirs: ((event: E) => void) | undefined): (event: E) => void;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Compose a component's own event handler with the consumer's.
3
+ *
4
+ * 🔴 §9: a prop the component also sets is MERGED, never clobbered. Spreading
5
+ * `{...rest}` before the element's own `onKeyUp` drops the consumer's handler
6
+ * silently; spreading it after lets the consumer silently replace load-bearing
7
+ * internal machinery. Composition is the only option that serves both.
8
+ *
9
+ * **Ours runs first**, so consumer code observes settled internal state.
10
+ *
11
+ * 🔴 **Both handlers ALWAYS run.** A `preventDefault()` in either does NOT skip
12
+ * the other — a consumer that cares reads `event.defaultPrevented`. Dropping the
13
+ * second handler conditionally would reintroduce the invisible-drop bug this
14
+ * helper exists to remove.
15
+ *
16
+ * @example
17
+ * <div onKeyUp={composeEventHandlers(syncFormatting, onKeyUpProp)} />
18
+ */
19
+ function composeEventHandlers(ours, theirs) {
20
+ return (event) => {
21
+ ours === null || ours === void 0 ? void 0 : ours(event);
22
+ theirs === null || theirs === void 0 ? void 0 : theirs(event);
23
+ };
24
+ }
25
+
26
+ export { composeEventHandlers };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,8 +1,8 @@
1
1
  export { cn } from "./cn";
2
2
  export { debounce } from "./debounce";
3
+ export { composeEventHandlers } from "./composeEventHandlers";
3
4
  export { formatTimestamp, formatDate, formatTime, formatDateCustom, formatRelativeTime, isToday, isYesterday, isThisWeek, getLastNDays, getThisWeek, getLastWeek, getThisMonth, getLastMonth, getThisYear, getLastYear, toDate, addDays, isSameDay, isWeekend, getDaysBetween, getWeekNumber, type DateInput, type TimestampOptions, type DateRange, } from "./dateUtils";
4
5
  export { findNextMatchingOption, isValidTypeaheadChar, TYPEAHEAD_TIMEOUT_MS, type TypeaheadOption, type FindNextMatchingOptionParams, } from "./typeaheadUtils";
5
- export { timeToMinutes, minutesToTime, getEventDuration, getTotalTimeSlots, getTimeSlotIndex, getTimeSlotForIndex, calculateEventPosition, calculateEventHeight, eventsOverlap, findOverlappingEvents, groupOverlappingEvents, resolveOverlappingEvents, generateTimeGrid, filterEventsByDate, sortEventsByStartTime, separateAllDayEvents, isValidTimeFormat, isValidDateFormat, validateEvent, DEFAULT_GRID_CONFIGS, type CalendarEvent, type GridConfig, type EventPosition, type EventLayout, type TimeSlot, } from "./calendarUtils";
6
6
  export { parseOpenAI, parseAnthropic, parseGemini, parseSSELine, SSE_PARSERS, type SSEFormat, type SSEParser, } from "./sseFormatParsers";
7
7
  export { StreamingNetworkError, StreamingTimeoutError, StreamingParseError, StreamingAbortError, StreamingServerError, normalizeError, type StreamingError, } from "./streamingErrors";
8
8
  export { calculateRetryDelay, shouldRetry, type RetryConfig, } from "./retryUtils";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flikk/ui",
3
- "version": "1.0.0-beta.31",
3
+ "version": "1.0.0-beta.33",
4
4
  "description": "A modern React component library built with TypeScript, Tailwind CSS v4, and Framer Motion. Follows the shadcn philosophy with complete className override support.",
5
5
  "type": "module",
6
6
  "packageManager": "yarn@1.22.22",
@@ -58,6 +58,10 @@
58
58
  "types": "./dist/components/generative/index.d.ts",
59
59
  "import": "./dist/components/generative/index.js"
60
60
  },
61
+ "./generative/ai-sdk": {
62
+ "types": "./dist/components/generative/ai-sdk/index.d.ts",
63
+ "import": "./dist/components/generative/ai-sdk/index.js"
64
+ },
61
65
  "./components/*": {
62
66
  "import": "./dist/components/*.js",
63
67
  "types": "./dist/components/*.d.ts"
@@ -99,6 +103,19 @@
99
103
  "watch": "rollup -c -w",
100
104
  "typecheck": "tsc --noEmit",
101
105
  "lint": "eslint src",
106
+ "verify": "node scripts/verify.mjs",
107
+ "verify:fast": "node scripts/verify.mjs --fast",
108
+ "verify:full": "node scripts/verify.mjs --full",
109
+ "verify:pack": "node scripts/smoke-package.mjs",
110
+ "test:stories": "node scripts/test-stories.mjs",
111
+ "test-storybook": "test-storybook",
112
+ "verify:drift": "yarn build:generative && yarn build:inventory && git diff --exit-code src/components/generative/schema.generated.ts && git diff --exit-code CLAUDE.md",
113
+ "prepare": "git config core.hooksPath .githooks || true",
114
+ "chromatic": "chromatic --build-script-name build-storybook --only-changed",
115
+ "changeset": "changeset",
116
+ "release:status": "changeset status --verbose",
117
+ "release:version": "changeset version && node scripts/normalize-changelog.mjs && yarn build:inventory",
118
+ "release:publish": "changeset publish",
102
119
  "clean": "rimraf dist",
103
120
  "prepublishOnly": "npm run clean && npm run test && npm run build",
104
121
  "dev": "concurrently \"npm run watch:css:dev\" \"storybook dev -p 6006\" \"npm --prefix apps/docs run dev\"",
@@ -131,9 +148,11 @@
131
148
  "npm": ">=10.0.0"
132
149
  },
133
150
  "peerDependencies": {
151
+ "@ai-sdk/react": ">=4.0.0",
134
152
  "@phosphor-icons/react": ">=2.1.0",
135
153
  "@react-three/drei": ">=10.0.0",
136
154
  "@react-three/fiber": ">=9.0.0",
155
+ "ai": ">=7.0.0",
137
156
  "motion": ">=12.0.0",
138
157
  "react": ">=18.0.0",
139
158
  "react-dom": ">=18.0.0",
@@ -144,6 +163,12 @@
144
163
  "three": ">=0.170.0"
145
164
  },
146
165
  "peerDependenciesMeta": {
166
+ "ai": {
167
+ "optional": true
168
+ },
169
+ "@ai-sdk/react": {
170
+ "optional": true
171
+ },
147
172
  "react-markdown": {
148
173
  "optional": true
149
174
  },
@@ -167,6 +192,8 @@
167
192
  }
168
193
  },
169
194
  "devDependencies": {
195
+ "@ai-sdk/react": "^4.0.50",
196
+ "@changesets/cli": "^2.31.1",
170
197
  "@chromatic-com/storybook": "^5.0.0",
171
198
  "@emotion/is-prop-valid": "^1.4.0",
172
199
  "@eslint/js": "^9",
@@ -184,6 +211,7 @@
184
211
  "@storybook/addon-themes": "^10.2.3",
185
212
  "@storybook/addon-webpack5-compiler-swc": "^4.0.2",
186
213
  "@storybook/react-webpack5": "^10.2.3",
214
+ "@storybook/test-runner": "^0.24.4",
187
215
  "@tailwindcss/cli": "^4.1.18",
188
216
  "@testing-library/dom": "^10.4.1",
189
217
  "@testing-library/jest-dom": "^6.9.1",
@@ -195,7 +223,9 @@
195
223
  "@types/react-syntax-highlighter": "^15.5.11",
196
224
  "@types/three": "^0.182.0",
197
225
  "@vitejs/plugin-react": "^5.2.0",
226
+ "ai": "^7.0.47",
198
227
  "autoprefixer": "^10.4.24",
228
+ "chromatic": "^18.1.0",
199
229
  "concurrently": "^9.2.1",
200
230
  "eslint": "^9",
201
231
  "eslint-plugin-react-hooks": "^5.2.0",
package/src/global.scss CHANGED
@@ -822,6 +822,12 @@ body {
822
822
  -moz-osx-font-smoothing: grayscale;
823
823
  }
824
824
 
825
+ @layer base {
826
+ h1, h2, h3, h4, h5, h6 {
827
+ font-family: var(--font-heading);
828
+ }
829
+ }
830
+
825
831
  /* Auto-fill input styling resets - fixes border-radius issues with auto-populated inputs */
826
832
  @layer base {
827
833
  /* Webkit browsers (Chrome, Safari, Edge) */
@@ -896,34 +902,6 @@ body {
896
902
  }
897
903
  }
898
904
 
899
- /* Heatmap flicker animation */
900
- @keyframes flicker {
901
- 0% {
902
- opacity: 0;
903
- transform: scale(1.05);
904
- }
905
- 20% {
906
- opacity: 0.3;
907
- transform: scale(1.02);
908
- }
909
- 40% {
910
- opacity: 0.1;
911
- transform: scale(1.03);
912
- }
913
- 60% {
914
- opacity: 0.7;
915
- transform: scale(1.01);
916
- }
917
- 80% {
918
- opacity: 0.4;
919
- transform: scale(1.02);
920
- }
921
- 100% {
922
- transform: scale(1);
923
- /* No opacity at 100% - let inline styles control final opacity */
924
- }
925
- }
926
-
927
905
  /* Loader shimmer animation for indeterminate linear progress */
928
906
  @keyframes shimmer {
929
907
  0% {
@@ -1023,3 +1001,18 @@ body {
1023
1001
  width: 33%;
1024
1002
  }
1025
1003
  }
1004
+
1005
+ /*
1006
+ * Segmented Progress indeterminate animation. Each cell runs the same pulse
1007
+ * with a staggered animation-delay, which reads as a lit band travelling along
1008
+ * the row — the discrete equivalent of the sweep above.
1009
+ */
1010
+ @keyframes progress-segment-chase {
1011
+ 0%,
1012
+ 100% {
1013
+ opacity: 0.15;
1014
+ }
1015
+ 50% {
1016
+ opacity: 1;
1017
+ }
1018
+ }
@@ -21,26 +21,6 @@
21
21
  the live --color-primary, so a raw override (even white) self-corrects. */
22
22
  --color-primary-contrast: oklch(from var(--color-primary) clamp(0, (0.85 - l) * 1000, 1) 0 0);
23
23
 
24
- /* DEPRECATED: the `secondary` semantic color was removed (it overlapped
25
- `neutral` and was ambiguous — see CLAUDE.md §8). These vars are now aliased
26
- to the neutral scale so any stray/consumer CSS still resolves. Remove next
27
- major. Original Tailwind-gray ramp kept for reference:
28
- 50 oklch(0.984 0.003 247.858) … 600 oklch(0.446 0.043 257.281) … 950 oklch(0.129 0.042 264.695). */
29
- --color-secondary-50: var(--color-mono-50);
30
- --color-secondary-100: var(--color-mono-100);
31
- --color-secondary-200: var(--color-mono-200);
32
- --color-secondary-300: var(--color-mono-300);
33
- --color-secondary-400: var(--color-mono-400);
34
- --color-secondary-500: var(--color-mono-500);
35
- --color-secondary-600: var(--color-mono-600);
36
- --color-secondary-700: var(--color-mono-700);
37
- --color-secondary-800: var(--color-mono-800);
38
- --color-secondary-900: var(--color-mono-900);
39
- --color-secondary-950: var(--color-mono-950);
40
-
41
- --color-secondary: var(--color-secondary-600);
42
- --color-secondary-contrast: oklch(from var(--color-secondary) clamp(0, (0.85 - l) * 1000, 1) 0 0);
43
-
44
24
  /* Danger/Error color palette - full 50-950 range */
45
25
  --color-danger-50: oklch(0.971 0.013 17.38);
46
26
  --color-danger-100: oklch(0.936 0.032 17.717);
@@ -168,13 +148,6 @@
168
148
  --color-chart-5-contrast: oklch(from var(--color-chart-5) clamp(0, (0.85 - l) * 1000, 1) 0 0);
169
149
  --color-background: var(--surface-1);
170
150
  /* near-white page canvas (rung 1) — white cards lift via the shadow ring */
171
- /* DEPRECATED (remove next major): alias of --color-surface. Use the surface ladder. */
172
- --color-background-secondary: var(--color-surface);
173
- /* DEPRECATED (remove next major): recessed/subtle fills. Migrate per-usage to --color-surface-sunken
174
- (dark values below are inverted vs. a correct sunken token, so no blind alias). */
175
- --color-background-tertiary: oklch(90% 0.002 247.839);
176
- --color-background-quaternary: oklch(85% 0.002 247.839);
177
- --color-background-quinary: oklch(80% 0.002 247.839);
178
151
  --color-background-disabled: var(--color-mono-100);
179
152
 
180
153
  --color-mono-50: oklch(98.5% 0 0);
@@ -199,6 +172,10 @@
199
172
 
200
173
  /* Font family variables */
201
174
  --font-family-base: var(--font-sans);
175
+ /* Heading font — defaults to the body font so the default render is
176
+ unchanged; themes override it independently (e.g. display face for
177
+ headings, workhorse for body). */
178
+ --font-heading: var(--font-family-base);
202
179
 
203
180
  /* ============================================
204
181
  TYPE SCALE — one --font-scale knob (like --radius-base).
@@ -261,12 +238,33 @@
261
238
  font-size, and a bare var() value resolves to the COLOR branch (silently
262
239
  dropping the font-size change, no error). The `length:` type hint forces
263
240
  the correct branch.
241
+
242
+ 🔴 Every size token below has a PAIRED --*-line-height token, consumed via
243
+ the `/[var(--…)]` modifier: `text-[length:var(--x-size)]/[var(--x-line-height)]`.
244
+ This is the same rule CONTROL TYPE SIZE states for --form-text-size-*, and it
245
+ is mandatory for the same reason. A named utility like `text-sm` compiles to
246
+ font-size AND Tailwind's paired --text-sm--line-height; an arbitrary
247
+ `text-[length:…]` carries font-size ONLY and silently falls back to
248
+ normal/1.5. These roles previously pinned the gap shut with hardcoded
249
+ literals (leading-[1.4], leading-6, leading-none), which meant a theme could
250
+ resize a title but never re-lead it — and a theme raising --card-title-size
251
+ got a title that stayed locked at line-height 1. Defaults below are the exact
252
+ values those literals resolved to, so this is a zero-visual-change addition.
264
253
  ============================================ */
265
254
  --card-title-size: var(--text-base);
266
255
  --modal-title-size: var(--text-base);
267
256
  --drawer-title-size: var(--text-base);
268
257
  --page-heading-title-size: var(--text-xl);
269
258
  --section-title-size: var(--text-base);
259
+ /* Unitless where the old literal was unitless (1.4/1.5 scale with the font),
260
+ and 1.5rem where it was leading-6 (a fixed 6 x --spacing step, which did
261
+ NOT scale with the title size) — preserving each role's existing behaviour
262
+ rather than silently converting one model into the other. */
263
+ --card-title-line-height: 1;
264
+ --modal-title-line-height: 1.5rem;
265
+ --drawer-title-line-height: 1.5rem;
266
+ --page-heading-title-line-height: 1.4;
267
+ --section-title-line-height: 1.5;
270
268
  /* AlertDialog has no title style of its own — it renders Modal.Title
271
269
  directly, so it already inherits --modal-title-size above. */
272
270
 
@@ -281,9 +279,18 @@
281
279
  --kpi-value-size-sm: var(--text-xl);
282
280
  --kpi-value-size-md: var(--text-2xl);
283
281
  --kpi-value-size-lg: var(--text-3xl);
282
+ /* Paired leading, per the rule above. Unitless so a themed value-size still
283
+ leads proportionally — these are big display numerals where a fixed rem
284
+ leading would clip descenders the moment a theme scaled the size up. */
285
+ --metric-value-line-height-sm: 1.4;
286
+ --metric-value-line-height-md: 1.2;
287
+ --metric-value-line-height-lg: 1.2;
288
+ --kpi-value-line-height-sm: 1.4;
289
+ --kpi-value-line-height-md: 1.333;
290
+ --kpi-value-line-height-lg: 1.2;
284
291
 
285
292
  /* Form element variables — fixed px so they don't scale with root font-size */
286
- --form-min-h-sm: 32px;
293
+ --form-min-h-sm: 28px;
287
294
  /* h-8 in Tailwind */
288
295
  --form-min-h-md: 36px;
289
296
  /* h-9 in Tailwind */
@@ -300,8 +307,9 @@
300
307
  --form-px-lg: 16px;
301
308
  /* px-4 in Tailwind */
302
309
 
303
- --form-py-sm: 8px;
304
- /* py-2 in Tailwind */
310
+ --form-py-sm: 6px;
311
+ /* 6px, not py-2's 8px: the sm rung is a 28px box around a 12px/16px line,
312
+ so 8px left a 12px content box for a 16px line. */
305
313
  --form-py-md: 10px;
306
314
  /* py-2.5 in Tailwind */
307
315
  --form-py-lg: 12px;
@@ -324,7 +332,7 @@
324
332
  Tailwind's arbitrary text-[…] syntax is ambiguous between colour and
325
333
  font-size and a bare var() resolves to the COLOUR branch, silently
326
334
  no-oping the size (see TYPE ROLE SYSTEM). */
327
- --form-text-size-sm: var(--text-sm);
335
+ --form-text-size-sm: var(--text-xs);
328
336
  --form-text-size-md: var(--text-sm);
329
337
  --form-text-size-lg: var(--text-base);
330
338
 
@@ -337,10 +345,30 @@
337
345
  that 20px→21px step. Values alias Tailwind's own pairing vars so the
338
346
  ramp stays byte-identical and --font-scale still flows through (the
339
347
  pairings are unitless ratios). */
340
- --form-line-height-sm: var(--text-sm--line-height);
348
+ --form-line-height-sm: var(--text-xs--line-height);
341
349
  --form-line-height-md: var(--text-sm--line-height);
342
350
  --form-line-height-lg: var(--text-base--line-height);
343
351
 
352
+ /* CONTROL ICON SIZE — the GLYPH inside a field (chevron, clock, search,
353
+ check), NOT any button square.
354
+
355
+ 🔴 Do not confuse with --button-icon-square-* , which is the icon-only
356
+ BUTTON's box (aliased to --form-min-h-*). This family is the drawn icon.
357
+
358
+ Icons were the one axis of a field's geometry that was NOT themeable: a
359
+ preset could retune height, padding, radius and type, and every decorator
360
+ stayed a hardcoded size-4/size-5. So a scaled-up theme got 16px chevrons
361
+ rattling around a 48px field. The ramp is deliberately gentler than the
362
+ type ramp (12/14/16 against 14/14/16) — an icon carries more optical mass
363
+ per px than a glyph of text, so matching type 1:1 reads heavy at sm.
364
+
365
+ Consumed as size-[var(--form-icon-size-…)] via formsBaseTheme.iconStyles.sizes.
366
+ Unlike --form-text-size-*, there is no line-height partner to pair — an
367
+ icon is a box, not a line of text. */
368
+ --form-icon-size-sm: 12px;
369
+ --form-icon-size-md: 14px;
370
+ --form-icon-size-lg: 16px;
371
+
344
372
  /* ============================================
345
373
  OTP SLOT SIZING
346
374
  OTP slots are SQUARE, so this is one size token per rung, not a height +
@@ -435,6 +463,17 @@
435
463
  /* Overlays (1.5x base = 18px, capped; tooltip stays 1x but is now ALSO
436
464
  capped — same 1x multiplier as before, just no longer unbounded) */
437
465
  --dropdown-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
466
+ /* The form listbox panel (Select/Combobox/InputTag/Mention) is the same kind of
467
+ anchored menu panel as the one above — Mention literally renders MenuItem rows
468
+ in it — so it ALIASES --dropdown-radius rather than restating the formula. An
469
+ alias, not a copy: `precision.css` overrides --dropdown-radius alone, and two
470
+ parallel formulas would have left form listboxes at a different radius than the
471
+ menus they sit beside. Override this token to deliberately split the two.
472
+ 🔴 It used to paint --form-radius, which is `var(--radius-base)`: the UNCAPPED
473
+ CONTROL token, on a padded content container — the exact bypass the caps above
474
+ exist to prevent (on `ember`, base 24px, a 24px curve against 4px of padding).
475
+ Never route a panel through a control token. */
476
+ --form-dropdown-radius: var(--dropdown-radius);
438
477
  --tooltip-radius: min(var(--radius-base), var(--surface-radius-cap-xs));
439
478
  --codeblock-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
440
479
  --popover-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
@@ -453,6 +492,17 @@
453
492
  /* Owns its own border/bg/shadow with compact (~12-20px) paddings, closer
454
493
  to Alert/Dropdown's profile than Card's, despite living in data-display. */
455
494
  --gantt-chart-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
495
+ /* AgentRequest: the composer-slot panel. Compact chrome (~14px padding), so
496
+ it takes the sm cap like Dropdown/Popover/Toast — NOT --card-radius. It
497
+ used to borrow that token, but Card earns the lg cap by having 24px of
498
+ padding to absorb the curve; at 14px the same 32px radius visibly crowds
499
+ the header row (ember, --radius-base: 24px). */
500
+ --agent-request-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-sm));
501
+ /* The payload well INSIDE that panel (the command/diff being approved) has
502
+ only ~10px of padding, so it needs the tight xs cap — same formula and
503
+ reasoning as --tooltip-radius, one tier below its own container. A bare
504
+ var(--radius-base) here rendered a 24px curve on a 10px-padded box. */
505
+ --agent-request-well-radius: min(var(--radius-base), var(--surface-radius-cap-xs));
456
506
 
457
507
  /* Surfaces (1.5x base = 18px, capped) */
458
508
  --card-radius: min(calc(var(--radius-base) * 1.5), var(--surface-radius-cap-lg));
@@ -495,27 +545,42 @@
495
545
  --button-icon-p-md: 8px;
496
546
  --button-icon-p-lg: 10px;
497
547
 
498
- /* Button icon-only sizes */
499
- --button-icon-size-sm: var(--form-min-h-sm);
500
- --button-icon-size-md: var(--form-min-h-md);
501
- --button-icon-size-lg: var(--form-min-h-lg);
548
+ /* Icon-only Button SQUARE — the button's box, aliased to the form height so
549
+ an icon button lines up with the field beside it. Named `-square-`, not
550
+ `-size-`: it is not the size of the icon (that is --form-icon-size-*, and
551
+ two tokens both called `icon-size` meaning different things is a trap). */
552
+ --button-icon-square-sm: var(--form-min-h-sm);
553
+ --button-icon-square-md: var(--form-min-h-md);
554
+ --button-icon-square-lg: var(--form-min-h-lg);
502
555
 
503
556
  /* Badge variables.
504
557
  Radius derives from --radius-base like every other CONTROL (Button/Input/
505
558
  Segmented) — 0.75x = 6px at the 8px base, and now it tracks a themed base
506
559
  (was a hardcoded 6px literal that silently ignored --radius-base). Uncapped:
507
560
  a large base takes Badge fully pill, which CSS auto-clamps to 50%.
508
- Paddings are fixed px (like --button-px-*/--form-px-*), overridable per theme
561
+ Paddings are fixed px (like --button-px-* / --form-px-*), overridable per theme
509
562
  so a spacious theme can grow the chip tier alongside its controls. py drives
510
- height together with the text line-height + 1px border (sm: 16+0+2=18, md:
563
+ height together with the text line-height + 1px border (sm: 16+2+2=20, md:
511
564
  16+4+2=22). pill-px must clear the rounded-full cap so text is not eaten
512
- by the curve. */
565
+ by the curve.
566
+
567
+ RADIUS IS PER SIZE. A single shared radius does not survive down the ramp:
568
+ the curve starts `radius` in from each edge while text starts `px + border`
569
+ in, so the smaller box — which has LESS padding to absorb the curve — is the
570
+ one whose glyphs end up sitting inside it. At the shared 0.75x (6px) sm's
571
+ text started at 5px against a 6px curve; 0.5x (4px) clears it. Same
572
+ curve-vs-padding collision the --surface-radius-cap-* ceilings solve for
573
+ containers, one tier down. Both still derive from --radius-base so a themed
574
+ base scales them; --badge-radius stays the md value (and the name a theme
575
+ already overrides), with --badge-radius-md aliasing it. */
513
576
  --badge-radius: calc(var(--radius-base) * 0.75);
577
+ --badge-radius-sm: calc(var(--radius-base) * 0.5);
578
+ --badge-radius-md: var(--badge-radius);
514
579
  --badge-px-sm: 4px;
515
580
  --badge-px-md: 6px;
516
- --badge-py-sm: 0px;
581
+ --badge-py-sm: 1px;
517
582
  --badge-py-md: 2px;
518
- --badge-pill-px-sm: 8px;
583
+ --badge-pill-px-sm: 10px;
519
584
  --badge-pill-px-md: 10px;
520
585
 
521
586
  /* Pill (chip tier) — px/py per size. rounded-full is intrinsic (no radius
@@ -599,6 +664,37 @@
599
664
  --metric-content-p-lg: 20px;
600
665
  /* from p-5 */
601
666
 
667
+ /* ============================================
668
+ MOTION SYSTEM — the transition-duration tier, tokenised.
669
+
670
+ Unlike the type utilities, Tailwind's duration-* does NOT route through a
671
+ theme variable: `duration-200` compiles to a literal `transition-duration:
672
+ .2s`, so a theme had no way to make the whole UI quicker or calmer. These
673
+ five tokens cover every duration the library actually uses; consume them as
674
+ `duration-[var(--motion-duration-base)]`.
675
+
676
+ 🔴 Values are the EXACT literals they replace — this is a tokenisation, not
677
+ a retune. The names label the existing tiers rather than proposing new
678
+ timings, so a theme opts into a different feel by overriding a token; the
679
+ default rendering is byte-identical.
680
+
681
+ 🔴 There is deliberately NO --motion-ease-* family. Easing ALREADY routes
682
+ through overridable variables — `ease-out` compiles to
683
+ `transition-timing-function: var(--ease-out)`, same as `tracking-tight` ->
684
+ var(--tracking-tight). A theme retunes --ease-out/--ease-in/--ease-in-out
685
+ directly; adding a parallel --motion-ease-* namespace would give the same
686
+ property two competing knobs.
687
+
688
+ 🔴 Scope is CSS transitions only. motion/react animations take durations as
689
+ JS numbers (seconds) in .animations.ts and cannot read a CSS variable — see
690
+ interaction.animations.ts for the shared press/hover springs, which stay the
691
+ single source of truth for those. Don't mirror these tokens into JS. */
692
+ --motion-duration-fast: 150ms;
693
+ --motion-duration-base: 200ms;
694
+ --motion-duration-slow: 300ms;
695
+ --motion-duration-slower: 400ms;
696
+ --motion-duration-slowest: 500ms;
697
+
602
698
  /* Segmented inner offset — drives wrapper padding AND inner radius so
603
699
  the sliding background + items stay concentric with the outer shell.
604
700
  border (1px) + padding (--segmented-padding) = total inset. */
@@ -606,6 +702,25 @@
606
702
  /* 2px */
607
703
  --segmented-inner-radius: calc(var(--segmented-radius) - var(--segmented-padding) - 1px);
608
704
 
705
+ /* Menu panel inner offset — same model as --segmented-* above: one padding
706
+ token drives BOTH the panel's own padding AND the outer corner radius of
707
+ its first/last row, so the rows stay concentric with the panel instead of
708
+ bulging past its curve. border (1px) + padding (--dropdown-padding) = total
709
+ inset. Consumed by Dropdown's menu, ContextMenu's body + submenu body, and
710
+ MenuItem's first:/last: rules — change the padding here, never at a call
711
+ site, or the two drift apart. Interior rows keep their own flat radius;
712
+ only the two rows that meet the panel's corners take this one. */
713
+ --dropdown-padding: 0.25rem;
714
+ /* 4px */
715
+ --dropdown-inner-radius: calc(var(--dropdown-radius) - var(--dropdown-padding) - 1px);
716
+
717
+ /* Same pair for the FORM listbox panel, aliasing the menu's by default (see
718
+ --form-dropdown-radius). Named separately so a theme CAN split the two — and so
719
+ the inner radius always derives from the panel it actually sits in, whichever
720
+ way that goes. */
721
+ --form-dropdown-padding: var(--dropdown-padding);
722
+ --form-dropdown-inner-radius: calc(var(--form-dropdown-radius) - var(--form-dropdown-padding) - 1px);
723
+
609
724
  /* Glass effect gradient variables */
610
725
  --glass-gradient-outer: linear-gradient(to bottom,
611
726
  rgba(250, 250, 250, 0.8) 0%,
@@ -634,7 +749,7 @@
634
749
  --nav-item-radius: var(--radius-base);
635
750
 
636
751
  /* Modal and Drawer */
637
- --overlay-bg: rgba(0, 0, 0, 0.65);
752
+ --overlay-bg: rgba(0, 0, 0, 0.75);
638
753
  --overlay-blur: 8px;
639
754
  --color-scale-background: oklch(0% 0 0);
640
755
  /* backdrop behind scaled content */
@@ -892,7 +1007,6 @@
892
1007
  --color-success: var(--color-success-400);
893
1008
  --color-warning: var(--color-warning-400);
894
1009
  --color-danger: var(--color-danger-400);
895
- --color-secondary: var(--color-secondary-400);
896
1010
  /* Neutral fill flips to a light chip (dark ink text via auto contrast) */
897
1011
  --color-mono: var(--color-mono-200);
898
1012
 
@@ -903,7 +1017,6 @@
903
1017
  --color-danger-contrast: oklch(from var(--color-danger) clamp(0, (0.85 - l) * 1000, 1) 0 0);
904
1018
  --color-success-contrast: oklch(from var(--color-success) clamp(0, (0.85 - l) * 1000, 1) 0 0);
905
1019
  --color-warning-contrast: oklch(from var(--color-warning) clamp(0, (0.85 - l) * 1000, 1) 0 0);
906
- --color-secondary-contrast: oklch(from var(--color-secondary) clamp(0, (0.85 - l) * 1000, 1) 0 0);
907
1020
  --color-mono-contrast: oklch(from var(--color-mono) clamp(0, (0.85 - l) * 1000, 1) 0 0);
908
1021
 
909
1022
  /* Background colors - dark equivalents */
@@ -926,12 +1039,6 @@
926
1039
  --color-surface-hover: oklch(100% 0 0 / 0.07);
927
1040
  --color-background: var(--surface-1);
928
1041
  /* rung 1 — dark floor */
929
- /* DEPRECATED (remove next major): alias of --color-surface. */
930
- --color-background-secondary: var(--color-surface);
931
- /* DEPRECATED (remove next major): migrate per-usage to --color-surface-sunken / surface ladder. */
932
- --color-background-tertiary: oklch(22% 0 0);
933
- --color-background-quaternary: oklch(26% 0 0);
934
- --color-background-quinary: oklch(30% 0 0);
935
1042
  --color-background-disabled: var(--color-mono-800);
936
1043
 
937
1044
  /* Scale backdrop — sits behind scaled content, darker than the #171717 floor */