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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/CHANGELOG.md +295 -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 +2 -2
  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 +2 -1
  136. package/dist/components/core/Pill/Pill.theme.js +4 -2
  137. package/dist/components/core/Popover/PopoverBody.js +16 -5
  138. package/dist/components/core/Progress/Progress.d.ts +0 -25
  139. package/dist/components/core/Progress/Progress.js +79 -11
  140. package/dist/components/core/Progress/Progress.theme.js +17 -0
  141. package/dist/components/core/Progress/Progress.types.d.ts +47 -1
  142. package/dist/components/core/Rating/Rating.theme.js +1 -1
  143. package/dist/components/core/Rating/Rating.types.d.ts +3 -2
  144. package/dist/components/core/ScrollArea/ScrollArea.js +1 -1
  145. package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
  146. package/dist/components/core/Segmented/Segmented.theme.js +3 -3
  147. package/dist/components/core/Segmented/SegmentedContext.js +1 -0
  148. package/dist/components/core/Sidebar/Sidebar.js +5 -2
  149. package/dist/components/core/Sidebar/Sidebar.theme.js +2 -2
  150. package/dist/components/core/Sidebar/SidebarContent.js +1 -1
  151. package/dist/components/core/Sidebar/SidebarHeader.js +1 -1
  152. package/dist/components/core/Sidebar/SidebarSearch.js +2 -2
  153. package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
  154. package/dist/components/core/Sidebar/SidebarUserProfile.js +1 -1
  155. package/dist/components/core/Sortable/Sortable.theme.js +1 -1
  156. package/dist/components/core/Tabs/Tabs.theme.js +1 -1
  157. package/dist/components/core/Tag/Tag.theme.js +1 -1
  158. package/dist/components/core/Toast/ToastProvider.js +1 -1
  159. package/dist/components/core/Tree/Tree.theme.js +1 -1
  160. package/dist/components/core/index.d.ts +0 -2
  161. package/dist/components/core/index.js +0 -4
  162. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.d.ts +4 -0
  163. package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.js +20 -0
  164. package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.js +1 -1
  165. package/dist/components/core/shared/Ripple.d.ts +16 -0
  166. package/dist/components/core/shared/Ripple.js +141 -0
  167. package/dist/components/data-display/GanttChart/GanttChart.theme.js +6 -6
  168. package/dist/components/data-display/GanttChart/GanttTaskBar.js +1 -1
  169. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +1 -1
  170. package/dist/components/data-display/GanttChart/GanttToolbar.js +0 -1
  171. package/dist/components/data-display/KPI/KPI.js +11 -20
  172. package/dist/components/data-display/KPI/KPI.theme.js +8 -4
  173. package/dist/components/data-display/Metric/Metric.theme.js +4 -4
  174. package/dist/components/data-display/Table/Table.theme.js +2 -2
  175. package/dist/components/data-display/Table/TableColumnManager.js +1 -2
  176. package/dist/components/data-display/Table/TableContext.js +1 -0
  177. package/dist/components/data-display/Table/TableFilter.js +9 -2
  178. package/dist/components/data-display/Table/TableSelectionHeader.js +1 -1
  179. package/dist/components/data-display/Timeline/Timeline.theme.js +1 -1
  180. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +1 -1
  181. package/dist/components/effects/CustomCursor/CustomCursor.js +1 -1
  182. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +4 -4
  183. package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -1
  184. package/dist/components/effects/Overlay/Overlay.js +7 -3
  185. package/dist/components/effects/index.d.ts +0 -32
  186. package/dist/components/effects/index.js +0 -16
  187. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.d.ts +0 -2
  188. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.js +1 -93
  189. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +0 -10
  190. package/dist/components/effects/shared/ShaderCanvas/index.d.ts +1 -1
  191. package/dist/components/effects/shared/index.d.ts +1 -3
  192. package/dist/components/effects/shared/shaderNoise.glsl.d.ts +1 -1
  193. package/dist/components/effects/shared/shaderNoise.glsl.js +2 -11
  194. package/dist/components/forms/Checkbox/Checkbox.theme.js +1 -1
  195. package/dist/components/forms/ColorPicker/ColorPickerHeader.js +1 -1
  196. package/dist/components/forms/ColorPicker/ColorPickerImage.js +1 -1
  197. package/dist/components/forms/Combobox/Combobox.js +2 -0
  198. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +1 -1
  199. package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +1 -0
  200. package/dist/components/forms/FileUpload/FileUpload.theme.js +2 -2
  201. package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +1 -1
  202. package/dist/components/forms/InputAddress/InputAddress.types.d.ts +2 -2
  203. package/dist/components/forms/Radio/Radio.theme.js +1 -1
  204. package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +12 -16
  205. package/dist/components/forms/RichTextEditor/RichTextEditor.js +165 -1680
  206. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +12 -56
  207. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +60 -118
  208. package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +62 -126
  209. package/dist/components/forms/RichTextEditor/RichTextLinkField.d.ts +18 -0
  210. package/dist/components/forms/RichTextEditor/RichTextLinkField.js +46 -0
  211. package/dist/components/forms/RichTextEditor/RichTextToolbar.d.ts +15 -0
  212. package/dist/components/forms/RichTextEditor/RichTextToolbar.js +93 -0
  213. package/dist/components/forms/RichTextEditor/editorCommands.d.ts +50 -0
  214. package/dist/components/forms/RichTextEditor/editorCommands.js +58 -0
  215. package/dist/components/forms/RichTextEditor/editorState.d.ts +19 -0
  216. package/dist/components/forms/RichTextEditor/editorState.js +103 -0
  217. package/dist/components/forms/RichTextEditor/index.d.ts +5 -3
  218. package/dist/components/forms/RichTextEditor/sanitizeHtml.d.ts +38 -0
  219. package/dist/components/forms/RichTextEditor/sanitizeHtml.js +179 -0
  220. package/dist/components/forms/RichTextEditor/sanitizeHtml.test.d.ts +1 -0
  221. package/dist/components/forms/Select/Select.js +4 -4
  222. package/dist/components/forms/Select/Select.types.d.ts +70 -7
  223. package/dist/components/forms/Select/useSelectState.d.ts +9 -3
  224. package/dist/components/forms/Select/useSelectState.js +4 -1
  225. package/dist/components/forms/SelectableCard/SelectableCard.js +2 -1
  226. package/dist/components/forms/SelectableCard/SelectableCard.theme.js +1 -1
  227. package/dist/components/forms/Switch/Switch.theme.js +2 -2
  228. package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -1
  229. package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
  230. package/dist/components/forms/forms.theme.js +19 -5
  231. package/dist/components/forms/index.js +1 -0
  232. package/dist/components/generative/FormShell.d.ts +22 -0
  233. package/dist/components/generative/FormShell.js +102 -0
  234. package/dist/components/generative/GenerativeView.d.ts +52 -1
  235. package/dist/components/generative/GenerativeView.js +203 -11
  236. package/dist/components/generative/actions.d.ts +5 -0
  237. package/dist/components/generative/ai-sdk/index.d.ts +1 -0
  238. package/dist/components/generative/ai-sdk/index.js +1 -0
  239. package/dist/components/generative/ai-sdk/useGenerativeChat.d.ts +52 -0
  240. package/dist/components/generative/ai-sdk/useGenerativeChat.js +73 -0
  241. package/dist/components/generative/ai-sdk/useGenerativeChat.test.d.ts +1 -0
  242. package/dist/components/generative/fieldBinding.d.ts +31 -0
  243. package/dist/components/generative/fieldBinding.js +33 -0
  244. package/dist/components/generative/fieldBinding.test.d.ts +1 -0
  245. package/dist/components/generative/formScope.d.ts +71 -0
  246. package/dist/components/generative/formScope.js +135 -0
  247. package/dist/components/generative/index.d.ts +4 -0
  248. package/dist/components/generative/index.js +4 -0
  249. package/dist/components/generative/registry.d.ts +2 -0
  250. package/dist/components/generative/registry.js +10 -10
  251. package/dist/components/generative/schema.generated.js +178 -292
  252. package/dist/components/generative/toToolResult.d.ts +21 -0
  253. package/dist/components/generative/toToolResult.js +15 -0
  254. package/dist/components/generative/toToolResult.test.d.ts +1 -0
  255. package/dist/components/generative/validate.d.ts +10 -1
  256. package/dist/components/generative/validate.js +126 -11
  257. package/dist/components/layout/Grid/Grid.js +1 -0
  258. package/dist/components/layout/Section/Section.theme.js +1 -1
  259. package/dist/components/layout/Stack/Stack.js +1 -0
  260. package/dist/generative.schema.json +178 -292
  261. package/dist/index.js +1 -4
  262. package/dist/registry.json +2599 -2375
  263. package/dist/shadcn-compat.css +5 -5
  264. package/dist/styles/theme.test.d.ts +1 -0
  265. package/dist/styles.css +1 -1
  266. package/dist/test/render.d.ts +17 -0
  267. package/dist/themes/precision.css +232 -0
  268. package/dist/tools.json +179 -294
  269. package/dist/utils/index.d.ts +0 -1
  270. package/package.json +31 -1
  271. package/src/global.scss +21 -28
  272. package/src/styles/theme.css +124 -41
  273. package/src/styles/theme.test.ts +119 -0
  274. package/tailwind.preset.cjs +30 -20
  275. package/dist/components/charts/FunnelChart/FunnelChart.animations.d.ts +0 -35
  276. package/dist/components/charts/FunnelChart/FunnelChart.animations.js +0 -59
  277. package/dist/components/charts/FunnelChart/FunnelChart.d.ts +0 -8
  278. package/dist/components/charts/FunnelChart/FunnelChart.js +0 -410
  279. package/dist/components/charts/FunnelChart/FunnelChart.theme.d.ts +0 -2
  280. package/dist/components/charts/FunnelChart/FunnelChart.theme.js +0 -12
  281. package/dist/components/charts/FunnelChart/FunnelChart.types.d.ts +0 -105
  282. package/dist/components/charts/FunnelChart/index.d.ts +0 -4
  283. package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +0 -9
  284. package/dist/components/charts/ScatterPlot/ScatterPlot.js +0 -208
  285. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -18
  286. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -42
  287. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +0 -60
  288. package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +0 -19
  289. package/dist/components/charts/ScatterPlot/index.d.ts +0 -3
  290. package/dist/components/core/Button/Button.ripple.d.ts +0 -71
  291. package/dist/components/core/Button/Button.ripple.js +0 -236
  292. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.d.ts +0 -4
  293. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.theme.d.ts +0 -12
  294. package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.types.d.ts +0 -23
  295. package/dist/components/core/Calendar/CalendarEvent/index.d.ts +0 -2
  296. package/dist/components/core/CardStack/CardStack.animations.d.ts +0 -47
  297. package/dist/components/core/CardStack/CardStack.d.ts +0 -3
  298. package/dist/components/core/CardStack/CardStack.js +0 -187
  299. package/dist/components/core/CardStack/CardStack.theme.d.ts +0 -6
  300. package/dist/components/core/CardStack/CardStack.theme.js +0 -33
  301. package/dist/components/core/CardStack/CardStack.types.d.ts +0 -139
  302. package/dist/components/core/CardStack/index.d.ts +0 -7
  303. package/dist/components/core/Carousel/Carousel.d.ts +0 -3
  304. package/dist/components/core/Carousel/Carousel.js +0 -83
  305. package/dist/components/core/Carousel/Carousel.theme.d.ts +0 -10
  306. package/dist/components/core/Carousel/Carousel.theme.js +0 -20
  307. package/dist/components/core/Carousel/Carousel.types.d.ts +0 -113
  308. package/dist/components/core/Carousel/CarouselBody.d.ts +0 -4
  309. package/dist/components/core/Carousel/CarouselBody.js +0 -59
  310. package/dist/components/core/Carousel/CarouselContext.d.ts +0 -3
  311. package/dist/components/core/Carousel/CarouselContext.js +0 -13
  312. package/dist/components/core/Carousel/CarouselItem.d.ts +0 -4
  313. package/dist/components/core/Carousel/CarouselItem.js +0 -11
  314. package/dist/components/core/Carousel/CarouselNext.d.ts +0 -4
  315. package/dist/components/core/Carousel/CarouselNext.js +0 -16
  316. package/dist/components/core/Carousel/CarouselPrevious.d.ts +0 -4
  317. package/dist/components/core/Carousel/CarouselPrevious.js +0 -16
  318. package/dist/components/core/Carousel/index.d.ts +0 -3
  319. package/dist/components/effects/ColorPanels/ColorPanels.d.ts +0 -8
  320. package/dist/components/effects/ColorPanels/ColorPanels.js +0 -66
  321. package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +0 -12
  322. package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +0 -218
  323. package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +0 -29
  324. package/dist/components/effects/ColorPanels/ColorPanels.types.js +0 -3
  325. package/dist/components/effects/ColorPanels/index.d.ts +0 -2
  326. package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +0 -9
  327. package/dist/components/effects/FlutedGlass/FlutedGlass.js +0 -80
  328. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +0 -12
  329. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +0 -335
  330. package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +0 -61
  331. package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +0 -16
  332. package/dist/components/effects/FlutedGlass/index.d.ts +0 -3
  333. package/dist/components/effects/GlassEffect/GlassEffect.d.ts +0 -15
  334. package/dist/components/effects/GlassEffect/GlassEffect.js +0 -38
  335. package/dist/components/effects/GlassEffect/GlassEffect.types.d.ts +0 -19
  336. package/dist/components/effects/GlassEffect/index.d.ts +0 -2
  337. package/dist/components/effects/GlassSurface/GlassSurface.d.ts +0 -8
  338. package/dist/components/effects/GlassSurface/GlassSurface.js +0 -250
  339. package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +0 -66
  340. package/dist/components/effects/GlassSurface/index.d.ts +0 -2
  341. package/dist/components/effects/GodRays/GodRays.d.ts +0 -8
  342. package/dist/components/effects/GodRays/GodRays.js +0 -68
  343. package/dist/components/effects/GodRays/GodRays.shaders.d.ts +0 -10
  344. package/dist/components/effects/GodRays/GodRays.shaders.js +0 -128
  345. package/dist/components/effects/GodRays/GodRays.types.d.ts +0 -25
  346. package/dist/components/effects/GodRays/GodRays.types.js +0 -3
  347. package/dist/components/effects/GodRays/index.d.ts +0 -2
  348. package/dist/components/effects/GridPattern/GridPattern.d.ts +0 -18
  349. package/dist/components/effects/GridPattern/GridPattern.js +0 -65
  350. package/dist/components/effects/GridPattern/GridPattern.types.d.ts +0 -47
  351. package/dist/components/effects/GridPattern/index.d.ts +0 -2
  352. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +0 -10
  353. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +0 -78
  354. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +0 -22
  355. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +0 -239
  356. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +0 -52
  357. package/dist/components/effects/HalftoneCmyk/index.d.ts +0 -2
  358. package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +0 -9
  359. package/dist/components/effects/HalftoneDots/HalftoneDots.js +0 -68
  360. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +0 -13
  361. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +0 -296
  362. package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +0 -43
  363. package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +0 -12
  364. package/dist/components/effects/HalftoneDots/index.d.ts +0 -3
  365. package/dist/components/effects/ImageDithering/ImageDithering.d.ts +0 -9
  366. package/dist/components/effects/ImageDithering/ImageDithering.js +0 -68
  367. package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +0 -12
  368. package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +0 -117
  369. package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +0 -30
  370. package/dist/components/effects/ImageDithering/ImageDithering.types.js +0 -8
  371. package/dist/components/effects/ImageDithering/index.d.ts +0 -3
  372. package/dist/components/effects/MagneticElement/MagneticElement.d.ts +0 -30
  373. package/dist/components/effects/MagneticElement/MagneticElement.js +0 -111
  374. package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +0 -44
  375. package/dist/components/effects/MagneticElement/index.d.ts +0 -2
  376. package/dist/components/effects/Metaballs/Metaballs.d.ts +0 -8
  377. package/dist/components/effects/Metaballs/Metaballs.js +0 -59
  378. package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +0 -10
  379. package/dist/components/effects/Metaballs/Metaballs.shaders.js +0 -102
  380. package/dist/components/effects/Metaballs/Metaballs.types.d.ts +0 -16
  381. package/dist/components/effects/Metaballs/Metaballs.types.js +0 -3
  382. package/dist/components/effects/Metaballs/index.d.ts +0 -2
  383. package/dist/components/effects/PaperTexture/PaperTexture.d.ts +0 -9
  384. package/dist/components/effects/PaperTexture/PaperTexture.js +0 -61
  385. package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +0 -22
  386. package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +0 -145
  387. package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +0 -19
  388. package/dist/components/effects/PaperTexture/index.d.ts +0 -2
  389. package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +0 -27
  390. package/dist/components/effects/PulsingBorder/PulsingBorder.js +0 -174
  391. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +0 -14
  392. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +0 -258
  393. package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +0 -75
  394. package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +0 -3
  395. package/dist/components/effects/PulsingBorder/index.d.ts +0 -2
  396. package/dist/components/effects/SmokeRing/SmokeRing.d.ts +0 -8
  397. package/dist/components/effects/SmokeRing/SmokeRing.js +0 -62
  398. package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +0 -14
  399. package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +0 -130
  400. package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +0 -22
  401. package/dist/components/effects/SmokeRing/SmokeRing.types.js +0 -3
  402. package/dist/components/effects/SmokeRing/index.d.ts +0 -2
  403. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +0 -9
  404. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +0 -59
  405. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +0 -14
  406. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +0 -129
  407. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +0 -23
  408. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +0 -3
  409. package/dist/components/effects/StaticGradientMesh/index.d.ts +0 -2
  410. package/dist/components/effects/Water/Water.d.ts +0 -9
  411. package/dist/components/effects/Water/Water.js +0 -65
  412. package/dist/components/effects/Water/Water.shaders.d.ts +0 -11
  413. package/dist/components/effects/Water/Water.shaders.js +0 -123
  414. package/dist/components/effects/Water/Water.types.d.ts +0 -25
  415. package/dist/components/effects/Water/index.d.ts +0 -2
  416. package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +0 -10
  417. package/dist/components/effects/shared/bayerMatrices.glsl.js +0 -44
  418. package/dist/components/effects/shared/imageUV.glsl.d.ts +0 -12
  419. package/dist/components/effects/shared/imageUV.glsl.js +0 -26
  420. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.d.ts +0 -7
  421. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +0 -32
  422. package/dist/utils/calendarUtils.d.ts +0 -60
  423. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.d.ts +0 -0
  424. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.d.ts +0 -0
  425. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.js +0 -0
  426. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.types.d.ts +0 -0
  427. /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltipContent.d.ts +0 -0
  428. /package/dist/components/{charts → core}/shared/ChartTooltip/index.d.ts +0 -0
