@flikk/ui 1.0.0-beta.2 → 1.0.0-beta.4

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 (394) hide show
  1. package/dist/components/ai/ApprovalCard/ApprovalCard.js +2 -2
  2. package/dist/components/ai/ApprovalCard/ApprovalCard.types.d.ts +2 -2
  3. package/dist/components/ai/PromptInput/PromptInput.js +51 -10
  4. package/dist/components/ai/PromptInput/PromptInput.theme.js +1 -0
  5. package/dist/components/ai/PromptInput/PromptInput.types.d.ts +20 -0
  6. package/dist/components/charts/DonutChart/DonutChart.types.d.ts +1 -2
  7. package/dist/components/charts/DonutChart/MultiSegmentDonutChart.types.d.ts +1 -2
  8. package/dist/components/core/Accordion/Accordion.theme.js +2 -2
  9. package/dist/components/core/Alert/Alert.js +2 -2
  10. package/dist/components/core/Alert/Alert.types.d.ts +2 -2
  11. package/dist/components/core/AlertDialog/AlertDialog.d.ts +1 -1
  12. package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
  13. package/dist/components/core/AlertDialog/AlertDialog.types.d.ts +2 -2
  14. package/dist/components/core/Badge/Badge.d.ts +1 -1
  15. package/dist/components/core/Badge/Badge.js +11 -9
  16. package/dist/components/core/Badge/Badge.theme.js +13 -14
  17. package/dist/components/core/Badge/Badge.types.d.ts +8 -4
  18. package/dist/components/core/Button/Button.d.ts +1 -1
  19. package/dist/components/core/Button/Button.theme.js +8 -9
  20. package/dist/components/core/Button/Button.types.d.ts +1 -2
  21. package/dist/components/core/Calendar/Calendar.theme.js +1 -1
  22. package/dist/components/core/Card/Card.d.ts +2 -2
  23. package/dist/components/core/Card/Card.js +6 -7
  24. package/dist/components/core/Card/Card.theme.js +4 -4
  25. package/dist/components/core/Card/Card.types.d.ts +5 -20
  26. package/dist/components/core/Card/CardSubtitle.d.ts +3 -0
  27. package/dist/components/core/Card/CardSubtitle.js +11 -0
  28. package/dist/components/core/Card/index.d.ts +2 -2
  29. package/dist/components/core/CommandPalette/CommandItem.d.ts +1 -1
  30. package/dist/components/core/CommandPalette/CommandItem.js +2 -2
  31. package/dist/components/core/CommandPalette/CommandPalette.js +2 -2
  32. package/dist/components/core/CommandPalette/CommandPalette.theme.js +2 -2
  33. package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -2
  34. package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +1 -1
  35. package/dist/components/core/ContextMenu/ContextMenuItem.js +2 -2
  36. package/dist/components/core/Drawer/Drawer.d.ts +13 -1
  37. package/dist/components/core/Drawer/Drawer.js +23 -10
  38. package/dist/components/core/Drawer/Drawer.theme.js +1 -1
  39. package/dist/components/core/Drawer/Drawer.types.d.ts +21 -4
  40. package/dist/components/core/Drawer/DrawerHeader.d.ts +5 -0
  41. package/dist/components/core/Drawer/DrawerHeader.js +14 -0
  42. package/dist/components/core/Drawer/DrawerSubtitle.d.ts +5 -0
  43. package/dist/components/core/Drawer/DrawerSubtitle.js +11 -0
  44. package/dist/components/core/Drawer/DrawerTitle.d.ts +5 -0
  45. package/dist/components/core/Drawer/DrawerTitle.js +11 -0
  46. package/dist/components/core/Drawer/index.d.ts +1 -1
  47. package/dist/components/core/Dropdown/Dropdown.types.d.ts +4 -4
  48. package/dist/components/core/Dropdown/DropdownItem.js +2 -2
  49. package/dist/components/core/Empty/Empty.js +2 -2
  50. package/dist/components/core/Empty/Empty.theme.d.ts +1 -1
  51. package/dist/components/core/Empty/Empty.theme.js +3 -3
  52. package/dist/components/core/Empty/Empty.types.d.ts +2 -2
  53. package/dist/components/core/Link/Link.d.ts +1 -1
  54. package/dist/components/core/Link/Link.types.d.ts +2 -2
  55. package/dist/components/core/MenuItem/MenuItem.js +2 -2
  56. package/dist/components/core/MenuItem/MenuItem.theme.d.ts +1 -2
  57. package/dist/components/core/MenuItem/MenuItem.theme.js +7 -9
  58. package/dist/components/core/MenuItem/MenuItem.types.d.ts +1 -1
  59. package/dist/components/core/Message/Message.d.ts +3 -2
  60. package/dist/components/core/Message/Message.js +30 -24
  61. package/dist/components/core/Message/Message.theme.d.ts +1 -1
  62. package/dist/components/core/Message/Message.theme.js +22 -24
  63. package/dist/components/core/Message/Message.types.d.ts +0 -7
  64. package/dist/components/core/Message/MessageList.animations.d.ts +6 -0
  65. package/dist/components/core/Message/MessageList.animations.js +32 -0
  66. package/dist/components/core/Message/MessageList.d.ts +5 -0
  67. package/dist/components/core/Message/MessageList.js +78 -0
  68. package/dist/components/core/Message/MessageList.theme.d.ts +2 -0
  69. package/dist/components/core/Message/MessageList.theme.js +6 -0
  70. package/dist/components/core/Message/MessageList.types.d.ts +32 -0
  71. package/dist/components/core/Message/index.d.ts +2 -0
  72. package/dist/components/core/Modal/Modal.d.ts +2 -2
  73. package/dist/components/core/Modal/Modal.js +5 -5
  74. package/dist/components/core/Modal/Modal.theme.js +5 -5
  75. package/dist/components/core/Modal/Modal.types.d.ts +4 -4
  76. package/dist/components/core/Modal/ModalSubtitle.d.ts +5 -0
  77. package/dist/components/core/Modal/ModalSubtitle.js +11 -0
  78. package/dist/components/core/ModalStack/ModalStack.animations.js +3 -3
  79. package/dist/components/core/ModalStack/ModalStackModal.js +3 -3
  80. package/dist/components/core/PageHeading/PageHeading.d.ts +8 -0
  81. package/dist/components/core/PageHeading/PageHeading.js +28 -0
  82. package/dist/components/core/PageHeading/PageHeading.theme.d.ts +2 -0
  83. package/dist/components/core/PageHeading/PageHeading.theme.js +11 -0
  84. package/dist/components/core/PageHeading/PageHeading.types.d.ts +55 -0
  85. package/dist/components/core/PageHeading/PageHeadingActions.d.ts +3 -0
  86. package/dist/components/core/PageHeading/PageHeadingActions.js +11 -0
  87. package/dist/components/core/PageHeading/PageHeadingBackButton.d.ts +3 -0
  88. package/dist/components/core/PageHeading/PageHeadingBackButton.js +12 -0
  89. package/dist/components/core/PageHeading/PageHeadingIcon.d.ts +3 -0
  90. package/dist/components/core/PageHeading/PageHeadingIcon.js +11 -0
  91. package/dist/components/core/PageHeading/PageHeadingSubtitle.d.ts +3 -0
  92. package/dist/components/core/PageHeading/PageHeadingSubtitle.js +11 -0
  93. package/dist/components/core/PageHeading/PageHeadingTitle.d.ts +3 -0
  94. package/dist/components/core/PageHeading/PageHeadingTitle.js +11 -0
  95. package/dist/components/core/PageHeading/index.d.ts +2 -0
  96. package/dist/components/core/Popover/Popover.theme.js +1 -1
  97. package/dist/components/core/Segmented/Segmented.theme.js +3 -3
  98. package/dist/components/core/Sidebar/Sidebar.js +1 -0
  99. package/dist/components/core/SocialIcon/SocialIcon.d.ts +3 -0
  100. package/dist/components/core/SocialIcon/SocialIcon.js +30 -0
  101. package/dist/components/core/SocialIcon/SocialIcon.theme.d.ts +2 -0
  102. package/dist/components/core/SocialIcon/SocialIcon.theme.js +12 -0
  103. package/dist/components/core/SocialIcon/SocialIcon.types.d.ts +18 -0
  104. package/dist/components/core/SocialIcon/index.d.ts +2 -0
  105. package/dist/components/core/SocialIcon/platforms.d.ts +17 -0
  106. package/dist/components/core/SocialIcon/platforms.js +234 -0
  107. package/dist/components/core/Toast/Toast.js +4 -4
  108. package/dist/components/core/Toast/Toast.theme.js +1 -1
  109. package/dist/components/core/Toast/Toast.types.d.ts +9 -9
  110. package/dist/components/core/Toast/useToast.js +6 -6
  111. package/dist/components/core/index.d.ts +2 -7
  112. package/dist/components/core/index.js +9 -19
  113. package/dist/components/{core → data-display}/DescriptionList/DescriptionList.theme.js +1 -1
  114. package/dist/components/{core → data-display}/Feed/Feed.js +2 -2
  115. package/dist/components/data-display/GanttChart/GanttChart.animations.d.ts +4 -0
  116. package/dist/components/data-display/GanttChart/GanttChart.animations.js +21 -0
  117. package/dist/components/data-display/GanttChart/GanttChart.d.ts +8 -0
  118. package/dist/components/data-display/GanttChart/GanttChart.js +170 -0
  119. package/dist/components/data-display/GanttChart/GanttChart.theme.d.ts +2 -0
  120. package/dist/components/data-display/GanttChart/GanttChart.theme.js +23 -0
  121. package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +162 -0
  122. package/dist/components/data-display/GanttChart/GanttChart.types.js +9 -0
  123. package/dist/components/data-display/GanttChart/GanttChart.utils.d.ts +80 -0
  124. package/dist/components/data-display/GanttChart/GanttChart.utils.js +274 -0
  125. package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +9 -0
  126. package/dist/components/data-display/GanttChart/GanttChartPanel.js +82 -0
  127. package/dist/components/data-display/GanttChart/GanttDependencyArrows.d.ts +2 -0
  128. package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +35 -0
  129. package/dist/components/data-display/GanttChart/GanttGroupBar.d.ts +8 -0
  130. package/dist/components/data-display/GanttChart/GanttGroupBar.js +26 -0
  131. package/dist/components/data-display/GanttChart/GanttMilestone.d.ts +9 -0
  132. package/dist/components/data-display/GanttChart/GanttMilestone.js +44 -0
  133. package/dist/components/data-display/GanttChart/GanttProgressCircle.d.ts +9 -0
  134. package/dist/components/data-display/GanttChart/GanttProgressCircle.js +11 -0
  135. package/dist/components/data-display/GanttChart/GanttSplitter.d.ts +2 -0
  136. package/dist/components/data-display/GanttChart/GanttSplitter.js +39 -0
  137. package/dist/components/data-display/GanttChart/GanttTableGroupRow.d.ts +7 -0
  138. package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +23 -0
  139. package/dist/components/data-display/GanttChart/GanttTableHeader.d.ts +2 -0
  140. package/dist/components/data-display/GanttChart/GanttTableHeader.js +13 -0
  141. package/dist/components/data-display/GanttChart/GanttTablePanel.d.ts +6 -0
  142. package/dist/components/data-display/GanttChart/GanttTablePanel.js +20 -0
  143. package/dist/components/data-display/GanttChart/GanttTableTaskRow.d.ts +8 -0
  144. package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +30 -0
  145. package/dist/components/data-display/GanttChart/GanttTaskBar.d.ts +9 -0
  146. package/dist/components/data-display/GanttChart/GanttTaskBar.js +206 -0
  147. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.d.ts +8 -0
  148. package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +17 -0
  149. package/dist/components/data-display/GanttChart/GanttTimelineGrid.d.ts +7 -0
  150. package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +33 -0
  151. package/dist/components/data-display/GanttChart/GanttTimelineHeader.d.ts +8 -0
  152. package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +43 -0
  153. package/dist/components/data-display/GanttChart/GanttToolbar.d.ts +2 -0
  154. package/dist/components/data-display/GanttChart/GanttToolbar.js +28 -0
  155. package/dist/components/data-display/GanttChart/hooks/useGanttDates.d.ts +12 -0
  156. package/dist/components/data-display/GanttChart/hooks/useGanttDates.js +25 -0
  157. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.d.ts +25 -0
  158. package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +144 -0
  159. package/dist/components/data-display/GanttChart/hooks/useGanttLayout.d.ts +2 -0
  160. package/dist/components/data-display/GanttChart/hooks/useGanttLayout.js +33 -0
  161. package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.d.ts +6 -0
  162. package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.js +32 -0
  163. package/dist/components/data-display/GanttChart/index.d.ts +3 -0
  164. package/dist/components/{core → data-display}/KPI/KPI.js +10 -8
  165. package/dist/components/{core → data-display}/KPI/KPI.theme.js +2 -1
  166. package/dist/components/{core → data-display}/KPI/KPI.types.d.ts +5 -5
  167. package/dist/components/{core → data-display}/KPI/index.d.ts +1 -0
  168. package/dist/components/{core → data-display}/Metric/Metric.js +4 -7
  169. package/dist/components/{core → data-display}/Metric/Metric.theme.js +9 -9
  170. package/dist/components/{core → data-display}/Metric/Metric.types.d.ts +6 -6
  171. package/dist/components/{core → data-display}/Table/Table.theme.js +2 -2
  172. package/dist/components/{core → data-display}/Table/TableActions.js +8 -8
  173. package/dist/components/{core → data-display}/Table/TableColumnManager.js +4 -4
  174. package/dist/components/{core → data-display}/Table/TableFilter.js +3 -3
  175. package/dist/components/data-display/Table/TablePagination.js +25 -0
  176. package/dist/components/{core → data-display}/Table/TableRow.js +1 -1
  177. package/dist/components/{core → data-display}/Table/TableSelectionHeader.js +1 -1
  178. package/dist/components/data-display/index.d.ts +7 -0
  179. package/dist/components/data-display/index.js +20 -0
  180. package/dist/components/effects/3d/index.d.ts +6 -0
  181. package/dist/components/effects/3d/index.js +3 -0
  182. package/dist/components/effects/Aurora/Aurora.d.ts +24 -0
  183. package/dist/components/effects/Aurora/Aurora.js +119 -0
  184. package/dist/components/effects/Aurora/Aurora.types.d.ts +15 -0
  185. package/dist/components/effects/Aurora/index.d.ts +2 -0
  186. package/dist/components/effects/CustomCursor/CustomCursor.d.ts +2 -2
  187. package/dist/components/effects/CustomCursor/CustomCursor.types.d.ts +3 -3
  188. package/dist/components/effects/DotPattern/DotPattern.d.ts +18 -0
  189. package/dist/components/effects/DotPattern/DotPattern.js +65 -0
  190. package/dist/components/effects/DotPattern/DotPattern.types.d.ts +47 -0
  191. package/dist/components/effects/DotPattern/index.d.ts +2 -0
  192. package/dist/components/effects/GridPattern/GridPattern.d.ts +18 -0
  193. package/dist/components/effects/GridPattern/GridPattern.js +64 -0
  194. package/dist/components/effects/GridPattern/GridPattern.types.d.ts +47 -0
  195. package/dist/components/effects/GridPattern/index.d.ts +2 -0
  196. package/dist/components/effects/MagneticElement/MagneticElement.d.ts +30 -0
  197. package/dist/components/effects/MagneticElement/MagneticElement.js +110 -0
  198. package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +44 -0
  199. package/dist/components/effects/MagneticElement/index.d.ts +2 -0
  200. package/dist/components/effects/MorphingText/MorphingText.d.ts +17 -0
  201. package/dist/components/effects/MorphingText/MorphingText.js +91 -0
  202. package/dist/components/effects/MorphingText/MorphingText.types.d.ts +18 -0
  203. package/dist/components/effects/MorphingText/index.d.ts +2 -0
  204. package/dist/components/effects/NoiseOverlay/NoiseOverlay.d.ts +28 -0
  205. package/dist/components/effects/NoiseOverlay/NoiseOverlay.js +61 -0
  206. package/dist/components/effects/NoiseOverlay/NoiseOverlay.types.d.ts +35 -0
  207. package/dist/components/effects/NoiseOverlay/index.d.ts +2 -0
  208. package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +26 -0
  209. package/dist/components/effects/ParallaxSection/ParallaxSection.js +71 -0
  210. package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +11 -0
  211. package/dist/components/effects/ParallaxSection/index.d.ts +2 -0
  212. package/dist/components/effects/Particles/Particles.d.ts +22 -0
  213. package/dist/components/effects/Particles/Particles.js +33 -0
  214. package/dist/components/effects/Particles/Particles.scene.d.ts +3 -0
  215. package/dist/components/effects/Particles/Particles.scene.js +284 -0
  216. package/dist/components/effects/Particles/Particles.types.d.ts +65 -0
  217. package/dist/components/effects/Particles/index.d.ts +2 -0
  218. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.d.ts +3 -0
  219. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +75 -0
  220. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.d.ts +7 -0
  221. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.js +12 -0
  222. package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +47 -0
  223. package/dist/components/effects/ProgressiveBlur/index.d.ts +2 -0
  224. package/dist/components/effects/ScrollReveal/ScrollReveal.d.ts +29 -0
  225. package/dist/components/effects/ScrollReveal/ScrollReveal.js +121 -0
  226. package/dist/components/effects/ScrollReveal/ScrollReveal.types.d.ts +25 -0
  227. package/dist/components/effects/ScrollReveal/index.d.ts +2 -0
  228. package/dist/components/effects/Spotlight/Spotlight.d.ts +36 -0
  229. package/dist/components/effects/Spotlight/Spotlight.js +112 -0
  230. package/dist/components/effects/Spotlight/Spotlight.types.d.ts +29 -0
  231. package/dist/components/effects/Spotlight/index.d.ts +2 -0
  232. package/dist/components/effects/StickyScroll/StickyScroll.d.ts +30 -0
  233. package/dist/components/effects/StickyScroll/StickyScroll.js +128 -0
  234. package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +19 -0
  235. package/dist/components/effects/StickyScroll/index.d.ts +2 -0
  236. package/dist/components/effects/index.d.ts +22 -4
  237. package/dist/components/effects/index.js +11 -2
  238. package/dist/components/forms/Checkbox/Checkbox.js +3 -3
  239. package/dist/components/forms/Checkbox/Checkbox.theme.js +3 -5
  240. package/dist/components/forms/ColorPicker/ColorPicker.theme.js +2 -2
  241. package/dist/components/forms/CronInput/CronInput.d.ts +3 -0
  242. package/dist/components/forms/CronInput/CronInput.js +107 -0
  243. package/dist/components/forms/CronInput/CronInput.theme.d.ts +6 -0
  244. package/dist/components/forms/CronInput/CronInput.theme.js +84 -0
  245. package/dist/components/forms/CronInput/CronInput.types.d.ts +98 -0
  246. package/dist/components/forms/CronInput/CronInput.utils.d.ts +67 -0
  247. package/dist/components/forms/CronInput/CronInput.utils.js +505 -0
  248. package/dist/components/forms/CronInput/index.d.ts +4 -0
  249. package/dist/components/forms/DatePicker/DatePicker.theme.js +2 -2
  250. package/dist/components/forms/InputCounter/InputCounter.d.ts +1 -1
  251. package/dist/components/forms/InputCounter/InputCounter.types.d.ts +3 -2
  252. package/dist/components/forms/InputOTP/InputOTP.theme.js +1 -1
  253. package/dist/components/forms/Mention/Mention.d.ts +3 -0
  254. package/dist/components/forms/Mention/Mention.js +410 -0
  255. package/dist/components/forms/Mention/Mention.theme.d.ts +6 -0
  256. package/dist/components/forms/Mention/Mention.theme.js +56 -0
  257. package/dist/components/forms/Mention/Mention.types.d.ts +111 -0
  258. package/dist/components/forms/Mention/index.d.ts +3 -0
  259. package/dist/components/forms/Radio/Radio.js +8 -12
  260. package/dist/components/forms/Radio/Radio.theme.js +28 -5
  261. package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +2 -0
  262. package/dist/components/forms/SelectableCard/SelectableCard.animations.js +9 -0
  263. package/dist/components/forms/SelectableCard/SelectableCard.d.ts +5 -0
  264. package/dist/components/forms/SelectableCard/SelectableCard.js +58 -0
  265. package/dist/components/forms/SelectableCard/SelectableCard.theme.d.ts +2 -0
  266. package/dist/components/forms/SelectableCard/SelectableCard.theme.js +38 -0
  267. package/dist/components/forms/SelectableCard/SelectableCard.types.d.ts +33 -0
  268. package/dist/components/forms/SelectableCard/SelectableCardContext.d.ts +3 -0
  269. package/dist/components/forms/SelectableCard/SelectableCardContext.js +12 -0
  270. package/dist/components/forms/SelectableCard/SelectableCardGroup.d.ts +3 -0
  271. package/dist/components/forms/SelectableCard/SelectableCardGroup.js +37 -0
  272. package/dist/components/forms/SelectableCard/index.d.ts +3 -0
  273. package/dist/components/forms/TransferList/TransferList.animations.d.ts +10 -0
  274. package/dist/components/forms/TransferList/TransferList.animations.js +32 -0
  275. package/dist/components/forms/TransferList/TransferList.d.ts +28 -0
  276. package/dist/components/forms/TransferList/TransferList.js +199 -0
  277. package/dist/components/forms/TransferList/TransferList.theme.d.ts +6 -0
  278. package/dist/components/forms/TransferList/TransferList.theme.js +60 -0
  279. package/dist/components/forms/TransferList/TransferList.types.d.ts +101 -0
  280. package/dist/components/forms/TransferList/index.d.ts +3 -0
  281. package/dist/components/forms/index.d.ts +13 -0
  282. package/dist/components/forms/index.js +9 -0
  283. package/dist/components/layout/FormLayout/FormLayout.d.ts +8 -0
  284. package/dist/components/layout/FormLayout/FormLayout.js +22 -0
  285. package/dist/components/layout/FormLayout/FormLayout.theme.d.ts +2 -0
  286. package/dist/components/layout/FormLayout/FormLayout.theme.js +16 -0
  287. package/dist/components/layout/FormLayout/FormLayout.types.d.ts +61 -0
  288. package/dist/components/layout/FormLayout/FormLayoutBody.d.ts +3 -0
  289. package/dist/components/layout/FormLayout/FormLayoutBody.js +13 -0
  290. package/dist/components/layout/FormLayout/FormLayoutFooter.d.ts +3 -0
  291. package/dist/components/layout/FormLayout/FormLayoutFooter.js +12 -0
  292. package/dist/components/layout/FormLayout/FormLayoutHeader.d.ts +3 -0
  293. package/dist/components/layout/FormLayout/FormLayoutHeader.js +12 -0
  294. package/dist/components/layout/FormLayout/FormLayoutSection.d.ts +3 -0
  295. package/dist/components/layout/FormLayout/FormLayoutSection.js +12 -0
  296. package/dist/components/layout/FormLayout/index.d.ts +3 -0
  297. package/dist/components/layout/PageLayout/PageLayout.d.ts +7 -0
  298. package/dist/components/layout/PageLayout/PageLayout.js +33 -0
  299. package/dist/components/layout/PageLayout/PageLayout.theme.d.ts +2 -0
  300. package/dist/components/layout/PageLayout/PageLayout.theme.js +10 -0
  301. package/dist/components/layout/PageLayout/PageLayout.types.d.ts +39 -0
  302. package/dist/components/layout/PageLayout/PageLayoutContent.d.ts +3 -0
  303. package/dist/components/layout/PageLayout/PageLayoutContent.js +12 -0
  304. package/dist/components/layout/PageLayout/PageLayoutHeader.d.ts +3 -0
  305. package/dist/components/layout/PageLayout/PageLayoutHeader.js +12 -0
  306. package/dist/components/layout/PageLayout/PageLayoutSidebar.d.ts +3 -0
  307. package/dist/components/layout/PageLayout/PageLayoutSidebar.js +12 -0
  308. package/dist/components/layout/PageLayout/index.d.ts +3 -0
  309. package/dist/components/layout/index.d.ts +2 -0
  310. package/dist/index.d.ts +2 -0
  311. package/dist/index.js +53 -21
  312. package/dist/styles.css +1 -1
  313. package/dist/utils/dateUtils.d.ts +30 -0
  314. package/dist/utils/dateUtils.js +58 -1
  315. package/dist/utils/index.d.ts +1 -1
  316. package/package.json +26 -22
  317. package/dist/components/core/Card/CardDescription.d.ts +0 -3
  318. package/dist/components/core/Card/CardDescription.js +0 -11
  319. package/dist/components/core/Modal/ModalDescription.d.ts +0 -5
  320. package/dist/components/core/Modal/ModalDescription.js +0 -11
  321. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.d.ts +0 -34
  322. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.js +0 -218
  323. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.theme.d.ts +0 -9
  324. package/dist/components/core/ProgressiveBlur/ProgressiveBlur.types.d.ts +0 -48
  325. package/dist/components/core/ProgressiveBlur/index.d.ts +0 -2
  326. package/dist/components/core/Table/TablePagination.js +0 -25
  327. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.d.ts +0 -0
  328. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.js +0 -0
  329. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.theme.d.ts +0 -0
  330. /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.types.d.ts +0 -0
  331. /package/dist/components/{core → data-display}/DescriptionList/index.d.ts +0 -0
  332. /package/dist/components/{core → data-display}/Feed/Feed.d.ts +0 -0
  333. /package/dist/components/{core → data-display}/Feed/Feed.theme.d.ts +0 -0
  334. /package/dist/components/{core → data-display}/Feed/Feed.theme.js +0 -0
  335. /package/dist/components/{core → data-display}/Feed/Feed.types.d.ts +0 -0
  336. /package/dist/components/{core → data-display}/Feed/index.d.ts +0 -0
  337. /package/dist/components/{core → data-display}/KPI/KPI.d.ts +0 -0
  338. /package/dist/components/{core → data-display}/KPI/KPI.theme.d.ts +0 -0
  339. /package/dist/components/{core → data-display}/Metric/Metric.d.ts +0 -0
  340. /package/dist/components/{core → data-display}/Metric/Metric.theme.d.ts +0 -0
  341. /package/dist/components/{core → data-display}/Metric/index.d.ts +0 -0
  342. /package/dist/components/{core → data-display}/Table/Table.animations.d.ts +0 -0
  343. /package/dist/components/{core → data-display}/Table/Table.animations.js +0 -0
  344. /package/dist/components/{core → data-display}/Table/Table.d.ts +0 -0
  345. /package/dist/components/{core → data-display}/Table/Table.filterUtils.d.ts +0 -0
  346. /package/dist/components/{core → data-display}/Table/Table.filterUtils.js +0 -0
  347. /package/dist/components/{core → data-display}/Table/Table.js +0 -0
  348. /package/dist/components/{core → data-display}/Table/Table.theme.d.ts +0 -0
  349. /package/dist/components/{core → data-display}/Table/Table.types.d.ts +0 -0
  350. /package/dist/components/{core → data-display}/Table/Table.utils.d.ts +0 -0
  351. /package/dist/components/{core → data-display}/Table/Table.utils.js +0 -0
  352. /package/dist/components/{core → data-display}/Table/TableActions.d.ts +0 -0
  353. /package/dist/components/{core → data-display}/Table/TableActionsMenu.d.ts +0 -0
  354. /package/dist/components/{core → data-display}/Table/TableActionsMenu.js +0 -0
  355. /package/dist/components/{core → data-display}/Table/TableBody.d.ts +0 -0
  356. /package/dist/components/{core → data-display}/Table/TableBody.js +0 -0
  357. /package/dist/components/{core → data-display}/Table/TableCell.d.ts +0 -0
  358. /package/dist/components/{core → data-display}/Table/TableCell.js +0 -0
  359. /package/dist/components/{core → data-display}/Table/TableColumnManager.d.ts +0 -0
  360. /package/dist/components/{core → data-display}/Table/TableDeclarative.d.ts +0 -0
  361. /package/dist/components/{core → data-display}/Table/TableDeclarative.js +0 -0
  362. /package/dist/components/{core → data-display}/Table/TableFilter.d.ts +0 -0
  363. /package/dist/components/{core → data-display}/Table/TableHeader.d.ts +0 -0
  364. /package/dist/components/{core → data-display}/Table/TableHeader.js +0 -0
  365. /package/dist/components/{core → data-display}/Table/TablePagination.d.ts +0 -0
  366. /package/dist/components/{core → data-display}/Table/TableRow.d.ts +0 -0
  367. /package/dist/components/{core → data-display}/Table/TableSelectionHeader.d.ts +0 -0
  368. /package/dist/components/{core → data-display}/Table/hooks/index.d.ts +0 -0
  369. /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.d.ts +0 -0
  370. /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.js +0 -0
  371. /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.d.ts +0 -0
  372. /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.js +0 -0
  373. /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.d.ts +0 -0
  374. /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.js +0 -0
  375. /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.d.ts +0 -0
  376. /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.js +0 -0
  377. /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.d.ts +0 -0
  378. /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.js +0 -0
  379. /package/dist/components/{core → data-display}/Table/index.d.ts +0 -0
  380. /package/dist/components/{core → data-display}/Table/index.js +0 -0
  381. /package/dist/components/{core → data-display}/Timeline/Timeline.animations.d.ts +0 -0
  382. /package/dist/components/{core → data-display}/Timeline/Timeline.animations.js +0 -0
  383. /package/dist/components/{core → data-display}/Timeline/Timeline.d.ts +0 -0
  384. /package/dist/components/{core → data-display}/Timeline/Timeline.js +0 -0
  385. /package/dist/components/{core → data-display}/Timeline/Timeline.theme.d.ts +0 -0
  386. /package/dist/components/{core → data-display}/Timeline/Timeline.theme.js +0 -0
  387. /package/dist/components/{core → data-display}/Timeline/Timeline.types.d.ts +0 -0
  388. /package/dist/components/{core → data-display}/Timeline/TimelineContent.d.ts +0 -0
  389. /package/dist/components/{core → data-display}/Timeline/TimelineContent.js +0 -0
  390. /package/dist/components/{core → data-display}/Timeline/TimelineItem.d.ts +0 -0
  391. /package/dist/components/{core → data-display}/Timeline/TimelineItem.js +0 -0
  392. /package/dist/components/{core → data-display}/Timeline/TimelineMarker.d.ts +0 -0
  393. /package/dist/components/{core → data-display}/Timeline/TimelineMarker.js +0 -0
  394. /package/dist/components/{core → data-display}/Timeline/index.d.ts +0 -0
