@ahrowe/ui 0.34.0 → 0.36.0

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 (1172) hide show
  1. package/README.md +158 -68
  2. package/dist/cjs-types/common/accordion/accordion.d.ts +4 -0
  3. package/dist/cjs-types/common/accordion/accordion.types.d.ts +21 -0
  4. package/dist/cjs-types/common/accordion/index.d.ts +2 -0
  5. package/dist/cjs-types/common/actionButtons/actionButtons.d.ts +2 -0
  6. package/dist/cjs-types/common/actionButtons/actionButtons.types.d.ts +34 -0
  7. package/dist/cjs-types/common/actionButtons/index.d.ts +2 -0
  8. package/dist/cjs-types/common/actionIcon/actionIcon.d.ts +4 -0
  9. package/dist/cjs-types/common/actionIcon/actionIcon.types.d.ts +15 -0
  10. package/dist/cjs-types/common/actionIcon/index.d.ts +2 -0
  11. package/dist/cjs-types/common/alert/alert.d.ts +4 -0
  12. package/dist/cjs-types/common/alert/alert.types.d.ts +30 -0
  13. package/dist/cjs-types/common/alert/index.d.ts +2 -0
  14. package/dist/cjs-types/common/animatedIcon/animatedIcon.d.ts +3 -0
  15. package/dist/cjs-types/common/animatedIcon/animatedIcon.types.d.ts +25 -0
  16. package/dist/cjs-types/common/animatedIcon/index.d.ts +2 -0
  17. package/dist/cjs-types/common/animatedLogo/animatedLogo.d.ts +4 -0
  18. package/dist/cjs-types/common/animatedLogo/animatedLogo.types.d.ts +35 -0
  19. package/dist/cjs-types/common/animatedLogo/index.d.ts +2 -0
  20. package/dist/cjs-types/common/animatedText/animatedText.d.ts +4 -0
  21. package/dist/cjs-types/common/animatedText/animatedText.types.d.ts +65 -0
  22. package/dist/cjs-types/common/animatedText/index.d.ts +2 -0
  23. package/dist/cjs-types/common/avatar/avatar.d.ts +4 -0
  24. package/dist/cjs-types/common/avatar/avatar.types.d.ts +26 -0
  25. package/dist/cjs-types/common/avatar/avatarGroup.d.ts +4 -0
  26. package/dist/cjs-types/common/avatar/index.d.ts +3 -0
  27. package/dist/cjs-types/common/badge/badge.d.ts +4 -0
  28. package/dist/cjs-types/common/badge/badge.types.d.ts +31 -0
  29. package/dist/cjs-types/common/badge/index.d.ts +2 -0
  30. package/dist/cjs-types/common/bodyEnd/bodyEnd.d.ts +4 -0
  31. package/dist/cjs-types/common/bodyEnd/bodyEnd.types.d.ts +4 -0
  32. package/dist/cjs-types/common/bodyEnd/index.d.ts +2 -0
  33. package/dist/cjs-types/common/breadcrumb/breadcrumb.d.ts +4 -0
  34. package/dist/cjs-types/common/breadcrumb/breadcrumb.types.d.ts +33 -0
  35. package/dist/cjs-types/common/breadcrumb/index.d.ts +2 -0
  36. package/dist/cjs-types/common/button/button.d.ts +9 -0
  37. package/dist/cjs-types/common/button/button.types.d.ts +42 -0
  38. package/dist/cjs-types/common/button/index.d.ts +2 -0
  39. package/dist/cjs-types/common/buttonGroup/buttonGroup.d.ts +4 -0
  40. package/dist/cjs-types/common/buttonGroup/buttonGroup.types.d.ts +12 -0
  41. package/dist/cjs-types/common/buttonGroup/index.d.ts +2 -0
  42. package/dist/cjs-types/common/card/Card.d.ts +4 -0
  43. package/dist/cjs-types/common/card/CardActions.d.ts +4 -0
  44. package/dist/cjs-types/common/card/CardContent.d.ts +4 -0
  45. package/dist/cjs-types/common/card/CardHeader.d.ts +4 -0
  46. package/dist/cjs-types/common/card/CardMedia.d.ts +4 -0
  47. package/dist/cjs-types/common/card/card.types.d.ts +55 -0
  48. package/dist/cjs-types/common/card/index.d.ts +6 -0
  49. package/dist/cjs-types/common/carousel/carousel.d.ts +4 -0
  50. package/dist/cjs-types/common/carousel/carousel.types.d.ts +35 -0
  51. package/dist/cjs-types/common/carousel/index.d.ts +2 -0
  52. package/dist/cjs-types/common/checkbox/checkbox.d.ts +4 -0
  53. package/dist/cjs-types/common/checkbox/checkbox.types.d.ts +27 -0
  54. package/dist/cjs-types/common/checkbox/index.d.ts +2 -0
  55. package/dist/cjs-types/common/chip/chip.d.ts +4 -0
  56. package/dist/cjs-types/common/chip/chip.types.d.ts +35 -0
  57. package/dist/cjs-types/common/chip/chipContainer.d.ts +4 -0
  58. package/dist/cjs-types/common/chip/index.d.ts +3 -0
  59. package/dist/cjs-types/common/colorPicker/colorPicker.d.ts +4 -0
  60. package/dist/cjs-types/common/colorPicker/colorPicker.types.d.ts +25 -0
  61. package/dist/cjs-types/common/colorPicker/index.d.ts +2 -0
  62. package/dist/cjs-types/common/colorPicker/toHex.d.ts +11 -0
  63. package/dist/cjs-types/common/configProvider/configProvider.d.ts +13 -0
  64. package/dist/cjs-types/common/configProvider/configProvider.types.d.ts +133 -0
  65. package/dist/cjs-types/common/configProvider/index.d.ts +6 -0
  66. package/dist/cjs-types/common/configProvider/presentation.types.d.ts +14 -0
  67. package/dist/cjs-types/common/configProvider/useComponentDefaults.d.ts +17 -0
  68. package/dist/cjs-types/common/configProvider/useLabels.d.ts +22 -0
  69. package/dist/cjs-types/common/configProvider/usePresentationDefault.d.ts +8 -0
  70. package/dist/cjs-types/common/confirmModal/confirmModal.d.ts +4 -0
  71. package/dist/cjs-types/common/confirmModal/confirmModal.types.d.ts +24 -0
  72. package/dist/cjs-types/common/confirmModal/index.d.ts +2 -0
  73. package/dist/cjs-types/common/datePicker/components/datePickerMonth/datePickerMonth.d.ts +2 -0
  74. package/dist/cjs-types/common/datePicker/components/datePickerMonth/datePickerMonth.types.d.ts +23 -0
  75. package/dist/cjs-types/common/datePicker/components/datePickerMonth/index.d.ts +1 -0
  76. package/dist/cjs-types/common/datePicker/dateFunctions.d.ts +44 -0
  77. package/dist/cjs-types/common/datePicker/datePicker.d.ts +3 -0
  78. package/dist/cjs-types/common/datePicker/datePicker.types.d.ts +60 -0
  79. package/dist/cjs-types/common/datePicker/index.d.ts +2 -0
  80. package/dist/cjs-types/common/divider/divider.d.ts +4 -0
  81. package/dist/cjs-types/common/divider/divider.types.d.ts +21 -0
  82. package/dist/cjs-types/common/divider/index.d.ts +2 -0
  83. package/dist/cjs-types/common/drawer/drawer.d.ts +4 -0
  84. package/dist/cjs-types/common/drawer/drawer.types.d.ts +15 -0
  85. package/dist/cjs-types/common/drawer/index.d.ts +2 -0
  86. package/dist/cjs-types/common/dropZone/dropZone.d.ts +4 -0
  87. package/dist/cjs-types/common/dropZone/dropZone.types.d.ts +90 -0
  88. package/dist/cjs-types/common/dropZone/index.d.ts +2 -0
  89. package/dist/cjs-types/common/dropdown/dropdown.d.ts +4 -0
  90. package/dist/cjs-types/common/dropdown/dropdown.types.d.ts +47 -0
  91. package/dist/cjs-types/common/dropdown/index.d.ts +2 -0
  92. package/dist/cjs-types/common/emptyState/emptyState.d.ts +3 -0
  93. package/dist/cjs-types/common/emptyState/emptyState.types.d.ts +20 -0
  94. package/dist/cjs-types/common/emptyState/index.d.ts +2 -0
  95. package/dist/cjs-types/common/errorBoundary/errorBoundary.d.ts +14 -0
  96. package/dist/cjs-types/common/errorBoundary/errorBoundary.types.d.ts +57 -0
  97. package/dist/cjs-types/common/errorBoundary/index.d.ts +2 -0
  98. package/dist/cjs-types/common/fab/components/fabBase/fabBase.d.ts +3 -0
  99. package/dist/cjs-types/common/fab/components/fabBase/fabBase.types.d.ts +12 -0
  100. package/dist/cjs-types/common/fab/components/fabBase/index.d.ts +1 -0
  101. package/dist/cjs-types/common/fab/fab.d.ts +3 -0
  102. package/dist/cjs-types/common/fab/fab.types.d.ts +22 -0
  103. package/dist/cjs-types/common/fab/index.d.ts +2 -0
  104. package/dist/cjs-types/common/flip/flip.d.ts +3 -0
  105. package/dist/cjs-types/common/flip/flip.types.d.ts +44 -0
  106. package/dist/cjs-types/common/flip/index.d.ts +2 -0
  107. package/dist/cjs-types/common/floorPlan/floorPlan.faces.d.ts +33 -0
  108. package/dist/cjs-types/common/floorPlan/floorPlan.fixtures.d.ts +35 -0
  109. package/dist/cjs-types/common/floorPlan/floorPlan.geometry.d.ts +111 -0
  110. package/dist/cjs-types/common/floorPlan/floorPlan.graph.d.ts +184 -0
  111. package/dist/cjs-types/common/floorPlan/floorPlan.hit.d.ts +26 -0
  112. package/dist/cjs-types/common/floorPlan/floorPlan.json.d.ts +23 -0
  113. package/dist/cjs-types/common/floorPlan/floorPlan.mesh.d.ts +36 -0
  114. package/dist/cjs-types/common/floorPlan/floorPlan.path.d.ts +59 -0
  115. package/dist/cjs-types/common/floorPlan/floorPlan.plan.d.ts +98 -0
  116. package/dist/cjs-types/common/floorPlan/floorPlan.rooms.d.ts +47 -0
  117. package/dist/cjs-types/common/floorPlan/floorPlan.snap.d.ts +101 -0
  118. package/dist/cjs-types/common/floorPlan/floorPlan.triangulate.d.ts +11 -0
  119. package/dist/cjs-types/common/floorPlan/floorPlan.types.d.ts +276 -0
  120. package/dist/cjs-types/common/floorPlan/index.d.ts +30 -0
  121. package/dist/cjs-types/common/floorPlan/legacySvg.d.ts +27 -0
  122. package/dist/cjs-types/common/hooks/useAnchorTracking.d.ts +40 -0
  123. package/dist/cjs-types/common/hooks/useCoarsePointer.d.ts +3 -0
  124. package/dist/cjs-types/common/hooks/useFocusBoundary.d.ts +20 -0
  125. package/dist/cjs-types/common/hooks/useMediaQuery.d.ts +9 -0
  126. package/dist/cjs-types/common/hooks/useOverlay.d.ts +26 -0
  127. package/dist/cjs-types/common/hooks/useScrollEdges.d.ts +18 -0
  128. package/dist/cjs-types/common/hooks/useSheet.d.ts +19 -0
  129. package/dist/cjs-types/common/hooks/useSwipeDismiss.d.ts +33 -0
  130. package/dist/cjs-types/common/hooks/useVisualViewportSize.d.ts +13 -0
  131. package/dist/cjs-types/common/iconPicker/iconPicker.d.ts +3 -0
  132. package/dist/cjs-types/common/iconPicker/iconPicker.types.d.ts +23 -0
  133. package/dist/cjs-types/common/iconPicker/index.d.ts +2 -0
  134. package/dist/cjs-types/common/idleManager/idleManager.d.ts +3 -0
  135. package/dist/cjs-types/common/idleManager/idleManager.types.d.ts +8 -0
  136. package/dist/cjs-types/common/idleManager/index.d.ts +2 -0
  137. package/dist/cjs-types/common/infiniteBlock/useInfiniteScroll.d.ts +5 -0
  138. package/dist/cjs-types/common/input/index.d.ts +2 -0
  139. package/dist/cjs-types/common/input/input.d.ts +4 -0
  140. package/dist/cjs-types/common/input/input.types.d.ts +84 -0
  141. package/dist/cjs-types/common/inputDropdown/index.d.ts +2 -0
  142. package/dist/cjs-types/common/inputDropdown/inputDropdown.d.ts +3 -0
  143. package/dist/cjs-types/common/inputDropdown/inputDropdown.types.d.ts +36 -0
  144. package/dist/cjs-types/common/interactableDiv/index.d.ts +2 -0
  145. package/dist/cjs-types/common/interactableDiv/interactableDiv.d.ts +8 -0
  146. package/dist/cjs-types/common/kanbanBoard/KanbanBoard.d.ts +3 -0
  147. package/dist/cjs-types/common/kanbanBoard/KanbanColumn.d.ts +45 -0
  148. package/dist/cjs-types/common/kanbanBoard/KanbanItem.d.ts +3 -0
  149. package/dist/cjs-types/common/kanbanBoard/index.d.ts +3 -0
  150. package/dist/cjs-types/common/kanbanBoard/kanbanBoard.types.d.ts +129 -0
  151. package/dist/cjs-types/common/kanbanBoard/kanbanBoard.utils.d.ts +60 -0
  152. package/dist/cjs-types/common/klipyPicker/components/gifPreview/gifPreview.d.ts +3 -0
  153. package/dist/cjs-types/common/klipyPicker/components/gifPreview/gifPreview.types.d.ts +7 -0
  154. package/dist/cjs-types/common/klipyPicker/components/gifPreview/index.d.ts +1 -0
  155. package/dist/cjs-types/common/klipyPicker/components/gifView/gifView.d.ts +3 -0
  156. package/dist/cjs-types/common/klipyPicker/components/gifView/gifView.types.d.ts +4 -0
  157. package/dist/cjs-types/common/klipyPicker/components/gifView/index.d.ts +1 -0
  158. package/dist/cjs-types/common/klipyPicker/index.d.ts +2 -0
  159. package/dist/cjs-types/common/klipyPicker/klipyPicker.d.ts +3 -0
  160. package/dist/cjs-types/common/klipyPicker/klipyPicker.types.d.ts +15 -0
  161. package/dist/cjs-types/common/loading/iconLoading/iconLoading.d.ts +5 -0
  162. package/dist/cjs-types/common/loading/iconLoading/index.d.ts +2 -0
  163. package/dist/cjs-types/common/loading/index.d.ts +2 -0
  164. package/dist/cjs-types/common/loading/spinnerLoading/index.d.ts +2 -0
  165. package/dist/cjs-types/common/loading/spinnerLoading/spinnerLoading.d.ts +6 -0
  166. package/dist/cjs-types/common/maskedInput/index.d.ts +2 -0
  167. package/dist/cjs-types/common/maskedInput/mask.d.ts +48 -0
  168. package/dist/cjs-types/common/maskedInput/maskedInput.d.ts +13 -0
  169. package/dist/cjs-types/common/maskedInput/maskedInput.types.d.ts +38 -0
  170. package/dist/cjs-types/common/menu/index.d.ts +2 -0
  171. package/dist/cjs-types/common/menu/menu.d.ts +14 -0
  172. package/dist/cjs-types/common/menu/menu.types.d.ts +55 -0
  173. package/dist/cjs-types/common/modal/index.d.ts +2 -0
  174. package/dist/cjs-types/common/modal/modal.d.ts +3 -0
  175. package/dist/cjs-types/common/modal/modal.types.d.ts +31 -0
  176. package/dist/cjs-types/common/multiSelect/index.d.ts +2 -0
  177. package/dist/cjs-types/common/multiSelect/multiSelect.d.ts +4 -0
  178. package/dist/cjs-types/common/multiSelect/multiSelect.types.d.ts +69 -0
  179. package/dist/cjs-types/common/numberInput/index.d.ts +3 -0
  180. package/dist/cjs-types/common/numberInput/numberInput.d.ts +5 -0
  181. package/dist/cjs-types/common/numberInput/numberInput.types.d.ts +76 -0
  182. package/dist/cjs-types/common/numberInput/useStepRepeat.d.ts +17 -0
  183. package/dist/cjs-types/common/optionPicker/index.d.ts +2 -0
  184. package/dist/cjs-types/common/optionPicker/optionPicker.d.ts +4 -0
  185. package/dist/cjs-types/common/optionPicker/optionPicker.types.d.ts +16 -0
  186. package/dist/cjs-types/common/otpInput/index.d.ts +2 -0
  187. package/dist/cjs-types/common/otpInput/otpInput.d.ts +4 -0
  188. package/dist/cjs-types/common/otpInput/otpInput.types.d.ts +60 -0
  189. package/dist/cjs-types/common/overscroll/index.d.ts +2 -0
  190. package/dist/cjs-types/common/overscroll/overscroll.d.ts +2 -0
  191. package/dist/cjs-types/common/overscroll/overscroll.types.d.ts +14 -0
  192. package/dist/cjs-types/common/pagination/index.d.ts +2 -0
  193. package/dist/cjs-types/common/pagination/pagination.d.ts +4 -0
  194. package/dist/cjs-types/common/pagination/pagination.types.d.ts +45 -0
  195. package/dist/cjs-types/common/planCanvas/index.d.ts +2 -0
  196. package/dist/cjs-types/common/planCanvas/planCanvas.d.ts +7 -0
  197. package/dist/cjs-types/common/planCanvas/planCanvas.types.d.ts +64 -0
  198. package/dist/cjs-types/common/popover/index.d.ts +2 -0
  199. package/dist/cjs-types/common/popover/popover.d.ts +3 -0
  200. package/dist/cjs-types/common/popover/popover.types.d.ts +94 -0
  201. package/dist/cjs-types/common/popover/usePopoverPosition.d.ts +44 -0
  202. package/dist/cjs-types/common/progressBar/index.d.ts +2 -0
  203. package/dist/cjs-types/common/progressBar/progressBar.d.ts +5 -0
  204. package/dist/cjs-types/common/progressBar/progressBar.types.d.ts +18 -0
  205. package/dist/cjs-types/common/radioGroup/index.d.ts +2 -0
  206. package/dist/cjs-types/common/radioGroup/radioGroup.d.ts +4 -0
  207. package/dist/cjs-types/common/radioGroup/radioGroup.types.d.ts +45 -0
  208. package/dist/cjs-types/common/rating/index.d.ts +2 -0
  209. package/dist/cjs-types/common/rating/rating.d.ts +4 -0
  210. package/dist/cjs-types/common/rating/rating.types.d.ts +19 -0
  211. package/dist/cjs-types/common/revealLens/index.d.ts +2 -0
  212. package/dist/cjs-types/common/revealLens/revealLens.d.ts +4 -0
  213. package/dist/cjs-types/common/revealLens/revealLens.types.d.ts +24 -0
  214. package/dist/cjs-types/common/ripple/index.d.ts +2 -0
  215. package/dist/cjs-types/common/ripple/ripple.d.ts +5 -0
  216. package/dist/cjs-types/common/ripple/ripple.types.d.ts +16 -0
  217. package/dist/cjs-types/common/roomDrawer/index.d.ts +2 -0
  218. package/dist/cjs-types/common/roomDrawer/roomDrawer.d.ts +3 -0
  219. package/dist/cjs-types/common/roomDrawer/roomDrawer.types.d.ts +308 -0
  220. package/dist/cjs-types/common/roomDrawer/usePlanHistory.d.ts +24 -0
  221. package/dist/cjs-types/common/roomViewer/index.d.ts +2 -0
  222. package/dist/cjs-types/common/roomViewer/roomViewer.d.ts +10 -0
  223. package/dist/cjs-types/common/roomViewer/roomViewer.types.d.ts +91 -0
  224. package/dist/cjs-types/common/scrollFade/index.d.ts +2 -0
  225. package/dist/cjs-types/common/scrollFade/scrollFade.d.ts +4 -0
  226. package/dist/cjs-types/common/scrollFade/scrollFade.types.d.ts +20 -0
  227. package/dist/cjs-types/common/scrollbarProvider/index.d.ts +2 -0
  228. package/dist/cjs-types/common/scrollbarProvider/scrollbarProvider.d.ts +7 -0
  229. package/dist/cjs-types/common/searchInput/index.d.ts +2 -0
  230. package/dist/cjs-types/common/searchInput/searchInput.d.ts +3 -0
  231. package/dist/cjs-types/common/searchInput/searchInput.types.d.ts +28 -0
  232. package/dist/cjs-types/common/sectionHeader/index.d.ts +2 -0
  233. package/dist/cjs-types/common/sectionHeader/sectionHeader.d.ts +4 -0
  234. package/dist/cjs-types/common/sectionHeader/sectionHeader.types.d.ts +27 -0
  235. package/dist/cjs-types/common/sheetBackdrop/index.d.ts +2 -0
  236. package/dist/cjs-types/common/sheetBackdrop/sheetBackdrop.d.ts +16 -0
  237. package/dist/cjs-types/common/sheetBackdrop/sheetBackdrop.types.d.ts +7 -0
  238. package/dist/cjs-types/common/skeleton/index.d.ts +2 -0
  239. package/dist/cjs-types/common/skeleton/skeleton.d.ts +4 -0
  240. package/dist/cjs-types/common/skeleton/skeleton.types.d.ts +22 -0
  241. package/dist/cjs-types/common/slider/index.d.ts +2 -0
  242. package/dist/cjs-types/common/slider/slider.d.ts +3 -0
  243. package/dist/cjs-types/common/slider/slider.types.d.ts +68 -0
  244. package/dist/cjs-types/common/splitButton/index.d.ts +2 -0
  245. package/dist/cjs-types/common/splitButton/splitButton.d.ts +3 -0
  246. package/dist/cjs-types/common/splitButton/splitButton.types.d.ts +35 -0
  247. package/dist/cjs-types/common/stepper/index.d.ts +2 -0
  248. package/dist/cjs-types/common/stepper/stepper.d.ts +3 -0
  249. package/dist/cjs-types/common/stepper/stepper.types.d.ts +77 -0
  250. package/dist/cjs-types/common/sticky/index.d.ts +1 -0
  251. package/dist/cjs-types/common/sticky/sticky.d.ts +3 -0
  252. package/dist/cjs-types/common/sticky/sticky.types.d.ts +22 -0
  253. package/dist/cjs-types/common/sticky/stickyStack.d.ts +46 -0
  254. package/dist/cjs-types/common/switch/index.d.ts +2 -0
  255. package/dist/cjs-types/common/switch/switch.d.ts +4 -0
  256. package/dist/cjs-types/common/switch/switch.types.d.ts +21 -0
  257. package/dist/cjs-types/common/tabHeader/index.d.ts +2 -0
  258. package/dist/cjs-types/common/tabHeader/tabHeader.d.ts +4 -0
  259. package/dist/cjs-types/common/tabHeader/tabHeader.types.d.ts +20 -0
  260. package/dist/cjs-types/common/textarea/index.d.ts +2 -0
  261. package/dist/cjs-types/common/textarea/textarea.d.ts +3 -0
  262. package/dist/cjs-types/common/textarea/textarea.types.d.ts +2 -0
  263. package/dist/cjs-types/common/themeProvider/defaultTheme.d.ts +7 -0
  264. package/dist/cjs-types/common/themeProvider/index.d.ts +4 -0
  265. package/dist/cjs-types/common/themeProvider/lightTheme.d.ts +13 -0
  266. package/dist/cjs-types/common/themeProvider/theme.types.d.ts +272 -0
  267. package/dist/cjs-types/common/themeProvider/themeProvider.d.ts +38 -0
  268. package/dist/cjs-types/common/themeProvider/themeVariablesContext.d.ts +11 -0
  269. package/dist/cjs-types/common/themeProvider/useTheme.d.ts +4 -0
  270. package/dist/cjs-types/common/tilt/index.d.ts +4 -0
  271. package/dist/cjs-types/common/tilt/tilt.d.ts +3 -0
  272. package/dist/cjs-types/common/tilt/tilt.types.d.ts +40 -0
  273. package/dist/cjs-types/common/tilt/tiltMath.d.ts +24 -0
  274. package/dist/cjs-types/common/tiltGroup/index.d.ts +3 -0
  275. package/dist/cjs-types/common/tiltGroup/tiltGroup.d.ts +6 -0
  276. package/dist/cjs-types/common/tiltGroup/tiltGroup.types.d.ts +16 -0
  277. package/dist/cjs-types/common/timeInput/components/clockDial/clockDial.d.ts +3 -0
  278. package/dist/cjs-types/common/timeInput/components/clockDial/clockDial.types.d.ts +24 -0
  279. package/dist/cjs-types/common/timeInput/components/clockDial/index.d.ts +1 -0
  280. package/dist/cjs-types/common/timeInput/index.d.ts +1 -0
  281. package/dist/cjs-types/common/timeInput/timeFunctions.d.ts +36 -0
  282. package/dist/cjs-types/common/timeInput/timeInput.d.ts +3 -0
  283. package/dist/cjs-types/common/timeInput/timeInput.types.d.ts +44 -0
  284. package/dist/cjs-types/common/timeline/index.d.ts +2 -0
  285. package/dist/cjs-types/common/timeline/timeline.d.ts +3 -0
  286. package/dist/cjs-types/common/timeline/timeline.types.d.ts +51 -0
  287. package/dist/cjs-types/common/timer/index.d.ts +2 -0
  288. package/dist/cjs-types/common/timer/timer.chime.d.ts +1 -0
  289. package/dist/cjs-types/common/timer/timer.d.ts +3 -0
  290. package/dist/cjs-types/common/timer/timer.types.d.ts +110 -0
  291. package/dist/cjs-types/common/toast/index.d.ts +3 -0
  292. package/dist/cjs-types/common/toast/toast.d.ts +11 -0
  293. package/dist/cjs-types/common/toast/toast.types.d.ts +50 -0
  294. package/dist/cjs-types/common/toast/toastProvider.d.ts +8 -0
  295. package/dist/cjs-types/common/toast/toastService.d.ts +7 -0
  296. package/dist/cjs-types/common/tooltip/index.d.ts +2 -0
  297. package/dist/cjs-types/common/tooltip/tooltip.d.ts +3 -0
  298. package/dist/cjs-types/common/tooltip/tooltip.types.d.ts +17 -0
  299. package/dist/cjs-types/common/tree/flattenTree.d.ts +3 -0
  300. package/dist/cjs-types/common/tree/index.d.ts +3 -0
  301. package/dist/cjs-types/common/tree/tree.d.ts +4 -0
  302. package/dist/cjs-types/common/tree/tree.types.d.ts +67 -0
  303. package/dist/cjs-types/common/types/actions.types.d.ts +7 -0
  304. package/dist/cjs-types/common/types/baseProps.types.d.ts +29 -0
  305. package/dist/cjs-types/common/types/icon.types.d.ts +17 -0
  306. package/dist/cjs-types/common/types/slots.types.d.ts +4 -0
  307. package/dist/cjs-types/common/utils/activationKey.d.ts +9 -0
  308. package/dist/cjs-types/common/utils/interactiveTarget.d.ts +7 -0
  309. package/dist/cjs-types/common/utils/listNavigation.d.ts +49 -0
  310. package/dist/cjs-types/common/utils/mergeRefs.d.ts +12 -0
  311. package/dist/cjs-types/common/utils/renderIcon.d.ts +29 -0
  312. package/dist/cjs-types/common/utils/scrollAncestors.d.ts +2 -0
  313. package/dist/cjs-types/common/utils/visualViewport.d.ts +7 -0
  314. package/dist/cjs-types/common/virtualList/index.d.ts +2 -0
  315. package/dist/cjs-types/common/virtualList/useColumnResize.d.ts +59 -0
  316. package/dist/cjs-types/common/virtualList/useColumns.d.ts +52 -0
  317. package/dist/cjs-types/common/virtualList/useHeaderNavigation.d.ts +22 -0
  318. package/dist/cjs-types/common/virtualList/useRowDrag.d.ts +58 -0
  319. package/dist/cjs-types/common/virtualList/useRowNavigation.d.ts +50 -0
  320. package/dist/cjs-types/common/virtualList/useSelection.d.ts +24 -0
  321. package/dist/cjs-types/common/virtualList/useSorting.d.ts +26 -0
  322. package/dist/cjs-types/common/virtualList/useVirtualWindow.d.ts +36 -0
  323. package/dist/cjs-types/common/virtualList/virtualList.d.ts +5 -0
  324. package/dist/cjs-types/common/virtualList/virtualList.types.d.ts +317 -0
  325. package/dist/cjs-types/common/virtualList/virtualList.utils.d.ts +126 -0
  326. package/dist/cjs-types/common/virtualList/virtualListHeader.d.ts +35 -0
  327. package/dist/cjs-types/common/virtualList/virtualRow.d.ts +62 -0
  328. package/dist/cjs-types/common/wizard/index.d.ts +1 -0
  329. package/dist/cjs-types/common/wizard/wizard.d.ts +3 -0
  330. package/dist/cjs-types/common/wizard/wizard.types.d.ts +12 -0
  331. package/dist/cjs-types/hooks/useWindowSize.d.ts +6 -0
  332. package/dist/cjs-types/index.d.ts +154 -0
  333. package/dist/cjs-types/package.json +3 -0
  334. package/dist/cjs-types/services/formValidation/FormValidatorGroupWithForm.d.ts +18 -0
  335. package/dist/cjs-types/services/formValidation/index.d.ts +5 -0
  336. package/dist/cjs-types/services/formValidation/useFormValidatorGroup.d.ts +10 -0
  337. package/dist/cjs-types/services/formValidation/validatableComponent.d.ts +36 -0
  338. package/dist/cjs-types/services/klipy.d.ts +36 -0
  339. package/dist/cjs-types/services/localization.d.ts +3 -0
  340. package/dist/esm/common/accordion/accordion.mjs +1 -1
  341. package/dist/esm/common/accordion/accordion.mjs.map +1 -1
  342. package/dist/esm/common/accordion/accordion.module.mjs +1 -1
  343. package/dist/esm/common/accordion/accordion.module.mjs.map +1 -1
  344. package/dist/esm/common/accordion/accordion.plain.module.mjs +1 -1
  345. package/dist/esm/common/accordion/accordion.plain.module.mjs.map +1 -1
  346. package/dist/esm/common/accordion/accordion.primary.module.mjs +1 -1
  347. package/dist/esm/common/accordion/accordion.primary.module.mjs.map +1 -1
  348. package/dist/esm/common/accordion/accordion.types.mjs +1 -1
  349. package/dist/esm/common/accordion/accordion.types.mjs.map +1 -1
  350. package/dist/esm/common/actionButtons/actionButtons.mjs +1 -1
  351. package/dist/esm/common/actionButtons/actionButtons.mjs.map +1 -1
  352. package/dist/esm/common/actionButtons/actionButtons.module.mjs +1 -1
  353. package/dist/esm/common/actionIcon/actionIcon.mjs +1 -1
  354. package/dist/esm/common/actionIcon/actionIcon.mjs.map +1 -1
  355. package/dist/esm/common/actionIcon/actionIcon.module.mjs +1 -1
  356. package/dist/esm/common/alert/alert.mjs +1 -1
  357. package/dist/esm/common/alert/alert.mjs.map +1 -1
  358. package/dist/esm/common/alert/alert.module.mjs +1 -1
  359. package/dist/esm/common/alert/alert.types.mjs +1 -1
  360. package/dist/esm/common/alert/alert.types.mjs.map +1 -1
  361. package/dist/esm/common/animatedIcon/animatedIcon.mjs +1 -1
  362. package/dist/esm/common/animatedIcon/animatedIcon.mjs.map +1 -1
  363. package/dist/esm/common/animatedIcon/animatedIcon.module.mjs +1 -1
  364. package/dist/esm/common/animatedLogo/animatedLogo.mjs +1 -1
  365. package/dist/esm/common/animatedLogo/animatedLogo.mjs.map +1 -1
  366. package/dist/esm/common/animatedLogo/animatedLogo.module.mjs +1 -1
  367. package/dist/esm/common/animatedText/animatedText.mjs +1 -1
  368. package/dist/esm/common/animatedText/animatedText.mjs.map +1 -1
  369. package/dist/esm/common/animatedText/animatedText.module.mjs +1 -1
  370. package/dist/esm/common/animatedText/animatedText.types.mjs +1 -1
  371. package/dist/esm/common/animatedText/animatedText.types.mjs.map +1 -1
  372. package/dist/esm/common/avatar/avatar.mjs +1 -1
  373. package/dist/esm/common/avatar/avatar.mjs.map +1 -1
  374. package/dist/esm/common/avatar/avatar.module.mjs +1 -1
  375. package/dist/esm/common/avatar/avatarGroup.mjs +1 -1
  376. package/dist/esm/common/avatar/avatarGroup.mjs.map +1 -1
  377. package/dist/esm/common/badge/badge.mjs +1 -1
  378. package/dist/esm/common/badge/badge.mjs.map +1 -1
  379. package/dist/esm/common/badge/badge.module.mjs +1 -1
  380. package/dist/esm/common/badge/badge.types.mjs +1 -1
  381. package/dist/esm/common/badge/badge.types.mjs.map +1 -1
  382. package/dist/esm/common/bodyEnd/bodyEnd.mjs +1 -1
  383. package/dist/esm/common/bodyEnd/bodyEnd.mjs.map +1 -1
  384. package/dist/esm/common/breadcrumb/breadcrumb.mjs +1 -1
  385. package/dist/esm/common/breadcrumb/breadcrumb.mjs.map +1 -1
  386. package/dist/esm/common/breadcrumb/breadcrumb.module.mjs +1 -1
  387. package/dist/esm/common/button/button.mjs +1 -1
  388. package/dist/esm/common/button/button.mjs.map +1 -1
  389. package/dist/esm/common/button/button.module.mjs +1 -1
  390. package/dist/esm/common/button/button.types.mjs +1 -1
  391. package/dist/esm/common/button/button.types.mjs.map +1 -1
  392. package/dist/esm/common/buttonGroup/buttonGroup.mjs +1 -1
  393. package/dist/esm/common/buttonGroup/buttonGroup.mjs.map +1 -1
  394. package/dist/esm/common/buttonGroup/buttonGroup.module.mjs +1 -1
  395. package/dist/esm/common/buttonGroup/buttonGroup.types.mjs +1 -1
  396. package/dist/esm/common/buttonGroup/buttonGroup.types.mjs.map +1 -1
  397. package/dist/esm/common/card/Card.mjs +1 -1
  398. package/dist/esm/common/card/Card.mjs.map +1 -1
  399. package/dist/esm/common/card/CardActions.mjs +1 -1
  400. package/dist/esm/common/card/CardActions.mjs.map +1 -1
  401. package/dist/esm/common/card/CardContent.mjs +1 -1
  402. package/dist/esm/common/card/CardContent.mjs.map +1 -1
  403. package/dist/esm/common/card/CardHeader.mjs +1 -1
  404. package/dist/esm/common/card/CardHeader.mjs.map +1 -1
  405. package/dist/esm/common/card/CardMedia.mjs +1 -1
  406. package/dist/esm/common/card/CardMedia.mjs.map +1 -1
  407. package/dist/esm/common/card/card.module.mjs +1 -1
  408. package/dist/esm/common/card/card.module.mjs.map +1 -1
  409. package/dist/esm/common/card/card.types.mjs +1 -1
  410. package/dist/esm/common/card/card.types.mjs.map +1 -1
  411. package/dist/esm/common/carousel/carousel.mjs +1 -1
  412. package/dist/esm/common/carousel/carousel.mjs.map +1 -1
  413. package/dist/esm/common/carousel/carousel.module.mjs +1 -1
  414. package/dist/esm/common/carousel/carousel.module.mjs.map +1 -1
  415. package/dist/esm/common/checkbox/checkbox.mjs +1 -1
  416. package/dist/esm/common/checkbox/checkbox.mjs.map +1 -1
  417. package/dist/esm/common/checkbox/checkbox.module.mjs +1 -1
  418. package/dist/esm/common/checkbox/checkbox.module.mjs.map +1 -1
  419. package/dist/esm/common/chip/chip.mjs +1 -1
  420. package/dist/esm/common/chip/chip.mjs.map +1 -1
  421. package/dist/esm/common/chip/chip.module.mjs +1 -1
  422. package/dist/esm/common/chip/chip.types.mjs +1 -1
  423. package/dist/esm/common/chip/chip.types.mjs.map +1 -1
  424. package/dist/esm/common/chip/chipContainer.mjs +1 -1
  425. package/dist/esm/common/chip/chipContainer.mjs.map +1 -1
  426. package/dist/esm/common/colorPicker/colorPicker.mjs +1 -1
  427. package/dist/esm/common/colorPicker/colorPicker.mjs.map +1 -1
  428. package/dist/esm/common/colorPicker/colorPicker.module.mjs +1 -1
  429. package/dist/esm/common/colorPicker/colorPicker.module.mjs.map +1 -1
  430. package/dist/esm/common/colorPicker/toHex.mjs +1 -1
  431. package/dist/esm/common/colorPicker/toHex.mjs.map +1 -1
  432. package/dist/esm/common/configProvider/configProvider.mjs +1 -1
  433. package/dist/esm/common/configProvider/configProvider.mjs.map +1 -1
  434. package/dist/esm/common/configProvider/presentation.types.mjs +1 -1
  435. package/dist/esm/common/configProvider/presentation.types.mjs.map +1 -1
  436. package/dist/esm/common/configProvider/useComponentDefaults.mjs +1 -1
  437. package/dist/esm/common/configProvider/useComponentDefaults.mjs.map +1 -1
  438. package/dist/esm/common/configProvider/useLabels.mjs +1 -1
  439. package/dist/esm/common/configProvider/useLabels.mjs.map +1 -1
  440. package/dist/esm/common/configProvider/usePresentationDefault.mjs +1 -1
  441. package/dist/esm/common/configProvider/usePresentationDefault.mjs.map +1 -1
  442. package/dist/esm/common/confirmModal/confirmModal.mjs +1 -1
  443. package/dist/esm/common/confirmModal/confirmModal.mjs.map +1 -1
  444. package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs +1 -1
  445. package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs.map +1 -1
  446. package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.module.mjs +1 -1
  447. package/dist/esm/common/datePicker/dateFunctions.mjs +1 -1
  448. package/dist/esm/common/datePicker/dateFunctions.mjs.map +1 -1
  449. package/dist/esm/common/datePicker/datePicker.mjs +1 -1
  450. package/dist/esm/common/datePicker/datePicker.mjs.map +1 -1
  451. package/dist/esm/common/datePicker/datePicker.module.mjs +1 -1
  452. package/dist/esm/common/divider/divider.mjs +1 -1
  453. package/dist/esm/common/divider/divider.mjs.map +1 -1
  454. package/dist/esm/common/divider/divider.module.mjs +1 -1
  455. package/dist/esm/common/divider/divider.types.mjs +1 -1
  456. package/dist/esm/common/divider/divider.types.mjs.map +1 -1
  457. package/dist/esm/common/drawer/drawer.mjs +1 -1
  458. package/dist/esm/common/drawer/drawer.mjs.map +1 -1
  459. package/dist/esm/common/drawer/drawer.module.mjs +1 -1
  460. package/dist/esm/common/drawer/drawer.module.mjs.map +1 -1
  461. package/dist/esm/common/dropZone/dropZone.mjs +1 -1
  462. package/dist/esm/common/dropZone/dropZone.mjs.map +1 -1
  463. package/dist/esm/common/dropZone/dropZone.module.mjs +1 -1
  464. package/dist/esm/common/dropZone/dropZone.types.mjs +1 -1
  465. package/dist/esm/common/dropZone/dropZone.types.mjs.map +1 -1
  466. package/dist/esm/common/dropdown/dropdown.mjs +1 -1
  467. package/dist/esm/common/dropdown/dropdown.mjs.map +1 -1
  468. package/dist/esm/common/dropdown/dropdown.module.mjs +1 -1
  469. package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -1
  470. package/dist/esm/common/emptyState/emptyState.mjs +1 -1
  471. package/dist/esm/common/emptyState/emptyState.mjs.map +1 -1
  472. package/dist/esm/common/emptyState/emptyState.module.mjs +1 -1
  473. package/dist/esm/common/errorBoundary/errorBoundary.mjs +1 -1
  474. package/dist/esm/common/errorBoundary/errorBoundary.mjs.map +1 -1
  475. package/dist/esm/common/errorBoundary/errorBoundary.module.mjs +1 -1
  476. package/dist/esm/common/fab/components/fabBase/fabBase.mjs +1 -1
  477. package/dist/esm/common/fab/components/fabBase/fabBase.mjs.map +1 -1
  478. package/dist/esm/common/fab/components/fabBase/fabBase.module.mjs +1 -1
  479. package/dist/esm/common/fab/fab.mjs +1 -1
  480. package/dist/esm/common/fab/fab.mjs.map +1 -1
  481. package/dist/esm/common/fab/fab.module.mjs +1 -1
  482. package/dist/esm/common/fab/fab.module.mjs.map +1 -1
  483. package/dist/esm/common/flip/flip.mjs +1 -1
  484. package/dist/esm/common/flip/flip.mjs.map +1 -1
  485. package/dist/esm/common/flip/flip.module.mjs +1 -1
  486. package/dist/esm/common/floorPlan/floorPlan.faces.mjs +1 -1
  487. package/dist/esm/common/floorPlan/floorPlan.faces.mjs.map +1 -1
  488. package/dist/esm/common/floorPlan/floorPlan.geometry.mjs +1 -1
  489. package/dist/esm/common/floorPlan/floorPlan.geometry.mjs.map +1 -1
  490. package/dist/esm/common/floorPlan/floorPlan.graph.mjs +1 -1
  491. package/dist/esm/common/floorPlan/floorPlan.graph.mjs.map +1 -1
  492. package/dist/esm/common/floorPlan/floorPlan.hit.mjs +1 -1
  493. package/dist/esm/common/floorPlan/floorPlan.hit.mjs.map +1 -1
  494. package/dist/esm/common/floorPlan/floorPlan.json.mjs +1 -1
  495. package/dist/esm/common/floorPlan/floorPlan.json.mjs.map +1 -1
  496. package/dist/esm/common/floorPlan/floorPlan.mesh.mjs +1 -1
  497. package/dist/esm/common/floorPlan/floorPlan.mesh.mjs.map +1 -1
  498. package/dist/esm/common/floorPlan/floorPlan.path.mjs +1 -1
  499. package/dist/esm/common/floorPlan/floorPlan.path.mjs.map +1 -1
  500. package/dist/esm/common/floorPlan/floorPlan.plan.mjs +1 -1
  501. package/dist/esm/common/floorPlan/floorPlan.plan.mjs.map +1 -1
  502. package/dist/esm/common/floorPlan/floorPlan.rooms.mjs +1 -1
  503. package/dist/esm/common/floorPlan/floorPlan.rooms.mjs.map +1 -1
  504. package/dist/esm/common/floorPlan/floorPlan.snap.mjs +1 -1
  505. package/dist/esm/common/floorPlan/floorPlan.snap.mjs.map +1 -1
  506. package/dist/esm/common/floorPlan/floorPlan.triangulate.mjs +1 -1
  507. package/dist/esm/common/floorPlan/floorPlan.triangulate.mjs.map +1 -1
  508. package/dist/esm/common/floorPlan/floorPlan.types.mjs +1 -1
  509. package/dist/esm/common/floorPlan/floorPlan.types.mjs.map +1 -1
  510. package/dist/esm/common/floorPlan/legacySvg.mjs +1 -1
  511. package/dist/esm/common/floorPlan/legacySvg.mjs.map +1 -1
  512. package/dist/esm/common/hooks/useAnchorTracking.mjs +1 -1
  513. package/dist/esm/common/hooks/useAnchorTracking.mjs.map +1 -1
  514. package/dist/esm/common/hooks/useCoarsePointer.mjs +1 -1
  515. package/dist/esm/common/hooks/useCoarsePointer.mjs.map +1 -1
  516. package/dist/esm/common/hooks/useFocusBoundary.mjs +1 -1
  517. package/dist/esm/common/hooks/useFocusBoundary.mjs.map +1 -1
  518. package/dist/esm/common/hooks/useMediaQuery.mjs +1 -1
  519. package/dist/esm/common/hooks/useMediaQuery.mjs.map +1 -1
  520. package/dist/esm/common/hooks/useOverlay.mjs +1 -1
  521. package/dist/esm/common/hooks/useOverlay.mjs.map +1 -1
  522. package/dist/esm/common/hooks/useScrollEdges.mjs +2 -0
  523. package/dist/esm/common/hooks/useScrollEdges.mjs.map +1 -0
  524. package/dist/esm/common/hooks/useSheet.mjs +1 -1
  525. package/dist/esm/common/hooks/useSheet.mjs.map +1 -1
  526. package/dist/esm/common/hooks/useSwipeDismiss.mjs +1 -1
  527. package/dist/esm/common/hooks/useSwipeDismiss.mjs.map +1 -1
  528. package/dist/esm/common/hooks/useVisualViewportSize.mjs +1 -1
  529. package/dist/esm/common/hooks/useVisualViewportSize.mjs.map +1 -1
  530. package/dist/esm/common/iconPicker/iconPicker.mjs +1 -1
  531. package/dist/esm/common/iconPicker/iconPicker.mjs.map +1 -1
  532. package/dist/esm/common/iconPicker/iconPicker.module.mjs +1 -1
  533. package/dist/esm/common/idleManager/idleManager.mjs +1 -1
  534. package/dist/esm/common/idleManager/idleManager.mjs.map +1 -1
  535. package/dist/esm/common/infiniteBlock/useInfiniteScroll.mjs +2 -0
  536. package/dist/esm/common/infiniteBlock/useInfiniteScroll.mjs.map +1 -0
  537. package/dist/esm/common/input/input.mjs +1 -1
  538. package/dist/esm/common/input/input.mjs.map +1 -1
  539. package/dist/esm/common/input/input.module.mjs +1 -1
  540. package/dist/esm/common/input/input.module.mjs.map +1 -1
  541. package/dist/esm/common/input/input.types.mjs +1 -1
  542. package/dist/esm/common/input/input.types.mjs.map +1 -1
  543. package/dist/esm/common/inputDropdown/inputDropdown.mjs +1 -1
  544. package/dist/esm/common/inputDropdown/inputDropdown.mjs.map +1 -1
  545. package/dist/esm/common/inputDropdown/inputDropdown.module.mjs +1 -1
  546. package/dist/esm/common/interactableDiv/index.mjs +1 -1
  547. package/dist/esm/common/interactableDiv/index.mjs.map +1 -1
  548. package/dist/esm/common/interactableDiv/interactableDiv.mjs +1 -1
  549. package/dist/esm/common/interactableDiv/interactableDiv.mjs.map +1 -1
  550. package/dist/esm/common/interactableDiv/interactableDiv.module.mjs +1 -1
  551. package/dist/esm/common/kanbanBoard/KanbanBoard.mjs +1 -1
  552. package/dist/esm/common/kanbanBoard/KanbanBoard.mjs.map +1 -1
  553. package/dist/esm/common/kanbanBoard/KanbanColumn.mjs +1 -1
  554. package/dist/esm/common/kanbanBoard/KanbanColumn.mjs.map +1 -1
  555. package/dist/esm/common/kanbanBoard/KanbanItem.mjs +1 -1
  556. package/dist/esm/common/kanbanBoard/KanbanItem.mjs.map +1 -1
  557. package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs +1 -1
  558. package/dist/esm/common/kanbanBoard/kanbanBoard.utils.mjs +1 -1
  559. package/dist/esm/common/kanbanBoard/kanbanBoard.utils.mjs.map +1 -1
  560. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs +1 -1
  561. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs.map +1 -1
  562. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs +1 -1
  563. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs.map +1 -1
  564. package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs +1 -1
  565. package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs.map +1 -1
  566. package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs +1 -1
  567. package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs.map +1 -1
  568. package/dist/esm/common/klipyPicker/klipyPicker.mjs +1 -1
  569. package/dist/esm/common/klipyPicker/klipyPicker.mjs.map +1 -1
  570. package/dist/esm/common/klipyPicker/klipyPicker.module.mjs +1 -1
  571. package/dist/esm/common/loading/iconLoading/iconLoading.mjs +1 -1
  572. package/dist/esm/common/loading/iconLoading/iconLoading.mjs.map +1 -1
  573. package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs +1 -1
  574. package/dist/esm/common/loading/iconLoading/index.mjs +1 -1
  575. package/dist/esm/common/loading/iconLoading/index.mjs.map +1 -1
  576. package/dist/esm/common/loading/spinnerLoading/index.mjs +1 -1
  577. package/dist/esm/common/loading/spinnerLoading/index.mjs.map +1 -1
  578. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs +1 -1
  579. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs.map +1 -1
  580. package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs +1 -1
  581. package/dist/esm/common/maskedInput/mask.mjs +2 -0
  582. package/dist/esm/common/maskedInput/mask.mjs.map +1 -0
  583. package/dist/esm/common/maskedInput/maskedInput.mjs +2 -0
  584. package/dist/esm/common/maskedInput/maskedInput.mjs.map +1 -0
  585. package/dist/esm/common/menu/menu.mjs +1 -1
  586. package/dist/esm/common/menu/menu.mjs.map +1 -1
  587. package/dist/esm/common/menu/menu.module.mjs +1 -1
  588. package/dist/esm/common/menu/menu.types.mjs +1 -1
  589. package/dist/esm/common/menu/menu.types.mjs.map +1 -1
  590. package/dist/esm/common/modal/modal.mjs +1 -1
  591. package/dist/esm/common/modal/modal.mjs.map +1 -1
  592. package/dist/esm/common/modal/modal.module.mjs +1 -1
  593. package/dist/esm/common/modal/modal.module.mjs.map +1 -1
  594. package/dist/esm/common/multiSelect/multiSelect.mjs +1 -1
  595. package/dist/esm/common/multiSelect/multiSelect.mjs.map +1 -1
  596. package/dist/esm/common/multiSelect/multiSelect.module.mjs +1 -1
  597. package/dist/esm/common/multiSelect/multiSelect.module.mjs.map +1 -1
  598. package/dist/esm/common/numberInput/index.mjs +1 -1
  599. package/dist/esm/common/numberInput/index.mjs.map +1 -1
  600. package/dist/esm/common/numberInput/numberInput.mjs +1 -1
  601. package/dist/esm/common/numberInput/numberInput.mjs.map +1 -1
  602. package/dist/esm/common/numberInput/numberInput.module.mjs +1 -1
  603. package/dist/esm/common/numberInput/useStepRepeat.mjs +1 -1
  604. package/dist/esm/common/numberInput/useStepRepeat.mjs.map +1 -1
  605. package/dist/esm/common/optionPicker/optionPicker.mjs +1 -1
  606. package/dist/esm/common/optionPicker/optionPicker.mjs.map +1 -1
  607. package/dist/esm/common/optionPicker/optionPicker.module.mjs +1 -1
  608. package/dist/esm/common/otpInput/otpInput.mjs +1 -1
  609. package/dist/esm/common/otpInput/otpInput.mjs.map +1 -1
  610. package/dist/esm/common/otpInput/otpInput.module.mjs +1 -1
  611. package/dist/esm/common/otpInput/otpInput.types.mjs +1 -1
  612. package/dist/esm/common/otpInput/otpInput.types.mjs.map +1 -1
  613. package/dist/esm/common/overscroll/overscroll.mjs +1 -1
  614. package/dist/esm/common/overscroll/overscroll.mjs.map +1 -1
  615. package/dist/esm/common/overscroll/overscroll.module.mjs +1 -1
  616. package/dist/esm/common/pagination/pagination.mjs +1 -1
  617. package/dist/esm/common/pagination/pagination.mjs.map +1 -1
  618. package/dist/esm/common/pagination/pagination.module.mjs +1 -1
  619. package/dist/esm/common/planCanvas/planCanvas.mjs +1 -1
  620. package/dist/esm/common/planCanvas/planCanvas.mjs.map +1 -1
  621. package/dist/esm/common/planCanvas/planCanvas.module.mjs +1 -1
  622. package/dist/esm/common/popover/popover.mjs +1 -1
  623. package/dist/esm/common/popover/popover.mjs.map +1 -1
  624. package/dist/esm/common/popover/popover.module.mjs +1 -1
  625. package/dist/esm/common/popover/popover.types.mjs +1 -1
  626. package/dist/esm/common/popover/popover.types.mjs.map +1 -1
  627. package/dist/esm/common/popover/usePopoverPosition.mjs +1 -1
  628. package/dist/esm/common/popover/usePopoverPosition.mjs.map +1 -1
  629. package/dist/esm/common/progressBar/progressBar.mjs +1 -1
  630. package/dist/esm/common/progressBar/progressBar.mjs.map +1 -1
  631. package/dist/esm/common/progressBar/progressBar.module.mjs +1 -1
  632. package/dist/esm/common/progressBar/progressBar.module.mjs.map +1 -1
  633. package/dist/esm/common/radioGroup/radioGroup.mjs +1 -1
  634. package/dist/esm/common/radioGroup/radioGroup.mjs.map +1 -1
  635. package/dist/esm/common/radioGroup/radioGroup.module.mjs +1 -1
  636. package/dist/esm/common/radioGroup/radioGroup.module.mjs.map +1 -1
  637. package/dist/esm/common/radioGroup/radioGroup.types.mjs +1 -1
  638. package/dist/esm/common/radioGroup/radioGroup.types.mjs.map +1 -1
  639. package/dist/esm/common/rating/rating.mjs +1 -1
  640. package/dist/esm/common/rating/rating.mjs.map +1 -1
  641. package/dist/esm/common/rating/rating.module.mjs +1 -1
  642. package/dist/esm/common/rating/rating.module.mjs.map +1 -1
  643. package/dist/esm/common/revealLens/revealLens.mjs +1 -1
  644. package/dist/esm/common/revealLens/revealLens.mjs.map +1 -1
  645. package/dist/esm/common/revealLens/revealLens.module.mjs +1 -1
  646. package/dist/esm/common/ripple/ripple.mjs +1 -1
  647. package/dist/esm/common/ripple/ripple.mjs.map +1 -1
  648. package/dist/esm/common/ripple/ripple.module.mjs +1 -1
  649. package/dist/esm/common/ripple/ripple.module.mjs.map +1 -1
  650. package/dist/esm/common/roomDrawer/roomDrawer.mjs +1 -1
  651. package/dist/esm/common/roomDrawer/roomDrawer.mjs.map +1 -1
  652. package/dist/esm/common/roomDrawer/roomDrawer.module.mjs +1 -1
  653. package/dist/esm/common/roomDrawer/usePlanHistory.mjs +1 -1
  654. package/dist/esm/common/roomDrawer/usePlanHistory.mjs.map +1 -1
  655. package/dist/esm/common/roomViewer/roomViewer.mjs +1 -1
  656. package/dist/esm/common/roomViewer/roomViewer.mjs.map +1 -1
  657. package/dist/esm/common/roomViewer/roomViewer.module.mjs +1 -1
  658. package/dist/esm/common/scrollFade/scrollFade.mjs +2 -0
  659. package/dist/esm/common/scrollFade/scrollFade.mjs.map +1 -0
  660. package/dist/esm/common/scrollFade/scrollFade.module.mjs +2 -0
  661. package/dist/esm/common/scrollFade/scrollFade.module.mjs.map +1 -0
  662. package/dist/esm/common/scrollFade/scrollFade.types.mjs +2 -0
  663. package/dist/esm/common/scrollFade/scrollFade.types.mjs.map +1 -0
  664. package/dist/esm/common/scrollbarProvider/index.mjs +1 -1
  665. package/dist/esm/common/scrollbarProvider/index.mjs.map +1 -1
  666. package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs +1 -1
  667. package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs.map +1 -1
  668. package/dist/esm/common/scrollbarProvider/scrollbarProvider.module.mjs +1 -1
  669. package/dist/esm/common/searchInput/searchInput.mjs +1 -1
  670. package/dist/esm/common/searchInput/searchInput.mjs.map +1 -1
  671. package/dist/esm/common/searchInput/searchInput.module.mjs +1 -1
  672. package/dist/esm/common/sectionHeader/sectionHeader.mjs +1 -1
  673. package/dist/esm/common/sectionHeader/sectionHeader.mjs.map +1 -1
  674. package/dist/esm/common/sectionHeader/sectionHeader.module.mjs +1 -1
  675. package/dist/esm/common/sectionHeader/sectionHeader.types.mjs +1 -1
  676. package/dist/esm/common/sectionHeader/sectionHeader.types.mjs.map +1 -1
  677. package/dist/esm/common/sheetBackdrop/sheetBackdrop.mjs +1 -1
  678. package/dist/esm/common/sheetBackdrop/sheetBackdrop.mjs.map +1 -1
  679. package/dist/esm/common/skeleton/skeleton.mjs +1 -1
  680. package/dist/esm/common/skeleton/skeleton.mjs.map +1 -1
  681. package/dist/esm/common/skeleton/skeleton.module.mjs +1 -1
  682. package/dist/esm/common/skeleton/skeleton.types.mjs +1 -1
  683. package/dist/esm/common/skeleton/skeleton.types.mjs.map +1 -1
  684. package/dist/esm/common/slider/slider.mjs +1 -1
  685. package/dist/esm/common/slider/slider.mjs.map +1 -1
  686. package/dist/esm/common/slider/slider.module.mjs +1 -1
  687. package/dist/esm/common/splitButton/splitButton.mjs +1 -1
  688. package/dist/esm/common/splitButton/splitButton.mjs.map +1 -1
  689. package/dist/esm/common/splitButton/splitButton.module.mjs +1 -1
  690. package/dist/esm/common/stepper/stepper.mjs +1 -1
  691. package/dist/esm/common/stepper/stepper.mjs.map +1 -1
  692. package/dist/esm/common/stepper/stepper.module.mjs +1 -1
  693. package/dist/esm/common/stepper/stepper.types.mjs +1 -1
  694. package/dist/esm/common/stepper/stepper.types.mjs.map +1 -1
  695. package/dist/esm/common/sticky/sticky.mjs +1 -1
  696. package/dist/esm/common/sticky/sticky.mjs.map +1 -1
  697. package/dist/esm/common/sticky/sticky.module.mjs +1 -1
  698. package/dist/esm/common/sticky/stickyStack.mjs +1 -1
  699. package/dist/esm/common/sticky/stickyStack.mjs.map +1 -1
  700. package/dist/esm/common/styles/scrollFade.module.mjs +2 -0
  701. package/dist/esm/common/styles/scrollFade.module.mjs.map +1 -0
  702. package/dist/esm/common/styles/sheet.module.mjs +1 -1
  703. package/dist/esm/common/styles/sheet.module.mjs.map +1 -1
  704. package/dist/esm/common/switch/switch.mjs +1 -1
  705. package/dist/esm/common/switch/switch.mjs.map +1 -1
  706. package/dist/esm/common/switch/switch.module.mjs +1 -1
  707. package/dist/esm/common/switch/switch.module.mjs.map +1 -1
  708. package/dist/esm/common/tabHeader/tabHeader.mjs +1 -1
  709. package/dist/esm/common/tabHeader/tabHeader.mjs.map +1 -1
  710. package/dist/esm/common/tabHeader/tabHeader.module.mjs +1 -1
  711. package/dist/esm/common/textarea/textarea.mjs +1 -1
  712. package/dist/esm/common/textarea/textarea.mjs.map +1 -1
  713. package/dist/esm/common/themeProvider/defaultTheme.mjs +1 -1
  714. package/dist/esm/common/themeProvider/defaultTheme.mjs.map +1 -1
  715. package/dist/esm/common/themeProvider/lightTheme.mjs +2 -0
  716. package/dist/esm/common/themeProvider/lightTheme.mjs.map +1 -0
  717. package/dist/esm/common/themeProvider/theme.module.mjs +1 -1
  718. package/dist/esm/common/themeProvider/themeProvider.mjs +1 -1
  719. package/dist/esm/common/themeProvider/themeProvider.mjs.map +1 -1
  720. package/dist/esm/common/themeProvider/themeVariablesContext.mjs +1 -1
  721. package/dist/esm/common/themeProvider/themeVariablesContext.mjs.map +1 -1
  722. package/dist/esm/common/themeProvider/useTheme.mjs +1 -1
  723. package/dist/esm/common/themeProvider/useTheme.mjs.map +1 -1
  724. package/dist/esm/common/tilt/tilt.mjs +1 -1
  725. package/dist/esm/common/tilt/tilt.mjs.map +1 -1
  726. package/dist/esm/common/tilt/tilt.module.mjs +1 -1
  727. package/dist/esm/common/tilt/tiltMath.mjs +1 -1
  728. package/dist/esm/common/tilt/tiltMath.mjs.map +1 -1
  729. package/dist/esm/common/tiltGroup/tiltGroup.mjs +1 -1
  730. package/dist/esm/common/tiltGroup/tiltGroup.mjs.map +1 -1
  731. package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs +1 -1
  732. package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs.map +1 -1
  733. package/dist/esm/common/timeInput/components/clockDial/clockDial.module.mjs +1 -1
  734. package/dist/esm/common/timeInput/timeFunctions.mjs +1 -1
  735. package/dist/esm/common/timeInput/timeFunctions.mjs.map +1 -1
  736. package/dist/esm/common/timeInput/timeInput.mjs +1 -1
  737. package/dist/esm/common/timeInput/timeInput.mjs.map +1 -1
  738. package/dist/esm/common/timeInput/timeInput.module.mjs +1 -1
  739. package/dist/esm/common/timeline/timeline.mjs +1 -1
  740. package/dist/esm/common/timeline/timeline.mjs.map +1 -1
  741. package/dist/esm/common/timeline/timeline.module.mjs +1 -1
  742. package/dist/esm/common/timeline/timeline.types.mjs +1 -1
  743. package/dist/esm/common/timeline/timeline.types.mjs.map +1 -1
  744. package/dist/esm/common/timer/timer.chime.mjs +1 -1
  745. package/dist/esm/common/timer/timer.chime.mjs.map +1 -1
  746. package/dist/esm/common/timer/timer.mjs +1 -1
  747. package/dist/esm/common/timer/timer.mjs.map +1 -1
  748. package/dist/esm/common/timer/timer.module.mjs +1 -1
  749. package/dist/esm/common/toast/toast.mjs +1 -1
  750. package/dist/esm/common/toast/toast.mjs.map +1 -1
  751. package/dist/esm/common/toast/toast.module.mjs +1 -1
  752. package/dist/esm/common/toast/toast.module.mjs.map +1 -1
  753. package/dist/esm/common/toast/toastProvider.mjs +1 -1
  754. package/dist/esm/common/toast/toastProvider.mjs.map +1 -1
  755. package/dist/esm/common/toast/toastService.mjs +1 -1
  756. package/dist/esm/common/toast/toastService.mjs.map +1 -1
  757. package/dist/esm/common/tooltip/tooltip.mjs +1 -1
  758. package/dist/esm/common/tooltip/tooltip.mjs.map +1 -1
  759. package/dist/esm/common/tooltip/tooltip.module.mjs +1 -1
  760. package/dist/esm/common/tree/flattenTree.mjs +1 -1
  761. package/dist/esm/common/tree/flattenTree.mjs.map +1 -1
  762. package/dist/esm/common/tree/tree.mjs +1 -1
  763. package/dist/esm/common/tree/tree.mjs.map +1 -1
  764. package/dist/esm/common/tree/tree.module.mjs +1 -1
  765. package/dist/esm/common/tree/tree.module.mjs.map +1 -1
  766. package/dist/esm/common/utils/activationKey.mjs +1 -1
  767. package/dist/esm/common/utils/activationKey.mjs.map +1 -1
  768. package/dist/esm/common/utils/interactiveTarget.mjs +2 -0
  769. package/dist/esm/common/utils/interactiveTarget.mjs.map +1 -0
  770. package/dist/esm/common/utils/listNavigation.mjs +2 -0
  771. package/dist/esm/common/utils/listNavigation.mjs.map +1 -0
  772. package/dist/esm/common/utils/mergeRefs.mjs +2 -0
  773. package/dist/esm/common/utils/mergeRefs.mjs.map +1 -0
  774. package/dist/esm/common/utils/renderIcon.mjs +1 -1
  775. package/dist/esm/common/utils/renderIcon.mjs.map +1 -1
  776. package/dist/esm/common/utils/scrollAncestors.mjs +1 -1
  777. package/dist/esm/common/utils/scrollAncestors.mjs.map +1 -1
  778. package/dist/esm/common/utils/visualViewport.mjs +1 -1
  779. package/dist/esm/common/utils/visualViewport.mjs.map +1 -1
  780. package/dist/esm/common/virtualList/useColumnResize.mjs +1 -1
  781. package/dist/esm/common/virtualList/useColumnResize.mjs.map +1 -1
  782. package/dist/esm/common/virtualList/useColumns.mjs +1 -1
  783. package/dist/esm/common/virtualList/useColumns.mjs.map +1 -1
  784. package/dist/esm/common/virtualList/useHeaderNavigation.mjs +1 -1
  785. package/dist/esm/common/virtualList/useHeaderNavigation.mjs.map +1 -1
  786. package/dist/esm/common/virtualList/useRowDrag.mjs +1 -1
  787. package/dist/esm/common/virtualList/useRowDrag.mjs.map +1 -1
  788. package/dist/esm/common/virtualList/useRowNavigation.mjs +1 -1
  789. package/dist/esm/common/virtualList/useRowNavigation.mjs.map +1 -1
  790. package/dist/esm/common/virtualList/useSelection.mjs +1 -1
  791. package/dist/esm/common/virtualList/useSelection.mjs.map +1 -1
  792. package/dist/esm/common/virtualList/useSorting.mjs +1 -1
  793. package/dist/esm/common/virtualList/useSorting.mjs.map +1 -1
  794. package/dist/esm/common/virtualList/useVirtualWindow.mjs +1 -1
  795. package/dist/esm/common/virtualList/useVirtualWindow.mjs.map +1 -1
  796. package/dist/esm/common/virtualList/virtualList.mjs +1 -1
  797. package/dist/esm/common/virtualList/virtualList.mjs.map +1 -1
  798. package/dist/esm/common/virtualList/virtualList.module.mjs +1 -1
  799. package/dist/esm/common/virtualList/virtualList.utils.mjs +1 -1
  800. package/dist/esm/common/virtualList/virtualList.utils.mjs.map +1 -1
  801. package/dist/esm/common/virtualList/virtualListHeader.mjs +1 -1
  802. package/dist/esm/common/virtualList/virtualListHeader.mjs.map +1 -1
  803. package/dist/esm/common/virtualList/virtualRow.mjs +1 -1
  804. package/dist/esm/common/virtualList/virtualRow.mjs.map +1 -1
  805. package/dist/esm/common/wizard/wizard.mjs +1 -1
  806. package/dist/esm/common/wizard/wizard.mjs.map +1 -1
  807. package/dist/esm/common/wizard/wizard.module.mjs +1 -1
  808. package/dist/esm/common/wizard/wizard.module.mjs.map +1 -1
  809. package/dist/esm/hooks/useWindowSize.mjs +1 -1
  810. package/dist/esm/hooks/useWindowSize.mjs.map +1 -1
  811. package/dist/esm/index.mjs +1 -1
  812. package/dist/esm/og.png +0 -0
  813. package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs +1 -1
  814. package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs.map +1 -1
  815. package/dist/esm/services/formValidation/index.mjs +1 -1
  816. package/dist/esm/services/formValidation/useFormValidatorGroup.mjs +1 -1
  817. package/dist/esm/services/formValidation/useFormValidatorGroup.mjs.map +1 -1
  818. package/dist/esm/services/formValidation/validatableComponent.mjs +1 -1
  819. package/dist/esm/services/formValidation/validatableComponent.mjs.map +1 -1
  820. package/dist/esm/services/klipy.mjs +1 -1
  821. package/dist/esm/services/klipy.mjs.map +1 -1
  822. package/dist/esm/services/localization.mjs +1 -1
  823. package/dist/esm/services/localization.mjs.map +1 -1
  824. package/dist/index.cjs +3 -3
  825. package/dist/index.cjs.map +1 -1
  826. package/dist/mcp.js +21432 -56
  827. package/dist/og.png +0 -0
  828. package/dist/style.css +1 -1
  829. package/dist/types/common/accordion/accordion.d.ts +1 -1
  830. package/dist/types/common/accordion/accordion.types.d.ts +1 -1
  831. package/dist/types/common/accordion/index.d.ts +2 -2
  832. package/dist/types/common/actionButtons/actionButtons.d.ts +1 -1
  833. package/dist/types/common/actionButtons/actionButtons.types.d.ts +3 -3
  834. package/dist/types/common/actionButtons/index.d.ts +2 -2
  835. package/dist/types/common/actionIcon/actionIcon.d.ts +1 -1
  836. package/dist/types/common/actionIcon/actionIcon.types.d.ts +5 -3
  837. package/dist/types/common/actionIcon/index.d.ts +2 -2
  838. package/dist/types/common/alert/alert.d.ts +1 -1
  839. package/dist/types/common/alert/alert.types.d.ts +2 -2
  840. package/dist/types/common/alert/index.d.ts +2 -2
  841. package/dist/types/common/animatedIcon/animatedIcon.d.ts +1 -1
  842. package/dist/types/common/animatedIcon/animatedIcon.types.d.ts +1 -1
  843. package/dist/types/common/animatedIcon/index.d.ts +2 -2
  844. package/dist/types/common/animatedLogo/animatedLogo.d.ts +1 -1
  845. package/dist/types/common/animatedLogo/animatedLogo.types.d.ts +1 -1
  846. package/dist/types/common/animatedLogo/index.d.ts +2 -2
  847. package/dist/types/common/animatedText/animatedText.d.ts +1 -1
  848. package/dist/types/common/animatedText/animatedText.types.d.ts +1 -1
  849. package/dist/types/common/animatedText/index.d.ts +2 -2
  850. package/dist/types/common/avatar/avatar.d.ts +1 -1
  851. package/dist/types/common/avatar/avatar.types.d.ts +2 -2
  852. package/dist/types/common/avatar/avatarGroup.d.ts +1 -1
  853. package/dist/types/common/avatar/index.d.ts +3 -3
  854. package/dist/types/common/badge/badge.d.ts +1 -1
  855. package/dist/types/common/badge/badge.types.d.ts +1 -1
  856. package/dist/types/common/badge/index.d.ts +2 -2
  857. package/dist/types/common/bodyEnd/bodyEnd.d.ts +1 -1
  858. package/dist/types/common/bodyEnd/index.d.ts +2 -2
  859. package/dist/types/common/breadcrumb/breadcrumb.d.ts +1 -1
  860. package/dist/types/common/breadcrumb/breadcrumb.types.d.ts +2 -2
  861. package/dist/types/common/breadcrumb/index.d.ts +2 -2
  862. package/dist/types/common/button/button.d.ts +1 -1
  863. package/dist/types/common/button/button.types.d.ts +2 -2
  864. package/dist/types/common/button/index.d.ts +2 -2
  865. package/dist/types/common/buttonGroup/buttonGroup.d.ts +1 -1
  866. package/dist/types/common/buttonGroup/buttonGroup.types.d.ts +1 -1
  867. package/dist/types/common/buttonGroup/index.d.ts +2 -2
  868. package/dist/types/common/card/Card.d.ts +1 -1
  869. package/dist/types/common/card/CardActions.d.ts +1 -1
  870. package/dist/types/common/card/CardContent.d.ts +1 -1
  871. package/dist/types/common/card/CardHeader.d.ts +1 -1
  872. package/dist/types/common/card/CardMedia.d.ts +1 -1
  873. package/dist/types/common/card/card.types.d.ts +6 -4
  874. package/dist/types/common/card/index.d.ts +6 -6
  875. package/dist/types/common/carousel/carousel.d.ts +1 -1
  876. package/dist/types/common/carousel/carousel.types.d.ts +1 -1
  877. package/dist/types/common/carousel/index.d.ts +2 -2
  878. package/dist/types/common/checkbox/checkbox.d.ts +1 -1
  879. package/dist/types/common/checkbox/checkbox.types.d.ts +5 -3
  880. package/dist/types/common/checkbox/index.d.ts +2 -2
  881. package/dist/types/common/chip/chip.d.ts +1 -1
  882. package/dist/types/common/chip/chip.types.d.ts +1 -1
  883. package/dist/types/common/chip/chipContainer.d.ts +1 -1
  884. package/dist/types/common/chip/index.d.ts +3 -3
  885. package/dist/types/common/colorPicker/colorPicker.d.ts +1 -1
  886. package/dist/types/common/colorPicker/colorPicker.types.d.ts +5 -1
  887. package/dist/types/common/colorPicker/index.d.ts +2 -2
  888. package/dist/types/common/configProvider/configProvider.d.ts +2 -2
  889. package/dist/types/common/configProvider/configProvider.types.d.ts +47 -43
  890. package/dist/types/common/configProvider/index.d.ts +6 -6
  891. package/dist/types/common/configProvider/useComponentDefaults.d.ts +1 -1
  892. package/dist/types/common/configProvider/useLabels.d.ts +1 -1
  893. package/dist/types/common/configProvider/usePresentationDefault.d.ts +1 -1
  894. package/dist/types/common/confirmModal/confirmModal.d.ts +1 -1
  895. package/dist/types/common/confirmModal/confirmModal.types.d.ts +2 -2
  896. package/dist/types/common/confirmModal/index.d.ts +2 -2
  897. package/dist/types/common/datePicker/components/datePickerMonth/datePickerMonth.d.ts +1 -1
  898. package/dist/types/common/datePicker/components/datePickerMonth/index.d.ts +1 -1
  899. package/dist/types/common/datePicker/datePicker.d.ts +1 -1
  900. package/dist/types/common/datePicker/datePicker.types.d.ts +2 -2
  901. package/dist/types/common/datePicker/index.d.ts +2 -2
  902. package/dist/types/common/divider/divider.d.ts +1 -1
  903. package/dist/types/common/divider/divider.types.d.ts +1 -1
  904. package/dist/types/common/divider/index.d.ts +2 -2
  905. package/dist/types/common/drawer/drawer.d.ts +1 -1
  906. package/dist/types/common/drawer/drawer.types.d.ts +1 -1
  907. package/dist/types/common/drawer/index.d.ts +2 -2
  908. package/dist/types/common/dropZone/dropZone.d.ts +1 -1
  909. package/dist/types/common/dropZone/dropZone.types.d.ts +1 -1
  910. package/dist/types/common/dropZone/index.d.ts +2 -2
  911. package/dist/types/common/dropdown/dropdown.d.ts +1 -1
  912. package/dist/types/common/dropdown/dropdown.types.d.ts +3 -3
  913. package/dist/types/common/dropdown/index.d.ts +2 -2
  914. package/dist/types/common/emptyState/emptyState.d.ts +1 -1
  915. package/dist/types/common/emptyState/emptyState.types.d.ts +2 -2
  916. package/dist/types/common/emptyState/index.d.ts +2 -2
  917. package/dist/types/common/errorBoundary/errorBoundary.d.ts +1 -1
  918. package/dist/types/common/errorBoundary/errorBoundary.types.d.ts +1 -1
  919. package/dist/types/common/errorBoundary/index.d.ts +2 -2
  920. package/dist/types/common/fab/components/fabBase/fabBase.d.ts +1 -1
  921. package/dist/types/common/fab/components/fabBase/fabBase.types.d.ts +1 -1
  922. package/dist/types/common/fab/components/fabBase/index.d.ts +1 -1
  923. package/dist/types/common/fab/fab.d.ts +1 -1
  924. package/dist/types/common/fab/fab.types.d.ts +2 -2
  925. package/dist/types/common/fab/index.d.ts +2 -2
  926. package/dist/types/common/flip/flip.d.ts +2 -2
  927. package/dist/types/common/flip/flip.types.d.ts +4 -2
  928. package/dist/types/common/flip/index.d.ts +2 -2
  929. package/dist/types/common/floorPlan/floorPlan.faces.d.ts +2 -2
  930. package/dist/types/common/floorPlan/floorPlan.fixtures.d.ts +1 -1
  931. package/dist/types/common/floorPlan/floorPlan.geometry.d.ts +1 -1
  932. package/dist/types/common/floorPlan/floorPlan.graph.d.ts +1 -1
  933. package/dist/types/common/floorPlan/floorPlan.hit.d.ts +1 -1
  934. package/dist/types/common/floorPlan/floorPlan.json.d.ts +1 -1
  935. package/dist/types/common/floorPlan/floorPlan.mesh.d.ts +1 -1
  936. package/dist/types/common/floorPlan/floorPlan.path.d.ts +1 -1
  937. package/dist/types/common/floorPlan/floorPlan.plan.d.ts +1 -1
  938. package/dist/types/common/floorPlan/floorPlan.rooms.d.ts +1 -1
  939. package/dist/types/common/floorPlan/floorPlan.snap.d.ts +1 -1
  940. package/dist/types/common/floorPlan/floorPlan.triangulate.d.ts +1 -1
  941. package/dist/types/common/floorPlan/index.d.ts +22 -22
  942. package/dist/types/common/floorPlan/legacySvg.d.ts +2 -2
  943. package/dist/types/common/hooks/useScrollEdges.d.ts +18 -0
  944. package/dist/types/common/hooks/useSheet.d.ts +1 -1
  945. package/dist/types/common/iconPicker/iconPicker.d.ts +1 -1
  946. package/dist/types/common/iconPicker/iconPicker.types.d.ts +2 -2
  947. package/dist/types/common/iconPicker/index.d.ts +2 -1
  948. package/dist/types/common/idleManager/idleManager.d.ts +1 -1
  949. package/dist/types/common/idleManager/index.d.ts +2 -1
  950. package/dist/types/common/infiniteBlock/useInfiniteScroll.d.ts +5 -0
  951. package/dist/types/common/input/index.d.ts +2 -2
  952. package/dist/types/common/input/input.d.ts +1 -1
  953. package/dist/types/common/input/input.types.d.ts +7 -2
  954. package/dist/types/common/inputDropdown/index.d.ts +2 -1
  955. package/dist/types/common/inputDropdown/inputDropdown.d.ts +1 -1
  956. package/dist/types/common/inputDropdown/inputDropdown.types.d.ts +2 -2
  957. package/dist/types/common/interactableDiv/index.d.ts +1 -1
  958. package/dist/types/common/interactableDiv/interactableDiv.d.ts +4 -3
  959. package/dist/types/common/kanbanBoard/KanbanBoard.d.ts +1 -1
  960. package/dist/types/common/kanbanBoard/KanbanColumn.d.ts +1 -1
  961. package/dist/types/common/kanbanBoard/KanbanItem.d.ts +1 -1
  962. package/dist/types/common/kanbanBoard/index.d.ts +3 -3
  963. package/dist/types/common/kanbanBoard/kanbanBoard.types.d.ts +1 -1
  964. package/dist/types/common/kanbanBoard/kanbanBoard.utils.d.ts +1 -1
  965. package/dist/types/common/klipyPicker/components/gifPreview/gifPreview.d.ts +1 -1
  966. package/dist/types/common/klipyPicker/components/gifPreview/gifPreview.types.d.ts +1 -1
  967. package/dist/types/common/klipyPicker/components/gifPreview/index.d.ts +1 -1
  968. package/dist/types/common/klipyPicker/components/gifView/gifView.d.ts +1 -1
  969. package/dist/types/common/klipyPicker/components/gifView/index.d.ts +1 -1
  970. package/dist/types/common/klipyPicker/index.d.ts +2 -2
  971. package/dist/types/common/klipyPicker/klipyPicker.d.ts +1 -1
  972. package/dist/types/common/klipyPicker/klipyPicker.types.d.ts +1 -1
  973. package/dist/types/common/loading/index.d.ts +2 -2
  974. package/dist/types/common/loading/spinnerLoading/index.d.ts +1 -1
  975. package/dist/types/common/loading/spinnerLoading/spinnerLoading.d.ts +0 -5
  976. package/dist/types/common/maskedInput/index.d.ts +2 -0
  977. package/dist/types/common/maskedInput/mask.d.ts +48 -0
  978. package/dist/types/common/maskedInput/maskedInput.d.ts +13 -0
  979. package/dist/types/common/maskedInput/maskedInput.types.d.ts +38 -0
  980. package/dist/types/common/menu/index.d.ts +2 -2
  981. package/dist/types/common/menu/menu.d.ts +1 -1
  982. package/dist/types/common/menu/menu.types.d.ts +4 -4
  983. package/dist/types/common/modal/index.d.ts +2 -2
  984. package/dist/types/common/modal/modal.d.ts +1 -1
  985. package/dist/types/common/modal/modal.types.d.ts +6 -3
  986. package/dist/types/common/multiSelect/index.d.ts +2 -2
  987. package/dist/types/common/multiSelect/multiSelect.d.ts +1 -1
  988. package/dist/types/common/multiSelect/multiSelect.types.d.ts +3 -3
  989. package/dist/types/common/numberInput/index.d.ts +2 -2
  990. package/dist/types/common/numberInput/numberInput.d.ts +2 -2
  991. package/dist/types/common/numberInput/numberInput.types.d.ts +4 -2
  992. package/dist/types/common/optionPicker/index.d.ts +2 -2
  993. package/dist/types/common/optionPicker/optionPicker.d.ts +1 -1
  994. package/dist/types/common/optionPicker/optionPicker.types.d.ts +1 -1
  995. package/dist/types/common/otpInput/index.d.ts +2 -2
  996. package/dist/types/common/otpInput/otpInput.d.ts +1 -1
  997. package/dist/types/common/otpInput/otpInput.types.d.ts +4 -2
  998. package/dist/types/common/overscroll/index.d.ts +2 -2
  999. package/dist/types/common/overscroll/overscroll.d.ts +1 -1
  1000. package/dist/types/common/pagination/index.d.ts +2 -2
  1001. package/dist/types/common/pagination/pagination.d.ts +1 -1
  1002. package/dist/types/common/pagination/pagination.types.d.ts +2 -2
  1003. package/dist/types/common/planCanvas/index.d.ts +2 -2
  1004. package/dist/types/common/planCanvas/planCanvas.d.ts +2 -2
  1005. package/dist/types/common/planCanvas/planCanvas.types.d.ts +5 -3
  1006. package/dist/types/common/popover/index.d.ts +2 -2
  1007. package/dist/types/common/popover/popover.d.ts +1 -1
  1008. package/dist/types/common/popover/popover.types.d.ts +2 -2
  1009. package/dist/types/common/popover/usePopoverPosition.d.ts +1 -1
  1010. package/dist/types/common/progressBar/index.d.ts +2 -2
  1011. package/dist/types/common/progressBar/progressBar.d.ts +1 -1
  1012. package/dist/types/common/progressBar/progressBar.types.d.ts +1 -1
  1013. package/dist/types/common/radioGroup/index.d.ts +2 -2
  1014. package/dist/types/common/radioGroup/radioGroup.d.ts +1 -1
  1015. package/dist/types/common/radioGroup/radioGroup.types.d.ts +3 -3
  1016. package/dist/types/common/rating/index.d.ts +2 -2
  1017. package/dist/types/common/rating/rating.d.ts +1 -1
  1018. package/dist/types/common/rating/rating.types.d.ts +2 -2
  1019. package/dist/types/common/revealLens/index.d.ts +2 -2
  1020. package/dist/types/common/revealLens/revealLens.d.ts +1 -1
  1021. package/dist/types/common/revealLens/revealLens.types.d.ts +1 -1
  1022. package/dist/types/common/ripple/index.d.ts +2 -2
  1023. package/dist/types/common/ripple/ripple.d.ts +2 -2
  1024. package/dist/types/common/ripple/ripple.types.d.ts +2 -1
  1025. package/dist/types/common/roomDrawer/index.d.ts +2 -2
  1026. package/dist/types/common/roomDrawer/roomDrawer.d.ts +2 -2
  1027. package/dist/types/common/roomDrawer/roomDrawer.types.d.ts +6 -4
  1028. package/dist/types/common/roomDrawer/usePlanHistory.d.ts +2 -2
  1029. package/dist/types/common/roomViewer/index.d.ts +2 -2
  1030. package/dist/types/common/roomViewer/roomViewer.d.ts +2 -2
  1031. package/dist/types/common/roomViewer/roomViewer.types.d.ts +6 -4
  1032. package/dist/types/common/scrollFade/index.d.ts +2 -0
  1033. package/dist/types/common/scrollFade/scrollFade.d.ts +4 -0
  1034. package/dist/types/common/scrollFade/scrollFade.types.d.ts +20 -0
  1035. package/dist/types/common/scrollbarProvider/index.d.ts +1 -1
  1036. package/dist/types/common/searchInput/index.d.ts +2 -2
  1037. package/dist/types/common/searchInput/searchInput.d.ts +2 -2
  1038. package/dist/types/common/searchInput/searchInput.types.d.ts +4 -1
  1039. package/dist/types/common/sectionHeader/index.d.ts +2 -2
  1040. package/dist/types/common/sectionHeader/sectionHeader.d.ts +1 -1
  1041. package/dist/types/common/sectionHeader/sectionHeader.types.d.ts +3 -3
  1042. package/dist/types/common/sheetBackdrop/index.d.ts +2 -2
  1043. package/dist/types/common/sheetBackdrop/sheetBackdrop.d.ts +1 -1
  1044. package/dist/types/common/skeleton/index.d.ts +2 -2
  1045. package/dist/types/common/skeleton/skeleton.d.ts +1 -1
  1046. package/dist/types/common/skeleton/skeleton.types.d.ts +1 -1
  1047. package/dist/types/common/slider/index.d.ts +2 -2
  1048. package/dist/types/common/slider/slider.d.ts +1 -1
  1049. package/dist/types/common/slider/slider.types.d.ts +2 -2
  1050. package/dist/types/common/splitButton/index.d.ts +2 -2
  1051. package/dist/types/common/splitButton/splitButton.d.ts +1 -1
  1052. package/dist/types/common/splitButton/splitButton.types.d.ts +4 -4
  1053. package/dist/types/common/stepper/index.d.ts +2 -2
  1054. package/dist/types/common/stepper/stepper.d.ts +1 -1
  1055. package/dist/types/common/stepper/stepper.types.d.ts +2 -2
  1056. package/dist/types/common/sticky/index.d.ts +1 -1
  1057. package/dist/types/common/sticky/sticky.d.ts +1 -1
  1058. package/dist/types/common/sticky/sticky.types.d.ts +1 -1
  1059. package/dist/types/common/switch/index.d.ts +2 -2
  1060. package/dist/types/common/switch/switch.d.ts +1 -1
  1061. package/dist/types/common/switch/switch.types.d.ts +5 -3
  1062. package/dist/types/common/tabHeader/index.d.ts +2 -2
  1063. package/dist/types/common/tabHeader/tabHeader.d.ts +1 -1
  1064. package/dist/types/common/tabHeader/tabHeader.types.d.ts +2 -2
  1065. package/dist/types/common/textarea/index.d.ts +2 -2
  1066. package/dist/types/common/textarea/textarea.d.ts +1 -1
  1067. package/dist/types/common/textarea/textarea.types.d.ts +1 -1
  1068. package/dist/types/common/themeProvider/defaultTheme.d.ts +1 -1
  1069. package/dist/types/common/themeProvider/index.d.ts +4 -3
  1070. package/dist/types/common/themeProvider/lightTheme.d.ts +13 -0
  1071. package/dist/types/common/themeProvider/theme.types.d.ts +28 -0
  1072. package/dist/types/common/themeProvider/themeProvider.d.ts +1 -1
  1073. package/dist/types/common/tilt/index.d.ts +4 -4
  1074. package/dist/types/common/tilt/tilt.d.ts +2 -2
  1075. package/dist/types/common/tilt/tilt.types.d.ts +5 -3
  1076. package/dist/types/common/tiltGroup/index.d.ts +3 -3
  1077. package/dist/types/common/tiltGroup/tiltGroup.d.ts +1 -1
  1078. package/dist/types/common/tiltGroup/tiltGroup.types.d.ts +1 -1
  1079. package/dist/types/common/timeInput/components/clockDial/clockDial.d.ts +1 -1
  1080. package/dist/types/common/timeInput/components/clockDial/clockDial.types.d.ts +3 -3
  1081. package/dist/types/common/timeInput/components/clockDial/index.d.ts +1 -1
  1082. package/dist/types/common/timeInput/index.d.ts +1 -1
  1083. package/dist/types/common/timeInput/timeInput.d.ts +1 -1
  1084. package/dist/types/common/timeInput/timeInput.types.d.ts +2 -2
  1085. package/dist/types/common/timeline/index.d.ts +2 -2
  1086. package/dist/types/common/timeline/timeline.d.ts +1 -1
  1087. package/dist/types/common/timeline/timeline.types.d.ts +2 -2
  1088. package/dist/types/common/timer/index.d.ts +2 -2
  1089. package/dist/types/common/timer/timer.d.ts +2 -2
  1090. package/dist/types/common/timer/timer.types.d.ts +5 -3
  1091. package/dist/types/common/toast/index.d.ts +3 -3
  1092. package/dist/types/common/toast/toast.d.ts +1 -1
  1093. package/dist/types/common/toast/toast.types.d.ts +1 -1
  1094. package/dist/types/common/toast/toastProvider.d.ts +1 -1
  1095. package/dist/types/common/toast/toastService.d.ts +1 -1
  1096. package/dist/types/common/tooltip/index.d.ts +2 -2
  1097. package/dist/types/common/tooltip/tooltip.d.ts +2 -2
  1098. package/dist/types/common/tooltip/tooltip.types.d.ts +7 -0
  1099. package/dist/types/common/tree/flattenTree.d.ts +1 -1
  1100. package/dist/types/common/tree/index.d.ts +3 -3
  1101. package/dist/types/common/tree/tree.d.ts +1 -1
  1102. package/dist/types/common/tree/tree.types.d.ts +2 -2
  1103. package/dist/types/common/types/actions.types.d.ts +1 -1
  1104. package/dist/types/common/types/baseProps.types.d.ts +6 -0
  1105. package/dist/types/common/types/slots.types.d.ts +1 -1
  1106. package/dist/types/common/utils/interactiveTarget.d.ts +7 -0
  1107. package/dist/types/common/utils/listNavigation.d.ts +49 -0
  1108. package/dist/types/common/utils/mergeRefs.d.ts +12 -0
  1109. package/dist/types/common/utils/renderIcon.d.ts +1 -1
  1110. package/dist/types/common/virtualList/index.d.ts +2 -2
  1111. package/dist/types/common/virtualList/useColumnResize.d.ts +1 -1
  1112. package/dist/types/common/virtualList/useColumns.d.ts +1 -1
  1113. package/dist/types/common/virtualList/useRowDrag.d.ts +1 -1
  1114. package/dist/types/common/virtualList/useRowNavigation.d.ts +1 -1
  1115. package/dist/types/common/virtualList/useSorting.d.ts +1 -1
  1116. package/dist/types/common/virtualList/useVirtualWindow.d.ts +1 -1
  1117. package/dist/types/common/virtualList/virtualList.d.ts +3 -5
  1118. package/dist/types/common/virtualList/virtualList.types.d.ts +4 -2
  1119. package/dist/types/common/virtualList/virtualList.utils.d.ts +1 -1
  1120. package/dist/types/common/virtualList/virtualListHeader.d.ts +4 -4
  1121. package/dist/types/common/virtualList/virtualRow.d.ts +1 -1
  1122. package/dist/types/common/wizard/index.d.ts +1 -1
  1123. package/dist/types/common/wizard/wizard.d.ts +1 -1
  1124. package/dist/types/common/wizard/wizard.types.d.ts +1 -1
  1125. package/dist/types/index.d.ts +153 -153
  1126. package/dist/types/services/formValidation/index.d.ts +3 -3
  1127. package/dist/types/services/formValidation/useFormValidatorGroup.d.ts +1 -1
  1128. package/docs/Accordion.md +9 -0
  1129. package/docs/ActionIcon.md +3 -0
  1130. package/docs/CLAUDE.md +123 -193
  1131. package/docs/Card.md +2 -1
  1132. package/docs/Checkbox.md +1 -0
  1133. package/docs/ColorPicker.md +12 -2
  1134. package/docs/Divider.md +2 -0
  1135. package/docs/Dropdown.md +20 -0
  1136. package/docs/IdleManager.md +38 -8
  1137. package/docs/Input.md +1 -0
  1138. package/docs/InputDropdown.md +11 -0
  1139. package/docs/InteractableDiv.md +7 -1
  1140. package/docs/KlipyPicker.md +2 -2
  1141. package/docs/Loading.md +3 -1
  1142. package/docs/Menu.md +2 -0
  1143. package/docs/Modal.md +34 -10
  1144. package/docs/MultiSelect.md +2 -2
  1145. package/docs/NumberInput.md +1 -0
  1146. package/docs/OtpInput.md +1 -0
  1147. package/docs/Pagination.md +1 -1
  1148. package/docs/Popover.md +2 -0
  1149. package/docs/RadioGroup.md +1 -1
  1150. package/docs/Rating.md +2 -0
  1151. package/docs/Ripple.md +3 -0
  1152. package/docs/RoomViewer.md +3 -5
  1153. package/docs/ScrollFade.md +77 -0
  1154. package/docs/ScrollbarProvider.md +2 -0
  1155. package/docs/SearchInput.md +1 -0
  1156. package/docs/Slider.md +1 -1
  1157. package/docs/Switch.md +1 -0
  1158. package/docs/Textarea.md +1 -0
  1159. package/docs/ThemeProvider.md +30 -1
  1160. package/docs/Timer.md +1 -1
  1161. package/docs/Tooltip.md +23 -1
  1162. package/docs/Wizard.md +1 -1
  1163. package/package.json +39 -16
  1164. package/dist/esm/common/infiniteBlock/infiniteBlock.mjs +0 -2
  1165. package/dist/esm/common/infiniteBlock/infiniteBlock.mjs.map +0 -1
  1166. package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs +0 -2
  1167. package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs.map +0 -1
  1168. package/dist/types/common/infiniteBlock/index.d.ts +0 -1
  1169. package/dist/types/common/infiniteBlock/infiniteBlock.d.ts +0 -4
  1170. package/dist/types/common/infiniteBlock/infiniteBlock.types.d.ts +0 -13
  1171. package/docs/Icon.md +0 -27
  1172. package/docs/InfiniteBlock.md +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTheme.mjs","names":[],"sources":["../../../../package/common/themeProvider/defaultTheme.ts"],"sourcesContent":["import type { Theme } from './theme.types';\n\n/**\n * Built-in default theme used by ThemeProvider when no `themes` prop is\n * supplied. Provides a complete set of CSS variables so the component\n * library renders correctly out of the box.\n */\nexport const defaultTheme: Theme = {\n id: 'default',\n variables: {\n '--grey': '#8A8A8A',\n '--lightgrey': '#e0e0e0',\n '--lightergrey': '#B1B1B1',\n '--white': '#FFFFFF',\n '--red': '#D6002A',\n '--lighter-red': '#ffeae9',\n '--green': '#287626',\n '--lighter-green': '#C4FFC9',\n '--blue': '#5873d5',\n '--lighter-blue': '#C6DBFF',\n '--black': 'black',\n '--orange': '#ff7f50',\n '--lighter-orange': '#ffe5d9',\n\n '--primary-color': '#8184d6',\n '--primary-accent': '#90CAF9',\n '--primary-lighter': '#9a9ce4',\n '--accent-color': 'var(--grey)',\n '--accent-color-light': 'var(--lightgrey)',\n\n '--text-color': 'var(--white)',\n '--text-dark': 'var(--lightergrey)',\n '--text-light': 'var(--lightergrey)',\n '--text-on-primary': 'var(--white)',\n '--text-on-delete': 'var(--white)',\n '--border-color': '#656574',\n '--focus-border-color': 'var(--primary-color)',\n\n '--background': '#393945',\n '--background-accent': '#33333c',\n '--background-accent-dark': 'var(--grey)',\n '--background-accent-light': '#484856',\n '--background-modal': '#484856',\n\n '--success-color': 'var(--green)',\n '--success-lighter': 'var(--lighter-green)',\n '--error-color': 'var(--red)',\n '--error-lighter': 'var(--lighter-red)',\n '--required-mark-color': 'var(--error-color)',\n '--info-color': 'var(--blue)',\n '--info-lighter': 'var(--lighter-blue)',\n '--warn-color': 'var(--orange)',\n '--warn-lighter': 'var(--lighter-orange)',\n\n '--default-font-size': '16px',\n '--text-small-font-size': '14px',\n '--header-font-size': '24px',\n '--header-medium-font-size': '18px',\n '--header-small-font-size': '16px',\n\n '--default-font-weight': '400',\n '--header-font-weight': '600',\n\n '--input-background': 'transparent',\n '--input-icon-color': 'var(--text-color)',\n '--error-border-color': 'var(--red)',\n\n '--button-default-color': 'var(--primary-color)',\n '--button-default-border': '1px solid var(--primary-color)',\n\n '--default-border-radius': '8px',\n '--padding-sides': '15px',\n '--margin-top': '10px',\n\n '--default-font': \"'Inter', sans-serif\",\n '--themed-font': \"'Inter', sans-serif\",\n\n '--card-shadow': '0 3px 1px -2px rgb(0 0 0 / 20%), 0 2px 2px 0 rgb(0 0 0 / 14%), 0 1px 5px 0 rgb(0 0 0 / 12%)',\n\n '--background-card-elevated': 'var(--background-accent-light)',\n '--background-card-outlined': 'transparent',\n '--background-card-filled': 'var(--background-accent)',\n\n '--spacing-s': '4px',\n '--spacing-m': '8px',\n '--spacing-l': '16px',\n },\n};\n"],"mappings":"AAOA,IAAa,EAAsB,CACjC,GAAI,UACJ,UAAW,CACT,SAAU,UACV,cAAe,UACf,gBAAiB,UACjB,UAAW,UACX,QAAS,UACT,gBAAiB,UACjB,UAAW,UACX,kBAAmB,UACnB,SAAU,UACV,iBAAkB,UAClB,UAAW,QACX,WAAY,UACZ,mBAAoB,UAEpB,kBAAmB,UACnB,mBAAoB,UACpB,oBAAqB,UACrB,iBAAkB,cAClB,uBAAwB,mBAExB,eAAgB,eAChB,cAAe,qBACf,eAAgB,qBAChB,oBAAqB,eACrB,mBAAoB,eACpB,iBAAkB,UAClB,uBAAwB,uBAExB,eAAgB,UAChB,sBAAuB,UACvB,2BAA4B,cAC5B,4BAA6B,UAC7B,qBAAsB,UAEtB,kBAAmB,eACnB,oBAAqB,uBACrB,gBAAiB,aACjB,kBAAmB,qBACnB,wBAAyB,qBACzB,eAAgB,cAChB,iBAAkB,sBAClB,eAAgB,gBAChB,iBAAkB,wBAElB,sBAAuB,OACvB,yBAA0B,OAC1B,qBAAsB,OACtB,4BAA6B,OAC7B,2BAA4B,OAE5B,wBAAyB,MACzB,uBAAwB,MAExB,qBAAsB,cACtB,qBAAsB,oBACtB,uBAAwB,aAExB,yBAA0B,uBAC1B,0BAA2B,iCAE3B,0BAA2B,MAC3B,kBAAmB,OACnB,eAAgB,OAEhB,iBAAkB,sBAClB,gBAAiB,sBAEjB,gBAAiB,8FAEjB,6BAA8B,iCAC9B,6BAA8B,cAC9B,2BAA4B,2BAE5B,cAAe,MACf,cAAe,MACf,cAAe,MACjB,CACF"}
