@flikk/ui 1.0.0-beta.1 → 1.0.0-beta.11

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 (528) hide show
  1. package/dist/components/ai/ApprovalCard/ApprovalCard.js +3 -2
  2. package/dist/components/ai/ApprovalCard/ApprovalCard.types.d.ts +2 -2
  3. package/dist/components/ai/CodeBlock/CodeBlock.theme.js +2 -2
  4. package/dist/components/ai/PromptInput/PromptInput.animations.d.ts +25 -0
  5. package/dist/components/ai/PromptInput/PromptInput.animations.js +61 -0
  6. package/dist/components/ai/PromptInput/PromptInput.js +264 -31
  7. package/dist/components/ai/PromptInput/PromptInput.theme.js +6 -1
  8. package/dist/components/ai/PromptInput/PromptInput.types.d.ts +68 -0
  9. package/dist/components/ai/PromptInput/VoiceRecorder.d.ts +10 -0
  10. package/dist/components/ai/PromptInput/VoiceRecorder.js +258 -0
  11. package/dist/components/ai/PromptInput/VoiceRecorder.types.d.ts +17 -0
  12. package/dist/components/ai/PromptInput/index.d.ts +1 -0
  13. package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.js +1 -1
  14. package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -2
  15. package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +51 -27
  16. package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +4 -5
  17. package/dist/components/ai/StreamingResponse/StreamingCursor.js +5 -12
  18. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +7 -0
  19. package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +20 -1
  20. package/dist/components/ai/StreamingResponse/StreamingResponse.js +2 -2
  21. package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +4 -4
  22. package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +2 -0
  23. package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +27 -0
  24. package/dist/components/ai/StreamingResponse/WordAnimationContext.js +134 -0
  25. package/dist/components/ai/StreamingResponse/index.d.ts +3 -1
  26. package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.theme.js +2 -2
  27. package/dist/components/ai/TokenCounter/TokenCounter.theme.js +6 -6
  28. package/dist/components/ai/index.js +1 -0
  29. package/dist/components/charts/ActivityRings/ActivityRings.js +1 -1
  30. package/dist/components/charts/ActivityRings/ActivityRings.theme.js +2 -2
  31. package/dist/components/charts/BarChart/BarChart.js +3 -3
  32. package/dist/components/charts/ChartContainer.js +1 -1
  33. package/dist/components/charts/ComboChart/ComboChart.js +2 -2
  34. package/dist/components/charts/DonutChart/DonutChart.theme.js +1 -1
  35. package/dist/components/charts/DonutChart/DonutChart.types.d.ts +1 -2
  36. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.js +1 -1
  37. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
  38. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.types.d.ts +1 -2
  39. package/dist/components/charts/FunnelChart/FunnelChart.js +7 -7
  40. package/dist/components/charts/Heatmap/Heatmap.theme.js +1 -1
  41. package/dist/components/charts/Heatmap/HeatmapCell.js +1 -1
  42. package/dist/components/charts/Heatmap/HeatmapLegend.js +1 -1
  43. package/dist/components/charts/RadarChart/RadarChart.theme.js +2 -2
  44. package/dist/components/charts/ScatterPlot/ScatterPlot.js +1 -1
  45. package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +2 -2
  46. package/dist/components/charts/StackedBarChart/StackedBarChart.js +2 -2
  47. package/dist/components/charts/shared/ChartErrorBoundary/ChartErrorBoundary.js +1 -1
  48. package/dist/components/charts/shared/ChartLegend/ChartLegendContent.js +1 -1
  49. package/dist/components/charts/shared/ChartText/ChartText.js +1 -1
  50. package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
  51. package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +4 -4
  52. package/dist/components/core/Accordion/Accordion.animations.d.ts +6 -1
  53. package/dist/components/core/Accordion/Accordion.animations.js +15 -1
  54. package/dist/components/core/Accordion/Accordion.theme.js +5 -5
  55. package/dist/components/core/Accordion/Accordion.types.d.ts +25 -0
  56. package/dist/components/core/Accordion/AccordionContent.js +1 -1
  57. package/dist/components/core/Accordion/AccordionTrigger.js +11 -6
  58. package/dist/components/core/Alert/Alert.js +3 -2
  59. package/dist/components/core/Alert/Alert.theme.js +4 -8
  60. package/dist/components/core/Alert/Alert.types.d.ts +4 -3
  61. package/dist/components/core/AlertDialog/AlertDialog.d.ts +1 -1
  62. package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
  63. package/dist/components/core/AlertDialog/AlertDialog.types.d.ts +2 -2
  64. package/dist/components/core/Avatar/Avatar.theme.js +5 -5
  65. package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +1 -1
  66. package/dist/components/core/Badge/Badge.d.ts +1 -1
  67. package/dist/components/core/Badge/Badge.js +11 -9
  68. package/dist/components/core/Badge/Badge.theme.js +24 -20
  69. package/dist/components/core/Badge/Badge.types.d.ts +10 -5
  70. package/dist/components/core/Breadcrumbs/Breadcrumbs.js +1 -1
  71. package/dist/components/core/Button/Button.d.ts +1 -1
  72. package/dist/components/core/Button/Button.js +21 -18
  73. package/dist/components/core/Button/Button.ripple.d.ts +5 -1
  74. package/dist/components/core/Button/Button.ripple.js +27 -17
  75. package/dist/components/core/Button/Button.theme.d.ts +1 -2
  76. package/dist/components/core/Button/Button.theme.js +46 -41
  77. package/dist/components/core/Button/Button.types.d.ts +3 -3
  78. package/dist/components/core/Button/index.d.ts +2 -0
  79. package/dist/components/core/ButtonGroup/ButtonGroup.theme.js +1 -1
  80. package/dist/components/core/Calendar/Calendar.js +1 -1
  81. package/dist/components/core/Calendar/Calendar.theme.js +9 -9
  82. package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +1 -1
  83. package/dist/components/core/Card/Card.d.ts +2 -2
  84. package/dist/components/core/Card/Card.js +6 -7
  85. package/dist/components/core/Card/Card.theme.js +2 -2
  86. package/dist/components/core/Card/Card.types.d.ts +7 -27
  87. package/dist/components/core/Card/CardSubtitle.d.ts +3 -0
  88. package/dist/components/core/Card/CardSubtitle.js +11 -0
  89. package/dist/components/core/Card/CardTitle.d.ts +1 -1
  90. package/dist/components/core/Card/index.d.ts +2 -2
  91. package/dist/components/core/CommandPalette/CommandItem.d.ts +1 -1
  92. package/dist/components/core/CommandPalette/CommandItem.js +2 -2
  93. package/dist/components/core/CommandPalette/CommandPalette.js +2 -2
  94. package/dist/components/core/CommandPalette/CommandPalette.theme.js +6 -6
  95. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -2
  96. package/dist/components/core/ContextMenu/ContextMenu.theme.js +3 -3
  97. package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +1 -1
  98. package/dist/components/core/ContextMenu/ContextMenuItem.js +3 -3
  99. package/dist/components/core/Drawer/Drawer.d.ts +13 -1
  100. package/dist/components/core/Drawer/Drawer.js +23 -10
  101. package/dist/components/core/Drawer/Drawer.theme.d.ts +2 -0
  102. package/dist/components/core/Drawer/Drawer.theme.js +15 -13
  103. package/dist/components/core/Drawer/Drawer.types.d.ts +26 -9
  104. package/dist/components/core/Drawer/DrawerContent.js +1 -1
  105. package/dist/components/core/Drawer/DrawerHeader.d.ts +5 -0
  106. package/dist/components/core/Drawer/DrawerHeader.js +15 -0
  107. package/dist/components/core/Drawer/DrawerSubtitle.d.ts +5 -0
  108. package/dist/components/core/Drawer/DrawerSubtitle.js +11 -0
  109. package/dist/components/core/Drawer/DrawerTitle.d.ts +5 -0
  110. package/dist/components/core/Drawer/DrawerTitle.js +11 -0
  111. package/dist/components/core/Drawer/index.d.ts +1 -1
  112. package/dist/components/core/Dropdown/Dropdown.theme.js +1 -1
  113. package/dist/components/core/Dropdown/Dropdown.types.d.ts +4 -4
  114. package/dist/components/core/Dropdown/DropdownItem.js +2 -2
  115. package/dist/components/core/Dropdown/DropdownMenu.js +1 -0
  116. package/dist/components/core/Empty/Empty.js +2 -2
  117. package/dist/components/core/Empty/Empty.theme.d.ts +1 -1
  118. package/dist/components/core/Empty/Empty.theme.js +3 -3
  119. package/dist/components/core/Empty/Empty.types.d.ts +2 -2
  120. package/dist/components/core/Kbd/Kbd.theme.js +3 -3
  121. package/dist/components/core/Link/Link.d.ts +1 -1
  122. package/dist/components/core/Link/Link.types.d.ts +2 -2
  123. package/dist/components/core/Loader/Loader.theme.js +1 -1
  124. package/dist/components/core/MenuItem/MenuItem.js +2 -2
  125. package/dist/components/core/MenuItem/MenuItem.theme.d.ts +1 -2
  126. package/dist/components/core/MenuItem/MenuItem.theme.js +9 -11
  127. package/dist/components/core/MenuItem/MenuItem.types.d.ts +1 -1
  128. package/dist/components/core/Message/Message.d.ts +3 -2
  129. package/dist/components/core/Message/Message.js +30 -24
  130. package/dist/components/core/Message/Message.theme.d.ts +1 -1
  131. package/dist/components/core/Message/Message.theme.js +22 -24
  132. package/dist/components/core/Message/Message.types.d.ts +0 -7
  133. package/dist/components/core/Message/MessageList.animations.d.ts +6 -0
  134. package/dist/components/core/Message/MessageList.animations.js +32 -0
  135. package/dist/components/core/Message/MessageList.d.ts +5 -0
  136. package/dist/components/core/Message/MessageList.js +78 -0
  137. package/dist/components/core/Message/MessageList.theme.d.ts +2 -0
  138. package/dist/components/core/Message/MessageList.theme.js +6 -0
  139. package/dist/components/core/Message/MessageList.types.d.ts +32 -0
  140. package/dist/components/core/Message/index.d.ts +2 -0
  141. package/dist/components/core/Modal/Modal.d.ts +2 -2
  142. package/dist/components/core/Modal/Modal.js +5 -5
  143. package/dist/components/core/Modal/Modal.theme.js +6 -6
  144. package/dist/components/core/Modal/Modal.types.d.ts +4 -4
  145. package/dist/components/core/Modal/ModalHeader.js +1 -0
  146. package/dist/components/core/Modal/ModalSubtitle.d.ts +5 -0
  147. package/dist/components/core/Modal/ModalSubtitle.js +11 -0
  148. package/dist/components/core/ModalStack/ModalStack.animations.js +3 -3
  149. package/dist/components/core/ModalStack/ModalStackModal.js +3 -3
  150. package/dist/components/core/NavItem/NavItem.js +1 -1
  151. package/dist/components/core/NavItem/NavItem.theme.js +1 -1
  152. package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +3 -3
  153. package/dist/components/core/PageHeading/PageHeading.d.ts +8 -0
  154. package/dist/components/core/PageHeading/PageHeading.js +28 -0
  155. package/dist/components/core/PageHeading/PageHeading.theme.d.ts +2 -0
  156. package/dist/components/core/PageHeading/PageHeading.theme.js +11 -0
  157. package/dist/components/core/PageHeading/PageHeading.types.d.ts +55 -0
  158. package/dist/components/core/PageHeading/PageHeadingActions.d.ts +3 -0
  159. package/dist/components/core/PageHeading/PageHeadingActions.js +11 -0
  160. package/dist/components/core/PageHeading/PageHeadingBackButton.d.ts +3 -0
  161. package/dist/components/core/PageHeading/PageHeadingBackButton.js +12 -0
  162. package/dist/components/core/PageHeading/PageHeadingIcon.d.ts +3 -0
  163. package/dist/components/core/PageHeading/PageHeadingIcon.js +11 -0
  164. package/dist/components/core/PageHeading/PageHeadingSubtitle.d.ts +3 -0
  165. package/dist/components/core/PageHeading/PageHeadingSubtitle.js +11 -0
  166. package/dist/components/core/PageHeading/PageHeadingTitle.d.ts +3 -0
  167. package/dist/components/core/PageHeading/PageHeadingTitle.js +11 -0
  168. package/dist/components/core/PageHeading/index.d.ts +2 -0
  169. package/dist/components/core/Pagination/Pagination.theme.js +2 -2
  170. package/dist/components/core/Pill/Pill.theme.js +3 -3
  171. package/dist/components/core/Popover/Popover.theme.js +1 -1
  172. package/dist/components/core/Popover/Popover.types.d.ts +6 -0
  173. package/dist/components/core/Popover/PopoverContent.js +8 -2
  174. package/dist/components/core/Progress/Progress.theme.js +10 -7
  175. package/dist/components/core/Progress/Progress.types.d.ts +2 -1
  176. package/dist/components/core/Segmented/Segmented.theme.js +5 -5
  177. package/dist/components/core/Sidebar/Sidebar.js +1 -0
  178. package/dist/components/core/Sidebar/SidebarNavGroup.js +1 -1
  179. package/dist/components/core/SocialIcon/SocialIcon.d.ts +3 -0
  180. package/dist/components/core/SocialIcon/SocialIcon.js +30 -0
  181. package/dist/components/core/SocialIcon/SocialIcon.theme.d.ts +2 -0
  182. package/dist/components/core/SocialIcon/SocialIcon.theme.js +12 -0
  183. package/dist/components/core/SocialIcon/SocialIcon.types.d.ts +18 -0
  184. package/dist/components/core/SocialIcon/index.d.ts +2 -0
  185. package/dist/components/core/SocialIcon/platforms.d.ts +17 -0
  186. package/dist/components/core/SocialIcon/platforms.js +234 -0
  187. package/dist/components/core/Spinner/Spinner.theme.js +3 -5
  188. package/dist/components/core/Spinner/Spinner.types.d.ts +2 -1
  189. package/dist/components/core/Tabs/Tabs.theme.js +2 -2
  190. package/dist/components/core/Tag/Tag.d.ts +2 -2
  191. package/dist/components/core/Tag/Tag.js +21 -4
  192. package/dist/components/core/Tag/Tag.theme.js +12 -4
  193. package/dist/components/core/Tag/Tag.types.d.ts +24 -1
  194. package/dist/components/core/Toast/Toast.js +4 -4
  195. package/dist/components/core/Toast/Toast.theme.js +4 -4
  196. package/dist/components/core/Toast/Toast.types.d.ts +9 -9
  197. package/dist/components/core/Toast/useToast.js +6 -6
  198. package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
  199. package/dist/components/core/Tree/Tree.theme.js +1 -1
  200. package/dist/components/core/index.d.ts +2 -7
  201. package/dist/components/core/index.js +10 -19
  202. package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +8 -0
  203. package/dist/components/{core → data-display}/Feed/Feed.js +3 -3
  204. package/dist/components/{core → data-display}/Feed/Feed.theme.js +2 -2
  205. package/dist/components/data-display/GanttChart/GanttChart.animations.d.ts +4 -0
  206. package/dist/components/data-display/GanttChart/GanttChart.animations.js +21 -0
  207. package/dist/components/data-display/GanttChart/GanttChart.d.ts +8 -0
  208. package/dist/components/data-display/GanttChart/GanttChart.js +170 -0
  209. package/dist/components/data-display/GanttChart/GanttChart.theme.d.ts +2 -0
  210. package/dist/components/data-display/GanttChart/GanttChart.theme.js +23 -0
  211. package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +162 -0
  212. package/dist/components/data-display/GanttChart/GanttChart.types.js +9 -0
  213. package/dist/components/data-display/GanttChart/GanttChart.utils.d.ts +80 -0
  214. package/dist/components/data-display/GanttChart/GanttChart.utils.js +274 -0
  215. package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +9 -0
  216. package/dist/components/data-display/GanttChart/GanttChartPanel.js +82 -0
  217. package/dist/components/data-display/GanttChart/GanttDependencyArrows.d.ts +2 -0
  218. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +35 -0
  219. package/dist/components/data-display/GanttChart/GanttGroupBar.d.ts +8 -0
  220. package/dist/components/data-display/GanttChart/GanttGroupBar.js +26 -0
  221. package/dist/components/data-display/GanttChart/GanttMilestone.d.ts +9 -0
  222. package/dist/components/data-display/GanttChart/GanttMilestone.js +44 -0
  223. package/dist/components/data-display/GanttChart/GanttProgressCircle.d.ts +9 -0
  224. package/dist/components/data-display/GanttChart/GanttProgressCircle.js +11 -0
  225. package/dist/components/data-display/GanttChart/GanttSplitter.d.ts +2 -0
  226. package/dist/components/data-display/GanttChart/GanttSplitter.js +39 -0
  227. package/dist/components/data-display/GanttChart/GanttTableGroupRow.d.ts +7 -0
  228. package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +23 -0
  229. package/dist/components/data-display/GanttChart/GanttTableHeader.d.ts +2 -0
  230. package/dist/components/data-display/GanttChart/GanttTableHeader.js +13 -0
  231. package/dist/components/data-display/GanttChart/GanttTablePanel.d.ts +6 -0
  232. package/dist/components/data-display/GanttChart/GanttTablePanel.js +20 -0
  233. package/dist/components/data-display/GanttChart/GanttTableTaskRow.d.ts +8 -0
  234. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +30 -0
  235. package/dist/components/data-display/GanttChart/GanttTaskBar.d.ts +9 -0
  236. package/dist/components/data-display/GanttChart/GanttTaskBar.js +206 -0
  237. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.d.ts +8 -0
  238. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +17 -0
  239. package/dist/components/data-display/GanttChart/GanttTimelineGrid.d.ts +7 -0
  240. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +33 -0
  241. package/dist/components/data-display/GanttChart/GanttTimelineHeader.d.ts +8 -0
  242. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +43 -0
  243. package/dist/components/data-display/GanttChart/GanttToolbar.d.ts +2 -0
  244. package/dist/components/data-display/GanttChart/GanttToolbar.js +29 -0
  245. package/dist/components/data-display/GanttChart/hooks/useGanttDates.d.ts +12 -0
  246. package/dist/components/data-display/GanttChart/hooks/useGanttDates.js +25 -0
  247. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.d.ts +25 -0
  248. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +144 -0
  249. package/dist/components/data-display/GanttChart/hooks/useGanttLayout.d.ts +2 -0
  250. package/dist/components/data-display/GanttChart/hooks/useGanttLayout.js +33 -0
  251. package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.d.ts +6 -0
  252. package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.js +32 -0
  253. package/dist/components/data-display/GanttChart/index.d.ts +3 -0
  254. package/dist/components/{core → data-display}/KPI/KPI.js +10 -8
  255. package/dist/components/{core → data-display}/KPI/KPI.theme.js +12 -12
  256. package/dist/components/{core → data-display}/KPI/KPI.types.d.ts +6 -5
  257. package/dist/components/{core → data-display}/KPI/index.d.ts +1 -0
  258. package/dist/components/{core → data-display}/Metric/Metric.js +4 -7
  259. package/dist/components/{core → data-display}/Metric/Metric.theme.js +17 -13
  260. package/dist/components/{core → data-display}/Metric/Metric.types.d.ts +8 -7
  261. package/dist/components/{core → data-display}/Table/Table.theme.js +4 -4
  262. package/dist/components/{core → data-display}/Table/TableActions.js +8 -8
  263. package/dist/components/{core → data-display}/Table/TableActionsMenu.js +1 -1
  264. package/dist/components/{core → data-display}/Table/TableColumnManager.js +6 -5
  265. package/dist/components/{core → data-display}/Table/TableFilter.js +6 -6
  266. package/dist/components/{core → data-display}/Table/TableHeader.js +1 -1
  267. package/dist/components/data-display/Table/TablePagination.js +25 -0
  268. package/dist/components/{core → data-display}/Table/TableRow.js +1 -1
  269. package/dist/components/{core → data-display}/Table/TableSelectionHeader.js +3 -3
  270. package/dist/components/{core → data-display}/Timeline/Timeline.theme.js +2 -2
  271. package/dist/components/data-display/index.d.ts +7 -0
  272. package/dist/components/data-display/index.js +20 -0
  273. package/dist/components/effects/3d/index.d.ts +6 -0
  274. package/dist/components/effects/3d/index.js +3 -0
  275. package/dist/components/effects/Aurora/Aurora.d.ts +24 -0
  276. package/dist/components/effects/Aurora/Aurora.js +119 -0
  277. package/dist/components/effects/Aurora/Aurora.types.d.ts +15 -0
  278. package/dist/components/effects/Aurora/index.d.ts +2 -0
  279. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +2 -2
  280. package/dist/components/effects/CustomCursor/CustomCursor.js +1 -1
  281. package/dist/components/effects/CustomCursor/CustomCursor.theme.js +3 -1
  282. package/dist/components/effects/CustomCursor/CustomCursor.types.d.ts +5 -4
  283. package/dist/components/effects/DotPattern/DotPattern.d.ts +18 -0
  284. package/dist/components/effects/DotPattern/DotPattern.js +65 -0
  285. package/dist/components/effects/DotPattern/DotPattern.types.d.ts +47 -0
  286. package/dist/components/effects/DotPattern/index.d.ts +2 -0
  287. package/dist/components/effects/GridPattern/GridPattern.d.ts +18 -0
  288. package/dist/components/effects/GridPattern/GridPattern.js +64 -0
  289. package/dist/components/effects/GridPattern/GridPattern.types.d.ts +47 -0
  290. package/dist/components/effects/GridPattern/index.d.ts +2 -0
  291. package/dist/components/effects/MagneticElement/MagneticElement.d.ts +30 -0
  292. package/dist/components/effects/MagneticElement/MagneticElement.js +110 -0
  293. package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +44 -0
  294. package/dist/components/effects/MagneticElement/index.d.ts +2 -0
  295. package/dist/components/effects/MorphingText/MorphingText.d.ts +17 -0
  296. package/dist/components/effects/MorphingText/MorphingText.js +91 -0
  297. package/dist/components/effects/MorphingText/MorphingText.types.d.ts +18 -0
  298. package/dist/components/effects/MorphingText/index.d.ts +2 -0
  299. package/dist/components/effects/NoiseOverlay/NoiseOverlay.d.ts +28 -0
  300. package/dist/components/effects/NoiseOverlay/NoiseOverlay.js +61 -0
  301. package/dist/components/effects/NoiseOverlay/NoiseOverlay.types.d.ts +35 -0
  302. package/dist/components/effects/NoiseOverlay/index.d.ts +2 -0
  303. package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +26 -0
  304. package/dist/components/effects/ParallaxSection/ParallaxSection.js +71 -0
  305. package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +11 -0
  306. package/dist/components/effects/ParallaxSection/index.d.ts +2 -0
  307. package/dist/components/effects/Particles/Particles.d.ts +22 -0
  308. package/dist/components/effects/Particles/Particles.js +33 -0
  309. package/dist/components/effects/Particles/Particles.scene.d.ts +3 -0
  310. package/dist/components/effects/Particles/Particles.scene.js +284 -0
  311. package/dist/components/effects/Particles/Particles.types.d.ts +65 -0
  312. package/dist/components/effects/Particles/index.d.ts +2 -0
  313. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.d.ts +3 -0
  314. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +75 -0
  315. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.d.ts +7 -0
  316. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.js +12 -0
  317. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +47 -0
  318. package/dist/components/effects/ProgressiveBlur/index.d.ts +2 -0
  319. package/dist/components/effects/ScrollReveal/ScrollReveal.d.ts +29 -0
  320. package/dist/components/effects/ScrollReveal/ScrollReveal.js +121 -0
  321. package/dist/components/effects/ScrollReveal/ScrollReveal.types.d.ts +25 -0
  322. package/dist/components/effects/ScrollReveal/index.d.ts +2 -0
  323. package/dist/components/effects/Spotlight/Spotlight.d.ts +36 -0
  324. package/dist/components/effects/Spotlight/Spotlight.js +112 -0
  325. package/dist/components/effects/Spotlight/Spotlight.types.d.ts +29 -0
  326. package/dist/components/effects/Spotlight/index.d.ts +2 -0
  327. package/dist/components/effects/StickyScroll/StickyScroll.d.ts +30 -0
  328. package/dist/components/effects/StickyScroll/StickyScroll.js +128 -0
  329. package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +19 -0
  330. package/dist/components/effects/StickyScroll/index.d.ts +2 -0
  331. package/dist/components/effects/index.d.ts +22 -4
  332. package/dist/components/effects/index.js +11 -2
  333. package/dist/components/forms/Checkbox/Checkbox.d.ts +3 -4
  334. package/dist/components/forms/Checkbox/Checkbox.js +36 -12
  335. package/dist/components/forms/Checkbox/Checkbox.theme.js +9 -5
  336. package/dist/components/forms/Checkbox/Checkbox.types.d.ts +28 -2
  337. package/dist/components/forms/Checkbox/CheckboxContext.d.ts +14 -0
  338. package/dist/components/forms/Checkbox/CheckboxContext.js +12 -0
  339. package/dist/components/forms/Checkbox/CheckboxGroup.d.ts +3 -0
  340. package/dist/components/forms/Checkbox/CheckboxGroup.js +40 -0
  341. package/dist/components/forms/Checkbox/index.d.ts +1 -1
  342. package/dist/components/forms/ColorPicker/ColorPicker.js +1 -1
  343. package/dist/components/forms/ColorPicker/ColorPicker.theme.js +3 -3
  344. package/dist/components/forms/ColorPicker/ColorPickerInput.js +7 -7
  345. package/dist/components/forms/CronInput/CronInput.d.ts +3 -0
  346. package/dist/components/forms/CronInput/CronInput.js +107 -0
  347. package/dist/components/forms/CronInput/CronInput.theme.d.ts +6 -0
  348. package/dist/components/forms/CronInput/CronInput.theme.js +84 -0
  349. package/dist/components/forms/CronInput/CronInput.types.d.ts +98 -0
  350. package/dist/components/forms/CronInput/CronInput.utils.d.ts +67 -0
  351. package/dist/components/forms/CronInput/CronInput.utils.js +505 -0
  352. package/dist/components/forms/CronInput/index.d.ts +4 -0
  353. package/dist/components/forms/DatePicker/DatePicker.theme.js +3 -3
  354. package/dist/components/forms/DatePicker/DatePickerContent.js +1 -1
  355. package/dist/components/forms/FileUpload/FileUpload.js +80 -2
  356. package/dist/components/forms/FileUpload/FileUpload.theme.js +4 -4
  357. package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
  358. package/dist/components/forms/Input/Input.theme.js +1 -1
  359. package/dist/components/forms/InputCounter/InputCounter.d.ts +1 -1
  360. package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
  361. package/dist/components/forms/InputCounter/InputCounter.types.d.ts +3 -2
  362. package/dist/components/forms/InputOTP/InputOTP.theme.js +2 -2
  363. package/dist/components/forms/InputTag/InputTag.js +1 -1
  364. package/dist/components/forms/Mention/Mention.d.ts +3 -0
  365. package/dist/components/forms/Mention/Mention.js +607 -0
  366. package/dist/components/forms/Mention/Mention.theme.d.ts +6 -0
  367. package/dist/components/forms/Mention/Mention.theme.js +55 -0
  368. package/dist/components/forms/Mention/Mention.types.d.ts +151 -0
  369. package/dist/components/forms/Mention/Mention.utils.d.ts +42 -0
  370. package/dist/components/forms/Mention/Mention.utils.js +285 -0
  371. package/dist/components/forms/Mention/index.d.ts +3 -0
  372. package/dist/components/forms/Radio/Radio.d.ts +3 -4
  373. package/dist/components/forms/Radio/Radio.js +25 -12
  374. package/dist/components/forms/Radio/Radio.theme.js +34 -5
  375. package/dist/components/forms/Radio/Radio.types.d.ts +30 -4
  376. package/dist/components/forms/Radio/RadioContext.d.ts +14 -0
  377. package/dist/components/forms/Radio/RadioContext.js +12 -0
  378. package/dist/components/forms/Radio/RadioGroup.d.ts +3 -0
  379. package/dist/components/forms/Radio/RadioGroup.js +36 -0
  380. package/dist/components/forms/Radio/index.d.ts +1 -1
  381. package/dist/components/forms/RichTextEditor/RichTextEditor.js +2 -2
  382. package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +1 -1
  383. package/dist/components/forms/Select/Select.theme.js +1 -1
  384. package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +2 -0
  385. package/dist/components/forms/SelectableCard/SelectableCard.animations.js +9 -0
  386. package/dist/components/forms/SelectableCard/SelectableCard.d.ts +5 -0
  387. package/dist/components/forms/SelectableCard/SelectableCard.js +58 -0
  388. package/dist/components/forms/SelectableCard/SelectableCard.theme.d.ts +2 -0
  389. package/dist/components/forms/SelectableCard/SelectableCard.theme.js +38 -0
  390. package/dist/components/forms/SelectableCard/SelectableCard.types.d.ts +33 -0
  391. package/dist/components/forms/SelectableCard/SelectableCardContext.d.ts +3 -0
  392. package/dist/components/forms/SelectableCard/SelectableCardContext.js +12 -0
  393. package/dist/components/forms/SelectableCard/SelectableCardGroup.d.ts +3 -0
  394. package/dist/components/forms/SelectableCard/SelectableCardGroup.js +37 -0
  395. package/dist/components/forms/SelectableCard/index.d.ts +3 -0
  396. package/dist/components/forms/Signature/Signature.theme.js +1 -1
  397. package/dist/components/forms/Slider/Slider.theme.js +3 -3
  398. package/dist/components/forms/Switch/Switch.theme.js +1 -1
  399. package/dist/components/forms/TimePicker/TimePicker.theme.js +2 -2
  400. package/dist/components/forms/TimePicker/TimePickerContent.js +78 -1
  401. package/dist/components/forms/TransferList/TransferList.animations.d.ts +10 -0
  402. package/dist/components/forms/TransferList/TransferList.animations.js +32 -0
  403. package/dist/components/forms/TransferList/TransferList.d.ts +28 -0
  404. package/dist/components/forms/TransferList/TransferList.js +199 -0
  405. package/dist/components/forms/TransferList/TransferList.theme.d.ts +6 -0
  406. package/dist/components/forms/TransferList/TransferList.theme.js +60 -0
  407. package/dist/components/forms/TransferList/TransferList.types.d.ts +101 -0
  408. package/dist/components/forms/TransferList/index.d.ts +3 -0
  409. package/dist/components/forms/forms.theme.js +6 -6
  410. package/dist/components/forms/index.d.ts +15 -2
  411. package/dist/components/forms/index.js +87 -0
  412. package/dist/components/layout/FormLayout/FormLayout.d.ts +8 -0
  413. package/dist/components/layout/FormLayout/FormLayout.js +22 -0
  414. package/dist/components/layout/FormLayout/FormLayout.theme.d.ts +2 -0
  415. package/dist/components/layout/FormLayout/FormLayout.theme.js +16 -0
  416. package/dist/components/layout/FormLayout/FormLayout.types.d.ts +61 -0
  417. package/dist/components/layout/FormLayout/FormLayoutBody.d.ts +3 -0
  418. package/dist/components/layout/FormLayout/FormLayoutBody.js +91 -0
  419. package/dist/components/layout/FormLayout/FormLayoutFooter.d.ts +3 -0
  420. package/dist/components/layout/FormLayout/FormLayoutFooter.js +12 -0
  421. package/dist/components/layout/FormLayout/FormLayoutHeader.d.ts +3 -0
  422. package/dist/components/layout/FormLayout/FormLayoutHeader.js +12 -0
  423. package/dist/components/layout/FormLayout/FormLayoutSection.d.ts +3 -0
  424. package/dist/components/layout/FormLayout/FormLayoutSection.js +12 -0
  425. package/dist/components/layout/FormLayout/index.d.ts +3 -0
  426. package/dist/components/layout/PageLayout/PageLayout.d.ts +7 -0
  427. package/dist/components/layout/PageLayout/PageLayout.js +33 -0
  428. package/dist/components/layout/PageLayout/PageLayout.theme.d.ts +2 -0
  429. package/dist/components/layout/PageLayout/PageLayout.theme.js +10 -0
  430. package/dist/components/layout/PageLayout/PageLayout.types.d.ts +39 -0
  431. package/dist/components/layout/PageLayout/PageLayoutContent.d.ts +3 -0
  432. package/dist/components/layout/PageLayout/PageLayoutContent.js +12 -0
  433. package/dist/components/layout/PageLayout/PageLayoutHeader.d.ts +3 -0
  434. package/dist/components/layout/PageLayout/PageLayoutHeader.js +12 -0
  435. package/dist/components/layout/PageLayout/PageLayoutSidebar.d.ts +3 -0
  436. package/dist/components/layout/PageLayout/PageLayoutSidebar.js +12 -0
  437. package/dist/components/layout/PageLayout/index.d.ts +3 -0
  438. package/dist/components/layout/index.d.ts +2 -0
  439. package/dist/hooks/useSelectPortal.d.ts +4 -2
  440. package/dist/hooks/useSelectPortal.js +139 -51
  441. package/dist/index.d.ts +2 -0
  442. package/dist/index.js +206 -167
  443. package/dist/styles.css +1 -1
  444. package/dist/utils/colorUtils.d.ts +23 -0
  445. package/dist/utils/colorUtils.js +45 -0
  446. package/dist/utils/dateUtils.d.ts +30 -0
  447. package/dist/utils/dateUtils.js +58 -1
  448. package/dist/utils/index.d.ts +2 -1
  449. package/package.json +38 -26
  450. package/src/global.scss +673 -0
  451. package/src/styles/theme.css +378 -0
  452. package/src/theme-plugin.css +11 -0
  453. package/dist/components/core/Button/Button.animations.d.ts +0 -5
  454. package/dist/components/core/Card/CardDescription.d.ts +0 -3
  455. package/dist/components/core/Card/CardDescription.js +0 -11
  456. package/dist/components/core/DescriptionList/DescriptionList.theme.js +0 -8
  457. package/dist/components/core/Modal/ModalDescription.d.ts +0 -5
  458. package/dist/components/core/Modal/ModalDescription.js +0 -11
  459. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.d.ts +0 -34
  460. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.js +0 -218
  461. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.theme.d.ts +0 -9
  462. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.types.d.ts +0 -48
  463. package/dist/components/core/ProgressiveBlur/index.d.ts +0 -2
  464. package/dist/components/core/Table/TablePagination.js +0 -25
  465. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.d.ts +0 -0
  466. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.js +0 -0
  467. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.theme.d.ts +0 -0
  468. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.types.d.ts +0 -0
  469. /package/dist/components/{core → data-display}/DescriptionList/index.d.ts +0 -0
  470. /package/dist/components/{core → data-display}/Feed/Feed.d.ts +0 -0
  471. /package/dist/components/{core → data-display}/Feed/Feed.theme.d.ts +0 -0
  472. /package/dist/components/{core → data-display}/Feed/Feed.types.d.ts +0 -0
  473. /package/dist/components/{core → data-display}/Feed/index.d.ts +0 -0
  474. /package/dist/components/{core → data-display}/KPI/KPI.d.ts +0 -0
  475. /package/dist/components/{core → data-display}/KPI/KPI.theme.d.ts +0 -0
  476. /package/dist/components/{core → data-display}/Metric/Metric.d.ts +0 -0
  477. /package/dist/components/{core → data-display}/Metric/Metric.theme.d.ts +0 -0
  478. /package/dist/components/{core → data-display}/Metric/index.d.ts +0 -0
  479. /package/dist/components/{core → data-display}/Table/Table.animations.d.ts +0 -0
  480. /package/dist/components/{core → data-display}/Table/Table.animations.js +0 -0
  481. /package/dist/components/{core → data-display}/Table/Table.d.ts +0 -0
  482. /package/dist/components/{core → data-display}/Table/Table.filterUtils.d.ts +0 -0
  483. /package/dist/components/{core → data-display}/Table/Table.filterUtils.js +0 -0
  484. /package/dist/components/{core → data-display}/Table/Table.js +0 -0
  485. /package/dist/components/{core → data-display}/Table/Table.theme.d.ts +0 -0
  486. /package/dist/components/{core → data-display}/Table/Table.types.d.ts +0 -0
  487. /package/dist/components/{core → data-display}/Table/Table.utils.d.ts +0 -0
  488. /package/dist/components/{core → data-display}/Table/Table.utils.js +0 -0
  489. /package/dist/components/{core → data-display}/Table/TableActions.d.ts +0 -0
  490. /package/dist/components/{core → data-display}/Table/TableActionsMenu.d.ts +0 -0
  491. /package/dist/components/{core → data-display}/Table/TableBody.d.ts +0 -0
  492. /package/dist/components/{core → data-display}/Table/TableBody.js +0 -0
  493. /package/dist/components/{core → data-display}/Table/TableCell.d.ts +0 -0
  494. /package/dist/components/{core → data-display}/Table/TableCell.js +0 -0
  495. /package/dist/components/{core → data-display}/Table/TableColumnManager.d.ts +0 -0
  496. /package/dist/components/{core → data-display}/Table/TableDeclarative.d.ts +0 -0
  497. /package/dist/components/{core → data-display}/Table/TableDeclarative.js +0 -0
  498. /package/dist/components/{core → data-display}/Table/TableFilter.d.ts +0 -0
  499. /package/dist/components/{core → data-display}/Table/TableHeader.d.ts +0 -0
  500. /package/dist/components/{core → data-display}/Table/TablePagination.d.ts +0 -0
  501. /package/dist/components/{core → data-display}/Table/TableRow.d.ts +0 -0
  502. /package/dist/components/{core → data-display}/Table/TableSelectionHeader.d.ts +0 -0
  503. /package/dist/components/{core → data-display}/Table/hooks/index.d.ts +0 -0
  504. /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.d.ts +0 -0
  505. /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.js +0 -0
  506. /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.d.ts +0 -0
  507. /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.js +0 -0
  508. /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.d.ts +0 -0
  509. /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.js +0 -0
  510. /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.d.ts +0 -0
  511. /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.js +0 -0
  512. /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.d.ts +0 -0
  513. /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.js +0 -0
  514. /package/dist/components/{core → data-display}/Table/index.d.ts +0 -0
  515. /package/dist/components/{core → data-display}/Table/index.js +0 -0
  516. /package/dist/components/{core → data-display}/Timeline/Timeline.animations.d.ts +0 -0
  517. /package/dist/components/{core → data-display}/Timeline/Timeline.animations.js +0 -0
  518. /package/dist/components/{core → data-display}/Timeline/Timeline.d.ts +0 -0
  519. /package/dist/components/{core → data-display}/Timeline/Timeline.js +0 -0
  520. /package/dist/components/{core → data-display}/Timeline/Timeline.theme.d.ts +0 -0
  521. /package/dist/components/{core → data-display}/Timeline/Timeline.types.d.ts +0 -0
  522. /package/dist/components/{core → data-display}/Timeline/TimelineContent.d.ts +0 -0
  523. /package/dist/components/{core → data-display}/Timeline/TimelineContent.js +0 -0
  524. /package/dist/components/{core → data-display}/Timeline/TimelineItem.d.ts +0 -0
  525. /package/dist/components/{core → data-display}/Timeline/TimelineItem.js +0 -0
  526. /package/dist/components/{core → data-display}/Timeline/TimelineMarker.d.ts +0 -0
  527. /package/dist/components/{core → data-display}/Timeline/TimelineMarker.js +0 -0
  528. /package/dist/components/{core → data-display}/Timeline/index.d.ts +0 -0