@@ -0,0 +1,128 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import React__default, { useState, useRef, useCallback, useEffect } from 'react';
3
+ import { useReducedMotion, AnimatePresence, motion } from 'motion/react';
4
+ import { cn } from '../../../utils/cn.js';
5
+
6
+ /* ------------------------------------------------------------------ */
7
+ /* Content transition variants */
8
+ /* ------------------------------------------------------------------ */
9
+ const contentVariants = {
10
+ enter: { opacity: 0, y: 12 },
11
+ center: {
12
+ opacity: 1,
13
+ y: 0,
14
+ transition: { duration: 0.35, ease: [0.25, 0.1, 0.25, 1] },
15
+ },
16
+ exit: {
17
+ opacity: 0,
18
+ y: -12,
19
+ transition: { duration: 0.25, ease: [0.25, 0.1, 0.25, 1] },
20
+ },
21
+ };
22
+ const reducedMotionVariants = {
23
+ enter: { opacity: 1, y: 0 },
24
+ center: { opacity: 1, y: 0 },
25
+ exit: { opacity: 1, y: 0 },
26
+ };
27
+ /* ------------------------------------------------------------------ */
28
+ /* Component */
29
+ /* ------------------------------------------------------------------ */
30
+ /**
31
+ * StickyScroll
32
+ *
33
+ * Creates an Apple-style sticky scroll experience where one column stays
34
+ * pinned while the other scrolls. As each scrolling section enters the
35
+ * viewport, the sticky content transitions to match.
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * <StickyScroll
40
+ * sections={[
41
+ * {
42
+ * id: 'design',
43
+ * title: 'Design System',
44
+ * description: 'Build consistent interfaces with a shared design language.',
45
+ * content: <img src="/design.png" alt="Design system" />,
46
+ * },
47
+ * {
48
+ * id: 'develop',
49
+ * title: 'Developer Experience',
50
+ * description: 'TypeScript-first components with full IntelliSense.',
51
+ * content: <img src="/develop.png" alt="Developer experience" />,
52
+ * },
53
+ * ]}
54
+ * />
55
+ * ```
56
+ */
57
+ const StickyScroll = React__default.forwardRef(({ sections, contentPosition = 'left', showProgress = true, className, ...props }, ref) => {
58
+ const shouldReduceMotion = useReducedMotion();
59
+ const [activeIndex, setActiveIndex] = useState(0);
60
+ const sectionRefs = useRef([]);
61
+ const containerRef = useRef(null);
62
+ // Set up Intersection Observer to track which section is in view.
63
+ const observerCallback = useCallback((entries) => {
64
+ for (const entry of entries) {
65
+ if (entry.isIntersecting) {
66
+ const index = sectionRefs.current.indexOf(entry.target);
67
+ if (index !== -1) {
68
+ setActiveIndex(index);
69
+ }
70
+ }
71
+ }
72
+ }, []);
73
+ useEffect(() => {
74
+ const observer = new IntersectionObserver(observerCallback, {
75
+ // Trigger when a section crosses the vertical center of the viewport.
76
+ rootMargin: '-35% 0px -35% 0px',
77
+ threshold: 0,
78
+ });
79
+ const currentRefs = sectionRefs.current;
80
+ for (const sectionRef of currentRefs) {
81
+ if (sectionRef)
82
+ observer.observe(sectionRef);
83
+ }
84
+ return () => {
85
+ for (const sectionRef of currentRefs) {
86
+ if (sectionRef)
87
+ observer.unobserve(sectionRef);
88
+ }
89
+ };
90
+ }, [observerCallback, sections.length]);
91
+ const activeSection = sections[activeIndex];
92
+ const variants = shouldReduceMotion
93
+ ? reducedMotionVariants
94
+ : contentVariants;
95
+ /* -------------------------------------------------------------- */
96
+ /* Sub-renders */
97
+ /* -------------------------------------------------------------- */
98
+ const stickyContent = (jsxs("div", { className: "sticky top-[20vh] flex h-[60vh] items-center justify-center", children: [showProgress && (jsx("div", { className: cn('absolute top-1/2 -translate-y-1/2 flex flex-col gap-2', contentPosition === 'left' ? 'right-0 mr-4' : 'left-0 ml-4'), children: sections.map((section, index) => (jsx("button", { type: "button", "aria-label": `Go to ${section.title}`, onClick: () => {
99
+ var _a;
100
+ (_a = sectionRefs.current[index]) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
101
+ behavior: shouldReduceMotion ? 'auto' : 'smooth',
102
+ block: 'center',
103
+ });
104
+ }, className: cn('h-2 w-2 rounded-full transition-all duration-300', index === activeIndex
105
+ ? 'scale-125 bg-[var(--color-primary)]'
106
+ : 'bg-[var(--color-border)] hover:bg-[var(--color-text-muted)]') }, section.id))) })), jsx(AnimatePresence, { mode: "wait", children: jsx(motion.div, { variants: variants, initial: "enter", animate: "center", exit: "exit", className: "flex h-full w-full items-center justify-center", children: activeSection.content }, activeSection.id) })] }));
107
+ const scrollingSections = (jsx("div", { className: "flex flex-col", children: sections.map((section, index) => (jsxs("div", { ref: (el) => {
108
+ sectionRefs.current[index] = el;
109
+ }, className: "flex min-h-[60vh] flex-col justify-center py-16 lg:py-24", children: [jsx("h3", { className: cn('text-2xl font-semibold transition-colors duration-300 lg:text-3xl', index === activeIndex
110
+ ? 'text-[var(--color-text-primary)]'
111
+ : 'text-[var(--color-text-muted)]'), children: section.title }), jsx("p", { className: cn('mt-4 max-w-lg text-base leading-relaxed transition-colors duration-300 lg:text-lg', index === activeIndex
112
+ ? 'text-[var(--color-text-secondary)]'
113
+ : 'text-[var(--color-text-placeholder)]'), children: section.description })] }, section.id))) }));
114
+ /* -------------------------------------------------------------- */
115
+ /* Layout */
116
+ /* -------------------------------------------------------------- */
117
+ const isContentLeft = contentPosition === 'left';
118
+ return (jsx("div", { ref: (node) => {
119
+ containerRef.current = node;
120
+ if (typeof ref === 'function')
121
+ ref(node);
122
+ else if (ref)
123
+ ref.current = node;
124
+ }, className: cn('relative grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-16', className), ...props, children: isContentLeft ? (jsxs(Fragment, { children: [jsx("div", { className: "hidden lg:block", children: stickyContent }), scrollingSections] })) : (jsxs(Fragment, { children: [scrollingSections, jsx("div", { className: "hidden lg:block", children: stickyContent })] })) }));
125
+ });
126
+ StickyScroll.displayName = 'StickyScroll';
127
+
128
+ export { StickyScroll };
@@ -0,0 +1,19 @@
1
+ export interface StickyScrollSection {
2
+ /** Unique identifier for this section */
3
+ id: string;
4
+ /** Section title displayed in the scrolling column */
5
+ title: string;
6
+ /** Section description displayed in the scrolling column */
7
+ description: string;
8
+ /** The sticky content to show when this section is active */
9
+ content: React.ReactNode;
10
+ }
11
+ export interface StickyScrollProps extends React.HTMLAttributes<HTMLDivElement> {
12
+ /** Array of sections defining the scroll experience */
13
+ sections: StickyScrollSection[];
14
+ /** Which side the sticky content appears (default 'left') */
15
+ contentPosition?: 'left' | 'right';
16
+ /** Show progress dots (default true) */
17
+ showProgress?: boolean;
18
+ className?: string;
19
+ }
@@ -0,0 +1,2 @@
1
+ export { StickyScroll } from './StickyScroll';
2
+ export type { StickyScrollProps, StickyScrollSection, } from './StickyScroll.types';
@@ -4,11 +4,29 @@ export { GlassEffect } from "./GlassEffect";
4
4
  export type { GlassEffectProps, BlendMode } from "./GlassEffect";
