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

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 (762) hide show
  1. package/CHANGELOG.md +1184 -0
  2. package/dist/components/ai/CodeBlock/CodeBlock.js +21 -4
  3. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +0 -1
  4. package/dist/components/ai/CodeBlock/CodeBlock.types.d.ts +0 -2
  5. package/dist/components/ai/CodeBlock/LanguageIcon.js +1 -0
  6. package/dist/components/ai/PromptInput/PromptInput.js +13 -9
  7. package/dist/components/ai/PromptInput/PromptInput.theme.js +19 -2
  8. package/dist/components/ai/PromptInput/VoiceRecorder.d.ts +1 -0
  9. package/dist/components/ai/PromptInput/VoiceRecorder.js +154 -7
  10. package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.js +1 -0
  11. package/dist/components/ai/StreamingResponse/AnimatedText.js +1 -0
  12. package/dist/components/ai/StreamingResponse/ErrorDisplay.js +1 -0
  13. package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +1 -0
  14. package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
  15. package/dist/components/ai/StreamingResponse/StreamingCursor.js +14 -3
  16. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +2 -2
  17. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +17 -11
  18. package/dist/components/ai/StreamingResponse/StreamingResponse.js +3 -3
  19. package/dist/components/ai/StreamingResponse/WordAnimationContext.js +3 -1
  20. package/dist/components/ai/TokenCounter/TokenCounter.js +1 -0
  21. package/dist/components/ai/index.d.ts +2 -2
  22. package/dist/components/ai/index.js +4 -5
  23. package/dist/components/canvas/Background.js +3 -2
  24. package/dist/components/canvas/CanvasToolbar.js +3 -2
  25. package/dist/components/canvas/Edge.d.ts +2 -5
  26. package/dist/components/canvas/Edge.js +18 -2
  27. package/dist/components/canvas/EdgeLayer.d.ts +2 -1
  28. package/dist/components/canvas/EdgeLayer.js +20 -10
  29. package/dist/components/canvas/Handle.js +3 -2
  30. package/dist/components/canvas/MiniMap.js +1 -0
  31. package/dist/components/canvas/NodeCanvas.js +19 -15
  32. package/dist/components/canvas/NodeCanvas.types.d.ts +5 -1
  33. package/dist/components/canvas/NodeControls.js +3 -2
  34. package/dist/components/canvas/NodeRenderer.d.ts +4 -1
  35. package/dist/components/canvas/NodeRenderer.js +18 -9
  36. package/dist/components/canvas/changes.test.d.ts +1 -0
  37. package/dist/components/canvas/context/CanvasContext.d.ts +10 -1
  38. package/dist/components/canvas/context/CanvasContext.js +27 -7
  39. package/dist/components/canvas/context/ConnectionContext.js +1 -0
  40. package/dist/components/canvas/context/HandleRegistry.js +1 -0
  41. package/dist/components/canvas/context/InteractionContext.js +1 -0
  42. package/dist/components/canvas/context/NodeIdContext.js +1 -0
  43. package/dist/components/canvas/hooks/useConnection.js +1 -0
  44. package/dist/components/canvas/hooks/useMarquee.js +1 -0
  45. package/dist/components/canvas/hooks/useNodeDrag.js +3 -2
  46. package/dist/components/canvas/hooks/usePanZoom.js +7 -1
  47. package/dist/components/canvas/hooks/useViewport.js +1 -0
  48. package/dist/components/canvas/layout.test.d.ts +1 -0
  49. package/dist/components/canvas/utils.test.d.ts +1 -0
  50. package/dist/components/charts/ActivityRings/ActivityRings.js +28 -17
  51. package/dist/components/charts/ActivityRings/ActivityRings.types.d.ts +2 -3
  52. package/dist/components/charts/ActivityRings/ActivityRings.types.js +2 -1
  53. package/dist/components/charts/AreaChart/AreaChart.js +170 -157
  54. package/dist/components/charts/BarChart/BarChart.js +114 -124
  55. package/dist/components/charts/ChartContainer.d.ts +7 -0
  56. package/dist/components/charts/ChartContainer.js +10 -7
  57. package/dist/components/charts/{shared/BarRenderer → ComboChart}/BarRenderer.d.ts +3 -1
  58. package/dist/components/charts/{shared/BarRenderer → ComboChart}/BarRenderer.js +137 -102
  59. package/dist/components/charts/{shared/BarRenderer → ComboChart}/BarRenderer.types.d.ts +17 -5
  60. package/dist/components/charts/ComboChart/ComboChart.js +26 -9
  61. package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
  62. package/dist/components/charts/ComboChart/ComboChart.types.js +4 -0
  63. package/dist/components/charts/ComboChart/ComboChartCanvas.d.ts +98 -0
  64. package/dist/components/charts/{shared/ChartContainer/ChartContainer.js → ComboChart/ComboChartCanvas.js} +41 -44
  65. package/dist/components/charts/{shared/ChartContainer/ChartContainer.types.d.ts → ComboChart/ComboChartCanvas.types.d.ts} +23 -3
  66. package/dist/components/charts/{shared/LineRenderer → ComboChart}/LineRenderer.d.ts +3 -1
  67. package/dist/components/charts/{shared/LineRenderer → ComboChart}/LineRenderer.js +27 -14
  68. package/dist/components/charts/{shared/LineRenderer → ComboChart}/LineRenderer.types.d.ts +11 -5
  69. package/dist/components/charts/DonutChart/DonutChart.js +2 -1
  70. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.js +8 -22
  71. package/dist/components/charts/DonutChart/donut-utils.js +1 -0
  72. package/dist/components/charts/FunnelChart/FunnelChart.animations.js +1 -48
  73. package/dist/components/charts/FunnelChart/FunnelChart.d.ts +3 -4
  74. package/dist/components/charts/FunnelChart/FunnelChart.js +306 -358
  75. package/dist/components/charts/Heatmap/Heatmap.js +29 -36
  76. package/dist/components/charts/Heatmap/HeatmapCell.js +1 -0
  77. package/dist/components/charts/LineChart/LineChart.js +163 -132
  78. package/dist/components/charts/LineChart/LineChart.types.d.ts +1 -1
  79. package/dist/components/charts/RadarChart/RadarChart.js +10 -2
  80. package/dist/components/charts/RadarChart/RadarChart.theme.js +0 -8
  81. package/dist/components/charts/RadarChart/RadarChart.types.d.ts +0 -8
  82. package/dist/components/charts/ScatterPlot/ScatterPlot.js +12 -3
  83. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -4
  84. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -5
  85. package/dist/components/charts/StackedBarChart/StackedBarChart.js +79 -42
  86. package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
  87. package/dist/components/charts/StackedBarChart/StackedBarChart.types.js +3 -0
  88. package/dist/components/charts/hooks/index.d.ts +1 -1
  89. package/dist/components/charts/hooks/useChartAccessibility.js +1 -0
  90. package/dist/components/charts/hooks/useChartDimensions.js +1 -0
  91. package/dist/components/charts/hooks/useChartScales.js +1 -1
  92. package/dist/components/charts/hooks/useChartTheme.js +1 -0
  93. package/dist/components/charts/hooks/useChartValidation.d.ts +0 -8
  94. package/dist/components/charts/hooks/useChartValidation.js +1 -0
  95. package/dist/components/charts/hooks/useTooltipPosition.js +1 -0
  96. package/dist/components/charts/index.d.ts +3 -3
  97. package/dist/components/charts/index.js +1 -3
  98. package/dist/components/charts/shared/ChartCrosshair/ChartCrosshair.js +5 -12
  99. package/dist/components/charts/shared/ChartErrorBoundary/ChartErrorBoundary.js +1 -0
  100. package/dist/components/charts/shared/ChartLegend/ChartLegend.d.ts +5 -2
  101. package/dist/components/charts/shared/ChartLegend/ChartLegend.js +15 -22
  102. package/dist/components/charts/shared/ChartLegend/ChartLegend.types.d.ts +6 -23
  103. package/dist/components/charts/shared/ChartLegend/index.d.ts +2 -3
  104. package/dist/components/charts/shared/ChartMarker/ChartMarker.js +1 -0
  105. package/dist/components/charts/shared/ChartText/ChartText.js +1 -0
  106. package/dist/components/charts/shared/ChartTooltip/ChartTooltip.js +4 -13
  107. package/dist/components/charts/shared/index.d.ts +0 -7
  108. package/dist/components/charts/theme/chart.theme.js +6 -0
  109. package/dist/components/charts/types/chart.types.d.ts +15 -0
  110. package/dist/components/charts/utils/animation-utils.d.ts +95 -0
  111. package/dist/components/charts/utils/animation-utils.js +150 -2
  112. package/dist/components/charts/utils/bar-emphasis.d.ts +80 -0
  113. package/dist/components/charts/utils/bar-emphasis.js +69 -0
  114. package/dist/components/charts/utils/chart-validation.js +7 -0
  115. package/dist/components/core/Accordion/Accordion.d.ts +3 -3
  116. package/dist/components/core/Accordion/Accordion.js +21 -17
  117. package/dist/components/core/Accordion/Accordion.types.d.ts +35 -1
  118. package/dist/components/core/Accordion/AccordionBody.js +2 -1
  119. package/dist/components/core/Accordion/AccordionContext.d.ts +3 -0
  120. package/dist/components/core/Accordion/AccordionContext.js +15 -0
  121. package/dist/components/core/Accordion/AccordionItem.js +12 -8
  122. package/dist/components/core/Accordion/AccordionTrigger.js +7 -4
  123. package/dist/components/core/Accordion/index.d.ts +2 -2
  124. package/dist/components/core/Alert/Alert.animations.js +1 -0
  125. package/dist/components/core/Alert/Alert.js +4 -4
  126. package/dist/components/core/Alert/Alert.theme.js +0 -5
  127. package/dist/components/core/Alert/Alert.types.d.ts +0 -8
  128. package/dist/components/core/Alert/index.d.ts +1 -1
  129. package/dist/components/core/AlertDialog/AlertDialog.js +15 -1
  130. package/dist/components/core/Avatar/Avatar.js +58 -14
  131. package/dist/components/core/Avatar/Avatar.types.d.ts +26 -1
  132. package/dist/components/core/AvatarGroup/AvatarGroup.animations.js +1 -0
  133. package/dist/components/core/AvatarGroup/AvatarGroup.js +1 -0
  134. package/dist/components/core/Badge/Badge.animations.js +1 -0
  135. package/dist/components/core/Badge/Badge.js +6 -6
  136. package/dist/components/core/Badge/Badge.theme.js +32 -28
  137. package/dist/components/core/Badge/Badge.types.d.ts +12 -1
  138. package/dist/components/core/Breadcrumbs/Breadcrumbs.js +8 -2
  139. package/dist/components/core/Button/Button.js +23 -17
  140. package/dist/components/core/Button/Button.ripple.js +1 -4
  141. package/dist/components/core/Button/Button.theme.d.ts +0 -2
  142. package/dist/components/core/Button/Button.theme.js +16 -92
  143. package/dist/components/core/Button/Button.types.d.ts +5 -6
  144. package/dist/components/core/Calendar/Calendar.animations.js +1 -0
  145. package/dist/components/core/Calendar/Calendar.js +87 -4
  146. package/dist/components/core/Calendar/CalendarMini/CalendarMini.animations.js +1 -0
  147. package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +3 -1
  148. package/dist/components/core/Card/Card.js +9 -2
  149. package/dist/components/core/Card/Card.theme.js +3 -1
  150. package/dist/components/core/Card/Card.types.d.ts +8 -0
  151. package/dist/components/core/CardStack/CardStack.js +1 -0
  152. package/dist/components/core/Carousel/Carousel.js +1 -0
  153. package/dist/components/core/Carousel/CarouselBody.js +5 -2
  154. package/dist/components/core/Carousel/CarouselContext.js +1 -0
  155. package/dist/components/core/Carousel/CarouselNext.js +1 -0
  156. package/dist/components/core/Carousel/CarouselPrevious.js +1 -0
  157. package/dist/components/core/CommandPalette/CommandItem.js +1 -0
  158. package/dist/components/core/CommandPalette/CommandPalette.animations.js +1 -0
  159. package/dist/components/core/CommandPalette/CommandPalette.js +55 -11
  160. package/dist/components/core/CommandPalette/CommandPalette.theme.js +3 -1
  161. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +8 -0
  162. package/dist/components/core/ContextMenu/ContextMenu.js +27 -5
  163. package/dist/components/core/ContextMenu/ContextMenu.theme.js +8 -7
  164. package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +17 -0
  165. package/dist/components/core/ContextMenu/ContextMenuBody.js +11 -5
  166. package/dist/components/core/ContextMenu/ContextMenuContext.js +1 -0
  167. package/dist/components/core/ContextMenu/ContextMenuItem.js +17 -7
  168. package/dist/components/core/ContextMenu/ContextMenuLabel.js +1 -0
  169. package/dist/components/core/ContextMenu/ContextMenuSeparator.js +1 -0
  170. package/dist/components/core/ContextMenu/ContextMenuSub.js +4 -3
  171. package/dist/components/core/ContextMenu/ContextMenuSubBody.js +7 -3
  172. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +3 -2
  173. package/dist/components/core/ContextMenu/ContextMenuTrigger.js +8 -0
  174. package/dist/components/core/DotSeparator/DotSeparator.js +1 -0
  175. package/dist/components/core/DragDrop/DragDrop.js +50 -31
  176. package/dist/components/core/Drawer/Drawer.animations.js +9 -8
  177. package/dist/components/core/Drawer/Drawer.d.ts +3 -3
  178. package/dist/components/core/Drawer/Drawer.js +14 -15
  179. package/dist/components/core/Drawer/Drawer.theme.js +8 -6
  180. package/dist/components/core/Drawer/Drawer.types.d.ts +8 -0
  181. package/dist/components/core/Drawer/DrawerBody.js +2 -1
  182. package/dist/components/core/Drawer/DrawerContext.d.ts +3 -0
  183. package/dist/components/core/Drawer/DrawerContext.js +15 -0
  184. package/dist/components/core/Drawer/DrawerFooter.js +2 -1
  185. package/dist/components/core/Drawer/DrawerHeader.js +3 -2
  186. package/dist/components/core/Drawer/DrawerSubtitle.js +2 -1
  187. package/dist/components/core/Drawer/DrawerTitle.js +2 -1
  188. package/dist/components/core/Dropdown/Dropdown.js +23 -9
  189. package/dist/components/core/Dropdown/Dropdown.theme.js +4 -3
  190. package/dist/components/core/Dropdown/Dropdown.types.d.ts +8 -0
  191. package/dist/components/core/Dropdown/DropdownContext.js +1 -0
  192. package/dist/components/core/Dropdown/DropdownItem.js +1 -0
  193. package/dist/components/core/Dropdown/DropdownMenu.js +22 -22
  194. package/dist/components/core/Dropdown/DropdownSection.js +1 -0
  195. package/dist/components/core/Dropdown/DropdownSeparator.js +1 -0
  196. package/dist/components/core/Dropdown/DropdownTrigger.js +21 -1
  197. package/dist/components/core/HeroCard/HeroCard.js +1 -0
  198. package/dist/components/core/HeroCard/HeroCard.theme.js +1 -1
  199. package/dist/components/core/ImagePlaceholder/ImagePlaceholder.js +11 -2
  200. package/dist/components/core/ImagePlaceholder/ImagePlaceholder.theme.js +2 -2
  201. package/dist/components/core/Link/Link.d.ts +1 -1
  202. package/dist/components/core/Link/Link.js +58 -29
  203. package/dist/components/core/Link/Link.types.d.ts +25 -8
  204. package/dist/components/core/Masonry/Masonry.js +87 -75
  205. package/dist/components/core/Masonry/Masonry.theme.js +10 -4
  206. package/dist/components/core/MenuItem/MenuItem.js +17 -1
  207. package/dist/components/core/MenuItem/MenuItem.theme.js +6 -2
  208. package/dist/components/core/Message/Message.js +2 -1
  209. package/dist/components/core/Message/MessageActions.js +1 -0
  210. package/dist/components/core/Message/MessageAudio.js +2 -1
  211. package/dist/components/core/Message/MessageAvatar.js +1 -0
  212. package/dist/components/core/Message/MessageBody.js +1 -0
  213. package/dist/components/core/Message/MessageContext.js +1 -0
  214. package/dist/components/core/Message/MessageFile.js +1 -0
  215. package/dist/components/core/Message/MessageImage.js +1 -0
  216. package/dist/components/core/Message/MessageList.js +1 -0
  217. package/dist/components/core/Message/MessageReactions.js +1 -0
  218. package/dist/components/core/Message/MessageStatusIndicator.js +3 -2
  219. package/dist/components/core/Message/MessageTimestamp.js +1 -0
  220. package/dist/components/core/Message/TypeWriter.d.ts +1 -1
  221. package/dist/components/core/Message/TypeWriter.js +74 -9
  222. package/dist/components/core/Modal/Modal.animations.d.ts +1 -1
  223. package/dist/components/core/Modal/Modal.animations.js +10 -25
  224. package/dist/components/core/Modal/Modal.d.ts +3 -5
  225. package/dist/components/core/Modal/Modal.js +15 -15
  226. package/dist/components/core/Modal/Modal.theme.js +7 -5
  227. package/dist/components/core/Modal/Modal.types.d.ts +8 -0
  228. package/dist/components/core/Modal/ModalBody.js +2 -1
  229. package/dist/components/core/Modal/ModalContext.d.ts +3 -0
  230. package/dist/components/core/Modal/ModalContext.js +16 -0
  231. package/dist/components/core/Modal/ModalFooter.js +3 -2
  232. package/dist/components/core/Modal/ModalHeader.js +3 -2
  233. package/dist/components/core/Modal/ModalSubtitle.js +2 -1
  234. package/dist/components/core/Modal/ModalTitle.js +2 -1
  235. package/dist/components/core/ModalStack/ModalStack.animations.js +1 -0
  236. package/dist/components/core/ModalStack/ModalStack.js +2 -1
  237. package/dist/components/core/ModalStack/ModalStackModal.js +18 -10
  238. package/dist/components/core/NavItem/NavItem.js +15 -3
  239. package/dist/components/core/OfflineIndicator/OfflineIndicator.js +1 -0
  240. package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +1 -1
  241. package/dist/components/core/PageHeading/PageHeading.js +8 -3
  242. package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
  243. package/dist/components/core/PageHeading/PageHeading.types.d.ts +12 -1
  244. package/dist/components/core/PageHeading/PageHeadingBackButton.js +3 -2
  245. package/dist/components/core/Pagination/Pagination.js +8 -2
  246. package/dist/components/core/Pagination/Pagination.theme.d.ts +2 -10
  247. package/dist/components/core/Pagination/Pagination.types.d.ts +11 -1
  248. package/dist/components/core/Pill/Pill.animations.js +2 -11
  249. package/dist/components/core/Pill/Pill.js +14 -5
  250. package/dist/components/core/Pill/Pill.theme.js +8 -8
  251. package/dist/components/core/Popover/Popover.js +6 -5
  252. package/dist/components/core/Popover/Popover.theme.js +4 -2
  253. package/dist/components/core/Popover/Popover.types.d.ts +8 -0
  254. package/dist/components/core/Popover/PopoverBody.js +19 -21
  255. package/dist/components/core/Popover/PopoverContext.js +1 -0
  256. package/dist/components/core/Popover/PopoverTrigger.js +1 -0
  257. package/dist/components/core/Progress/Progress.js +1 -0
  258. package/dist/components/core/Rating/Rating.js +13 -5
  259. package/dist/components/core/ScrollArea/ScrollArea.js +1 -0
  260. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +1 -0
  261. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +14 -3
  262. package/dist/components/core/ScrollArea/smooth/SnapPointDetector.js +1 -0
  263. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +1 -0
  264. package/dist/components/core/Segmented/Segmented.js +3 -2
  265. package/dist/components/core/Segmented/SegmentedItem.js +2 -1
  266. package/dist/components/core/Separator/Separator.js +1 -0
  267. package/dist/components/core/Sidebar/Sidebar.js +1 -0
  268. package/dist/components/core/Sidebar/SidebarCard.js +1 -0
  269. package/dist/components/core/Sidebar/SidebarContent.js +1 -0
  270. package/dist/components/core/Sidebar/SidebarContext.js +1 -0
  271. package/dist/components/core/Sidebar/SidebarFooter.js +1 -0
  272. package/dist/components/core/Sidebar/SidebarHeader.js +1 -0
  273. package/dist/components/core/Sidebar/SidebarLogo.js +1 -0
  274. package/dist/components/core/Sidebar/SidebarMobileTrigger.js +1 -0
  275. package/dist/components/core/Sidebar/SidebarNav.js +3 -1
  276. package/dist/components/core/Sidebar/SidebarNavGroup.js +1 -0
  277. package/dist/components/core/Sidebar/SidebarSearch.js +1 -0
  278. package/dist/components/core/Sidebar/SidebarToggle.js +1 -0
  279. package/dist/components/core/Sidebar/SidebarUserProfile.js +1 -0
  280. package/dist/components/core/SlidingNumber/SlidingNumber.js +3 -1
  281. package/dist/components/core/Sortable/Sortable.animations.js +1 -0
  282. package/dist/components/core/Sortable/Sortable.js +1 -0
  283. package/dist/components/core/Spinner/Spinner.js +1 -0
  284. package/dist/components/core/Tabs/Tabs.animations.js +1 -0
  285. package/dist/components/core/Tabs/Tabs.js +1 -0
  286. package/dist/components/core/Tabs/Tabs.theme.js +3 -3
  287. package/dist/components/core/Tabs/TabsBody.js +1 -0
  288. package/dist/components/core/Tabs/TabsContext.js +1 -0
  289. package/dist/components/core/Tabs/TabsList.js +1 -0
  290. package/dist/components/core/Tabs/TabsTrigger.js +34 -10
  291. package/dist/components/core/Tag/Tag.js +2 -1
  292. package/dist/components/core/Tag/Tag.theme.js +2 -2
  293. package/dist/components/core/Toast/Toast.animations.d.ts +3 -2
  294. package/dist/components/core/Toast/Toast.animations.js +20 -17
  295. package/dist/components/core/Toast/Toast.js +42 -20
  296. package/dist/components/core/Toast/Toast.theme.js +5 -8
  297. package/dist/components/core/Toast/Toast.types.d.ts +30 -20
  298. package/dist/components/core/Toast/ToastProvider.js +5 -1
  299. package/dist/components/core/Toast/index.d.ts +1 -1
  300. package/dist/components/core/Toast/useToast.js +5 -6
  301. package/dist/components/core/Tooltip/Tooltip.animations.js +19 -53
  302. package/dist/components/core/Tooltip/Tooltip.d.ts +1 -1
  303. package/dist/components/core/Tooltip/Tooltip.js +39 -18
  304. package/dist/components/core/Tooltip/Tooltip.theme.js +4 -2
  305. package/dist/components/core/Tooltip/Tooltip.types.d.ts +8 -0
  306. package/dist/components/core/Tree/Tree.animations.d.ts +1 -2
  307. package/dist/components/core/Tree/Tree.animations.js +20 -58
  308. package/dist/components/core/Tree/Tree.js +7 -5
  309. package/dist/components/data-display/DescriptionList/DescriptionList.js +1 -0
  310. package/dist/components/data-display/Feed/Feed.js +1 -0
  311. package/dist/components/data-display/GanttChart/GanttChart.d.ts +2 -3
  312. package/dist/components/data-display/GanttChart/GanttChart.js +5 -21
  313. package/dist/components/data-display/GanttChart/GanttChartContext.d.ts +5 -0
  314. package/dist/components/data-display/GanttChart/GanttChartContext.js +26 -0
  315. package/dist/components/data-display/GanttChart/GanttChartPanel.js +2 -1
  316. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +2 -1
  317. package/dist/components/data-display/GanttChart/GanttGroupBar.js +2 -1
  318. package/dist/components/data-display/GanttChart/GanttMilestone.js +2 -1
  319. package/dist/components/data-display/GanttChart/GanttSplitter.js +2 -1
  320. package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +2 -1
  321. package/dist/components/data-display/GanttChart/GanttTableHeader.js +2 -1
  322. package/dist/components/data-display/GanttChart/GanttTablePanel.js +2 -1
  323. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -1
  324. package/dist/components/data-display/GanttChart/GanttTaskBar.js +2 -1
  325. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +2 -1
  326. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
  327. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +2 -1
  328. package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -1
  329. package/dist/components/data-display/GanttChart/hooks/useGanttDates.js +1 -0
  330. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +1 -0
  331. package/dist/components/data-display/GanttChart/hooks/useGanttLayout.js +1 -0
  332. package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.js +1 -0
  333. package/dist/components/data-display/KPI/KPI.js +1 -0
  334. package/dist/components/data-display/Metric/Metric.js +2 -2
  335. package/dist/components/data-display/Metric/Metric.theme.js +2 -14
  336. package/dist/components/data-display/Metric/Metric.types.d.ts +1 -3
  337. package/dist/components/data-display/Table/Table.animations.js +1 -0
  338. package/dist/components/data-display/Table/Table.d.ts +2 -7
  339. package/dist/components/data-display/Table/Table.js +14 -14
  340. package/dist/components/data-display/Table/Table.types.d.ts +2 -0
  341. package/dist/components/data-display/Table/TableActions.js +3 -2
  342. package/dist/components/data-display/Table/TableActionsMenu.js +1 -0
  343. package/dist/components/data-display/Table/TableBody.js +1 -0
  344. package/dist/components/data-display/Table/TableCell.d.ts +1 -1
  345. package/dist/components/data-display/Table/TableCell.js +8 -3
  346. package/dist/components/data-display/Table/TableColumnManager.js +1 -0
  347. package/dist/components/data-display/Table/TableContext.d.ts +11 -0
  348. package/dist/components/data-display/Table/TableContext.js +21 -0
  349. package/dist/components/data-display/Table/TableDeclarative.js +3 -2
  350. package/dist/components/data-display/Table/TableFilter.js +9 -5
  351. package/dist/components/data-display/Table/TableHeader.js +2 -1
  352. package/dist/components/data-display/Table/TablePagination.js +1 -0
  353. package/dist/components/data-display/Table/TableRow.js +1 -0
  354. package/dist/components/data-display/Table/TableSelectionHeader.js +4 -2
  355. package/dist/components/data-display/Table/hooks/useTableColumns.js +1 -0
  356. package/dist/components/data-display/Table/hooks/useTableExpansion.js +1 -0
  357. package/dist/components/data-display/Table/hooks/useTableFilter.js +1 -0
  358. package/dist/components/data-display/Table/hooks/useTablePagination.js +1 -0
  359. package/dist/components/data-display/Table/hooks/useTableSelection.js +1 -0
  360. package/dist/components/data-display/Table/index.js +1 -2
  361. package/dist/components/data-display/Timeline/Timeline.animations.js +1 -0
  362. package/dist/components/data-display/Timeline/Timeline.d.ts +2 -2
  363. package/dist/components/data-display/Timeline/Timeline.js +5 -10
  364. package/dist/components/data-display/Timeline/Timeline.theme.d.ts +2 -24
  365. package/dist/components/data-display/Timeline/Timeline.types.d.ts +25 -1
  366. package/dist/components/data-display/Timeline/TimelineContent.js +2 -1
  367. package/dist/components/data-display/Timeline/TimelineContext.d.ts +3 -0
  368. package/dist/components/data-display/Timeline/TimelineContext.js +16 -0
  369. package/dist/components/data-display/Timeline/TimelineItem.js +5 -4
  370. package/dist/components/data-display/Timeline/TimelineMarker.js +2 -1
  371. package/dist/components/effects/AIOrb/hooks/useOrbState.js +1 -0
  372. package/dist/components/effects/AIOrb/variants/Aura/Aura.js +13 -4
  373. package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.d.ts +7 -0
  374. package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.impl.d.ts +3 -0
  375. package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.impl.js +176 -0
  376. package/dist/components/effects/AIOrb/variants/DotSphere/DotSphere.js +29 -161
  377. package/dist/components/effects/AIOrb/variants/Liquid/Liquid.d.ts +8 -0
  378. package/dist/components/effects/AIOrb/variants/Liquid/Liquid.impl.d.ts +3 -0
  379. package/dist/components/effects/AIOrb/variants/Liquid/Liquid.impl.js +140 -0
  380. package/dist/components/effects/AIOrb/variants/Liquid/Liquid.js +29 -127
  381. package/dist/components/effects/Animated/Animated.d.ts +2 -2
  382. package/dist/components/effects/Animated/Animated.js +5 -6
  383. package/dist/components/effects/Animated/AnimatedContext.d.ts +3 -0
  384. package/dist/components/effects/Animated/AnimatedContext.js +12 -0
  385. package/dist/components/effects/Animated/AnimatedItem.js +2 -1
  386. package/dist/components/effects/Aurora/Aurora.js +27 -5
  387. package/dist/components/effects/ColorPanels/ColorPanels.d.ts +8 -0
  388. package/dist/components/effects/ColorPanels/ColorPanels.js +66 -0
  389. package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +12 -0
  390. package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +218 -0
  391. package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +29 -0
  392. package/dist/components/effects/ColorPanels/ColorPanels.types.js +3 -0
  393. package/dist/components/effects/ColorPanels/index.d.ts +2 -0
  394. package/dist/components/effects/CustomCursor/CustomCursor.js +1 -0
  395. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +0 -2
  396. package/dist/components/effects/Dithering/Dithering.d.ts +10 -0
  397. package/dist/components/effects/Dithering/Dithering.js +62 -0
  398. package/dist/components/effects/Dithering/Dithering.shaders.d.ts +11 -0
  399. package/dist/components/effects/Dithering/Dithering.shaders.js +166 -0
  400. package/dist/components/effects/Dithering/Dithering.types.d.ts +31 -0
  401. package/dist/components/effects/Dithering/Dithering.types.js +17 -0
  402. package/dist/components/effects/Dithering/index.d.ts +3 -0
  403. package/dist/components/effects/DotPattern/DotPattern.js +1 -0
  404. package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +9 -0
  405. package/dist/components/effects/FlutedGlass/FlutedGlass.js +80 -0
  406. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +12 -0
  407. package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +335 -0
  408. package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +61 -0
  409. package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +16 -0
  410. package/dist/components/effects/FlutedGlass/index.d.ts +3 -0
  411. package/dist/components/effects/GemSmoke/GemSmoke.d.ts +8 -0
  412. package/dist/components/effects/GemSmoke/GemSmoke.js +70 -0
  413. package/dist/components/effects/GemSmoke/GemSmoke.shaders.d.ts +18 -0
  414. package/dist/components/effects/GemSmoke/GemSmoke.shaders.js +181 -0
  415. package/dist/components/effects/GemSmoke/GemSmoke.types.d.ts +37 -0
  416. package/dist/components/effects/GemSmoke/GemSmoke.types.js +10 -0
  417. package/dist/components/effects/GemSmoke/index.d.ts +3 -0
  418. package/dist/components/effects/GlassEffect/GlassEffect.js +1 -1
  419. package/dist/components/effects/GlassSurface/GlassSurface.js +2 -16
  420. package/dist/components/effects/GodRays/GodRays.d.ts +8 -0
  421. package/dist/components/effects/GodRays/GodRays.js +68 -0
  422. package/dist/components/effects/GodRays/GodRays.shaders.d.ts +10 -0
  423. package/dist/components/effects/GodRays/GodRays.shaders.js +128 -0
  424. package/dist/components/effects/GodRays/GodRays.types.d.ts +25 -0
  425. package/dist/components/effects/GodRays/GodRays.types.js +3 -0
  426. package/dist/components/effects/GodRays/index.d.ts +2 -0
  427. package/dist/components/effects/GradientMesh/GradientMesh.d.ts +9 -0
  428. package/dist/components/effects/GradientMesh/GradientMesh.js +56 -0
  429. package/dist/components/effects/GradientMesh/GradientMesh.shaders.d.ts +15 -0
  430. package/dist/components/effects/GradientMesh/GradientMesh.shaders.js +127 -0
  431. package/dist/components/effects/GradientMesh/GradientMesh.types.d.ts +17 -0
  432. package/dist/components/effects/GradientMesh/GradientMesh.types.js +3 -0
  433. package/dist/components/effects/GradientMesh/index.d.ts +2 -0
  434. package/dist/components/effects/GrainGradient/GrainGradient.d.ts +9 -0
  435. package/dist/components/effects/GrainGradient/GrainGradient.js +62 -0
  436. package/dist/components/effects/GrainGradient/GrainGradient.shaders.d.ts +17 -0
  437. package/dist/components/effects/GrainGradient/GrainGradient.shaders.js +168 -0
  438. package/dist/components/effects/GrainGradient/GrainGradient.types.d.ts +26 -0
  439. package/dist/components/effects/GrainGradient/GrainGradient.types.js +9 -0
  440. package/dist/components/effects/GrainGradient/index.d.ts +3 -0
  441. package/dist/components/effects/GridPattern/GridPattern.js +1 -0
  442. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +10 -0
  443. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +78 -0
  444. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +22 -0
  445. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +239 -0
  446. package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +52 -0
  447. package/dist/components/effects/HalftoneCmyk/index.d.ts +2 -0
  448. package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +9 -0
  449. package/dist/components/effects/HalftoneDots/HalftoneDots.js +68 -0
  450. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +13 -0
  451. package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +296 -0
  452. package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +43 -0
  453. package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +12 -0
  454. package/dist/components/effects/HalftoneDots/index.d.ts +3 -0
  455. package/dist/components/effects/ImageDithering/ImageDithering.d.ts +9 -0
  456. package/dist/components/effects/ImageDithering/ImageDithering.js +68 -0
  457. package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +12 -0
  458. package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +117 -0
  459. package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +30 -0
  460. package/dist/components/effects/ImageDithering/ImageDithering.types.js +8 -0
  461. package/dist/components/effects/ImageDithering/index.d.ts +3 -0
  462. package/dist/components/effects/InteractiveCharacters/InteractiveCharacters.js +1 -0
  463. package/dist/components/effects/InteractiveCharacters/characters/BlobCharacter.js +1 -0
  464. package/dist/components/effects/InteractiveCharacters/characters/SmallCharacter.js +1 -0
  465. package/dist/components/effects/InteractiveCharacters/characters/TallCharacter.js +1 -0
  466. package/dist/components/effects/InteractiveCharacters/hooks/useBlink.js +1 -0
  467. package/dist/components/effects/InteractiveCharacters/hooks/useIdleAnimation.js +1 -0
  468. package/dist/components/effects/InteractiveCharacters/hooks/useMouseTracking.js +1 -0
  469. package/dist/components/effects/LiquidMetal/LiquidMetal.d.ts +9 -0
  470. package/dist/components/effects/LiquidMetal/LiquidMetal.js +61 -0
  471. package/dist/components/effects/LiquidMetal/LiquidMetal.shaders.d.ts +19 -0
  472. package/dist/components/effects/LiquidMetal/LiquidMetal.shaders.js +202 -0
  473. package/dist/components/effects/LiquidMetal/LiquidMetal.types.d.ts +34 -0
  474. package/dist/components/effects/LiquidMetal/LiquidMetal.types.js +9 -0
  475. package/dist/components/effects/LiquidMetal/index.d.ts +3 -0
  476. package/dist/components/effects/MagneticElement/MagneticElement.js +1 -0
  477. package/dist/components/effects/MeshGradient/MeshGradient.d.ts +25 -0
  478. package/dist/components/effects/MeshGradient/MeshGradient.js +47 -0
  479. package/dist/components/effects/MeshGradient/MeshGradient.types.d.ts +40 -0
  480. package/dist/components/effects/MeshGradient/MeshGradient.utils.d.ts +83 -0
  481. package/dist/components/effects/MeshGradient/MeshGradient.utils.js +112 -0
  482. package/dist/components/effects/MeshGradient/index.d.ts +4 -0
  483. package/dist/components/effects/Metaballs/Metaballs.d.ts +8 -0
  484. package/dist/components/effects/Metaballs/Metaballs.js +59 -0
  485. package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +10 -0
  486. package/dist/components/effects/Metaballs/Metaballs.shaders.js +102 -0
  487. package/dist/components/effects/Metaballs/Metaballs.types.d.ts +16 -0
  488. package/dist/components/effects/Metaballs/Metaballs.types.js +3 -0
  489. package/dist/components/effects/Metaballs/index.d.ts +2 -0
  490. package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -0
  491. package/dist/components/effects/Neumorphic/InsetPill.js +1 -0
  492. package/dist/components/effects/NoiseOverlay/NoiseOverlay.js +1 -0
  493. package/dist/components/effects/Overlay/Overlay.js +1 -0
  494. package/dist/components/effects/PaperTexture/PaperTexture.d.ts +9 -0
  495. package/dist/components/effects/PaperTexture/PaperTexture.js +61 -0
  496. package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +22 -0
  497. package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +145 -0
  498. package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +19 -0
  499. package/dist/components/effects/PaperTexture/index.d.ts +2 -0
  500. package/dist/components/effects/Particles/Particles.js +1 -0
  501. package/dist/components/effects/Particles/Particles.scene.js +1 -0
  502. package/dist/components/effects/Preloader/Preloader.js +1 -0
  503. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +1 -0
  504. package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +27 -0
  505. package/dist/components/effects/PulsingBorder/PulsingBorder.js +174 -0
  506. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +14 -0
  507. package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +258 -0
  508. package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +75 -0
  509. package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +3 -0
  510. package/dist/components/effects/PulsingBorder/index.d.ts +2 -0
  511. package/dist/components/effects/ScrollReveal/ScrollReveal.js +1 -0
  512. package/dist/components/effects/Shimmer/Shimmer.d.ts +21 -0
  513. package/dist/components/effects/Shimmer/Shimmer.js +44 -0
  514. package/dist/components/effects/Shimmer/Shimmer.types.d.ts +49 -0
  515. package/dist/components/effects/Shimmer/index.d.ts +2 -0
  516. package/dist/components/effects/SmokeRing/SmokeRing.d.ts +8 -0
  517. package/dist/components/effects/SmokeRing/SmokeRing.js +62 -0
  518. package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +14 -0
  519. package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +130 -0
  520. package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +22 -0
  521. package/dist/components/effects/SmokeRing/SmokeRing.types.js +3 -0
  522. package/dist/components/effects/SmokeRing/index.d.ts +2 -0
  523. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +9 -0
  524. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +59 -0
  525. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +14 -0
  526. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +129 -0
  527. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +23 -0
  528. package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +3 -0
  529. package/dist/components/effects/StaticGradientMesh/index.d.ts +2 -0
  530. package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.d.ts +9 -0
  531. package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.js +66 -0
  532. package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.shaders.d.ts +13 -0
  533. package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.shaders.js +169 -0
  534. package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.types.d.ts +29 -0
  535. package/dist/components/effects/StaticRadialGradient/StaticRadialGradient.types.js +3 -0
  536. package/dist/components/effects/StaticRadialGradient/index.d.ts +2 -0
  537. package/dist/components/effects/StripePattern/StripePattern.js +1 -0
  538. package/dist/components/effects/TiltCard/TiltCard.glow.js +1 -0
  539. package/dist/components/effects/TiltCard/TiltCard.js +1 -0
  540. package/dist/components/effects/Water/Water.d.ts +9 -0
  541. package/dist/components/effects/Water/Water.js +65 -0
  542. package/dist/components/effects/Water/Water.shaders.d.ts +11 -0
  543. package/dist/components/effects/Water/Water.shaders.js +123 -0
  544. package/dist/components/effects/Water/Water.types.d.ts +25 -0
  545. package/dist/components/effects/Water/index.d.ts +2 -0
  546. package/dist/components/effects/index.d.ts +40 -0
  547. package/dist/components/effects/index.js +21 -0
  548. package/dist/components/effects/{AIOrb/variants/Aura → shared/ShaderCanvas}/ShaderCanvas.d.ts +4 -8
  549. package/dist/components/effects/{AIOrb/variants/Aura → shared/ShaderCanvas}/ShaderCanvas.js +109 -3
  550. package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +18 -0
  551. package/dist/components/effects/shared/ShaderCanvas/index.d.ts +2 -0
  552. package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +10 -0
  553. package/dist/components/effects/shared/bayerMatrices.glsl.js +44 -0
  554. package/dist/components/effects/shared/imageUV.glsl.d.ts +12 -0
  555. package/dist/components/effects/shared/imageUV.glsl.js +26 -0
  556. package/dist/components/effects/shared/index.d.ts +7 -0
  557. package/dist/components/effects/shared/resolveShaderColor.d.ts +13 -0
  558. package/dist/components/effects/shared/resolveShaderColor.js +62 -0
  559. package/dist/components/effects/shared/resolveShaderColor.test.d.ts +1 -0
  560. package/dist/components/effects/shared/shaderNoise.glsl.d.ts +34 -0
  561. package/dist/components/effects/shared/shaderNoise.glsl.js +84 -0
  562. package/dist/components/forms/Checkbox/Checkbox.animations.js +1 -0
  563. package/dist/components/forms/Checkbox/Checkbox.js +8 -8
  564. package/dist/components/forms/Checkbox/Checkbox.theme.js +5 -4
  565. package/dist/components/forms/Checkbox/CheckboxContext.js +1 -0
  566. package/dist/components/forms/Checkbox/CheckboxGroup.js +4 -1
  567. package/dist/components/forms/ColorPicker/ColorPicker.js +21 -5
  568. package/dist/components/forms/ColorPicker/ColorPicker.types.d.ts +8 -0
  569. package/dist/components/forms/ColorPicker/ColorPicker2DCanvas.js +1 -0
  570. package/dist/components/forms/ColorPicker/ColorPickerBody.js +3 -2
  571. package/dist/components/forms/ColorPicker/ColorPickerContext.js +1 -0
  572. package/dist/components/forms/ColorPicker/ColorPickerEyeDropper.js +1 -0
  573. package/dist/components/forms/ColorPicker/ColorPickerFormatSelector.js +1 -0
  574. package/dist/components/forms/ColorPicker/ColorPickerGradient.js +1 -0
  575. package/dist/components/forms/ColorPicker/ColorPickerHeader.js +1 -0
  576. package/dist/components/forms/ColorPicker/ColorPickerImage.js +1 -0
  577. package/dist/components/forms/ColorPicker/ColorPickerInput.js +1 -0
  578. package/dist/components/forms/ColorPicker/ColorPickerPresets.js +1 -0
  579. package/dist/components/forms/ColorPicker/ColorPickerSavedColors.js +1 -0
  580. package/dist/components/forms/ColorPicker/ColorPickerSliders.js +1 -0
  581. package/dist/components/forms/ColorPicker/ColorPickerSwatch.js +1 -0
  582. package/dist/components/forms/ColorPicker/ColorPickerTrigger.js +17 -2
  583. package/dist/components/forms/Combobox/Combobox.js +81 -37
  584. package/dist/components/forms/Combobox/Combobox.types.d.ts +8 -0
  585. package/dist/components/forms/DatePicker/DatePicker.animations.js +1 -0
  586. package/dist/components/forms/DatePicker/DatePicker.d.ts +3 -27
  587. package/dist/components/forms/DatePicker/DatePicker.js +5 -4
  588. package/dist/components/forms/DatePicker/DatePicker.theme.js +5 -5
  589. package/dist/components/forms/DatePicker/DatePicker.types.d.ts +15 -0
  590. package/dist/components/forms/DatePicker/DatePickerBody.js +26 -21
  591. package/dist/components/forms/DatePicker/DatePickerContext.d.ts +29 -0
  592. package/dist/components/forms/DatePicker/DatePickerContext.js +6 -0
  593. package/dist/components/forms/DatePicker/DatePickerPresets.js +2 -1
  594. package/dist/components/forms/DatePicker/DatePickerTrigger.js +2 -1
  595. package/dist/components/forms/DateRangePicker/DateRangePicker.d.ts +3 -23
  596. package/dist/components/forms/DateRangePicker/DateRangePicker.js +18 -7
  597. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +2 -2
  598. package/dist/components/forms/DateRangePicker/DateRangePicker.types.d.ts +21 -0
  599. package/dist/components/forms/DateRangePicker/DateRangePickerBody.js +18 -13
  600. package/dist/components/forms/DateRangePicker/DateRangePickerContext.d.ts +24 -0
  601. package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +5 -0
  602. package/dist/components/forms/DateRangePicker/DateRangePickerPresets.js +2 -1
  603. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +2 -1
  604. package/dist/components/forms/FileUpload/FileUpload.js +2 -1
  605. package/dist/components/forms/FileUpload/FileUploadProgress.js +4 -3
  606. package/dist/components/forms/Input/Input.js +7 -3
  607. package/dist/components/forms/Input/Input.theme.js +11 -5
  608. package/dist/components/forms/Input/Input.types.d.ts +6 -0
  609. package/dist/components/forms/Input/index.d.ts +1 -0
  610. package/dist/components/forms/Input/inputMasks.d.ts +24 -0
  611. package/dist/components/forms/Input/inputMasks.js +61 -5
  612. package/dist/components/forms/InputAddress/InputAddress.d.ts +5 -0
  613. package/dist/components/forms/InputAddress/InputAddress.js +95 -13
  614. package/dist/components/forms/InputAddress/InputAddress.theme.js +4 -4
  615. package/dist/components/forms/InputAddress/InputAddress.types.d.ts +8 -2
  616. package/dist/components/forms/InputAddress/index.d.ts +1 -1
  617. package/dist/components/forms/InputCounter/InputCounter.js +63 -44
  618. package/dist/components/forms/InputCounter/InputCounter.types.d.ts +6 -0
  619. package/dist/components/forms/InputCreditCard/InputCreditCard.js +9 -3
  620. package/dist/components/forms/InputCreditCard/InputCreditCard.theme.js +4 -4
  621. package/dist/components/forms/InputCreditCard/InputCreditCard.types.d.ts +5 -1
  622. package/dist/components/forms/InputCreditCard/index.d.ts +1 -0
  623. package/dist/components/forms/InputDate/InputDate.js +1 -0
  624. package/dist/components/forms/InputOTP/InputOTP.js +21 -9
  625. package/dist/components/forms/InputOTP/InputOTP.types.d.ts +7 -1
  626. package/dist/components/forms/InputTag/InputTag.js +65 -21
  627. package/dist/components/forms/InputTag/InputTag.theme.js +2 -1
  628. package/dist/components/forms/InputTag/InputTag.types.d.ts +8 -0
  629. package/dist/components/forms/Mention/Mention.js +12 -5
  630. package/dist/components/forms/Mention/Mention.theme.js +2 -1
  631. package/dist/components/forms/Mention/Mention.types.d.ts +8 -0
  632. package/dist/components/forms/Mention/Mention.utils.js +1 -0
  633. package/dist/components/forms/Radio/Radio.animations.js +1 -0
  634. package/dist/components/forms/Radio/Radio.js +5 -1
  635. package/dist/components/forms/Radio/Radio.theme.js +9 -7
  636. package/dist/components/forms/Radio/RadioContext.js +1 -0
  637. package/dist/components/forms/Radio/RadioGroup.js +4 -1
  638. package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +1 -0
  639. package/dist/components/forms/RichTextEditor/RichTextEditor.js +70 -60
  640. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +3 -2
  641. package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +14 -0
  642. package/dist/components/forms/Select/Select.animations.js +17 -25
  643. package/dist/components/forms/Select/Select.d.ts +3 -1
  644. package/dist/components/forms/Select/Select.js +55 -21
  645. package/dist/components/forms/Select/Select.theme.js +2 -2
  646. package/dist/components/forms/Select/Select.types.d.ts +28 -1
  647. package/dist/components/forms/Select/useSelectState.js +7 -0
  648. package/dist/components/forms/SelectableCard/SelectableCard.js +1 -0
  649. package/dist/components/forms/SelectableCard/SelectableCardContext.js +1 -0
  650. package/dist/components/forms/SelectableCard/SelectableCardGroup.js +1 -0
  651. package/dist/components/forms/Signature/Signature.js +13 -3
  652. package/dist/components/forms/Signature/Signature.types.d.ts +6 -0
  653. package/dist/components/forms/Slider/Slider.js +2 -1
  654. package/dist/components/forms/Switch/Switch.js +9 -2
  655. package/dist/components/forms/Switch/Switch.theme.js +5 -3
  656. package/dist/components/forms/Textarea/Textarea.js +7 -3
  657. package/dist/components/forms/Textarea/Textarea.types.d.ts +6 -0
  658. package/dist/components/forms/TimePicker/TimePicker.d.ts +2 -12
  659. package/dist/components/forms/TimePicker/TimePicker.js +8 -5
  660. package/dist/components/forms/TimePicker/TimePicker.theme.js +4 -5
  661. package/dist/components/forms/TimePicker/TimePicker.types.d.ts +15 -0
  662. package/dist/components/forms/TimePicker/TimePickerContent.js +12 -7
  663. package/dist/components/forms/TimePicker/TimePickerContext.d.ts +15 -0
  664. package/dist/components/forms/TimePicker/TimePickerContext.js +6 -0
  665. package/dist/components/forms/TimePicker/TimePickerTrigger.js +18 -4
  666. package/dist/components/forms/TimePicker/WheelColumn.js +1 -0
  667. package/dist/components/forms/TimePicker/useWheelPicker.js +1 -0
  668. package/dist/components/forms/forms.theme.d.ts +1 -0
  669. package/dist/components/forms/forms.theme.js +55 -18
  670. package/dist/components/forms/index.d.ts +1 -0
  671. package/dist/components/forms/index.js +6 -2
  672. package/dist/components/generative/GenerativeView.js +1 -0
  673. package/dist/components/generative/actions.test.d.ts +1 -0
  674. package/dist/components/generative/registry.js +24 -6
  675. package/dist/components/generative/schema.generated.js +450 -35
  676. package/dist/components/generative/streaming.test.d.ts +1 -0
  677. package/dist/components/generative/tools.test.d.ts +1 -0
  678. package/dist/components/generative/useGenerativeStream.js +1 -0
  679. package/dist/components/generative/validate.d.ts +1 -1
  680. package/dist/components/generative/validate.js +121 -29
  681. package/dist/components/generative/validate.test.d.ts +1 -0
  682. package/dist/components/layout/AppShell/AppShell.js +1 -0
  683. package/dist/components/layout/AppShell/AppShellContext.js +1 -0
  684. package/dist/components/layout/AppShell/AppShellMain.js +1 -0
  685. package/dist/components/layout/AppShell/AppShellRightPanel.js +1 -0
  686. package/dist/components/layout/AppShell/AppShellSidebar.js +1 -0
  687. package/dist/components/layout/FormLayout/FormLayout.js +1 -1
  688. package/dist/components/layout/FormLayout/FormLayoutSection.js +1 -0
  689. package/dist/components/layout/Grid/Grid.d.ts +1 -1
  690. package/dist/components/layout/Grid/Grid.js +11 -3
  691. package/dist/components/layout/Grid/Grid.types.d.ts +15 -1
  692. package/dist/components/layout/Grid/index.d.ts +1 -1
  693. package/dist/components/layout/Section/Section.js +1 -0
  694. package/dist/components/layout/Stack/Stack.d.ts +1 -1
  695. package/dist/components/layout/Stack/Stack.js +11 -3
  696. package/dist/components/layout/Stack/Stack.types.d.ts +9 -2
  697. package/dist/components/layout/index.d.ts +0 -1
  698. package/dist/components/layout/index.js +0 -2
  699. package/dist/generative.schema.json +450 -35
  700. package/dist/hooks/useClickOutside.js +1 -0
  701. package/dist/hooks/useDarkMode.js +1 -0
  702. package/dist/hooks/useFocusTrap.js +1 -0
  703. package/dist/hooks/useIsClient.js +1 -0
  704. package/dist/hooks/useMediaQuery.js +1 -0
  705. package/dist/hooks/useNetworkStatus.d.ts +0 -4
  706. package/dist/hooks/useNetworkStatus.js +2 -5
  707. package/dist/hooks/useOverlay.js +1 -0
  708. package/dist/hooks/useScaleBackground.js +1 -0
  709. package/dist/hooks/useSelectPortal.js +1 -0
  710. package/dist/hooks/useSlidingNumber.js +1 -0
  711. package/dist/hooks/useStreamingSSE.d.ts +0 -5
  712. package/dist/hooks/useStreamingSSE.js +1 -5
  713. package/dist/hooks/useTypewriter.js +1 -0
  714. package/dist/index.d.ts +1 -0
  715. package/dist/index.js +189 -180
  716. package/dist/registry.json +1945 -681
  717. package/dist/styles.css +1 -1
  718. package/dist/test/render.d.ts +11 -0
  719. package/dist/test/setup.d.ts +1 -0
  720. package/dist/theme/SurfaceContext.d.ts +98 -0
  721. package/dist/theme/SurfaceContext.js +114 -0
  722. package/dist/theme/ThemeContext.js +19 -0
  723. package/dist/theme/animations.d.ts +75 -0
  724. package/dist/theme/animations.js +132 -0
  725. package/dist/theme/index.d.ts +5 -0
  726. package/dist/tools.json +458 -35
  727. package/dist/utils/actionQueue.d.ts +0 -4
  728. package/dist/utils/actionQueue.js +1 -4
  729. package/dist/utils/cn.js +21 -1
  730. package/dist/utils/colorUtils.d.ts +31 -1
  731. package/dist/utils/colorUtils.js +49 -4
  732. package/dist/utils/dateUtils.js +21 -16
  733. package/dist/utils/index.d.ts +1 -1
  734. package/dist/utils/performanceMonitor.js +1 -0
  735. package/dist/utils/smoothScrollUtils.js +1 -0
  736. package/package.json +23 -5
  737. package/src/global.scss +87 -0
  738. package/src/styles/theme.css +263 -156
  739. package/dist/components/charts/shared/BarRenderer/index.d.ts +0 -3
  740. package/dist/components/charts/shared/ChartContainer/ChartContainer.d.ts +0 -85
  741. package/dist/components/charts/shared/ChartContainer/index.d.ts +0 -3
  742. package/dist/components/charts/shared/ChartLegend/ChartLegendContent.d.ts +0 -7
  743. package/dist/components/charts/shared/ChartLegend/ChartLegendContent.js +0 -18
  744. package/dist/components/charts/shared/LineRenderer/index.d.ts +0 -2
  745. package/dist/components/core/Popover/Popover.animations.js +0 -13
  746. package/dist/components/layout/PageLayout/PageLayout.d.ts +0 -7
  747. package/dist/components/layout/PageLayout/PageLayout.js +0 -51
  748. package/dist/components/layout/PageLayout/PageLayout.theme.d.ts +0 -3
  749. package/dist/components/layout/PageLayout/PageLayout.theme.js +0 -39
  750. package/dist/components/layout/PageLayout/PageLayout.types.d.ts +0 -84
  751. package/dist/components/layout/PageLayout/PageLayoutContent.d.ts +0 -3
  752. package/dist/components/layout/PageLayout/PageLayoutContent.js +0 -14
  753. package/dist/components/layout/PageLayout/PageLayoutHeader.d.ts +0 -3
  754. package/dist/components/layout/PageLayout/PageLayoutHeader.js +0 -12
  755. package/dist/components/layout/PageLayout/PageLayoutSidebar.d.ts +0 -3
  756. package/dist/components/layout/PageLayout/PageLayoutSidebar.js +0 -14
  757. package/dist/components/layout/PageLayout/index.d.ts +0 -3
  758. /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.d.ts +0 -0
  759. /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.theme.d.ts +0 -0
  760. /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.theme.js +0 -0
  761. /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/PromptSuggestion.types.d.ts +0 -0
  762. /package/dist/components/ai/{PromptSuggestions → PromptSuggestion}/index.d.ts +0 -0
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { useRef, useEffect } from 'react';
3
4
 
