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

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 (418) hide show
  1. package/dist/bg/1.webp +0 -0
  2. package/dist/bg/10.webp +0 -0
  3. package/dist/bg/11.webp +0 -0
  4. package/dist/bg/12.webp +0 -0
  5. package/dist/bg/13.webp +0 -0
  6. package/dist/bg/14.webp +0 -0
  7. package/dist/bg/15.webp +0 -0
  8. package/dist/bg/16.webp +0 -0
  9. package/dist/bg/17.webp +0 -0
  10. package/dist/bg/18.webp +0 -0
  11. package/dist/bg/19.webp +0 -0
  12. package/dist/bg/2.webp +0 -0
  13. package/dist/bg/20.webp +0 -0
  14. package/dist/bg/21.webp +0 -0
  15. package/dist/bg/22.webp +0 -0
  16. package/dist/bg/3.webp +0 -0
  17. package/dist/bg/4.webp +0 -0
  18. package/dist/bg/5.webp +0 -0
  19. package/dist/bg/6.webp +0 -0
  20. package/dist/bg/7.webp +0 -0
  21. package/dist/bg/8.webp +0 -0
  22. package/dist/bg/9.webp +0 -0
  23. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
  24. package/dist/components/ai/PromptInput/PromptInput.js +7 -140
  25. package/dist/components/ai/PromptInput/VoiceRecorder.js +0 -85
  26. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
  27. package/dist/components/canvas/Background.d.ts +19 -0
  28. package/dist/components/canvas/Background.js +23 -0
  29. package/dist/components/canvas/BaseNode.d.ts +15 -0
  30. package/dist/components/canvas/BaseNode.js +20 -0
  31. package/dist/components/canvas/CanvasToolbar.d.ts +34 -0
  32. package/dist/components/canvas/CanvasToolbar.js +34 -0
  33. package/dist/components/canvas/Edge.d.ts +35 -0
  34. package/dist/components/canvas/Edge.js +97 -0
  35. package/dist/components/canvas/EdgeLayer.d.ts +18 -0
  36. package/dist/components/canvas/EdgeLayer.js +111 -0
  37. package/dist/components/canvas/Handle.d.ts +11 -0
  38. package/dist/components/canvas/Handle.js +63 -0
  39. package/dist/components/canvas/MiniMap.d.ts +22 -0
  40. package/dist/components/canvas/MiniMap.js +105 -0
  41. package/dist/components/canvas/NodeCanvas.d.ts +10 -0
  42. package/dist/components/canvas/NodeCanvas.js +477 -0
  43. package/dist/components/canvas/NodeCanvas.theme.d.ts +7 -0
  44. package/dist/components/canvas/NodeCanvas.theme.js +9 -0
  45. package/dist/components/canvas/NodeCanvas.types.d.ts +187 -0
  46. package/dist/components/canvas/NodeControls.d.ts +25 -0
  47. package/dist/components/canvas/NodeControls.js +40 -0
  48. package/dist/components/canvas/NodeRenderer.d.ts +19 -0
  49. package/dist/components/canvas/NodeRenderer.js +117 -0
  50. package/dist/components/canvas/changes.d.ts +11 -0
  51. package/dist/components/canvas/changes.js +76 -0
  52. package/dist/components/canvas/context/CanvasContext.d.ts +32 -0
  53. package/dist/components/canvas/context/CanvasContext.js +14 -0
  54. package/dist/components/canvas/context/ConnectionContext.d.ts +33 -0
  55. package/dist/components/canvas/context/ConnectionContext.js +13 -0
  56. package/dist/components/canvas/context/HandleRegistry.d.ts +24 -0
  57. package/dist/components/canvas/context/HandleRegistry.js +15 -0
  58. package/dist/components/canvas/context/InteractionContext.d.ts +18 -0
  59. package/dist/components/canvas/context/InteractionContext.js +14 -0
  60. package/dist/components/canvas/context/NodeIdContext.d.ts +3 -0
  61. package/dist/components/canvas/context/NodeIdContext.js +15 -0
  62. package/dist/components/canvas/hooks/useConnection.d.ts +17 -0
  63. package/dist/components/canvas/hooks/useConnection.js +29 -0
  64. package/dist/components/canvas/hooks/useMarquee.d.ts +25 -0
  65. package/dist/components/canvas/hooks/useMarquee.js +91 -0
  66. package/dist/components/canvas/hooks/useNodeDrag.d.ts +23 -0
  67. package/dist/components/canvas/hooks/useNodeDrag.js +110 -0
  68. package/dist/components/canvas/hooks/usePanZoom.d.ts +30 -0
  69. package/dist/components/canvas/hooks/usePanZoom.js +189 -0
  70. package/dist/components/canvas/hooks/useViewport.d.ts +21 -0
  71. package/dist/components/canvas/hooks/useViewport.js +35 -0
  72. package/dist/components/canvas/index.d.ts +14 -0
  73. package/dist/components/canvas/index.js +12 -0
  74. package/dist/components/canvas/layout.d.ts +22 -0
  75. package/dist/components/canvas/layout.js +67 -0
  76. package/dist/components/canvas/utils.d.ts +4 -0
  77. package/dist/components/canvas/utils.js +16 -0
  78. package/dist/components/charts/AreaChart/AreaChart.js +136 -101
  79. package/dist/components/charts/AreaChart/AreaChart.types.d.ts +5 -5
  80. package/dist/components/charts/AreaChart/AreaChart.types.js +1 -0
  81. package/dist/components/charts/BarChart/BarChart.js +207 -143
  82. package/dist/components/charts/BarChart/BarChart.types.d.ts +4 -4
  83. package/dist/components/charts/BarChart/BarChart.types.js +1 -0
  84. package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
  85. package/dist/components/charts/LineChart/LineChart.js +88 -72
  86. package/dist/components/charts/LineChart/LineChart.types.d.ts +3 -3
  87. package/dist/components/charts/RadarChart/RadarChart.js +1 -1
  88. package/dist/components/charts/RadarChart/RadarChart.theme.js +5 -2
  89. package/dist/components/charts/ScatterPlot/ScatterPlot.js +62 -72
  90. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +10 -1
  91. package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +3 -9
  92. package/dist/components/charts/StackedBarChart/StackedBarChart.js +33 -33
  93. package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
  94. package/dist/components/charts/hooks/index.d.ts +2 -0
  95. package/dist/components/charts/hooks/useChartDimensions.d.ts +29 -0
  96. package/dist/components/charts/hooks/useChartDimensions.js +42 -0
  97. package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +1 -1
  98. package/dist/components/charts/types/chart.types.d.ts +11 -2
  99. package/dist/components/charts/types/chart.types.js +10 -3
  100. package/dist/components/core/Avatar/Avatar.js +5 -1
  101. package/dist/components/core/AvatarGroup/AvatarGroup.js +5 -1
  102. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +4 -2
  103. package/dist/components/core/Badge/Badge.js +1 -1
  104. package/dist/components/core/Badge/Badge.theme.js +16 -15
  105. package/dist/components/core/Button/Button.js +1 -1
  106. package/dist/components/core/Button/Button.theme.js +3 -3
  107. package/dist/components/core/Calendar/Calendar.theme.js +1 -1
  108. package/dist/components/core/Card/Card.js +7 -3
  109. package/dist/components/core/Card/Card.theme.js +3 -3
  110. package/dist/components/core/Card/Card.types.d.ts +27 -2
  111. package/dist/components/core/CommandPalette/CommandItem.js +4 -5
  112. package/dist/components/core/CommandPalette/CommandPalette.js +1 -1
  113. package/dist/components/core/CommandPalette/CommandPalette.theme.js +11 -13
  114. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +0 -2
  115. package/dist/components/core/ContextMenu/ContextMenu.theme.js +14 -15
  116. package/dist/components/core/ContextMenu/ContextMenuItem.js +1 -1
  117. package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +1 -1
  118. package/dist/components/core/DotSeparator/DotSeparator.d.ts +3 -0
  119. package/dist/components/core/DotSeparator/DotSeparator.js +19 -0
  120. package/dist/components/core/DotSeparator/DotSeparator.theme.d.ts +2 -0
  121. package/dist/components/core/DotSeparator/DotSeparator.theme.js +10 -0
  122. package/dist/components/core/DotSeparator/DotSeparator.types.d.ts +25 -0
  123. package/dist/components/core/DotSeparator/index.d.ts +3 -0
  124. package/dist/components/core/Dropdown/Dropdown.theme.js +5 -6
  125. package/dist/components/core/Dropdown/DropdownItem.js +1 -1
  126. package/dist/components/core/Dropdown/DropdownMenu.js +58 -30
  127. package/dist/components/core/HeroCard/HeroCard.d.ts +5 -0
  128. package/dist/components/core/HeroCard/HeroCard.js +99 -0
  129. package/dist/components/core/HeroCard/HeroCard.theme.d.ts +3 -0
  130. package/dist/components/core/HeroCard/HeroCard.theme.js +8 -0
  131. package/dist/components/core/HeroCard/HeroCard.types.d.ts +70 -0
  132. package/dist/components/core/HeroCard/index.d.ts +4 -0
  133. package/dist/components/core/Kbd/Kbd.theme.js +1 -1
  134. package/dist/components/core/MenuItem/MenuItem.js +5 -2
  135. package/dist/components/core/MenuItem/MenuItem.theme.d.ts +6 -0
  136. package/dist/components/core/MenuItem/MenuItem.theme.js +19 -16
  137. package/dist/components/core/MenuItem/MenuItem.types.d.ts +2 -0
  138. package/dist/components/core/Modal/Modal.d.ts +1 -1
  139. package/dist/components/core/Modal/Modal.js +2 -7
  140. package/dist/components/core/Modal/Modal.theme.js +4 -8
  141. package/dist/components/core/Modal/Modal.types.d.ts +0 -10
  142. package/dist/components/core/Modal/index.d.ts +1 -1
  143. package/dist/components/core/ModalStack/ModalStack.d.ts +1 -1
  144. package/dist/components/core/ModalStack/ModalStack.types.d.ts +1 -2
  145. package/dist/components/core/ModalStack/ModalStackModal.d.ts +1 -1
  146. package/dist/components/core/ModalStack/ModalStackModal.js +2 -7
  147. package/dist/components/core/NavItem/NavItem.js +20 -4
  148. package/dist/components/core/NavItem/NavItem.theme.js +13 -2
  149. package/dist/components/core/PageHeading/PageHeading.theme.js +2 -2
  150. package/dist/components/core/Popover/Popover.theme.js +1 -1
  151. package/dist/components/core/Popover/Popover.types.d.ts +6 -2
  152. package/dist/components/core/Popover/PopoverBody.js +10 -3
  153. package/dist/components/core/ScrollArea/ScrollArea.js +242 -4
  154. package/dist/components/core/ScrollArea/ScrollArea.types.d.ts +12 -1
  155. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +4 -0
  156. package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +23 -0
  157. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +4 -0
  158. package/dist/components/core/ScrollArea/smooth/useSmoothScroll.types.d.ts +5 -0
  159. package/dist/components/core/Segmented/Segmented.theme.js +2 -2
  160. package/dist/components/core/Sidebar/Sidebar.d.ts +2 -0
  161. package/dist/components/core/Sidebar/Sidebar.js +15 -7
  162. package/dist/components/core/Sidebar/Sidebar.types.d.ts +92 -4
  163. package/dist/components/core/Sidebar/SidebarCard.d.ts +25 -0
  164. package/dist/components/core/Sidebar/SidebarCard.js +68 -0
  165. package/dist/components/core/Sidebar/SidebarCard.theme.d.ts +8 -0
  166. package/dist/components/core/Sidebar/SidebarCard.theme.js +18 -0
  167. package/dist/components/core/Sidebar/SidebarContent.js +5 -1
  168. package/dist/components/core/Sidebar/SidebarContext.js +1 -1
  169. package/dist/components/core/Sidebar/SidebarHeader.js +10 -2
  170. package/dist/components/core/Sidebar/SidebarLogo.js +38 -3
  171. package/dist/components/core/Sidebar/SidebarSearch.d.ts +22 -0
  172. package/dist/components/core/Sidebar/SidebarSearch.js +135 -0
  173. package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
  174. package/dist/components/core/Sidebar/SidebarUserProfile.js +2 -2
  175. package/dist/components/core/Sidebar/index.d.ts +3 -1
  176. package/dist/components/core/Tag/Tag.js +29 -5
  177. package/dist/components/core/Tag/Tag.theme.js +13 -8
  178. package/dist/components/core/Tag/Tag.types.d.ts +7 -0
  179. package/dist/components/core/Tooltip/Tooltip.js +1 -1
  180. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -2
  181. package/dist/components/core/index.d.ts +2 -0
  182. package/dist/components/core/index.js +6 -0
  183. package/dist/components/data-display/DescriptionList/DescriptionList.js +23 -7
  184. package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +10 -3
  185. package/dist/components/data-display/DescriptionList/DescriptionList.types.d.ts +49 -10
  186. package/dist/components/data-display/DescriptionList/index.d.ts +1 -1
  187. package/dist/components/data-display/Feed/Feed.js +28 -5
  188. package/dist/components/data-display/Feed/Feed.theme.js +1 -1
  189. package/dist/components/data-display/Feed/Feed.types.d.ts +32 -1
  190. package/dist/components/data-display/Feed/index.d.ts +1 -1
  191. package/dist/components/data-display/GanttChart/GanttChart.d.ts +1 -1
  192. package/dist/components/data-display/GanttChart/GanttChart.js +31 -4
  193. package/dist/components/data-display/GanttChart/GanttChart.theme.js +19 -17
  194. package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +19 -0
  195. package/dist/components/data-display/GanttChart/GanttChart.utils.js +1 -1
  196. package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +1 -1
  197. package/dist/components/data-display/GanttChart/GanttChartPanel.js +3 -3
  198. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +7 -4
  199. package/dist/components/data-display/GanttChart/GanttMilestone.js +5 -5
  200. package/dist/components/data-display/GanttChart/GanttTablePanel.js +1 -1
  201. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +2 -2
  202. package/dist/components/data-display/GanttChart/GanttTaskBar.js +37 -16
  203. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +2 -1
  204. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +35 -11
  205. package/dist/components/data-display/GanttChart/GanttToolbar.js +2 -2
  206. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +3 -2
  207. package/dist/components/data-display/GanttChart/index.d.ts +1 -1
  208. package/dist/components/data-display/Metric/Metric.js +8 -8
  209. package/dist/components/data-display/Metric/Metric.theme.d.ts +3 -2
  210. package/dist/components/data-display/Metric/Metric.theme.js +50 -68
  211. package/dist/components/data-display/Metric/Metric.types.d.ts +19 -21
  212. package/dist/components/data-display/Table/Table.js +2 -2
  213. package/dist/components/data-display/Table/Table.theme.js +27 -9
  214. package/dist/components/data-display/Table/Table.types.d.ts +8 -0
  215. package/dist/components/data-display/Table/TableBody.js +2 -2
  216. package/dist/components/data-display/Table/TableCell.js +1 -1
  217. package/dist/components/data-display/Table/TableRow.d.ts +1 -1
  218. package/dist/components/data-display/Table/TableRow.js +9 -2
  219. package/dist/components/data-display/Timeline/Timeline.js +27 -5
  220. package/dist/components/data-display/Timeline/Timeline.theme.d.ts +10 -2
  221. package/dist/components/data-display/Timeline/Timeline.theme.js +14 -8
  222. package/dist/components/data-display/Timeline/Timeline.types.d.ts +48 -16
  223. package/dist/components/data-display/Timeline/Timeline.utils.d.ts +6 -0
  224. package/dist/components/data-display/Timeline/Timeline.utils.js +11 -0
  225. package/dist/components/data-display/Timeline/TimelineItem.js +13 -20
  226. package/dist/components/data-display/Timeline/TimelineMarker.js +10 -8
  227. package/dist/components/data-display/Timeline/index.d.ts +2 -2
  228. package/dist/components/effects/3d/index.d.ts +0 -2
  229. package/dist/components/effects/3d/index.js +0 -1
  230. package/dist/components/effects/Aurora/Aurora.d.ts +6 -17
  231. package/dist/components/effects/Aurora/Aurora.js +297 -131
  232. package/dist/components/effects/Aurora/Aurora.types.d.ts +6 -0
  233. package/dist/components/effects/DotPattern/DotPattern.js +1 -1
  234. package/dist/components/effects/Overlay/Overlay.theme.js +1 -2
  235. package/dist/components/effects/Preloader/Preloader.animations.d.ts +23 -0
  236. package/dist/components/effects/Preloader/Preloader.animations.js +150 -0
  237. package/dist/components/effects/Preloader/Preloader.d.ts +3 -0
  238. package/dist/components/effects/Preloader/Preloader.js +119 -0
  239. package/dist/components/effects/Preloader/Preloader.types.d.ts +63 -0
  240. package/dist/components/effects/Preloader/index.d.ts +2 -0
  241. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +25 -14
  242. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +2 -0
  243. package/dist/components/effects/TiltCard/TiltCard.d.ts +12 -0
  244. package/dist/components/effects/TiltCard/TiltCard.glow.d.ts +28 -0
  245. package/dist/components/effects/TiltCard/TiltCard.glow.js +114 -0
  246. package/dist/components/effects/TiltCard/TiltCard.js +177 -0
  247. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.d.ts → TiltCard/TiltCard.shaders.d.ts} +1 -1
  248. package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.js → TiltCard/TiltCard.shaders.js} +1 -1
  249. package/dist/components/effects/TiltCard/TiltCard.types.d.ts +88 -0
  250. package/dist/components/effects/TiltCard/index.d.ts +2 -0
  251. package/dist/components/effects/index.d.ts +4 -12
  252. package/dist/components/effects/index.js +2 -6
  253. package/dist/components/forms/Checkbox/Checkbox.js +7 -1
  254. package/dist/components/forms/Combobox/Combobox.js +1 -1
  255. package/dist/components/forms/Combobox/Combobox.theme.js +2 -4
  256. package/dist/components/forms/DatePicker/DatePicker.theme.js +11 -18
  257. package/dist/components/forms/DatePicker/DatePickerTrigger.js +1 -1
  258. package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +6 -13
  259. package/dist/components/forms/DateRangePicker/DateRangePickerTrigger.js +1 -1
  260. package/dist/components/forms/FileUpload/FileUpload.animations.d.ts +29 -0
  261. package/dist/components/forms/FileUpload/FileUpload.animations.js +19 -0
  262. package/dist/components/forms/FileUpload/FileUpload.js +85 -134
  263. package/dist/components/forms/FileUpload/FileUpload.theme.d.ts +2 -10
  264. package/dist/components/forms/FileUpload/FileUpload.theme.js +16 -30
  265. package/dist/components/forms/FileUpload/FileUpload.types.d.ts +26 -10
  266. package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
  267. package/dist/components/forms/Input/Input.theme.js +13 -10
  268. package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
  269. package/dist/components/forms/Mention/Mention.js +152 -57
  270. package/dist/components/forms/Mention/Mention.theme.js +16 -23
  271. package/dist/components/forms/Mention/Mention.types.d.ts +12 -12
  272. package/dist/components/forms/Mention/Mention.utils.js +32 -4
  273. package/dist/components/forms/RichTextEditor/RichTextEditor.js +3 -3
  274. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +5 -5
  275. package/dist/components/forms/Select/Select.js +2 -2
  276. package/dist/components/forms/Select/Select.theme.js +3 -3
  277. package/dist/components/forms/Slider/Slider.theme.js +1 -1
  278. package/dist/components/forms/Switch/Switch.js +27 -15
  279. package/dist/components/forms/Switch/Switch.theme.d.ts +36 -6
  280. package/dist/components/forms/Switch/Switch.theme.js +33 -4
  281. package/dist/components/forms/Switch/Switch.types.d.ts +12 -2
  282. package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -2
  283. package/dist/components/forms/TimePicker/TimePickerContent.js +1 -87
  284. package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
  285. package/dist/components/forms/forms.theme.js +21 -16
  286. package/dist/components/forms/index.d.ts +0 -4
  287. package/dist/components/forms/index.js +0 -89
  288. package/dist/components/generative/GenerativeView.d.ts +21 -0
  289. package/dist/components/generative/GenerativeView.js +116 -0
  290. package/dist/components/generative/actions.d.ts +26 -0
  291. package/dist/components/generative/actions.js +51 -0
  292. package/dist/components/generative/index.d.ts +11 -0
  293. package/dist/components/generative/index.js +9 -0
  294. package/dist/components/generative/registry.d.ts +43 -0
  295. package/dist/components/generative/registry.js +114 -0
  296. package/dist/components/generative/resolvers.d.ts +35 -0
  297. package/dist/components/generative/resolvers.js +93 -0
  298. package/dist/components/generative/schema.generated.d.ts +2 -0
  299. package/dist/components/generative/schema.generated.js +1639 -0
  300. package/dist/components/generative/schemaTypes.d.ts +30 -0
  301. package/dist/components/generative/streaming.d.ts +39 -0
  302. package/dist/components/generative/streaming.js +283 -0
  303. package/dist/components/generative/tools.d.ts +21 -0
  304. package/dist/components/generative/tools.js +54 -0
  305. package/dist/components/generative/types.d.ts +41 -0
  306. package/dist/components/generative/useGenerativeStream.d.ts +37 -0
  307. package/dist/components/generative/useGenerativeStream.js +36 -0
  308. package/dist/components/generative/validate.d.ts +24 -0
  309. package/dist/components/generative/validate.js +259 -0
  310. package/dist/components/layout/AppShell/AppShell.d.ts +10 -0
  311. package/dist/components/layout/AppShell/AppShell.js +84 -0
  312. package/dist/components/layout/AppShell/AppShell.theme.d.ts +3 -0
  313. package/dist/components/layout/AppShell/AppShell.theme.js +42 -0
  314. package/dist/components/layout/AppShell/AppShell.types.d.ts +127 -0
  315. package/dist/components/layout/AppShell/AppShellContext.d.ts +14 -0
  316. package/dist/components/layout/AppShell/AppShellContext.js +19 -0
  317. package/dist/components/layout/AppShell/AppShellFooter.d.ts +3 -0
  318. package/dist/components/layout/AppShell/AppShellFooter.js +12 -0
  319. package/dist/components/layout/AppShell/AppShellHeader.d.ts +3 -0
  320. package/dist/components/layout/AppShell/AppShellHeader.js +12 -0
  321. package/dist/components/layout/AppShell/AppShellMain.d.ts +3 -0
  322. package/dist/components/layout/AppShell/AppShellMain.js +19 -0
  323. package/dist/components/layout/AppShell/AppShellRightPanel.d.ts +3 -0
  324. package/dist/components/layout/AppShell/AppShellRightPanel.js +16 -0
  325. package/dist/components/layout/AppShell/AppShellSidebar.d.ts +3 -0
  326. package/dist/components/layout/AppShell/AppShellSidebar.js +16 -0
  327. package/dist/components/layout/AppShell/AppShellTopbar.d.ts +3 -0
  328. package/dist/components/layout/AppShell/AppShellTopbar.js +12 -0
  329. package/dist/components/layout/AppShell/index.d.ts +3 -0
  330. package/dist/components/layout/FormLayout/FormLayout.js +1 -87
  331. package/dist/components/layout/Grid/Grid.d.ts +3 -0
  332. package/dist/components/layout/Grid/Grid.js +50 -0
  333. package/dist/components/layout/Grid/Grid.theme.d.ts +2 -0
  334. package/dist/components/layout/Grid/Grid.theme.js +35 -0
  335. package/dist/components/layout/Grid/Grid.types.d.ts +57 -0
  336. package/dist/components/layout/Grid/index.d.ts +3 -0
  337. package/dist/components/layout/Section/Section.d.ts +3 -0
  338. package/dist/components/layout/Section/Section.js +18 -0
  339. package/dist/components/layout/Section/Section.theme.d.ts +2 -0
  340. package/dist/components/layout/Section/Section.theme.js +10 -0
  341. package/dist/components/layout/Section/Section.types.d.ts +34 -0
  342. package/dist/components/layout/Section/index.d.ts +3 -0
  343. package/dist/components/layout/Stack/Stack.d.ts +3 -0
  344. package/dist/components/layout/Stack/Stack.js +19 -0
  345. package/dist/components/layout/Stack/Stack.theme.d.ts +2 -0
  346. package/dist/components/layout/Stack/Stack.theme.js +10 -0
  347. package/dist/components/layout/Stack/Stack.types.d.ts +39 -0
  348. package/dist/components/layout/Stack/index.d.ts +3 -0
  349. package/dist/components/layout/index.d.ts +4 -0
  350. package/dist/components/layout/index.js +8 -0
  351. package/dist/generative.schema.json +1637 -0
  352. package/dist/hooks/useSelectPortal.d.ts +10 -2
  353. package/dist/hooks/useSelectPortal.js +45 -24
  354. package/dist/index.js +180 -174
  355. package/dist/registry.json +10205 -0
  356. package/dist/styles.css +1 -1
  357. package/dist/tools.json +1731 -0
  358. package/dist/utils/dateUtils.js +11 -1
  359. package/package.json +19 -4
  360. package/src/global.scss +82 -109
  361. package/src/styles/theme.css +707 -474
  362. package/dist/bg/1.jpg +0 -0
  363. package/dist/bg/10.jpg +0 -0
  364. package/dist/bg/11.jpg +0 -0
  365. package/dist/bg/14.jpg +0 -0
  366. package/dist/bg/15.jpg +0 -0
  367. package/dist/bg/16.jpg +0 -0
  368. package/dist/bg/17.jpg +0 -0
  369. package/dist/bg/18.jpg +0 -0
  370. package/dist/bg/19.jpg +0 -0
  371. package/dist/bg/2.jpg +0 -0
  372. package/dist/bg/20.jpg +0 -0
  373. package/dist/bg/21.jpg +0 -0
  374. package/dist/bg/22.jpg +0 -0
  375. package/dist/bg/23.jpg +0 -0
  376. package/dist/bg/24.jpg +0 -0
  377. package/dist/bg/3.jpg +0 -0
  378. package/dist/bg/4.jpg +0 -0
  379. package/dist/bg/5.jpg +0 -0
  380. package/dist/bg/6.jpg +0 -0
  381. package/dist/bg/7.jpg +0 -0
  382. package/dist/bg/8.jpg +0 -0
  383. package/dist/bg/9.jpg +0 -0
  384. package/dist/components/effects/MorphingText/MorphingText.d.ts +0 -17
  385. package/dist/components/effects/MorphingText/MorphingText.js +0 -125
  386. package/dist/components/effects/MorphingText/MorphingText.types.d.ts +0 -18
  387. package/dist/components/effects/MorphingText/index.d.ts +0 -2
  388. package/dist/components/effects/PageTransition/PageTransition.animations.d.ts +0 -8
  389. package/dist/components/effects/PageTransition/PageTransition.animations.js +0 -53
  390. package/dist/components/effects/PageTransition/PageTransition.d.ts +0 -3
  391. package/dist/components/effects/PageTransition/PageTransition.js +0 -82
  392. package/dist/components/effects/PageTransition/PageTransition.types.d.ts +0 -15
  393. package/dist/components/effects/PageTransition/index.d.ts +0 -2
  394. package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +0 -26
  395. package/dist/components/effects/ParallaxSection/ParallaxSection.js +0 -71
  396. package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +0 -11
  397. package/dist/components/effects/ParallaxSection/index.d.ts +0 -2
  398. package/dist/components/effects/Spotlight/Spotlight.d.ts +0 -36
  399. package/dist/components/effects/Spotlight/Spotlight.js +0 -112
  400. package/dist/components/effects/Spotlight/Spotlight.types.d.ts +0 -29
  401. package/dist/components/effects/Spotlight/index.d.ts +0 -2
  402. package/dist/components/effects/SpotlightBorder/SpotlightBorder.d.ts +0 -18
  403. package/dist/components/effects/SpotlightBorder/SpotlightBorder.js +0 -213
  404. package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.d.ts +0 -61
  405. package/dist/components/effects/SpotlightBorder/index.d.ts +0 -2
  406. package/dist/components/effects/StickyScroll/StickyScroll.d.ts +0 -30
  407. package/dist/components/effects/StickyScroll/StickyScroll.js +0 -128
  408. package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +0 -19
  409. package/dist/components/effects/StickyScroll/index.d.ts +0 -2
  410. package/dist/components/forms/CronInput/CronInput.d.ts +0 -3
  411. package/dist/components/forms/CronInput/CronInput.js +0 -113
  412. package/dist/components/forms/CronInput/CronInput.theme.d.ts +0 -6
  413. package/dist/components/forms/CronInput/CronInput.theme.js +0 -84
  414. package/dist/components/forms/CronInput/CronInput.types.d.ts +0 -109
  415. package/dist/components/forms/CronInput/CronInput.utils.d.ts +0 -67
  416. package/dist/components/forms/CronInput/CronInput.utils.js +0 -505
  417. package/dist/components/forms/CronInput/index.d.ts +0 -4
  418. /package/dist/components/effects/{SpotlightBorder/SpotlightBorder.types.js → TiltCard/TiltCard.types.js} +0 -0