5
5
  export { Overlay } from "./Overlay";
6
6
  export type { OverlayProps, OverlayPosition, OverlayAnimations, } from "./Overlay";
7
- export { SpotlightBorder } from "./SpotlightBorder";
8
- export type { SpotlightBorderProps, SpotlightBorderVariation, } from "./SpotlightBorder";
9
7
  export { GlassSurface } from "./GlassSurface";
10
8
  export type { GlassSurfaceProps, GlassChannel, GlassMixBlendMode, } from "./GlassSurface";
11
- export { AIOrb } from "./AIOrb";
12
- export type { AIOrbProps, DotSphereProps, LiquidProps } from "./AIOrb";
13
9
  export { Animated } from "./Animated";
14
10
  export type { AnimatedGroupProps, AnimatedItemProps, AnimationPreset, AnimatedElement, } from "./Animated";
11
+ export { ProgressiveBlur } from "./ProgressiveBlur";
12
+ export type { ProgressiveBlurProps, ProgressiveBlurPosition, ProgressiveBlurThemeOverrides, } from "./ProgressiveBlur";
13
+ export { Aurora } from "./Aurora";
14
+ export type { AuroraProps } from "./Aurora";
15
+ export { MagneticElement } from "./MagneticElement";
16
+ export type { MagneticElementProps } from "./MagneticElement";
17
+ export { MorphingText } from "./MorphingText";
18
+ export type { MorphingTextProps } from "./MorphingText";
19
+ export { GridPattern } from "./GridPattern";
20
+ export type { GridPatternProps, GridPatternFadeDirection, } from "./GridPattern";
21
+ export { DotPattern } from "./DotPattern";
22
+ export type { DotPatternProps, DotPatternFadeDirection, } from "./DotPattern";
23
+ export { NoiseOverlay } from "./NoiseOverlay";
24
+ export type { NoiseOverlayProps, NoiseBlendMode } from "./NoiseOverlay";
25
+ export { Spotlight } from "./Spotlight";
26
+ export type { SpotlightProps } from "./Spotlight";
27
+ export { ParallaxSection } from "./ParallaxSection";
28
+ export type { ParallaxSectionProps } from "./ParallaxSection";
29
+ export { ScrollReveal } from "./ScrollReveal";
30
+ export type { ScrollRevealProps, ScrollRevealPreset } from "./ScrollReveal";
31
+ export { StickyScroll } from "./StickyScroll";
32
+ export type { StickyScrollProps, StickyScrollSection, } from "./StickyScroll";
@@ -1,7 +1,16 @@
1
1
  export { CustomCursor } from './CustomCursor/CustomCursor.js';
