@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, jsxs } from 'react/jsx-runtime';
2
3
  import React__default, { useRef, useMemo, useState, useCallback, useEffect } from 'react';
3
4
  import { cn } from '../../../utils/cn.js';
@@ -27,17 +28,28 @@ const DEFAULT_GRADIENT = {
27
28
  { id: 'stop-2', color: '#FFFFFF', position: 100 },
28
29
  ],
29
30
  };
31
+ /**
32
+ * In gradient/image mode the controlled `value` is a CSS gradient string, not a solid
33
+ * color — don't feed it to `parseColor` (it would emit an "Unsupported color format" warning
34
+ * and return null). Skip parsing for gradient values.
35
+ */
36
+ const isGradientString = (v) => /^(?:repeating-)?(?:linear|radial|conic)-gradient\(/.test(v.trim());
30
37
  /**
31
38
  * ColorPicker Root Component
32
39
  * Follows Flikkui compound component pattern (similar to Accordion, Tabs, Popover)
33
40
  */
34
- const ColorPickerRoot = React__default.forwardRef(({ value, defaultValue = '#000000', onChange, format: initialFormat = 'hex', showAlpha = true, showEyeDropper = true, presetColors, savedColors: savedColorsProp, onSavedColorsChange, defaultMode = 'solid', mode: modeProp, onModeChange, gradientValue: gradientProp, onGradientChange, size = 'md', state = 'default', disabled = false, label, helperText, required = false, theme, className, id, children, ...props }, ref) => {
41
+ const ColorPickerRoot = React__default.forwardRef(({ value, defaultValue = '#000000', onChange, format: initialFormat = 'hex', showAlpha = true, showEyeDropper = true, presetColors, savedColors: savedColorsProp, onSavedColorsChange, defaultMode = 'solid', mode: modeProp, onModeChange, gradientValue: gradientProp, onGradientChange, size = 'md', state = 'default', disabled = false, label, helperText, errorMessage, required = false, theme, className, id, children, ...props }, ref) => {
35
42
  const generatedId = React__default.useId();
36
43
  const componentId = id || generatedId;
37
44
  const stopIdRef = useRef(0);
45
+ // errorMessage takes precedence over helperText while invalid; helperText
46
+ // behavior is unchanged otherwise.
47
+ const displayedMessage = state === 'invalid' && errorMessage ? errorMessage : helperText;
48
+ const describedById = displayedMessage ? `${componentId}-helper` : undefined;
38
49
  // Parse initial color value
39
50
  const initialColor = useMemo(() => {
40
- const parsed = parseColor(value || defaultValue);
51
+ const initial = value || defaultValue;
52
+ const parsed = initial && !isGradientString(initial) ? parseColor(initial) : null;
41
53
  return parsed || { h: 0, s: 0, l: 0, a: 1 };
42
54
  }, [value, defaultValue]);
43
55
  const [color, setColor] = useState(initialColor);
@@ -112,9 +124,9 @@ const ColorPickerRoot = React__default.forwardRef(({ value, defaultValue = '#000
112
124
  const removeSavedColor = useCallback((index) => {
113
125
  setSavedColors(savedColors.filter((_, i) => i !== index));
114
126
  }, [savedColors, setSavedColors]);
115
- // Update color when controlled value changes
127
+ // Update color when controlled value changes (skip gradient/image values — not solid colors)
116
128
  useEffect(() => {
117
- if (value !== undefined) {
129
+ if (value !== undefined && !isGradientString(value)) {
118
130
  const parsed = parseColor(value);
119
131
  if (parsed) {
120
132
  setColor(parsed);
@@ -201,6 +213,8 @@ const ColorPickerRoot = React__default.forwardRef(({ value, defaultValue = '#000
201
213
  removeGradientStop,
202
214
  isOpen,
203
215
  setIsOpen,
216
+ describedById,
217
+ dialogId: `${componentId}-dialog`,
204
218
  triggerRef,
205
219
  placement: 'bottom-start',
206
220
  offset: 4,
@@ -238,6 +252,8 @@ const ColorPickerRoot = React__default.forwardRef(({ value, defaultValue = '#000
238
252
  removeGradientStop,
239
253
  isOpen,
240
254
  setIsOpen,
255
+ describedById,
256
+ componentId,
241
257
  showAlpha,
242
258
  showEyeDropper,
243
259
  presetColors,
@@ -255,7 +271,7 @@ const ColorPickerRoot = React__default.forwardRef(({ value, defaultValue = '#000
255
271
  addSavedColor,
256
272
  removeSavedColor,
257
273
  ]);
258
- return (jsx(ColorPickerContext.Provider, { value: contextValue, children: jsxs("div", { ref: ref, className: cn(mergedTheme.baseStyle, className), ...props, children: [label && (typeof label === 'string' ? (jsx(FormLabel, { htmlFor: componentId, required: required, state: state, children: label })) : (label)), children, helperText && (typeof helperText === 'string' ? (jsx("div", { id: `${componentId}-helper`, className: cn('mt-1.5 text-sm text-[var(--color-text-secondary)]', state === 'invalid' && 'text-[var(--color-danger)]'), children: helperText })) : (helperText))] }) }));
274
+ return (jsx(ColorPickerContext.Provider, { value: contextValue, children: jsxs("div", { ref: ref, className: cn(mergedTheme.baseStyle, className), ...props, children: [label && (typeof label === 'string' ? (jsx(FormLabel, { htmlFor: componentId, required: required, state: state, children: label })) : (label)), children, displayedMessage && (typeof displayedMessage === 'string' ? (jsx("div", { id: `${componentId}-helper`, role: state === 'invalid' ? 'alert' : undefined, className: cn('mt-1.5 text-sm text-[var(--color-text-secondary)]', state === 'invalid' && 'text-[var(--color-danger)]'), children: displayedMessage })) : (displayedMessage))] }) }));
259
275
  });
260
276
  ColorPickerRoot.displayName = 'ColorPicker';
261
277
  /**
@@ -88,6 +88,12 @@ export interface ColorPickerProps extends Omit<React.HTMLAttributes<HTMLDivEleme
88
88
  * Helper text displayed below the picker
89
89
  */
90
90
  helperText?: React.ReactNode;
91
+ /**
92
+ * Error message shown instead of `helperText` when `state="invalid"`.
93
+ * Takes precedence over `helperText` while invalid; `helperText` is
94
+ * unaffected/still shown as normal otherwise.
95
+ */
96
+ errorMessage?: React.ReactNode;
91
97
  /**
92
98
  * Whether the picker is required
93
99
  * @default false
@@ -148,6 +154,8 @@ export interface ColorPickerContextValue {
148
154
  removeGradientStop: (id: string) => void;
149
155
  isOpen: boolean;
150
156
  setIsOpen: (open: boolean) => void;
157
+ describedById?: string;
158
+ dialogId: string;
151
159
  triggerRef: React.RefObject<HTMLElement>;
152
160
  placement: import("../../../hooks/useSelectPortal").SelectPlacement;
153
161
  offset: number;
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { useContext, useRef, useState, useCallback, useEffect } from 'react';
3
4
  import { cn } from '../../../utils/cn.js';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { useReducedMotion, AnimatePresence, motion } from 'motion/react';
3
4
  import { useContext, useRef, useEffect } from 'react';
@@ -21,7 +22,7 @@ const ColorPickerBody = ({ children, className, portal = true, animation = true,
21
22
  if (!context) {
22
23
  throw new Error('ColorPicker.Body must be used within a ColorPicker');
23
24
  }
24
- const { isOpen, setIsOpen, theme, triggerRef, placement, offset } = context;
25
+ const { isOpen, setIsOpen, theme, triggerRef, placement, offset, dialogId } = context;
25
26
  // Use positioning hook (same as Dropdown/Select)
26
27
  const { position, cssVariables } = useSelectPortal({
27
28
  triggerRef,
@@ -54,7 +55,7 @@ const ColorPickerBody = ({ children, className, portal = true, animation = true,
54
55
  }, [isOpen, setIsOpen, triggerRef]);
55
56
  // Extract DOM event handler props that conflict with Framer Motion
56
57
  const { onAnimationStart: _onAnimationStart, onAnimationEnd: _onAnimationEnd, onDrag: _onDrag, onDragStart: _onDragStart, onDragEnd: _onDragEnd, ...domProps } = rest;
57
- const content = (jsx(AnimatePresence, { children: isOpen && (jsx(motion.div, { ref: contentRef, role: "dialog", "aria-label": "Color picker", className: cn('fixed z-50', theme.contentStyle, className), style: {
58
+ const content = (jsx(AnimatePresence, { children: isOpen && (jsx(motion.div, { ref: contentRef, id: dialogId, role: "dialog", "aria-label": "Color picker", className: cn('fixed z-50', theme.contentStyle, className), style: {
58
59
  ...cssVariables,
59
60
  top: `${position.top}px`,
60
61
  left: `${position.left}px`,
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import React__default, { createContext } from 'react';
2
3
 
3
4
  const ColorPickerContext = createContext(undefined);
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { EyeDropperIcon } from '@heroicons/react/20/solid';
3
4
  import { useContext, useMemo } from 'react';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { useContext } from 'react';
3
4
  import { cn } from '../../../utils/cn.js';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { TrashIcon, PlusIcon, ClipboardDocumentCheckIcon, ClipboardDocumentIcon } from '@heroicons/react/20/solid';
3
4
  import { useContext, useState, useRef, useCallback, useEffect } from 'react';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { XMarkIcon } from '@heroicons/react/20/solid';
3
4
  import { useContext } from 'react';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { ArrowUpTrayIcon, XMarkIcon } from '@heroicons/react/20/solid';
3
4
  import { useContext, useRef, useState, useEffect, useCallback } from 'react';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { useContext, useState, useEffect } from 'react';
3
4
  import { ChevronUpDownIcon, ClipboardDocumentCheckIcon, ClipboardDocumentIcon } from '@heroicons/react/20/solid';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { useContext } from 'react';
3
4
  import { CheckIcon } from '@heroicons/react/16/solid';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { PlusIcon } from '@heroicons/react/20/solid';
3
4
  import { useContext } from 'react';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { useContext, useMemo, useRef, useState, useCallback, useEffect } from 'react';
3
4
  import { cn } from '../../../utils/cn.js';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsxs, jsx } from 'react/jsx-runtime';
2
3
  import { useContext } from 'react';
3
4
  import { cn } from '../../../utils/cn.js';
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx } from 'react/jsx-runtime';
2
3
  import { useContext, useRef, useEffect } from 'react';
3
4
  import { cn } from '../../../utils/cn.js';
@@ -17,7 +18,7 @@ const ColorPickerTrigger = ({ className, ...props }) => {
17
18
  if (!context) {
18
19
  throw new Error('ColorPickerTrigger must be used within a ColorPicker');
19
20
  }
20
- const { isOpen, setIsOpen, disabled, state, mode, gradient, getFormattedValue, triggerRef } = context;
21
+ const { isOpen, setIsOpen, disabled, state, mode, gradient, getFormattedValue, triggerRef, describedById, dialogId } = context;
21
22
  // Display value: for gradient mode, show stop colors comma-separated
22
23
  const displayValue = mode === 'gradient'
23
24
  ? [...gradient.stops].sort((a, b) => a.position - b.position).map(s => s.color).join(', ')
@@ -35,7 +36,21 @@ const ColorPickerTrigger = ({ className, ...props }) => {
35
36
  setIsOpen(!isOpen);
36
37
  }
37
38
  };
38
- return (jsx("div", { ref: wrapperRef, onClick: handleWrapperClick, className: "relative", children: jsx(Input, { ref: inputRef, value: displayValue, readOnly: true, disabled: disabled, state: state, contentStart: jsx(ColorPickerSwatch, { size: "sm" }), className: cn('cursor-pointer pointer-events-none', className), "aria-expanded": isOpen, "aria-haspopup": "dialog", ...props }) }));
39
+ // Keyboard access: the readOnly input is the focusable trigger, but clicks are
40
+ // handled by the wrapper — so wire Enter/Space/ArrowDown to open and Escape to close
41
+ // (preventDefault stops Space from scrolling / Enter from submitting a form).
42
+ const handleKeyDown = (e) => {
43
+ if (disabled)
44
+ return;
45
+ if (e.key === "Enter" || e.key === " " || e.key === "ArrowDown") {
46
+ e.preventDefault();
47
+ setIsOpen(true);
48
+ }
49
+ else if (e.key === "Escape" && isOpen) {
50
+ setIsOpen(false);
51
+ }
52
+ };
53
+ return (jsx("div", { ref: wrapperRef, onClick: handleWrapperClick, className: "relative", children: jsx(Input, { ref: inputRef, value: displayValue, readOnly: true, disabled: disabled, state: state, contentStart: jsx(ColorPickerSwatch, { size: "sm" }), className: cn('cursor-pointer pointer-events-none', className), role: "combobox", "aria-expanded": isOpen, "aria-haspopup": "dialog", "aria-controls": dialogId, "aria-describedby": describedById, onKeyDown: handleKeyDown, ...props }) }));
39
54
  };
40
55
  ColorPickerTrigger.displayName = 'ColorPickerTrigger';
41
56
 
@@ -1,8 +1,9 @@
1
+ "use client";
1
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import React__default, { useId, useRef, useEffect, useCallback } from 'react';
3
+ import React__default, { useId, useRef, useState, useEffect, useCallback } from 'react';
3
4
  import { AnimatePresence, motion } from 'motion/react';
4
5
  import { createPortal } from 'react-dom';
5
- import { XMarkIcon, PlusIcon } from '@heroicons/react/24/outline';
6
+ import { XMarkIcon, PlusIcon, CheckIcon } from '@heroicons/react/24/outline';
6
7
  import { comboboxTheme } from './Combobox.theme.js';
7
8
  import { FormLabel } from '../FormLabel/FormLabel.js';
8
9
  import { createDropdownAnimations } from '../Select/Select.animations.js';
@@ -12,6 +13,7 @@ import { SelectProvider, useSelectContext } from '../Select/Select.js';
12
13
  import '../Select/Select.theme.js';
13
14
  import { useIsClient } from '../../../hooks/useIsClient.js';
14
15
  import { useDarkMode } from '../../../hooks/useDarkMode.js';
16
+ import { useSurfaceElevation, SurfaceProvider, surfaceClasses } from '../../../theme/SurfaceContext.js';
15
17
  import { useSelectState } from '../Select/useSelectState.js';
16
18
 
17
19
  /**
@@ -20,8 +22,11 @@ import { useSelectState } from '../Select/useSelectState.js';
20
22
  const defaultFilterFn = (option, inputValue) => {
21
23
  return option.label.toLowerCase().includes(inputValue.toLowerCase());
22
24
  };
23
- const ComboboxOptions = ({ isOpen, onClose, triggerRef, portal, placement, offset, emptyMessage, className, listboxId, comboboxId, }) => {
25
+ const ComboboxOptions = ({ isOpen, onClose, triggerRef, portal, placement, offset, emptyMessage, className, listboxId, comboboxId, elevation, lift, }) => {
24
26
  var _a;
27
+ // Relative elevation: the listbox lifts above its host surface (overlay base = 5)
28
+ // so a Combobox inside a Popover/Modal still reads as a higher plane.
29
+ const surfaceLevel = useSurfaceElevation({ baseRung: 5, offset: 2, elevation, lift });
25
30
  const { filteredOptions, highlightedIndex, setHighlightedIndex, selectedValue, selectOption, optionsRef, theme, } = useSelectContext();
26
31
  const isDarkMode = useDarkMode();
27
32
  const isClient = useIsClient();
@@ -78,7 +83,7 @@ const ComboboxOptions = ({ isOpen, onClose, triggerRef, portal, placement, offse
78
83
  const disabledOptionStyle = theme.disabledOptionStyle || comboboxTheme.disabledOptionStyle;
79
84
  const createOptionStyleTheme = theme.createOptionStyle || comboboxTheme.createOptionStyle;
80
85
  const emptyMessageStyle = comboboxTheme.emptyMessageStyle;
81
- const optionsContent = (jsx(AnimatePresence, { mode: "wait", children: isOpen && (jsx(motion.div, { ref: combinedRef, id: listboxId, role: "listbox", className: cn(dropdownStyle, className), style: {
86
+ const optionsContent = (jsx(AnimatePresence, { mode: "wait", children: isOpen && (jsx(motion.div, { ref: combinedRef, id: listboxId, role: "listbox", className: cn(surfaceClasses(surfaceLevel, { translucent: true, shadow: true }), dropdownStyle, className), style: {
82
87
  ...cssVariables,
83
88
  overscrollBehavior: "contain",
84
89
  ...(portal
@@ -88,17 +93,19 @@ const ComboboxOptions = ({ isOpen, onClose, triggerRef, portal, placement, offse
88
93
  width: `${position.width}px`,
89
94
  }
90
95
  : {}),
91
- }, tabIndex: -1, variants: animations, initial: "initial", animate: "visible", exit: "exit", children: filteredOptions.length === 0 ? (jsx("div", { className: emptyMessageStyle, children: emptyMessage })) : (jsxs(Fragment, { children: [(filteredOptions.length > 100 ? filteredOptions.slice(0, 100) : filteredOptions).map((option, index) => {
92
- const isSelected = option.value === selectedValue;
93
- const isHighlighted = index === highlightedIndex;
94
- const isCreateOption = option.id === "__create__";
95
- return (jsx("div", { id: comboboxId ? `${comboboxId}-option-${option.id}` : undefined, role: "option", "aria-selected": isSelected, "aria-disabled": option.disabled, "data-option-index": index, className: cn(optionStyle, isSelected && selectedOptionStyle, isHighlighted && highlightedOptionStyle, option.disabled && disabledOptionStyle, isCreateOption && createOptionStyleTheme), onMouseEnter: () => !option.disabled && setHighlightedIndex(index), onClick: () => {
96
- if (!option.disabled) {
97
- selectOption(option.value, isCreateOption);
98
- onClose();
99
- }
100
- }, children: isCreateOption ? (jsxs("span", { className: "flex items-center gap-1", children: [jsx(PlusIcon, { className: "size-4 shrink-0", strokeWidth: 2 }), jsx("span", { className: "block truncate", children: option.label })] })) : (jsx("span", { className: "block truncate", children: option.label })) }, option.id));
101
- }), filteredOptions.length > 100 && (jsxs("div", { className: "px-3 py-2 text-xs text-[var(--color-text-muted)] text-center border-t border-[var(--color-border)]", children: ["Showing 100 of ", filteredOptions.length, " results \u2014 refine your search"] }))] })) })) }));
96
+ }, tabIndex: -1, variants: animations, initial: "initial", animate: "visible", exit: "exit", children: jsx(SurfaceProvider, { level: surfaceLevel, children: filteredOptions.length === 0 ? (jsx("div", { className: emptyMessageStyle, children: emptyMessage })) : (jsxs(Fragment, { children: [(filteredOptions.length > 100 ? filteredOptions.slice(0, 100) : filteredOptions).map((option, index) => {
97
+ const isSelected = option.value === selectedValue;
98
+ const isHighlighted = index === highlightedIndex;
99
+ const isCreateOption = option.id === "__create__";
100
+ return (jsxs("div", { id: comboboxId ? `${comboboxId}-option-${option.id}` : undefined, role: "option", "aria-selected": isSelected, "aria-disabled": option.disabled, "data-option-index": index, className: cn(optionStyle, isSelected && selectedOptionStyle,
101
+ // Reserve room on the right so a long, truncated label never runs under the check.
102
+ isSelected && !isCreateOption && "pr-9", isHighlighted && highlightedOptionStyle, option.disabled && disabledOptionStyle, isCreateOption && createOptionStyleTheme), onMouseEnter: () => !option.disabled && setHighlightedIndex(index), onClick: () => {
103
+ if (!option.disabled) {
104
+ selectOption(option.value, isCreateOption);
105
+ onClose();
106
+ }
107
+ }, children: [isCreateOption ? (jsxs("span", { className: "flex items-center gap-1", children: [jsx(PlusIcon, { className: "size-4 shrink-0", strokeWidth: 2 }), jsx("span", { className: "block truncate", children: option.label })] })) : (jsx("span", { className: "block truncate", children: option.label })), isSelected && !isCreateOption && (jsx("span", { className: "absolute inset-y-0 right-0 flex items-center pr-3 text-[var(--color-primary)] dark:text-[var(--color-primary-400)]", children: jsx(CheckIcon, { className: "size-4", strokeWidth: 2 }) }))] }, option.id));
108
+ }), filteredOptions.length > 100 && (jsxs("div", { className: "px-3 py-2 text-xs text-[var(--color-text-muted)] text-center border-t border-[var(--color-border)]", children: ["Showing 100 of ", filteredOptions.length, " results \u2014 refine your search"] }))] })) }) })) }));
102
109
  if (portal && isClient) {
103
110
  return createPortal(jsx("div", { "data-flikkui-portal": "", className: isDarkMode ? "dark" : undefined, children: optionsContent }), document.body);
104
111
  }
@@ -126,7 +133,7 @@ const ComboboxOptions = ({ isOpen, onClose, triggerRef, portal, placement, offse
126
133
  * />
127
134
  * ```
128
135
  */
129
- const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", label, helperText, size = "md", state = "default", clearable = true, iconStart, iconEnd, openOnFocus = true, filterFn = defaultFilterFn, emptyMessage = "No results found", creatable = false, onCreateOption, createLabel, required = false, name, className, wrapperClassName, inputClassName, dropdownClassName, theme: themeOverrides, portal = true, placement = "bottom-start", offset = 8, id, ...props }, ref) => {
136
+ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", label, helperText, size = "md", state = "default", clearable = true, iconStart, iconEnd, openOnFocus = true, filterFn = defaultFilterFn, emptyMessage = "No results found", creatable = false, onCreateOption, createLabel, required = false, name, className, wrapperClassName, inputClassName, dropdownClassName, theme: themeOverrides, portal = true, placement = "bottom-start", offset = 8, elevation, lift, id, ...props }, ref) => {
130
137
  var _a;
131
138
  // Merge theme
132
139
  const theme = React__default.useMemo(() => ({ ...comboboxTheme, ...(themeOverrides || {}) }), [themeOverrides]);
@@ -138,6 +145,18 @@ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", la
138
145
  const inputRef = useRef(null);
139
146
  const wrapperRef = useRef(null);
140
147
  const justSelectedRef = useRef(false);
148
+ const prevOpenRef = useRef(false);
149
+ // Whether the visible text should be treated as a live filter query.
150
+ //
151
+ // The input's displayed text (`searchValue`) does double duty: while the
152
+ // control is closed it echoes the *selected label* so the field reads
153
+ // "TypeScript", and while open+typing it is the *filter query*. Filtering on
154
+ // that same value the instant the listbox opens narrows the list to the one
155
+ // already-selected match — so opening to *change* a selection shows a single
156
+ // row instead of the full list. We gate filtering on `isFiltering`: the list
157
+ // stays full on open (matching Select and the WAI-ARIA editable-combobox
158
+ // pattern) and only filters once the user actually types.
159
+ const [isFiltering, setIsFiltering] = useState(false);
141
160
  // Convert ComboboxOption to SelectOption format
142
161
  const selectOptions = React__default.useMemo(() => options.map((opt) => ({
143
162
  id: opt.id,
@@ -145,13 +164,6 @@ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", la
145
164
  value: opt.value,
146
165
  disabled: opt.disabled,
147
166
  })), [options]);
148
- // Custom filter wrapper - filter options before passing to useSelectState
149
- // This allows us to use the custom filterFn prop
150
- selectOptions.filter((opt) => {
151
- // If there's no search value in the internal state yet, return all
152
- // We'll handle filtering via searchValue from selectState
153
- return true; // Let useSelectState handle filtering
154
- });
155
167
  // Use the shared select state hook
156
168
  const selectState = useSelectState({
157
169
  options: selectOptions,
@@ -164,38 +176,43 @@ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", la
164
176
  onCreateOption,
165
177
  createLabel,
166
178
  });
167
- const { isOpen, setIsOpen, searchValue, setSearchValue, highlightedIndex, setHighlightedIndex, filteredOptions: baseFilteredOptions, selectedOption, selectOption, } = selectState;
179
+ const { isOpen, setIsOpen, searchValue, setSearchValue, highlightedIndex, setHighlightedIndex, selectedOption, selectOption, } = selectState;
180
+ // The live filter query. Empty until the user types (`isFiltering`), so the
181
+ // listbox opens on the full option set even when a value is already selected
182
+ // (its label is sitting in `searchValue` for display only). `baseFilteredOptions`
183
+ // is intentionally unused here — the query gate replaces useSelectState's own
184
+ // label-based filtering.
185
+ const effectiveQuery = isFiltering ? searchValue : "";
168
186
  // Apply custom filter function if provided (override the default filtering)
169
187
  const customFilteredOptions = React__default.useMemo(() => {
170
- if (!searchValue)
171
- return baseFilteredOptions;
188
+ if (!effectiveQuery)
189
+ return selectOptions;
172
190
  // Re-filter using custom filterFn
173
- const refiltered = selectOptions.filter((option) => filterFn(option, searchValue));
191
+ const refiltered = selectOptions.filter((option) => filterFn(option, effectiveQuery));
174
192
  // Check if we should show create option
175
193
  const shouldShowCreate = creatable &&
176
- searchValue.trim() !== "" &&
177
- !refiltered.some((option) => option.label.toLowerCase() === searchValue.toLowerCase());
194
+ effectiveQuery.trim() !== "" &&
195
+ !refiltered.some((option) => option.label.toLowerCase() === effectiveQuery.toLowerCase());
178
196
  if (shouldShowCreate) {
179
197
  const createOptionLabel = typeof createLabel === "function"
180
- ? createLabel(searchValue)
181
- : createLabel || `Create "${searchValue}"`;
198
+ ? createLabel(effectiveQuery)
199
+ : createLabel || `Create "${effectiveQuery}"`;
182
200
  return [
183
201
  {
184
202
  id: "__create__",
185
203
  label: createOptionLabel,
186
- value: searchValue,
204
+ value: effectiveQuery,
187
205
  },
188
206
  ...refiltered,
189
207
  ];
190
208
  }
191
209
  return refiltered;
192
210
  }, [
193
- searchValue,
211
+ effectiveQuery,
194
212
  selectOptions,
195
213
  filterFn,
196
214
  creatable,
197
215
  createLabel,
198
- baseFilteredOptions,
199
216
  ]);
200
217
  // Derived state
201
218
  const isDisabled = state === "disabled";
@@ -209,10 +226,29 @@ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", la
209
226
  setSearchValue("");
210
227
  }
211
228
  }, [isOpen, selectedOption, value, setSearchValue]);
212
- // Reset highlighted index when options change
229
+ // Reset highlighted index as the filter query changes the option set.
213
230
  useEffect(() => {
214
231
  setHighlightedIndex(-1);
215
- }, [customFilteredOptions.length, searchValue, setHighlightedIndex]);
232
+ }, [customFilteredOptions.length, effectiveQuery, setHighlightedIndex]);
233
+ // On the closed→open transition, pre-highlight the current selection so
234
+ // keyboard nav starts there and it scrolls into view within the full list.
235
+ // (Only on the transition — not while typing, where the reset above owns the
236
+ // index.) Reset the filter gate whenever the listbox closes so the next open
237
+ // always starts on the full list, regardless of how it closed (click-outside,
238
+ // Escape, Tab, selection).
239
+ useEffect(() => {
240
+ const justOpened = isOpen && !prevOpenRef.current;
241
+ prevOpenRef.current = isOpen;
242
+ if (!isOpen) {
243
+ setIsFiltering(false);
244
+ return;
245
+ }
246
+ if (justOpened && !isFiltering && selectedOption) {
247
+ const idx = selectOptions.findIndex((o) => o.value === selectedOption.value);
248
+ if (idx >= 0)
249
+ setHighlightedIndex(idx);
250
+ }
251
+ }, [isOpen, isFiltering, selectedOption, selectOptions, setHighlightedIndex]);
216
252
  // Handle clear
217
253
  const handleClear = useCallback((e) => {
218
254
  var _a;
@@ -227,6 +263,8 @@ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", la
227
263
  const handleInputChange = useCallback((e) => {
228
264
  const newValue = e.target.value;
229
265
  setSearchValue(newValue);
266
+ // A keystroke turns the visible text into a live filter query.
267
+ setIsFiltering(true);
230
268
  // Open dropdown when typing
231
269
  if (!isOpen && newValue) {
232
270
  setIsOpen(true);
@@ -238,13 +276,19 @@ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", la
238
276
  }, [isOpen, value, onChange, setSearchValue, setIsOpen]);
239
277
  // Handle input focus
240
278
  const handleInputFocus = useCallback(() => {
279
+ var _a;
241
280
  // Skip reopening if we just selected an option
242
281
  if (justSelectedRef.current) {
243
282
  justSelectedRef.current = false;
244
283
  return;
245
284
  }
246
285
  if (openOnFocus && !isDisabled) {
286
+ // Open on the full list (not pre-filtered to the current value) and
287
+ // select the displayed label so the first keystroke replaces it —
288
+ // matching the browser address-bar / Select behavior.
289
+ setIsFiltering(false);
247
290
  setIsOpen(true);
291
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.select();
248
292
  }
249
293
  }, [openOnFocus, isDisabled, setIsOpen]);
250
294
  // Handle option selection
@@ -370,7 +414,7 @@ const ComboboxInner = ({ options, value, onChange, placeholder = "Search...", la
370
414
  return (jsx(SelectProvider, { selectState: modifiedSelectState, size: size, componentState: state, theme: theme, searchable: true, enableTypeahead: false, children: jsxs("div", { ref: ref, className: cn("relative", containerClasses, stateClass, wrapperClassName), ...props, children: [label && (typeof label === 'string' ? (jsx(FormLabel, { htmlFor: comboboxId, state: state, required: required, children: label })) : (label)), jsxs("div", { ref: wrapperRef, className: theme.wrapperStyle, children: [jsx("div", { className: cn(inputGroupClasses, stateClasses, className), children: jsxs("div", { className: "relative flex-1", children: [jsx("input", { ref: inputRef, id: comboboxId, type: "text", role: "combobox", "aria-expanded": isOpen, "aria-haspopup": "listbox", "aria-controls": listboxId, "aria-activedescendant": highlightedIndex >= 0 &&
371
415
  customFilteredOptions[highlightedIndex]
372
416
  ? `${comboboxId}-option-${customFilteredOptions[highlightedIndex].id}`
373
- : undefined, "aria-autocomplete": "list", "aria-invalid": isInvalid, "aria-describedby": helperText ? `${comboboxId}-helper` : undefined, autoComplete: "off", className: cn(inputClasses, sizeClasses, iconStartPadding, (hasRightIcon || showClearButton) && iconEndPadding, showClearButton && "pr-8", inputClassName), value: searchValue, onChange: handleInputChange, onFocus: handleInputFocus, onKeyDown: handleKeyDown, placeholder: placeholder, disabled: isDisabled, required: required }), hasLeftIcon && (jsx("div", { className: theme.iconStartStyle, children: iconStart })), showClearButton && (jsx("button", { type: "button", className: theme.clearButtonStyle, onClick: handleClear, "aria-label": "Clear selection", tabIndex: -1, children: jsx(XMarkIcon, { className: theme.clearIconStyle }) })), hasRightIcon && !showClearButton && (jsx("div", { className: theme.iconEndStyle, children: iconEnd }))] }) }), jsx(ComboboxOptions, { isOpen: isOpen, onClose: () => setIsOpen(false), triggerRef: wrapperRef, portal: portal, placement: placement, offset: offset, emptyMessage: emptyMessage, className: dropdownClassName, listboxId: listboxId, comboboxId: comboboxId })] }), helperText && (typeof helperText === 'string' ? (jsx("p", { id: `${comboboxId}-helper`, className: cn(helperTextClasses, helperTextStateClasses), children: helperText })) : (helperText)), name && (jsx("input", { type: "hidden", name: name, value: value !== undefined ? String(value) : "" }))] }) }));
417
+ : undefined, "aria-autocomplete": "list", "aria-invalid": isInvalid, "aria-describedby": helperText ? `${comboboxId}-helper` : undefined, autoComplete: "off", className: cn(inputClasses, sizeClasses, iconStartPadding, (hasRightIcon || showClearButton) && iconEndPadding, showClearButton && "pr-8", inputClassName), value: searchValue, onChange: handleInputChange, onFocus: handleInputFocus, onKeyDown: handleKeyDown, placeholder: placeholder, disabled: isDisabled, required: required }), hasLeftIcon && (jsx("div", { className: theme.iconStartStyle, children: iconStart })), showClearButton && (jsx("button", { type: "button", className: theme.clearButtonStyle, onClick: handleClear, "aria-label": "Clear selection", tabIndex: -1, children: jsx(XMarkIcon, { className: theme.clearIconStyle }) })), hasRightIcon && !showClearButton && (jsx("div", { className: theme.iconEndStyle, children: iconEnd }))] }) }), jsx(ComboboxOptions, { isOpen: isOpen, onClose: () => setIsOpen(false), triggerRef: wrapperRef, portal: portal, placement: placement, offset: offset, emptyMessage: emptyMessage, className: dropdownClassName, listboxId: listboxId, comboboxId: comboboxId, elevation: elevation, lift: lift })] }), helperText && (typeof helperText === 'string' ? (jsx("p", { id: `${comboboxId}-helper`, className: cn(helperTextClasses, helperTextStateClasses), children: helperText })) : (helperText)), name && (jsx("input", { type: "hidden", name: name, value: value !== undefined ? String(value) : "" }))] }) }));
374
418
  };
375
419
  const ComboboxForwarded = React__default.forwardRef(ComboboxInner);
376
420
  ComboboxForwarded.displayName = "Combobox";
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { SurfaceElevation } from "../../../theme/SurfaceContext";
2
3
  /**
3
4
  * Individual option for Combobox
4
5
  */
@@ -76,6 +77,13 @@ export interface ComboboxProps<T = string> extends Omit<React.HTMLAttributes<HTM
76
77
  placement?: "bottom-start" | "bottom-end" | "top-start" | "top-end";
77
78
  /** Offset from trigger */
78
79
  offset?: number;
80
+ /**
81
+ * Pin the listbox surface elevation rung (overrides the automatic relative lift).
82
+ * A rung number (1–8) or a semantic alias ("surface"/"raised"/"overlay"…).
83
+ */
84
+ elevation?: SurfaceElevation;
85
+ /** `false` opts out of the relative lift — paints at the listbox's base rung. */
86
+ lift?: boolean;
79
87
  }