@@ -10,11 +11,13 @@ void main() {
10
11
  * Minimal raw WebGL2 canvas renderer for fullscreen fragment shaders.
11
12
  * - Built-in uniforms: iTime (float), iResolution (vec2)
12
13
  * - Custom uniforms read from `uniformsRef` each frame (no stale closures)
14
+ * - Optional sampler2D uniforms read from `texturesRef` (image loading,
15
+ * texture upload, mipmaps, transparent-pixel placeholder while unset/loading)
13
16
  * - ResizeObserver for responsive canvas sizing
14
- * - rAF animation loop with cleanup on unmount
17
+ * - rAF animation loop, paused while the tab is hidden, with cleanup on unmount
15
18
  * - Graceful degradation: renders nothing if WebGL2 unavailable
16
19
  */
17
- const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, style, }) => {
20
+ const ShaderCanvas = ({ fragmentShader, uniformsRef, texturesRef, onTextureLoad, maxDpr = 2, className, style, }) => {
18
21
  const canvasRef = useRef(null);
19
22
  useEffect(() => {
20
23
  const canvas = canvasRef.current;
@@ -80,6 +83,81 @@ const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, styl
80
83
  }
81
84
  return (_a = customLocs.get(name)) !== null && _a !== void 0 ? _a : null;
82
85
  };
86
+ // ── Texture uniforms ───────────────────────────────────────────────
87
+ const textureEntries = new Map();
88
+ let nextTextureUnit = 0;
89
+ // Operates on whatever texture is currently bound to TEXTURE_2D — every
90
+ // call site binds the target texture immediately before calling this.
91
+ const configureTexture = () => {
92
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
93
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
94
+ };
95
+ const createPlaceholderTexture = () => {
96
+ const texture = gl.createTexture();
97
+ gl.bindTexture(gl.TEXTURE_2D, texture);
98
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array([0, 0, 0, 0]));
99
+ configureTexture();
100
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
101
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
102
+ return texture;
103
+ };
104
+ const uploadImage = (entry, img, name) => {
105
+ if (hasBeenDisposed)
106
+ return;
107
+ gl.bindTexture(gl.TEXTURE_2D, entry.texture);
108
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
109
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img);
110
+ gl.generateMipmap(gl.TEXTURE_2D);
111
+ configureTexture();
112
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
113
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
114
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
115
+ const naturalWidth = img.naturalWidth || img.width;
116
+ const naturalHeight = img.naturalHeight || img.height;
117
+ if (naturalWidth > 0 && naturalHeight > 0) {
118
+ onTextureLoad === null || onTextureLoad === void 0 ? void 0 : onTextureLoad(name, naturalWidth / naturalHeight);
119
+ }
120
+ };
121
+ const loadTexture = (entry, source, name) => {
122
+ if (typeof source === "string") {
123
+ const img = new Image();
124
+ img.crossOrigin = "anonymous";
125
+ img.onload = () => uploadImage(entry, img, name);
126
+ img.src = source;
127
+ }
128
+ else if (source.complete && source.naturalWidth > 0) {
129
+ uploadImage(entry, source, name);
130
+ }
131
+ else {
132
+ source.addEventListener("load", () => uploadImage(entry, source, name), {
133
+ once: true,
134
+ });
135
+ }
136
+ };
137
+ const syncTextures = () => {
138
+ const sources = texturesRef === null || texturesRef === void 0 ? void 0 : texturesRef.current;
139
+ if (!sources)
140
+ return;
141
+ for (const name in sources) {
142
+ let entry = textureEntries.get(name);
143
+ if (!entry) {
144
+ entry = {
145
+ texture: createPlaceholderTexture(),
146
+ sourceKey: undefined,
147
+ unit: nextTextureUnit++,
148
+ };
149
+ textureEntries.set(name, entry);
150
+ }
151
+ const source = sources[name];
152
+ if (source && source !== entry.sourceKey) {
153
+ entry.sourceKey = source;
154
+ loadTexture(entry, source, name);
155
+ }
156
+ else if (!source) {
157
+ entry.sourceKey = undefined;
158
+ }
159
+ }
160
+ };
83
161
  // ── Resize handling ────────────────────────────────────────────────