2
2
  export { GlassEffect } from './GlassEffect/GlassEffect.js';
3
3
  export { Overlay } from './Overlay/Overlay.js';
4
- export { SpotlightBorder } from './SpotlightBorder/SpotlightBorder.js';
5
4
  export { GlassSurface } from './GlassSurface/GlassSurface.js';
6
- export { AIOrb } from './AIOrb/AIOrb.js';
7
5
  export { Animated } from './Animated/Animated.js';
6
+ export { ProgressiveBlur } from './ProgressiveBlur/ProgressiveBlur.js';
7
+ export { Aurora } from './Aurora/Aurora.js';
8
+ export { MagneticElement } from './MagneticElement/MagneticElement.js';
9
+ export { MorphingText } from './MorphingText/MorphingText.js';
10
+ export { GridPattern } from './GridPattern/GridPattern.js';
11
+ export { DotPattern } from './DotPattern/DotPattern.js';
12
+ export { NoiseOverlay } from './NoiseOverlay/NoiseOverlay.js';
13
+ export { Spotlight } from './Spotlight/Spotlight.js';
14
+ export { ParallaxSection } from './ParallaxSection/ParallaxSection.js';
15
+ export { ScrollReveal } from './ScrollReveal/ScrollReveal.js';
16
+ export { StickyScroll } from './StickyScroll/StickyScroll.js';
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import React__default, { useState, useRef, useEffect } from 'react';
3
3
  import { checkboxTheme } from './Checkbox.theme.js';