1
+ {"version":3,"file":"defaultTheme.mjs","names":[],"sources":["../../../../package/common/themeProvider/defaultTheme.ts"],"sourcesContent":["import type { Theme } from './theme.types';\n\n/**\n * Built-in default theme used by ThemeProvider when no `themes` prop is\n * supplied. Provides a complete set of CSS variables so the component\n * library renders correctly out of the box.\n */\nexport const defaultTheme: Theme = {\n id: 'default',\n variables: {\n '--grey': '#8A8A8A',\n '--lightgrey': '#e0e0e0',\n '--lightergrey': '#B1B1B1',\n '--white': '#FFFFFF',\n '--red': '#D6002A',\n '--lighter-red': '#ffeae9',\n '--green': '#287626',\n '--lighter-green': '#C4FFC9',\n '--blue': '#5873d5',\n '--lighter-blue': '#C6DBFF',\n '--black': 'black',\n '--orange': '#ff7f50',\n '--lighter-orange': '#ffe5d9',\n\n '--primary-color': '#8184d6',\n '--primary-accent': '#90CAF9',\n '--primary-lighter': '#9a9ce4',\n '--accent-color': 'var(--grey)',\n '--accent-color-light': 'var(--lightgrey)',\n\n '--text-color': 'var(--white)',\n '--text-dark': 'var(--lightergrey)',\n '--text-light': 'var(--lightergrey)',\n '--text-on-primary': 'var(--white)',\n '--text-on-delete': 'var(--white)',\n '--border-color': '#656574',\n '--focus-border-color': 'var(--primary-color)',\n\n '--background': '#393945',\n '--background-accent': '#33333c',\n '--background-accent-dark': 'var(--grey)',\n '--background-accent-light': '#484856',\n '--background-modal': '#484856',\n\n '--success-color': 'var(--green)',\n '--success-lighter': 'var(--lighter-green)',\n '--error-color': 'var(--red)',\n '--error-lighter': 'var(--lighter-red)',\n '--required-mark-color': 'var(--error-color)',\n '--info-color': 'var(--blue)',\n '--info-lighter': 'var(--lighter-blue)',\n '--warn-color': 'var(--orange)',\n '--warn-lighter': 'var(--lighter-orange)',\n\n '--default-font-size': '16px',\n '--text-small-font-size': '14px',\n '--header-font-size': '24px',\n '--header-medium-font-size': '18px',\n '--header-small-font-size': '16px',\n\n '--default-font-weight': '400',\n '--header-font-weight': '600',\n\n '--input-background': 'transparent',\n '--input-icon-color': 'var(--text-color)',\n '--error-border-color': 'var(--red)',\n\n '--button-default-color': 'var(--primary-color)',\n '--button-default-border': '1px solid var(--primary-color)',\n\n '--default-border-radius': '8px',\n '--padding-sides': '15px',\n '--margin-top': '10px',\n\n '--default-font': \"'Inter', sans-serif\",\n '--themed-font': \"'Inter', sans-serif\",\n\n '--card-shadow': '0 3px 1px -2px rgb(0 0 0 / 20%), 0 2px 2px 0 rgb(0 0 0 / 14%), 0 1px 5px 0 rgb(0 0 0 / 12%)',\n\n '--background-card-elevated': 'var(--background-accent-light)',\n '--background-card-outlined': 'transparent',\n '--background-card-filled': 'var(--background-accent)',\n\n '--spacing-s': '4px',\n '--spacing-m': '8px',\n '--spacing-l': '16px',\n },\n};\n"],"mappings":"aAOA,IAAa,EAAsB,CACjC,GAAI,UACJ,UAAW,CACT,SAAU,UACV,cAAe,UACf,gBAAiB,UACjB,UAAW,UACX,QAAS,UACT,gBAAiB,UACjB,UAAW,UACX,kBAAmB,UACnB,SAAU,UACV,iBAAkB,UAClB,UAAW,QACX,WAAY,UACZ,mBAAoB,UAEpB,kBAAmB,UACnB,mBAAoB,UACpB,oBAAqB,UACrB,iBAAkB,cAClB,uBAAwB,mBAExB,eAAgB,eAChB,cAAe,qBACf,eAAgB,qBAChB,oBAAqB,eACrB,mBAAoB,eACpB,iBAAkB,UAClB,uBAAwB,uBAExB,eAAgB,UAChB,sBAAuB,UACvB,2BAA4B,cAC5B,4BAA6B,UAC7B,qBAAsB,UAEtB,kBAAmB,eACnB,oBAAqB,uBACrB,gBAAiB,aACjB,kBAAmB,qBACnB,wBAAyB,qBACzB,eAAgB,cAChB,iBAAkB,sBAClB,eAAgB,gBAChB,iBAAkB,wBAElB,sBAAuB,OACvB,yBAA0B,OAC1B,qBAAsB,OACtB,4BAA6B,OAC7B,2BAA4B,OAE5B,wBAAyB,MACzB,uBAAwB,MAExB,qBAAsB,cACtB,qBAAsB,oBACtB,uBAAwB,aAExB,yBAA0B,uBAC1B,0BAA2B,iCAE3B,0BAA2B,MAC3B,kBAAmB,OACnB,eAAgB,OAEhB,iBAAkB,sBAClB,gBAAiB,sBAEjB,gBAAiB,8FAEjB,6BAA8B,iCAC9B,6BAA8B,cAC9B,2BAA4B,2BAE5B,cAAe,MACf,cAAe,MACf,cAAe,MACjB,CACF"}
@@ -0,0 +1,2 @@
1
+ "use client";var e={id:`light`,baseThemeId:`default`,variables:{"--background":`#FFFFFF`,"--background-accent":`#F4F4F8`,"--background-accent-light":`#FAFAFD`,"--background-accent-dark":`#D4D4E0`,"--background-modal":`#FFFFFF`,"--text-color":`#1E1E2E`,"--text-dark":`#55556E`,"--text-light":`#75758C`,"--border-color":`#DCDCE8`,"--lighter-green":`#DFF5E1`,"--lighter-red":`#FCE4E6`,"--lighter-blue":`#E1EBFF`,"--lighter-orange":`#FFEADF`,"--accent-color":`#6E6E80`,"--input-background":`#F4F4F8`,"--card-shadow":`0 1px 3px rgb(0 0 0 / 8%), 0 1px 2px rgb(0 0 0 / 6%)`}};export{e as lightTheme};
2
+ //# sourceMappingURL=lightTheme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightTheme.mjs","names":[],"sources":["../../../../package/common/themeProvider/lightTheme.ts"],"sourcesContent":["import type { Theme } from './theme.types';\n\n/**\n * The light sibling of {@link defaultTheme}, which is dark. Same brand, inverted surfaces:\n * it declares only what has to flip, and inherits the rest through `baseThemeId`, so a change\n * to the palette or the type scale reaches both themes at once.\n *\n * ```tsx\n * <ThemeProvider themes={[defaultTheme, lightTheme]} activeThemeId='light'>\n * ```\n *\n * `--primary-color` is deliberately untouched: it is the brand, and it reads on both.\n */\nexport const lightTheme: Theme = {\n id: 'light',\n baseThemeId: 'default',\n variables: {\n '--background': '#FFFFFF',\n '--background-accent': '#F4F4F8',\n '--background-accent-light': '#FAFAFD',\n '--background-accent-dark': '#D4D4E0',\n '--background-modal': '#FFFFFF',\n\n '--text-color': '#1E1E2E',\n '--text-dark': '#55556E',\n '--text-light': '#75758C',\n\n '--border-color': '#DCDCE8',\n\n // Dark text on the dark theme's own lighter-* tints is unreadable; on white they are the\n // right weight as-is, so only the greens and reds that were tuned for a dark ground move.\n '--lighter-green': '#DFF5E1',\n '--lighter-red': '#FCE4E6',\n '--lighter-blue': '#E1EBFF',\n '--lighter-orange': '#FFEADF',\n\n // The default theme's green is dark enough to read on white; its grey text is not.\n '--accent-color': '#6E6E80',\n\n '--input-background': '#F4F4F8',\n\n // Three stacked black shadows read as grime on a white surface.\n '--card-shadow': '0 1px 3px rgb(0 0 0 / 8%), 0 1px 2px rgb(0 0 0 / 6%)',\n },\n};\n"],"mappings":"aAaA,IAAa,EAAoB,CAC/B,GAAI,QACJ,YAAa,UACb,UAAW,CACT,eAAgB,UAChB,sBAAuB,UACvB,4BAA6B,UAC7B,2BAA4B,UAC5B,qBAAsB,UAEtB,eAAgB,UAChB,cAAe,UACf,eAAgB,UAEhB,iBAAkB,UAIlB,kBAAmB,UACnB,gBAAiB,UACjB,iBAAkB,UAClB,mBAAoB,UAGpB,iBAAkB,UAElB,qBAAsB,UAGtB,gBAAiB,sDACnB,CACF"}
@@ -1,2 +1,2 @@
1
- var e=`themeRoot_oegLp`,t=`colorFade_eLv2g`,n={themeRoot:e,colorFade:t};export{t as colorFade,n as default,e as themeRoot};
1
+ "use client";var e=`themeRoot_oegLp`,t=`colorFade_eLv2g`,n={themeRoot:e,colorFade:t};export{t as colorFade,n as default,e as themeRoot};
2
2
  //# sourceMappingURL=theme.module.mjs.map