84
162
  const dpr = Math.min(window.devicePixelRatio || 1, maxDpr);
85
163
  let width = 0;
@@ -103,9 +181,11 @@ const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, styl
103
181
  gl.enable(gl.BLEND);
104
182
  gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
105
183
  let rafId = 0;
184
+ let hasBeenDisposed = false;
106
185
  const startTime = performance.now();
107
186
  const frame = () => {
108
187
  rafId = requestAnimationFrame(frame);
188
+ syncTextures();
109
189
  const t = (performance.now() - startTime) / 1000;
110
190
  gl.uniform1f(uTime, t);
111
191
  gl.uniform2f(uRes, width, height);
@@ -128,12 +208,38 @@ const ShaderCanvas = ({ fragmentShader, uniformsRef, maxDpr = 2, className, styl
128
208
  gl.uniform4f(loc, val[0], val[1], val[2], val[3]);
129
209
  }
130
210
  }
211
+ // Bind texture uniforms
212
+ for (const [name, entry] of textureEntries) {
213
+ const loc = getCustomLoc(name);
214
+ if (!loc)
215
+ continue;
216
+ gl.activeTexture(gl.TEXTURE0 + entry.unit);
217
+ gl.bindTexture(gl.TEXTURE_2D, entry.texture);
218
+ gl.uniform1i(loc, entry.unit);
219
+ }
131
220
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
132
221
  };