4
- import { FormLabel } from '../FormLabel/FormLabel.js';
4
+ import { formLabelTheme } from '../FormLabel/FormLabel.theme.js';
5
5
  import { MinusIcon, CheckIcon } from '@heroicons/react/24/outline';
6
6
  import { cn } from '../../../utils/cn.js';
7
7
 
@@ -32,11 +32,11 @@ const Checkbox = React__default.forwardRef(({ id, name, value, checked: controll
32
32
  };
33
33
  return (jsxs("div", { className: cn(checkboxTheme.baseStyle, className), ...restProps, children: [jsxs("div", { className: cn(checkboxTheme.inputContainerStyle, checkboxTheme.sizes[size]), children: [jsx("input", { ref: (node) => {
34
34
  inputRef.current = node;
35
- if (typeof ref === 'function')
35
+ if (typeof ref === "function")
36
36
  ref(node);
37
37
  else if (ref)
38
38
  ref.current = node;
39
- }, type: "checkbox", id: id, name: name, value: value, checked: isChecked, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "data-state": isDisabled ? "disabled" : "default", className: cn(checkboxTheme.inputStyle, checkboxTheme.sizes[size], indeterminate && "bg-neutral-200") }), indeterminate && (jsx(MinusIcon, { className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center opacity-100 stroke-neutral-600 transition-opacity duration-200", size === "sm" ? "size-3" : "size-4"), strokeWidth: 3 })), isChecked && !indeterminate && (jsx(CheckIcon, { className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center opacity-100 stroke-white transition-opacity duration-200", size === "sm" ? "size-3" : "size-4"), strokeWidth: 3 }))] }), (label || description) && (jsxs("div", { className: `cursor-pointer`, children: [label && (jsx(FormLabel, { htmlFor: id, className: "!mb-0", state: state, children: label })), description && (jsx("div", { id: `${id}-description`, className: checkboxTheme.descriptionStyle, children: description }))] }))] }));
39
+ }, type: "checkbox", id: id, name: name, value: value, checked: isChecked, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "data-state": isDisabled ? "disabled" : "default", className: cn(checkboxTheme.inputStyle, checkboxTheme.sizes[size], indeterminate && "bg-neutral-200") }), indeterminate && (jsx(MinusIcon, { className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center opacity-100 stroke-neutral-600 transition-opacity duration-200", size === "sm" ? "size-3" : "size-4"), strokeWidth: 3 })), isChecked && !indeterminate && (jsx(CheckIcon, { className: cn("pointer-events-none col-start-1 row-start-1 self-center justify-self-center opacity-100 stroke-white transition-opacity duration-200", size === "sm" ? "size-3" : "size-4"), strokeWidth: 3 }))] }), (label || description) && (jsxs("label", { htmlFor: id, className: cn("cursor-pointer", isDisabled && "cursor-not-allowed"), children: [label && (jsx("span", { className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[state], "mb-0"), children: label })), description && (jsx("div", { id: `${id}-description`, className: checkboxTheme.descriptionStyle, children: description }))] }))] }));
40
40
  });
41
41
  Checkbox.displayName = "Checkbox";
42
42
 
@@ -8,9 +8,9 @@ const checkboxTheme = {
8
8
  // Input styles with light and dark mode variants
9
9
  inputStyle: "col-start-1 row-start-1 appearance-none rounded-[calc(var(--radius-base)*0.75)] border-2 transition-all duration-400 " +
10
10
  // Default state - light
11
- "border-[var(--color-border)] bg-[var(--color-background)] " +
11
+ "border-[var(--color-border)] bg-[var(--color-surface)] " +
12
12
  // Default state - dark
13
- " " +
13
+ "dark:bg-[var(--color-background-secondary)] " +
14
14
  // Checked state - light
15
15
  "checked:border-[var(--color-primary)] checked:bg-[var(--color-primary)] " +
16
16
  // Checked state - dark
@@ -30,9 +30,7 @@ const checkboxTheme = {
30
30
  "dark:disabled:bg-[var(--color-neutral-700)] dark:disabled:border-[var(--color-neutral-600)] " +
31
31
  "dark:data-[state=disabled]:bg-[var(--color-neutral-700)] dark:data-[state=disabled]:border-[var(--color-neutral-600)]",
32
32
  // Description text - light and dark
33
- descriptionStyle: "text-sm mt-0.5 " +
34
- "text-[var(--color-text-secondary)] " +
35
- "dark:text-[var(--color-neutral-400)]",
33
+ descriptionStyle: "text-sm mt-0.5 " + "text-[var(--color-text-secondary)]/80 " + " ",
36
34
  sizes: {
37
35
  sm: "size-5 mt-0.25",
38
36
  md: "size-6",
@@ -7,12 +7,12 @@ const colorPickerTheme = {
7
7
  triggerStyle: 'cursor-pointer',
8
8
  swatchStyle: 'relative size-5 flex-shrink-0 rounded border border-[var(--color-border)] overflow-hidden',
9
9
  // Content matches Dropdown menu style
10
- contentStyle: 'min-w-[280px] max-w-[320px] rounded-xl border border-[var(--color-border)] bg-white shadow-real-xl p-3 focus:outline-none',
10
+ contentStyle: 'min-w-[min(280px,calc(100vw-2rem))] max-w-[320px] rounded-xl border border-[var(--color-border)] bg-white shadow-real-xl p-3 focus:outline-none',
11
11
  sliderContainerStyle: 'space-y-2',
12
12
  sliderLabelStyle: 'flex items-center justify-between text-xs font-medium text-[var(--color-text-secondary)]',
13
13
  inputContainerStyle: 'flex items-center gap-2',
14
14
  formatSelectorStyle: 'flex-shrink-0',
15
- presetGridStyle: 'mt-3 grid grid-cols-8 gap-1.5',
15
+ presetGridStyle: 'mt-3 grid grid-cols-6 sm:grid-cols-8 gap-1.5',
16
16
  presetSwatchStyle: 'relative size-7 cursor-pointer rounded border-2 border-transparent transition-all hover:border-[var(--color-primary)] hover:scale-110 focus:border-[var(--color-primary)] focus:outline-none focus:ring-2 focus:ring-[var(--color-primary)] focus:ring-opacity-20 data-[selected]:border-[var(--color-primary)] data-[selected]:ring-2 data-[selected]:ring-[var(--color-primary)] data-[selected]:ring-opacity-20',
17
17
  eyedropperButtonStyle: 'flex-shrink-0',
18
18
  };
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { CronInputProps } from "./CronInput.types";
3
+ export declare const CronInput: React.ForwardRefExoticComponent<CronInputProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,107 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import React__default, { useId, useState, useEffect, useMemo, useCallback } from 'react';
3
+ import { cronInputTheme } from './CronInput.theme.js';
4
+ import { parseCron, validateCron, cronToDescription, getNextRuns, CRON_PRESETS, getMinuteOptions, getHourOptions, getDayOfMonthOptions, getMonthOptions, getDayOfWeekOptions, formatNextRun, fieldsToCron } from './CronInput.utils.js';
5
+ import { FormLabel } from '../FormLabel/FormLabel.js';
6
+ import { cn } from '../../../utils/cn.js';
7
+ import { CalendarIcon, ClockIcon } from '@heroicons/react/24/outline';
8
+
9
+ const FieldSelect = ({ label, value, options, onChange, disabled, size = "md", className, }) => {
10
+ const theme = cronInputTheme;
11
+ return (jsxs("div", { className: theme.fieldGroupStyle, children: [jsx("label", { className: theme.fieldLabelStyle, children: label }), jsx("select", { value: value, onChange: (e) => onChange(e.target.value), disabled: disabled, className: cn(theme.fieldSelectStyle, theme.fieldSelectSizes[size], className), "aria-label": `Cron ${label.toLowerCase()} field`, children: options.map((option) => (jsx("option", { value: option.value, children: option.label }, option.value))) })] }));
12
+ };
13
+ // ============================================================================
14
+ // Main CronInput Component
15
+ // ============================================================================
16
+ const CronInput = React__default.forwardRef(({ value: controlledValue, defaultValue = "* * * * *", onChange, showPresets = true, showDescription = true, showNextRuns = true, nextRunCount = 3, size = "md", mode = "both", className, theme: themeOverrides, disabled = false, label, ...props }, ref) => {
17
+ // Unique ID for accessibility
18
+ const generatedId = useId();
19
+ // Controlled vs uncontrolled state
20
+ const isControlled = controlledValue !== undefined;
21
+ const [internalValue, setInternalValue] = useState(defaultValue);
22
+ const cronValue = isControlled ? controlledValue : internalValue;
23
+ // Active mode when mode="both"
24
+ const [activeMode, setActiveMode] = useState(mode === "both" ? "visual" : mode);
25
+ // Raw input state (tracks what user is typing, may be invalid temporarily)
26
+ const [rawInput, setRawInput] = useState(cronValue);
27
+ // Sync raw input when controlled value changes
28
+ useEffect(() => {
29
+ if (isControlled) {
30
+ setRawInput(controlledValue);
31
+ }
32
+ }, [controlledValue, isControlled]);
33
+ // Merge theme with overrides
34
+ const theme = useMemo(() => ({
35
+ ...cronInputTheme,
36
+ ...themeOverrides,
37
+ }), [themeOverrides]);
38
+ // Parse current cron value into fields
39
+ const fields = useMemo(() => parseCron(cronValue), [cronValue]);
40
+ // Validation state
41
+ const isValid = useMemo(() => validateCron(cronValue), [cronValue]);
42
+ // Human-readable description
43
+ const description = useMemo(() => (isValid ? cronToDescription(cronValue) : ""), [cronValue, isValid]);
44
+ // Next run times
45
+ const nextRuns = useMemo(() => (isValid && showNextRuns ? getNextRuns(cronValue, nextRunCount) : []), [cronValue, isValid, showNextRuns, nextRunCount]);
46
+ // Active preset detection
47
+ const activePreset = useMemo(() => { var _a, _b; return (_b = (_a = CRON_PRESETS.find((p) => p.value === cronValue)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null; }, [cronValue]);
48
+ // Memoized options
49
+ const minuteOptions = useMemo(() => getMinuteOptions(), []);
50
+ const hourOptions = useMemo(() => getHourOptions(), []);
51
+ const dayOfMonthOptions = useMemo(() => getDayOfMonthOptions(), []);
52
+ const monthOptions = useMemo(() => getMonthOptions(), []);
53
+ const dayOfWeekOptions = useMemo(() => getDayOfWeekOptions(), []);
54
+ // Update the cron value
55
+ const updateValue = useCallback((newCron) => {
56
+ if (!isControlled) {
57
+ setInternalValue(newCron);
58
+ }
59
+ setRawInput(newCron);
60
+ onChange === null || onChange === void 0 ? void 0 : onChange(newCron);
61
+ }, [isControlled, onChange]);
62
+ // Handle field change from visual builder
63
+ const handleFieldChange = useCallback((field, newFieldValue) => {
64
+ const newFields = { ...fields, [field]: newFieldValue };
65
+ const newCron = fieldsToCron(newFields);
66
+ updateValue(newCron);
67
+ }, [fields, updateValue]);
68
+ // Handle raw input change
69
+ const handleRawInputChange = useCallback((e) => {
70
+ const newRaw = e.target.value;
71
+ setRawInput(newRaw);
72
+ if (validateCron(newRaw)) {
73
+ if (!isControlled) {
74
+ setInternalValue(newRaw);
75
+ }
76
+ onChange === null || onChange === void 0 ? void 0 : onChange(newRaw);
77
+ }
78
+ }, [isControlled, onChange]);
79
+ // Handle raw input blur - commit value if valid
80
+ const handleRawInputBlur = useCallback(() => {
81
+ if (validateCron(rawInput)) {
82
+ updateValue(rawInput);
83
+ }
84
+ else {
85
+ // Reset to last valid value
86
+ setRawInput(cronValue);
87
+ }
88
+ }, [rawInput, cronValue, updateValue]);
89
+ // Handle preset click
90
+ const handlePresetClick = useCallback((presetValue) => {
91
+ if (disabled)
92
+ return;
93
+ updateValue(presetValue);
94
+ }, [disabled, updateValue]);
95
+ // Handle Enter key in raw input
96
+ const handleRawKeyDown = useCallback((e) => {
97
+ if (e.key === "Enter") {
98
+ handleRawInputBlur();
99
+ }
100
+ }, [handleRawInputBlur]);
101
+ const showVisual = mode === "visual" || (mode === "both" && activeMode === "visual");
102
+ const showRaw = mode === "raw" || (mode === "both" && activeMode === "raw");
103
+ return (jsxs("div", { ref: ref, className: cn(theme.baseStyle, className), role: "group", "aria-label": label || "Cron expression builder", ...props, children: [label && (jsx(FormLabel, { htmlFor: `${generatedId}-cron`, state: disabled ? "disabled" : "default", children: label })), mode === "both" && (jsxs("div", { className: "flex items-center gap-1.5", children: [jsxs("button", { type: "button", onClick: () => setActiveMode("visual"), disabled: disabled, className: cn(theme.modeToggleStyle, activeMode === "visual" && theme.modeToggleActiveStyle), "aria-pressed": activeMode === "visual", children: [jsx(CalendarIcon, { className: "w-3.5 h-3.5 mr-1", "aria-hidden": "true" }), "Visual"] }), jsxs("button", { type: "button", onClick: () => setActiveMode("raw"), disabled: disabled, className: cn(theme.modeToggleStyle, activeMode === "raw" && theme.modeToggleActiveStyle), "aria-pressed": activeMode === "raw", children: [jsx(ClockIcon, { className: "w-3.5 h-3.5 mr-1", "aria-hidden": "true" }), "Cron"] })] })), showPresets && (jsxs("div", { children: [jsx("div", { className: cn(theme.sectionHeadingStyle, "mb-1.5"), children: "Presets" }), jsx("div", { className: "flex flex-wrap gap-1.5", children: CRON_PRESETS.map((preset) => (jsx("button", { type: "button", onClick: () => handlePresetClick(preset.value), disabled: disabled, className: cn(theme.presetButtonStyle, activePreset === preset.value && theme.presetButtonActiveStyle), title: preset.description, "aria-pressed": activePreset === preset.value, children: preset.label }, preset.value))) })] })), showVisual && (jsxs("div", { className: theme.builderStyle, children: [jsx(FieldSelect, { label: "Minute", value: fields.minute, options: minuteOptions, onChange: (v) => handleFieldChange("minute", v), disabled: disabled, size: size }), jsx(FieldSelect, { label: "Hour", value: fields.hour, options: hourOptions, onChange: (v) => handleFieldChange("hour", v), disabled: disabled, size: size }), jsx(FieldSelect, { label: "Day of Month", value: fields.dayOfMonth, options: dayOfMonthOptions, onChange: (v) => handleFieldChange("dayOfMonth", v), disabled: disabled, size: size }), jsx(FieldSelect, { label: "Month", value: fields.month, options: monthOptions, onChange: (v) => handleFieldChange("month", v), disabled: disabled, size: size }), jsx(FieldSelect, { label: "Day of Week", value: fields.dayOfWeek, options: dayOfWeekOptions, onChange: (v) => handleFieldChange("dayOfWeek", v), disabled: disabled, size: size })] })), showRaw && (jsxs("div", { children: [jsx("div", { className: cn(theme.sectionHeadingStyle, "mb-1.5"), children: "Cron Expression" }), jsx("input", { type: "text", value: rawInput, onChange: handleRawInputChange, onBlur: handleRawInputBlur, onKeyDown: handleRawKeyDown, disabled: disabled, placeholder: "* * * * *", className: cn(theme.rawInputStyle, theme.rawInputSizes[size]), id: `${generatedId}-cron`, "aria-label": "Cron expression", "aria-invalid": !validateCron(rawInput), spellCheck: false, autoComplete: "off" }), !validateCron(rawInput) && rawInput !== cronValue && (jsx("div", { className: cn(theme.errorStyle, "mt-1"), children: "Invalid cron expression. Format: minute hour day month weekday" }))] })), showVisual && !showRaw && (jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: cn(theme.fieldLabelStyle, "shrink-0"), children: "Expression:" }), jsx("code", { className: cn("font-mono text-xs px-2 py-1 rounded-[var(--form-radius)]", "bg-[var(--color-background-secondary)] text-[var(--color-text-primary)]", "dark:bg-[var(--color-neutral-800)] dark:text-[var(--color-neutral-200)]"), children: cronValue })] })), showDescription && isValid && (jsxs("div", { className: theme.descriptionStyle, children: [jsx(ClockIcon, { className: "w-4 h-4 shrink-0", "aria-hidden": "true" }), jsx("span", { children: description })] })), showNextRuns && isValid && nextRuns.length > 0 && (jsxs("div", { className: theme.nextRunsStyle, children: [jsx("div", { className: cn(theme.sectionHeadingStyle, "mb-1"), children: "Next runs" }), nextRuns.map((date, index) => (jsxs("div", { className: theme.nextRunItemStyle, children: [jsx(CalendarIcon, { className: "w-3.5 h-3.5 shrink-0", "aria-hidden": "true" }), jsx("span", { children: formatNextRun(date) })] }, index)))] }))] }));
104
+ });
105
+ CronInput.displayName = "CronInput";
106
+
107
+ export { CronInput };
@@ -0,0 +1,6 @@
1
+ import { CronInputTheme } from "./CronInput.types";
2
+ /**
3
+ * Default theme for the CronInput component
4
+ * Uses flat structure with CSS variable design tokens
5
+ */
6
+ export declare const cronInputTheme: CronInputTheme;
@@ -0,0 +1,84 @@
1
+ import { formsBaseTheme } from '../forms.theme.js';
2
+
3
+ /**
4
+ * Default theme for the CronInput component
5
+ * Uses flat structure with CSS variable design tokens
6
+ */
7
+ const cronInputTheme = {
8
+ // Outer wrapper
9
+ baseStyle: "relative w-full flex flex-col gap-3",
10
+ // Label
11
+ labelStyle: "text-sm font-medium text-[var(--color-text-primary)] dark:text-[var(--color-neutral-200)]",
12
+ // Visual builder grid
13
+ builderStyle: "grid grid-cols-5 gap-2",
14
+ // Individual field group
15
+ fieldGroupStyle: "flex flex-col gap-1",
16
+ // Field label
17
+ fieldLabelStyle: "text-xs font-medium text-[var(--color-text-secondary)] dark:text-[var(--color-neutral-400)]",
18
+ // Select dropdown
19
+ fieldSelectStyle: "w-full rounded-[var(--form-radius)] outline outline-1 outline-[var(--color-border)] " +
20
+ "bg-white text-[var(--color-text-primary)] cursor-pointer transition-all " +
21
+ "focus:outline-2 focus:outline-[var(--color-primary-600)] focus:-outline-offset-1 " +
22
+ "focus:ring-4 focus:ring-[var(--color-primary)]/10 " +
23
+ "disabled:cursor-not-allowed disabled:bg-[var(--color-background-disabled)] disabled:text-[var(--color-text-disabled)] " +
24
+ "dark:bg-[var(--color-neutral-900)] dark:outline-[var(--color-neutral-700)] dark:text-[var(--color-neutral-200)] " +
25
+ "dark:focus:outline-[var(--color-primary-500)] dark:focus:ring-[var(--color-primary-500)]/20",
26
+ // Size variants for field selects
27
+ fieldSelectSizes: {
28
+ sm: `${formsBaseTheme.sizes.sm.text} ${formsBaseTheme.sizes.sm.padding} ${formsBaseTheme.sizes.sm.height}`,
29
+ md: `${formsBaseTheme.sizes.md.text} ${formsBaseTheme.sizes.md.padding} ${formsBaseTheme.sizes.md.height}`,
30
+ lg: `${formsBaseTheme.sizes.lg.text} ${formsBaseTheme.sizes.lg.padding} ${formsBaseTheme.sizes.lg.height}`,
31
+ },
32
+ // Raw input field
33
+ rawInputStyle: "w-full rounded-[var(--form-radius)] outline outline-1 outline-[var(--color-border)] " +
34
+ "bg-white text-[var(--color-text-primary)] font-mono transition-all " +
35
+ "placeholder:text-[var(--color-text-placeholder)] focus:outline-none " +
36
+ "focus:outline-2 focus:outline-[var(--color-primary-600)] focus:-outline-offset-1 " +
37
+ "focus:ring-4 focus:ring-[var(--color-primary)]/10 " +
38
+ "disabled:cursor-not-allowed disabled:bg-[var(--color-background-disabled)] disabled:text-[var(--color-text-disabled)] " +
39
+ "dark:bg-[var(--color-neutral-900)] dark:outline-[var(--color-neutral-700)] dark:text-[var(--color-neutral-200)] " +
40
+ "dark:focus:outline-[var(--color-primary-500)] dark:focus:ring-[var(--color-primary-500)]/20",
41
+ // Size variants for raw input
42
+ rawInputSizes: {
43
+ sm: `${formsBaseTheme.sizes.sm.text} ${formsBaseTheme.sizes.sm.padding} ${formsBaseTheme.sizes.sm.height}`,
44
+ md: `${formsBaseTheme.sizes.md.text} ${formsBaseTheme.sizes.md.padding} ${formsBaseTheme.sizes.md.height}`,
45
+ lg: `${formsBaseTheme.sizes.lg.text} ${formsBaseTheme.sizes.lg.padding} ${formsBaseTheme.sizes.lg.height}`,
46
+ },
47
+ // Mode toggle button
48
+ modeToggleStyle: "inline-flex items-center justify-center rounded-[var(--form-radius)] px-3 py-1.5 text-xs font-medium " +
49
+ "cursor-pointer transition-all outline outline-1 outline-[var(--color-border)] " +
50
+ "text-[var(--color-text-secondary)] bg-white hover:bg-[var(--color-background-secondary)] " +
51
+ "dark:bg-[var(--color-neutral-900)] dark:outline-[var(--color-neutral-700)] dark:text-[var(--color-neutral-400)] " +
52
+ "dark:hover:bg-[var(--color-neutral-800)]",
53
+ // Active mode toggle
54
+ modeToggleActiveStyle: "outline-[var(--color-primary)] bg-[var(--color-primary-50)] text-[var(--color-primary)] " +
55
+ "hover:bg-[var(--color-primary-50)] " +
56
+ "dark:outline-[var(--color-primary-500)] dark:bg-[var(--color-primary-500)]/10 dark:text-[var(--color-primary-400)] " +
57
+ "dark:hover:bg-[var(--color-primary-500)]/15",
58
+ // Preset button
59
+ presetButtonStyle: "inline-flex items-center rounded-[var(--form-radius)] px-2.5 py-1 text-xs font-medium " +
60
+ "cursor-pointer transition-all outline outline-1 outline-[var(--color-border)] " +
61
+ "text-[var(--color-text-secondary)] bg-white hover:bg-[var(--color-background-secondary)] " +
62
+ "hover:text-[var(--color-text-primary)] " +
63
+ "dark:bg-[var(--color-neutral-900)] dark:outline-[var(--color-neutral-700)] dark:text-[var(--color-neutral-400)] " +
64
+ "dark:hover:bg-[var(--color-neutral-800)] dark:hover:text-[var(--color-neutral-200)]",
65
+ // Active preset button
66
+ presetButtonActiveStyle: "outline-[var(--color-primary)] bg-[var(--color-primary-50)] text-[var(--color-primary)] " +
67
+ "hover:bg-[var(--color-primary-100)] " +
68
+ "dark:outline-[var(--color-primary-500)] dark:bg-[var(--color-primary-500)]/10 dark:text-[var(--color-primary-400)]",
69
+ // Human-readable description
70
+ descriptionStyle: "flex items-center gap-2 text-sm text-[var(--color-text-muted)] " +
71
+ "dark:text-[var(--color-neutral-400)]",
72
+ // Next runs container
73
+ nextRunsStyle: "flex flex-col gap-1",
74
+ // Individual next run item
75
+ nextRunItemStyle: "flex items-center gap-2 text-xs text-[var(--color-text-muted)] " +
76
+ "dark:text-[var(--color-neutral-400)]",
77
+ // Section heading
78
+ sectionHeadingStyle: "text-xs font-medium text-[var(--color-text-secondary)] uppercase tracking-wide " +
79
+ "dark:text-[var(--color-neutral-400)]",
80
+ // Validation error
81
+ errorStyle: "text-xs text-[var(--color-danger)] dark:text-[var(--color-danger-400)]",
82
+ };
83
+
84
+ export { cronInputTheme };
@@ -0,0 +1,98 @@
1
+ import React from "react";
2
+ /**
3
+ * CronInput component props
4
+ * A visual cron expression builder that outputs standard cron syntax
5
+ */
6
+ export interface CronInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
7
+ /** Controlled cron expression string, e.g. "0 9 * * 1" */
8
+ value?: string;
9
+ /** Default cron expression for uncontrolled usage */
10
+ defaultValue?: string;
11
+ /** Callback fired when the cron expression changes */
12
+ onChange?: (cronExpression: string) => void;
13
+ /** Whether to show preset schedule buttons */
14
+ showPresets?: boolean;
15
+ /** Whether to show the human-readable description */
16
+ showDescription?: boolean;
17
+ /** Whether to show upcoming execution times */
18
+ showNextRuns?: boolean;
19
+ /** Number of next run times to display (default: 3) */
20
+ nextRunCount?: number;
21
+ /** Size variant */
22
+ size?: CronInputSize;
23
+ /** Display mode: visual builder, raw string input, or both */
24
+ mode?: CronInputMode;
25
+ /** Additional class name (highest priority, shadcn pattern) */
26
+ className?: string;
27
+ /** Theme overrides for sub-component styling */
28
+ theme?: CronInputThemeOverrides;
29
+ /** Whether the input is disabled */
30
+ disabled?: boolean;
31
+ /** Label text for the component */
32
+ label?: string;
33
+ }
34
+ export type CronInputSize = "sm" | "md" | "lg";
35
+ export type CronInputMode = "visual" | "raw" | "both";
36
+ /**
37
+ * Parsed cron fields
38
+ */
39
+ export interface CronFields {
40
+ minute: string;
41
+ hour: string;
42
+ dayOfMonth: string;
43
+ month: string;
44
+ dayOfWeek: string;
45
+ }
46
+ /**
47
+ * Preset schedule definition
48
+ */
49
+ export interface CronPreset {
50
+ label: string;
51
+ value: string;
52
+ description: string;
53
+ }
54
+ /**
55
+ * Theme structure for CronInput component
56
+ */
57
+ export interface CronInputTheme {
58
+ /** Outer wrapper */
59
+ baseStyle: string;
60
+ /** Label text */
61
+ labelStyle: string;
62
+ /** Visual builder section */
63
+ builderStyle: string;
64
+ /** Individual field group (label + select) */
65
+ fieldGroupStyle: string;
66
+ /** Field label */
67
+ fieldLabelStyle: string;
68
+ /** Select dropdown for each field */
69
+ fieldSelectStyle: string;
70
+ /** Size variants for the select dropdowns */
71
+ fieldSelectSizes: Record<CronInputSize, string>;
72
+ /** Raw input field */
73
+ rawInputStyle: string;
74
+ /** Size variants for the raw input */
75
+ rawInputSizes: Record<CronInputSize, string>;
76
+ /** Mode toggle button */
77
+ modeToggleStyle: string;
78
+ /** Active mode toggle button */
79
+ modeToggleActiveStyle: string;
80
+ /** Preset button */
81
+ presetButtonStyle: string;
82
+ /** Active preset button */
83
+ presetButtonActiveStyle: string;
84
+ /** Human-readable description */
85
+ descriptionStyle: string;
86
+ /** Next runs container */
87
+ nextRunsStyle: string;
88
+ /** Individual next run time */
89
+ nextRunItemStyle: string;
90
+ /** Section heading style */
91
+ sectionHeadingStyle: string;
92
+ /** Validation error style */
93
+ errorStyle: string;
94
+ }
95
+ /**
96
+ * Theme overrides - all optional for partial customization
97
+ */
98
+ export type CronInputThemeOverrides = Partial<CronInputTheme>;