@@ -1,2 +1,2 @@
1
- import{ThemeVariablesContext as e}from"./themeVariablesContext.mjs";import{defaultTheme as t}from"./defaultTheme.mjs";import n from"./theme.module.mjs";import r,{Component as i}from"react";import a from"classnames";import{jsx as o}from"react/jsx-runtime";var s=class extends i{constructor(...e){super(...e),this.state={resolvedVariables:{},colorFadeActive:!1,currentThemeColor:null},this.colorFadeTimeout=null,this.wrapperRef=r.createRef(),this.themeColorMeta=null,this.createdThemeColorMeta=!1,this.applyTheme=e=>{let n=this.props.themes??[t],r=n.find(e=>!e.baseThemeId)??n[0],i=r?r.variables:{},a=n.find(t=>t.id===e),o=a?this.resolveChain(a.id):[],s=Object.assign({},i,...o);this.setState({resolvedVariables:s,colorFadeActive:!0}),this.colorFadeTimeout&&clearTimeout(this.colorFadeTimeout),this.colorFadeTimeout=setTimeout(()=>{this.setState({colorFadeActive:!1}),this.colorFadeTimeout=null},500),setTimeout(()=>{this.wrapperRef.current&&this.setState({currentThemeColor:getComputedStyle(this.wrapperRef.current).getPropertyValue(`--primary-color`).trim()})},1)}}componentDidMount(){this.applyTheme(this.props.currentThemeId),this.syncThemeColorMeta(this.state.currentThemeColor??``)}componentDidUpdate(e,t){t.currentThemeColor!==this.state.currentThemeColor&&this.syncThemeColorMeta(this.state.currentThemeColor??``),(e.currentThemeId!==this.props.currentThemeId||e.themes!==this.props.themes)&&this.applyTheme(this.props.currentThemeId)}componentWillUnmount(){this.colorFadeTimeout&&clearTimeout(this.colorFadeTimeout),this.createdThemeColorMeta&&=(this.themeColorMeta?.remove(),this.themeColorMeta=null,!1)}syncThemeColorMeta(e){if(typeof document<`u`){if(!this.themeColorMeta){let e=document.head.querySelector(`meta[name="theme-color"]`);if(e)this.themeColorMeta=e;else{let e=document.createElement(`meta`);e.setAttribute(`name`,`theme-color`),document.head.appendChild(e),this.themeColorMeta=e,this.createdThemeColorMeta=!0}}this.themeColorMeta.setAttribute(`content`,e)}}resolveChain(e){let n=(this.props.themes??[t]).find(t=>t.id===e);return n?[...n.baseThemeId?this.resolveChain(n.baseThemeId):[],n.variables]:[]}render(){let{children:t}=this.props,{resolvedVariables:r,colorFadeActive:i}=this.state;return o(`div`,{ref:this.wrapperRef,id:`themeProvider`,className:a(n.themeRoot,i&&n.colorFade),style:r,children:o(e.Provider,{value:r,children:t})})}};export{s as default};
1
+ "use client";import{ThemeVariablesContext as e}from"./themeVariablesContext.mjs";import{defaultTheme as t}from"./defaultTheme.mjs";import n from"./theme.module.mjs";import r,{Component as i}from"react";import a from"classnames";import{jsx as o}from"react/jsx-runtime";var s=class extends i{constructor(...e){super(...e),this.state={resolvedVariables:{},colorFadeActive:!1,currentThemeColor:null},this.colorFadeTimeout=null,this.wrapperRef=r.createRef(),this.themeColorMeta=null,this.createdThemeColorMeta=!1,this.applyTheme=e=>{let n=this.props.themes??[t],r=n.find(e=>!e.baseThemeId)??n[0],i=r?r.variables:{},a=n.find(t=>t.id===e),o=a?this.resolveChain(a.id):[],s=Object.assign({},i,...o);this.setState({resolvedVariables:s,colorFadeActive:!0}),this.colorFadeTimeout&&clearTimeout(this.colorFadeTimeout),this.colorFadeTimeout=setTimeout(()=>{this.setState({colorFadeActive:!1}),this.colorFadeTimeout=null},500),setTimeout(()=>{this.wrapperRef.current&&this.setState({currentThemeColor:getComputedStyle(this.wrapperRef.current).getPropertyValue(`--primary-color`).trim()})},1)}}componentDidMount(){this.applyTheme(this.props.currentThemeId),this.syncThemeColorMeta(this.state.currentThemeColor??``)}componentDidUpdate(e,t){t.currentThemeColor!==this.state.currentThemeColor&&this.syncThemeColorMeta(this.state.currentThemeColor??``),(e.currentThemeId!==this.props.currentThemeId||e.themes!==this.props.themes)&&this.applyTheme(this.props.currentThemeId)}componentWillUnmount(){this.colorFadeTimeout&&clearTimeout(this.colorFadeTimeout),this.createdThemeColorMeta&&=(this.themeColorMeta?.remove(),this.themeColorMeta=null,!1)}syncThemeColorMeta(e){if(typeof document<`u`){if(!this.themeColorMeta){let e=document.head.querySelector(`meta[name="theme-color"]`);if(e)this.themeColorMeta=e;else{let e=document.createElement(`meta`);e.setAttribute(`name`,`theme-color`),document.head.appendChild(e),this.themeColorMeta=e,this.createdThemeColorMeta=!0}}this.themeColorMeta.setAttribute(`content`,e)}}resolveChain(e){let n=(this.props.themes??[t]).find(t=>t.id===e);return n?[...n.baseThemeId?this.resolveChain(n.baseThemeId):[],n.variables]:[]}render(){let{children:t}=this.props,{resolvedVariables:r,colorFadeActive:i}=this.state;return o(`div`,{ref:this.wrapperRef,id:`themeProvider`,className:a(n.themeRoot,i&&n.colorFade),style:r,children:o(e.Provider,{value:r,children:t})})}};export{s as default};
2
2
  //# sourceMappingURL=themeProvider.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"themeProvider.mjs","names":[],"sources":["../../../../package/common/themeProvider/themeProvider.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport cx from 'classnames';\n\nimport type { Theme } from './theme.types';\nimport { defaultTheme } from './defaultTheme';\nimport { ThemeVariablesContext } from './themeVariablesContext';\nimport styles from './theme.module.pcss';\n\ninterface Props {\n children: React.ReactNode;\n themes?: Theme[];\n currentThemeId?: string;\n}\n\ninterface State {\n resolvedVariables: Record<string, string>;\n colorFadeActive: boolean;\n currentThemeColor: string | null;\n}\n\nclass ThemeProvider extends Component<Props, State> {\n state: State = {\n resolvedVariables: {},\n colorFadeActive: false,\n currentThemeColor: null,\n };\n\n private colorFadeTimeout: ReturnType<typeof setTimeout> | null = null;\n private wrapperRef = React.createRef<HTMLDivElement>();\n private themeColorMeta: HTMLMetaElement | null = null;\n private createdThemeColorMeta = false;\n\n componentDidMount() {\n this.applyTheme(this.props.currentThemeId);\n this.syncThemeColorMeta(this.state.currentThemeColor ?? '');\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (prevState.currentThemeColor !== this.state.currentThemeColor) {\n this.syncThemeColorMeta(this.state.currentThemeColor ?? '');\n }\n if (prevProps.currentThemeId !== this.props.currentThemeId || prevProps.themes !== this.props.themes) {\n this.applyTheme(this.props.currentThemeId);\n }\n }\n\n componentWillUnmount() {\n if (this.colorFadeTimeout) clearTimeout(this.colorFadeTimeout);\n // Only remove the meta tag if we created it; leave a host-app tag intact.\n // Also clear the cached refs — StrictMode's dev-only mount/unmount/remount\n // cycle reuses this instance, and a stale ref would otherwise point at a\n // detached element on remount instead of re-inserting into <head>.\n if (this.createdThemeColorMeta) {\n this.themeColorMeta?.remove();\n this.themeColorMeta = null;\n this.createdThemeColorMeta = false;\n }\n }\n\n /**\n * Replaces the former react-helmet usage: keep a single\n * <meta name=\"theme-color\"> in sync with the active theme's primary colour.\n * Reuses a tag the host app already declares; otherwise creates its own\n * (and removes it again on unmount).\n */\n private syncThemeColorMeta(color: string) {\n if (typeof document === 'undefined') return;\n\n if (!this.themeColorMeta) {\n const existing = document.head.querySelector<HTMLMetaElement>('meta[name=\"theme-color\"]');\n if (existing) {\n this.themeColorMeta = existing;\n } else {\n const meta = document.createElement('meta');\n meta.setAttribute('name', 'theme-color');\n document.head.appendChild(meta);\n this.themeColorMeta = meta;\n this.createdThemeColorMeta = true;\n }\n }\n\n this.themeColorMeta.setAttribute('content', color);\n }\n\n /**\n * Resolves the full variable set for a given theme ID by walking up the\n * baseThemeId chain. Returns variables ordered from deepest ancestor to\n * the requested theme so callers can merge in order (later entries win).\n */\n private resolveChain(id: string): Record<string, string>[] {\n const themes = this.props.themes ?? [defaultTheme];\n const theme = themes.find((t) => t.id === id);\n if (!theme) return [];\n\n const parentVars = theme.baseThemeId ? this.resolveChain(theme.baseThemeId) : [];\n\n return [...parentVars, theme.variables as Record<string, string>];\n }\n\n private applyTheme = (currentThemeId: string | undefined) => {\n const themes = this.props.themes ?? [defaultTheme];\n\n // The root theme is the first theme without a baseThemeId.\n // It is always applied as the variable foundation.\n const rootTheme = themes.find((t) => !t.baseThemeId) ?? themes[0];\n const rootVars: Record<string, string> = rootTheme ? (rootTheme.variables as Record<string, string>) : {};\n\n // Resolve the selected theme's full inheritance chain.\n const selectedTheme = themes.find((t) => t.id === currentThemeId);\n const chainVars = selectedTheme ? this.resolveChain(selectedTheme.id) : [];\n\n // Merge: root foundation → ancestor chain → selected theme (each step overrides)\n const resolvedVariables = Object.assign({}, rootVars, ...chainVars);\n\n this.setState({ resolvedVariables, colorFadeActive: true });\n\n if (this.colorFadeTimeout) clearTimeout(this.colorFadeTimeout);\n this.colorFadeTimeout = setTimeout(() => {\n this.setState({ colorFadeActive: false });\n this.colorFadeTimeout = null;\n }, 500);\n\n // Read --primary-color after the new style is painted for the theme-color meta tag.\n setTimeout(() => {\n if (this.wrapperRef.current) {\n this.setState({\n currentThemeColor: getComputedStyle(this.wrapperRef.current).getPropertyValue('--primary-color').trim(),\n });\n }\n }, 1);\n };\n\n render() {\n const { children } = this.props;\n const { resolvedVariables, colorFadeActive } = this.state;\n\n return (\n <div\n ref={this.wrapperRef}\n id='themeProvider'\n className={cx(styles.themeRoot, colorFadeActive && styles.colorFade)}\n style={resolvedVariables as React.CSSProperties}\n >\n <ThemeVariablesContext.Provider value={resolvedVariables}>{children}</ThemeVariablesContext.Provider>\n </div>\n );\n }\n}\n\nexport default ThemeProvider;\n"],"mappings":"+PAoBA,IAAM,EAAN,cAA4B,CAAwB,+BACnC,KAAA,MAAA,CACb,kBAAmB,CAAC,EACpB,gBAAiB,GACjB,kBAAmB,IACrB,EAEiE,KAAA,iBAAA,KAC5C,KAAA,WAAA,EAAM,UAA0B,EACJ,KAAA,eAAA,KACjB,KAAA,sBAAA,GAqEV,KAAA,WAAA,GAAuC,CAC3D,IAAM,EAAS,KAAK,MAAM,QAAU,CAAC,CAAY,EAI3C,EAAY,EAAO,KAAM,GAAM,CAAC,EAAE,WAAW,GAAK,EAAO,GACzD,EAAmC,EAAa,EAAU,UAAuC,CAAC,EAGlG,EAAgB,EAAO,KAAM,GAAM,EAAE,KAAO,CAAc,EAC1D,EAAY,EAAgB,KAAK,aAAa,EAAc,EAAE,EAAI,CAAC,EAGnE,EAAoB,OAAO,OAAO,CAAC,EAAG,EAAU,GAAG,CAAS,EAElE,KAAK,SAAS,CAAE,oBAAmB,gBAAiB,EAAK,CAAC,EAEtD,KAAK,kBAAkB,aAAa,KAAK,gBAAgB,EAC7D,KAAK,iBAAmB,eAAiB,CACvC,KAAK,SAAS,CAAE,gBAAiB,EAAM,CAAC,EACxC,KAAK,iBAAmB,IAC1B,EAAG,GAAG,EAGN,eAAiB,CACX,KAAK,WAAW,SAClB,KAAK,SAAS,CACZ,kBAAmB,iBAAiB,KAAK,WAAW,OAAO,CAAC,CAAC,iBAAiB,iBAAiB,CAAC,CAAC,KAAK,CACxG,CAAC,CAEL,EAAG,CAAC,CACN,EAlGA,mBAAoB,CAClB,KAAK,WAAW,KAAK,MAAM,cAAc,EACzC,KAAK,mBAAmB,KAAK,MAAM,mBAAqB,EAAE,CAC5D,CAEA,mBAAmB,EAAkB,EAAkB,CACjD,EAAU,oBAAsB,KAAK,MAAM,mBAC7C,KAAK,mBAAmB,KAAK,MAAM,mBAAqB,EAAE,GAExD,EAAU,iBAAmB,KAAK,MAAM,gBAAkB,EAAU,SAAW,KAAK,MAAM,SAC5F,KAAK,WAAW,KAAK,MAAM,cAAc,CAE7C,CAEA,sBAAuB,CACjB,KAAK,kBAAkB,aAAa,KAAK,gBAAgB,EAK7D,AAGE,KAAK,yBAFL,KAAK,gBAAgB,OAAO,EAC5B,KAAK,eAAiB,KACO,GAEjC,CAQA,mBAA2B,EAAe,CACpC,UAAO,SAAa,IAExB,IAAI,CAAC,KAAK,eAAgB,CACxB,IAAM,EAAW,SAAS,KAAK,cAA+B,0BAA0B,EACxF,GAAI,EACF,KAAK,eAAiB,MACjB,CACL,IAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,aAAa,OAAQ,aAAa,EACvC,SAAS,KAAK,YAAY,CAAI,EAC9B,KAAK,eAAiB,EACtB,KAAK,sBAAwB,EAC/B,CACF,CAEA,KAAK,eAAe,aAAa,UAAW,CAAK,CAFjD,CAGF,CAOA,aAAqB,EAAsC,CAEzD,IAAM,GADS,KAAK,MAAM,QAAU,CAAC,CAAY,EAAA,CAC5B,KAAM,GAAM,EAAE,KAAO,CAAE,EAK5C,OAJK,EAIE,CAAC,GAFW,EAAM,YAAc,KAAK,aAAa,EAAM,WAAW,EAAI,CAAC,EAExD,EAAM,SAAmC,EAJ7C,CAAC,CAKtB,CAmCA,QAAS,CACP,GAAM,CAAE,YAAa,KAAK,MACpB,CAAE,oBAAmB,mBAAoB,KAAK,MAEpD,OACE,EAAC,MAAD,CACE,IAAK,KAAK,WACV,GAAG,gBACH,UAAW,EAAG,EAAO,UAAW,GAAmB,EAAO,SAAS,EACnE,MAAO,EAEP,SAAA,EAAC,EAAsB,SAAvB,CAAgC,MAAO,EAAoB,UAAyC,CAAA,CACjG,CAAA,CAET,CACF"}