@@ -0,0 +1,141 @@
1
+ "use client";
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { useRef, useState, useEffect, useCallback } from 'react';
4
+ import { useReducedMotion, motion } from 'motion/react';
5
+ import { cn } from '../../../utils/cn.js';
6
+
7
+ /**
8
+ * Shared press ripple for interactive surfaces (Button, NavItem, MenuItem,
9
+ * Pill, SelectableCard). One source of truth so every pressable surface in the
10
+ * library ripples with the same character — the sibling of `createPressVariants`
11
+ * in `interaction.animations.ts`.
12
+ *
13
+ * Drop it in as the LAST child of a host that is `relative`:
14
+ *
15
+ * ```tsx
16
+ * <button className="relative">
17
+ * Save
18
+ * <Ripple />
19
+ * </button>
20
+ * ```
21
+ *
22
+ * It wires itself: the layer reads its own `parentElement` and listens there,
23
+ * so the host never threads a handler or a ref. Clipping lives on the layer
24
+ * (`overflow-hidden rounded-[inherit]`), so the host does not need
25
+ * `overflow-hidden` of its own.
26
+ */
27
+ /** Interactive elements that earn a ripple. See `isInteractive` below. */
28
+ const INTERACTIVE_SELECTOR = [
29
+ "button",
30
+ "a[href]",
31
+ '[role="button"]',
32
+ '[role="menuitem"]',
33
+ '[role="menuitemcheckbox"]',
34
+ '[role="menuitemradio"]',
35
+ '[role="option"]',
36
+ '[role="tab"]',
37
+ '[tabindex]:not([tabindex="-1"])',
38
+ ].join(", ");
39
+ /**
40
+ * A ripple is a press affordance, so it must only appear on something a user
41
+ * can actually press — including by keyboard. A bare `<div onClick>` has no
42
+ * role and no tab stop, so advertising interactivity on it would be the exact
43
+ * pattern CLAUDE.md §8b describes when it explains why Badge's click path was
44
+ * removed. Gating on the DOM (rather than on the presence of a handler) keeps
45
+ * that guarantee self-correcting: a host becomes rippleable by becoming
46
+ * accessible, not by passing a prop.
47
+ */
48
+ function isInteractive(element) {
49
+ return element.matches(INTERACTIVE_SELECTOR);
50
+ }
51
+ /** Duration scales with reach — a fixed value crosses a large surface far too fast. */
52
+ const MIN_DURATION = 0.35;
53
+ const MAX_DURATION = 0.7;
54
+ const DURATION_DIVISOR = 500;
55
+ function durationForRadius(radius) {
56
+ return Math.min(MAX_DURATION, Math.max(MIN_DURATION, radius / DURATION_DIVISOR));
57
+ }
58
+ const Ripple = ({ disabled = false, className }) => {
59
+ const layerRef = useRef(null);
60
+ const [ripples, setRipples] = useState([]);
61
+ const shouldReduceMotion = useReducedMotion();
62
+ // Monotonic ids. Date.now() collides when two presses land in the same
63
+ // millisecond, which produced duplicate React keys in the previous
64
+ // Button-only implementation.
65
+ const nextId = useRef(0);
66
+ // Read through refs inside the listener so the effect below subscribes once
67
+ // per host rather than re-subscribing whenever these flip.
68
+ const disabledRef = useRef(disabled);
69
+ disabledRef.current = disabled;
70
+ const reducedMotionRef = useRef(shouldReduceMotion);
71
+ reducedMotionRef.current = shouldReduceMotion;
72
+ // Dev warning fires at most once per host, not once per press.
73
+ const warnedRef = useRef(false);
74
+ useEffect(() => {
75
+ const layer = layerRef.current;
76
+ const host = layer === null || layer === void 0 ? void 0 : layer.parentElement;
77
+ if (!host)
78
+ return;
79
+ // NOTE: no runtime check that the host is positioned. jsdom does not
80
+ // process Tailwind, so `getComputedStyle(host).position` reads "static"
81
+ // for a `relative` host in every test — a warning there is pure noise for
82
+ // us and for consumers. The `relative` contract is documented above and
83
+ // enforced by review.
84
+ // `pointerdown` rather than `click` on purpose: it fires on press instead
85
+ // of release, and a keyboard Enter/Space never produces one — so ripples
86
+ // are pointer-only without any synthetic-click sniffing.
87
+ const handlePointerDown = (event) => {
88
+ if (disabledRef.current || reducedMotionRef.current)
89
+ return;
90
+ if (host.hasAttribute("disabled") || host.getAttribute("aria-disabled") === "true")
91
+ return;
92
+ // Checked per press, not once on mount: a host's interactivity is not
93
+ // static (SelectableCard drops to tabIndex={-1} while disabled), and a
94
+ // mount-time gate would leave the listener permanently detached for any
95
+ // host that starts non-interactive and later becomes pressable.
96
+ if (!isInteractive(host)) {
97
+ if (process.env.NODE_ENV !== "production" && !warnedRef.current) {
98
+ warnedRef.current = true;
99
+ // eslint-disable-next-line no-console
100
+ console.warn("[Ripple]: host is not an interactive element (needs a button/link role or a tab stop) — no ripple will render.");
101
+ }
102
+ return;
103
+ }
104
+ const rect = host.getBoundingClientRect();
105
+ const x = event.clientX - rect.left;
106
+ const y = event.clientY - rect.top;
107
+ // Reach the farthest corner, so the ripple always covers the host.
108
+ const dx = Math.max(x, rect.width - x);
109
+ const dy = Math.max(y, rect.height - y);
110
+ const radius = Math.hypot(dx, dy);
111
+ if (radius === 0)
112
+ return;
113
+ setRipples((prev) => [...prev, { id: nextId.current++, x, y, radius }]);
114
+ };
115
+ host.addEventListener("pointerdown", handlePointerDown);
116
+ return () => host.removeEventListener("pointerdown", handlePointerDown);
117
+ }, []);
118
+ const removeRipple = useCallback((id) => {
119
+ setRipples((prev) => prev.filter((ripple) => ripple.id !== id));
120
+ }, []);
121
+ // The layer always mounts, even under reduced motion — the listener bails on
122
+ // `reducedMotionRef` instead. Returning null here would leave the effect
123
+ // above bound against a null ref, so a user turning reduced motion off
124
+ // mid-session would get no ripple until the host remounted.
125
+ return (jsx("span", { ref: layerRef, "aria-hidden": "true", "data-flikkui-ripple": "", className: "absolute inset-0 overflow-hidden rounded-[inherit] pointer-events-none", children: ripples.map((ripple) => (jsx(motion.span, { "data-flikkui-ripple-circle": "", initial: { scale: 0, opacity: 0.2 }, animate: { scale: 1, opacity: 0 }, transition: {
126
+ duration: durationForRadius(ripple.radius),
127
+ ease: "easeOut",
128
+ }, onAnimationComplete: () => removeRipple(ripple.id),
129
+ // Geometry is per-press, so it goes through `style` — an
130
+ // interpolated class name would not exist in the shipped CSS
131
+ // (CLAUDE.md §3).
132
+ style: {
133
+ width: ripple.radius * 2,
134
+ height: ripple.radius * 2,
135
+ left: ripple.x - ripple.radius,
136
+ top: ripple.y - ripple.radius,
137
+ }, className: cn("absolute rounded-full bg-current", className) }, ripple.id))) }));
138
+ };
139
+ Ripple.displayName = "Ripple";
140
+
141
+ export { Ripple };
@@ -1,18 +1,18 @@
1
1
  const ganttChartTheme = {
2
2
  baseStyle: "flex flex-col w-full overflow-hidden rounded-[var(--gantt-chart-radius)] border border-[var(--color-border)] bg-[var(--color-background)] text-sm shadow-sm",
3
- toolbarStyle: "flex flex-wrap items-center justify-between gap-2 px-3 py-2 border-b border-[var(--color-border)] bg-[var(--color-background-secondary)]/80",
3
+ toolbarStyle: "flex flex-wrap items-center justify-between gap-2 px-3 py-2 border-b border-[var(--color-border)] bg-[var(--color-surface)]/80",
4
4
  tablePanelStyle: "flex flex-col shrink-0 overflow-hidden border-r border-[var(--color-border)] bg-[var(--color-background)]",
5
5
  chartPanelStyle: "flex flex-col flex-1 min-w-0 overflow-hidden",
6
- tableHeaderStyle: "flex items-center h-[56px] border-b border-[var(--color-border)] bg-[var(--color-background-secondary)]/80",
6
+ tableHeaderStyle: "flex items-center h-[56px] border-b border-[var(--color-border)] bg-[var(--color-surface)]/80",
7
7
  tableHeaderCellStyle: "px-3 text-[11px] font-semibold uppercase tracking-wide text-[var(--color-text-muted)] truncate",
8
- tableGroupRowStyle: "flex items-center cursor-pointer select-none border-b border-[var(--color-border)]/30 bg-[var(--color-background-secondary)]/35 hover:bg-[var(--color-background-secondary)] transition-colors",
9
- tableTaskRowStyle: "flex items-center border-b border-[var(--color-border)]/20 hover:bg-[var(--color-background-secondary)]/70 transition-colors",
8
+ tableGroupRowStyle: "flex items-center cursor-pointer select-none border-b border-[var(--color-border)]/30 bg-[var(--color-surface)]/35 hover:bg-[var(--color-surface)] transition-colors",
9
+ tableTaskRowStyle: "flex items-center border-b border-[var(--color-border)]/20 hover:bg-[var(--color-surface)]/70 transition-colors",
10
10
  tableCellStyle: "px-3 truncate text-[var(--color-text-primary)]",
11
11
  timelineHeaderStyle: "bg-[var(--color-background)] border-b border-[var(--color-border)] shadow-[0_1px_0_var(--color-border)]",
12
- timelineMonthStyle: "text-[11px] font-semibold uppercase tracking-wide text-[var(--color-text-secondary)] px-2 border-b border-[var(--color-border)] flex items-center bg-[var(--color-background-secondary)]/45",
12
+ timelineMonthStyle: "text-[11px] font-semibold uppercase tracking-wide text-[var(--color-text-secondary)] px-2 border-b border-[var(--color-border)] flex items-center bg-[var(--color-surface)]/45",
13
13
  timelineDayStyle: "text-[10px] text-[var(--color-text-muted)] flex items-center justify-center border-r border-[var(--color-border)]/20",
14
14
  gridLineStyle: "border-r border-[var(--color-border)]/20",
15
- weekendStyle: "bg-[var(--color-background-secondary)]/35",
15
+ weekendStyle: "bg-[var(--color-surface)]/35",
16
16
  todayMarkerStyle: "bg-[var(--color-primary)] w-0.5",
17
17
  todayColumnStyle: "bg-[var(--color-primary)]/10",
18
18
  taskBarStyle: "absolute cursor-pointer flex items-center overflow-hidden shadow-sm ring-1 ring-black/10",
@@ -5,7 +5,7 @@ import { motion } from 'motion/react';
5
5
  import { cn } from '../../../utils/cn.js';
6
6
  import { useGanttContext, useGanttInteraction } from './GanttChartContext.js';
7
7
  import { getDayOffset, calculateExpectedProgress, formatDateShort, formatDuration } from './GanttChart.utils.js';
8
- import { ChartTooltip } from '../../charts/shared/ChartTooltip/ChartTooltip.js';
8
+ import { ChartTooltip } from '../../core/shared/ChartTooltip/ChartTooltip.js';
9
9
  import { Avatar } from '../../core/Avatar/Avatar.js';
10
10
  import { GanttTaskContextMenu } from './GanttTaskContextMenu.js';
11
11
  import { taskBarVariants } from './GanttChart.animations.js';
@@ -61,7 +61,7 @@ const GanttTimelineHeader = ({ days, monthSpans, }) => {
61
61
  return (jsxs("div", { className: cn(theme.timelineHeaderStyle), style: { width: totalWidth }, children: [jsx("div", { className: "flex", style: { height: 28 }, children: headerSpans.map((span) => (jsx("div", { className: cn(theme.timelineMonthStyle), style: { width: span.span * dayWidth }, children: span.label }, `${span.label}-${span.startIndex}`))) }), jsx("div", { className: "flex", style: { height: 28 }, children: days.map((day, i) => {
62
62
  const isToday = isSameDay(day, today);
63
63
  const weekend = isWeekend(day);
64
- return (jsx("div", { className: cn(theme.timelineDayStyle, weekend && "bg-[var(--color-background-secondary)]/50", isToday && "font-semibold text-[var(--color-primary)]"), style: { width: dayWidth }, children: getDayLabel(day, zoom) }, i));
64
+ return (jsx("div", { className: cn(theme.timelineDayStyle, weekend && "bg-[var(--color-surface)]/50", isToday && "font-semibold text-[var(--color-primary)]"), style: { width: dayWidth }, children: getDayLabel(day, zoom) }, i));
65
65
  }) })] }));
66
66
  };
67
67
 
@@ -5,7 +5,6 @@ import { cn } from '../../../utils/cn.js';
5
5
  import { useGanttContext } from './GanttChartContext.js';
6
6
  import { Segmented } from '../../core/Segmented/Segmented.js';
7
7
  import { Button } from '../../core/Button/Button.js';
8
- import 'react';
9
8
  import { Checkbox } from '../../forms/Checkbox/Checkbox.js';
10
9
 
11
10
  const ZOOM_OPTIONS = [
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import React__default, { useMemo } from 'react';
4
- import { motion } from 'motion/react';
5
4
  import { ArrowUpRight, ArrowDownRight } from '@phosphor-icons/react';
6
5
  import { cn } from '../../../utils/cn.js';
6
+ import { Progress } from '../../core/Progress/Progress.js';
7
7
  import { kpiTheme } from './KPI.theme.js';
8
8
 
9
9
  const KPI = React__default.forwardRef(({ value, label, trend, trendLabel, progress, barCount = 24, subtitle, icon, size = "md", color = "primary", className, theme: customTheme = {}, ...props }, ref) => {
@@ -32,28 +32,19 @@ const KPI = React__default.forwardRef(({ value, label, trend, trendLabel, progre
32
32
  : trend < 0
33
33
  ? "down"
34
34
  : "neutral";
35
- // Calculate filled bar count from progress
36
- const filledBars = useMemo(() => {
37
- if (progress === undefined)
38
- return 0;
39
- return Math.round((Math.min(Math.max(progress, 0), 100) / 100) * barCount);
40
- }, [progress, barCount]);
41
- const barSize = kpiTheme.barSizes[size];
35
+ // KPI owns its own bar geometry; hand it to Progress as segment sizing.
36
+ // (`width` predates the flex-1 cells and is unused.)
37
+ const segmentSizes = useMemo(() => Object.fromEntries(Object.entries(kpiTheme.barSizes).map(([key, { height, gap }]) => [
38
+ key,
39
+ { height, gap },
40
+ ])), []);
42
41
  return (jsxs("div", { ref: ref, className: cn(theme.baseStyle, className), ...props, children: [jsxs("div", { className: "flex items-start justify-between", children: [jsxs("div", { className: "flex items-baseline gap-2", children: [jsx("span", { className: cn(theme.valueSizes[size]), children: value }), label &&
43
42
  (typeof label === "string" ? (jsxs("span", { className: cn(theme.labelStyle, theme.labelSizes[size]), children: [icon && (jsx("span", { className: "inline-flex items-center mr-1", children: icon })), label] })) : (label))] }), formattedTrend &&
44
43
  trendDirection &&
45
- (typeof formattedTrend === "string" ? (jsxs("span", { className: cn("inline-flex items-center gap-0.5 font-medium", theme.trendSizes[size], trendDirection === "up" && theme.trendPositive, trendDirection === "down" && theme.trendNegative, trendDirection === "neutral" && theme.trendNeutral), children: [formattedTrend, trendDirection === "up" && (jsx(ArrowUpRight, { className: "size-4" })), trendDirection === "down" && (jsx(ArrowDownRight, { className: "size-4" }))] })) : (formattedTrend))] }), progress !== undefined && (jsx("div", { className: cn("flex items-end", barSize.gap), role: "img", "aria-label": `Progress: ${progress}%`, children: Array.from({ length: barCount }, (_, i) => {
46
- const isFilled = i < filledBars;
47
- const fadeDistance = filledBars - i;
48
- const fillOpacity = isFilled && fadeDistance <= 3
49
- ? 0.4 + (fadeDistance / 3) * 0.6
50
- : 1;
51
- return (jsx("div", { className: cn("relative rounded-sm flex-1", barSize.height, theme.barEmptyColor), children: isFilled && (jsx(motion.div, { className: cn("absolute inset-0 rounded-sm", theme.barFilledColors[color]), initial: { opacity: 0 }, animate: { opacity: fillOpacity }, transition: {
52
- duration: 0.25,
53
- ease: "easeOut",
54
- delay: i * 0.03,
55
- } })) }, i));
56
- }) })), subtitle &&
44
+ (typeof formattedTrend === "string" ? (jsxs("span", { className: cn("inline-flex items-center gap-0.5 font-medium", theme.trendSizes[size], trendDirection === "up" && theme.trendPositive, trendDirection === "down" && theme.trendNegative, trendDirection === "neutral" && theme.trendNeutral), children: [formattedTrend, trendDirection === "up" && (jsx(ArrowUpRight, { className: "size-4" })), trendDirection === "down" && (jsx(ArrowDownRight, { className: "size-4" }))] })) : (formattedTrend))] }), progress !== undefined && (jsx(Progress, { value: progress, segments: barCount, segmentFade: true, size: size, className: theme.barFilledColors[color], "aria-label": `Progress: ${progress}%`, theme: {
45
+ segmentEmptyStyle: theme.barEmptyColor,
46
+ segmentSizes,
47
+ } })), subtitle &&
57
48
  (typeof subtitle === "string" ? (jsx("span", { className: cn(theme.subtitleStyle), children: subtitle })) : (subtitle))] }));
58
49
  });
59
50
  KPI.displayName = "KPI";
@@ -3,9 +3,9 @@ import { semanticBgColors } from '../../../utils/colorUtils.js';
3
3
  const kpiTheme = {
4
4
  baseStyle: "flex flex-col gap-3",
5
5
  valueSizes: {
6
- sm: "text-[length:var(--kpi-value-size-sm)] leading-[1.4] font-bold text-[var(--color-text-primary)]",
7
- md: "text-[length:var(--kpi-value-size-md)] leading-[1.333] font-bold text-[var(--color-text-primary)]",
8
- lg: "text-[length:var(--kpi-value-size-lg)] leading-[1.2] font-bold text-[var(--color-text-primary)]",
6
+ sm: "text-[length:var(--kpi-value-size-sm)]/[var(--kpi-value-line-height-sm)] font-bold text-[var(--color-text-primary)]",
7
+ md: "text-[length:var(--kpi-value-size-md)]/[var(--kpi-value-line-height-md)] font-bold text-[var(--color-text-primary)]",
8
+ lg: "text-[length:var(--kpi-value-size-lg)]/[var(--kpi-value-line-height-lg)] font-bold text-[var(--color-text-primary)]",
9
9
  },
10
10
  labelStyle: "text-[var(--color-text-primary)] font-medium",
11
11
  labelSizes: {
@@ -23,7 +23,11 @@ const kpiTheme = {
23
23
  },
24
24
  barFilledColors: {
25
25
  ...semanticBgColors,
26
- mono: "bg-[var(--color-text-secondary)]",
26
+ // The gray role, not a text token (§8: never paint a fill with --color-text-*).
27
+ // These bars carry no text, so they take the role's own weight rather than a
28
+ // -contrast pairing; --color-mono is the mono token that flips per mode
29
+ // (900 light / 200 dark), which a fixed ramp rung would not.
30
+ mono: "bg-[var(--color-mono)]",
27
31
  },
28
32
  barEmptyColor: "bg-[var(--color-surface-sunken)]",
29
33
  barSizes: {
@@ -10,7 +10,7 @@ const metricTheme = {
10
10
  // --card-radius with its own --metric-radius (same "rounded-[...]" utility
11
11
  // group, so this wins via source order) rather than inheriting Card's
12
12
  // radius verbatim.
13
- baseStyle: "transition-colors duration-200 rounded-[var(--metric-radius)]",
13
+ baseStyle: "transition-colors duration-[var(--motion-duration-base)] rounded-[var(--metric-radius)]",
14
14
  // Visual style variants — container surface + structure.
15
15
  // `filled` adds nothing: it inherits the Card shell's --color-surface-raised.
16
16
  // `ghost` clears that fill (`!` beats Card's bg utility regardless of
@@ -54,9 +54,9 @@ const metricTheme = {
54
54
  // arbitrary text-[...] syntax is ambiguous between color/font-size and a
55
55
  // bare var() resolves to color, silently no-oping the size change.
56
56
  valueSizes: {
57
- sm: "text-[length:var(--metric-value-size-sm)] leading-[1.4]",
58
- md: "text-[length:var(--metric-value-size-md)] leading-[1.2]",
59
- lg: "text-[length:var(--metric-value-size-lg)] leading-[1.2]",
57
+ sm: "text-[length:var(--metric-value-size-sm)]/[var(--metric-value-line-height-sm)]",
58
+ md: "text-[length:var(--metric-value-size-md)]/[var(--metric-value-line-height-md)]",
59
+ lg: "text-[length:var(--metric-value-size-lg)]/[var(--metric-value-line-height-lg)]",
60
60
  },
61
61
  subtitleSizes: { sm: "text-xs mt-1", md: "text-xs mt-0.5", lg: "text-sm mt-1" },
62
62
  // Common element styles
@@ -45,7 +45,7 @@ const tableTheme = {
45
45
  // <tr> (inset shadow) so a shifted cell can't drag a notch into it.
46
46
  "[&>tbody>tr>td]:border-b-0 " +
47
47
  "[&>tbody>tr]:shadow-[inset_0_-1px_0_0_var(--color-border)] [&>tbody>tr:last-child]:shadow-none " +
48
- "[&>tbody>tr>td]:transition-transform [&>tbody>tr>td]:duration-300 " +
48
+ "[&>tbody>tr>td]:transition-transform [&>tbody>tr>td]:duration-[var(--motion-duration-slow)] " +
49
49
  // first cell eases right (its left padding); last cell eases left only when
50
50
  // right-aligned (matches `pr-4` — invisible on left-aligned content).
51
51
  "[&>tbody>tr:hover>td:first-child]:translate-x-2 " +
@@ -60,7 +60,7 @@ const tableTheme = {
60
60
  "text-[var(--color-text-primary)] ",
61
61
  // Row styles — hover and layout only (borders moved to cells)
62
62
  // Light: neutral-50 hover | Dark: neutral-800 hover
63
- rowStyle: "group transition-all duration-300 relative " +
63
+ rowStyle: "group transition-all duration-[var(--motion-duration-slow)] relative " +
64
64
  "hover:bg-[var(--color-mono-50)] " +
65
65
  "dark:hover:bg-[var(--color-surface-hover)]",
66
66
  // Selected row styles — background is applied per-cell (in TableCell) so that
@@ -5,7 +5,6 @@ import '../../core/Popover/PopoverContext.js';
5
5
  import '../../core/Popover/PopoverBody.js';
6
6
  import { Gear } from '@phosphor-icons/react';
7
7
  import { Button } from '../../core/Button/Button.js';
8
- import 'react';
9
8
  import { Checkbox } from '../../forms/Checkbox/Checkbox.js';
10
9
  import { Sortable, SortableItem } from '../../core/Sortable/Sortable.js';
11
10
 
@@ -19,7 +18,7 @@ function TableColumnManagerComponent({ columns, visibleColumns, columnOrder, onT
19
18
  const displayName = typeof column.header === 'string' ? column.header : column.id;
20
19
  return (jsx(Checkbox, { id: `column-checkbox-${column.id}`, name: `column-${column.id}`, value: column.id, checked: isVisible, onChange: () => onToggleColumn(column.id), "aria-label": `Toggle visibility for ${displayName} column`, label: displayName, state: isLocked ? 'disabled' : 'default' }));
21
20
  };
22
- return (jsxs(Popover, { placement: "bottom-end", offset: 8, children: [jsx(Popover.Trigger, { children: jsxs(Button, { color: "mono", variant: "filled", "aria-label": "Manage column visibility", children: [jsx(Gear, { className: "size-5", "aria-hidden": "true" }), "Manage Columns"] }) }), jsx(Popover.Body, { className: "p-0", children: jsxs("div", { className: "w-64 p-3 overflow-hidden", role: "dialog", "aria-labelledby": "column-manager-title", "aria-describedby": "column-manager-description", "aria-modal": "true", children: [jsx("div", { id: "column-manager-title", className: "text-sm uppercase font-bold mb-3 text-[var(--color-text-placeholder)]", children: "Manage Columns" }), jsx("div", { id: "column-manager-description", className: "sr-only", children: "Use checkboxes to control which columns are visible in the table. Locked columns cannot be hidden." }), jsx("div", { className: "space-y-0.5", role: "group", "aria-label": "Column visibility options", children: onColumnReorder ? (jsx(Sortable, { onReorder: onColumnReorder, showDragHandle: true, className: "space-y-0.5", children: orderedColumns.map((column) => (jsx(SortableItem, { id: column.id, disabled: column.locked === true, className: `hover:bg-[var(--color-surface-hover)] rounded-lg p-1.5 transition-colors ${column.locked ? 'bg-[var(--color-background-secondary)]' : ''}`, children: renderColumnItem(column) }, column.id))) })) : (orderedColumns.map((column) => (jsx("div", { className: `hover:bg-[var(--color-surface-hover)] rounded-lg p-1.5 transition-colors ${column.locked ? 'bg-[var(--color-background-secondary)]' : ''}`, children: renderColumnItem(column) }, column.id)))) }), jsx("div", { className: "mt-3 flex justify-end", children: jsx(Button, { color: "mono", variant: "filled", className: "w-full", onClick: onResetToDefault, children: "Reset to Default" }) })] }) })] }));
21
+ return (jsxs(Popover, { placement: "bottom-end", offset: 8, children: [jsx(Popover.Trigger, { children: jsxs(Button, { color: "mono", variant: "filled", "aria-label": "Manage column visibility", children: [jsx(Gear, { className: "size-5", "aria-hidden": "true" }), "Manage Columns"] }) }), jsx(Popover.Body, { className: "p-0", children: jsxs("div", { className: "w-64 p-3 overflow-hidden", role: "dialog", "aria-labelledby": "column-manager-title", "aria-describedby": "column-manager-description", "aria-modal": "true", children: [jsx("div", { id: "column-manager-title", className: "text-sm uppercase font-bold mb-3 text-[var(--color-text-placeholder)]", children: "Manage Columns" }), jsx("div", { id: "column-manager-description", className: "sr-only", children: "Use checkboxes to control which columns are visible in the table. Locked columns cannot be hidden." }), jsx("div", { className: "space-y-0.5", role: "group", "aria-label": "Column visibility options", children: onColumnReorder ? (jsx(Sortable, { onReorder: onColumnReorder, showDragHandle: true, className: "space-y-0.5", children: orderedColumns.map((column) => (jsx(SortableItem, { id: column.id, disabled: column.locked === true, className: `hover:bg-[var(--color-surface-hover)] rounded-lg p-1.5 transition-colors ${column.locked ? 'bg-[var(--color-surface)]' : ''}`, children: renderColumnItem(column) }, column.id))) })) : (orderedColumns.map((column) => (jsx("div", { className: `hover:bg-[var(--color-surface-hover)] rounded-lg p-1.5 transition-colors ${column.locked ? 'bg-[var(--color-surface)]' : ''}`, children: renderColumnItem(column) }, column.id)))) }), jsx("div", { className: "mt-3 flex justify-end", children: jsx(Button, { color: "mono", variant: "filled", className: "w-full", onClick: onResetToDefault, children: "Reset to Default" }) })] }) })] }));
23
22
  }
24
23
  const TableColumnManager = TableColumnManagerComponent;
25
24
 
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext } from 'react';
2
3
  import { tableTheme } from './Table.theme.js';
3
4
 
@@ -35,7 +35,11 @@ function FilterValueInput({ filter, column, filterType, onValueChange, }) {
35
35
  label: opt.label,
36
36
  value: opt.value,
37
37
  }));
38
- return (jsx(Select, { value: filter.value, onChange: (value) => onValueChange(value), options: selectOptions, size: "sm", className: "flex-1 min-w-0", placeholder: "Select..." }));
38
+ return (jsx(Select, {
39
+ // Options are SelectOption<string>, so only a string is selectable here;
40
+ // FilterValue is wider (number | boolean | string[]) and those states
41
+ // simply mean "nothing selected" for this control.
42
+ value: typeof filter.value === "string" ? filter.value : undefined, onChange: (value) => onValueChange(value), options: selectOptions, size: "sm", className: "flex-1 min-w-0", placeholder: "Select..." }));
39
43
  }
40
44
  // MultiSelect filter type
41
45
  if (filterType === "multiSelect" && (column === null || column === void 0 ? void 0 : column.filterOptions)) {
@@ -44,7 +48,10 @@ function FilterValueInput({ filter, column, filterType, onValueChange, }) {
44
48
  label: opt.label,
45
49
  value: opt.value,
46
50
  }));
47
- return (jsx(Select, { value: filter.value, onChange: (value) => onValueChange(value), options: selectOptions, size: "sm", className: "flex-1 min-w-0", placeholder: "Select...", multiple: true }));
51
+ return (jsx(Select, {
52
+ // `multiple` makes the value an array; FilterValue is wider than that,
53
+ // so narrow rather than letting a scalar reach a multi-select.
54
+ value: Array.isArray(filter.value) ? filter.value : [], onChange: (value) => onValueChange(value), options: selectOptions, size: "sm", className: "flex-1 min-w-0", placeholder: "Select...", multiple: true }));
48
55
  }
49
56
  // Date filter type
50
57
  if (filterType === "date") {
@@ -2,9 +2,9 @@
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { X } from '@phosphor-icons/react';
4
4
  import { Button } from '../../core/Button/Button.js';
5
- import 'react';
6
5
  import { Link } from '../../core/Link/Link.js';
7
6
  import { cn } from '../../../utils/cn.js';
7
+ import 'react';
8
8
 
9
9
  /**
10
10
  * Selection header that appears when rows are selected
@@ -18,7 +18,7 @@ const timelineTheme = {
18
18
  // Completed connector color (overrides the base connector background)
19
19
  connectorCompletedStyle: "bg-[var(--color-success)]",
20
20
  // Marker base styles (shared across statuses)
21
- markerStyle: "relative z-10 flex items-center justify-center shrink-0 rounded-full border-2 transition-colors duration-200 ring-4 ring-[var(--color-surface)] backdrop-blur-sm",
21
+ markerStyle: "relative z-10 flex items-center justify-center shrink-0 rounded-full border-2 transition-colors duration-[var(--motion-duration-base)] ring-4 ring-[var(--color-surface)] backdrop-blur-sm",
22
22
  // Marker status-specific styles
23
23
  markerStatuses: {
24
24
  completed: "size-8 bg-[var(--color-success)] border-[var(--color-success)] text-[var(--color-success-contrast)]",
@@ -27,7 +27,7 @@ export declare const CustomCursorProvider: React.ForwardRefExoticComponent<Omit<
27
27
  * @example
28
28
  * ```tsx
29
29
  * <CustomCursor size="md" color="primary" variant="glass">
30
- * <PaperAirplaneIcon />
30
+ * <PaperPlaneTilt />
31
31
  * </CustomCursor>
32
32
  * ```
33
33
  */
@@ -122,7 +122,7 @@ CustomCursorProvider.displayName = "CustomCursorProvider";
122
122
  * @example
123
123
  * ```tsx
124
124
  * <CustomCursor size="md" color="primary" variant="glass">
125
- * <PaperAirplaneIcon />
125
+ * <PaperPlaneTilt />
126
126
  * </CustomCursor>
127
127
  * ```
128
128
  */
@@ -4,13 +4,13 @@
4
4
  */
5
5
  const customCursorTheme = {
6
6
  baseStyle: "pointer-events-none z-[9999] absolute transform-[translate(-50%,-50%)]",
7
- cursorStyle: "transition-transform duration-150",
7
+ cursorStyle: "transition-transform duration-[var(--motion-duration-fast)]",
8
8
  cursorFollowVariants: {
9
- default: "rounded-[var(--radius-base)] bg-white dark:bg-[var(--color-background-secondary)] shadow-lg border border-[var(--color-border)] px-3 py-2 text-sm text-[var(--color-text-primary)]",
9
+ default: "rounded-[var(--radius-base)] bg-white dark:bg-[var(--color-surface)] shadow-lg border border-[var(--color-border)] px-3 py-2 text-sm text-[var(--color-text-primary)]",
10
10
  user: "flex items-center gap-2 rounded-full pl-1 pr-3 py-1 shadow-xl",
11
11
  },
12
12
  cursorFollowColors: {
13
- mono: "bg-[var(--color-background-secondary)]",
13
+ mono: "bg-[var(--color-surface)]",
14
14
  dark: "bg-[var(--color-text-primary)]",
15
15
  primary: "bg-[var(--color-primary)]",
16
16
  success: "bg-[var(--color-success)]",
@@ -23,7 +23,7 @@ const customCursorTheme = {
23
23
  lg: "w-10 h-10",
24
24
  },
25
25
  colors: {
26
- mono: "text-[var(--color-background-secondary)]",
26
+ mono: "text-[var(--color-surface)]",
27
27
  dark: "text-[var(--color-text-primary)]",
28
28
  primary: "text-[var(--color-primary)]",
29
29
  success: "text-[var(--color-success)]",
@@ -5,7 +5,7 @@ import { cn } from '../../../utils/cn.js';
5
5
  import 'react';
6
6
 
7
7
  function InsetCircleButton({ children, size = 44, className, classNameDisc, classNameHover, onClick, }) {
8
- return (jsx("div", { className: cn("neu-circle-groove group shrink-0 cursor-pointer bg-neutral-200/80 dark:bg-neutral-900", className), style: { width: size, height: size }, onClick: onClick, children: jsxs(motion.div, { className: cn("neu-circle-disc bg-linear-to-br from-neutral-100 to-neutral-300 dark:from-neutral-700 dark:to-neutral-900", classNameDisc), whileHover: { scale: 1 }, whileTap: { scale: 0.975 }, transition: { type: "spring", stiffness: 200, damping: 20 }, children: [jsx("div", { className: cn("absolute inset-0 rounded-full bg-linear-to-br from-neutral-300 to-neutral-200 dark:from-neutral-900 dark:to-neutral-700 opacity-0 group-hover:opacity-100 transition-opacity duration-300", classNameHover) }), jsx("div", { className: "relative z-2", children: children })] }) }));
8
+ return (jsx("div", { className: cn("neu-circle-groove group shrink-0 cursor-pointer bg-neutral-200/80 dark:bg-neutral-900", className), style: { width: size, height: size }, onClick: onClick, children: jsxs(motion.div, { className: cn("neu-circle-disc bg-linear-to-br from-neutral-100 to-neutral-300 dark:from-neutral-700 dark:to-neutral-900", classNameDisc), whileHover: { scale: 1 }, whileTap: { scale: 0.975 }, transition: { type: "spring", stiffness: 200, damping: 20 }, children: [jsx("div", { className: cn("absolute inset-0 rounded-full bg-linear-to-br from-neutral-300 to-neutral-200 dark:from-neutral-900 dark:to-neutral-700 opacity-0 group-hover:opacity-100 transition-opacity duration-[var(--motion-duration-slow)]", classNameHover) }), jsx("div", { className: "relative z-2", children: children })] }) }));
9
9
  }
10
10
 
11
11
  export { InsetCircleButton };
@@ -157,15 +157,19 @@ const Overlay = React__default.forwardRef(({ isOpen, onClose, closeOnOverlayClic
157
157
  unlockScroll();
158
158
  hasLockedScroll.current = false;
159
159
  }
160
- }, children: isOpen && (jsxs(motion.div, { className: cn(isDarkMode && "dark", overlayTheme.backdrop, overlayPositionVariants[position], overlayClassName), onClick: handleOverlayClick, variants: finalOverlayAnimations, initial: "initial", animate: "animate", exit: "exit", transition: instantTransition, children: [jsx("div", { className: overlayTheme.pattern, style: {
160
+ }, children: isOpen && (jsxs(motion.div, { className: cn(overlayTheme.backdrop, overlayPositionVariants[position], overlayClassName), onClick: handleOverlayClick, variants: finalOverlayAnimations, initial: "initial", animate: "animate", exit: "exit", transition: instantTransition, children: [jsx("div", { className: overlayTheme.pattern, style: {
161
161
  backgroundImage: "radial-gradient(circle, rgba(250,250,250,0.08) 1.5px, transparent 1.5px)",
162
162
  backgroundSize: "30px 30px",
163
163
  maskImage: "radial-gradient(ellipse at center, black 0%, transparent 70%)",
164
164
  WebkitMaskImage: "radial-gradient(ellipse at center, black 0%, transparent 70%)",
165
- } }), jsx(motion.div, { ref: mergedRef, className: cn(overlayTheme.content, contentClassName), style: contentStyle, variants: finalContentAnimations, initial: "initial", animate: "animate", exit: "exit", transition: instantTransition, onClick: (e) => e.stopPropagation(), ...(role ? { role } : {}), ...(ariaModal ? { "aria-modal": true } : {}), ...(ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : {}), ...(ariaDescribedBy
165
+ } }), jsx(motion.div, { ref: mergedRef, className: cn(overlayTheme.content, contentClassName), style: contentStyle, variants: finalContentAnimations,
166
+ // Inherit the parent's variant label so backdrop and panel form one
167
+ // coordinated animation tree. Explicit controls here would opt the
168
+ // panel out of the parent's enter/exit orchestration.
169
+ transition: instantTransition, onClick: (e) => e.stopPropagation(), ...(role ? { role } : {}), ...(ariaModal ? { "aria-modal": true } : {}), ...(ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : {}), ...(ariaDescribedBy
166
170
  ? { "aria-describedby": ariaDescribedBy }
167
171
  : {}), children: children })] })) }));
168
- return createPortal(content, target);
172
+ return createPortal(jsx("div", { "data-flikkui-portal": "", className: isDarkMode ? "dark" : undefined, children: content }), target);
169
173
  });
170
174
  Overlay.displayName = "Overlay";
171
175
 
@@ -1,21 +1,13 @@
1
1
  export { CustomCursorProvider, CustomCursor, CustomCursorFollow, useCustomCursor } from "./CustomCursor";
2
2
  export type { CustomCursorProps, CustomCursorProviderProps, CustomCursorFollowProps, CustomCursorContextType, CustomCursorSize, CustomCursorColor, CustomCursorVariant, CustomCursorShape, CustomCursorTheme, CustomCursorThemeOverrides, } from "./CustomCursor";
3
- export { GlassEffect } from "./GlassEffect";
4
- export type { GlassEffectProps, BlendMode } from "./GlassEffect";
5
3
  export { Overlay } from "./Overlay";
6
4
  export type { OverlayProps, OverlayPosition, OverlayAnimations, } from "./Overlay";
7
- export { GlassSurface } from "./GlassSurface";
8
- export type { GlassSurfaceProps, GlassChannel, GlassMixBlendMode, } from "./GlassSurface";
9
5
  export { Animated } from "./Animated";
10
6
  export type { AnimatedGroupProps, AnimatedItemProps, AnimationPreset, AnimatedElement, } from "./Animated";
11
7
  export { ProgressiveBlur } from "./ProgressiveBlur";
12
8
  export type { ProgressiveBlurProps, ProgressiveBlurPosition, ProgressiveBlurThemeOverrides, } from "./ProgressiveBlur";
13
9
  export { Aurora } from "./Aurora";
14
10
  export type { AuroraProps } from "./Aurora";
15
- export { MagneticElement } from "./MagneticElement";
16
- export type { MagneticElementProps } from "./MagneticElement";
17
- export { GridPattern } from "./GridPattern";
18
- export type { GridPatternProps, GridPatternFadeDirection, } from "./GridPattern";
19
11
  export { DotPattern } from "./DotPattern";
20
12
  export type { DotPatternProps, DotPatternFadeDirection, } from "./DotPattern";
21
13
  export { StripePattern } from "./StripePattern";
@@ -45,35 +37,11 @@ export { Dithering } from "./Dithering";
45
37
  export type { DitheringProps, DitheringShape, DitheringType } from "./Dithering";
46
38
  export { GradientMesh } from "./GradientMesh";
47
39
  export type { GradientMeshProps } from "./GradientMesh";
48
- export { StaticGradientMesh } from "./StaticGradientMesh";
49
- export type { StaticGradientMeshProps } from "./StaticGradientMesh";
50
40
  export { StaticRadialGradient } from "./StaticRadialGradient";
51
41
  export type { StaticRadialGradientProps } from "./StaticRadialGradient";
52
- export { Metaballs } from "./Metaballs";
53
- export type { MetaballsProps } from "./Metaballs";
54
- export { ColorPanels } from "./ColorPanels";
55
- export type { ColorPanelsProps } from "./ColorPanels";
56
- export { SmokeRing } from "./SmokeRing";
57
- export type { SmokeRingProps } from "./SmokeRing";
58
- export { GodRays } from "./GodRays";
59
- export type { GodRaysProps } from "./GodRays";
60
42
  export { GrainGradient } from "./GrainGradient";
61
43
  export type { GrainGradientProps, GrainGradientShape } from "./GrainGradient";
62
- export { PulsingBorder } from "./PulsingBorder";
63
- export type { PulsingBorderProps } from "./PulsingBorder";
64
44
  export { LiquidMetal } from "./LiquidMetal";
65
45
  export type { LiquidMetalProps, LiquidMetalShape } from "./LiquidMetal";
66
46
  export { GemSmoke } from "./GemSmoke";
67
47
  export type { GemSmokeProps, GemSmokeShape } from "./GemSmoke";
68
- export { Water } from "./Water";
69
- export type { WaterProps } from "./Water";
70
- export { ImageDithering } from "./ImageDithering";
71
- export type { ImageDitheringProps, ImageDitheringType } from "./ImageDithering";
72
- export { PaperTexture } from "./PaperTexture";
73
- export type { PaperTextureProps } from "./PaperTexture";
74
- export { FlutedGlass } from "./FlutedGlass";
75
- export type { FlutedGlassProps, FlutedGlassShape, FlutedGlassDistortionShape, } from "./FlutedGlass";
76
- export { HalftoneDots } from "./HalftoneDots";
77
- export type { HalftoneDotsProps, HalftoneDotsType, HalftoneDotsGrid, } from "./HalftoneDots";
78
- export { HalftoneCmyk } from "./HalftoneCmyk";
79
- export type { HalftoneCmykProps } from "./HalftoneCmyk";
@@ -1,12 +1,8 @@
1
1
  export { CustomCursor, CustomCursorFollow, CustomCursorProvider, useCustomCursor } from './CustomCursor/CustomCursor.js';
2
- export { GlassEffect } from './GlassEffect/GlassEffect.js';
3
2
  export { Overlay } from './Overlay/Overlay.js';
4
- export { GlassSurface } from './GlassSurface/GlassSurface.js';
5
3
  export { Animated } from './Animated/Animated.js';
6
4
  export { ProgressiveBlur } from './ProgressiveBlur/ProgressiveBlur.js';
7
5
  export { Aurora } from './Aurora/Aurora.js';
8
- export { MagneticElement } from './MagneticElement/MagneticElement.js';
9
- export { GridPattern } from './GridPattern/GridPattern.js';
10
6
  export { DotPattern } from './DotPattern/DotPattern.js';
11
7
  export { StripePattern } from './StripePattern/StripePattern.js';
12
8
  export { NoiseOverlay } from './NoiseOverlay/NoiseOverlay.js';
@@ -23,19 +19,7 @@ export { DEFAULT_MESH_COLORS, MESH_PALETTES, getMeshTextTone, pickPalette } from
23
19
  export { Shimmer } from './Shimmer/Shimmer.js';
24
20
  export { Dithering } from './Dithering/Dithering.js';
25
21
  export { GradientMesh } from './GradientMesh/GradientMesh.js';
26
- export { StaticGradientMesh } from './StaticGradientMesh/StaticGradientMesh.js';
27
22
  export { StaticRadialGradient } from './StaticRadialGradient/StaticRadialGradient.js';
28
- export { Metaballs } from './Metaballs/Metaballs.js';
29
- export { ColorPanels } from './ColorPanels/ColorPanels.js';
30
- export { SmokeRing } from './SmokeRing/SmokeRing.js';
31
- export { GodRays } from './GodRays/GodRays.js';
32
23
  export { GrainGradient } from './GrainGradient/GrainGradient.js';
33
- export { PulsingBorder } from './PulsingBorder/PulsingBorder.js';
34
24
  export { LiquidMetal } from './LiquidMetal/LiquidMetal.js';
35
25
  export { GemSmoke } from './GemSmoke/GemSmoke.js';
36
- export { Water } from './Water/Water.js';
37
- export { ImageDithering } from './ImageDithering/ImageDithering.js';
38
- export { PaperTexture } from './PaperTexture/PaperTexture.js';
39
- export { FlutedGlass } from './FlutedGlass/FlutedGlass.js';
40
- export { HalftoneDots } from './HalftoneDots/HalftoneDots.js';
41
- export { HalftoneCmyk } from './HalftoneCmyk/HalftoneCmyk.js';
@@ -4,8 +4,6 @@ import type { ShaderCanvasProps } from "./ShaderCanvas.types";
4
4
  * Minimal raw WebGL2 canvas renderer for fullscreen fragment shaders.
5
5
  * - Built-in uniforms: iTime (float), iResolution (vec2)
6
6
  * - Custom uniforms read from `uniformsRef` each frame (no stale closures)
7
- * - Optional sampler2D uniforms read from `texturesRef` (image loading,
8
- * texture upload, mipmaps, transparent-pixel placeholder while unset/loading)
9
7
  * - ResizeObserver for responsive canvas sizing
10
8
  * - rAF animation loop, paused while the tab is hidden, with cleanup on unmount
11
9
  * - Graceful degradation: renders nothing if WebGL2 unavailable