133
- rafId = requestAnimationFrame(frame);
222
+ const handleVisibilityChange = () => {
223
+ if (document.hidden) {
224
+ cancelAnimationFrame(rafId);
225
+ rafId = 0;
226
+ }
227
+ else if (rafId === 0) {
228
+ rafId = requestAnimationFrame(frame);
229
+ }
230
+ };
231
+ if (!document.hidden) {
232
+ rafId = requestAnimationFrame(frame);
233
+ }
234
+ document.addEventListener("visibilitychange", handleVisibilityChange);
134
235
  return () => {
236
+ hasBeenDisposed = true;
237
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
135
238
  cancelAnimationFrame(rafId);
136
239
  observer.disconnect();
240
+ for (const entry of textureEntries.values()) {
241
+ gl.deleteTexture(entry.texture);
242
+ }
137
243
  gl.deleteProgram(program);
138
244
  gl.deleteShader(vs);
139
245
  gl.deleteShader(fs);
@@ -0,0 +1,18 @@
1
+ import type React from "react";
2
+ /** A texture source: a URL to fetch, or an already-available image element. */
3
+ export type ShaderTextureSource = string | HTMLImageElement;
4
+ export interface ShaderCanvasProps {
5
+ fragmentShader: string;
6
+ uniformsRef: React.MutableRefObject<Record<string, number | number[]>>;
7
+ /**
8
+ * Optional sampler2D uniforms, keyed by GLSL uniform name (e.g. "u_image").
9
+ * A key with an `undefined` value binds a 1x1 transparent placeholder so the
10
+ * shader never samples garbage while an image is loading or unset.
11
+ */
12
+ texturesRef?: React.MutableRefObject<Record<string, ShaderTextureSource | undefined>>;
13
+ /** Fires once a texture finishes loading, with its natural aspect ratio (width / height). */
14
+ onTextureLoad?: (name: string, aspectRatio: number) => void;
15
+ maxDpr?: number;
16
+ className?: string;
17
+ style?: React.CSSProperties;
18
+ }
@@ -0,0 +1,2 @@
1
+ export { ShaderCanvas } from "./ShaderCanvas";
2
+ export type { ShaderCanvasProps, ShaderTextureSource } from "./ShaderCanvas.types";
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared ordered-dithering (Bayer matrix) GLSL, adapted from paper-design/shaders'
3
+ * Dithering and ImageDithering fragment shaders
4
+ * (https://github.com/paper-design/shaders, Apache License 2.0). Both effects
5
+ * in this repo (`Dithering`, `ImageDithering`) interpolate this identical
6
+ * lookup-table logic rather than duplicating it.
7
+ *
8
+ * Consume via template-literal interpolation (e.g. `${glslBayerMatrices}`).
9
+ */
10
+ export declare const glslBayerMatrices = "\nconst int bayer2x2[4] = int[4](0, 2, 3, 1);\nconst int bayer4x4[16] = int[16](\n 0, 8, 2, 10,\n 12, 4, 14, 6,\n 3, 11, 1, 9,\n 15, 7, 13, 5\n);\nconst int bayer8x8[64] = int[64](\n 0, 32, 8, 40, 2, 34, 10, 42,\n 48, 16, 56, 24, 50, 18, 58, 26,\n 12, 44, 4, 36, 14, 46, 6, 38,\n 60, 28, 52, 20, 62, 30, 54, 22,\n 3, 35, 11, 43, 1, 33, 9, 41,\n 51, 19, 59, 27, 49, 17, 57, 25,\n 15, 47, 7, 39, 13, 45, 5, 37,\n 63, 31, 55, 23, 61, 29, 53, 21\n);\n\nfloat getBayerValue(vec2 uv, int size) {\n ivec2 pos = ivec2(fract(uv / float(size)) * float(size));\n int index = pos.y * size + pos.x;\n\n if (size == 2) {\n return float(bayer2x2[index]) / 4.0;\n } else if (size == 4) {\n return float(bayer4x4[index]) / 16.0;\n } else if (size == 8) {\n return float(bayer8x8[index]) / 64.0;\n }\n return 0.0;\n}\n";
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Shared ordered-dithering (Bayer matrix) GLSL, adapted from paper-design/shaders'
3
+ * Dithering and ImageDithering fragment shaders
4
+ * (https://github.com/paper-design/shaders, Apache License 2.0). Both effects
5
+ * in this repo (`Dithering`, `ImageDithering`) interpolate this identical
6
+ * lookup-table logic rather than duplicating it.
7
+ *
8
+ * Consume via template-literal interpolation (e.g. `${glslBayerMatrices}`).
9
+ */
10
+ const glslBayerMatrices = `
11
+ const int bayer2x2[4] = int[4](0, 2, 3, 1);
12
+ const int bayer4x4[16] = int[16](
13
+ 0, 8, 2, 10,
14
+ 12, 4, 14, 6,
15
+ 3, 11, 1, 9,
16
+ 15, 7, 13, 5
17
+ );
18
+ const int bayer8x8[64] = int[64](
19
+ 0, 32, 8, 40, 2, 34, 10, 42,
20
+ 48, 16, 56, 24, 50, 18, 58, 26,
21
+ 12, 44, 4, 36, 14, 46, 6, 38,
22
+ 60, 28, 52, 20, 62, 30, 54, 22,
23
+ 3, 35, 11, 43, 1, 33, 9, 41,
24
+ 51, 19, 59, 27, 49, 17, 57, 25,
25
+ 15, 47, 7, 39, 13, 45, 5, 37,
26
+ 63, 31, 55, 23, 61, 29, 53, 21
27
+ );
28
+
29
+ float getBayerValue(vec2 uv, int size) {
30
+ ivec2 pos = ivec2(fract(uv / float(size)) * float(size));
31
+ int index = pos.y * size + pos.x;
32
+
33
+ if (size == 2) {
34
+ return float(bayer2x2[index]) / 4.0;
35
+ } else if (size == 4) {
36
+ return float(bayer4x4[index]) / 16.0;
37
+ } else if (size == 8) {
38
+ return float(bayer8x8[index]) / 64.0;
39
+ }
40
+ return 0.0;
41
+ }
42
+ `;
43
+
44
+ export { glslBayerMatrices };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared "cover fit" image-UV helper for the image-filter effects (Water,
3
+ * ImageDithering, PaperTexture, FlutedGlass, HalftoneDots, HalftoneCmyk).
4
+ * Maps the fullscreen fragment UV to the image's own UV space so the image
5
+ * fills its container edge-to-edge without distortion (matching CSS
6
+ * `object-fit: cover`), given the image's aspect ratio (natural width /
7
+ * natural height) as a uniform. Assumes the fragment UV is
8
+ * `gl_FragCoord.xy / iResolution.xy` and the texture was uploaded with
9
+ * `UNPACK_FLIP_Y_WEBGL = true` (see shared/ShaderCanvas), so this produces a
10
+ * right-side-up sample with no manual Y-flip needed at the call site.
11
+ */
12
+ export declare const glslImageCoverUV = "\nvec2 getImageCoverUV(vec2 fragUV, vec2 resolution, float imageAspectRatio) {\n float containerAspect = resolution.x / resolution.y;\n // Container wider (relative to its height) than the image: sample a\n // narrower vertical slice of the image (crop top/bottom) so it fills the\n // container width with no letterboxing. Container narrower/taller than\n // the image: sample a narrower horizontal slice (crop left/right) instead.\n vec2 scale = containerAspect > imageAspectRatio\n ? vec2(1.0, imageAspectRatio / containerAspect)\n : vec2(containerAspect / imageAspectRatio, 1.0);\n return (fragUV - 0.5) * scale + 0.5;\n}\n";
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared "cover fit" image-UV helper for the image-filter effects (Water,
3
+ * ImageDithering, PaperTexture, FlutedGlass, HalftoneDots, HalftoneCmyk).
4
+ * Maps the fullscreen fragment UV to the image's own UV space so the image
5
+ * fills its container edge-to-edge without distortion (matching CSS
6
+ * `object-fit: cover`), given the image's aspect ratio (natural width /
7
+ * natural height) as a uniform. Assumes the fragment UV is
8
+ * `gl_FragCoord.xy / iResolution.xy` and the texture was uploaded with
9
+ * `UNPACK_FLIP_Y_WEBGL = true` (see shared/ShaderCanvas), so this produces a
10
+ * right-side-up sample with no manual Y-flip needed at the call site.
11
+ */
12
+ const glslImageCoverUV = `
13
+ vec2 getImageCoverUV(vec2 fragUV, vec2 resolution, float imageAspectRatio) {
14
+ float containerAspect = resolution.x / resolution.y;
15
+ // Container wider (relative to its height) than the image: sample a
16
+ // narrower vertical slice of the image (crop top/bottom) so it fills the
17
+ // container width with no letterboxing. Container narrower/taller than
18
+ // the image: sample a narrower horizontal slice (crop left/right) instead.
19
+ vec2 scale = containerAspect > imageAspectRatio
20
+ ? vec2(1.0, imageAspectRatio / containerAspect)
21
+ : vec2(containerAspect / imageAspectRatio, 1.0);
22
+ return (fragUV - 0.5) * scale + 0.5;
23
+ }
24
+ `;
25
+
26
+ export { glslImageCoverUV };
@@ -0,0 +1,7 @@
1
+ export { ShaderCanvas } from "./ShaderCanvas";
2
+ export type { ShaderCanvasProps, ShaderTextureSource } from "./ShaderCanvas";
3
+ export { resolveShaderColor, resolveShaderColors } from "./resolveShaderColor";
4
+ export type { RGBA } from "./resolveShaderColor";
5
+ export { glslHashFloat, glslHashVec2, glslValueNoise, glslSimplexNoise2D, glslSimplexFbm, glslDeclarePI, glslRotate2, } from "./shaderNoise.glsl";
6
+ export { glslBayerMatrices } from "./bayerMatrices.glsl";
7
+ export { glslImageCoverUV } from "./imageUV.glsl";
@@ -0,0 +1,13 @@
1
+ /** Normalized RGBA color as 0-1 floats, suitable for a WebGL uniform. */
2
+ export type RGBA = [number, number, number, number];
3
+ /**
4
+ * Resolves any valid CSS color string — hex, rgb()/rgba(), oklch(), named
5
+ * colors, or a `var(--custom-property)` reference (including FlikkUI theme
6
+ * tokens defined on :root/.dark) — to a normalized [r, g, b, a] float array
7
+ * (0-1) suitable for a WebGL uniform. Client-only; must be called after
8
+ * mount, never at module scope (SSR safety, CLAUDE.md §11). Returns
9
+ * `fallback` if the string can't be resolved (e.g. during SSR).
10
+ */
11
+ export declare function resolveShaderColor(colorStr: string, fallback?: RGBA): RGBA;
12
+ /** Resolves an array of colors in one pass, reusing a single probe element. */
13
+ export declare function resolveShaderColors(colorStrs: string[], fallback?: RGBA): RGBA[];
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ const DEFAULT_FALLBACK = [0.5, 0.5, 0.5, 1];
3
+ let probeEl = null;
4
+ let probeCtx;
5
+ function getProbeEl() {
6
+ if (!probeEl) {
7
+ probeEl = document.createElement("span");
8
+ probeEl.style.position = "absolute";
9
+ probeEl.style.width = "0";
10
+ probeEl.style.height = "0";
11
+ probeEl.style.overflow = "hidden";
12
+ probeEl.style.pointerEvents = "none";
13
+ probeEl.setAttribute("aria-hidden", "true");
14
+ }
15
+ return probeEl;
16
+ }
17
+ /** Lazily-created 1x1 canvas used to normalize any CSS color (rgb, hex, named,
18
+ * oklch, lab, color(), etc.) to straight sRGB bytes via getImageData — canvas
19
+ * fillStyle accepts every CSS color syntax and always renders into sRGB,
20
+ * which getComputedStyle's `color` serialization does not reliably do (some
21
+ * browsers echo back oklch()/lab() strings for tokens authored in that space). */
22
+ function getProbeCtx() {
23
+ if (probeCtx === undefined) {
24
+ const canvas = document.createElement("canvas");
25
+ canvas.width = 1;
26
+ canvas.height = 1;
27
+ probeCtx = canvas.getContext("2d", { willReadFrequently: true });
28
+ }
29
+ return probeCtx;
30
+ }
31
+ /**
32
+ * Resolves any valid CSS color string — hex, rgb()/rgba(), oklch(), named
33
+ * colors, or a `var(--custom-property)` reference (including FlikkUI theme
34
+ * tokens defined on :root/.dark) — to a normalized [r, g, b, a] float array
35
+ * (0-1) suitable for a WebGL uniform. Client-only; must be called after
36
+ * mount, never at module scope (SSR safety, CLAUDE.md §11). Returns
37
+ * `fallback` if the string can't be resolved (e.g. during SSR).
38
+ */
39
+ function resolveShaderColor(colorStr, fallback = DEFAULT_FALLBACK) {
40
+ if (typeof document === "undefined")
41
+ return fallback;
42
+ const el = getProbeEl();
43
+ el.style.color = "";
44
+ el.style.color = colorStr;
45
+ document.body.appendChild(el);
46
+ const computed = getComputedStyle(el).color;
47
+ document.body.removeChild(el);
48
+ const ctx = getProbeCtx();
49
+ if (!ctx)
50
+ return fallback;
51
+ ctx.clearRect(0, 0, 1, 1);
52
+ ctx.fillStyle = computed;
53
+ ctx.fillRect(0, 0, 1, 1);
54
+ const [r, g, b, a] = ctx.getImageData(0, 0, 1, 1).data;
55
+ return [r / 255, g / 255, b / 255, a / 255];
56
+ }
57
+ /** Resolves an array of colors in one pass, reusing a single probe element. */
58
+ function resolveShaderColors(colorStrs, fallback = DEFAULT_FALLBACK) {
59
+ return colorStrs.map((c) => resolveShaderColor(c, fallback));
60
+ }
61
+
62
+ export { resolveShaderColor, resolveShaderColors };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Shared GLSL noise primitives, consumed via template-literal interpolation
3
+ * (e.g. `${glslHashFloat}`) inside individual `*.shaders.ts` fragment shader
4
+ * sources. There is no GLSL `#include` mechanism, so consumers must
5
+ * interpolate snippets in dependency order (e.g. glslHashFloat before
6
+ * glslValueNoise, glslSimplexNoise2D before glslSimplexFbm).
7
+ *
8
+ * These pure-hash functions stand in for paper-design/shaders' pre-generated
9
+ * noise-texture sampling (`u_noiseTexture` + `textureRandomizerR`) — a
10
+ * deliberate simplification that removes an entire texture-generation
11
+ * subsystem in exchange for a tiny amount of extra ALU cost per pixel.
12
+ */
13
+ /** Pure-hash pseudo-random float in [0,1) for a vec2 input, no texture lookup.
14
+ * Adapted from paper-design/shaders' DotOrbit/GodRays/SmokeRing fragment
15
+ * shaders (https://github.com/paper-design/shaders, Apache License 2.0). */
16
+ export declare const glslHashFloat = "\nfloat randomR(vec2 st) {\n return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);\n}\n";
17
+ /** Pure-hash pseudo-random vec2, no texture lookup. Same source as glslHashFloat. */
18
+ export declare const glslHashVec2 = "\nvec2 randomGB(vec2 st) {\n return vec2(\n fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123),\n fract(sin(dot(st, vec2(93.9898, 67.345))) * 24634.6345123)\n );\n}\n";
19
+ /** Bilinear-interpolated value noise built on glslHashFloat. Requires
20
+ * glslHashFloat to be interpolated earlier in the same shader source. */
21
+ export declare const glslValueNoise = "\nfloat valueNoise(vec2 st) {\n vec2 i = floor(st);\n vec2 f = fract(st);\n float a = randomR(i);\n float b = randomR(i + vec2(1.0, 0.0));\n float c = randomR(i + vec2(0.0, 1.0));\n float d = randomR(i + vec2(1.0, 1.0));\n vec2 u = f * f * (3.0 - 2.0 * f);\n float x1 = mix(a, b, u.x);\n float x2 = mix(c, d, u.x);\n return mix(x1, x2, u.y);\n}\n";
22
+ /** Ashima Arts / Stefan Gustavson 2D simplex noise (ISC license) — generic,
23
+ * ubiquitous prior art in the WebGL shader ecosystem, NOT paper-design's own
24
+ * IP. Used as the low-level noise primitive under some ported effects whose
25
+ * higher-level composition logic IS credited to paper-design in their own
26
+ * doc comments (e.g. GrainGradient, Dithering, Water, LiquidMetal). */
27
+ export declare const glslSimplexNoise2D = "\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec3 permute(vec3 x) { return mod289(((x * 34.0) + 1.0) * x); }\n\nfloat snoise(vec2 v) {\n const vec4 C = vec4(0.211324865405187, 0.366025403784439,\n -0.577350269189626, 0.024390243902439);\n vec2 i = floor(v + dot(v, C.yy));\n vec2 x0 = v - i + dot(i, C.xx);\n\n vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n vec4 x12 = x0.xyxy + C.xxzz;\n x12.xy -= i1;\n\n i = mod289(i);\n vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0));\n\n vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0);\n m = m * m;\n m = m * m;\n\n vec3 x = 2.0 * fract(p * C.www) - 1.0;\n vec3 h = abs(x) - 0.5;\n vec3 ox = floor(x + 0.5);\n vec3 a0 = x - ox;\n\n m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h);\n\n vec3 g;\n g.x = a0.x * x0.x + h.x * x0.y;\n g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n return 130.0 * dot(m, g);\n}\n";
28
+ /** Small fractional-Brownian-motion built on glslSimplexNoise2D. Requires
29
+ * glslSimplexNoise2D to be interpolated earlier in the same shader source. */
30
+ export declare const glslSimplexFbm = "\nfloat fbm(vec2 st) {\n float value = 0.0;\n float amplitude = 0.5;\n for (int i = 0; i < 4; i++) {\n value += amplitude * snoise(st);\n st *= 2.0;\n amplitude *= 0.5;\n }\n return value;\n}\n";
31
+ /** Common PI / TWO_PI constants, interpolated first in most shaders. */
32
+ export declare const glslDeclarePI = "\nconst float PI = 3.14159265359;\nconst float TWO_PI = 6.28318530718;\n";
33
+ /** 2D rotation helper matching paper-design's `rotate(vec2, float)` signature. */
34
+ export declare const glslRotate2 = "\nvec2 rotate(vec2 v, float angle) {\n float s = sin(angle);\n float c = cos(angle);\n return mat2(c, -s, s, c) * v;\n}\n";
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Shared GLSL noise primitives, consumed via template-literal interpolation
3
+ * (e.g. `${glslHashFloat}`) inside individual `*.shaders.ts` fragment shader
4
+ * sources. There is no GLSL `#include` mechanism, so consumers must
5
+ * interpolate snippets in dependency order (e.g. glslHashFloat before
6
+ * glslValueNoise, glslSimplexNoise2D before glslSimplexFbm).
7
+ *
8
+ * These pure-hash functions stand in for paper-design/shaders' pre-generated
9
+ * noise-texture sampling (`u_noiseTexture` + `textureRandomizerR`) — a
10
+ * deliberate simplification that removes an entire texture-generation
11
+ * subsystem in exchange for a tiny amount of extra ALU cost per pixel.
12
+ */
13
+ /** Pure-hash pseudo-random float in [0,1) for a vec2 input, no texture lookup.
14
+ * Adapted from paper-design/shaders' DotOrbit/GodRays/SmokeRing fragment
15
+ * shaders (https://github.com/paper-design/shaders, Apache License 2.0). */
16
+ const glslHashFloat = `
17
+ float randomR(vec2 st) {
18
+ return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);
19
+ }
20
+ `;
21
+ /** Pure-hash pseudo-random vec2, no texture lookup. Same source as glslHashFloat. */
22
+ const glslHashVec2 = `
23
+ vec2 randomGB(vec2 st) {
24
+ return vec2(
25
+ fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123),
26
+ fract(sin(dot(st, vec2(93.9898, 67.345))) * 24634.6345123)
27
+ );
28
+ }
29
+ `;
30
+ /** Ashima Arts / Stefan Gustavson 2D simplex noise (ISC license) — generic,
31
+ * ubiquitous prior art in the WebGL shader ecosystem, NOT paper-design's own
32
+ * IP. Used as the low-level noise primitive under some ported effects whose
33
+ * higher-level composition logic IS credited to paper-design in their own
34
+ * doc comments (e.g. GrainGradient, Dithering, Water, LiquidMetal). */
35
+ const glslSimplexNoise2D = `
36
+ vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
37
+ vec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
38
+ vec3 permute(vec3 x) { return mod289(((x * 34.0) + 1.0) * x); }
39
+
40
+ float snoise(vec2 v) {
41
+ const vec4 C = vec4(0.211324865405187, 0.366025403784439,
42
+ -0.577350269189626, 0.024390243902439);
43
+ vec2 i = floor(v + dot(v, C.yy));
44
+ vec2 x0 = v - i + dot(i, C.xx);
45
+
46
+ vec2 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
47
+ vec4 x12 = x0.xyxy + C.xxzz;
48
+ x12.xy -= i1;
49
+
50
+ i = mod289(i);
51
+ vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) + i.x + vec3(0.0, i1.x, 1.0));
52
+
53
+ vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0);
54
+ m = m * m;
55
+ m = m * m;
56
+
57
+ vec3 x = 2.0 * fract(p * C.www) - 1.0;
58
+ vec3 h = abs(x) - 0.5;
59
+ vec3 ox = floor(x + 0.5);
60
+ vec3 a0 = x - ox;
61
+
62
+ m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h);
63
+
64
+ vec3 g;
65
+ g.x = a0.x * x0.x + h.x * x0.y;
66
+ g.yz = a0.yz * x12.xz + h.yz * x12.yw;
67
+ return 130.0 * dot(m, g);
68
+ }
69
+ `;
70
+ /** Common PI / TWO_PI constants, interpolated first in most shaders. */
71
+ const glslDeclarePI = `
72
+ const float PI = 3.14159265359;
73
+ const float TWO_PI = 6.28318530718;
74
+ `;
75
+ /** 2D rotation helper matching paper-design's `rotate(vec2, float)` signature. */
76
+ const glslRotate2 = `
77
+ vec2 rotate(vec2 v, float angle) {
78
+ float s = sin(angle);
79
+ float c = cos(angle);
80
+ return mat2(c, -s, s, c) * v;
81
+ }
82
+ `;
83
+
84
+ export { glslDeclarePI, glslHashFloat, glslHashVec2, glslRotate2, glslSimplexNoise2D };
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  const smoothEase = [0.65, 0, 0.35, 1];
2
3
  /**
3
4
  * Checkmark SVG path draw-on animation
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import React__default, { useId, useState, useRef, useEffect } from 'react';
3
4
  import { useReducedMotion, AnimatePresence, motion } from 'motion/react';
@@ -36,12 +37,11 @@ const CheckboxComponent = React__default.forwardRef(({ id: idProp, name: namePro
36
37
  else {
37
38
  isChecked = internalChecked;
38
39
  }
39
- // A checked checkbox has been acted upon, so it should no longer read as an
40
- // error: once checked it clears its own invalid styling (box border + label).
41
- // The group-level error message stays under the consumer's control this only
42
- // resolves the per-item state so unchecked siblings keep signalling the error.
43
- const showInvalid = isInvalid && !(isChecked && !indeterminate);
44
- const visualState = isDisabled ? "disabled" : showInvalid ? "invalid" : "default";
40
+ // Message-led invalid: the control + label stay neutral (mirrors Radio). The
41
+ // group's required asterisk + error message carry the error (see CheckboxGroup).
42
+ // `data-state=invalid` is still emitted on the input as an unstyled hook, and
43
+ // `aria-invalid`/`aria-errormessage` live on the group fieldset, not each input.
44
+ const visualState = isDisabled ? "disabled" : "default";
45
45
  const inputRef = useRef(null);
46
46
  // Set indeterminate property on the input element
47
47
  useEffect(() => {
@@ -69,13 +69,13 @@ const CheckboxComponent = React__default.forwardRef(({ id: idProp, name: namePro
69
69
  }
70
70
  onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked, value);
71
71
  };
72
- return (jsxs("div", { className: cn(checkboxTheme.baseStyle, className), ...restProps, children: [jsxs("div", { className: cn(checkboxTheme.inputContainerStyle, checkboxTheme.sizes[size]), children: [jsx("input", { ref: (node) => {
72
+ return (jsxs("div", { className: cn(checkboxTheme.baseStyle, className), children: [jsxs("div", { className: cn(checkboxTheme.inputContainerStyle, checkboxTheme.sizes[size]), children: [jsx("input", { ref: (node) => {
73
73
  inputRef.current = node;
74
74
  if (typeof ref === "function")
75
75
  ref(node);
76
76
  else if (ref)
77
77
  ref.current = node;
78
- }, type: "checkbox", id: id, name: name, value: value, checked: isChecked, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "aria-invalid": showInvalid || undefined, "data-state": visualState, className: cn(checkboxTheme.inputStyle, checkboxTheme.sizes[size], indeterminate && "bg-neutral-200") }), jsxs(AnimatePresence, { mode: "wait", children: [indeterminate && (jsx(motion.svg, { viewBox: "0 0 16 16", fill: "none", className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center text-neutral-600", size === "sm" ? "size-3" : size === "lg" ? "size-5" : "size-4"), children: jsx(motion.path, { d: "M3.5 8 L12.5 8", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", variants: shouldReduceMotion ? reducedMotionVariants : indeterminateVariants, initial: "unchecked", animate: "checked", exit: "unchecked" }) }, "indeterminate")), isChecked && !indeterminate && (jsx(motion.svg, { viewBox: "0 0 16 16", fill: "none", className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center text-white", size === "sm" ? "size-3" : size === "lg" ? "size-5" : "size-4"), children: jsx(motion.path, { d: "M3.5 8.5 L6.5 11.5 L12.5 4.5", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", variants: shouldReduceMotion ? reducedMotionVariants : checkmarkVariants, initial: "unchecked", animate: "checked", exit: "unchecked" }) }, "checkmark"))] })] }), (label || description) && (jsxs("label", { htmlFor: id, className: cn("cursor-pointer", isDisabled && "cursor-not-allowed"), children: [label && (typeof label === 'string' ? (jsx("span", { className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[visualState], "mb-0"), children: label })) : (label)), description && (typeof description === 'string' ? (jsx("div", { id: `${id}-description`, className: checkboxTheme.descriptionStyle, children: description })) : (description))] }))] }));
78
+ }, type: "checkbox", ...restProps, id: id, name: name, value: value, checked: isChecked, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "aria-invalid": !isInGroup && isInvalid ? true : undefined, "data-state": isDisabled ? "disabled" : isInvalid ? "invalid" : "default", className: cn(checkboxTheme.inputStyle, checkboxTheme.sizes[size], indeterminate && "bg-neutral-200") }), jsxs(AnimatePresence, { mode: "wait", children: [indeterminate && (jsx(motion.svg, { viewBox: "0 0 16 16", fill: "none", className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center text-neutral-600", size === "sm" ? "size-3" : size === "lg" ? "size-5" : "size-4"), children: jsx(motion.path, { d: "M3.5 8 L12.5 8", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", variants: shouldReduceMotion ? reducedMotionVariants : indeterminateVariants, initial: "unchecked", animate: "checked", exit: "unchecked" }) }, "indeterminate")), isChecked && !indeterminate && (jsx(motion.svg, { viewBox: "0 0 16 16", fill: "none", className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center text-[var(--color-primary-contrast)]", size === "sm" ? "size-3" : size === "lg" ? "size-5" : "size-4"), children: jsx(motion.path, { d: "M3.5 8.5 L6.5 11.5 L12.5 4.5", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", variants: shouldReduceMotion ? reducedMotionVariants : checkmarkVariants, initial: "unchecked", animate: "checked", exit: "unchecked" }) }, "checkmark"))] })] }), (label || description) && (jsxs("label", { htmlFor: id, className: cn("cursor-pointer", isDisabled && "cursor-not-allowed"), children: [label && (typeof label === 'string' ? (jsx("span", { className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[visualState], "mb-0"), children: label })) : (label)), description && (typeof description === 'string' ? (jsx("div", { id: `${id}-description`, className: checkboxTheme.descriptionStyle, children: description })) : (description))] }))] }));
79
79
  });
80
80
  CheckboxComponent.displayName = "Checkbox";
81
81
  const Checkbox = Object.assign(CheckboxComponent, {
@@ -6,7 +6,7 @@ const checkboxTheme = {
6
6
  baseStyle: "relative flex items-start gap-3",
7
7
  inputContainerStyle: "relative flex-shrink-0 group grid grid-cols-1",
8
8
  // Input styles with light and dark mode variants
9
- inputStyle: "col-start-1 row-start-1 appearance-none rounded-[calc(var(--radius-base)*0.75)] border-2 transition-all duration-400 " +
9
+ inputStyle: "col-start-1 row-start-1 appearance-none rounded-[var(--checkbox-radius)] border-2 transition-all duration-400 " +
10
10
  // Default state - light
11
11
  "border-[var(--color-border)] bg-[var(--color-surface)] " +
12
12
  // Default state - dark
@@ -24,9 +24,10 @@ const checkboxTheme = {
24
24
  "data-[state=disabled]:border-[var(--color-border)] data-[state=disabled]:bg-[var(--color-background-disabled)] data-[state=disabled]:cursor-not-allowed " +
25
25
  // Disabled state - dark
26
26
  "dark:disabled:bg-[var(--color-neutral-800)] dark:disabled:border-[var(--color-neutral-600)] " +
27
- "dark:data-[state=disabled]:bg-[var(--color-neutral-700)] dark:data-[state=disabled]:border-[var(--color-neutral-600)] " +
28
- // Invalid state
29
- "data-[state=invalid]:border-[var(--color-danger)] data-[state=invalid]:focus-visible:outline-[var(--color-danger)]",
27
+ "dark:data-[state=disabled]:bg-[var(--color-neutral-700)] dark:data-[state=disabled]:border-[var(--color-neutral-600)]",
28
+ // Invalid is message-led: the control stays neutral (mirrors Radio). The group's
29
+ // required asterisk + error message carry the error (see CheckboxGroup). `data-state=invalid`
30
+ // is still emitted on the input as an unstyled consumer/test hook.
30
31
  // Description text - light and dark
31
32
  descriptionStyle: "text-sm mt-0.5 " + "text-[var(--color-text-secondary)]/80 " + " ",
32
33
  sizes: {
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { createContext, useContext } from 'react';
2
3
 
3
4
  const CheckboxGroupContext = createContext(undefined);
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx, jsxs } from 'react/jsx-runtime';
2
3
  import React__default, { useId, useState, useMemo } from 'react';
3
4
  import { cn } from '../../../utils/cn.js';
@@ -36,7 +37,9 @@ const CheckboxGroup = React__default.forwardRef(({ value: controlledValue, defau
36
37
  size,
37
38
  state,
38
39
  }), [groupName, currentValue, size, state]);
39
- const labelState = state === "invalid" ? "invalid" : state === "disabled" ? "disabled" : "default";
40
+ // Message-led invalid: the legend text stays neutral; the red required asterisk
41
+ // + the error message below carry the error (mirrors RadioGroup).
42
+ const labelState = state === "disabled" ? "disabled" : "default";
40
43
  return (jsx(CheckboxGroupContext.Provider, { value: contextValue, children: jsxs("fieldset", { ref: ref, role: "group", "aria-labelledby": label ? labelId : undefined, "aria-describedby": description ? descriptionId : undefined, "aria-required": required || undefined, "aria-invalid": resolvedError ? true : undefined, "aria-errormessage": resolvedError ? errorId : undefined, className: cn("border-0 p-0 m-0", checkboxTheme.groupStyle, className), ...props, children: [label && (typeof label === 'string' ? (jsxs("legend", { id: labelId, className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[labelState]), children: [label, required && (jsx("span", { className: formLabelTheme.requiredIndicatorStyle, children: "*" }))] })) : (label)), description && (typeof description === 'string' ? (jsx("p", { id: descriptionId, className: checkboxTheme.groupDescriptionStyle, children: description })) : (description)), jsx("div", { className: cn(checkboxTheme.groupItemsStyle, orientation === "horizontal" &&
41
44
  checkboxTheme.groupHorizontalStyle), children: children }), resolvedError && (typeof resolvedError === 'string' ? (jsx("p", { id: errorId, role: "alert", className: checkboxTheme.groupErrorStyle, children: resolvedError })) : (resolvedError))] }) }));
42
45
  });