1
+ {"version":3,"file":"themeProvider.mjs","names":[],"sources":["../../../../package/common/themeProvider/themeProvider.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport cx from 'classnames';\n\nimport type { Theme } from './theme.types';\nimport { defaultTheme } from './defaultTheme';\nimport { ThemeVariablesContext } from './themeVariablesContext';\nimport styles from './theme.module.pcss';\n\ninterface Props {\n children: React.ReactNode;\n themes?: Theme[];\n currentThemeId?: string;\n}\n\ninterface State {\n resolvedVariables: Record<string, string>;\n colorFadeActive: boolean;\n currentThemeColor: string | null;\n}\n\nclass ThemeProvider extends Component<Props, State> {\n state: State = {\n resolvedVariables: {},\n colorFadeActive: false,\n currentThemeColor: null,\n };\n\n private colorFadeTimeout: ReturnType<typeof setTimeout> | null = null;\n private wrapperRef = React.createRef<HTMLDivElement>();\n private themeColorMeta: HTMLMetaElement | null = null;\n private createdThemeColorMeta = false;\n\n componentDidMount() {\n this.applyTheme(this.props.currentThemeId);\n this.syncThemeColorMeta(this.state.currentThemeColor ?? '');\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n if (prevState.currentThemeColor !== this.state.currentThemeColor) {\n this.syncThemeColorMeta(this.state.currentThemeColor ?? '');\n }\n if (prevProps.currentThemeId !== this.props.currentThemeId || prevProps.themes !== this.props.themes) {\n this.applyTheme(this.props.currentThemeId);\n }\n }\n\n componentWillUnmount() {\n if (this.colorFadeTimeout) clearTimeout(this.colorFadeTimeout);\n // Only remove the meta tag if we created it; leave a host-app tag intact.\n // Also clear the cached refs — StrictMode's dev-only mount/unmount/remount\n // cycle reuses this instance, and a stale ref would otherwise point at a\n // detached element on remount instead of re-inserting into <head>.\n if (this.createdThemeColorMeta) {\n this.themeColorMeta?.remove();\n this.themeColorMeta = null;\n this.createdThemeColorMeta = false;\n }\n }\n\n /**\n * Replaces the former react-helmet usage: keep a single\n * <meta name=\"theme-color\"> in sync with the active theme's primary colour.\n * Reuses a tag the host app already declares; otherwise creates its own\n * (and removes it again on unmount).\n */\n private syncThemeColorMeta(color: string) {\n if (typeof document === 'undefined') return;\n\n if (!this.themeColorMeta) {\n const existing = document.head.querySelector<HTMLMetaElement>('meta[name=\"theme-color\"]');\n if (existing) {\n this.themeColorMeta = existing;\n } else {\n const meta = document.createElement('meta');\n meta.setAttribute('name', 'theme-color');\n document.head.appendChild(meta);\n this.themeColorMeta = meta;\n this.createdThemeColorMeta = true;\n }\n }\n\n this.themeColorMeta.setAttribute('content', color);\n }\n\n /**\n * Resolves the full variable set for a given theme ID by walking up the\n * baseThemeId chain. Returns variables ordered from deepest ancestor to\n * the requested theme so callers can merge in order (later entries win).\n */\n private resolveChain(id: string): Record<string, string>[] {\n const themes = this.props.themes ?? [defaultTheme];\n const theme = themes.find((t) => t.id === id);\n if (!theme) return [];\n\n const parentVars = theme.baseThemeId ? this.resolveChain(theme.baseThemeId) : [];\n\n return [...parentVars, theme.variables as Record<string, string>];\n }\n\n private applyTheme = (currentThemeId: string | undefined) => {\n const themes = this.props.themes ?? [defaultTheme];\n\n // The root theme is the first theme without a baseThemeId.\n // It is always applied as the variable foundation.\n const rootTheme = themes.find((t) => !t.baseThemeId) ?? themes[0];\n const rootVars: Record<string, string> = rootTheme ? (rootTheme.variables as Record<string, string>) : {};\n\n // Resolve the selected theme's full inheritance chain.\n const selectedTheme = themes.find((t) => t.id === currentThemeId);\n const chainVars = selectedTheme ? this.resolveChain(selectedTheme.id) : [];\n\n // Merge: root foundation → ancestor chain → selected theme (each step overrides)\n const resolvedVariables = Object.assign({}, rootVars, ...chainVars);\n\n this.setState({ resolvedVariables, colorFadeActive: true });\n\n if (this.colorFadeTimeout) clearTimeout(this.colorFadeTimeout);\n this.colorFadeTimeout = setTimeout(() => {\n this.setState({ colorFadeActive: false });\n this.colorFadeTimeout = null;\n }, 500);\n\n // Read --primary-color after the new style is painted for the theme-color meta tag.\n setTimeout(() => {\n if (this.wrapperRef.current) {\n this.setState({\n currentThemeColor: getComputedStyle(this.wrapperRef.current).getPropertyValue('--primary-color').trim(),\n });\n }\n }, 1);\n };\n\n render() {\n const { children } = this.props;\n const { resolvedVariables, colorFadeActive } = this.state;\n\n return (\n <div\n ref={this.wrapperRef}\n id='themeProvider'\n className={cx(styles.themeRoot, colorFadeActive && styles.colorFade)}\n style={resolvedVariables as React.CSSProperties}\n >\n <ThemeVariablesContext.Provider value={resolvedVariables}>{children}</ThemeVariablesContext.Provider>\n </div>\n );\n }\n}\n\nexport default ThemeProvider;\n"],"mappings":"4QAoBA,IAAM,EAAN,cAA4B,CAAwB,+BACnC,KAAA,MAAA,CACb,kBAAmB,CAAC,EACpB,gBAAiB,GACjB,kBAAmB,IACrB,EAEiE,KAAA,iBAAA,KAC5C,KAAA,WAAA,EAAM,UAA0B,EACJ,KAAA,eAAA,KACjB,KAAA,sBAAA,GAqEV,KAAA,WAAA,GAAuC,CAC3D,IAAM,EAAS,KAAK,MAAM,QAAU,CAAC,CAAY,EAI3C,EAAY,EAAO,KAAM,GAAM,CAAC,EAAE,WAAW,GAAK,EAAO,GACzD,EAAmC,EAAa,EAAU,UAAuC,CAAC,EAGlG,EAAgB,EAAO,KAAM,GAAM,EAAE,KAAO,CAAc,EAC1D,EAAY,EAAgB,KAAK,aAAa,EAAc,EAAE,EAAI,CAAC,EAGnE,EAAoB,OAAO,OAAO,CAAC,EAAG,EAAU,GAAG,CAAS,EAElE,KAAK,SAAS,CAAE,oBAAmB,gBAAiB,EAAK,CAAC,EAEtD,KAAK,kBAAkB,aAAa,KAAK,gBAAgB,EAC7D,KAAK,iBAAmB,eAAiB,CACvC,KAAK,SAAS,CAAE,gBAAiB,EAAM,CAAC,EACxC,KAAK,iBAAmB,IAC1B,EAAG,GAAG,EAGN,eAAiB,CACX,KAAK,WAAW,SAClB,KAAK,SAAS,CACZ,kBAAmB,iBAAiB,KAAK,WAAW,OAAO,CAAC,CAAC,iBAAiB,iBAAiB,CAAC,CAAC,KAAK,CACxG,CAAC,CAEL,EAAG,CAAC,CACN,EAlGA,mBAAoB,CAClB,KAAK,WAAW,KAAK,MAAM,cAAc,EACzC,KAAK,mBAAmB,KAAK,MAAM,mBAAqB,EAAE,CAC5D,CAEA,mBAAmB,EAAkB,EAAkB,CACjD,EAAU,oBAAsB,KAAK,MAAM,mBAC7C,KAAK,mBAAmB,KAAK,MAAM,mBAAqB,EAAE,GAExD,EAAU,iBAAmB,KAAK,MAAM,gBAAkB,EAAU,SAAW,KAAK,MAAM,SAC5F,KAAK,WAAW,KAAK,MAAM,cAAc,CAE7C,CAEA,sBAAuB,CACjB,KAAK,kBAAkB,aAAa,KAAK,gBAAgB,EAK7D,AAGE,KAAK,yBAFL,KAAK,gBAAgB,OAAO,EAC5B,KAAK,eAAiB,KACO,GAEjC,CAQA,mBAA2B,EAAe,CACpC,UAAO,SAAa,IAExB,IAAI,CAAC,KAAK,eAAgB,CACxB,IAAM,EAAW,SAAS,KAAK,cAA+B,0BAA0B,EACxF,GAAI,EACF,KAAK,eAAiB,MACjB,CACL,IAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,aAAa,OAAQ,aAAa,EACvC,SAAS,KAAK,YAAY,CAAI,EAC9B,KAAK,eAAiB,EACtB,KAAK,sBAAwB,EAC/B,CACF,CAEA,KAAK,eAAe,aAAa,UAAW,CAAK,CAFjD,CAGF,CAOA,aAAqB,EAAsC,CAEzD,IAAM,GADS,KAAK,MAAM,QAAU,CAAC,CAAY,EAAA,CAC5B,KAAM,GAAM,EAAE,KAAO,CAAE,EAK5C,OAJK,EAIE,CAAC,GAFW,EAAM,YAAc,KAAK,aAAa,EAAM,WAAW,EAAI,CAAC,EAExD,EAAM,SAAmC,EAJ7C,CAAC,CAKtB,CAmCA,QAAS,CACP,GAAM,CAAE,YAAa,KAAK,MACpB,CAAE,oBAAmB,mBAAoB,KAAK,MAEpD,OACE,EAAC,MAAD,CACE,IAAK,KAAK,WACV,GAAG,gBACH,UAAW,EAAG,EAAO,UAAW,GAAmB,EAAO,SAAS,EACnE,MAAO,EAEP,SAAA,EAAC,EAAsB,SAAvB,CAAgC,MAAO,EAAoB,UAAyC,CAAA,CACjG,CAAA,CAET,CACF"}
@@ -1,2 +1,2 @@
1
- import{createContext as e}from"react";var t=e(null);export{t as ThemeVariablesContext};
1
+ "use client";import{createContext as e}from"react";var t=e(null);export{t as ThemeVariablesContext};
2
2
  //# sourceMappingURL=themeVariablesContext.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"themeVariablesContext.mjs","names":[],"sources":["../../../../package/common/themeProvider/themeVariablesContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\n/**\n * The nearest ThemeProvider's resolved variables, for content that renders outside its DOM\n * subtree. Theme variables reach a component by CSS inheritance, which a portal breaks: a\n * `BodyEnd` child lands wherever `#bodyEnd` happens to be, so it picks up whatever provider\n * wraps *that* node rather than the one it was written under.\n *\n * Deliberately its own module rather than a member of `themeProvider.tsx`: BodyEnd needs the\n * context and nothing else, and importing the component for it would pull the whole\n * ThemeProvider into every bundle that uses a portal.\n */\nexport const ThemeVariablesContext = createContext<Record<string, string> | null>(null);\n"],"mappings":"sCAYA,IAAa,EAAwB,EAA6C,IAAI"}
1
+ {"version":3,"file":"themeVariablesContext.mjs","names":[],"sources":["../../../../package/common/themeProvider/themeVariablesContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\n/**\n * The nearest ThemeProvider's resolved variables, for content that renders outside its DOM\n * subtree. Theme variables reach a component by CSS inheritance, which a portal breaks: a\n * `BodyEnd` child lands wherever `#bodyEnd` happens to be, so it picks up whatever provider\n * wraps *that* node rather than the one it was written under.\n *\n * Deliberately its own module rather than a member of `themeProvider.tsx`: BodyEnd needs the\n * context and nothing else, and importing the component for it would pull the whole\n * ThemeProvider into every bundle that uses a portal.\n */\nexport const ThemeVariablesContext = createContext<Record<string, string> | null>(null);\n"],"mappings":"mDAYA,IAAa,EAAwB,EAA6C,IAAI"}
@@ -1,2 +1,2 @@
1
- import{useState as e}from"react";function t(t=`default`){let[n,r]=e(localStorage.getItem(`theme`)||t);return{currentThemeId:n,setCurrentThemeId:e=>{r(e),localStorage.setItem(`theme`,e)}}}export{t as useTheme};
1
+ "use client";import{useState as e}from"react";function t(t=`default`){let[n,r]=e(localStorage.getItem(`theme`)||t);return{currentThemeId:n,setCurrentThemeId:e=>{r(e),localStorage.setItem(`theme`,e)}}}export{t as useTheme};
2
2
  //# sourceMappingURL=useTheme.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTheme.mjs","names":[],"sources":["../../../../package/common/themeProvider/useTheme.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useTheme(defaultThemeId: string = 'default') {\n const [currentThemeId, setThemeId] = useState<string>(localStorage.getItem('theme') || defaultThemeId);\n\n const setCurrentThemeId = (themeId: string) => {\n setThemeId(themeId);\n localStorage.setItem('theme', themeId);\n };\n\n return { currentThemeId, setCurrentThemeId };\n}\n"],"mappings":"iCAEA,SAAgB,EAAS,EAAyB,UAAW,CAC3D,GAAM,CAAC,EAAgB,GAAc,EAAiB,aAAa,QAAQ,OAAO,GAAK,CAAc,EAOrG,MAAO,CAAE,iBAAgB,kBALE,GAAoB,CAC7C,EAAW,CAAO,EAClB,aAAa,QAAQ,QAAS,CAAO,CACvC,CAE2C,CAC7C"}