80
88
  /**
81
89
  * Theme configuration for Combobox
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  /**
2
3
  * Creates direction-aware dropdown animation variants for the DatePicker component
3
4
  * Matches Select component animation pattern for consistency
@@ -1,34 +1,10 @@
1
1
  import React from "react";
2
- import type { DatePickerProps, DatePickerState, DatePickerSize, DateRange, DatePickerMode, DatePickerTheme } from "./DatePicker.types";
2
+ import type { DatePickerProps } from "./DatePicker.types";
3
3
  import { DatePickerTrigger } from "./DatePickerTrigger";
4
4
  import { DatePickerBody } from "./DatePickerBody";
5
5
  import { DatePickerPresets } from "./DatePickerPresets";
6
- interface DatePickerContextType {
7
- mode: DatePickerMode;
8
- isOpen: boolean;
9
- setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
10
- selectedValue: Date | DateRange | undefined;
11
- setSelectedValue: React.Dispatch<React.SetStateAction<Date | DateRange | undefined>>;
12
- minDate?: Date;
13
- maxDate?: Date;
14
- isDateDisabled?: (date: Date) => boolean;
15
- showToday?: boolean;
16
- selectTodayByDefault?: boolean;
17
- weekdays?: string[];
18
- months?: string[];
19
- yearRange?: {
20
- start: number;
21
- end: number;
22
- };
23
- handleDateSelect: (date: Date) => void;
24
- handleRangeSelect?: (range: DateRange) => void;
25
- size: DatePickerSize;
26
- state: DatePickerState;
27
- theme: DatePickerTheme;
28
- triggerRef: React.RefObject<HTMLButtonElement | null>;
29
- contentRef: React.RefObject<HTMLDivElement | null>;
30
- }
31
- export declare const DatePickerContext: React.Context<DatePickerContextType | undefined>;
6
+ import { DatePickerContext } from "./DatePickerContext";
7
+ export { DatePickerContext };
32
8
  /**
33
9
  * Main DatePicker Component - follows Select pattern exactly
34
10
  */