@@ -0,0 +1,71 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import React__default, { useRef } from 'react';
3
+ import { useReducedMotion, useScroll, useTransform, motion } from 'motion/react';
4
+ import { cn } from '../../../utils/cn.js';
5
+
6
+ /**
7
+ * ParallaxSection
8
+ *
9
+ * A scroll-driven parallax wrapper that translates its children at a configurable
10
+ * rate relative to normal scroll, creating depth and visual interest.
11
+ *
12
+ * Uses `transform: translate3d` for GPU-accelerated, jank-free animation.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <ParallaxSection speed={0.3}>
17
+ * <img src="/hero-bg.jpg" alt="" className="w-full h-[600px] object-cover" />
18
+ * </ParallaxSection>
19
+ * ```
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * // Opposite direction
24
+ * <ParallaxSection speed={-0.2} direction="horizontal">
25
+ * <div className="flex gap-4">{items}</div>
26
+ * </ParallaxSection>
27
+ * ```
28
+ */
29
+ const ParallaxSection = React__default.forwardRef(({ speed = 0.5, direction = 'vertical', scrollRef, className, children, style,
30
+ // Destructure HTML event handlers that conflict with motion's API
31
+ onDrag: _onDrag, onDragStart: _onDragStart, onDragEnd: _onDragEnd, onAnimationStart: _onAnimationStart, ...restProps }, ref) => {
32
+ const shouldReduceMotion = useReducedMotion();
33
+ const internalRef = useRef(null);
34
+ // Track scroll progress of the target element through the viewport.
35
+ // offset: element bottom enters viewport -> element top exits viewport.
36
+ const { scrollYProgress } = useScroll({
37
+ target: internalRef,
38
+ container: scrollRef,
39
+ offset: ['start end', 'end start'],
40
+ });
41
+ // Map 0-1 scroll progress to a pixel displacement.
42
+ // At progress 0 (element just entering) the offset is positive (pushed down),
43
+ // and at progress 1 (element leaving) the offset is negative (pulled up),
44
+ // scaled by the speed multiplier. This creates the classic parallax feel.
45
+ const range = 200 * speed;
46
+ const yTransform = useTransform(scrollYProgress, [0, 1], [range, -range]);
47
+ const xTransform = useTransform(scrollYProgress, [0, 1], [range, -range]);
48
+ // When reduced motion is preferred, render without any parallax.
49
+ if (shouldReduceMotion) {
50
+ return (jsx("div", { ref: (node) => {
51
+ internalRef.current = node;
52
+ if (typeof ref === 'function')
53
+ ref(node);
54
+ else if (ref)
55
+ ref.current = node;
56
+ }, className: cn('will-change-transform', className), style: style, ...restProps, children: children }));
57
+ }
58
+ const motionStyle = direction === 'vertical'
59
+ ? { y: yTransform, ...style }
60
+ : { x: xTransform, ...style };
61
+ return (jsx(motion.div, { ref: (node) => {
62
+ internalRef.current = node;
63
+ if (typeof ref === 'function')
64
+ ref(node);
65
+ else if (ref)
66
+ ref.current = node;
67
+ }, className: cn('will-change-transform', className), style: motionStyle, ...restProps, children: children }));
68
+ });
69
+ ParallaxSection.displayName = 'ParallaxSection';
70
+
71
+ export { ParallaxSection };
@@ -0,0 +1,11 @@
1
+ import type { RefObject } from 'react';
2
+ export interface ParallaxSectionProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /** Parallax speed multiplier. Negative = moves opposite direction. (default 0.5) */
4
+ speed?: number;
5
+ /** Direction of parallax (default 'vertical') */
6
+ direction?: 'vertical' | 'horizontal';
7
+ /** Use scroll container instead of window (ref to container) */
8
+ scrollRef?: RefObject<HTMLElement>;
9
+ className?: string;
10
+ children: React.ReactNode;
11
+ }
@@ -0,0 +1,2 @@
1
+ export { ParallaxSection } from './ParallaxSection';
2
+ export type { ParallaxSectionProps } from './ParallaxSection.types';
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import type { ParticlesProps } from "./Particles.types";
3
+ /**
4
+ * Particles creates a floating particle background effect using Three.js.
5
+ *
6
+ * Particles drift upward with slight horizontal variation and react to mouse
7
+ * proximity. Optional connection lines are drawn between nearby particles.
8
+ *
9
+ * The component renders as an absolutely-positioned layer, ideal for use as
10
+ * a section or page background.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * <div className="relative h-screen overflow-hidden bg-gray-950">
15
+ * <Particles count={100} color="#6366f1" connectionDistance={120} />
16
+ * <div className="relative z-10 p-8">
17
+ * <h1 className="text-white text-4xl">Content on top</h1>
18
+ * </div>
19
+ * </div>
20
+ * ```
21
+ */
22
+ export declare const Particles: React.FC<ParticlesProps>;
@@ -0,0 +1,33 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { Canvas } from '@react-three/fiber';
3
+ import { useReducedMotion } from 'motion/react';
4
+ import { cn } from '../../../utils/cn.js';
5
+ import 'react';
6
+ import { ParticlesScene } from './Particles.scene.js';
7
+
8
+ /**
9
+ * Particles creates a floating particle background effect using Three.js.
10
+ *
11
+ * Particles drift upward with slight horizontal variation and react to mouse
12
+ * proximity. Optional connection lines are drawn between nearby particles.
13
+ *
14
+ * The component renders as an absolutely-positioned layer, ideal for use as
15
+ * a section or page background.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <div className="relative h-screen overflow-hidden bg-gray-950">
20
+ * <Particles count={100} color="#6366f1" connectionDistance={120} />
21
+ * <div className="relative z-10 p-8">
22
+ * <h1 className="text-white text-4xl">Content on top</h1>
23
+ * </div>
24
+ * </div>
25
+ * ```
26
+ */
27
+ const Particles = ({ count = 80, color = "#6366f1", size = 2, speed = 1, connectionDistance = 150, connectionColor, mouseRadius = 200, mouseForce = 0.5, opacity = 0.6, className, style, ...rest }) => {
28
+ var _a;
29
+ const shouldReduceMotion = (_a = useReducedMotion()) !== null && _a !== void 0 ? _a : false;
30
+ return (jsx("div", { className: cn("absolute inset-0 pointer-events-none", className), style: style, ...rest, children: jsx(Canvas, { className: "!pointer-events-auto", dpr: [1, 2], orthographic: true, camera: { zoom: 50, near: 0.1, far: 100, position: [0, 0, 10] }, gl: { antialias: false, alpha: true }, style: { position: "absolute", inset: 0, width: "100%", height: "100%" }, children: jsx(ParticlesScene, { count: count, color: color, size: size, speed: speed, connectionDistance: connectionDistance, connectionColor: connectionColor || color, mouseRadius: mouseRadius, mouseForce: mouseForce, opacity: opacity, reducedMotion: shouldReduceMotion }) }) }));
31
+ };
32
+
33
+ export { Particles };
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { ParticlesSceneProps } from "./Particles.types";
3
+ export declare const ParticlesScene: React.FC<ParticlesSceneProps>;
@@ -0,0 +1,284 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useRef, useMemo, useEffect, useCallback } from 'react';
3
+ import { useThree, useFrame } from '@react-three/fiber';
4
+ import * as THREE from 'three';
5
+
6
+ // ── Helpers ──────────────────────────────────────────────────────────────────
7
+ /** Convert a hex colour string to a normalised THREE.Color. */
8
+ function hexToColor(hex) {
9
+ return new THREE.Color(hex);
10
+ }
11
+ /**
12
+ * Seed particle data: positions scattered across an area that maps to the
13
+ * viewport, plus per-particle velocity and depth factor.
14
+ */
15
+ function createParticleData(count, width, height) {
16
+ const positions = new Float32Array(count * 3);
17
+ const velocities = new Float32Array(count * 3);
18
+ const depths = new Float32Array(count); // 0 = far, 1 = near
19
+ const originals = new Float32Array(count * 3);
20
+ for (let i = 0; i < count; i++) {
21
+ const i3 = i * 3;
22
+ const x = (Math.random() - 0.5) * width;
23
+ const y = (Math.random() - 0.5) * height;
24
+ const z = 0;
25
+ positions[i3] = x;
26
+ positions[i3 + 1] = y;
27
+ positions[i3 + 2] = z;
28
+ originals[i3] = x;
29
+ originals[i3 + 1] = y;
30
+ originals[i3 + 2] = z;
31
+ // Random gentle velocity: slight upward float + horizontal drift
32
+ velocities[i3] = (Math.random() - 0.5) * 0.3; // vx
33
+ velocities[i3 + 1] = Math.random() * 0.2 + 0.1; // vy (upward)
34
+ velocities[i3 + 2] = 0; // vz
35
+ depths[i] = Math.random();
36
+ }
37
+ return { positions, velocities, depths, originals };
38
+ }
39
+ // ── Scene ────────────────────────────────────────────────────────────────────
40
+ const ParticlesScene = ({ count, color, size, speed, connectionDistance, connectionColor, mouseRadius, mouseForce, opacity, reducedMotion, }) => {
41
+ const { viewport } = useThree();
42
+ // Refs
43
+ const pointsRef = useRef(null);
44
+ const linesRef = useRef(null);
45
+ const mouseNDC = useRef(new THREE.Vector2(9999, 9999));
46
+ // Keep latest props in a ref so useFrame reads current values
47
+ const propsRef = useRef({
48
+ speed,
49
+ mouseRadius,
50
+ mouseForce,
51
+ connectionDistance,
52
+ opacity,
53
+ reducedMotion,
54
+ });
55
+ propsRef.current = {
56
+ speed,
57
+ mouseRadius,
58
+ mouseForce,
59
+ connectionDistance,
60
+ opacity,
61
+ reducedMotion,
62
+ };
63
+ // Dimensions in world units
64
+ const worldWidth = viewport.width;
65
+ const worldHeight = viewport.height;
66
+ // ── Particle data (re-created when count or viewport changes) ────────────
67
+ const data = useMemo(() => createParticleData(count, worldWidth, worldHeight), [count, worldWidth, worldHeight]);
68
+ // ── Points geometry + material ───────────────────────────────────────────
69
+ const pointsGeometry = useMemo(() => {
70
+ const geo = new THREE.BufferGeometry();
71
+ geo.setAttribute("position", new THREE.BufferAttribute(data.positions, 3));
72
+ geo.setAttribute("depth", new THREE.BufferAttribute(data.depths, 1));
73
+ return geo;
74
+ }, [data]);
75
+ const pointsMaterial = useMemo(() => {
76
+ return new THREE.ShaderMaterial({
77
+ transparent: true,
78
+ depthWrite: false,
79
+ uniforms: {
80
+ u_color: { value: hexToColor(color) },
81
+ u_size: { value: size },
82
+ u_opacity: { value: opacity },
83
+ u_pixelRatio: { value: Math.min(window.devicePixelRatio, 2) },
84
+ },
85
+ vertexShader: /* glsl */ `
86
+ attribute float depth;
87
+ uniform float u_size;
88
+ uniform float u_pixelRatio;
89
+ varying float vDepth;
90
+
91
+ void main() {
92
+ vDepth = depth;
93
+ vec4 mvPos = modelViewMatrix * vec4(position, 1.0);
94
+ // Larger particles appear closer (depth 1 = near, 0 = far)
95
+ gl_PointSize = u_size * u_pixelRatio * (0.5 + depth * 0.8);
96
+ gl_Position = projectionMatrix * mvPos;
97
+ }
98
+ `,
99
+ fragmentShader: /* glsl */ `
100
+ uniform vec3 u_color;
101
+ uniform float u_opacity;
102
+ varying float vDepth;
103
+
104
+ void main() {
105
+ // Circular point shape
106
+ float dist = length(gl_PointCoord - vec2(0.5));
107
+ if (dist > 0.5) discard;
108
+
109
+ // Soft edge falloff
110
+ float alpha = 1.0 - smoothstep(0.3, 0.5, dist);
111
+ // Depth affects brightness: closer = brighter
112
+ float brightness = 0.4 + vDepth * 0.6;
113
+ gl_FragColor = vec4(u_color * brightness, alpha * u_opacity * (0.3 + vDepth * 0.7));
114
+ }
115
+ `,
116
+ });
117
+ }, [color, size, opacity]);
118
+ // Update material uniforms when props change
119
+ useEffect(() => {
120
+ if (pointsMaterial) {
121
+ pointsMaterial.uniforms.u_color.value = hexToColor(color);
122
+ pointsMaterial.uniforms.u_size.value = size;
123
+ pointsMaterial.uniforms.u_opacity.value = opacity;
124
+ }
125
+ }, [color, size, opacity, pointsMaterial]);
126
+ // ── Connection lines geometry + material ─────────────────────────────────
127
+ const maxLines = count * 6; // upper bound on line segments
128
+ const linesGeometry = useMemo(() => {
129
+ const geo = new THREE.BufferGeometry();
130
+ const linePositions = new Float32Array(maxLines * 6); // 2 verts * 3 coords per segment
131
+ const lineAlphas = new Float32Array(maxLines * 2); // alpha per vertex
132
+ geo.setAttribute("position", new THREE.BufferAttribute(linePositions, 3));
133
+ geo.setAttribute("alpha", new THREE.BufferAttribute(lineAlphas, 1));
134
+ geo.setDrawRange(0, 0);
135
+ return geo;
136
+ }, [maxLines]);
137
+ const linesMaterial = useMemo(() => {
138
+ return new THREE.ShaderMaterial({
139
+ transparent: true,
140
+ depthWrite: false,
141
+ uniforms: {
142
+ u_color: { value: hexToColor(connectionColor || color) },
143
+ u_opacity: { value: opacity },
144
+ },
145
+ vertexShader: /* glsl */ `
146
+ attribute float alpha;
147
+ varying float vAlpha;
148
+
149
+ void main() {
150
+ vAlpha = alpha;
151
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
152
+ }
153
+ `,
154
+ fragmentShader: /* glsl */ `
155
+ uniform vec3 u_color;
156
+ uniform float u_opacity;
157
+ varying float vAlpha;
158
+
159
+ void main() {
160
+ gl_FragColor = vec4(u_color, vAlpha * u_opacity * 0.35);
161
+ }
162
+ `,
163
+ });
164
+ }, [color, connectionColor, opacity]);
165
+ // Update line material when props change
166
+ useEffect(() => {
167
+ if (linesMaterial) {
168
+ linesMaterial.uniforms.u_color.value = hexToColor(connectionColor || color);
169
+ linesMaterial.uniforms.u_opacity.value = opacity;
170
+ }
171
+ }, [color, connectionColor, opacity, linesMaterial]);
172
+ // ── Mouse tracking ───────────────────────────────────────────────────────
173
+ const handlePointerMove = useCallback((event) => {
174
+ mouseNDC.current.set(event.point.x, event.point.y);
175
+ }, []);
176
+ const handlePointerLeave = useCallback(() => {
177
+ // Move mouse far away so it has no effect
178
+ mouseNDC.current.set(9999, 9999);
179
+ }, []);
180
+ // ── Cleanup on unmount ───────────────────────────────────────────────────
181
+ useEffect(() => {
182
+ return () => {
183
+ pointsGeometry.dispose();
184
+ pointsMaterial.dispose();
185
+ linesGeometry.dispose();
186
+ linesMaterial.dispose();
187
+ };
188
+ }, [pointsGeometry, pointsMaterial, linesGeometry, linesMaterial]);
189
+ // ── Animation loop ───────────────────────────────────────────────────────
190
+ useFrame((_, delta) => {
191
+ const { speed: spd, mouseRadius: mRadius, mouseForce: mForce, connectionDistance: connDist, opacity: opac, reducedMotion: reduced, } = propsRef.current;
192
+ if (reduced)
193
+ return; // Respect reduced motion preference
194
+ const clampedDelta = Math.min(delta, 0.05); // cap to prevent large jumps
195
+ const dt = clampedDelta * spd;
196
+ const posAttr = pointsGeometry.getAttribute("position");
197
+ const posArr = posAttr.array;
198
+ const halfW = worldWidth / 2;
199
+ const halfH = worldHeight / 2;
200
+ const mx = mouseNDC.current.x;
201
+ const my = mouseNDC.current.y;
202
+ // Convert connectionDistance from screen-pixels to world units.
203
+ // viewport.width corresponds to the canvas pixel width, so we scale.
204
+ const connDistWorld = (connDist / (viewport.width * 50)) * worldWidth;
205
+ const mouseRadiusWorld = (mRadius / (viewport.width * 50)) * worldWidth;
206
+ // ── Update particle positions ────────────────────────────────────────
207
+ for (let i = 0; i < count; i++) {
208
+ const i3 = i * 3;
209
+ // Apply velocity (floating upward + drift)
210
+ posArr[i3] += data.velocities[i3] * dt;
211
+ posArr[i3 + 1] += data.velocities[i3 + 1] * dt;
212
+ // Mouse repulsion
213
+ if (mRadius > 0) {
214
+ const dx = posArr[i3] - mx;
215
+ const dy = posArr[i3 + 1] - my;
216
+ const distSq = dx * dx + dy * dy;
217
+ const mRadSq = mouseRadiusWorld * mouseRadiusWorld;
218
+ if (distSq < mRadSq && distSq > 0.0001) {
219
+ const dist = Math.sqrt(distSq);
220
+ const force = ((mouseRadiusWorld - dist) / mouseRadiusWorld) * mForce * dt;
221
+ posArr[i3] += (dx / dist) * force;
222
+ posArr[i3 + 1] += (dy / dist) * force;
223
+ }
224
+ }
225
+ // Wrap around edges
226
+ if (posArr[i3] > halfW)
227
+ posArr[i3] = -halfW;
228
+ if (posArr[i3] < -halfW)
229
+ posArr[i3] = halfW;
230
+ if (posArr[i3 + 1] > halfH) {
231
+ posArr[i3 + 1] = -halfH;
232
+ // Re-randomize x when wrapping vertically for natural look
233
+ posArr[i3] = (Math.random() - 0.5) * worldWidth;
234
+ }
235
+ if (posArr[i3 + 1] < -halfH)
236
+ posArr[i3 + 1] = halfH;
237
+ }
238
+ posAttr.needsUpdate = true;
239
+ // ── Update connection lines ──────────────────────────────────────────
240
+ if (connDist > 0 && linesGeometry) {
241
+ const linePosAttr = linesGeometry.getAttribute("position");
242
+ const lineAlphaAttr = linesGeometry.getAttribute("alpha");
243
+ const linePosArr = linePosAttr.array;
244
+ const lineAlphaArr = lineAlphaAttr.array;
245
+ let lineIdx = 0;
246
+ const connDistSq = connDistWorld * connDistWorld;
247
+ for (let i = 0; i < count && lineIdx < maxLines; i++) {
248
+ const i3 = i * 3;
249
+ for (let j = i + 1; j < count && lineIdx < maxLines; j++) {
250
+ const j3 = j * 3;
251
+ const dx = posArr[i3] - posArr[j3];
252
+ const dy = posArr[i3 + 1] - posArr[j3 + 1];
253
+ const distSq = dx * dx + dy * dy;
254
+ if (distSq < connDistSq) {
255
+ const lineBase = lineIdx * 6;
256
+ const alphaBase = lineIdx * 2;
257
+ linePosArr[lineBase] = posArr[i3];
258
+ linePosArr[lineBase + 1] = posArr[i3 + 1];
259
+ linePosArr[lineBase + 2] = 0;
260
+ linePosArr[lineBase + 3] = posArr[j3];
261
+ linePosArr[lineBase + 4] = posArr[j3 + 1];
262
+ linePosArr[lineBase + 5] = 0;
263
+ const alpha = 1.0 - Math.sqrt(distSq) / connDistWorld;
264
+ lineAlphaArr[alphaBase] = alpha;
265
+ lineAlphaArr[alphaBase + 1] = alpha;
266
+ lineIdx++;
267
+ }
268
+ }
269
+ }
270
+ linesGeometry.setDrawRange(0, lineIdx * 2);
271
+ linePosAttr.needsUpdate = true;
272
+ lineAlphaAttr.needsUpdate = true;
273
+ if (linesMaterial) {
274
+ linesMaterial.uniforms.u_opacity.value = opac;
275
+ }
276
+ }
277
+ else if (linesGeometry) {
278
+ linesGeometry.setDrawRange(0, 0);
279
+ }
280
+ });
281
+ return (jsxs(Fragment, { children: [jsxs("mesh", { onPointerMove: handlePointerMove, onPointerLeave: handlePointerLeave, children: [jsx("planeGeometry", { args: [worldWidth * 2, worldHeight * 2] }), jsx("meshBasicMaterial", { transparent: true, opacity: 0, depthWrite: false })] }), jsx("points", { ref: pointsRef, geometry: pointsGeometry, material: pointsMaterial }), connectionDistance > 0 && (jsx("lineSegments", { ref: linesRef, geometry: linesGeometry, material: linesMaterial }))] }));
282
+ };
283
+
284
+ export { ParticlesScene };
@@ -0,0 +1,65 @@
1
+ import React from "react";
2
+ export interface ParticlesProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "color"> {
3
+ /**
4
+ * Number of particles to render.
5
+ * @default 80
6
+ */
7
+ count?: number;
8
+ /**
9
+ * Particle colour as a CSS hex string.
10
+ * @default '#6366f1'
11
+ */
12
+ color?: string;
13
+ /**
14
+ * Base particle size in pixels.
15
+ * @default 2
16
+ */
17
+ size?: number;
18
+ /**
19
+ * Animation speed multiplier (1 = normal).
20
+ * @default 1
21
+ */
22
+ speed?: number;
23
+ /**
24
+ * Maximum pixel distance between particles to draw a connection line.
25
+ * Set to 0 to disable connection lines entirely.
26
+ * @default 150
27
+ */
28
+ connectionDistance?: number;
29
+ /**
30
+ * Colour of the connection lines between particles.
31
+ * Defaults to the same value as `color` when omitted.
32
+ */
33
+ connectionColor?: string;
34
+ /**
35
+ * Pixel radius within which the mouse affects particles.
36
+ * Set to 0 to disable mouse interaction.
37
+ * @default 200
38
+ */
39
+ mouseRadius?: number;
40
+ /**
41
+ * Strength of the push force applied by the mouse cursor.
42
+ * @default 0.5
43
+ */
44
+ mouseForce?: number;
45
+ /**
46
+ * Overall opacity of the particle layer (0 to 1).
47
+ * @default 0.6
48
+ */
49
+ opacity?: number;
50
+ }
51
+ /**
52
+ * Internal props forwarded to the Three.js scene component.
53
+ */
54
+ export interface ParticlesSceneProps {
55
+ count: number;
56
+ color: string;
57
+ size: number;
58
+ speed: number;
59
+ connectionDistance: number;
60
+ connectionColor: string;
61
+ mouseRadius: number;
62
+ mouseForce: number;
63
+ opacity: number;
64
+ reducedMotion: boolean;
65
+ }
@@ -0,0 +1,2 @@
1
+ export { Particles } from "./Particles";
2
+ export type { ParticlesProps } from "./Particles.types";
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { ProgressiveBlurProps } from "./ProgressiveBlur.types";
3
+ export declare const ProgressiveBlur: React.ForwardRefExoticComponent<ProgressiveBlurProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,75 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { forwardRef, useMemo } from 'react';
3
+ import { cn } from '../../../utils/cn.js';
4
+ import { progressiveBlurTheme } from './ProgressiveBlur.theme.js';
5
+
6
+ const DEFAULT_LAYERS = 8;
7
+ const DEFAULT_MAX_BLUR = 64;
8
+ const DEFAULT_SIZE = "30%";
9
+ /**
10
+ * Generate exponentially distributed blur levels (powers of 2).
11
+ * e.g. for 8 layers with max 64: [0.5, 1, 2, 4, 8, 16, 32, 64]
12
+ */
13
+ function generateBlurLevels(layers, maxBlur) {
14
+ return Array.from({ length: layers }, (_, i) => maxBlur * Math.pow(2, i - (layers - 1)));
15
+ }
16
+ const GRADIENT_DIRECTIONS = {
17
+ top: "to top",
18
+ bottom: "to bottom",
19
+ left: "to left",
20
+ right: "to right",
21
+ };
22
+ /**
23
+ * Renders a single blur instance for one position.
24
+ */
25
+ const BlurInstance = forwardRef(({ position, blurLevels, size, theme, className, style, ...rest }, ref) => {
26
+ const isVertical = position === "top" || position === "bottom";
27
+ const direction = GRADIENT_DIRECTIONS[position];
28
+ const n = blurLevels.length;
29
+ const containerStyle = {
30
+ ...(isVertical ? { height: size } : { width: size }),
31
+ ...style,
32
+ };
33
+ return (jsx("div", { ref: ref, className: cn(theme.baseStyle, theme.positions[position], className), style: containerStyle, ...rest, children: blurLevels.map((blur, i) => {
34
+ // MagicUI mask formula: each layer has a 1-step fade-in, 1-step solid,
35
+ // and 1-step fade-out. Adjacent layers overlap by 2 steps, creating
36
+ // smooth transitions. Values beyond 100% are clamped by the browser.
37
+ const step = 100 / n;
38
+ const gradient = `linear-gradient(${direction}, transparent ${i * step}%, black ${(i + 1) * step}%, black ${(i + 2) * step}%, transparent ${(i + 3) * step}%)`;
39
+ const layerStyle = {
40
+ maskImage: gradient,
41
+ WebkitMaskImage: gradient,
42
+ backdropFilter: `blur(${blur}px)`,
43
+ WebkitBackdropFilter: `blur(${blur}px)`,
44
+ zIndex: i + 1,
45
+ };
46
+ return (jsx("div", { className: theme.layerStyle, style: layerStyle }, i));
47
+ }) }));
48
+ });
49
+ BlurInstance.displayName = "BlurInstance";
50
+ const ProgressiveBlur = forwardRef(({ position = "bottom", blurLevels: blurLevelsProp, layers = DEFAULT_LAYERS, blurIntensity = DEFAULT_MAX_BLUR, size = DEFAULT_SIZE, className, theme: themeOverrides, ...rest }, ref) => {
51
+ const theme = useMemo(() => {
52
+ var _a, _b;
53
+ return ({
54
+ baseStyle: (_a = themeOverrides === null || themeOverrides === void 0 ? void 0 : themeOverrides.baseStyle) !== null && _a !== void 0 ? _a : progressiveBlurTheme.baseStyle,
55
+ positions: {
56
+ ...progressiveBlurTheme.positions,
57
+ ...themeOverrides === null || themeOverrides === void 0 ? void 0 : themeOverrides.positions,
58
+ },
59
+ layerStyle: (_b = themeOverrides === null || themeOverrides === void 0 ? void 0 : themeOverrides.layerStyle) !== null && _b !== void 0 ? _b : progressiveBlurTheme.layerStyle,
60
+ });
61
+ }, [themeOverrides]);
62
+ const blurLevels = useMemo(() => blurLevelsProp !== null && blurLevelsProp !== void 0 ? blurLevelsProp : generateBlurLevels(layers, blurIntensity), [blurLevelsProp, layers, blurIntensity]);
63
+ const positions = Array.isArray(position)
64
+ ? position
65
+ : [position];
66
+ // Single position — render directly, forward ref and remaining props
67
+ if (positions.length === 1) {
68
+ return (jsx(BlurInstance, { ref: ref, position: positions[0], blurLevels: blurLevels, size: size, theme: theme, className: className, ...rest }));
69
+ }
70
+ // Multiple positions — render one BlurInstance per position
71
+ return (jsx(Fragment, { children: positions.map((pos) => (jsx(BlurInstance, { position: pos, blurLevels: blurLevels, size: size, theme: theme, className: className, ...rest }, pos))) }));
72
+ });
73
+ ProgressiveBlur.displayName = "ProgressiveBlur";
74
+
75
+ export { ProgressiveBlur };
@@ -0,0 +1,7 @@
1
+ import type { ProgressiveBlurPosition } from "./ProgressiveBlur.types";
2
+ export interface ProgressiveBlurTheme {
3
+ baseStyle: string;
4
+ positions: Record<ProgressiveBlurPosition, string>;
5
+ layerStyle: string;
6
+ }
7
+ export declare const progressiveBlurTheme: ProgressiveBlurTheme;
@@ -0,0 +1,12 @@
1
+ const progressiveBlurTheme = {
2
+ baseStyle: "absolute pointer-events-none z-10",
3
+ positions: {
4
+ top: "top-0 left-0 right-0",
5
+ bottom: "bottom-0 left-0 right-0",
6
+ left: "left-0 top-0 bottom-0",
7
+ right: "right-0 top-0 bottom-0",
8
+ },
9
+ layerStyle: "absolute inset-0",
10
+ };
11
+
12
+ export { progressiveBlurTheme };
@@ -0,0 +1,47 @@
1
+ import React from "react";
2
+ export type ProgressiveBlurPosition = "top" | "bottom" | "left" | "right";
3
+ export interface ProgressiveBlurProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /**
5
+ * Position(s) where the blur effect should be applied.
6
+ * Can be a single position or array of positions.
7
+ * @default "bottom"
8
+ */
9
+ position?: ProgressiveBlurPosition | ProgressiveBlurPosition[];
10
+ /**
11
+ * Custom blur levels array (in pixels) for fine-grained control.
12
+ * If provided, overrides `layers` and `blurIntensity`.
13
+ * @example [0.5, 1, 2, 4, 8, 16, 32, 64]
14
+ */
15
+ blurLevels?: number[];
16
+ /**
17
+ * Number of blur layers to generate.
18
+ * More layers = smoother gradient, but more DOM nodes.
19
+ * Ignored if `blurLevels` is provided.
20
+ * @default 8
21
+ */
22
+ layers?: number;
23
+ /**
24
+ * Maximum blur value in pixels for auto-generated levels.
25
+ * Ignored if `blurLevels` is provided.
26
+ * @default 64
27
+ */
28
+ blurIntensity?: number;
29
+ /**
30
+ * Size of the blur region.
31
+ * Height for top/bottom positions, width for left/right positions.
32
+ * @default "30%"
33
+ */
34
+ size?: string;
35
+ /** Custom className for styling overrides */
36
+ className?: string;
37
+ /** Theme overrides */
38
+ theme?: ProgressiveBlurThemeOverrides;
39
+ }
40
+ export interface ProgressiveBlurThemeOverrides {
41
+ /** Base styles for each blur instance container */
42
+ baseStyle?: string;
43
+ /** Position-specific styles */
44
+ positions?: Partial<Record<ProgressiveBlurPosition, string>>;
45
+ /** Styles for each individual blur layer div */
46
+ layerStyle?: string;
47
+ }
@@ -0,0 +1,2 @@
1
+ export { ProgressiveBlur } from "./ProgressiveBlur";
2
+ export type { ProgressiveBlurProps, ProgressiveBlurPosition, ProgressiveBlurThemeOverrides, } from "./ProgressiveBlur.types";