1
+ {"version":3,"file":"useTheme.mjs","names":[],"sources":["../../../../package/common/themeProvider/useTheme.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useTheme(defaultThemeId: string = 'default') {\n const [currentThemeId, setThemeId] = useState<string>(localStorage.getItem('theme') || defaultThemeId);\n\n const setCurrentThemeId = (themeId: string) => {\n setThemeId(themeId);\n localStorage.setItem('theme', themeId);\n };\n\n return { currentThemeId, setCurrentThemeId };\n}\n"],"mappings":"8CAEA,SAAgB,EAAS,EAAyB,UAAW,CAC3D,GAAM,CAAC,EAAgB,GAAc,EAAiB,aAAa,QAAQ,OAAO,GAAK,CAAc,EAOrG,MAAO,CAAE,iBAAgB,kBALE,GAAoB,CAC7C,EAAW,CAAO,EAClB,aAAa,QAAQ,QAAS,CAAO,CACvC,CAE2C,CAC7C"}
@@ -1,2 +1,2 @@
1
- import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{useTiltGroup as t}from"../tiltGroup/tiltGroup.mjs";import{computeTilt as n,defaultTiltEasing as r}from"./tiltMath.mjs";import i from"./tilt.module.mjs";import{forwardRef as a,useEffect as o,useImperativeHandle as s,useRef as c}from"react";import l from"classnames";import{jsx as u}from"react/jsx-runtime";function d(){return typeof process<`u`&&!1}function f(){return typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches===!0}var p=.3,m=.05,h=a(function(a,h){let{children:g,maxTilt:_=15,maxTiltX:v,maxTiltY:y,perspective:b=800,easing:x=r,lockAxis:S=`none`,scaleOnHover:C=1,trackingMode:w=`self`,disabled:T=!1,onTiltChange:E,className:D,style:O,classNames:k,styles:A,...j}=e(`Tilt`,a),M=c(null),N=c(null),P=c(void 0),F=c(!1),I=c(!1),L=c(!1),R=c(null),z=c({rotateX:0,rotateY:0}),B=t(),V=w===`group`,H=V&&B!==null;o(()=>{V&&B===null&&d()&&console.warn(`Tilt: trackingMode="group" was set with no ancestor TiltGroup, falling back to self tracking.`)},[V,B===null]);let U=v??_,W=y??_;function G(e,t,n){let r=N.current;r&&(r.style.transform=`rotateX(${e}deg) rotateY(${t}deg)`+(n===1?``:` scale(${n})`))}function K(){P.current!==void 0&&(cancelAnimationFrame(P.current),P.current=void 0),F.current=!1}function q(){if(P.current=void 0,!N.current){F.current=!1;return}let e=I.current&&!T&&!f(),t=0,r=0;if(e){let e=R.current,i=M.current?.getBoundingClientRect();if(e&&i){let a=n(e.x-i.left,e.y-i.top,i,{maxTiltX:U,maxTiltY:W,easing:x,lockAxis:S});t=a.rotateX,r=a.rotateY}}let i=z.current,a,o;if(L.current?(a=i.rotateX+(t-i.rotateX)*p,o=i.rotateY+(r-i.rotateY)*p,Math.abs(t-a)<m&&Math.abs(r-o)<m&&(a=t,o=r,L.current=!1)):(a=t,o=r),z.current={rotateX:a,rotateY:o},G(a,o,e?C:1),E?.(a,o),!L.current){F.current=!1;return}P.current=requestAnimationFrame(q)}function J(){F.current||(F.current=!0,P.current=requestAnimationFrame(q))}function Y(e){I.current!==e&&(L.current=!0),I.current=e,J()}let X=e=>{T||H||f()||(R.current={x:e.clientX,y:e.clientY},Y(!0))},Z=()=>{H||Y(!1)};return o(()=>{if(H){if(T||f()){Y(!1);return}B?.pointer&&B.rect?(R.current={x:B.rect.left+B.pointer.x,y:B.rect.top+B.pointer.y},Y(!0)):Y(!1)}},[H,T,B?.pointer,B?.rect]),o(()=>()=>{K()},[]),s(h,()=>({setTilt(e,t){let n={rotateX:Math.max(-U,Math.min(U,e)),rotateY:Math.max(-W,Math.min(W,t))};K(),I.current=!1,L.current=!1,z.current=n,G(n.rotateX,n.rotateY,C),E?.(n.rotateX,n.rotateY)},reset(){K(),I.current=!1,L.current=!1,z.current={rotateX:0,rotateY:0},G(0,0,1)}})),u(`div`,{...j,ref:M,className:l(i.tilt,D,k?.root),style:{...O,...A?.root},onPointerMove:X,onPointerLeave:Z,onPointerCancel:Z,children:u(`div`,{className:l(i.tiltPerspective,k?.perspective),style:{perspective:`${b}px`,...A?.perspective},children:u(`div`,{ref:N,className:l(i.tiltSurface,k?.surface),style:A?.surface,children:g})})})});export{h as default};
1
+ "use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{useTiltGroup as t}from"../tiltGroup/tiltGroup.mjs";import{computeTilt as n,defaultTiltEasing as r}from"./tiltMath.mjs";import i from"./tilt.module.mjs";import{useEffect as a,useImperativeHandle as o,useRef as s}from"react";import c from"classnames";import{jsx as l}from"react/jsx-runtime";function u(){return typeof process<`u`&&!1}function d(){return typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches===!0}var f=.3,p=.05;function m(m){let{ref:h,children:g,maxTilt:_=15,maxTiltX:v,maxTiltY:y,perspective:b=800,easing:x=r,lockAxis:S=`none`,scaleOnHover:C=1,trackingMode:w=`self`,disabled:T=!1,onTiltChange:E,className:D,style:O,classNames:k,styles:A,...j}=e(`Tilt`,m),M=s(null),N=s(null),P=s(void 0),F=s(!1),I=s(!1),L=s(!1),R=s(null),z=s({rotateX:0,rotateY:0}),B=t(),V=w===`group`,H=V&&B!==null;a(()=>{V&&B===null&&u()&&console.warn(`Tilt: trackingMode="group" was set with no ancestor TiltGroup, falling back to self tracking.`)},[V,B===null]);let U=v??_,W=y??_;function G(e,t,n){let r=N.current;r&&(r.style.transform=`rotateX(${e}deg) rotateY(${t}deg)`+(n===1?``:` scale(${n})`))}function K(){P.current!==void 0&&(cancelAnimationFrame(P.current),P.current=void 0),F.current=!1}function q(){if(P.current=void 0,!N.current){F.current=!1;return}let e=I.current&&!T&&!d(),t=0,r=0;if(e){let e=R.current,i=M.current?.getBoundingClientRect();if(e&&i){let a=n(e.x-i.left,e.y-i.top,i,{maxTiltX:U,maxTiltY:W,easing:x,lockAxis:S});t=a.rotateX,r=a.rotateY}}let i=z.current,a,o;if(L.current?(a=i.rotateX+(t-i.rotateX)*f,o=i.rotateY+(r-i.rotateY)*f,Math.abs(t-a)<p&&Math.abs(r-o)<p&&(a=t,o=r,L.current=!1)):(a=t,o=r),z.current={rotateX:a,rotateY:o},G(a,o,e?C:1),E?.(a,o),!L.current){F.current=!1;return}P.current=requestAnimationFrame(q)}function J(){F.current||(F.current=!0,P.current=requestAnimationFrame(q))}function Y(e){I.current!==e&&(L.current=!0),I.current=e,J()}let X=e=>{T||H||d()||(R.current={x:e.clientX,y:e.clientY},Y(!0))},Z=()=>{H||Y(!1)};return a(()=>{if(H){if(T||d()){Y(!1);return}B?.pointer&&B.rect?(R.current={x:B.rect.left+B.pointer.x,y:B.rect.top+B.pointer.y},Y(!0)):Y(!1)}},[H,T,B?.pointer,B?.rect]),a(()=>()=>{K()},[]),o(h,()=>({setTilt(e,t){let n={rotateX:Math.max(-U,Math.min(U,e)),rotateY:Math.max(-W,Math.min(W,t))};K(),I.current=!1,L.current=!1,z.current=n,G(n.rotateX,n.rotateY,C),E?.(n.rotateX,n.rotateY)},reset(){K(),I.current=!1,L.current=!1,z.current={rotateX:0,rotateY:0},G(0,0,1)}})),l(`div`,{...j,ref:M,className:c(i.tilt,D,k?.root),style:{...O,...A?.root},onPointerMove:X,onPointerLeave:Z,onPointerCancel:Z,children:l(`div`,{className:c(i.tiltPerspective,k?.perspective),style:{perspective:`${b}px`,...A?.perspective},children:l(`div`,{ref:N,className:c(i.tiltSurface,k?.surface),style:A?.surface,children:g})})})}export{m as default};
2
2
  //# sourceMappingURL=tilt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tilt.mjs","names":[],"sources":["../../../../package/common/tilt/tilt.tsx"],"sourcesContent":["import { forwardRef, useEffect, useImperativeHandle, useRef, type PointerEvent as ReactPointerEvent } from 'react';\nimport cx from 'classnames';\n\nimport { useComponentDefaults } from '../configProvider';\nimport { useTiltGroup } from '../tiltGroup';\nimport { computeTilt, defaultTiltEasing } from './tiltMath';\nimport type { TiltHandle, TiltProps } from './tilt.types';\nimport styles from './tilt.module.pcss';\n\n// Module-scoped ambient typing for the bundler-replaced NODE_ENV guard below. See bodyEnd.tsx.\ndeclare const process: { env: { NODE_ENV?: string } };\n\nfunction isDev(): boolean {\n return typeof process !== 'undefined' && process.env.NODE_ENV !== 'production';\n}\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true;\n}\n\n// Per-frame catch-up rate (fraction of the remaining gap closed each tick) and the gap size,\n// in degrees, below which we consider the catch-up finished and switch to direct 1:1 writes.\nconst TILT_SMOOTHING = 0.3;\nconst TILT_CONVERGE_EPSILON = 0.05;\n\nconst Tilt = forwardRef<TiltHandle, TiltProps>(function Tilt(props, ref) {\n const {\n children,\n maxTilt = 15,\n maxTiltX,\n maxTiltY,\n perspective = 800,\n easing = defaultTiltEasing,\n lockAxis = 'none',\n scaleOnHover = 1,\n trackingMode = 'self',\n disabled = false,\n onTiltChange,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('Tilt', props);\n\n const rootRef = useRef<HTMLDivElement>(null);\n const surfaceRef = useRef<HTMLDivElement>(null);\n const rafRef = useRef<number | undefined>(undefined);\n const loopActiveRef = useRef(false);\n // Whether the pointer is currently \"over\" the element (self mode: within its own bounds;\n // group mode: the shared group pointer is set). The tilt loop's target is (0,0) whenever this\n // is false, and computed from `latestPointerRef` whenever it's true.\n const isHoveringRef = useRef(false);\n // True while the visually-applied tilt is still catching up to the target after a\n // discontinuity (entering from flat, or leaving back to flat), eased via a per-frame lerp\n // toward whatever the *current* target is. Once the gap closes, updates apply directly (1:1,\n // no lag) so continuous tracking stays crisp. A CSS transition can't do this cleanly: retargeting\n // one mid-flight restarts its full duration from scratch, so a continuously-moving cursor makes\n // it fall further and further behind instead of ever catching up.\n const isCatchingUpRef = useRef(false);\n const latestPointerRef = useRef<{ x: number; y: number } | null>(null);\n const currentTiltRef = useRef({ rotateX: 0, rotateY: 0 });\n\n const group = useTiltGroup();\n const usingGroup = trackingMode === 'group';\n const groupActive = usingGroup && group !== null;\n\n useEffect(() => {\n if (usingGroup && group === null && isDev()) {\n console.warn('Tilt: trackingMode=\"group\" was set with no ancestor TiltGroup, falling back to self tracking.');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [usingGroup, group === null]);\n\n const clampX = maxTiltX ?? maxTilt;\n const clampY = maxTiltY ?? maxTilt;\n\n function writeTiltTransform(rotateX: number, rotateY: number, scale: number) {\n const surface = surfaceRef.current;\n if (!surface) return;\n surface.style.transform = `rotateX(${rotateX}deg) rotateY(${rotateY}deg)` + (scale !== 1 ? ` scale(${scale})` : '');\n }\n\n function stopTiltLoop() {\n if (rafRef.current !== undefined) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = undefined;\n }\n loopActiveRef.current = false;\n }\n\n // The single continuous per-frame driver for tilt. Reads live authoritative state\n // (`isHoveringRef`/`latestPointerRef`) fresh every tick rather than closing over values\n // captured at schedule time, so there's no possibility of a stale queued frame overwriting a\n // newer state.\n function tick() {\n rafRef.current = undefined;\n const surface = surfaceRef.current;\n if (!surface) {\n loopActiveRef.current = false;\n return;\n }\n\n const hovering = isHoveringRef.current && !disabled && !prefersReducedMotion();\n let targetX = 0;\n let targetY = 0;\n if (hovering) {\n const pos = latestPointerRef.current;\n const rect = rootRef.current?.getBoundingClientRect();\n if (pos && rect) {\n const target = computeTilt(pos.x - rect.left, pos.y - rect.top, rect, {\n maxTiltX: clampX,\n maxTiltY: clampY,\n easing,\n lockAxis,\n });\n targetX = target.rotateX;\n targetY = target.rotateY;\n }\n }\n\n const cur = currentTiltRef.current;\n let nextX: number;\n let nextY: number;\n if (isCatchingUpRef.current) {\n nextX = cur.rotateX + (targetX - cur.rotateX) * TILT_SMOOTHING;\n nextY = cur.rotateY + (targetY - cur.rotateY) * TILT_SMOOTHING;\n if (Math.abs(targetX - nextX) < TILT_CONVERGE_EPSILON && Math.abs(targetY - nextY) < TILT_CONVERGE_EPSILON) {\n nextX = targetX;\n nextY = targetY;\n isCatchingUpRef.current = false;\n }\n } else {\n // Locked on: apply the target directly, every frame. This is what keeps continuous\n // tracking crisp with zero added lag once the catch-up phase has finished.\n nextX = targetX;\n nextY = targetY;\n }\n\n currentTiltRef.current = { rotateX: nextX, rotateY: nextY };\n writeTiltTransform(nextX, nextY, hovering ? scaleOnHover : 1);\n onTiltChange?.(nextX, nextY);\n\n // Once locked on (nothing left to ease), stop rescheduling. The next native pointermove\n // (self mode) or group pointer update (group mode) calls `ensureTiltLoopRunning()` again on\n // its own, restarting the loop for exactly the one instant tick it needs.\n if (!isCatchingUpRef.current) {\n loopActiveRef.current = false;\n return;\n }\n rafRef.current = requestAnimationFrame(tick);\n }\n\n function ensureTiltLoopRunning() {\n if (loopActiveRef.current) return;\n loopActiveRef.current = true;\n rafRef.current = requestAnimationFrame(tick);\n }\n\n // Marks a hover-state transition (entering or leaving) so the loop re-arms its catch-up phase.\n // Only on an actual flip, not on every pointermove while already hovering, so continuous\n // tracking never re-triggers easing.\n function setHovering(next: boolean) {\n if (isHoveringRef.current !== next) {\n isCatchingUpRef.current = true;\n }\n isHoveringRef.current = next;\n ensureTiltLoopRunning();\n }\n\n // Self-mode pointer handlers.\n const handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || groupActive || prefersReducedMotion()) return;\n latestPointerRef.current = { x: event.clientX, y: event.clientY };\n setHovering(true);\n };\n\n const handlePointerLeave = () => {\n if (groupActive) return;\n setHovering(false);\n };\n\n // Group-mode tracking: react to the shared pointer position published by TiltGroup.\n useEffect(() => {\n if (!groupActive) return;\n if (disabled || prefersReducedMotion()) {\n setHovering(false);\n return;\n }\n if (group?.pointer && group.rect) {\n latestPointerRef.current = { x: group.rect.left + group.pointer.x, y: group.rect.top + group.pointer.y };\n setHovering(true);\n } else {\n setHovering(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [groupActive, disabled, group?.pointer, group?.rect]);\n\n useEffect(() => {\n // Must go through stopTiltLoop() (not just cancelAnimationFrame) so loopActiveRef is reset\n // too. Under React StrictMode, every effect's cleanup runs once synchronously right after\n // its setup, before setup runs again, so this fires even though the component isn't really\n // unmounting. The group-mode effect above runs on every mount (it schedules the loop as soon\n // as there's a group context, even with a still-null pointer), so cancelling its pending\n // frame here without also clearing loopActiveRef left the loop believing it was still\n // \"active\" with nothing actually scheduled: permanently wedged, since every later call to\n // ensureTiltLoopRunning() saw loopActiveRef already true and silently no-opped forever.\n return () => {\n stopTiltLoop();\n };\n }, []);\n\n useImperativeHandle(ref, () => ({\n setTilt(rotateX: number, rotateY: number) {\n const clamped = {\n rotateX: Math.max(-clampX, Math.min(clampX, rotateX)),\n rotateY: Math.max(-clampY, Math.min(clampY, rotateY)),\n };\n // Stops the loop so live tracking (if any is active) can't overwrite this explicit value\n // on the very next frame. An external caller driving custom choreography expects the\n // value it just set to actually stick. A later real pointer move restarts tracking fresh.\n stopTiltLoop();\n isHoveringRef.current = false;\n isCatchingUpRef.current = false;\n currentTiltRef.current = clamped;\n writeTiltTransform(clamped.rotateX, clamped.rotateY, scaleOnHover);\n onTiltChange?.(clamped.rotateX, clamped.rotateY);\n },\n reset() {\n stopTiltLoop();\n isHoveringRef.current = false;\n isCatchingUpRef.current = false;\n currentTiltRef.current = { rotateX: 0, rotateY: 0 };\n writeTiltTransform(0, 0, 1);\n },\n }));\n\n return (\n <div\n {...rest}\n ref={rootRef}\n className={cx(styles.tilt, className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\n onPointerMove={handlePointerMove}\n onPointerLeave={handlePointerLeave}\n onPointerCancel={handlePointerLeave}\n >\n <div\n className={cx(styles.tiltPerspective, classNames?.perspective)}\n style={{ perspective: `${perspective}px`, ...slotStyles?.perspective }}\n >\n <div ref={surfaceRef} className={cx(styles.tiltSurface, classNames?.surface)} style={slotStyles?.surface}>\n {children}\n </div>\n </div>\n </div>\n );\n});\n\nexport default Tilt;\n"],"mappings":"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"}