@@ -1,5 +1,6 @@
1
+ "use client";
1
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import React__default, { createContext, useState, useRef, useEffect, useCallback, useMemo } from 'react';
3
+ import React__default, { useState, useRef, useEffect, useCallback, useMemo } from 'react';
3
4
  import { datePickerTheme } from './DatePicker.theme.js';
4
5
  import { FormLabel } from '../FormLabel/FormLabel.js';
5
6
  import { DatePickerTrigger } from './DatePickerTrigger.js';
@@ -7,8 +8,8 @@ import { DatePickerBody } from './DatePickerBody.js';
7
8
  import { DatePickerPresets } from './DatePickerPresets.js';
8
9
  import { cn } from '../../../utils/cn.js';
9
10
  import { formatDateCustom } from '../../../utils/dateUtils.js';
11
+ import { DatePickerContext } from './DatePickerContext.js';
10
12
 
11
- const DatePickerContext = createContext(undefined);
12
13
  /**
13
14
  * Format date for display
14
15
  * Uses formatString if provided, otherwise falls back to dateFormat (Intl API)
@@ -43,7 +44,7 @@ const formatDateRange = (range, formatString, options) => {
43
44
  /**
44
45
  * Main DatePicker Component - follows Select pattern exactly
45
46
  */
46
- const DatePickerComponent = React__default.forwardRef(({ id, name, mode = "single", size = "md", state = "default", value, defaultValue, placeholder = "Select date...", disabled = false, required = false, label, helperText, onChange, onFocus, onBlur, minDate, maxDate, isDateDisabled, showToday = true, selectTodayByDefault = false, weekdays, months, dateFormat, formatString, yearRange, presets, className = "", wrapperClassName = "", portal = true, placement = "bottom-start", offset = 4, children, }, ref) => {
47
+ const DatePickerComponent = React__default.forwardRef(({ id, name, mode = "single", size = "md", state = "default", value, defaultValue, placeholder = "Select date...", disabled = false, required = false, label, helperText, onChange, onFocus, onBlur, minDate, maxDate, isDateDisabled, showToday = true, selectTodayByDefault = false, weekdays, months, dateFormat, formatString, yearRange, presets, className = "", wrapperClassName = "", portal = true, placement = "bottom-start", offset = 4, elevation, lift, children, }, ref) => {
47
48
  var _a, _b;
48
49
  // Merge theme with defaults
49
50
  const theme = { ...datePickerTheme };
@@ -120,7 +121,7 @@ const DatePickerComponent = React__default.forwardRef(({ id, name, mode = "singl
120
121
  theme,
121
122
  triggerRef,
122
123
  contentRef,
123
- }), [mode, isOpen, selectedValue, minDate, maxDate, isDateDisabled, showToday, selectTodayByDefault, weekdays, months, yearRange, handleDateSelect, handleRangeSelect, size, state, theme]), children: jsxs("div", { ref: ref, className: cn(containerStyle, wrapperClassName), children: [label && (typeof label === 'string' ? (jsx(FormLabel, { htmlFor: datePickerId, state: state, required: required, children: label })) : (label)), jsx(DatePickerTrigger, { id: datePickerId, disabled: disabled, isOpen: isOpen, state: state, size: size, onClick: handleButtonClick, onFocus: onFocus, onBlur: onBlur, className: className, "aria-invalid": state === 'invalid' || undefined, "aria-describedby": helperText ? `${datePickerId}-helper` : undefined, children: jsx("span", { className: cn("block truncate", selectedValue ? theme.valueTextStyle : theme.placeholderTextStyle), children: displayValue }) }), jsx(DatePickerBody, { isOpen: isOpen, onClose: () => setIsOpen(false), portal: portal, placement: placement, offset: offset, presets: presets, children: children }), helperText && (typeof helperText === 'string' ? (jsx("p", { id: `${datePickerId}-helper`, className: cn(helperTextStyle, helperTextStateStyle), children: helperText })) : (helperText)), name && mode === "single" && selectedValue instanceof Date && (jsx("input", { type: "hidden", name: name, value: selectedValue.toISOString() })), name &&
124
+ }), [mode, isOpen, selectedValue, minDate, maxDate, isDateDisabled, showToday, selectTodayByDefault, weekdays, months, yearRange, handleDateSelect, handleRangeSelect, size, state, theme]), children: jsxs("div", { ref: ref, className: cn(containerStyle, wrapperClassName), children: [label && (typeof label === 'string' ? (jsx(FormLabel, { htmlFor: datePickerId, state: state, required: required, children: label })) : (label)), jsx(DatePickerTrigger, { id: datePickerId, disabled: disabled, isOpen: isOpen, state: state, size: size, onClick: handleButtonClick, onFocus: onFocus, onBlur: onBlur, className: className, "aria-invalid": state === 'invalid' || undefined, "aria-describedby": helperText ? `${datePickerId}-helper` : undefined, children: jsx("span", { className: cn("block truncate", selectedValue ? theme.valueTextStyle : theme.placeholderTextStyle), children: displayValue }) }), jsx(DatePickerBody, { isOpen: isOpen, onClose: () => setIsOpen(false), portal: portal, placement: placement, offset: offset, presets: presets, elevation: elevation, lift: lift, children: children }), helperText && (typeof helperText === 'string' ? (jsx("p", { id: `${datePickerId}-helper`, className: cn(helperTextStyle, helperTextStateStyle), children: helperText })) : (helperText)), name && mode === "single" && selectedValue instanceof Date && (jsx("input", { type: "hidden", name: name, value: selectedValue.toISOString() })), name &&
124
125
  mode === "range" &&
125
126
  selectedValue &&
126
127
  typeof selectedValue === "object" &&
@@ -10,8 +10,8 @@ import { formsBaseTheme } from '../forms.theme.js';
10
10
  const datePickerTheme = {
11
11
  containerStyle: formsBaseTheme.wrapperStyle,
12
12
  baseStyle: formsBaseTheme.inputGroupBaseStyle + " justify-between cursor-pointer",
13
- // Trigger button style - surface flips automatically between light/dark
14
- triggerButtonStyle: "w-full cursor-pointer bg-[var(--color-surface)]",
13
+ // Trigger button style field fill lifts one rung above the host surface (via --field-fill)
14
+ triggerButtonStyle: "w-full cursor-pointer bg-[var(--field-fill)]",
15
15
  // Placeholder text style - matches Input placeholder styling
16
16
  placeholderTextStyle: "text-[var(--color-text-placeholder)]",
17
17
  // Selected value text style
@@ -26,9 +26,9 @@ const datePickerTheme = {
26
26
  triggerFocusStates: formsBaseTheme.focusStates,
27
27
  iconEndStyle: formsBaseTheme.iconStyles.right,
28
28
  iconEndPadding: formsBaseTheme.iconStyles.padding.right,
29
- // Dropdown body - floating overlay surface flips automatically
30
- bodyStyle: "min-w-fit max-w-none bg-[var(--color-surface-overlay)]/80 backdrop-blur-md border border-[var(--color-border)] rounded-[var(--popover-radius)] shadow-real-xl p-0 overflow-hidden z-[1000] fixed",
31
- bodyWithPresetsStyle: "flex flex-col sm:flex-row w-fit max-w-[calc(100vw-2rem)] sm:max-w-none bg-[var(--color-surface-overlay)]/80 backdrop-blur-md border border-[var(--color-border)] rounded-[var(--popover-radius)] shadow-lg p-0 overflow-hidden z-[1000] fixed",
29
+ // Dropdown body - surface painted by the relative-elevation engine (surfaceClasses)
30
+ bodyStyle: "min-w-fit max-w-none backdrop-blur-md border border-[var(--color-border)] rounded-[var(--popover-radius)] p-0 overflow-hidden z-[1000] fixed",
31
+ bodyWithPresetsStyle: "flex flex-col sm:flex-row w-fit max-w-[calc(100vw-2rem)] sm:max-w-none backdrop-blur-md border border-[var(--color-border)] rounded-[var(--popover-radius)] shadow-lg p-0 overflow-hidden z-[1000] fixed",
32
32
  // Presets sidebar - recessed sunken panel flips automatically
33
33
  presetsContainerStyle: "flex flex-col gap-1 p-3 border-b sm:border-b-0 sm:border-r border-[var(--color-border)] bg-[var(--color-surface-sunken)] sm:min-w-[180px]",
34
34
  // Preset button - surface hover/active fills flip automatically