@@ -5,12 +5,18 @@ const tableTheme = {
5
5
  // Light: white background | Dark: neutral-900 background
6
6
  baseStyle: "w-full border-separate border-spacing-0 text-sm",
7
7
  // Variant styles
8
- // Each variant gets dark mode border colors and alternate row colors
8
+ // Each variant gets dark mode border colors and alternate row colors.
9
+ // Non-grid variants (default/striped/compact) drop the bottom border on the
10
+ // last body row — the closing line is then carried by the surrounding card
11
+ // border, or by the pagination footer's `border-t` when pagination is shown.
12
+ // `bordered` is a full grid and keeps its closing edge.
9
13
  variants: {
10
14
  default: "border-[var(--color-border)] dark:border-[var(--color-neutral-700)] " +
15
+ "[&>tbody>tr:last-child>td]:border-b-0 " +
11
16
  "[&_td]:px-3 [&_td]:py-2.5 [&_th]:px-3 [&_th]:py-2.5",
12
17
  striped: "border-[var(--color-border)] dark:border-[var(--color-neutral-700)] " +
13
18
  "[&>tbody>tr:nth-child(odd)]:bg-[var(--color-neutral-50)] dark:[&>tbody>tr:nth-child(odd)]:bg-[var(--color-neutral-800)] " +
19
+ "[&>tbody>tr:last-child>td]:border-b-0 " +
14
20
  "[&_td]:px-3 [&_td]:py-2.5 [&_th]:px-3 [&_th]:py-2.5",
15
21
  bordered: "border-t border-l border-[var(--color-border)] dark:border-[var(--color-neutral-700)] " +
16
22
  "[&_td]:border-b [&_td]:border-r [&_th]:border-b [&_th]:border-r " +
@@ -18,6 +24,7 @@ const tableTheme = {
18
24
  "dark:[&_td]:border-[var(--color-neutral-700)] dark:[&_th]:border-[var(--color-neutral-700)] " +
19
25
  "[&_td]:px-3 [&_td]:py-2.5 [&_th]:px-3 [&_th]:py-2.5",
20
26
  compact: "border-[var(--color-border)] dark:border-[var(--color-neutral-700)] " +
27
+ "[&>tbody>tr:last-child>td]:border-b-0 " +
21
28
  "[&_td]:px-3 [&_td]:py-1 [&_th]:px-3 [&_th]:py-1",
22
29
  },
23
30
  // Edge-padding modes — applied at the table root via descendant selectors so they
@@ -28,12 +35,25 @@ const tableTheme = {
28
35
  paddingStyles: {
29
36
  default: "",
30
37
  flush: "[&_th:first-child]:pl-0 [&_th:last-child]:pr-0 " +
31
- "[&_td:first-child]:pl-0 [&_td:last-child]:pr-0",
38
+ "[&_td:first-child]:pl-0 [&_td:last-child]:pr-0 " +
39
+ // Hover inset on ONLY the hovered row's edge cells, with NO column reflow.
40
+ // Padding can't do this (a table shares one width per column across all
41
+ // rows, so padding one cell widens the whole column). Instead we shift the
42
+ // cell's content with `transform`, which is layout-free — it can't resize a
43
+ // column, so auto table-layout / responsive sizing is fully preserved and
44
+ // no other row moves. The row divider is moved from the cells onto the
45
+ // <tr> (inset shadow) so a shifted cell can't drag a notch into it.
46
+ "[&>tbody>tr>td]:border-b-0 " +
47
+ "[&>tbody>tr]:shadow-[inset_0_-1px_0_0_var(--color-border)] [&>tbody>tr:last-child]:shadow-none " +
48
+ "[&>tbody>tr>td]:transition-transform [&>tbody>tr>td]:duration-300 " +
49
+ // first cell eases right (its left padding); last cell eases left only when
50
+ // right-aligned (matches `pr-4` — invisible on left-aligned content).
51
+ "[&>tbody>tr:hover>td:first-child]:translate-x-2 " +
52
+ "[&>tbody>tr:hover>td:last-child.text-right]:-translate-x-2",
32
53
  },
33
54
  // Header styles
34
55
  // Light: primary text, light border | Dark: neutral-200 text, neutral-700 border
35
- headerStyle: "text-left font-semibold sticky top-0 border-b first:pl-4 last:pr-4 " +
36
- "text-[var(--color-text-secondary)]/80 text-sm border-[var(--color-border)] ",
56
+ headerStyle: "text-left sticky top-0 border-b first:pl-4 last:pr-4 text-[var(--color-text-primary)]/60 text-xs font-semibold border-[var(--color-border)] ",
37
57
  // Cell styles — borders on cells (not rows) so sticky columns keep them
38
58
  // Light: primary text | Dark: neutral-300 text
39
59
  cellStyle: "border-b border-b-[var(--color-border)] first:pl-4 last:pr-4 " +
@@ -55,12 +75,10 @@ const tableTheme = {
55
75
  "shadow-lg shadow-[var(--color-neutral-200)]/50 " +
56
76
  "dark:shadow-[var(--color-neutral-900)]/50",
57
77
  // Utility controls - Column manager button
58
- // Light: white bg with light border | Dark: neutral-800 bg with neutral-600 border
78
+ // Surface-like control; surface/border/hover tokens flip automatically between light/dark
59
79
  columnManagerButton: "inline-flex items-center gap-2 rounded-[calc(var(--radius-base)*0.75)] px-3 py-2 text-sm font-medium " +
60
- "focus:outline-none focus:ring-2 focus:ring-[var(--color-primary-500)] focus:ring-offset-2 " +
61
- "dark:focus:ring-offset-[var(--color-neutral-900)] " +
62
- "bg-white border border-[var(--color-neutral-300)] text-[var(--color-text-primary)] hover:bg-[var(--color-neutral-50)] " +
63
- "dark:bg-[var(--color-neutral-800)] dark:border-[var(--color-neutral-600)] dark:text-[var(--color-neutral-200)] dark:hover:bg-[var(--color-neutral-700)]",
80
+ "focus:outline-none focus:ring-2 focus:ring-[var(--color-primary-500)] focus:ring-offset-2 focus:ring-offset-[var(--color-surface)] " +
81
+ "bg-[var(--color-surface)] border border-[var(--color-border)] text-[var(--color-text-primary)] hover:bg-[var(--color-surface-hover)]",
64
82
  columnManagerContainer: "mb-4 flex items-center justify-end gap-2",
65
83
  };
66
84
 
@@ -155,6 +155,12 @@ export interface TableProps<T = unknown> {
155
155
  * Provides consistent component identity during row reordering or updates.
156
156
  */
157
157
  rowKey?: keyof T | ((row: T, index: number) => string | number);
158
+ /**
159
+ * Row-level click handler (data-driven API). When provided, body rows get a
160
+ * pointer cursor, keyboard focus (Enter/Space activates), and call back with
161
+ * the row record. Selection/expansion controls stop propagation as before.
162
+ */
163
+ onRowClick?: (row: T) => void;
158
164
  /** Visual variant for different table styles */
159
165
  variant?: TableVariant;
160
166
  /**
@@ -267,6 +273,7 @@ export interface InternalTableBodyProps<T> {
267
273
  data: T[];
268
274
  columns: Column<T>[];
269
275
  rowKey?: keyof T | ((row: T, index: number) => string | number);
276
+ onRowClick?: (row: T) => void;
270
277
  expandedRowRender?: (row: T) => ReactNode;
271
278
  expandedRows?: string[];
272
279
  onExpandedRowsChange?: (expandedRows: string[]) => void;
@@ -282,6 +289,7 @@ export interface InternalTableRowProps<T> {
282
289
  row: T;
283
290
  rowId: string;
284
291
  columns: Column<T>[];
292
+ onRowClick?: (row: T) => void;
285
293
  expandedRowRender?: (row: T) => ReactNode;
286
294
  isExpanded?: boolean;
287
295
  onExpandChange?: (expanded: boolean) => void;
@@ -4,7 +4,7 @@ import { getRowId } from './Table.utils.js';
4
4
  import { useTableExpansion } from './hooks/useTableExpansion.js';
5
5
  import { useTableSelection } from './hooks/useTableSelection.js';
6
6
 
7
- function TableBodyComponent({ data, columns, rowKey, expandedRowRender, expandedRows = [], onExpandedRowsChange, selectable, selectionType, selectedRows = [], onSelectionChange, freezeFirstColumn, freezeLastColumn, theme, }) {
7
+ function TableBodyComponent({ data, columns, rowKey, onRowClick, expandedRowRender, expandedRows = [], onExpandedRowsChange, selectable, selectionType, selectedRows = [], onSelectionChange, freezeFirstColumn, freezeLastColumn, theme, }) {
8
8
  const { handleExpandChange } = useTableExpansion({
9
9
  expandedRows,
10
10
  onExpandedRowsChange,
@@ -18,7 +18,7 @@ function TableBodyComponent({ data, columns, rowKey, expandedRowRender, expanded
18
18
  });
19
19
  return (jsx("tbody", { children: data.map((row, index) => {
20
20
  const rowId = getRowId(row, index, rowKey);
21
- return (jsx(TableRow, { row: row, rowId: rowId, columns: columns, expandedRowRender: expandedRowRender, isExpanded: expandedRows.includes(rowId), onExpandChange: (expanded) => handleExpandChange(rowId, expanded), selectable: selectable, selectionType: selectionType, isSelected: selectedRows.includes(rowId), onSelectionChange: (selected) => handleSelectionChange(rowId, selected), freezeFirstColumn: freezeFirstColumn, freezeLastColumn: freezeLastColumn, theme: theme }, rowId));
21
+ return (jsx(TableRow, { row: row, rowId: rowId, columns: columns, onRowClick: onRowClick, expandedRowRender: expandedRowRender, isExpanded: expandedRows.includes(rowId), onExpandChange: (expanded) => handleExpandChange(rowId, expanded), selectable: selectable, selectionType: selectionType, isSelected: selectedRows.includes(rowId), onSelectionChange: (selected) => handleSelectionChange(rowId, selected), freezeFirstColumn: freezeFirstColumn, freezeLastColumn: freezeLastColumn, theme: theme }, rowId));
22
22
  }) }));
23
23
  }
24
24
  const TableBody = TableBodyComponent;
@@ -12,7 +12,7 @@ import { TableContext } from './Table.js';
12
12
  */
13
13
  function TableCellComponent({ column, row, rowId, isHeader = false, isFrozen = false, isLastFrozen = false, isSelected = false, theme, children, }) {
14
14
  const { isOverflowing } = useContext(TableContext);
15
- const overflowFrozenStyle = isOverflowing ? "backdrop-blur-sm bg-black/5 dark:bg-white/5" : undefined;
15
+ const overflowFrozenStyle = isOverflowing ? "backdrop-blur-md" : undefined;
16
16
  const Cell = isHeader ? 'th' : 'td';
17
17
  const isUtilityColumn = column.id === UTILITY_COLUMN_ID;
18
18
  // For header cells, render the column header content
@@ -1,5 +1,5 @@
1
1
  import { InternalTableRowProps } from "./Table.types";
2
- declare function TableRowComponent<T extends Record<string, any>>({ row, rowId, columns, expandedRowRender, isExpanded, onExpandChange, selectable, selectionType, isSelected, onSelectionChange, freezeFirstColumn, freezeLastColumn, theme, }: InternalTableRowProps<T>): import("react/jsx-runtime").JSX.Element;
2
+ declare function TableRowComponent<T extends Record<string, any>>({ row, rowId, columns, onRowClick, expandedRowRender, isExpanded, onExpandChange, selectable, selectionType, isSelected, onSelectionChange, freezeFirstColumn, freezeLastColumn, theme, }: InternalTableRowProps<T>): import("react/jsx-runtime").JSX.Element;
3
3
  declare namespace TableRowComponent {
4
4
  var displayName: string;
5
5
  }
@@ -10,14 +10,21 @@ import { UTILITY_COLUMN_WIDTH, UTILITY_COLUMN_ID } from './Table.utils.js';
10
10
  import { cn } from '../../../utils/cn.js';
11
11
  import { tableExpandAnimations, tableExpandContentAnimations } from './Table.animations.js';
12
12
 
13
- function TableRowComponent({ row, rowId, columns, expandedRowRender, isExpanded = false, onExpandChange, selectable, selectionType, isSelected = false, onSelectionChange, freezeFirstColumn, freezeLastColumn, theme, }) {
13
+ function TableRowComponent({ row, rowId, columns, onRowClick, expandedRowRender, isExpanded = false, onExpandChange, selectable, selectionType, isSelected = false, onSelectionChange, freezeFirstColumn, freezeLastColumn, theme, }) {
14
14
  const rowClasses = cn(theme === null || theme === void 0 ? void 0 : theme.rowStyle, isSelected && (theme === null || theme === void 0 ? void 0 : theme.selectedRowStyle));
15
15
  const handleExpandClick = (e) => {
16
16
  e.stopPropagation();
17
17
  onExpandChange === null || onExpandChange === void 0 ? void 0 : onExpandChange(!isExpanded);
18
18
  };
19
19
  const colSpan = columns.length + (selectable || !!expandedRowRender ? 1 : 0);
20
- return (jsxs(Fragment, { children: [jsxs("tr", { className: rowClasses, "data-selected": isSelected, role: "row", "aria-selected": selectable ? isSelected : undefined, "aria-expanded": Boolean(expandedRowRender) ? isExpanded : undefined, children: [(selectable || expandedRowRender) && (jsx(TableCell, { column: {
20
+ return (jsxs(Fragment, { children: [jsxs("tr", { className: cn(rowClasses, onRowClick && "cursor-pointer"), "data-selected": isSelected, role: "row", "aria-selected": selectable ? isSelected : undefined, "aria-expanded": Boolean(expandedRowRender) ? isExpanded : undefined, tabIndex: onRowClick ? 0 : undefined, onClick: onRowClick ? () => onRowClick(row) : undefined, onKeyDown: onRowClick
21
+ ? (e) => {
22
+ if (e.target === e.currentTarget && (e.key === "Enter" || e.key === " ")) {
23
+ e.preventDefault();
24
+ onRowClick(row);
25
+ }
26
+ }
27
+ : undefined, children: [(selectable || expandedRowRender) && (jsx(TableCell, { column: {
21
28
  id: UTILITY_COLUMN_ID,
22
29
  header: "",
23
30
  accessor: () => "",
@@ -1,4 +1,4 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import React__default, { useContext, createContext, useMemo } from 'react';
3
3
  import { cn } from '../../../utils/cn.js';
4
4
  import { timelineTheme } from './Timeline.theme.js';
@@ -14,7 +14,15 @@ const useTimelineContext = () => {
14
14
  throw new Error("Timeline compound components must be used within <Timeline>");
15
15
  return ctx;
16
16
  };
17
- const TimelineRoot = React__default.forwardRef(({ children, className, layout = "vertical", theme: themeOverrides, ...props }, ref) => {
17
+ /**
18
+ * Render a single data-driven item to the compound primitives. Keeps one
19
+ * rendering path: `items` and the compound API both produce `Timeline.Item`s.
20
+ */
21
+ function renderItemData(item, index, theme) {
22
+ var _a, _b;
23
+ return (jsxs(TimelineItem, { status: item.status, className: item.className, children: [jsx(TimelineMarker, { icon: item.icon }), jsx(TimelineContent, { children: (_a = item.content) !== null && _a !== void 0 ? _a : (jsxs(Fragment, { children: [item.title != null && (jsx("p", { className: theme.titleStyle, children: item.title })), item.description != null && (jsx("p", { className: theme.descriptionStyle, children: item.description })), item.timestamp != null && (jsx("p", { className: theme.timestampStyle, children: item.timestamp }))] })) })] }, (_b = item.key) !== null && _b !== void 0 ? _b : index));
24
+ }
25
+ const TimelineRoot = React__default.forwardRef(({ children, items, className, layout = "vertical", theme: themeOverrides, ...props }, ref) => {
18
26
  // Merge theme with any overrides
19
27
  const theme = useMemo(() => ({
20
28
  ...timelineTheme,
@@ -24,8 +32,22 @@ const TimelineRoot = React__default.forwardRef(({ children, className, layout =
24
32
  ...((themeOverrides === null || themeOverrides === void 0 ? void 0 : themeOverrides.markerStatuses) || {}),
25
33
  },
26
34
  }), [themeOverrides]);
27
- // Count total children for index tracking
28
- const totalItems = React__default.Children.count(children);
35
+ if (process.env.NODE_ENV !== "production" &&
36
+ items &&
37
+ React__default.Children.count(children) > 0) {
38
+ console.warn("[Timeline]: both `items` and children were provided — `items` takes precedence and children are ignored.");
39
+ }
40
+ // Data-driven path renders to the same compound primitives as the
41
+ // composition path, so everything downstream is identical.
42
+ const baseChildren = items
43
+ ? items.map((item, i) => renderItemData(item, i, theme))
44
+ : children;
45
+ // Inject each item's index from a single source of truth (the rendered
46
+ // children array) — no DOM measurement, no IntersectionObserver-derived order.
47
+ const indexedChildren = React__default.Children.map(baseChildren, (child, index) => React__default.isValidElement(child)
48
+ ? React__default.cloneElement(child, { _index: index })
49
+ : child);
50
+ const totalItems = React__default.Children.count(baseChildren);
29
51
  // Context value to be provided to children
30
52
  const contextValue = useMemo(() => ({
31
53
  layout,
@@ -33,7 +55,7 @@ const TimelineRoot = React__default.forwardRef(({ children, className, layout =
33
55
  totalItems,
34
56
  }), [layout, theme, totalItems]);
35
57
  const isHorizontal = layout === "horizontal";
36
- return (jsx(TimelineContext.Provider, { value: contextValue, children: jsx("div", { ref: ref, className: cn(isHorizontal ? theme.baseStyleHorizontal : theme.baseStyle, className), "data-layout": layout, role: "list", "aria-label": "Timeline", ...props, children: children }) }));
58
+ return (jsx(TimelineContext.Provider, { value: contextValue, children: jsx("div", { ref: ref, className: cn(isHorizontal ? theme.baseStyleHorizontal : theme.baseStyle, className), "data-layout": layout, role: "list", "aria-label": "Timeline", ...props, children: indexedChildren }) }));
37
59
  });
38
60
  TimelineRoot.displayName = "Timeline";
39
61
  // Attach compound subcomponents
@@ -7,12 +7,20 @@ export interface TimelineTheme {
7
7
  baseStyleHorizontal: string;
8
8
  itemStyle: string;
9
9
  itemStyleHorizontal: string;
10
- lineStyle: string;
11
- lineStyleHorizontal: string;
10
+ /** Connector line between markers — vertical layout */
11
+ connectorStyle: string;
12
+ /** Connector line between markers — horizontal layout */
13
+ connectorStyleHorizontal: string;
14
+ /** Color override applied to the connector when the item is completed */
15
+ connectorCompletedStyle: string;
12
16
  markerStyle: string;
13
17
  markerStatuses: Record<TimelineItemStatus, string>;
14
18
  contentStyle: string;
15
19
  contentStyleHorizontal: string;
20
+ /** Default typography for the data-driven (`items`) API content */
21
+ titleStyle: string;
22
+ descriptionStyle: string;
23
+ timestampStyle: string;
16
24
  }
17
25
  /**
18
26
  * Default theme for Timeline components
@@ -11,22 +11,28 @@ const timelineTheme = {
11
11
  itemStyle: "relative flex gap-4",
12
12
  // Individual timeline item - horizontal
13
13
  itemStyleHorizontal: "relative flex flex-col items-center flex-1 gap-3",
14
- // Connector line - vertical (positioned on the marker column)
15
- lineStyle: "absolute top-0 bottom-0 w-0.5 bg-[var(--color-border)]",
16
- // Connector line - horizontal
17
- lineStyleHorizontal: "absolute left-0 right-0 h-0.5 bg-[var(--color-border)]",
14
+ // Connector line - vertical (stretches down below the marker)
15
+ connectorStyle: "w-0.5 flex-1 min-h-4 bg-[var(--color-border)]",
16
+ // Connector line - horizontal (spans from this item's center to the next)
17
+ connectorStyleHorizontal: "absolute top-1/2 -translate-y-1/2 left-1/2 h-0.5 w-full bg-[var(--color-border)]",
18
+ // Completed connector color (overrides the base connector background)
19
+ connectorCompletedStyle: "bg-[var(--color-success)]",
18
20
  // Marker base styles (shared across statuses)
19
- markerStyle: "relative z-10 flex items-center justify-center shrink-0 rounded-full border-2 transition-colors duration-200",
21
+ markerStyle: "relative z-10 flex items-center justify-center shrink-0 rounded-full border-2 transition-colors duration-200 ring-4 ring-[var(--color-surface)] backdrop-blur-sm",
20
22
  // Marker status-specific styles
21
23
  markerStatuses: {
22
- completed: "w-8 h-8 bg-[var(--color-success)] border-[var(--color-success)] text-[var(--color-success-contrast)]",
23
- active: "w-8 h-8 bg-[var(--color-primary)] border-[var(--color-primary)] text-[var(--color-primary-contrast)] ring-4 ring-[var(--color-primary-100)]",
24
- pending: "w-8 h-8 bg-[var(--color-background)] border-[var(--color-border)]",
24
+ completed: "size-8 bg-[var(--color-success)] border-[var(--color-success)] text-[var(--color-success-contrast)]",
25
+ active: "size-8 bg-[var(--color-primary)]/0 border-[var(--color-primary)] text-[var(--color-primary)] ",
26
+ pending: "size-8 bg-[var(--color-background)] border-[var(--color-border)] text-[var(--color-text-muted)]",
25
27
  },
26
28
  // Content area - vertical
27
29
  contentStyle: "pb-8 pt-0.5 min-w-0",
28
30
  // Content area - horizontal
29
31
  contentStyleHorizontal: "text-center px-2 min-w-0",
32
+ // Data-driven (`items`) content typography
33
+ titleStyle: "text-sm font-medium text-[var(--color-text-primary)]",
34
+ descriptionStyle: "text-sm text-[var(--color-text-secondary)] mt-1",
35
+ timestampStyle: "text-xs text-[var(--color-text-placeholder)] mt-1",
30
36
  };
31
37
 
32
38
  export { timelineTheme };
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { TimelineTheme } from "./Timeline.theme";
2
3
  /**
3
4
  * Layout orientation for the Timeline
4
5
  */
@@ -18,12 +19,44 @@ export interface TimelineThemeOverrides {
18
19
  baseStyleHorizontal?: string;
19
20
  itemStyle?: string;
20
21
  itemStyleHorizontal?: string;
21
- lineStyle?: string;
22
- lineStyleHorizontal?: string;
22
+ connectorStyle?: string;
23
+ connectorStyleHorizontal?: string;
24
+ connectorCompletedStyle?: string;
23
25
  markerStyle?: string;
24
26
  markerStatuses?: Partial<Record<TimelineItemStatus, string>>;
25
27
  contentStyle?: string;
26
28
  contentStyleHorizontal?: string;
29
+ titleStyle?: string;
30
+ descriptionStyle?: string;
31
+ timestampStyle?: string;
32
+ }
33
+ /**
34
+ * A single timeline item for the data-driven (`items`) API.
35
+ * Maps internally to `Timeline.Item` → `Timeline.Marker` + `Timeline.Content`,
36
+ * so it stays fully serializable (no JSX composition required). This is the
37
+ * generative-UI / model-friendly entry path; the compound API remains for
38
+ * hand-authored timelines that need full control.
39
+ */
40
+ export interface TimelineItemData {
41
+ /** @default 'pending' */
42
+ status?: TimelineItemStatus;
43
+ /** Heading line (rendered with the theme's `titleStyle`) */
44
+ title?: React.ReactNode;
45
+ /** Body line (rendered with the theme's `descriptionStyle`) */
46
+ description?: React.ReactNode;
47
+ /** Trailing meta line, e.g. a date (rendered with the theme's `timestampStyle`) */
48
+ timestamp?: React.ReactNode;
49
+ /** Icon element shown inside the marker. Pass a ReactNode (resolve name→icon upstream). */
50
+ icon?: React.ReactNode;
51
+ /**
52
+ * Escape hatch — when provided, replaces the default title/description/timestamp
53
+ * rendering with arbitrary content (matches the compound `Timeline.Content` body).
54
+ */
55
+ content?: React.ReactNode;
56
+ /** Optional className forwarded to the item wrapper */
57
+ className?: string;
58
+ /** Stable React key (falls back to the array index) */
59
+ key?: string | number;
27
60
  }
28
61
  /**
29
62
  * Timeline root component props
@@ -34,32 +67,26 @@ export interface TimelineProps extends React.HTMLAttributes<HTMLDivElement> {
34
67
  * @default 'vertical'
35
68
  */
36
69
  layout?: TimelineLayout;
70
+ /**
71
+ * Data-driven items. When provided, the timeline renders from this array and
72
+ * any `children` are ignored (dev-warns). Omit it to use the compound API.
73
+ */
74
+ items?: TimelineItemData[];
37
75
  /**
38
76
  * Theme overrides for customizing styles
39
77
  */
40
78
  theme?: TimelineThemeOverrides;
41
79
  /**
42
- * Children - should be Timeline.Item components
80
+ * Children `Timeline.Item` components (compound API). Optional when `items` is used.
43
81
  */
44
- children: React.ReactNode;
82
+ children?: React.ReactNode;
45
83
  }
46
84
  /**
47
85
  * Context value shared between Timeline compound components
48
86
  */
49
87
  export interface TimelineContextValue {
50
88
  layout: TimelineLayout;
51
- theme: TimelineThemeOverrides & {
52
- baseStyle: string;
53
- baseStyleHorizontal: string;
54
- itemStyle: string;
55
- itemStyleHorizontal: string;
56
- lineStyle: string;
57
- lineStyleHorizontal: string;
58
- markerStyle: string;
59
- markerStatuses: Record<TimelineItemStatus, string>;
60
- contentStyle: string;
61
- contentStyleHorizontal: string;
62
- };
89
+ theme: TimelineTheme;
63
90
  totalItems: number;
64
91
  }
65
92
  /**
@@ -79,6 +106,11 @@ export interface TimelineItemProps extends React.HTMLAttributes<HTMLDivElement>
79
106
  * Item content - should include Timeline.Marker and Timeline.Content
80
107
  */
81
108
  children: React.ReactNode;
109
+ /**
110
+ * @internal Index within the timeline, injected by the root via cloneElement.
111
+ * Do not set this manually.
112
+ */
113
+ _index?: number;
82
114
  }
83
115
  /**
84
116
  * Context value for individual Timeline items
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Strip the DOM drag/animation handlers that collide with `motion.*` element
3
+ * props, so the remaining `...rest` can be safely spread onto a motion element.
4
+ * Shared by TimelineItem and TimelineMarker (both render a `motion.div`).
5
+ */
6
+ export declare function stripMotionConflicts<T extends Record<string, unknown>>(props: T): Omit<T, "onDrag" | "onDragEnd" | "onDragStart" | "onAnimationStart" | "onAnimationEnd">;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Strip the DOM drag/animation handlers that collide with `motion.*` element
3
+ * props, so the remaining `...rest` can be safely spread onto a motion element.
4
+ * Shared by TimelineItem and TimelineMarker (both render a `motion.div`).
5
+ */
6
+ function stripMotionConflicts(props) {
7
+ const { onDrag: _onDrag, onDragEnd: _onDragEnd, onDragStart: _onDragStart, onAnimationStart: _onAnimationStart, onAnimationEnd: _onAnimationEnd, ...rest } = props;
8
+ return rest;
9
+ }
10
+
11
+ export { stripMotionConflicts };
@@ -4,6 +4,7 @@ import { useReducedMotion, motion } from 'motion/react';
4
4
  import { cn } from '../../../utils/cn.js';
5
5
  import { useTimelineContext } from './Timeline.js';
6
6
  import { timelineHorizontalItemVariants, timelineItemVariants } from './Timeline.animations.js';
7
+ import { stripMotionConflicts } from './Timeline.utils.js';
7
8
 
8
9
  // Create context for TimelineItem
9
10
  const TimelineItemContext = createContext(undefined);
@@ -14,26 +15,22 @@ const useTimelineItemContext = () => {
14
15
  throw new Error("Timeline.Marker and Timeline.Content must be used within Timeline.Item");
15
16
  return ctx;
16
17
  };
17
- const TimelineItem = React__default.forwardRef(({ children, className, status = "pending", ...props }, ref) => {
18
+ const TimelineItem = React__default.forwardRef(({ children, className, status = "pending", _index = 0, ...props }, ref) => {
18
19
  const { layout, theme, totalItems } = useTimelineContext();
19
20
  const shouldReduceMotion = useReducedMotion();
20
21
  const itemRef = useRef(null);
21
22
  const [isVisible, setIsVisible] = useState(false);
22
- // Determine item index from parent
23
+ // Index/first/last come from the root (single source of truth), not the DOM.
24
+ const index = _index;
25
+ const isFirst = index === 0;
26
+ const isLast = index === totalItems - 1;
27
+ const isHorizontal = layout === "horizontal";
23
28
  const resolvedRef = ref || itemRef;
24
- // Find index among siblings for alternate layout
25
- const [index, setIndex] = useState(0);
26
- useEffect(() => {
27
- const element = resolvedRef && "current" in resolvedRef ? resolvedRef.current : itemRef.current;
28
- if (element === null || element === void 0 ? void 0 : element.parentElement) {
29
- const siblings = Array.from(element.parentElement.children);
30
- const idx = siblings.indexOf(element);
31
- setIndex(idx);
32
- }
33
- }, [resolvedRef]);
34
- // IntersectionObserver for scroll-triggered animation
29
+ // IntersectionObserver for scroll-triggered entry animation
35
30
  useEffect(() => {
36
- const element = resolvedRef && "current" in resolvedRef ? resolvedRef.current : itemRef.current;
31
+ const element = resolvedRef && "current" in resolvedRef
32
+ ? resolvedRef.current
33
+ : itemRef.current;
37
34
  if (!element)
38
35
  return;
39
36
  const observer = new IntersectionObserver(([entry]) => {
@@ -45,9 +42,6 @@ const TimelineItem = React__default.forwardRef(({ children, className, status =
45
42
  observer.observe(element);
46
43
  return () => observer.disconnect();
47
44
  }, [resolvedRef]);
48
- const isFirst = index === 0;
49
- const isLast = index === totalItems - 1;
50
- const isHorizontal = layout === "horizontal";
51
45
  // Select animation variants based on layout
52
46
  const getVariants = () => {
53
47
  if (shouldReduceMotion)
@@ -63,10 +57,9 @@ const TimelineItem = React__default.forwardRef(({ children, className, status =
63
57
  isFirst,
64
58
  isLast,
65
59
  };
66
- // Filter out conflicting motion props from rest
67
- const { onDrag, onDragEnd, onDragStart, onAnimationStart, onAnimationEnd, ...safeProps } = props;
60
+ const safeProps = stripMotionConflicts(props);
68
61
  const variants = getVariants();
69
- return (jsx(TimelineItemContext.Provider, { value: contextValue, children: jsx(motion.div, { ref: ref || itemRef, className: cn(isHorizontal ? theme.itemStyleHorizontal : theme.itemStyle, className), "data-status": status, "data-layout": layout, role: "listitem", initial: variants ? "hidden" : undefined, animate: variants && isVisible ? "visible" : variants ? "hidden" : undefined, variants: variants, ...safeProps, children: children }) }));
62
+ return (jsx(TimelineItemContext.Provider, { value: contextValue, children: jsx(motion.div, { ref: ref || itemRef, className: cn(isHorizontal ? theme.itemStyleHorizontal : theme.itemStyle, className), "data-status": status, "data-layout": layout, role: "listitem", "aria-current": status === "active" ? "step" : undefined, initial: variants ? "hidden" : undefined, animate: variants && isVisible ? "visible" : variants ? "hidden" : undefined, variants: variants, ...safeProps, children: children }) }));
70
63
  });
71
64
  TimelineItem.displayName = "TimelineItem";
72
65
 
@@ -6,7 +6,14 @@ import { cn } from '../../../utils/cn.js';
6
6
  import { useTimelineContext } from './Timeline.js';
7
7
  import { useTimelineItemContext } from './TimelineItem.js';
8
8
  import { timelineMarkerVariants } from './Timeline.animations.js';
9
+ import { stripMotionConflicts } from './Timeline.utils.js';
9
10
 
11
+ // Screen-reader status text so status isn't conveyed by color/icon alone.
12
+ const STATUS_LABEL = {
13
+ completed: "Completed",
14
+ active: "In progress",
15
+ pending: "Pending",
16
+ };
10
17
  const TimelineMarker = React__default.forwardRef(({ icon, className, ...props }, ref) => {
11
18
  const { theme, layout } = useTimelineContext();
12
19
  const { status, isLast } = useTimelineItemContext();
@@ -19,20 +26,15 @@ const TimelineMarker = React__default.forwardRef(({ icon, className, ...props },
19
26
  return jsx(CheckIcon, { className: "w-4 h-4" });
20
27
  }
21
28
  if (status === "active") {
22
- return jsx("span", { className: "w-2 h-2 rounded-full bg-white" });
29
+ return (jsx("span", { className: "w-2 h-2 rounded-full bg-[var(--color-primary)]" }));
23
30
  }
24
31
  // Pending: small neutral dot
25
32
  return (jsx("span", { className: "w-2 h-2 rounded-full bg-[var(--color-text-muted)]" }));
26
33
  };
27
34
  const isHorizontal = layout === "horizontal";
28
35
  const variants = shouldReduceMotion ? undefined : timelineMarkerVariants;
29
- // Filter out conflicting motion props
30
- const { onDrag, onDragEnd, onDragStart, onAnimationStart, onAnimationEnd, ...safeProps } = props;
31
- return (jsxs("div", { className: cn("relative flex flex-col items-center", isHorizontal && "w-full"), children: [jsx(motion.div, { ref: ref, className: cn(theme.markerStyle, theme.markerStatuses[status], className), "data-status": status, "aria-label": `${status} step`, initial: variants ? "hidden" : undefined, animate: variants ? "visible" : undefined, variants: variants, ...safeProps, children: renderIcon() }), !isLast && !isHorizontal && (jsx("div", { className: cn("w-0.5 flex-1 min-h-4", status === "completed"
32
- ? "bg-[var(--color-success)]"
33
- : "bg-[var(--color-border)]"), "aria-hidden": "true" })), !isLast && isHorizontal && (jsx("div", { className: cn("absolute top-1/2 -translate-y-1/2 left-1/2 h-0.5 w-full", status === "completed"
34
- ? "bg-[var(--color-success)]"
35
- : "bg-[var(--color-border)]"), "aria-hidden": "true" }))] }));
36
+ const safeProps = stripMotionConflicts(props);
37
+ return (jsxs("div", { className: cn("relative flex flex-col items-center", isHorizontal && "w-full"), children: [jsxs(motion.div, { ref: ref, className: cn(theme.markerStyle, theme.markerStatuses[status], className), "data-status": status, initial: variants ? "hidden" : undefined, animate: variants ? "visible" : undefined, variants: variants, ...safeProps, children: [jsx("span", { className: "sr-only", children: STATUS_LABEL[status] }), jsx("span", { "aria-hidden": "true", className: "flex items-center justify-center", children: renderIcon() })] }), !isLast && !isHorizontal && (jsx("div", { className: cn(theme.connectorStyle, status === "completed" && theme.connectorCompletedStyle), "aria-hidden": "true" })), !isLast && isHorizontal && (jsx("div", { className: cn(theme.connectorStyleHorizontal, status === "completed" && theme.connectorCompletedStyle), "aria-hidden": "true" }))] }));
36
38
  });
37
39
  TimelineMarker.displayName = "TimelineMarker";
38
40
 
@@ -1,4 +1,4 @@
1
1
  import { Timeline } from "./Timeline";
2
- import { TimelineProps, TimelineItemProps, TimelineMarkerProps, TimelineContentProps, TimelineContextValue, TimelineItemContextValue, TimelineThemeOverrides, TimelineLayout, TimelineItemStatus } from "./Timeline.types";
2
+ import { TimelineProps, TimelineItemProps, TimelineItemData, TimelineMarkerProps, TimelineContentProps, TimelineContextValue, TimelineItemContextValue, TimelineThemeOverrides, TimelineLayout, TimelineItemStatus } from "./Timeline.types";
3
3
  export { Timeline };
4
- export type { TimelineProps, TimelineItemProps, TimelineMarkerProps, TimelineContentProps, TimelineContextValue, TimelineItemContextValue, TimelineThemeOverrides, TimelineLayout, TimelineItemStatus, };
4
+ export type { TimelineProps, TimelineItemProps, TimelineItemData, TimelineMarkerProps, TimelineContentProps, TimelineContextValue, TimelineItemContextValue, TimelineThemeOverrides, TimelineLayout, TimelineItemStatus, };
@@ -2,5 +2,3 @@ export { AIOrb } from "../AIOrb";
2
2
  export type { AIOrbProps, OrbState, DotSphereProps, LiquidProps, AuraProps } from "../AIOrb";
3
3
  export { Particles } from "../Particles";
4
4
  export type { ParticlesProps } from "../Particles";
5
- export { SpotlightBorder } from "../SpotlightBorder";
6
- export type { SpotlightBorderProps, SpotlightBorderVariation, } from "../SpotlightBorder";
@@ -1,3 +1,2 @@
1
1
  export { AIOrb } from '../AIOrb/AIOrb.js';
2
2
  export { Particles } from '../Particles/Particles.js';
3
- export { SpotlightBorder } from '../SpotlightBorder/SpotlightBorder.js';
@@ -1,24 +1,13 @@
1
1
  import React from 'react';
2
2
  import type { AuroraProps } from './Aurora.types';
3
3
  /**
4
- * Aurora creates an animated multi-color gradient background effect.
4
+ * Aurora creates a highly vibrant, WebGL-powered multi-color gradient background effect.
5
5
  *
6
- * Renders several large, blurred, semi-transparent blobs that slowly drift
7
- * and morph, producing an organic aurora-like glow. Ideal for hero sections
8
- * and decorative backgrounds.
6
+ * It uses a hardware-accelerated domain-warping Simplex Noise shader executing 100% on
7
+ * the GPU, achieving absolute 60/120 FPS butter-smooth rendering on all high-DPI screens.
8
+ * Features full support for custom blend modes and built-in stardust texture.
9
9
  *
10
- * The component renders as an absolutely-positioned layer with
11
- * `pointer-events-none`, so it will not interfere with interactive content.
12
- * The parent element should have `position: relative` and `overflow: hidden`.
13
- *
14
- * @example
15
- * ```tsx
16
- * <div className="relative overflow-hidden h-96 bg-gray-950">
17
- * <Aurora />
18
- * <div className="relative z-10 text-white p-8">
19
- * <h1>Hero Content</h1>
20
- * </div>
21
- * </div>
22
- * ```
10
+ * If WebGL is unavailable or reduced motion is preferred, the component gracefully falls back
11
+ * to a gorgeous static CSS gradient layout to preserve SEO, styling, and accessibility.
23
12
  */
24
13
  export declare const Aurora: React.FC<AuroraProps>;