1
+ {"version":3,"file":"tilt.mjs","names":[],"sources":["../../../../package/common/tilt/tilt.tsx"],"sourcesContent":["import { useEffect, useImperativeHandle, useRef, type PointerEvent as ReactPointerEvent } from 'react';\nimport cx from 'classnames';\n\nimport { useComponentDefaults } from '../configProvider';\nimport { useTiltGroup } from '../tiltGroup';\nimport { computeTilt, defaultTiltEasing } from './tiltMath';\nimport type { TiltProps } from './tilt.types';\nimport styles from './tilt.module.pcss';\n\n// Module-scoped ambient typing for the bundler-replaced NODE_ENV guard below. See bodyEnd.tsx.\ndeclare const process: { env: { NODE_ENV?: string } };\n\nfunction isDev(): boolean {\n return typeof process !== 'undefined' && process.env.NODE_ENV !== 'production';\n}\n\nfunction prefersReducedMotion(): boolean {\n return typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches === true;\n}\n\n// Per-frame catch-up rate (fraction of the remaining gap closed each tick) and the gap size,\n// in degrees, below which we consider the catch-up finished and switch to direct 1:1 writes.\nconst TILT_SMOOTHING = 0.3;\nconst TILT_CONVERGE_EPSILON = 0.05;\n\nfunction Tilt(props: TiltProps) {\n const {\n ref,\n children,\n maxTilt = 15,\n maxTiltX,\n maxTiltY,\n perspective = 800,\n easing = defaultTiltEasing,\n lockAxis = 'none',\n scaleOnHover = 1,\n trackingMode = 'self',\n disabled = false,\n onTiltChange,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('Tilt', props);\n\n const rootRef = useRef<HTMLDivElement>(null);\n const surfaceRef = useRef<HTMLDivElement>(null);\n const rafRef = useRef<number | undefined>(undefined);\n const loopActiveRef = useRef(false);\n // Whether the pointer is currently \"over\" the element (self mode: within its own bounds;\n // group mode: the shared group pointer is set). The tilt loop's target is (0,0) whenever this\n // is false, and computed from `latestPointerRef` whenever it's true.\n const isHoveringRef = useRef(false);\n // True while the visually-applied tilt is still catching up to the target after a\n // discontinuity (entering from flat, or leaving back to flat), eased via a per-frame lerp\n // toward whatever the *current* target is. Once the gap closes, updates apply directly (1:1,\n // no lag) so continuous tracking stays crisp. A CSS transition can't do this cleanly: retargeting\n // one mid-flight restarts its full duration from scratch, so a continuously-moving cursor makes\n // it fall further and further behind instead of ever catching up.\n const isCatchingUpRef = useRef(false);\n const latestPointerRef = useRef<{ x: number; y: number } | null>(null);\n const currentTiltRef = useRef({ rotateX: 0, rotateY: 0 });\n\n const group = useTiltGroup();\n const usingGroup = trackingMode === 'group';\n const groupActive = usingGroup && group !== null;\n\n useEffect(() => {\n if (usingGroup && group === null && isDev()) {\n console.warn('Tilt: trackingMode=\"group\" was set with no ancestor TiltGroup, falling back to self tracking.');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [usingGroup, group === null]);\n\n const clampX = maxTiltX ?? maxTilt;\n const clampY = maxTiltY ?? maxTilt;\n\n function writeTiltTransform(rotateX: number, rotateY: number, scale: number) {\n const surface = surfaceRef.current;\n if (!surface) return;\n surface.style.transform = `rotateX(${rotateX}deg) rotateY(${rotateY}deg)` + (scale !== 1 ? ` scale(${scale})` : '');\n }\n\n function stopTiltLoop() {\n if (rafRef.current !== undefined) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = undefined;\n }\n loopActiveRef.current = false;\n }\n\n // The single continuous per-frame driver for tilt. Reads live authoritative state\n // (`isHoveringRef`/`latestPointerRef`) fresh every tick rather than closing over values\n // captured at schedule time, so there's no possibility of a stale queued frame overwriting a\n // newer state.\n function tick() {\n rafRef.current = undefined;\n const surface = surfaceRef.current;\n if (!surface) {\n loopActiveRef.current = false;\n return;\n }\n\n const hovering = isHoveringRef.current && !disabled && !prefersReducedMotion();\n let targetX = 0;\n let targetY = 0;\n if (hovering) {\n const pos = latestPointerRef.current;\n const rect = rootRef.current?.getBoundingClientRect();\n if (pos && rect) {\n const target = computeTilt(pos.x - rect.left, pos.y - rect.top, rect, {\n maxTiltX: clampX,\n maxTiltY: clampY,\n easing,\n lockAxis,\n });\n targetX = target.rotateX;\n targetY = target.rotateY;\n }\n }\n\n const cur = currentTiltRef.current;\n let nextX: number;\n let nextY: number;\n if (isCatchingUpRef.current) {\n nextX = cur.rotateX + (targetX - cur.rotateX) * TILT_SMOOTHING;\n nextY = cur.rotateY + (targetY - cur.rotateY) * TILT_SMOOTHING;\n if (Math.abs(targetX - nextX) < TILT_CONVERGE_EPSILON && Math.abs(targetY - nextY) < TILT_CONVERGE_EPSILON) {\n nextX = targetX;\n nextY = targetY;\n isCatchingUpRef.current = false;\n }\n } else {\n // Locked on: apply the target directly, every frame. This is what keeps continuous\n // tracking crisp with zero added lag once the catch-up phase has finished.\n nextX = targetX;\n nextY = targetY;\n }\n\n currentTiltRef.current = { rotateX: nextX, rotateY: nextY };\n writeTiltTransform(nextX, nextY, hovering ? scaleOnHover : 1);\n onTiltChange?.(nextX, nextY);\n\n // Once locked on (nothing left to ease), stop rescheduling. The next native pointermove\n // (self mode) or group pointer update (group mode) calls `ensureTiltLoopRunning()` again on\n // its own, restarting the loop for exactly the one instant tick it needs.\n if (!isCatchingUpRef.current) {\n loopActiveRef.current = false;\n return;\n }\n rafRef.current = requestAnimationFrame(tick);\n }\n\n function ensureTiltLoopRunning() {\n if (loopActiveRef.current) return;\n loopActiveRef.current = true;\n rafRef.current = requestAnimationFrame(tick);\n }\n\n // Marks a hover-state transition (entering or leaving) so the loop re-arms its catch-up phase.\n // Only on an actual flip, not on every pointermove while already hovering, so continuous\n // tracking never re-triggers easing.\n function setHovering(next: boolean) {\n if (isHoveringRef.current !== next) {\n isCatchingUpRef.current = true;\n }\n isHoveringRef.current = next;\n ensureTiltLoopRunning();\n }\n\n // Self-mode pointer handlers.\n const handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || groupActive || prefersReducedMotion()) return;\n latestPointerRef.current = { x: event.clientX, y: event.clientY };\n setHovering(true);\n };\n\n const handlePointerLeave = () => {\n if (groupActive) return;\n setHovering(false);\n };\n\n // Group-mode tracking: react to the shared pointer position published by TiltGroup.\n useEffect(() => {\n if (!groupActive) return;\n if (disabled || prefersReducedMotion()) {\n setHovering(false);\n return;\n }\n if (group?.pointer && group.rect) {\n latestPointerRef.current = { x: group.rect.left + group.pointer.x, y: group.rect.top + group.pointer.y };\n setHovering(true);\n } else {\n setHovering(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [groupActive, disabled, group?.pointer, group?.rect]);\n\n useEffect(() => {\n // Must go through stopTiltLoop() (not just cancelAnimationFrame) so loopActiveRef is reset\n // too. Under React StrictMode, every effect's cleanup runs once synchronously right after\n // its setup, before setup runs again, so this fires even though the component isn't really\n // unmounting. The group-mode effect above runs on every mount (it schedules the loop as soon\n // as there's a group context, even with a still-null pointer), so cancelling its pending\n // frame here without also clearing loopActiveRef left the loop believing it was still\n // \"active\" with nothing actually scheduled: permanently wedged, since every later call to\n // ensureTiltLoopRunning() saw loopActiveRef already true and silently no-opped forever.\n return () => {\n stopTiltLoop();\n };\n }, []);\n\n useImperativeHandle(ref, () => ({\n setTilt(rotateX: number, rotateY: number) {\n const clamped = {\n rotateX: Math.max(-clampX, Math.min(clampX, rotateX)),\n rotateY: Math.max(-clampY, Math.min(clampY, rotateY)),\n };\n // Stops the loop so live tracking (if any is active) can't overwrite this explicit value\n // on the very next frame. An external caller driving custom choreography expects the\n // value it just set to actually stick. A later real pointer move restarts tracking fresh.\n stopTiltLoop();\n isHoveringRef.current = false;\n isCatchingUpRef.current = false;\n currentTiltRef.current = clamped;\n writeTiltTransform(clamped.rotateX, clamped.rotateY, scaleOnHover);\n onTiltChange?.(clamped.rotateX, clamped.rotateY);\n },\n reset() {\n stopTiltLoop();\n isHoveringRef.current = false;\n isCatchingUpRef.current = false;\n currentTiltRef.current = { rotateX: 0, rotateY: 0 };\n writeTiltTransform(0, 0, 1);\n },\n }));\n\n return (\n <div\n {...rest}\n ref={rootRef}\n className={cx(styles.tilt, className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\n onPointerMove={handlePointerMove}\n onPointerLeave={handlePointerLeave}\n onPointerCancel={handlePointerLeave}\n >\n <div\n className={cx(styles.tiltPerspective, classNames?.perspective)}\n style={{ perspective: `${perspective}px`, ...slotStyles?.perspective }}\n >\n <div ref={surfaceRef} className={cx(styles.tiltSurface, classNames?.surface)} style={slotStyles?.surface}>\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nexport default Tilt;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e=`tilt_gbX2b`,t=`tilt-perspective_CFdP6`,n=`tilt-surface_Jyzwe`,r={tilt:e,"tilt-perspective":`tilt-perspective_CFdP6`,tiltPerspective:t,"tilt-surface":`tilt-surface_Jyzwe`,tiltSurface:n};export{r as default,e as tilt,t as tiltPerspective,n as tiltSurface};
1
+ "use client";var e=`tilt_gbX2b`,t=`tilt-perspective_CFdP6`,n=`tilt-surface_Jyzwe`,r={tilt:e,"tilt-perspective":`tilt-perspective_CFdP6`,tiltPerspective:t,"tilt-surface":`tilt-surface_Jyzwe`,tiltSurface:n};export{r as default,e as tilt,t as tiltPerspective,n as tiltSurface};
2
2
  //# sourceMappingURL=tilt.module.mjs.map
@@ -1,2 +1,2 @@
1
- function e(e){let t=Math.max(-1,Math.min(1,e));return Math.sign(t)*Math.abs(t)**1.6}function t(e,t){return Math.max(-t,Math.min(t,e))}function n(e,n,r,{maxTiltX:i,maxTiltY:a,easing:o,lockAxis:s}){let c=r.width>0?e/r.width*2-1:0,l=r.height>0?n/r.height*2-1:0;return{rotateX:s===`x`?0:t(-o(l)*i,i),rotateY:s===`y`?0:t(o(c)*a,a)}}export{n as computeTilt,e as defaultTiltEasing};
1
+ "use client";function e(e){let t=Math.max(-1,Math.min(1,e));return Math.sign(t)*Math.abs(t)**1.6}function t(e,t){return Math.max(-t,Math.min(t,e))}function n(e,n,r,{maxTiltX:i,maxTiltY:a,easing:o,lockAxis:s}){let c=r.width>0?e/r.width*2-1:0,l=r.height>0?n/r.height*2-1:0;return{rotateX:s===`x`?0:t(-o(l)*i,i),rotateY:s===`y`?0:t(o(c)*a,a)}}export{n as computeTilt,e as defaultTiltEasing};
2
2
  //# sourceMappingURL=tiltMath.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tiltMath.mjs","names":[],"sources":["../../../../package/common/tilt/tiltMath.ts"],"sourcesContent":["export type TiltAxisLock = 'x' | 'y' | 'none';\n\nexport interface ComputeTiltOptions {\n maxTiltX: number;\n maxTiltY: number;\n easing: (t: number) => number;\n lockAxis: TiltAxisLock;\n}\n\nexport interface TiltResult {\n rotateX: number;\n rotateY: number;\n}\n\n/**\n * Eases faster near the edges (|t| close to 1) and flatter near the center (|t| close to 0),\n * while staying odd-symmetric so tilt direction always matches cursor direction.\n */\nexport function defaultTiltEasing(t: number): number {\n const clamped = Math.max(-1, Math.min(1, t));\n return Math.sign(clamped) * Math.pow(Math.abs(clamped), 1.6);\n}\n\nfunction clamp(value: number, max: number): number {\n return Math.max(-max, Math.min(max, value));\n}\n\n/**\n * Computes the tilt rotation for a pointer at (x, y) relative to `rect`'s top-left corner.\n * Vertical cursor position drives rotateX (tilts top/bottom edges), horizontal drives rotateY.\n */\nexport function computeTilt(\n x: number,\n y: number,\n rect: { width: number; height: number },\n { maxTiltX, maxTiltY, easing, lockAxis }: ComputeTiltOptions,\n): TiltResult {\n const nx = rect.width > 0 ? (x / rect.width) * 2 - 1 : 0;\n const ny = rect.height > 0 ? (y / rect.height) * 2 - 1 : 0;\n\n const rotateX = lockAxis === 'x' ? 0 : clamp(-easing(ny) * maxTiltX, maxTiltX);\n const rotateY = lockAxis === 'y' ? 0 : clamp(easing(nx) * maxTiltY, maxTiltY);\n\n return { rotateX, rotateY };\n}\n"],"mappings":"AAkBA,SAAgB,EAAkB,EAAmB,CACnD,IAAM,EAAU,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,CAAC,CAAC,EAC3C,OAAO,KAAK,KAAK,CAAO,EAAa,KAAK,IAAI,CAAO,GAAG,GAC1D,CAEA,SAAS,EAAM,EAAe,EAAqB,CACjD,OAAO,KAAK,IAAI,CAAC,EAAK,KAAK,IAAI,EAAK,CAAK,CAAC,CAC5C,CAMA,SAAgB,EACd,EACA,EACA,EACA,CAAE,WAAU,WAAU,SAAQ,YAClB,CACZ,IAAM,EAAK,EAAK,MAAQ,EAAK,EAAI,EAAK,MAAS,EAAI,EAAI,EACjD,EAAK,EAAK,OAAS,EAAK,EAAI,EAAK,OAAU,EAAI,EAAI,EAKzD,MAAO,CAAE,QAHO,IAAa,IAAM,EAAI,EAAM,CAAC,EAAO,CAAE,EAAI,EAAU,CAAQ,EAG3D,QAFF,IAAa,IAAM,EAAI,EAAM,EAAO,CAAE,EAAI,EAAU,CAAQ,CAElD,CAC5B"}
1
+ {"version":3,"file":"tiltMath.mjs","names":[],"sources":["../../../../package/common/tilt/tiltMath.ts"],"sourcesContent":["export type TiltAxisLock = 'x' | 'y' | 'none';\n\nexport interface ComputeTiltOptions {\n maxTiltX: number;\n maxTiltY: number;\n easing: (t: number) => number;\n lockAxis: TiltAxisLock;\n}\n\nexport interface TiltResult {\n rotateX: number;\n rotateY: number;\n}\n\n/**\n * Eases faster near the edges (|t| close to 1) and flatter near the center (|t| close to 0),\n * while staying odd-symmetric so tilt direction always matches cursor direction.\n */\nexport function defaultTiltEasing(t: number): number {\n const clamped = Math.max(-1, Math.min(1, t));\n return Math.sign(clamped) * Math.pow(Math.abs(clamped), 1.6);\n}\n\nfunction clamp(value: number, max: number): number {\n return Math.max(-max, Math.min(max, value));\n}\n\n/**\n * Computes the tilt rotation for a pointer at (x, y) relative to `rect`'s top-left corner.\n * Vertical cursor position drives rotateX (tilts top/bottom edges), horizontal drives rotateY.\n */\nexport function computeTilt(\n x: number,\n y: number,\n rect: { width: number; height: number },\n { maxTiltX, maxTiltY, easing, lockAxis }: ComputeTiltOptions,\n): TiltResult {\n const nx = rect.width > 0 ? (x / rect.width) * 2 - 1 : 0;\n const ny = rect.height > 0 ? (y / rect.height) * 2 - 1 : 0;\n\n const rotateX = lockAxis === 'x' ? 0 : clamp(-easing(ny) * maxTiltX, maxTiltX);\n const rotateY = lockAxis === 'y' ? 0 : clamp(easing(nx) * maxTiltY, maxTiltY);\n\n return { rotateX, rotateY };\n}\n"],"mappings":"aAkBA,SAAgB,EAAkB,EAAmB,CACnD,IAAM,EAAU,KAAK,IAAI,GAAI,KAAK,IAAI,EAAG,CAAC,CAAC,EAC3C,OAAO,KAAK,KAAK,CAAO,EAAa,KAAK,IAAI,CAAO,GAAG,GAC1D,CAEA,SAAS,EAAM,EAAe,EAAqB,CACjD,OAAO,KAAK,IAAI,CAAC,EAAK,KAAK,IAAI,EAAK,CAAK,CAAC,CAC5C,CAMA,SAAgB,EACd,EACA,EACA,EACA,CAAE,WAAU,WAAU,SAAQ,YAClB,CACZ,IAAM,EAAK,EAAK,MAAQ,EAAK,EAAI,EAAK,MAAS,EAAI,EAAI,EACjD,EAAK,EAAK,OAAS,EAAK,EAAI,EAAK,OAAU,EAAI,EAAI,EAKzD,MAAO,CAAE,QAHO,IAAa,IAAM,EAAI,EAAM,CAAC,EAAO,CAAE,EAAI,EAAU,CAAQ,EAG3D,QAFF,IAAa,IAAM,EAAI,EAAM,EAAO,CAAE,EAAI,EAAU,CAAQ,CAElD,CAC5B"}
@@ -1,2 +1,2 @@
1
- import{createContext as e,useContext as t,useRef as n,useState as r}from"react";import{jsx as i}from"react/jsx-runtime";var a=e(null);function o(){return t(a)}function s({children:e,className:t,style:o,...s}){let c=n(null),l=n(void 0),u=n(!1),d=n(null),[f,p]=r({pointer:null,rect:null}),m=()=>{u.current||(u.current=!0,l.current=requestAnimationFrame(()=>{u.current=!1,l.current=void 0;let e=c.current,t=d.current;if(!e||!t)return;let n=e.getBoundingClientRect();p({pointer:{x:t.x-n.left,y:t.y-n.top},rect:n})}))},h=e=>{d.current={x:e.clientX,y:e.clientY},m()},g=()=>{d.current=null,u.current&&l.current!==void 0&&(cancelAnimationFrame(l.current),u.current=!1,l.current=void 0),p({pointer:null,rect:null})};return i(`div`,{...s,ref:c,className:t,style:o,onPointerMove:h,onPointerLeave:g,children:i(a.Provider,{value:f,children:e})})}export{a as TiltGroupContext,s as default,o as useTiltGroup};
1
+ "use client";import{createContext as e,useContext as t,useRef as n,useState as r}from"react";import{jsx as i}from"react/jsx-runtime";var a=e(null);function o(){return t(a)}function s({children:e,className:t,style:o,...s}){let c=n(null),l=n(void 0),u=n(!1),d=n(null),[f,p]=r({pointer:null,rect:null}),m=()=>{u.current||(u.current=!0,l.current=requestAnimationFrame(()=>{u.current=!1,l.current=void 0;let e=c.current,t=d.current;if(!e||!t)return;let n=e.getBoundingClientRect();p({pointer:{x:t.x-n.left,y:t.y-n.top},rect:n})}))},h=e=>{d.current={x:e.clientX,y:e.clientY},m()},g=()=>{d.current=null,u.current&&l.current!==void 0&&(cancelAnimationFrame(l.current),u.current=!1,l.current=void 0),p({pointer:null,rect:null})};return i(`div`,{...s,ref:c,className:t,style:o,onPointerMove:h,onPointerLeave:g,children:i(a.Provider,{value:f,children:e})})}export{a as TiltGroupContext,s as default,o as useTiltGroup};
2
2
  //# sourceMappingURL=tiltGroup.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tiltGroup.mjs","names":[],"sources":["../../../../package/common/tiltGroup/tiltGroup.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useRef,\n useState,\n type PointerEvent as ReactPointerEvent,\n type ReactElement,\n} from 'react';\nimport type { TiltGroupContextValue, TiltGroupProps } from './tiltGroup.types';\n\nexport const TiltGroupContext = createContext<TiltGroupContextValue | null>(null);\n\nexport function useTiltGroup(): TiltGroupContextValue | null {\n return useContext(TiltGroupContext);\n}\n\nfunction TiltGroup({ children, className, style, ...rest }: TiltGroupProps): ReactElement {\n const rootRef = useRef<HTMLDivElement>(null);\n const rafRef = useRef<number | undefined>(undefined);\n // See Tilt's identical `rafPendingRef` for why this is tracked separately from `rafRef`.\n const rafPendingRef = useRef(false);\n const latestClientPos = useRef<{ x: number; y: number } | null>(null);\n const [value, setValue] = useState<TiltGroupContextValue>({ pointer: null, rect: null });\n\n const scheduleUpdate = () => {\n if (rafPendingRef.current) return;\n rafPendingRef.current = true;\n rafRef.current = requestAnimationFrame(() => {\n rafPendingRef.current = false;\n rafRef.current = undefined;\n const root = rootRef.current;\n const pos = latestClientPos.current;\n if (!root || !pos) return;\n const rect = root.getBoundingClientRect();\n setValue({ pointer: { x: pos.x - rect.left, y: pos.y - rect.top }, rect });\n });\n };\n\n const handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n latestClientPos.current = { x: event.clientX, y: event.clientY };\n scheduleUpdate();\n };\n\n const handlePointerLeave = () => {\n latestClientPos.current = null;\n if (rafPendingRef.current && rafRef.current !== undefined) {\n cancelAnimationFrame(rafRef.current);\n rafPendingRef.current = false;\n rafRef.current = undefined;\n }\n setValue({ pointer: null, rect: null });\n };\n\n return (\n <div\n {...rest}\n ref={rootRef}\n className={className}\n style={style}\n onPointerMove={handlePointerMove}\n onPointerLeave={handlePointerLeave}\n >\n <TiltGroupContext.Provider value={value}>{children}</TiltGroupContext.Provider>\n </div>\n );\n}\n\nexport default TiltGroup;\n"],"mappings":"wHAUA,IAAa,EAAmB,EAA4C,IAAI,EAEhF,SAAgB,GAA6C,CAC3D,OAAO,EAAW,CAAgB,CACpC,CAEA,SAAS,EAAU,CAAE,WAAU,YAAW,QAAO,GAAG,GAAsC,CACxF,IAAM,EAAU,EAAuB,IAAI,EACrC,EAAS,EAA2B,IAAA,EAAS,EAE7C,EAAgB,EAAO,EAAK,EAC5B,EAAkB,EAAwC,IAAI,EAC9D,CAAC,EAAO,GAAY,EAAgC,CAAE,QAAS,KAAM,KAAM,IAAK,CAAC,EAEjF,MAAuB,CACvB,EAAc,UAClB,EAAc,QAAU,GACxB,EAAO,QAAU,0BAA4B,CAC3C,EAAc,QAAU,GACxB,EAAO,QAAU,IAAA,GACjB,IAAM,EAAO,EAAQ,QACf,EAAM,EAAgB,QAC5B,GAAI,CAAC,GAAQ,CAAC,EAAK,OACnB,IAAM,EAAO,EAAK,sBAAsB,EACxC,EAAS,CAAE,QAAS,CAAE,EAAG,EAAI,EAAI,EAAK,KAAM,EAAG,EAAI,EAAI,EAAK,GAAI,EAAG,MAAK,CAAC,CAC3E,CAAC,EACH,EAEM,EAAqB,GAA6C,CACtE,EAAgB,QAAU,CAAE,EAAG,EAAM,QAAS,EAAG,EAAM,OAAQ,EAC/D,EAAe,CACjB,EAEM,MAA2B,CAC/B,EAAgB,QAAU,KACtB,EAAc,SAAW,EAAO,UAAY,IAAA,KAC9C,qBAAqB,EAAO,OAAO,EACnC,EAAc,QAAU,GACxB,EAAO,QAAU,IAAA,IAEnB,EAAS,CAAE,QAAS,KAAM,KAAM,IAAK,CAAC,CACxC,EAEA,OACE,EAAC,MAAD,CACE,GAAI,EACJ,IAAK,EACM,YACJ,QACP,cAAe,EACf,eAAgB,EAEhB,SAAA,EAAC,EAAiB,SAAlB,CAAkC,QAAQ,UAAoC,CAAA,CAC3E,CAAA,CAET"}
1
+ {"version":3,"file":"tiltGroup.mjs","names":[],"sources":["../../../../package/common/tiltGroup/tiltGroup.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useRef,\n useState,\n type PointerEvent as ReactPointerEvent,\n type ReactElement,\n} from 'react';\nimport type { TiltGroupContextValue, TiltGroupProps } from './tiltGroup.types';\n\nexport const TiltGroupContext = createContext<TiltGroupContextValue | null>(null);\n\nexport function useTiltGroup(): TiltGroupContextValue | null {\n return useContext(TiltGroupContext);\n}\n\nfunction TiltGroup({ children, className, style, ...rest }: TiltGroupProps): ReactElement {\n const rootRef = useRef<HTMLDivElement>(null);\n const rafRef = useRef<number | undefined>(undefined);\n // See Tilt's identical `rafPendingRef` for why this is tracked separately from `rafRef`.\n const rafPendingRef = useRef(false);\n const latestClientPos = useRef<{ x: number; y: number } | null>(null);\n const [value, setValue] = useState<TiltGroupContextValue>({ pointer: null, rect: null });\n\n const scheduleUpdate = () => {\n if (rafPendingRef.current) return;\n rafPendingRef.current = true;\n rafRef.current = requestAnimationFrame(() => {\n rafPendingRef.current = false;\n rafRef.current = undefined;\n const root = rootRef.current;\n const pos = latestClientPos.current;\n if (!root || !pos) return;\n const rect = root.getBoundingClientRect();\n setValue({ pointer: { x: pos.x - rect.left, y: pos.y - rect.top }, rect });\n });\n };\n\n const handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n latestClientPos.current = { x: event.clientX, y: event.clientY };\n scheduleUpdate();\n };\n\n const handlePointerLeave = () => {\n latestClientPos.current = null;\n if (rafPendingRef.current && rafRef.current !== undefined) {\n cancelAnimationFrame(rafRef.current);\n rafPendingRef.current = false;\n rafRef.current = undefined;\n }\n setValue({ pointer: null, rect: null });\n };\n\n return (\n <div\n {...rest}\n ref={rootRef}\n className={className}\n style={style}\n onPointerMove={handlePointerMove}\n onPointerLeave={handlePointerLeave}\n >\n <TiltGroupContext.Provider value={value}>{children}</TiltGroupContext.Provider>\n </div>\n );\n}\n\nexport default TiltGroup;\n"],"mappings":"qIAUA,IAAa,EAAmB,EAA4C,IAAI,EAEhF,SAAgB,GAA6C,CAC3D,OAAO,EAAW,CAAgB,CACpC,CAEA,SAAS,EAAU,CAAE,WAAU,YAAW,QAAO,GAAG,GAAsC,CACxF,IAAM,EAAU,EAAuB,IAAI,EACrC,EAAS,EAA2B,IAAA,EAAS,EAE7C,EAAgB,EAAO,EAAK,EAC5B,EAAkB,EAAwC,IAAI,EAC9D,CAAC,EAAO,GAAY,EAAgC,CAAE,QAAS,KAAM,KAAM,IAAK,CAAC,EAEjF,MAAuB,CACvB,EAAc,UAClB,EAAc,QAAU,GACxB,EAAO,QAAU,0BAA4B,CAC3C,EAAc,QAAU,GACxB,EAAO,QAAU,IAAA,GACjB,IAAM,EAAO,EAAQ,QACf,EAAM,EAAgB,QAC5B,GAAI,CAAC,GAAQ,CAAC,EAAK,OACnB,IAAM,EAAO,EAAK,sBAAsB,EACxC,EAAS,CAAE,QAAS,CAAE,EAAG,EAAI,EAAI,EAAK,KAAM,EAAG,EAAI,EAAI,EAAK,GAAI,EAAG,MAAK,CAAC,CAC3E,CAAC,EACH,EAEM,EAAqB,GAA6C,CACtE,EAAgB,QAAU,CAAE,EAAG,EAAM,QAAS,EAAG,EAAM,OAAQ,EAC/D,EAAe,CACjB,EAEM,MAA2B,CAC/B,EAAgB,QAAU,KACtB,EAAc,SAAW,EAAO,UAAY,IAAA,KAC9C,qBAAqB,EAAO,OAAO,EACnC,EAAc,QAAU,GACxB,EAAO,QAAU,IAAA,IAEnB,EAAS,CAAE,QAAS,KAAM,KAAM,IAAK,CAAC,CACxC,EAEA,OACE,EAAC,MAAD,CACE,GAAI,EACJ,IAAK,EACM,YACJ,QACP,cAAe,EACf,eAAgB,EAEhB,SAAA,EAAC,EAAiB,SAAlB,CAAkC,QAAQ,UAAoC,CAAA,CAC3E,CAAA,CAET"}
@@ -1,2 +1,2 @@
1
- import{clampHour as e,pointerAngle as t,pointerRadius as n,polarPoint as r,snapMinute as i}from"../../timeFunctions.mjs";import a from"./clockDial.module.mjs";import{useRef as o}from"react";import s from"classnames";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u=50,d=40,f=25.5,p=65.5/2,m=30,h=6,g=e=>(e+11)%12+1;function _(e,t){if(e===`minutes`)return Array.from({length:12},(e,t)=>{let n=t*5;return{label:String(n).padStart(2,`0`),slot:t,value:n,ring:`outer`}});if(!t)return Array.from({length:12},(e,t)=>{let n=t===0?12:t;return{label:String(n),slot:t,value:n,ring:`outer`}});let n=Array.from({length:12},(e,t)=>{let n=t===0?12:t;return{label:String(n),slot:t,value:n,ring:`outer`}}),r=Array.from({length:12},(e,t)=>{let n=t===0?0:t+12;return{label:String(n).padStart(2,`0`),slot:t,value:n,ring:`inner`}});return[...n,...r]}function v({time:v,mode:y,use24Hour:b,minuteStep:x,onChange:S,onCommit:C,classNames:w,styles:T}){let E=o(null),D=o(!1),O=_(y,b),k=v.hours>=12,A=g(v.hours),j=y===`minutes`?{slot:v.minutes,radius:d}:b?v.hours===0?{slot:0,radius:f}:v.hours<=12?{slot:v.hours%12,radius:d}:{slot:(v.hours-12)%12,radius:f}:{slot:A%12,radius:d},M=r(u,u,j.radius,j.slot,y===`minutes`?h:m),N=e=>y===`minutes`?i(v.minutes,x)===e.value||v.minutes===e.value:b?v.hours===e.value:A===e.value,P=(r,a)=>{let o=E.current?.getBoundingClientRect();if(!o)return v;let s=r-(o.left+o.width/2),c=a-(o.top+o.height/2),l=t(s,c);if(y===`minutes`){let e=i(Math.round(l/h),x);return{hours:v.hours,minutes:e}}let d=Math.round(l/m)%12;if(!b){let t=d===0?12:d,n=k?t%12+12:t%12;return{hours:e(n),minutes:v.minutes}}let f=n(s,c)/(o.width/2)*u<p?d===0?0:d+12:d===0?12:d;return{hours:e(f),minutes:v.minutes}};return l(`div`,{ref:E,className:s(a.clockFace,w?.clockFace),style:T?.clockFace,onPointerDown:e=>{D.current=!0,e.currentTarget.setPointerCapture?.(e.pointerId),S(P(e.clientX,e.clientY))},onPointerMove:e=>{D.current&&S(P(e.clientX,e.clientY))},onPointerUp:e=>{D.current&&(D.current=!1,C(P(e.clientX,e.clientY)))},role:`slider`,"aria-label":y===`minutes`?`Minutes`:`Hours`,"aria-valuetext":y===`minutes`?`${v.minutes} minutes`:`${v.hours} hours`,children:[l(`svg`,{className:a.clockHand,viewBox:`0 0 100 100`,"aria-hidden":!0,children:[c(`circle`,{cx:u,cy:u,r:1.8,className:a.clockHandCenter}),c(`line`,{x1:u,y1:u,x2:M.x,y2:M.y,className:a.clockHandLine}),c(`circle`,{cx:M.x,cy:M.y,r:7,className:s(a.clockHandKnob,w?.clockHand),style:T?.clockHand})]}),O.map(e=>{let t=r(u,u,e.ring===`inner`?f:d,e.slot,m),n=N(e);return c(`div`,{className:s(a.clockNumber,e.ring===`inner`&&a.clockNumberInner,n&&a.clockNumberSelected,w?.clockNumber),style:{left:`${t.x}%`,top:`${t.y}%`,...T?.clockNumber},children:e.label},`${e.ring}-${e.value}`)})]})}export{v as default};
1
+ "use client";import{clampHour as e,pointerAngle as t,pointerRadius as n,polarPoint as r,snapMinute as i}from"../../timeFunctions.mjs";import a from"./clockDial.module.mjs";import{useRef as o}from"react";import s from"classnames";import{jsx as c,jsxs as l}from"react/jsx-runtime";var u=50,d=40,f=25.5,p=65.5/2,m=30,h=6,g=e=>(e+11)%12+1;function _(e,t){if(e===`minutes`)return Array.from({length:12},(e,t)=>{let n=t*5;return{label:String(n).padStart(2,`0`),slot:t,value:n,ring:`outer`}});if(!t)return Array.from({length:12},(e,t)=>{let n=t===0?12:t;return{label:String(n),slot:t,value:n,ring:`outer`}});let n=Array.from({length:12},(e,t)=>{let n=t===0?12:t;return{label:String(n),slot:t,value:n,ring:`outer`}}),r=Array.from({length:12},(e,t)=>{let n=t===0?0:t+12;return{label:String(n).padStart(2,`0`),slot:t,value:n,ring:`inner`}});return[...n,...r]}function v({time:v,mode:y,use24Hour:b,minuteStep:x,onChange:S,onCommit:C,classNames:w,styles:T}){let E=o(null),D=o(!1),O=_(y,b),k=v.hours>=12,A=g(v.hours),j=y===`minutes`?{slot:v.minutes,radius:d}:b?v.hours===0?{slot:0,radius:f}:v.hours<=12?{slot:v.hours%12,radius:d}:{slot:(v.hours-12)%12,radius:f}:{slot:A%12,radius:d},M=r(u,u,j.radius,j.slot,y===`minutes`?h:m),N=e=>y===`minutes`?i(v.minutes,x)===e.value||v.minutes===e.value:b?v.hours===e.value:A===e.value,P=(r,a)=>{let o=E.current?.getBoundingClientRect();if(!o)return v;let s=r-(o.left+o.width/2),c=a-(o.top+o.height/2),l=t(s,c);if(y===`minutes`){let e=i(Math.round(l/h),x);return{hours:v.hours,minutes:e}}let d=Math.round(l/m)%12;if(!b){let t=d===0?12:d,n=k?t%12+12:t%12;return{hours:e(n),minutes:v.minutes}}let f=n(s,c)/(o.width/2)*u<p?d===0?0:d+12:d===0?12:d;return{hours:e(f),minutes:v.minutes}};return l(`div`,{ref:E,className:s(a.clockFace,w?.clockFace),style:T?.clockFace,onPointerDown:e=>{D.current=!0,e.currentTarget.setPointerCapture?.(e.pointerId),S(P(e.clientX,e.clientY))},onPointerMove:e=>{D.current&&S(P(e.clientX,e.clientY))},onPointerUp:e=>{D.current&&(D.current=!1,C(P(e.clientX,e.clientY)))},role:`slider`,"aria-label":y===`minutes`?`Minutes`:`Hours`,"aria-valuetext":y===`minutes`?`${v.minutes} minutes`:`${v.hours} hours`,children:[l(`svg`,{className:a.clockHand,viewBox:`0 0 100 100`,"aria-hidden":!0,children:[c(`circle`,{cx:u,cy:u,r:1.8,className:a.clockHandCenter}),c(`line`,{x1:u,y1:u,x2:M.x,y2:M.y,className:a.clockHandLine}),c(`circle`,{cx:M.x,cy:M.y,r:7,className:s(a.clockHandKnob,w?.clockHand),style:T?.clockHand})]}),O.map(e=>{let t=r(u,u,e.ring===`inner`?f:d,e.slot,m),n=N(e);return c(`div`,{className:s(a.clockNumber,e.ring===`inner`&&a.clockNumberInner,n&&a.clockNumberSelected,w?.clockNumber),style:{left:`${t.x}%`,top:`${t.y}%`,...T?.clockNumber},children:e.label},`${e.ring}-${e.value}`)})]})}export{v as default};
2
2
  //# sourceMappingURL=clockDial.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"clockDial.mjs","names":[],"sources":["../../../../../../package/common/timeInput/components/clockDial/clockDial.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport cx from 'classnames';\nimport { type TimeValue, clampHour, snapMinute, polarPoint, pointerAngle, pointerRadius } from '../../timeFunctions';\nimport type { ClockDialProps, DialNumber } from './clockDial.types';\n\nimport styles from './clockDial.module.pcss';\n\n// viewBox units (0–100). The face scales with its CSS box; geometry stays in this space.\nconst CENTER = 50;\nconst OUTER_RADIUS = 40;\nconst INNER_RADIUS = 25.5;\nconst RING_THRESHOLD = (OUTER_RADIUS + INNER_RADIUS) / 2;\n\nconst HOUR_STEP_DEG = 30;\nconst MINUTE_STEP_DEG = 6;\n\nconst to12 = (hour: number): number => ((hour + 11) % 12) + 1;\n\n/** Build the labelled numbers for the current mode/format. */\nfunction buildNumbers(mode: 'hours' | 'minutes', use24Hour: boolean): DialNumber[] {\n if (mode === 'minutes') {\n return Array.from({ length: 12 }, (_, slot) => {\n const value = slot * 5;\n return { label: String(value).padStart(2, '0'), slot, value, ring: 'outer' as const };\n });\n }\n\n if (!use24Hour) {\n return Array.from({ length: 12 }, (_, slot) => {\n const value = slot === 0 ? 12 : slot; // displayed hour (1–12)\n return { label: String(value), slot, value, ring: 'outer' as const };\n });\n }\n\n // 24-hour double ring: outer 1–12, inner 00/13–23.\n const outer = Array.from({ length: 12 }, (_, slot) => {\n const value = slot === 0 ? 12 : slot;\n return { label: String(value), slot, value, ring: 'outer' as const };\n });\n const inner = Array.from({ length: 12 }, (_, slot) => {\n const value = slot === 0 ? 0 : slot + 12;\n return { label: String(value).padStart(2, '0'), slot, value, ring: 'inner' as const };\n });\n return [...outer, ...inner];\n}\n\nexport default function ClockDial({\n time,\n mode,\n use24Hour,\n minuteStep,\n onChange,\n onCommit,\n classNames,\n styles: slotStyles,\n}: ClockDialProps) {\n const faceRef = useRef<HTMLDivElement>(null);\n const draggingRef = useRef(false);\n\n const numbers = buildNumbers(mode, use24Hour);\n\n // Resolve the active value and the hand geometry for the current time.\n const isPm = time.hours >= 12;\n const selectedHour12 = to12(time.hours);\n\n const hand = (() => {\n if (mode === 'minutes') {\n // 6° per minute → angle = minutes * MINUTE_STEP_DEG.\n return { slot: time.minutes, radius: OUTER_RADIUS };\n }\n if (!use24Hour) {\n return { slot: selectedHour12 % 12, radius: OUTER_RADIUS };\n }\n if (time.hours === 0) return { slot: 0, radius: INNER_RADIUS };\n if (time.hours <= 12) return { slot: time.hours % 12, radius: OUTER_RADIUS };\n return { slot: (time.hours - 12) % 12, radius: INNER_RADIUS };\n })();\n\n const knob = polarPoint(CENTER, CENTER, hand.radius, hand.slot, mode === 'minutes' ? MINUTE_STEP_DEG : HOUR_STEP_DEG);\n\n const isSelected = (n: DialNumber): boolean =>\n mode === 'minutes'\n ? snapMinute(time.minutes, minuteStep) === n.value || time.minutes === n.value\n : use24Hour\n ? time.hours === n.value\n : selectedHour12 === n.value;\n\n const valueFromPointer = (clientX: number, clientY: number): TimeValue => {\n const rect = faceRef.current?.getBoundingClientRect();\n if (!rect) return time;\n const dx = clientX - (rect.left + rect.width / 2);\n const dy = clientY - (rect.top + rect.height / 2);\n const angle = pointerAngle(dx, dy);\n\n if (mode === 'minutes') {\n const minutes = snapMinute(Math.round(angle / MINUTE_STEP_DEG), minuteStep);\n return { hours: time.hours, minutes };\n }\n\n const slot = Math.round(angle / HOUR_STEP_DEG) % 12;\n if (!use24Hour) {\n const display = slot === 0 ? 12 : slot;\n const hours = isPm ? (display % 12) + 12 : display % 12;\n return { hours: clampHour(hours), minutes: time.minutes };\n }\n\n // 24h: inner vs outer ring decided by pointer distance from centre.\n const radiusFrac = (pointerRadius(dx, dy) / (rect.width / 2)) * CENTER;\n const inner = radiusFrac < RING_THRESHOLD;\n const hours = inner ? (slot === 0 ? 0 : slot + 12) : slot === 0 ? 12 : slot;\n return { hours: clampHour(hours), minutes: time.minutes };\n };\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n draggingRef.current = true;\n // setPointerCapture keeps move/up events flowing to the face even when the\n // pointer started on (or drags over) a number. Guarded for jsdom.\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n onChange(valueFromPointer(e.clientX, e.clientY));\n };\n\n const handlePointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n onChange(valueFromPointer(e.clientX, e.clientY));\n };\n\n const handlePointerUp = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n draggingRef.current = false;\n onCommit(valueFromPointer(e.clientX, e.clientY));\n };\n\n return (\n <div\n ref={faceRef}\n className={cx(styles.clockFace, classNames?.clockFace)}\n style={slotStyles?.clockFace}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n role='slider'\n aria-label={mode === 'minutes' ? 'Minutes' : 'Hours'}\n aria-valuetext={mode === 'minutes' ? `${time.minutes} minutes` : `${time.hours} hours`}\n >\n <svg className={styles.clockHand} viewBox='0 0 100 100' aria-hidden>\n <circle cx={CENTER} cy={CENTER} r={1.8} className={styles.clockHandCenter} />\n <line x1={CENTER} y1={CENTER} x2={knob.x} y2={knob.y} className={styles.clockHandLine} />\n <circle\n cx={knob.x}\n cy={knob.y}\n r={7}\n className={cx(styles.clockHandKnob, classNames?.clockHand)}\n style={slotStyles?.clockHand as React.CSSProperties}\n />\n </svg>\n\n {numbers.map((n) => {\n const p = polarPoint(CENTER, CENTER, n.ring === 'inner' ? INNER_RADIUS : OUTER_RADIUS, n.slot, HOUR_STEP_DEG);\n const selected = isSelected(n);\n // Purely visual — the face owns all pointer handling so click and drag\n // behave identically whether the pointer lands on a number or between two.\n return (\n <div\n key={`${n.ring}-${n.value}`}\n className={cx(\n styles.clockNumber,\n n.ring === 'inner' && styles.clockNumberInner,\n selected && styles.clockNumberSelected,\n classNames?.clockNumber,\n )}\n style={{ left: `${p.x}%`, top: `${p.y}%`, ...slotStyles?.clockNumber }}\n >\n {n.label}\n </div>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"clockDial.mjs","names":[],"sources":["../../../../../../package/common/timeInput/components/clockDial/clockDial.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport cx from 'classnames';\nimport { type TimeValue, clampHour, snapMinute, polarPoint, pointerAngle, pointerRadius } from '../../timeFunctions';\nimport type { ClockDialProps, DialNumber } from './clockDial.types';\n\nimport styles from './clockDial.module.pcss';\n\n// viewBox units (0–100). The face scales with its CSS box; geometry stays in this space.\nconst CENTER = 50;\nconst OUTER_RADIUS = 40;\nconst INNER_RADIUS = 25.5;\nconst RING_THRESHOLD = (OUTER_RADIUS + INNER_RADIUS) / 2;\n\nconst HOUR_STEP_DEG = 30;\nconst MINUTE_STEP_DEG = 6;\n\nconst to12 = (hour: number): number => ((hour + 11) % 12) + 1;\n\n/** Build the labelled numbers for the current mode/format. */\nfunction buildNumbers(mode: 'hours' | 'minutes', use24Hour: boolean): DialNumber[] {\n if (mode === 'minutes') {\n return Array.from({ length: 12 }, (_, slot) => {\n const value = slot * 5;\n return { label: String(value).padStart(2, '0'), slot, value, ring: 'outer' as const };\n });\n }\n\n if (!use24Hour) {\n return Array.from({ length: 12 }, (_, slot) => {\n const value = slot === 0 ? 12 : slot; // displayed hour (1–12)\n return { label: String(value), slot, value, ring: 'outer' as const };\n });\n }\n\n // 24-hour double ring: outer 1–12, inner 00/13–23.\n const outer = Array.from({ length: 12 }, (_, slot) => {\n const value = slot === 0 ? 12 : slot;\n return { label: String(value), slot, value, ring: 'outer' as const };\n });\n const inner = Array.from({ length: 12 }, (_, slot) => {\n const value = slot === 0 ? 0 : slot + 12;\n return { label: String(value).padStart(2, '0'), slot, value, ring: 'inner' as const };\n });\n return [...outer, ...inner];\n}\n\nexport default function ClockDial({\n time,\n mode,\n use24Hour,\n minuteStep,\n onChange,\n onCommit,\n classNames,\n styles: slotStyles,\n}: ClockDialProps) {\n const faceRef = useRef<HTMLDivElement>(null);\n const draggingRef = useRef(false);\n\n const numbers = buildNumbers(mode, use24Hour);\n\n // Resolve the active value and the hand geometry for the current time.\n const isPm = time.hours >= 12;\n const selectedHour12 = to12(time.hours);\n\n const hand = (() => {\n if (mode === 'minutes') {\n // 6° per minute → angle = minutes * MINUTE_STEP_DEG.\n return { slot: time.minutes, radius: OUTER_RADIUS };\n }\n if (!use24Hour) {\n return { slot: selectedHour12 % 12, radius: OUTER_RADIUS };\n }\n if (time.hours === 0) return { slot: 0, radius: INNER_RADIUS };\n if (time.hours <= 12) return { slot: time.hours % 12, radius: OUTER_RADIUS };\n return { slot: (time.hours - 12) % 12, radius: INNER_RADIUS };\n })();\n\n const knob = polarPoint(CENTER, CENTER, hand.radius, hand.slot, mode === 'minutes' ? MINUTE_STEP_DEG : HOUR_STEP_DEG);\n\n const isSelected = (n: DialNumber): boolean =>\n mode === 'minutes'\n ? snapMinute(time.minutes, minuteStep) === n.value || time.minutes === n.value\n : use24Hour\n ? time.hours === n.value\n : selectedHour12 === n.value;\n\n const valueFromPointer = (clientX: number, clientY: number): TimeValue => {\n const rect = faceRef.current?.getBoundingClientRect();\n if (!rect) return time;\n const dx = clientX - (rect.left + rect.width / 2);\n const dy = clientY - (rect.top + rect.height / 2);\n const angle = pointerAngle(dx, dy);\n\n if (mode === 'minutes') {\n const minutes = snapMinute(Math.round(angle / MINUTE_STEP_DEG), minuteStep);\n return { hours: time.hours, minutes };\n }\n\n const slot = Math.round(angle / HOUR_STEP_DEG) % 12;\n if (!use24Hour) {\n const display = slot === 0 ? 12 : slot;\n const hours = isPm ? (display % 12) + 12 : display % 12;\n return { hours: clampHour(hours), minutes: time.minutes };\n }\n\n // 24h: inner vs outer ring decided by pointer distance from centre.\n const radiusFrac = (pointerRadius(dx, dy) / (rect.width / 2)) * CENTER;\n const inner = radiusFrac < RING_THRESHOLD;\n const hours = inner ? (slot === 0 ? 0 : slot + 12) : slot === 0 ? 12 : slot;\n return { hours: clampHour(hours), minutes: time.minutes };\n };\n\n const handlePointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n draggingRef.current = true;\n // setPointerCapture keeps move/up events flowing to the face even when the\n // pointer started on (or drags over) a number. Guarded for jsdom.\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n onChange(valueFromPointer(e.clientX, e.clientY));\n };\n\n const handlePointerMove = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n onChange(valueFromPointer(e.clientX, e.clientY));\n };\n\n const handlePointerUp = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!draggingRef.current) return;\n draggingRef.current = false;\n onCommit(valueFromPointer(e.clientX, e.clientY));\n };\n\n return (\n <div\n ref={faceRef}\n className={cx(styles.clockFace, classNames?.clockFace)}\n style={slotStyles?.clockFace}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n role='slider'\n aria-label={mode === 'minutes' ? 'Minutes' : 'Hours'}\n aria-valuetext={mode === 'minutes' ? `${time.minutes} minutes` : `${time.hours} hours`}\n >\n <svg className={styles.clockHand} viewBox='0 0 100 100' aria-hidden>\n <circle cx={CENTER} cy={CENTER} r={1.8} className={styles.clockHandCenter} />\n <line x1={CENTER} y1={CENTER} x2={knob.x} y2={knob.y} className={styles.clockHandLine} />\n <circle\n cx={knob.x}\n cy={knob.y}\n r={7}\n className={cx(styles.clockHandKnob, classNames?.clockHand)}\n style={slotStyles?.clockHand as React.CSSProperties}\n />\n </svg>\n\n {numbers.map((n) => {\n const p = polarPoint(CENTER, CENTER, n.ring === 'inner' ? INNER_RADIUS : OUTER_RADIUS, n.slot, HOUR_STEP_DEG);\n const selected = isSelected(n);\n // Purely visual — the face owns all pointer handling so click and drag\n // behave identically whether the pointer lands on a number or between two.\n return (\n <div\n key={`${n.ring}-${n.value}`}\n className={cx(\n styles.clockNumber,\n n.ring === 'inner' && styles.clockNumberInner,\n selected && styles.clockNumberSelected,\n classNames?.clockNumber,\n )}\n style={{ left: `${p.x}%`, top: `${p.y}%`, ...slotStyles?.clockNumber }}\n >\n {n.label}\n </div>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e=`clockFace_LbXIa`,t=`clockHand_E9nTw`,n=`clockHand-line_iOipC`,r=`clockHand-center_VElxx`,i=`clockHand-knob_Mb2Fx`,a=`clockNumber_qHDO8`,o=`clockNumber-inner_x2XR1`,s=`clockNumber-selected_rPVlV`,c={clockFace:e,clockHand:t,"clockHand-line":`clockHand-line_iOipC`,clockHandLine:n,"clockHand-center":`clockHand-center_VElxx`,clockHandCenter:r,"clockHand-knob":`clockHand-knob_Mb2Fx`,clockHandKnob:i,clockNumber:a,"clockNumber-inner":`clockNumber-inner_x2XR1`,clockNumberInner:o,"clockNumber-selected":`clockNumber-selected_rPVlV`,clockNumberSelected:s};export{e as clockFace,t as clockHand,r as clockHandCenter,i as clockHandKnob,n as clockHandLine,a as clockNumber,o as clockNumberInner,s as clockNumberSelected,c as default};
1
+ "use client";var e=`clockFace_LbXIa`,t=`clockHand_E9nTw`,n=`clockHand-line_iOipC`,r=`clockHand-center_VElxx`,i=`clockHand-knob_Mb2Fx`,a=`clockNumber_qHDO8`,o=`clockNumber-inner_x2XR1`,s=`clockNumber-selected_rPVlV`,c={clockFace:e,clockHand:t,"clockHand-line":`clockHand-line_iOipC`,clockHandLine:n,"clockHand-center":`clockHand-center_VElxx`,clockHandCenter:r,"clockHand-knob":`clockHand-knob_Mb2Fx`,clockHandKnob:i,clockNumber:a,"clockNumber-inner":`clockNumber-inner_x2XR1`,clockNumberInner:o,"clockNumber-selected":`clockNumber-selected_rPVlV`,clockNumberSelected:s};export{e as clockFace,t as clockHand,r as clockHandCenter,i as clockHandKnob,n as clockHandLine,a as clockNumber,o as clockNumberInner,s as clockNumberSelected,c as default};
2
2
  //# sourceMappingURL=clockDial.module.mjs.map
@@ -1,2 +1,2 @@
1
- var e=e=>(Math.trunc(e)%24+24)%24,t=e=>(Math.trunc(e)%60+60)%60;function n(e){if(!e)return null;let t=e.match(/^(\d{1,2}):(\d{1,2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return n>23||r>59?null:{hours:n,minutes:r}}function r(n){return n?`${String(e(n.hours)).padStart(2,`0`)}:${String(t(n.minutes)).padStart(2,`0`)}`:``}function i(e,n){return t(!n||n<=1?e:Math.round(t(e)/n)*n)}var a=e=>e.hours*60+e.minutes;function o(e,t,r){let i=a(e),o=n(t),s=n(r);return o&&(i=Math.max(i,a(o))),s&&(i=Math.min(i,a(s))),{hours:Math.floor(i/60),minutes:i%60}}function s(e,t,n,r,i){let a=r*i*Math.PI/180;return{x:e+n*Math.sin(a),y:t-n*Math.cos(a)}}function c(e,t){return(Math.atan2(e,-t)*180/Math.PI+360)%360}var l=(e,t)=>Math.sqrt(e*e+t*t);export{e as clampHour,t as clampMinute,o as clampToRange,r as formatTime,n as parseTimeString,c as pointerAngle,l as pointerRadius,s as polarPoint,i as snapMinute,a as timeToMinutes};
1
+ "use client";var e=e=>(Math.trunc(e)%24+24)%24,t=e=>(Math.trunc(e)%60+60)%60;function n(e){if(!e)return null;let t=e.match(/^(\d{1,2}):(\d{1,2})$/);if(!t)return null;let n=Number(t[1]),r=Number(t[2]);return n>23||r>59?null:{hours:n,minutes:r}}function r(n){return n?`${String(e(n.hours)).padStart(2,`0`)}:${String(t(n.minutes)).padStart(2,`0`)}`:``}function i(e,n){return t(!n||n<=1?e:Math.round(t(e)/n)*n)}var a=e=>e.hours*60+e.minutes;function o(e,t,r){let i=a(e),o=n(t),s=n(r);return o&&(i=Math.max(i,a(o))),s&&(i=Math.min(i,a(s))),{hours:Math.floor(i/60),minutes:i%60}}function s(e,t,n,r,i){let a=r*i*Math.PI/180;return{x:e+n*Math.sin(a),y:t-n*Math.cos(a)}}function c(e,t){return(Math.atan2(e,-t)*180/Math.PI+360)%360}var l=(e,t)=>Math.sqrt(e*e+t*t);export{e as clampHour,t as clampMinute,o as clampToRange,r as formatTime,n as parseTimeString,c as pointerAngle,l as pointerRadius,s as polarPoint,i as snapMinute,a as timeToMinutes};
2
2
  //# sourceMappingURL=timeFunctions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeFunctions.mjs","names":[],"sources":["../../../../package/common/timeInput/timeFunctions.ts"],"sourcesContent":["export interface TimeValue {\n hours: number; // 0–23\n minutes: number; // 0–59\n}\n\nexport const clampHour = (h: number): number => ((Math.trunc(h) % 24) + 24) % 24;\nexport const clampMinute = (m: number): number => ((Math.trunc(m) % 60) + 60) % 60;\n\n/** Parse a \"HH:MM\" (24-hour) string. Returns null for anything that isn't a valid time. */\nexport function parseTimeString(value: string | null | undefined): TimeValue | null {\n if (!value) return null;\n const match = value.match(/^(\\d{1,2}):(\\d{1,2})$/);\n if (!match) return null;\n const hours = Number(match[1]);\n const minutes = Number(match[2]);\n if (hours > 23 || minutes > 59) return null;\n return { hours, minutes };\n}\n\n/** Format a TimeValue as a zero-padded \"HH:MM\" string. */\nexport function formatTime(time: TimeValue | null | undefined): string {\n if (!time) return '';\n const hh = String(clampHour(time.hours)).padStart(2, '0');\n const mm = String(clampMinute(time.minutes)).padStart(2, '0');\n return `${hh}:${mm}`;\n}\n\n/** Snap a minute value to the nearest multiple of `step` (step <= 1 is a no-op). */\nexport function snapMinute(minute: number, step: number): number {\n if (!step || step <= 1) return clampMinute(minute);\n return clampMinute(Math.round(clampMinute(minute) / step) * step);\n}\n\nexport const timeToMinutes = (time: TimeValue): number => time.hours * 60 + time.minutes;\n\n/** Clamp a time into [min, max] (both \"HH:MM\" strings, either optional). */\nexport function clampToRange(time: TimeValue, min?: string | null, max?: string | null): TimeValue {\n let total = timeToMinutes(time);\n const minVal = parseTimeString(min);\n const maxVal = parseTimeString(max);\n if (minVal) total = Math.max(total, timeToMinutes(minVal));\n if (maxVal) total = Math.min(total, timeToMinutes(maxVal));\n return { hours: Math.floor(total / 60), minutes: total % 60 };\n}\n\nexport function isWithinRange(time: TimeValue, min?: string | null, max?: string | null): boolean {\n const total = timeToMinutes(time);\n const minVal = parseTimeString(min);\n const maxVal = parseTimeString(max);\n if (minVal && total < timeToMinutes(minVal)) return false;\n if (maxVal && total > timeToMinutes(maxVal)) return false;\n return true;\n}\n\n/**\n * Auto-correct a masked \"HH:MM\" value as the user types: clamp the hour segment to 23\n * and the minute segment to 59 so the field can never hold an impossible time.\n */\nexport function correctTimeMaskValue(value: string): string {\n const digits = value.replace(/[^\\d]/g, '');\n if (!digits) return value;\n\n let hourDigits = digits.slice(0, 2);\n const minuteDigits = digits.slice(2, 4);\n\n // First hour digit > 2 → it can only be a single-digit hour (e.g. \"9\" → \"09\").\n if (hourDigits.length === 1 && Number(hourDigits) > 2) {\n hourDigits = `0${hourDigits}`;\n }\n if (hourDigits.length === 2 && Number(hourDigits) > 23) hourDigits = '23';\n\n let result = hourDigits;\n if (minuteDigits.length > 0 || /:/.test(value)) result += ':';\n if (minuteDigits.length > 0) {\n const clamped = minuteDigits.length === 2 && Number(minuteDigits) > 59 ? '59' : minuteDigits;\n result += clamped;\n }\n return result;\n}\n\n// ── Clock-dial geometry ─────────────────────────────────────────────────────\n\nexport interface DialPoint {\n x: number;\n y: number;\n}\n\n/**\n * Cartesian coordinates for a point on the dial. `slot` is the step index from the\n * top of the clock, going clockwise; `stepDegrees` is the angle between steps\n * (30° for hours, 6° for minutes). Returns coordinates relative to (cx, cy).\n */\nexport function polarPoint(cx: number, cy: number, radius: number, slot: number, stepDegrees: number): DialPoint {\n const theta = (slot * stepDegrees * Math.PI) / 180;\n return {\n x: cx + radius * Math.sin(theta),\n y: cy - radius * Math.cos(theta),\n };\n}\n\n/** Rotation (deg) of a hand pointing at `slot`. A 3-o'clock-default hand points up at slot 0. */\nexport const handAngle = (slot: number, stepDegrees: number): number => slot * stepDegrees - 90;\n\n/** Angle (0–360, clockwise from top) of a pointer at (dx, dy) relative to the dial centre. */\nexport function pointerAngle(dx: number, dy: number): number {\n const deg = (Math.atan2(dx, -dy) * 180) / Math.PI;\n return (deg + 360) % 360;\n}\n\nexport const pointerRadius = (dx: number, dy: number): number => Math.sqrt(dx * dx + dy * dy);\n"],"mappings":"AAKA,IAAa,EAAa,IAAwB,KAAK,MAAM,CAAC,EAAI,GAAM,IAAM,GACjE,EAAe,IAAwB,KAAK,MAAM,CAAC,EAAI,GAAM,IAAM,GAGhF,SAAgB,EAAgB,EAAoD,CAClF,GAAI,CAAC,EAAO,OAAO,KACnB,IAAM,EAAQ,EAAM,MAAM,uBAAuB,EACjD,GAAI,CAAC,EAAO,OAAO,KACnB,IAAM,EAAQ,OAAO,EAAM,EAAE,EACvB,EAAU,OAAO,EAAM,EAAE,EAE/B,OADI,EAAQ,IAAM,EAAU,GAAW,KAChC,CAAE,QAAO,SAAQ,CAC1B,CAGA,SAAgB,EAAW,EAA4C,CAIrE,OAHK,EAGE,GAFI,OAAO,EAAU,EAAK,KAAK,CAAC,CAAC,CAAC,SAAS,EAAG,GAE3C,EAAG,GADF,OAAO,EAAY,EAAK,OAAO,CAAC,CAAC,CAAC,SAAS,EAAG,GACzC,IAHE,EAIpB,CAGA,SAAgB,EAAW,EAAgB,EAAsB,CAE/D,OAD+B,EAA3B,CAAC,GAAQ,GAAQ,EAAsB,EACxB,KAAK,MAAM,EAAY,CAAM,EAAI,CAAI,EAAI,CADX,CAEnD,CAEA,IAAa,EAAiB,GAA4B,EAAK,MAAQ,GAAK,EAAK,QAGjF,SAAgB,EAAa,EAAiB,EAAqB,EAAgC,CACjG,IAAI,EAAQ,EAAc,CAAI,EACxB,EAAS,EAAgB,CAAG,EAC5B,EAAS,EAAgB,CAAG,EAGlC,OAFI,IAAQ,EAAQ,KAAK,IAAI,EAAO,EAAc,CAAM,CAAC,GACrD,IAAQ,EAAQ,KAAK,IAAI,EAAO,EAAc,CAAM,CAAC,GAClD,CAAE,MAAO,KAAK,MAAM,EAAQ,EAAE,EAAG,QAAS,EAAQ,EAAG,CAC9D,CAiDA,SAAgB,EAAW,EAAY,EAAY,EAAgB,EAAc,EAAgC,CAC/G,IAAM,EAAS,EAAO,EAAc,KAAK,GAAM,IAC/C,MAAO,CACL,EAAG,EAAK,EAAS,KAAK,IAAI,CAAK,EAC/B,EAAG,EAAK,EAAS,KAAK,IAAI,CAAK,CACjC,CACF,CAMA,SAAgB,EAAa,EAAY,EAAoB,CAE3D,OADa,KAAK,MAAM,EAAI,CAAC,CAAE,EAAI,IAAO,KAAK,GACjC,KAAO,GACvB,CAEA,IAAa,GAAiB,EAAY,IAAuB,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE"}
1
+ {"version":3,"file":"timeFunctions.mjs","names":[],"sources":["../../../../package/common/timeInput/timeFunctions.ts"],"sourcesContent":["export interface TimeValue {\n hours: number; // 0–23\n minutes: number; // 0–59\n}\n\nexport const clampHour = (h: number): number => ((Math.trunc(h) % 24) + 24) % 24;\nexport const clampMinute = (m: number): number => ((Math.trunc(m) % 60) + 60) % 60;\n\n/** Parse a \"HH:MM\" (24-hour) string. Returns null for anything that isn't a valid time. */\nexport function parseTimeString(value: string | null | undefined): TimeValue | null {\n if (!value) return null;\n const match = value.match(/^(\\d{1,2}):(\\d{1,2})$/);\n if (!match) return null;\n const hours = Number(match[1]);\n const minutes = Number(match[2]);\n if (hours > 23 || minutes > 59) return null;\n return { hours, minutes };\n}\n\n/** Format a TimeValue as a zero-padded \"HH:MM\" string. */\nexport function formatTime(time: TimeValue | null | undefined): string {\n if (!time) return '';\n const hh = String(clampHour(time.hours)).padStart(2, '0');\n const mm = String(clampMinute(time.minutes)).padStart(2, '0');\n return `${hh}:${mm}`;\n}\n\n/** Snap a minute value to the nearest multiple of `step` (step <= 1 is a no-op). */\nexport function snapMinute(minute: number, step: number): number {\n if (!step || step <= 1) return clampMinute(minute);\n return clampMinute(Math.round(clampMinute(minute) / step) * step);\n}\n\nexport const timeToMinutes = (time: TimeValue): number => time.hours * 60 + time.minutes;\n\n/** Clamp a time into [min, max] (both \"HH:MM\" strings, either optional). */\nexport function clampToRange(time: TimeValue, min?: string | null, max?: string | null): TimeValue {\n let total = timeToMinutes(time);\n const minVal = parseTimeString(min);\n const maxVal = parseTimeString(max);\n if (minVal) total = Math.max(total, timeToMinutes(minVal));\n if (maxVal) total = Math.min(total, timeToMinutes(maxVal));\n return { hours: Math.floor(total / 60), minutes: total % 60 };\n}\n\nexport function isWithinRange(time: TimeValue, min?: string | null, max?: string | null): boolean {\n const total = timeToMinutes(time);\n const minVal = parseTimeString(min);\n const maxVal = parseTimeString(max);\n if (minVal && total < timeToMinutes(minVal)) return false;\n if (maxVal && total > timeToMinutes(maxVal)) return false;\n return true;\n}\n\n/**\n * Auto-correct a masked \"HH:MM\" value as the user types: clamp the hour segment to 23\n * and the minute segment to 59 so the field can never hold an impossible time.\n */\nexport function correctTimeMaskValue(value: string): string {\n const digits = value.replace(/[^\\d]/g, '');\n if (!digits) return value;\n\n let hourDigits = digits.slice(0, 2);\n const minuteDigits = digits.slice(2, 4);\n\n // First hour digit > 2 → it can only be a single-digit hour (e.g. \"9\" → \"09\").\n if (hourDigits.length === 1 && Number(hourDigits) > 2) {\n hourDigits = `0${hourDigits}`;\n }\n if (hourDigits.length === 2 && Number(hourDigits) > 23) hourDigits = '23';\n\n let result = hourDigits;\n if (minuteDigits.length > 0 || /:/.test(value)) result += ':';\n if (minuteDigits.length > 0) {\n const clamped = minuteDigits.length === 2 && Number(minuteDigits) > 59 ? '59' : minuteDigits;\n result += clamped;\n }\n return result;\n}\n\n// ── Clock-dial geometry ─────────────────────────────────────────────────────\n\nexport interface DialPoint {\n x: number;\n y: number;\n}\n\n/**\n * Cartesian coordinates for a point on the dial. `slot` is the step index from the\n * top of the clock, going clockwise; `stepDegrees` is the angle between steps\n * (30° for hours, 6° for minutes). Returns coordinates relative to (cx, cy).\n */\nexport function polarPoint(cx: number, cy: number, radius: number, slot: number, stepDegrees: number): DialPoint {\n const theta = (slot * stepDegrees * Math.PI) / 180;\n return {\n x: cx + radius * Math.sin(theta),\n y: cy - radius * Math.cos(theta),\n };\n}\n\n/** Rotation (deg) of a hand pointing at `slot`. A 3-o'clock-default hand points up at slot 0. */\nexport const handAngle = (slot: number, stepDegrees: number): number => slot * stepDegrees - 90;\n\n/** Angle (0–360, clockwise from top) of a pointer at (dx, dy) relative to the dial centre. */\nexport function pointerAngle(dx: number, dy: number): number {\n const deg = (Math.atan2(dx, -dy) * 180) / Math.PI;\n return (deg + 360) % 360;\n}\n\nexport const pointerRadius = (dx: number, dy: number): number => Math.sqrt(dx * dx + dy * dy);\n"],"mappings":"aAKA,IAAa,EAAa,IAAwB,KAAK,MAAM,CAAC,EAAI,GAAM,IAAM,GACjE,EAAe,IAAwB,KAAK,MAAM,CAAC,EAAI,GAAM,IAAM,GAGhF,SAAgB,EAAgB,EAAoD,CAClF,GAAI,CAAC,EAAO,OAAO,KACnB,IAAM,EAAQ,EAAM,MAAM,uBAAuB,EACjD,GAAI,CAAC,EAAO,OAAO,KACnB,IAAM,EAAQ,OAAO,EAAM,EAAE,EACvB,EAAU,OAAO,EAAM,EAAE,EAE/B,OADI,EAAQ,IAAM,EAAU,GAAW,KAChC,CAAE,QAAO,SAAQ,CAC1B,CAGA,SAAgB,EAAW,EAA4C,CAIrE,OAHK,EAGE,GAFI,OAAO,EAAU,EAAK,KAAK,CAAC,CAAC,CAAC,SAAS,EAAG,GAE3C,EAAG,GADF,OAAO,EAAY,EAAK,OAAO,CAAC,CAAC,CAAC,SAAS,EAAG,GACzC,IAHE,EAIpB,CAGA,SAAgB,EAAW,EAAgB,EAAsB,CAE/D,OAD+B,EAA3B,CAAC,GAAQ,GAAQ,EAAsB,EACxB,KAAK,MAAM,EAAY,CAAM,EAAI,CAAI,EAAI,CADX,CAEnD,CAEA,IAAa,EAAiB,GAA4B,EAAK,MAAQ,GAAK,EAAK,QAGjF,SAAgB,EAAa,EAAiB,EAAqB,EAAgC,CACjG,IAAI,EAAQ,EAAc,CAAI,EACxB,EAAS,EAAgB,CAAG,EAC5B,EAAS,EAAgB,CAAG,EAGlC,OAFI,IAAQ,EAAQ,KAAK,IAAI,EAAO,EAAc,CAAM,CAAC,GACrD,IAAQ,EAAQ,KAAK,IAAI,EAAO,EAAc,CAAM,CAAC,GAClD,CAAE,MAAO,KAAK,MAAM,EAAQ,EAAE,EAAG,QAAS,EAAQ,EAAG,CAC9D,CAiDA,SAAgB,EAAW,EAAY,EAAY,EAAgB,EAAc,EAAgC,CAC/G,IAAM,EAAS,EAAO,EAAc,KAAK,GAAM,IAC/C,MAAO,CACL,EAAG,EAAK,EAAS,KAAK,IAAI,CAAK,EAC/B,EAAG,EAAK,EAAS,KAAK,IAAI,CAAK,CACjC,CACF,CAMA,SAAgB,EAAa,EAAY,EAAoB,CAE3D,OADa,KAAK,MAAM,EAAI,CAAC,CAAE,EAAI,IAAO,KAAK,GACjC,KAAO,GACvB,CAEA,IAAa,GAAiB,EAAY,IAAuB,KAAK,KAAK,EAAK,EAAK,EAAK,CAAE"}
@@ -1,2 +1,2 @@
1
- import{ButtonStyleType as e}from"../button/button.types.mjs";import t from"../button/button.mjs";import{PopoverAlign as n,PopoverPlacement as r}from"../popover/popover.types.mjs";import i from"../popover/popover.mjs";import a from"../tooltip/tooltip.mjs";import o from"../input/input.mjs";import ee from"../modal/modal.mjs";import{clampHour as te,clampToRange as s,formatTime as c,parseTimeString as l,snapMinute as u}from"./timeFunctions.mjs";import ne from"./components/clockDial/clockDial.mjs";import d from"./timeInput.module.mjs";import{useEffect as f,useRef as re,useState as p}from"react";import m from"classnames";import{FontAwesomeIcon as ie}from"@fortawesome/react-fontawesome";import{faClock as ae}from"@fortawesome/free-solid-svg-icons";import{jsx as h,jsxs as g}from"react/jsx-runtime";import oe from"@mona-health/react-input-mask";function _({value:_,selected:se,onChange:ce=()=>null,onSelect:v=()=>null,formValidator:y=null,isInline:b=!1,isModal:x=!1,noInput:le=!1,noHeader:ue=!1,showClearButton:S=!1,showNowButton:C=!1,minuteStep:w=1,use24Hour:T=!0,minTime:E=null,maxTime:D=null,label:de=``,isValid:fe=!0,errorMessage:O=``,isRequired:pe=!1,disabled:k=!1,className:me=``,style:he,classNames:A,styles:j,...ge}){let M=()=>y?y.value||``:_??se??``,[N,P]=p(M),[F,I]=p(!1),[L,R]=p(`hours`),[z,B]=p(!1),[_e,V]=p(!1),[,ve]=p(0),H=M(),[ye,be]=p(H),U=re(y);!y&&ye!==H&&(be(H),P(H)),f(()=>{if(U.current=y,!y)return;let e=()=>{P(y.value||``),ve(e=>e+1)};return y.registerOnUpdateListener(e),()=>y.removeOnUpdateListener(e)},[y]);let xe=()=>y?y.touched&&y.hasError():!fe||!!O,Se=()=>!!(pe||y?.validators.find(e=>e.validatorId===`required`)),W=e=>{let t=e?c(e):null;y&&y.set(t),ce?.(t)},G=e=>{P(e?c(e):``),W(e)},K=l(N),q=K??{hours:12,minutes:0},J=e=>{let t={hours:e.hours,minutes:u(e.minutes,w)};G(s(t,E,D))},Ce=e=>{let t={hours:e.hours,minutes:u(e.minutes,w)},n=s(t,E,D);if(G(n),L===`hours`){R(`minutes`);return}v?.(c(n)),b||I(!1)},Y=()=>{k||(R(`hours`),I(!0))},we=({previousState:e,nextState:t})=>{if(!e||t.value===e.value)return t;let n=t.value,r=n.slice(0,2);/^\d\d$/.test(r)&&Number(r)>23&&(n=`23${n.slice(2)}`);let i=n.slice(3,5);return/^\d\d$/.test(i)&&Number(i)>59&&(n=`${n.slice(0,3)}59`),n===t.value?t:{...t,value:n}},Te=e=>{P(e);let t=l(e);t&&W(t)},Ee=()=>{U.current&&(U.current.touched=!0),B(!1),W(l(N))},X=e=>{e!==q.hours>=12&&G({hours:te(q.hours+(e?12:-12)),minutes:q.minutes})},Z=xe(),De=K?String(T?K.hours:(K.hours+11)%12+1).padStart(2,`0`):`--`,Oe=K?String(K.minutes).padStart(2,`0`):`--`,ke=ue?null:g(`div`,{className:m(d.timeInputClockHeader,A?.clockHeader),style:j?.clockHeader,children:[h(`button`,{type:`button`,className:m(d.timeInputHeaderSegment,L===`hours`&&d.timeInputHeaderSegmentActive,A?.headerSegment),style:j?.headerSegment,onClick:()=>R(`hours`),children:De}),h(`span`,{className:d.timeInputHeaderColon,children:`:`}),h(`button`,{type:`button`,className:m(d.timeInputHeaderSegment,L===`minutes`&&d.timeInputHeaderSegmentActive,A?.headerSegment),style:j?.headerSegment,onClick:()=>R(`minutes`),children:Oe}),!T&&g(`div`,{className:m(d.timeInputMeridiem,A?.meridiem),style:j?.meridiem,children:[h(`button`,{type:`button`,className:m(q.hours<12&&d.timeInputMeridiemActive),onClick:()=>X(!1),children:`AM`}),h(`button`,{type:`button`,className:m(q.hours>=12&&d.timeInputMeridiemActive),onClick:()=>X(!0),children:`PM`})]})]}),Ae=S||C?g(`div`,{className:m(d.timeInputFooter,A?.footer),style:j?.footer,children:[C&&h(t,{styleType:e.Default,onClick:()=>{let e=new Date;J({hours:e.getHours(),minutes:e.getMinutes()})},children:`Now`}),S&&h(t,{styleType:e.Default,onClick:()=>{G(null),v?.(null)},children:`Clear`})]}):null,Q=g(`div`,{className:m(d.timeInputClock,A?.clock),style:j?.clock,children:[ke,h(ne,{time:q,mode:L,use24Hour:T,minuteStep:w,onChange:J,onCommit:Ce,classNames:A,styles:j}),Ae]}),$=le?null:h(o,{autoComplete:`off`,label:`${de}${Se()?` *`:``}`,value:N,icon:h(ie,{icon:ae}),onIconClick:Y,onClick:Y,readOnly:x,disabled:k,isValid:!Z,customInput:h(oe,{mask:`99:99`,maskPlaceholder:`_`,beforeMaskedStateChange:we}),onChange:e=>Te(e),onBlur:Ee,onFocus:()=>B(!0),onMouseEnter:()=>V(!0),onMouseLeave:()=>V(!1)}),je=b?Q:x?h(ee,{hideHeader:!0,isOpen:F,onClose:()=>I(!1),children:Q}):h(i,{isOpen:F,onOpenChange:I,content:Q,placement:r.Bottom,align:n.Start,closeOnTriggerClick:!1,constrainWidth:!1,children:$});return g(`div`,{className:m(d.timeInput,A?.root,me),style:{...j?.root,...he},...ge,children:[(x||b)&&$,je,h(a,{variant:`error`,message:y?y.getCurrentErrorMessage()??``:O||``,isVisible:Z&&(z||_e)})]})}export{_ as default};
1
+ "use client";import{ButtonStyleType as e}from"../button/button.types.mjs";import t from"../button/button.mjs";import{PopoverAlign as n,PopoverPlacement as r}from"../popover/popover.types.mjs";import i from"../popover/popover.mjs";import ee from"../tooltip/tooltip.mjs";import te from"../input/input.mjs";import a from"../modal/modal.mjs";import ne from"../maskedInput/maskedInput.mjs";import{clampHour as re,clampToRange as o,formatTime as s,parseTimeString as c,snapMinute as l}from"./timeFunctions.mjs";import ie from"./components/clockDial/clockDial.mjs";import u from"./timeInput.module.mjs";import{useEffect as ae,useRef as oe,useState as d}from"react";import f from"classnames";import{FontAwesomeIcon as se}from"@fortawesome/react-fontawesome";import{faClock as p}from"@fortawesome/free-solid-svg-icons";import{jsx as m,jsxs as h}from"react/jsx-runtime";function g({value:g,selected:ce,onChange:le=()=>null,onSelect:_=()=>null,formValidator:v=null,isInline:y=!1,isModal:b=!1,noInput:ue=!1,noHeader:de=!1,showClearButton:x=!1,showNowButton:S=!1,minuteStep:C=1,use24Hour:w=!0,minTime:T=null,maxTime:E=null,label:fe=``,isValid:D=!0,errorMessage:O=``,isRequired:pe=!1,disabled:k=!1,className:me=``,style:he,classNames:A,styles:j,...ge}){let M=()=>v?v.value||``:g??ce??``,[N,P]=d(M),[F,I]=d(!1),[L,R]=d(`hours`),[z,B]=d(!1),[_e,V]=d(!1),[,ve]=d(0),H=M(),[ye,be]=d(H),U=oe(v);!v&&ye!==H&&(be(H),P(H)),ae(()=>{if(U.current=v,!v)return;let e=()=>{P(v.value||``),ve(e=>e+1)};return v.registerOnUpdateListener(e),()=>v.removeOnUpdateListener(e)},[v]);let xe=()=>v?v.touched&&v.hasError():!D||!!O,Se=()=>!!(pe||v?.validators.find(e=>e.validatorId===`required`)),W=e=>{let t=e?s(e):null;v&&v.set(t),le?.(t)},G=e=>{P(e?s(e):``),W(e)},K=c(N),q=K??{hours:12,minutes:0},J=e=>{let t={hours:e.hours,minutes:l(e.minutes,C)};G(o(t,T,E))},Ce=e=>{let t={hours:e.hours,minutes:l(e.minutes,C)},n=o(t,T,E);if(G(n),L===`hours`){R(`minutes`);return}_?.(s(n)),y||I(!1)},Y=()=>{k||(R(`hours`),I(!0))},we=({previousState:e,nextState:t})=>{if(t.value===e.value)return t;let n=t.value,r=n.slice(0,2);/^\d\d$/.test(r)&&Number(r)>23&&(n=`23${n.slice(2)}`);let i=n.slice(3,5);return/^\d\d$/.test(i)&&Number(i)>59&&(n=`${n.slice(0,3)}59`),n===t.value?t:{...t,value:n}},Te=e=>{P(e);let t=c(e);t&&W(t)},Ee=()=>{U.current&&(U.current.touched=!0),B(!1),W(c(N))},X=e=>{e!==q.hours>=12&&G({hours:re(q.hours+(e?12:-12)),minutes:q.minutes})},Z=xe(),De=K?String(w?K.hours:(K.hours+11)%12+1).padStart(2,`0`):`--`,Oe=K?String(K.minutes).padStart(2,`0`):`--`,ke=de?null:h(`div`,{className:f(u.timeInputClockHeader,A?.clockHeader),style:j?.clockHeader,children:[m(`button`,{type:`button`,className:f(u.timeInputHeaderSegment,L===`hours`&&u.timeInputHeaderSegmentActive,A?.headerSegment),style:j?.headerSegment,onClick:()=>R(`hours`),children:De}),m(`span`,{className:u.timeInputHeaderColon,children:`:`}),m(`button`,{type:`button`,className:f(u.timeInputHeaderSegment,L===`minutes`&&u.timeInputHeaderSegmentActive,A?.headerSegment),style:j?.headerSegment,onClick:()=>R(`minutes`),children:Oe}),!w&&h(`div`,{className:f(u.timeInputMeridiem,A?.meridiem),style:j?.meridiem,children:[m(`button`,{type:`button`,className:f(q.hours<12&&u.timeInputMeridiemActive),onClick:()=>X(!1),children:`AM`}),m(`button`,{type:`button`,className:f(q.hours>=12&&u.timeInputMeridiemActive),onClick:()=>X(!0),children:`PM`})]})]}),Ae=x||S?h(`div`,{className:f(u.timeInputFooter,A?.footer),style:j?.footer,children:[S&&m(t,{styleType:e.Default,onClick:()=>{let e=new Date;J({hours:e.getHours(),minutes:e.getMinutes()})},children:`Now`}),x&&m(t,{styleType:e.Default,onClick:()=>{G(null),_?.(null)},children:`Clear`})]}):null,Q=h(`div`,{className:f(u.timeInputClock,A?.clock),style:j?.clock,children:[ke,m(ie,{time:q,mode:L,use24Hour:w,minuteStep:C,onChange:J,onCommit:Ce,classNames:A,styles:j}),Ae]}),$=ue?null:m(te,{autoComplete:`off`,label:`${fe}${Se()?` *`:``}`,value:N,icon:m(se,{icon:p}),onIconClick:Y,onClick:Y,readOnly:b,disabled:k,isValid:!Z,customInput:m(ne,{mask:`99:99`,beforeMaskedStateChange:we}),onChange:e=>Te(e),onBlur:Ee,onFocus:()=>B(!0),onMouseEnter:()=>V(!0),onMouseLeave:()=>V(!1)}),je=y?Q:b?m(a,{hideHeader:!0,isOpen:F,onClose:()=>I(!1),children:Q}):m(i,{isOpen:F,onOpenChange:I,content:Q,placement:r.Bottom,align:n.Start,closeOnTriggerClick:!1,constrainWidth:!1,children:$});return h(`div`,{className:f(u.timeInput,A?.root,me),style:{...j?.root,...he},...ge,children:[(b||y)&&$,je,m(ee,{variant:`error`,message:v?v.getCurrentErrorMessage()??``:O||``,isVisible:Z&&(z||_e)})]})}export{g as default};
2
2
  //# sourceMappingURL=timeInput.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeInput.mjs","names":[],"sources":["../../../../package/common/timeInput/timeInput.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport cx from 'classnames';\nimport InputMask, { type BeforeMaskedStateChangeStates, type InputState } from '@mona-health/react-input-mask';\nimport { faClock } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Input from '../input';\nimport Modal from '../modal';\nimport Popover from '../popover';\nimport Button from '../button';\nimport { ButtonStyleType } from '../button/button.types';\nimport Tooltip from '../tooltip';\nimport ClockDial from './components/clockDial';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport { type TimeValue, parseTimeString, formatTime, snapMinute, clampToRange, clampHour } from './timeFunctions';\nimport type { TimeInputProps } from './timeInput.types';\n\nimport styles from './timeInput.module.pcss';\n\ntype ClockMode = 'hours' | 'minutes';\n\nexport default function TimeInput({\n value,\n selected,\n onChange = () => null,\n onSelect = () => null,\n formValidator = null,\n isInline = false,\n isModal = false,\n noInput = false,\n noHeader = false,\n showClearButton = false,\n showNowButton = false,\n minuteStep = 1,\n use24Hour = true,\n minTime = null,\n maxTime = null,\n label = '',\n isValid = true,\n errorMessage = '',\n isRequired = false,\n disabled = false,\n className = '',\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: TimeInputProps) {\n const getExternalString = (): string => {\n if (formValidator) return (formValidator.value as string) || '';\n return value ?? selected ?? '';\n };\n\n const [currentTimeString, setCurrentTimeString] = useState(getExternalString);\n const [isPickerOpen, setIsPickerOpen] = useState(false);\n const [mode, setMode] = useState<ClockMode>('hours');\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [, forceUpdate] = useState(0);\n\n const externalString = getExternalString();\n const [prevExternal, setPrevExternal] = useState(externalString);\n const fvRef = useRef(formValidator);\n\n // Sync when the controlled value changes externally.\n if (!formValidator && prevExternal !== externalString) {\n setPrevExternal(externalString);\n setCurrentTimeString(externalString);\n }\n\n useEffect(() => {\n fvRef.current = formValidator;\n if (!formValidator) return;\n const listener = () => {\n setCurrentTimeString((formValidator.value as string) || '');\n forceUpdate((n) => n + 1);\n };\n formValidator.registerOnUpdateListener(listener);\n return () => formValidator.removeOnUpdateListener(listener);\n }, [formValidator]);\n\n const hasError = (): boolean =>\n formValidator ? formValidator.touched && formValidator.hasError() : !isValid || !!errorMessage;\n\n const computedIsRequired = (): boolean =>\n !!(isRequired || formValidator?.validators.find((v) => (v as { validatorId?: string }).validatorId === 'required'));\n\n /** Push a value out to formValidator/onChange without touching the input string. */\n const emit = (time: TimeValue | null) => {\n const str = time ? formatTime(time) : null;\n if (formValidator) formValidator.set(str);\n onChange?.(str);\n };\n\n const applyTime = (time: TimeValue | null) => {\n setCurrentTimeString(time ? formatTime(time) : '');\n emit(time);\n };\n\n const parsed = parseTimeString(currentTimeString);\n const dialTime: TimeValue = parsed ?? { hours: 12, minutes: 0 };\n\n const handleDialChange = (time: TimeValue) => {\n const snapped = { hours: time.hours, minutes: snapMinute(time.minutes, minuteStep) };\n applyTime(clampToRange(snapped, minTime, maxTime));\n };\n\n const handleDialCommit = (time: TimeValue) => {\n const snapped = { hours: time.hours, minutes: snapMinute(time.minutes, minuteStep) };\n const next = clampToRange(snapped, minTime, maxTime);\n applyTime(next);\n if (mode === 'hours') {\n setMode('minutes');\n return;\n }\n onSelect?.(formatTime(next));\n if (!isInline) setIsPickerOpen(false);\n };\n\n const openPicker = () => {\n if (disabled) return;\n setMode('hours');\n setIsPickerOpen(true);\n };\n\n const beforeMaskedStateChange = ({ previousState, nextState }: BeforeMaskedStateChangeStates): InputState => {\n if (!previousState || nextState.value === previousState.value) return nextState;\n let v = nextState.value;\n const hourStr = v.slice(0, 2);\n if (/^\\d\\d$/.test(hourStr) && Number(hourStr) > 23) v = `23${v.slice(2)}`;\n const minStr = v.slice(3, 5);\n if (/^\\d\\d$/.test(minStr) && Number(minStr) > 59) v = `${v.slice(0, 3)}59`;\n return v === nextState.value ? nextState : { ...nextState, value: v };\n };\n\n const handleInputChange = (v: string) => {\n setCurrentTimeString(v);\n const t = parseTimeString(v);\n if (t) emit(t);\n };\n\n const handleBlur = () => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n emit(parseTimeString(currentTimeString));\n };\n\n const setMeridiem = (pm: boolean) => {\n const isPm = dialTime.hours >= 12;\n if (pm === isPm) return;\n applyTime({ hours: clampHour(dialTime.hours + (pm ? 12 : -12)), minutes: dialTime.minutes });\n };\n\n const hasErr = hasError();\n const displayHours = parsed\n ? String(use24Hour ? parsed.hours : ((parsed.hours + 11) % 12) + 1).padStart(2, '0')\n : '--';\n const displayMinutes = parsed ? String(parsed.minutes).padStart(2, '0') : '--';\n\n const header = noHeader ? null : (\n <div className={cx(styles.timeInputClockHeader, classNames?.clockHeader)} style={slotStyles?.clockHeader}>\n <button\n type='button'\n className={cx(\n styles.timeInputHeaderSegment,\n mode === 'hours' && styles.timeInputHeaderSegmentActive,\n classNames?.headerSegment,\n )}\n style={slotStyles?.headerSegment}\n onClick={() => setMode('hours')}\n >\n {displayHours}\n </button>\n <span className={styles.timeInputHeaderColon}>:</span>\n <button\n type='button'\n className={cx(\n styles.timeInputHeaderSegment,\n mode === 'minutes' && styles.timeInputHeaderSegmentActive,\n classNames?.headerSegment,\n )}\n style={slotStyles?.headerSegment}\n onClick={() => setMode('minutes')}\n >\n {displayMinutes}\n </button>\n {!use24Hour && (\n <div className={cx(styles.timeInputMeridiem, classNames?.meridiem)} style={slotStyles?.meridiem}>\n <button\n type='button'\n className={cx(dialTime.hours < 12 && styles.timeInputMeridiemActive)}\n onClick={() => setMeridiem(false)}\n >\n AM\n </button>\n <button\n type='button'\n className={cx(dialTime.hours >= 12 && styles.timeInputMeridiemActive)}\n onClick={() => setMeridiem(true)}\n >\n PM\n </button>\n </div>\n )}\n </div>\n );\n\n const footer =\n showClearButton || showNowButton ? (\n <div className={cx(styles.timeInputFooter, classNames?.footer)} style={slotStyles?.footer}>\n {showNowButton && (\n <Button\n styleType={ButtonStyleType.Default}\n onClick={() => {\n const now = new Date();\n handleDialChange({ hours: now.getHours(), minutes: now.getMinutes() });\n }}\n >\n Now\n </Button>\n )}\n {showClearButton && (\n <Button\n styleType={ButtonStyleType.Default}\n onClick={() => {\n applyTime(null);\n onSelect?.(null);\n }}\n >\n Clear\n </Button>\n )}\n </div>\n ) : null;\n\n const pickerContent = (\n <div className={cx(styles.timeInputClock, classNames?.clock)} style={slotStyles?.clock}>\n {header}\n <ClockDial\n time={dialTime}\n mode={mode}\n use24Hour={use24Hour}\n minuteStep={minuteStep}\n onChange={handleDialChange}\n onCommit={handleDialCommit}\n classNames={classNames}\n styles={slotStyles}\n />\n {footer}\n </div>\n );\n\n const input = noInput ? null : (\n <Input\n autoComplete='off'\n label={`${label}${computedIsRequired() ? ' *' : ''}`}\n value={currentTimeString}\n icon={<FontAwesomeIcon icon={faClock} />}\n onIconClick={openPicker}\n onClick={openPicker}\n readOnly={isModal}\n disabled={disabled}\n isValid={!hasErr}\n customInput={<InputMask mask='99:99' maskPlaceholder='_' beforeMaskedStateChange={beforeMaskedStateChange} />}\n onChange={(v) => handleInputChange(v as string)}\n onBlur={handleBlur}\n onFocus={() => setIsFocused(true)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n />\n );\n\n const picker = (() => {\n if (isInline) return pickerContent;\n if (isModal) {\n return (\n <Modal hideHeader isOpen={isPickerOpen} onClose={() => setIsPickerOpen(false)}>\n {pickerContent}\n </Modal>\n );\n }\n return (\n <Popover\n isOpen={isPickerOpen}\n onOpenChange={setIsPickerOpen}\n content={pickerContent}\n placement={PopoverPlacement.Bottom}\n align={PopoverAlign.Start}\n // A click to place the caret in the field must not take the panel away.\n // The focus stays there on its own: Popover only follows a keyboard open.\n closeOnTriggerClick={false}\n constrainWidth={false}\n >\n {input}\n </Popover>\n );\n })();\n\n return (\n <div\n className={cx(styles.timeInput, classNames?.root, className)}\n style={{ ...slotStyles?.root, ...style }}\n {...rest}\n >\n {(isModal || isInline) && input}\n {picker}\n <Tooltip\n variant='error'\n message={formValidator ? (formValidator.getCurrentErrorMessage() ?? '') : errorMessage || ''}\n isVisible={hasErr && (isFocused || isHovered)}\n />\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"timeInput.mjs","names":[],"sources":["../../../../package/common/timeInput/timeInput.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport cx from 'classnames';\nimport MaskedInput from '../maskedInput';\nimport type { BeforeMaskedStateChangeStates, MaskState } from '../maskedInput';\nimport { faClock } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Input from '../input';\nimport Modal from '../modal';\nimport Popover from '../popover';\nimport Button from '../button';\nimport { ButtonStyleType } from '../button/button.types';\nimport Tooltip from '../tooltip';\nimport ClockDial from './components/clockDial';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport { type TimeValue, parseTimeString, formatTime, snapMinute, clampToRange, clampHour } from './timeFunctions';\nimport type { TimeInputProps } from './timeInput.types';\n\nimport styles from './timeInput.module.pcss';\n\ntype ClockMode = 'hours' | 'minutes';\n\nexport default function TimeInput({\n value,\n selected,\n onChange = () => null,\n onSelect = () => null,\n formValidator = null,\n isInline = false,\n isModal = false,\n noInput = false,\n noHeader = false,\n showClearButton = false,\n showNowButton = false,\n minuteStep = 1,\n use24Hour = true,\n minTime = null,\n maxTime = null,\n label = '',\n isValid = true,\n errorMessage = '',\n isRequired = false,\n disabled = false,\n className = '',\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: TimeInputProps) {\n const getExternalString = (): string => {\n if (formValidator) return (formValidator.value as string) || '';\n return value ?? selected ?? '';\n };\n\n const [currentTimeString, setCurrentTimeString] = useState(getExternalString);\n const [isPickerOpen, setIsPickerOpen] = useState(false);\n const [mode, setMode] = useState<ClockMode>('hours');\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [, forceUpdate] = useState(0);\n\n const externalString = getExternalString();\n const [prevExternal, setPrevExternal] = useState(externalString);\n const fvRef = useRef(formValidator);\n\n // Sync when the controlled value changes externally.\n if (!formValidator && prevExternal !== externalString) {\n setPrevExternal(externalString);\n setCurrentTimeString(externalString);\n }\n\n useEffect(() => {\n fvRef.current = formValidator;\n if (!formValidator) return;\n const listener = () => {\n setCurrentTimeString((formValidator.value as string) || '');\n forceUpdate((n) => n + 1);\n };\n formValidator.registerOnUpdateListener(listener);\n return () => formValidator.removeOnUpdateListener(listener);\n }, [formValidator]);\n\n const hasError = (): boolean =>\n formValidator ? formValidator.touched && formValidator.hasError() : !isValid || !!errorMessage;\n\n const computedIsRequired = (): boolean =>\n !!(isRequired || formValidator?.validators.find((v) => (v as { validatorId?: string }).validatorId === 'required'));\n\n /** Push a value out to formValidator/onChange without touching the input string. */\n const emit = (time: TimeValue | null) => {\n const str = time ? formatTime(time) : null;\n if (formValidator) formValidator.set(str);\n onChange?.(str);\n };\n\n const applyTime = (time: TimeValue | null) => {\n setCurrentTimeString(time ? formatTime(time) : '');\n emit(time);\n };\n\n const parsed = parseTimeString(currentTimeString);\n const dialTime: TimeValue = parsed ?? { hours: 12, minutes: 0 };\n\n const handleDialChange = (time: TimeValue) => {\n const snapped = { hours: time.hours, minutes: snapMinute(time.minutes, minuteStep) };\n applyTime(clampToRange(snapped, minTime, maxTime));\n };\n\n const handleDialCommit = (time: TimeValue) => {\n const snapped = { hours: time.hours, minutes: snapMinute(time.minutes, minuteStep) };\n const next = clampToRange(snapped, minTime, maxTime);\n applyTime(next);\n if (mode === 'hours') {\n setMode('minutes');\n return;\n }\n onSelect?.(formatTime(next));\n if (!isInline) setIsPickerOpen(false);\n };\n\n const openPicker = () => {\n if (disabled) return;\n setMode('hours');\n setIsPickerOpen(true);\n };\n\n const beforeMaskedStateChange = ({ previousState, nextState }: BeforeMaskedStateChangeStates): MaskState => {\n if (nextState.value === previousState.value) return nextState;\n let v = nextState.value;\n const hourStr = v.slice(0, 2);\n if (/^\\d\\d$/.test(hourStr) && Number(hourStr) > 23) v = `23${v.slice(2)}`;\n const minStr = v.slice(3, 5);\n if (/^\\d\\d$/.test(minStr) && Number(minStr) > 59) v = `${v.slice(0, 3)}59`;\n return v === nextState.value ? nextState : { ...nextState, value: v };\n };\n\n const handleInputChange = (v: string) => {\n setCurrentTimeString(v);\n const t = parseTimeString(v);\n if (t) emit(t);\n };\n\n const handleBlur = () => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n emit(parseTimeString(currentTimeString));\n };\n\n const setMeridiem = (pm: boolean) => {\n const isPm = dialTime.hours >= 12;\n if (pm === isPm) return;\n applyTime({ hours: clampHour(dialTime.hours + (pm ? 12 : -12)), minutes: dialTime.minutes });\n };\n\n const hasErr = hasError();\n const displayHours = parsed\n ? String(use24Hour ? parsed.hours : ((parsed.hours + 11) % 12) + 1).padStart(2, '0')\n : '--';\n const displayMinutes = parsed ? String(parsed.minutes).padStart(2, '0') : '--';\n\n const header = noHeader ? null : (\n <div className={cx(styles.timeInputClockHeader, classNames?.clockHeader)} style={slotStyles?.clockHeader}>\n <button\n type='button'\n className={cx(\n styles.timeInputHeaderSegment,\n mode === 'hours' && styles.timeInputHeaderSegmentActive,\n classNames?.headerSegment,\n )}\n style={slotStyles?.headerSegment}\n onClick={() => setMode('hours')}\n >\n {displayHours}\n </button>\n <span className={styles.timeInputHeaderColon}>:</span>\n <button\n type='button'\n className={cx(\n styles.timeInputHeaderSegment,\n mode === 'minutes' && styles.timeInputHeaderSegmentActive,\n classNames?.headerSegment,\n )}\n style={slotStyles?.headerSegment}\n onClick={() => setMode('minutes')}\n >\n {displayMinutes}\n </button>\n {!use24Hour && (\n <div className={cx(styles.timeInputMeridiem, classNames?.meridiem)} style={slotStyles?.meridiem}>\n <button\n type='button'\n className={cx(dialTime.hours < 12 && styles.timeInputMeridiemActive)}\n onClick={() => setMeridiem(false)}\n >\n AM\n </button>\n <button\n type='button'\n className={cx(dialTime.hours >= 12 && styles.timeInputMeridiemActive)}\n onClick={() => setMeridiem(true)}\n >\n PM\n </button>\n </div>\n )}\n </div>\n );\n\n const footer =\n showClearButton || showNowButton ? (\n <div className={cx(styles.timeInputFooter, classNames?.footer)} style={slotStyles?.footer}>\n {showNowButton && (\n <Button\n styleType={ButtonStyleType.Default}\n onClick={() => {\n const now = new Date();\n handleDialChange({ hours: now.getHours(), minutes: now.getMinutes() });\n }}\n >\n Now\n </Button>\n )}\n {showClearButton && (\n <Button\n styleType={ButtonStyleType.Default}\n onClick={() => {\n applyTime(null);\n onSelect?.(null);\n }}\n >\n Clear\n </Button>\n )}\n </div>\n ) : null;\n\n const pickerContent = (\n <div className={cx(styles.timeInputClock, classNames?.clock)} style={slotStyles?.clock}>\n {header}\n <ClockDial\n time={dialTime}\n mode={mode}\n use24Hour={use24Hour}\n minuteStep={minuteStep}\n onChange={handleDialChange}\n onCommit={handleDialCommit}\n classNames={classNames}\n styles={slotStyles}\n />\n {footer}\n </div>\n );\n\n const input = noInput ? null : (\n <Input\n autoComplete='off'\n label={`${label}${computedIsRequired() ? ' *' : ''}`}\n value={currentTimeString}\n icon={<FontAwesomeIcon icon={faClock} />}\n onIconClick={openPicker}\n onClick={openPicker}\n readOnly={isModal}\n disabled={disabled}\n isValid={!hasErr}\n customInput={<MaskedInput mask='99:99' beforeMaskedStateChange={beforeMaskedStateChange} />}\n onChange={(v) => handleInputChange(v as string)}\n onBlur={handleBlur}\n onFocus={() => setIsFocused(true)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n />\n );\n\n const picker = (() => {\n if (isInline) return pickerContent;\n if (isModal) {\n return (\n <Modal hideHeader isOpen={isPickerOpen} onClose={() => setIsPickerOpen(false)}>\n {pickerContent}\n </Modal>\n );\n }\n return (\n <Popover\n isOpen={isPickerOpen}\n onOpenChange={setIsPickerOpen}\n content={pickerContent}\n placement={PopoverPlacement.Bottom}\n align={PopoverAlign.Start}\n // A click to place the caret in the field must not take the panel away.\n // The focus stays there on its own: Popover only follows a keyboard open.\n closeOnTriggerClick={false}\n constrainWidth={false}\n >\n {input}\n </Popover>\n );\n })();\n\n return (\n <div\n className={cx(styles.timeInput, classNames?.root, className)}\n style={{ ...slotStyles?.root, ...style }}\n {...rest}\n >\n {(isModal || isInline) && input}\n {picker}\n <Tooltip\n variant='error'\n message={formValidator ? (formValidator.getCurrentErrorMessage() ?? '') : errorMessage || ''}\n isVisible={hasErr && (isFocused || isHovered)}\n />\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e=`timeInput_EbsZN`,t=`timeInput-clock_D1-dk`,n=`timeInput-clockHeader_bsYNW`,r=`timeInput-headerSegment_Oiu7e`,i=`timeInput-headerSegment-active_-Funz`,a=`timeInput-headerColon_LwyQH`,o=`timeInput-meridiem_tk9km`,s=`timeInput-meridiem-active_40uHm`,c=`timeInput-footer_NCXsB`,l={timeInput:e,"timeInput-clock":`timeInput-clock_D1-dk`,timeInputClock:t,"timeInput-clockHeader":`timeInput-clockHeader_bsYNW`,timeInputClockHeader:n,"timeInput-headerSegment":`timeInput-headerSegment_Oiu7e`,timeInputHeaderSegment:r,"timeInput-headerSegment-active":`timeInput-headerSegment-active_-Funz`,timeInputHeaderSegmentActive:i,"timeInput-headerColon":`timeInput-headerColon_LwyQH`,timeInputHeaderColon:a,"timeInput-meridiem":`timeInput-meridiem_tk9km`,timeInputMeridiem:o,"timeInput-meridiem-active":`timeInput-meridiem-active_40uHm`,timeInputMeridiemActive:s,"timeInput-footer":`timeInput-footer_NCXsB`,timeInputFooter:c};export{l as default,e as timeInput,t as timeInputClock,n as timeInputClockHeader,c as timeInputFooter,a as timeInputHeaderColon,r as timeInputHeaderSegment,i as timeInputHeaderSegmentActive,o as timeInputMeridiem,s as timeInputMeridiemActive};
1
+ "use client";var e=`timeInput_EbsZN`,t=`timeInput-clock_D1-dk`,n=`timeInput-clockHeader_bsYNW`,r=`timeInput-headerSegment_Oiu7e`,i=`timeInput-headerSegment-active_-Funz`,a=`timeInput-headerColon_LwyQH`,o=`timeInput-meridiem_tk9km`,s=`timeInput-meridiem-active_40uHm`,c=`timeInput-footer_NCXsB`,l={timeInput:e,"timeInput-clock":`timeInput-clock_D1-dk`,timeInputClock:t,"timeInput-clockHeader":`timeInput-clockHeader_bsYNW`,timeInputClockHeader:n,"timeInput-headerSegment":`timeInput-headerSegment_Oiu7e`,timeInputHeaderSegment:r,"timeInput-headerSegment-active":`timeInput-headerSegment-active_-Funz`,timeInputHeaderSegmentActive:i,"timeInput-headerColon":`timeInput-headerColon_LwyQH`,timeInputHeaderColon:a,"timeInput-meridiem":`timeInput-meridiem_tk9km`,timeInputMeridiem:o,"timeInput-meridiem-active":`timeInput-meridiem-active_40uHm`,timeInputMeridiemActive:s,"timeInput-footer":`timeInput-footer_NCXsB`,timeInputFooter:c};export{l as default,e as timeInput,t as timeInputClock,n as timeInputClockHeader,c as timeInputFooter,a as timeInputHeaderColon,r as timeInputHeaderSegment,i as timeInputHeaderSegmentActive,o as timeInputMeridiem,s as timeInputMeridiemActive};
2
2
  //# sourceMappingURL=timeInput.module.mjs.map
@@ -1,2 +1,2 @@
1
- import{renderIcon as e}from"../utils/renderIcon.mjs";import t from"../interactableDiv/index.mjs";import n from"./timeline.module.mjs";import{TimelineAlignment as r,TimelineItemStatus as i}from"./timeline.types.mjs";import"react";import a from"classnames";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";var l={[i.Primary]:n.timelineDotPrimary,[i.Success]:n.timelineDotSuccess,[i.Warn]:n.timelineDotWarn,[i.Error]:n.timelineDotError};function u({items:u=[],alignment:d=r.Left,className:f,style:p,classNames:m,styles:h,...g}){let _=u.some(e=>!!e.icon);return s(`div`,{...g,className:a(n.timeline,{[n.timelineRight]:d===r.Right,[n.timelineAlternate]:d===r.Alternate,[n.timelineWithIcons]:_},m?.root,f),style:{...h?.root,...p},children:u.map((f,p)=>{let g=f.id??p,_=p===u.length-1,v=d===r.Alternate&&p%2==1,y=!!f.onClick&&!f.disabled,b=c(o,{children:[c(`div`,{className:a(n.timelineMarker,m?.marker),style:h?.marker,children:[s(`div`,{className:a(n.timelineDot,{[n.timelineDotWithIcon]:!!f.icon},l[f.status??i.Default],m?.dot),style:h?.dot,children:f.icon?e(f.icon):null}),!_&&s(`div`,{className:a(n.timelineConnector,m?.connector),style:h?.connector})]}),c(`div`,{className:a(n.timelineContent,m?.content),style:h?.content,children:[c(`div`,{className:n.timelineHeader,children:[s(`div`,{className:a(n.timelineTitle,m?.title),style:h?.title,children:f.title}),f.timestamp!=null&&s(`div`,{className:a(n.timelineTimestamp,m?.timestamp),style:h?.timestamp,children:f.timestamp})]}),f.description!=null&&s(`div`,{className:a(n.timelineDescription,m?.description),style:h?.description,children:f.description}),f.content]})]}),x=a(n.timelineItem,{[n.timelineItemRight]:v},{[n.timelineItemClickable]:y},{[n.timelineItemDisabled]:f.disabled},m?.item);return y?s(t,{className:x,style:h?.item,onClick:f.onClick,children:b},g):s(`div`,{className:x,style:h?.item,"aria-disabled":f.disabled||void 0,children:b},g)})})}export{u as default};
1
+ "use client";import{renderIcon as e}from"../utils/renderIcon.mjs";import t from"../interactableDiv/index.mjs";import n from"./timeline.module.mjs";import{TimelineAlignment as r,TimelineItemStatus as i}from"./timeline.types.mjs";import"react";import a from"classnames";import{Fragment as o,jsx as s,jsxs as c}from"react/jsx-runtime";var l={[i.Primary]:n.timelineDotPrimary,[i.Success]:n.timelineDotSuccess,[i.Warn]:n.timelineDotWarn,[i.Error]:n.timelineDotError};function u({items:u=[],alignment:d=r.Left,className:f,style:p,classNames:m,styles:h,...g}){let _=u.some(e=>!!e.icon);return s(`div`,{...g,className:a(n.timeline,{[n.timelineRight]:d===r.Right,[n.timelineAlternate]:d===r.Alternate,[n.timelineWithIcons]:_},m?.root,f),style:{...h?.root,...p},children:u.map((f,p)=>{let g=f.id??p,_=p===u.length-1,v=d===r.Alternate&&p%2==1,y=!!f.onClick&&!f.disabled,b=c(o,{children:[c(`div`,{className:a(n.timelineMarker,m?.marker),style:h?.marker,children:[s(`div`,{className:a(n.timelineDot,{[n.timelineDotWithIcon]:!!f.icon},l[f.status??i.Default],m?.dot),style:h?.dot,children:f.icon?e(f.icon):null}),!_&&s(`div`,{className:a(n.timelineConnector,m?.connector),style:h?.connector})]}),c(`div`,{className:a(n.timelineContent,m?.content),style:h?.content,children:[c(`div`,{className:n.timelineHeader,children:[s(`div`,{className:a(n.timelineTitle,m?.title),style:h?.title,children:f.title}),f.timestamp!=null&&s(`div`,{className:a(n.timelineTimestamp,m?.timestamp),style:h?.timestamp,children:f.timestamp})]}),f.description!=null&&s(`div`,{className:a(n.timelineDescription,m?.description),style:h?.description,children:f.description}),f.content]})]}),x=a(n.timelineItem,{[n.timelineItemRight]:v},{[n.timelineItemClickable]:y},{[n.timelineItemDisabled]:f.disabled},m?.item);return y?s(t,{className:x,style:h?.item,onClick:f.onClick,children:b},g):s(`div`,{className:x,style:h?.item,"aria-disabled":f.disabled||void 0,children:b},g)})})}export{u as default};
2
2
  //# sourceMappingURL=timeline.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.mjs","names":[],"sources":["../../../../package/common/timeline/timeline.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\nimport InteractableDiv from '../interactableDiv';\nimport styles from './timeline.module.pcss';\nimport { TimelineAlignment, TimelineItemStatus, type TimelineProps, type TimelineItem } from './timeline.types';\nimport { renderIcon } from '../utils/renderIcon';\n\n// TimelineItemStatus.Default is intentionally absent: it uses .timeline-dot's own\n// background-color, so no modifier class is needed for it.\nconst STATUS_CLASS: Partial<Record<TimelineItemStatus, string>> = {\n [TimelineItemStatus.Primary]: styles.timelineDotPrimary,\n [TimelineItemStatus.Success]: styles.timelineDotSuccess,\n [TimelineItemStatus.Warn]: styles.timelineDotWarn,\n [TimelineItemStatus.Error]: styles.timelineDotError,\n};\n\nexport default function Timeline({\n items = [],\n alignment = TimelineAlignment.Left,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: TimelineProps) {\n // An icon dot is bigger than a plain one, and the marker is only as wide as the dot\n // inside it — so mixing the two put every row's spine and content column at a different\n // x. Widening the marker for the whole timeline fixes the alignment; doing it only when\n // an icon is actually present leaves an icon-less timeline exactly where it was.\n const hasIcons = items.some((item: TimelineItem) => !!item.icon);\n\n return (\n <div\n {...rest}\n className={cx(\n styles.timeline,\n {\n [styles.timelineRight]: alignment === TimelineAlignment.Right,\n [styles.timelineAlternate]: alignment === TimelineAlignment.Alternate,\n [styles.timelineWithIcons]: hasIcons,\n },\n classNames?.root,\n className,\n )}\n style={{ ...slotStyles?.root, ...style }}\n >\n {items.map((item: TimelineItem, index: number) => {\n const key = item.id ?? index;\n const isLast = index === items.length - 1;\n const isAlternateRight = alignment === TimelineAlignment.Alternate && index % 2 === 1;\n const isClickable = !!item.onClick && !item.disabled;\n\n const itemContent = (\n <>\n <div className={cx(styles.timelineMarker, classNames?.marker)} style={slotStyles?.marker}>\n <div\n className={cx(\n styles.timelineDot,\n { [styles.timelineDotWithIcon]: !!item.icon },\n STATUS_CLASS[item.status ?? TimelineItemStatus.Default],\n classNames?.dot,\n )}\n style={slotStyles?.dot}\n >\n {item.icon ? renderIcon(item.icon) : null}\n </div>\n {!isLast && (\n <div className={cx(styles.timelineConnector, classNames?.connector)} style={slotStyles?.connector} />\n )}\n </div>\n <div className={cx(styles.timelineContent, classNames?.content)} style={slotStyles?.content}>\n <div className={styles.timelineHeader}>\n <div className={cx(styles.timelineTitle, classNames?.title)} style={slotStyles?.title}>\n {item.title}\n </div>\n {item.timestamp != null && (\n <div className={cx(styles.timelineTimestamp, classNames?.timestamp)} style={slotStyles?.timestamp}>\n {item.timestamp}\n </div>\n )}\n </div>\n {item.description != null && (\n <div\n className={cx(styles.timelineDescription, classNames?.description)}\n style={slotStyles?.description}\n >\n {item.description}\n </div>\n )}\n {item.content}\n </div>\n </>\n );\n\n const itemClassName = cx(\n styles.timelineItem,\n { [styles.timelineItemRight]: isAlternateRight },\n { [styles.timelineItemClickable]: isClickable },\n { [styles.timelineItemDisabled]: item.disabled },\n classNames?.item,\n );\n\n if (isClickable) {\n return (\n <InteractableDiv key={key} className={itemClassName} style={slotStyles?.item} onClick={item.onClick}>\n {itemContent}\n </InteractableDiv>\n );\n }\n\n return (\n <div key={key} className={itemClassName} style={slotStyles?.item} aria-disabled={item.disabled || undefined}>\n {itemContent}\n </div>\n );\n })}\n </div>\n );\n}\n"],"mappings":"+TASA,IAAM,EAA4D,EAC/D,EAAmB,SAAU,EAAO,oBACpC,EAAmB,SAAU,EAAO,oBACpC,EAAmB,MAAO,EAAO,iBACjC,EAAmB,OAAQ,EAAO,gBACrC,EAEA,SAAwB,EAAS,CAC/B,QAAQ,CAAC,EACT,YAAY,EAAkB,KAC9B,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACa,CAKhB,IAAM,EAAW,EAAM,KAAM,GAAuB,CAAC,CAAC,EAAK,IAAI,EAE/D,OACE,EAAC,MAAD,CACE,GAAI,EACJ,UAAW,EACT,EAAO,SACP,EACG,EAAO,eAAgB,IAAc,EAAkB,OACvD,EAAO,mBAAoB,IAAc,EAAkB,WAC3D,EAAO,mBAAoB,CAC9B,EACA,GAAY,KACZ,CACF,EACA,MAAO,CAAE,GAAG,GAAY,KAAM,GAAG,CAAM,EAEtC,SAAA,EAAM,KAAK,EAAoB,IAAkB,CAChD,IAAM,EAAM,EAAK,IAAM,EACjB,EAAS,IAAU,EAAM,OAAS,EAClC,EAAmB,IAAc,EAAkB,WAAa,EAAQ,GAAM,EAC9E,EAAc,CAAC,CAAC,EAAK,SAAW,CAAC,EAAK,SAEtC,EACJ,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,eAAgB,GAAY,MAAM,EAAG,MAAO,GAAY,OAAlF,SAAA,CACE,EAAC,MAAD,CACE,UAAW,EACT,EAAO,YACP,EAAG,EAAO,qBAAsB,CAAC,CAAC,EAAK,IAAK,EAC5C,EAAa,EAAK,QAAU,EAAmB,SAC/C,GAAY,GACd,EACA,MAAO,GAAY,IAElB,SAAA,EAAK,KAAO,EAAW,EAAK,IAAI,EAAI,IAClC,CAAA,EACJ,CAAC,GACA,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,GAAY,SAAS,EAAG,MAAO,GAAY,SAAY,CAAA,CAEnG,CACL,CAAA,EAAA,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,gBAAiB,GAAY,OAAO,EAAG,MAAO,GAAY,QAApF,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAO,eAAvB,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,cAAe,GAAY,KAAK,EAAG,MAAO,GAAY,MAC7E,SAAA,EAAK,KACH,CAAA,EACJ,EAAK,WAAa,MACjB,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,GAAY,SAAS,EAAG,MAAO,GAAY,UACrF,SAAA,EAAK,SACH,CAAA,CAEJ,IACJ,EAAK,aAAe,MACnB,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,oBAAqB,GAAY,WAAW,EACjE,MAAO,GAAY,YAElB,SAAA,EAAK,WACH,CAAA,EAEN,EAAK,OACH,CACL,CAAA,CAAA,CAAA,CAAA,EAGE,EAAgB,EACpB,EAAO,aACP,EAAG,EAAO,mBAAoB,CAAiB,EAC/C,EAAG,EAAO,uBAAwB,CAAY,EAC9C,EAAG,EAAO,sBAAuB,EAAK,QAAS,EAC/C,GAAY,IACd,EAUA,OARI,EAEA,EAAC,EAAD,CAA2B,UAAW,EAAe,MAAO,GAAY,KAAM,QAAS,EAAK,QACzF,SAAA,CACc,EAFK,CAEL,EAKnB,EAAC,MAAD,CAAe,UAAW,EAAe,MAAO,GAAY,KAAM,gBAAe,EAAK,UAAY,IAAA,GAC/F,SAAA,CACE,EAFK,CAEL,CAET,CAAC,CACE,CAAA,CAET"}
1
+ {"version":3,"file":"timeline.mjs","names":[],"sources":["../../../../package/common/timeline/timeline.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\nimport InteractableDiv from '../interactableDiv';\nimport styles from './timeline.module.pcss';\nimport { TimelineAlignment, TimelineItemStatus, type TimelineProps, type TimelineItem } from './timeline.types';\nimport { renderIcon } from '../utils/renderIcon';\n\n// TimelineItemStatus.Default is intentionally absent: it uses .timeline-dot's own\n// background-color, so no modifier class is needed for it.\nconst STATUS_CLASS: Partial<Record<TimelineItemStatus, string>> = {\n [TimelineItemStatus.Primary]: styles.timelineDotPrimary,\n [TimelineItemStatus.Success]: styles.timelineDotSuccess,\n [TimelineItemStatus.Warn]: styles.timelineDotWarn,\n [TimelineItemStatus.Error]: styles.timelineDotError,\n};\n\nexport default function Timeline({\n items = [],\n alignment = TimelineAlignment.Left,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: TimelineProps) {\n // An icon dot is bigger than a plain one, and the marker is only as wide as the dot\n // inside it — so mixing the two put every row's spine and content column at a different\n // x. Widening the marker for the whole timeline fixes the alignment; doing it only when\n // an icon is actually present leaves an icon-less timeline exactly where it was.\n const hasIcons = items.some((item: TimelineItem) => !!item.icon);\n\n return (\n <div\n {...rest}\n className={cx(\n styles.timeline,\n {\n [styles.timelineRight]: alignment === TimelineAlignment.Right,\n [styles.timelineAlternate]: alignment === TimelineAlignment.Alternate,\n [styles.timelineWithIcons]: hasIcons,\n },\n classNames?.root,\n className,\n )}\n style={{ ...slotStyles?.root, ...style }}\n >\n {items.map((item: TimelineItem, index: number) => {\n const key = item.id ?? index;\n const isLast = index === items.length - 1;\n const isAlternateRight = alignment === TimelineAlignment.Alternate && index % 2 === 1;\n const isClickable = !!item.onClick && !item.disabled;\n\n const itemContent = (\n <>\n <div className={cx(styles.timelineMarker, classNames?.marker)} style={slotStyles?.marker}>\n <div\n className={cx(\n styles.timelineDot,\n { [styles.timelineDotWithIcon]: !!item.icon },\n STATUS_CLASS[item.status ?? TimelineItemStatus.Default],\n classNames?.dot,\n )}\n style={slotStyles?.dot}\n >\n {item.icon ? renderIcon(item.icon) : null}\n </div>\n {!isLast && (\n <div className={cx(styles.timelineConnector, classNames?.connector)} style={slotStyles?.connector} />\n )}\n </div>\n <div className={cx(styles.timelineContent, classNames?.content)} style={slotStyles?.content}>\n <div className={styles.timelineHeader}>\n <div className={cx(styles.timelineTitle, classNames?.title)} style={slotStyles?.title}>\n {item.title}\n </div>\n {item.timestamp != null && (\n <div className={cx(styles.timelineTimestamp, classNames?.timestamp)} style={slotStyles?.timestamp}>\n {item.timestamp}\n </div>\n )}\n </div>\n {item.description != null && (\n <div\n className={cx(styles.timelineDescription, classNames?.description)}\n style={slotStyles?.description}\n >\n {item.description}\n </div>\n )}\n {item.content}\n </div>\n </>\n );\n\n const itemClassName = cx(\n styles.timelineItem,\n { [styles.timelineItemRight]: isAlternateRight },\n { [styles.timelineItemClickable]: isClickable },\n { [styles.timelineItemDisabled]: item.disabled },\n classNames?.item,\n );\n\n if (isClickable) {\n return (\n <InteractableDiv key={key} className={itemClassName} style={slotStyles?.item} onClick={item.onClick}>\n {itemContent}\n </InteractableDiv>\n );\n }\n\n return (\n <div key={key} className={itemClassName} style={slotStyles?.item} aria-disabled={item.disabled || undefined}>\n {itemContent}\n </div>\n );\n })}\n </div>\n );\n}\n"],"mappings":"4UASA,IAAM,EAA4D,EAC/D,EAAmB,SAAU,EAAO,oBACpC,EAAmB,SAAU,EAAO,oBACpC,EAAmB,MAAO,EAAO,iBACjC,EAAmB,OAAQ,EAAO,gBACrC,EAEA,SAAwB,EAAS,CAC/B,QAAQ,CAAC,EACT,YAAY,EAAkB,KAC9B,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACa,CAKhB,IAAM,EAAW,EAAM,KAAM,GAAuB,CAAC,CAAC,EAAK,IAAI,EAE/D,OACE,EAAC,MAAD,CACE,GAAI,EACJ,UAAW,EACT,EAAO,SACP,EACG,EAAO,eAAgB,IAAc,EAAkB,OACvD,EAAO,mBAAoB,IAAc,EAAkB,WAC3D,EAAO,mBAAoB,CAC9B,EACA,GAAY,KACZ,CACF,EACA,MAAO,CAAE,GAAG,GAAY,KAAM,GAAG,CAAM,EAEtC,SAAA,EAAM,KAAK,EAAoB,IAAkB,CAChD,IAAM,EAAM,EAAK,IAAM,EACjB,EAAS,IAAU,EAAM,OAAS,EAClC,EAAmB,IAAc,EAAkB,WAAa,EAAQ,GAAM,EAC9E,EAAc,CAAC,CAAC,EAAK,SAAW,CAAC,EAAK,SAEtC,EACJ,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,eAAgB,GAAY,MAAM,EAAG,MAAO,GAAY,OAAlF,SAAA,CACE,EAAC,MAAD,CACE,UAAW,EACT,EAAO,YACP,EAAG,EAAO,qBAAsB,CAAC,CAAC,EAAK,IAAK,EAC5C,EAAa,EAAK,QAAU,EAAmB,SAC/C,GAAY,GACd,EACA,MAAO,GAAY,IAElB,SAAA,EAAK,KAAO,EAAW,EAAK,IAAI,EAAI,IAClC,CAAA,EACJ,CAAC,GACA,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,GAAY,SAAS,EAAG,MAAO,GAAY,SAAY,CAAA,CAEnG,CACL,CAAA,EAAA,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,gBAAiB,GAAY,OAAO,EAAG,MAAO,GAAY,QAApF,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAO,eAAvB,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,cAAe,GAAY,KAAK,EAAG,MAAO,GAAY,MAC7E,SAAA,EAAK,KACH,CAAA,EACJ,EAAK,WAAa,MACjB,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,GAAY,SAAS,EAAG,MAAO,GAAY,UACrF,SAAA,EAAK,SACH,CAAA,CAEJ,IACJ,EAAK,aAAe,MACnB,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,oBAAqB,GAAY,WAAW,EACjE,MAAO,GAAY,YAElB,SAAA,EAAK,WACH,CAAA,EAEN,EAAK,OACH,CACL,CAAA,CAAA,CAAA,CAAA,EAGE,EAAgB,EACpB,EAAO,aACP,EAAG,EAAO,mBAAoB,CAAiB,EAC/C,EAAG,EAAO,uBAAwB,CAAY,EAC9C,EAAG,EAAO,sBAAuB,EAAK,QAAS,EAC/C,GAAY,IACd,EAUA,OARI,EAEA,EAAC,EAAD,CAA2B,UAAW,EAAe,MAAO,GAAY,KAAM,QAAS,EAAK,QACzF,SAAA,CACc,EAFK,CAEL,EAKnB,EAAC,MAAD,CAAe,UAAW,EAAe,MAAO,GAAY,KAAM,gBAAe,EAAK,UAAY,IAAA,GAC/F,SAAA,CACE,EAFK,CAEL,CAET,CAAC,CACE,CAAA,CAET"}