@ahrowe/ui 0.35.0 → 0.37.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 (783) hide show
  1. package/README.md +102 -72
  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/index.d.ts +13 -0
  123. package/dist/cjs-types/common/hooks/useAnchorTracking.d.ts +40 -0
  124. package/dist/cjs-types/common/hooks/useCoarsePointer.d.ts +3 -0
  125. package/dist/cjs-types/common/hooks/useFocusBoundary.d.ts +20 -0
  126. package/dist/cjs-types/common/hooks/useHotkeys.d.ts +45 -0
  127. package/dist/cjs-types/common/hooks/useMediaQuery.d.ts +9 -0
  128. package/dist/cjs-types/common/hooks/useOverlay.d.ts +26 -0
  129. package/dist/cjs-types/common/hooks/useScrollEdges.d.ts +18 -0
  130. package/dist/cjs-types/common/hooks/useSheet.d.ts +19 -0
  131. package/dist/cjs-types/common/hooks/useSwipeDismiss.d.ts +37 -0
  132. package/dist/cjs-types/common/hooks/useVisualViewportSize.d.ts +13 -0
  133. package/dist/cjs-types/common/iconPicker/iconPicker.d.ts +3 -0
  134. package/dist/cjs-types/common/iconPicker/iconPicker.types.d.ts +23 -0
  135. package/dist/cjs-types/common/iconPicker/index.d.ts +2 -0
  136. package/dist/cjs-types/common/idleManager/idleManager.d.ts +3 -0
  137. package/dist/cjs-types/common/idleManager/idleManager.types.d.ts +8 -0
  138. package/dist/cjs-types/common/idleManager/index.d.ts +2 -0
  139. package/dist/cjs-types/common/infiniteBlock/useInfiniteScroll.d.ts +5 -0
  140. package/dist/cjs-types/common/input/index.d.ts +2 -0
  141. package/dist/cjs-types/common/input/input.d.ts +4 -0
  142. package/dist/cjs-types/common/input/input.types.d.ts +84 -0
  143. package/dist/cjs-types/common/inputDropdown/index.d.ts +2 -0
  144. package/dist/cjs-types/common/inputDropdown/inputDropdown.d.ts +3 -0
  145. package/dist/cjs-types/common/inputDropdown/inputDropdown.types.d.ts +36 -0
  146. package/dist/cjs-types/common/interactableDiv/index.d.ts +2 -0
  147. package/dist/cjs-types/common/interactableDiv/interactableDiv.d.ts +8 -0
  148. package/dist/cjs-types/common/kanbanBoard/KanbanBoard.d.ts +3 -0
  149. package/dist/cjs-types/common/kanbanBoard/KanbanColumn.d.ts +45 -0
  150. package/dist/cjs-types/common/kanbanBoard/KanbanItem.d.ts +3 -0
  151. package/dist/cjs-types/common/kanbanBoard/index.d.ts +3 -0
  152. package/dist/cjs-types/common/kanbanBoard/kanbanBoard.types.d.ts +129 -0
  153. package/dist/cjs-types/common/kanbanBoard/kanbanBoard.utils.d.ts +60 -0
  154. package/dist/cjs-types/common/klipyPicker/components/gifPreview/gifPreview.d.ts +3 -0
  155. package/dist/cjs-types/common/klipyPicker/components/gifPreview/gifPreview.types.d.ts +7 -0
  156. package/dist/cjs-types/common/klipyPicker/components/gifPreview/index.d.ts +1 -0
  157. package/dist/cjs-types/common/klipyPicker/components/gifView/gifView.d.ts +3 -0
  158. package/dist/cjs-types/common/klipyPicker/components/gifView/gifView.types.d.ts +4 -0
  159. package/dist/cjs-types/common/klipyPicker/components/gifView/index.d.ts +1 -0
  160. package/dist/cjs-types/common/klipyPicker/index.d.ts +2 -0
  161. package/dist/cjs-types/common/klipyPicker/klipyPicker.d.ts +3 -0
  162. package/dist/cjs-types/common/klipyPicker/klipyPicker.types.d.ts +15 -0
  163. package/dist/cjs-types/common/loading/index.d.ts +1 -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 +3 -0
  171. package/dist/cjs-types/common/menu/menu.d.ts +14 -0
  172. package/dist/cjs-types/common/menu/menu.types.d.ts +61 -0
  173. package/dist/cjs-types/common/menu/menuHotkeys.d.ts +20 -0
  174. package/dist/cjs-types/common/modal/index.d.ts +2 -0
  175. package/dist/cjs-types/common/modal/modal.d.ts +3 -0
  176. package/dist/cjs-types/common/modal/modal.types.d.ts +31 -0
  177. package/dist/cjs-types/common/multiSelect/index.d.ts +2 -0
  178. package/dist/cjs-types/common/multiSelect/multiSelect.d.ts +4 -0
  179. package/dist/cjs-types/common/multiSelect/multiSelect.types.d.ts +69 -0
  180. package/dist/cjs-types/common/numberInput/index.d.ts +3 -0
  181. package/dist/cjs-types/common/numberInput/numberInput.d.ts +5 -0
  182. package/dist/cjs-types/common/numberInput/numberInput.types.d.ts +76 -0
  183. package/dist/cjs-types/common/numberInput/useStepRepeat.d.ts +17 -0
  184. package/dist/cjs-types/common/optionPicker/index.d.ts +2 -0
  185. package/dist/cjs-types/common/optionPicker/optionPicker.d.ts +4 -0
  186. package/dist/cjs-types/common/optionPicker/optionPicker.types.d.ts +16 -0
  187. package/dist/cjs-types/common/otpInput/index.d.ts +2 -0
  188. package/dist/cjs-types/common/otpInput/otpInput.d.ts +4 -0
  189. package/dist/cjs-types/common/otpInput/otpInput.types.d.ts +60 -0
  190. package/dist/cjs-types/common/overscroll/index.d.ts +2 -0
  191. package/dist/cjs-types/common/overscroll/overscroll.d.ts +2 -0
  192. package/dist/cjs-types/common/overscroll/overscroll.types.d.ts +14 -0
  193. package/dist/cjs-types/common/pagination/index.d.ts +2 -0
  194. package/dist/cjs-types/common/pagination/pagination.d.ts +4 -0
  195. package/dist/cjs-types/common/pagination/pagination.types.d.ts +45 -0
  196. package/dist/cjs-types/common/planCanvas/index.d.ts +2 -0
  197. package/dist/cjs-types/common/planCanvas/planCanvas.d.ts +7 -0
  198. package/dist/cjs-types/common/planCanvas/planCanvas.types.d.ts +64 -0
  199. package/dist/cjs-types/common/popover/index.d.ts +2 -0
  200. package/dist/cjs-types/common/popover/popover.d.ts +3 -0
  201. package/dist/cjs-types/common/popover/popover.types.d.ts +94 -0
  202. package/dist/cjs-types/common/popover/usePopoverPosition.d.ts +45 -0
  203. package/dist/cjs-types/common/progressBar/index.d.ts +2 -0
  204. package/dist/cjs-types/common/progressBar/progressBar.d.ts +5 -0
  205. package/dist/cjs-types/common/progressBar/progressBar.types.d.ts +18 -0
  206. package/dist/cjs-types/common/radioGroup/index.d.ts +2 -0
  207. package/dist/cjs-types/common/radioGroup/radioGroup.d.ts +4 -0
  208. package/dist/cjs-types/common/radioGroup/radioGroup.types.d.ts +45 -0
  209. package/dist/cjs-types/common/rating/index.d.ts +2 -0
  210. package/dist/cjs-types/common/rating/rating.d.ts +4 -0
  211. package/dist/cjs-types/common/rating/rating.types.d.ts +19 -0
  212. package/dist/cjs-types/common/revealLens/index.d.ts +2 -0
  213. package/dist/cjs-types/common/revealLens/revealLens.d.ts +4 -0
  214. package/dist/cjs-types/common/revealLens/revealLens.types.d.ts +24 -0
  215. package/dist/cjs-types/common/ripple/index.d.ts +2 -0
  216. package/dist/cjs-types/common/ripple/ripple.d.ts +5 -0
  217. package/dist/cjs-types/common/ripple/ripple.types.d.ts +16 -0
  218. package/dist/cjs-types/common/roomDrawer/index.d.ts +2 -0
  219. package/dist/cjs-types/common/roomDrawer/roomDrawer.d.ts +3 -0
  220. package/dist/cjs-types/common/roomDrawer/roomDrawer.types.d.ts +308 -0
  221. package/dist/cjs-types/common/roomDrawer/usePlanHistory.d.ts +24 -0
  222. package/dist/cjs-types/common/roomViewer/index.d.ts +2 -0
  223. package/dist/cjs-types/common/roomViewer/roomViewer.d.ts +10 -0
  224. package/dist/cjs-types/common/roomViewer/roomViewer.types.d.ts +91 -0
  225. package/dist/cjs-types/common/scrollFade/index.d.ts +2 -0
  226. package/dist/cjs-types/common/scrollFade/scrollFade.d.ts +4 -0
  227. package/dist/cjs-types/common/scrollFade/scrollFade.types.d.ts +20 -0
  228. package/dist/cjs-types/common/scrollbarProvider/index.d.ts +2 -0
  229. package/dist/cjs-types/common/scrollbarProvider/scrollbarProvider.d.ts +7 -0
  230. package/dist/cjs-types/common/searchInput/index.d.ts +2 -0
  231. package/dist/cjs-types/common/searchInput/searchInput.d.ts +3 -0
  232. package/dist/cjs-types/common/searchInput/searchInput.types.d.ts +28 -0
  233. package/dist/cjs-types/common/sectionHeader/index.d.ts +2 -0
  234. package/dist/cjs-types/common/sectionHeader/sectionHeader.d.ts +4 -0
  235. package/dist/cjs-types/common/sectionHeader/sectionHeader.types.d.ts +27 -0
  236. package/dist/cjs-types/common/sheetBackdrop/index.d.ts +2 -0
  237. package/dist/cjs-types/common/sheetBackdrop/sheetBackdrop.d.ts +16 -0
  238. package/dist/cjs-types/common/sheetBackdrop/sheetBackdrop.types.d.ts +7 -0
  239. package/dist/cjs-types/common/skeleton/index.d.ts +2 -0
  240. package/dist/cjs-types/common/skeleton/skeleton.d.ts +4 -0
  241. package/dist/cjs-types/common/skeleton/skeleton.types.d.ts +22 -0
  242. package/dist/cjs-types/common/slider/index.d.ts +2 -0
  243. package/dist/cjs-types/common/slider/slider.d.ts +3 -0
  244. package/dist/cjs-types/common/slider/slider.types.d.ts +68 -0
  245. package/dist/cjs-types/common/splitButton/index.d.ts +2 -0
  246. package/dist/cjs-types/common/splitButton/splitButton.d.ts +3 -0
  247. package/dist/cjs-types/common/splitButton/splitButton.types.d.ts +35 -0
  248. package/dist/cjs-types/common/stepper/index.d.ts +2 -0
  249. package/dist/cjs-types/common/stepper/stepper.d.ts +3 -0
  250. package/dist/cjs-types/common/stepper/stepper.types.d.ts +77 -0
  251. package/dist/cjs-types/common/sticky/index.d.ts +1 -0
  252. package/dist/cjs-types/common/sticky/sticky.d.ts +3 -0
  253. package/dist/cjs-types/common/sticky/sticky.types.d.ts +37 -0
  254. package/dist/cjs-types/common/sticky/stickyStack.d.ts +51 -0
  255. package/dist/cjs-types/common/switch/index.d.ts +2 -0
  256. package/dist/cjs-types/common/switch/switch.d.ts +4 -0
  257. package/dist/cjs-types/common/switch/switch.types.d.ts +21 -0
  258. package/dist/cjs-types/common/tabHeader/index.d.ts +2 -0
  259. package/dist/cjs-types/common/tabHeader/tabHeader.d.ts +4 -0
  260. package/dist/cjs-types/common/tabHeader/tabHeader.types.d.ts +20 -0
  261. package/dist/cjs-types/common/textarea/index.d.ts +2 -0
  262. package/dist/cjs-types/common/textarea/textarea.d.ts +3 -0
  263. package/dist/cjs-types/common/textarea/textarea.types.d.ts +2 -0
  264. package/dist/cjs-types/common/themeProvider/defaultTheme.d.ts +7 -0
  265. package/dist/cjs-types/common/themeProvider/index.d.ts +4 -0
  266. package/dist/cjs-types/common/themeProvider/lightTheme.d.ts +13 -0
  267. package/dist/cjs-types/common/themeProvider/theme.types.d.ts +272 -0
  268. package/dist/cjs-types/common/themeProvider/themeProvider.d.ts +38 -0
  269. package/dist/cjs-types/common/themeProvider/themeVariablesContext.d.ts +11 -0
  270. package/dist/cjs-types/common/themeProvider/useTheme.d.ts +4 -0
  271. package/dist/cjs-types/common/tilt/index.d.ts +4 -0
  272. package/dist/cjs-types/common/tilt/tilt.d.ts +3 -0
  273. package/dist/cjs-types/common/tilt/tilt.types.d.ts +40 -0
  274. package/dist/cjs-types/common/tilt/tiltMath.d.ts +24 -0
  275. package/dist/cjs-types/common/tiltGroup/index.d.ts +3 -0
  276. package/dist/cjs-types/common/tiltGroup/tiltGroup.d.ts +6 -0
  277. package/dist/cjs-types/common/tiltGroup/tiltGroup.types.d.ts +16 -0
  278. package/dist/cjs-types/common/timeInput/components/clockDial/clockDial.d.ts +3 -0
  279. package/dist/cjs-types/common/timeInput/components/clockDial/clockDial.types.d.ts +24 -0
  280. package/dist/cjs-types/common/timeInput/components/clockDial/index.d.ts +1 -0
  281. package/dist/cjs-types/common/timeInput/index.d.ts +1 -0
  282. package/dist/cjs-types/common/timeInput/timeFunctions.d.ts +36 -0
  283. package/dist/cjs-types/common/timeInput/timeInput.d.ts +3 -0
  284. package/dist/cjs-types/common/timeInput/timeInput.types.d.ts +44 -0
  285. package/dist/cjs-types/common/timeline/index.d.ts +2 -0
  286. package/dist/cjs-types/common/timeline/timeline.d.ts +3 -0
  287. package/dist/cjs-types/common/timeline/timeline.types.d.ts +51 -0
  288. package/dist/cjs-types/common/timer/index.d.ts +2 -0
  289. package/dist/cjs-types/common/timer/timer.chime.d.ts +1 -0
  290. package/dist/cjs-types/common/timer/timer.d.ts +3 -0
  291. package/dist/cjs-types/common/timer/timer.types.d.ts +110 -0
  292. package/dist/cjs-types/common/toast/index.d.ts +3 -0
  293. package/dist/cjs-types/common/toast/toast.d.ts +11 -0
  294. package/dist/cjs-types/common/toast/toast.types.d.ts +50 -0
  295. package/dist/cjs-types/common/toast/toastProvider.d.ts +8 -0
  296. package/dist/cjs-types/common/toast/toastService.d.ts +7 -0
  297. package/dist/cjs-types/common/tooltip/index.d.ts +2 -0
  298. package/dist/cjs-types/common/tooltip/tooltip.d.ts +3 -0
  299. package/dist/cjs-types/common/tooltip/tooltip.types.d.ts +17 -0
  300. package/dist/cjs-types/common/tree/flattenTree.d.ts +3 -0
  301. package/dist/cjs-types/common/tree/index.d.ts +3 -0
  302. package/dist/cjs-types/common/tree/tree.d.ts +4 -0
  303. package/dist/cjs-types/common/tree/tree.types.d.ts +67 -0
  304. package/dist/cjs-types/common/types/actions.types.d.ts +7 -0
  305. package/dist/cjs-types/common/types/baseProps.types.d.ts +29 -0
  306. package/dist/cjs-types/common/types/icon.types.d.ts +17 -0
  307. package/dist/cjs-types/common/types/slots.types.d.ts +4 -0
  308. package/dist/cjs-types/common/utils/activationKey.d.ts +9 -0
  309. package/dist/cjs-types/common/utils/interactiveTarget.d.ts +7 -0
  310. package/dist/cjs-types/common/utils/listNavigation.d.ts +49 -0
  311. package/dist/cjs-types/common/utils/mergeRefs.d.ts +12 -0
  312. package/dist/cjs-types/common/utils/renderIcon.d.ts +29 -0
  313. package/dist/cjs-types/common/utils/scrollAncestors.d.ts +12 -0
  314. package/dist/cjs-types/common/utils/visualViewport.d.ts +7 -0
  315. package/dist/cjs-types/common/virtualList/index.d.ts +2 -0
  316. package/dist/cjs-types/common/virtualList/scroller.d.ts +33 -0
  317. package/dist/cjs-types/common/virtualList/useColumnResize.d.ts +59 -0
  318. package/dist/cjs-types/common/virtualList/useColumns.d.ts +52 -0
  319. package/dist/cjs-types/common/virtualList/useHeaderNavigation.d.ts +22 -0
  320. package/dist/cjs-types/common/virtualList/useRowDrag.d.ts +63 -0
  321. package/dist/cjs-types/common/virtualList/useRowNavigation.d.ts +60 -0
  322. package/dist/cjs-types/common/virtualList/useSelection.d.ts +24 -0
  323. package/dist/cjs-types/common/virtualList/useSorting.d.ts +26 -0
  324. package/dist/cjs-types/common/virtualList/useVirtualWindow.d.ts +55 -0
  325. package/dist/cjs-types/common/virtualList/virtualList.d.ts +5 -0
  326. package/dist/cjs-types/common/virtualList/virtualList.types.d.ts +357 -0
  327. package/dist/cjs-types/common/virtualList/virtualList.utils.d.ts +126 -0
  328. package/dist/cjs-types/common/virtualList/virtualListHeader.d.ts +35 -0
  329. package/dist/cjs-types/common/virtualList/virtualRow.d.ts +62 -0
  330. package/dist/cjs-types/common/wizard/index.d.ts +1 -0
  331. package/dist/cjs-types/common/wizard/wizard.d.ts +3 -0
  332. package/dist/cjs-types/common/wizard/wizard.types.d.ts +12 -0
  333. package/dist/cjs-types/hooks/useWindowSize.d.ts +6 -0
  334. package/dist/cjs-types/index.d.ts +155 -0
  335. package/dist/cjs-types/package.json +3 -0
  336. package/dist/cjs-types/services/formValidation/FormValidatorGroupWithForm.d.ts +18 -0
  337. package/dist/cjs-types/services/formValidation/index.d.ts +5 -0
  338. package/dist/cjs-types/services/formValidation/useFormValidatorGroup.d.ts +10 -0
  339. package/dist/cjs-types/services/formValidation/validatableComponent.d.ts +36 -0
  340. package/dist/cjs-types/services/klipy.d.ts +36 -0
  341. package/dist/cjs-types/services/localization.d.ts +3 -0
  342. package/dist/esm/common/carousel/carousel.mjs +1 -1
  343. package/dist/esm/common/carousel/carousel.mjs.map +1 -1
  344. package/dist/esm/common/carousel/carousel.module.mjs.map +1 -1
  345. package/dist/esm/common/confirmModal/confirmModal.mjs +1 -1
  346. package/dist/esm/common/confirmModal/confirmModal.mjs.map +1 -1
  347. package/dist/esm/common/datePicker/datePicker.mjs +1 -1
  348. package/dist/esm/common/datePicker/datePicker.mjs.map +1 -1
  349. package/dist/esm/common/drawer/drawer.module.mjs.map +1 -1
  350. package/dist/esm/common/dropdown/dropdown.mjs +1 -1
  351. package/dist/esm/common/dropdown/dropdown.mjs.map +1 -1
  352. package/dist/esm/common/dropdown/dropdown.module.mjs +1 -1
  353. package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -1
  354. package/dist/esm/common/hooks/useHotkeys.mjs +2 -0
  355. package/dist/esm/common/hooks/useHotkeys.mjs.map +1 -0
  356. package/dist/esm/common/hooks/useScrollEdges.mjs +2 -0
  357. package/dist/esm/common/hooks/useScrollEdges.mjs.map +1 -0
  358. package/dist/esm/common/hooks/useSwipeDismiss.mjs +1 -1
  359. package/dist/esm/common/hooks/useSwipeDismiss.mjs.map +1 -1
  360. package/dist/esm/common/infiniteBlock/useInfiniteScroll.mjs +2 -0
  361. package/dist/esm/common/infiniteBlock/useInfiniteScroll.mjs.map +1 -0
  362. package/dist/esm/common/input/input.mjs +1 -1
  363. package/dist/esm/common/input/input.mjs.map +1 -1
  364. package/dist/esm/common/input/input.module.mjs +1 -1
  365. package/dist/esm/common/input/input.module.mjs.map +1 -1
  366. package/dist/esm/common/inputDropdown/inputDropdown.mjs +1 -1
  367. package/dist/esm/common/inputDropdown/inputDropdown.mjs.map +1 -1
  368. package/dist/esm/common/interactableDiv/interactableDiv.mjs +1 -1
  369. package/dist/esm/common/interactableDiv/interactableDiv.mjs.map +1 -1
  370. package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs.map +1 -1
  371. package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs.map +1 -1
  372. package/dist/esm/common/maskedInput/mask.mjs +2 -0
  373. package/dist/esm/common/maskedInput/mask.mjs.map +1 -0
  374. package/dist/esm/common/maskedInput/maskedInput.mjs +2 -0
  375. package/dist/esm/common/maskedInput/maskedInput.mjs.map +1 -0
  376. package/dist/esm/common/menu/menu.mjs +1 -1
  377. package/dist/esm/common/menu/menu.mjs.map +1 -1
  378. package/dist/esm/common/menu/menu.types.mjs.map +1 -1
  379. package/dist/esm/common/menu/menuHotkeys.mjs +2 -0
  380. package/dist/esm/common/menu/menuHotkeys.mjs.map +1 -0
  381. package/dist/esm/common/modal/modal.mjs +1 -1
  382. package/dist/esm/common/modal/modal.mjs.map +1 -1
  383. package/dist/esm/common/modal/modal.module.mjs +1 -1
  384. package/dist/esm/common/modal/modal.module.mjs.map +1 -1
  385. package/dist/esm/common/multiSelect/multiSelect.mjs +1 -1
  386. package/dist/esm/common/multiSelect/multiSelect.mjs.map +1 -1
  387. package/dist/esm/common/multiSelect/multiSelect.module.mjs +1 -1
  388. package/dist/esm/common/multiSelect/multiSelect.module.mjs.map +1 -1
  389. package/dist/esm/common/otpInput/otpInput.module.mjs.map +1 -1
  390. package/dist/esm/common/popover/usePopoverPosition.mjs +1 -1
  391. package/dist/esm/common/popover/usePopoverPosition.mjs.map +1 -1
  392. package/dist/esm/common/radioGroup/radioGroup.types.mjs.map +1 -1
  393. package/dist/esm/common/rating/rating.module.mjs.map +1 -1
  394. package/dist/esm/common/ripple/ripple.mjs +1 -1
  395. package/dist/esm/common/ripple/ripple.mjs.map +1 -1
  396. package/dist/esm/common/scrollFade/scrollFade.mjs +2 -0
  397. package/dist/esm/common/scrollFade/scrollFade.mjs.map +1 -0
  398. package/dist/esm/common/scrollFade/scrollFade.module.mjs +2 -0
  399. package/dist/esm/common/scrollFade/scrollFade.module.mjs.map +1 -0
  400. package/dist/esm/common/scrollFade/scrollFade.types.mjs +2 -0
  401. package/dist/esm/common/scrollFade/scrollFade.types.mjs.map +1 -0
  402. package/dist/esm/common/sticky/sticky.mjs +1 -1
  403. package/dist/esm/common/sticky/sticky.mjs.map +1 -1
  404. package/dist/esm/common/sticky/stickyStack.mjs +1 -1
  405. package/dist/esm/common/sticky/stickyStack.mjs.map +1 -1
  406. package/dist/esm/common/styles/scrollFade.module.mjs +2 -0
  407. package/dist/esm/common/styles/scrollFade.module.mjs.map +1 -0
  408. package/dist/esm/common/styles/sheet.module.mjs.map +1 -1
  409. package/dist/esm/common/timeInput/timeInput.mjs +1 -1
  410. package/dist/esm/common/timeInput/timeInput.mjs.map +1 -1
  411. package/dist/esm/common/utils/interactiveTarget.mjs +2 -0
  412. package/dist/esm/common/utils/interactiveTarget.mjs.map +1 -0
  413. package/dist/esm/common/utils/listNavigation.mjs +2 -0
  414. package/dist/esm/common/utils/listNavigation.mjs.map +1 -0
  415. package/dist/esm/common/utils/scrollAncestors.mjs +1 -1
  416. package/dist/esm/common/utils/scrollAncestors.mjs.map +1 -1
  417. package/dist/esm/common/virtualList/scroller.mjs +2 -0
  418. package/dist/esm/common/virtualList/scroller.mjs.map +1 -0
  419. package/dist/esm/common/virtualList/useRowDrag.mjs +1 -1
  420. package/dist/esm/common/virtualList/useRowDrag.mjs.map +1 -1
  421. package/dist/esm/common/virtualList/useRowNavigation.mjs +1 -1
  422. package/dist/esm/common/virtualList/useRowNavigation.mjs.map +1 -1
  423. package/dist/esm/common/virtualList/useVirtualWindow.mjs +1 -1
  424. package/dist/esm/common/virtualList/useVirtualWindow.mjs.map +1 -1
  425. package/dist/esm/common/virtualList/virtualList.mjs +1 -1
  426. package/dist/esm/common/virtualList/virtualList.mjs.map +1 -1
  427. package/dist/esm/common/virtualList/virtualList.module.mjs +1 -1
  428. package/dist/esm/common/virtualList/virtualList.module.mjs.map +1 -1
  429. package/dist/esm/common/wizard/wizard.module.mjs.map +1 -1
  430. package/dist/esm/index.mjs +1 -1
  431. package/dist/esm/og.png +0 -0
  432. package/dist/index.cjs +3 -3
  433. package/dist/index.cjs.map +1 -1
  434. package/dist/mcp.js +341 -56
  435. package/dist/og.png +0 -0
  436. package/dist/style.css +1 -1
  437. package/dist/types/common/accordion/accordion.d.ts +1 -1
  438. package/dist/types/common/accordion/accordion.types.d.ts +1 -1
  439. package/dist/types/common/accordion/index.d.ts +2 -2
  440. package/dist/types/common/actionButtons/actionButtons.d.ts +1 -1
  441. package/dist/types/common/actionButtons/actionButtons.types.d.ts +3 -3
  442. package/dist/types/common/actionButtons/index.d.ts +2 -2
  443. package/dist/types/common/actionIcon/actionIcon.d.ts +1 -1
  444. package/dist/types/common/actionIcon/actionIcon.types.d.ts +2 -2
  445. package/dist/types/common/actionIcon/index.d.ts +2 -2
  446. package/dist/types/common/alert/alert.d.ts +1 -1
  447. package/dist/types/common/alert/alert.types.d.ts +2 -2
  448. package/dist/types/common/alert/index.d.ts +2 -2
  449. package/dist/types/common/animatedIcon/animatedIcon.d.ts +1 -1
  450. package/dist/types/common/animatedIcon/animatedIcon.types.d.ts +1 -1
  451. package/dist/types/common/animatedIcon/index.d.ts +2 -2
  452. package/dist/types/common/animatedLogo/animatedLogo.d.ts +1 -1
  453. package/dist/types/common/animatedLogo/animatedLogo.types.d.ts +1 -1
  454. package/dist/types/common/animatedLogo/index.d.ts +2 -2
  455. package/dist/types/common/animatedText/animatedText.d.ts +1 -1
  456. package/dist/types/common/animatedText/animatedText.types.d.ts +1 -1
  457. package/dist/types/common/animatedText/index.d.ts +2 -2
  458. package/dist/types/common/avatar/avatar.d.ts +1 -1
  459. package/dist/types/common/avatar/avatar.types.d.ts +2 -2
  460. package/dist/types/common/avatar/avatarGroup.d.ts +1 -1
  461. package/dist/types/common/avatar/index.d.ts +3 -3
  462. package/dist/types/common/badge/badge.d.ts +1 -1
  463. package/dist/types/common/badge/badge.types.d.ts +1 -1
  464. package/dist/types/common/badge/index.d.ts +2 -2
  465. package/dist/types/common/bodyEnd/bodyEnd.d.ts +1 -1
  466. package/dist/types/common/bodyEnd/index.d.ts +2 -2
  467. package/dist/types/common/breadcrumb/breadcrumb.d.ts +1 -1
  468. package/dist/types/common/breadcrumb/breadcrumb.types.d.ts +2 -2
  469. package/dist/types/common/breadcrumb/index.d.ts +2 -2
  470. package/dist/types/common/button/button.d.ts +1 -1
  471. package/dist/types/common/button/button.types.d.ts +2 -2
  472. package/dist/types/common/button/index.d.ts +2 -2
  473. package/dist/types/common/buttonGroup/buttonGroup.d.ts +1 -1
  474. package/dist/types/common/buttonGroup/buttonGroup.types.d.ts +1 -1
  475. package/dist/types/common/buttonGroup/index.d.ts +2 -2
  476. package/dist/types/common/card/Card.d.ts +1 -1
  477. package/dist/types/common/card/CardActions.d.ts +1 -1
  478. package/dist/types/common/card/CardContent.d.ts +1 -1
  479. package/dist/types/common/card/CardHeader.d.ts +1 -1
  480. package/dist/types/common/card/CardMedia.d.ts +1 -1
  481. package/dist/types/common/card/card.types.d.ts +3 -3
  482. package/dist/types/common/card/index.d.ts +6 -6
  483. package/dist/types/common/carousel/carousel.d.ts +1 -1
  484. package/dist/types/common/carousel/carousel.types.d.ts +1 -1
  485. package/dist/types/common/carousel/index.d.ts +2 -2
  486. package/dist/types/common/checkbox/checkbox.d.ts +1 -1
  487. package/dist/types/common/checkbox/checkbox.types.d.ts +2 -2
  488. package/dist/types/common/checkbox/index.d.ts +2 -2
  489. package/dist/types/common/chip/chip.d.ts +1 -1
  490. package/dist/types/common/chip/chip.types.d.ts +1 -1
  491. package/dist/types/common/chip/chipContainer.d.ts +1 -1
  492. package/dist/types/common/chip/index.d.ts +3 -3
  493. package/dist/types/common/colorPicker/colorPicker.d.ts +1 -1
  494. package/dist/types/common/colorPicker/colorPicker.types.d.ts +1 -1
  495. package/dist/types/common/colorPicker/index.d.ts +2 -2
  496. package/dist/types/common/configProvider/configProvider.d.ts +2 -2
  497. package/dist/types/common/configProvider/configProvider.types.d.ts +44 -44
  498. package/dist/types/common/configProvider/index.d.ts +6 -6
  499. package/dist/types/common/configProvider/useComponentDefaults.d.ts +1 -1
  500. package/dist/types/common/configProvider/useLabels.d.ts +1 -1
  501. package/dist/types/common/configProvider/usePresentationDefault.d.ts +1 -1
  502. package/dist/types/common/confirmModal/confirmModal.d.ts +1 -1
  503. package/dist/types/common/confirmModal/confirmModal.types.d.ts +2 -2
  504. package/dist/types/common/confirmModal/index.d.ts +2 -2
  505. package/dist/types/common/datePicker/components/datePickerMonth/datePickerMonth.d.ts +1 -1
  506. package/dist/types/common/datePicker/components/datePickerMonth/index.d.ts +1 -1
  507. package/dist/types/common/datePicker/datePicker.d.ts +1 -1
  508. package/dist/types/common/datePicker/datePicker.types.d.ts +2 -2
  509. package/dist/types/common/datePicker/index.d.ts +2 -2
  510. package/dist/types/common/divider/divider.d.ts +1 -1
  511. package/dist/types/common/divider/divider.types.d.ts +1 -1
  512. package/dist/types/common/divider/index.d.ts +2 -2
  513. package/dist/types/common/drawer/drawer.d.ts +1 -1
  514. package/dist/types/common/drawer/drawer.types.d.ts +1 -1
  515. package/dist/types/common/drawer/index.d.ts +2 -2
  516. package/dist/types/common/dropZone/dropZone.d.ts +1 -1
  517. package/dist/types/common/dropZone/dropZone.types.d.ts +1 -1
  518. package/dist/types/common/dropZone/index.d.ts +2 -2
  519. package/dist/types/common/dropdown/dropdown.d.ts +1 -1
  520. package/dist/types/common/dropdown/dropdown.types.d.ts +3 -3
  521. package/dist/types/common/dropdown/index.d.ts +2 -2
  522. package/dist/types/common/emptyState/emptyState.d.ts +1 -1
  523. package/dist/types/common/emptyState/emptyState.types.d.ts +2 -2
  524. package/dist/types/common/emptyState/index.d.ts +2 -2
  525. package/dist/types/common/errorBoundary/errorBoundary.d.ts +1 -1
  526. package/dist/types/common/errorBoundary/errorBoundary.types.d.ts +1 -1
  527. package/dist/types/common/errorBoundary/index.d.ts +2 -2
  528. package/dist/types/common/fab/components/fabBase/fabBase.d.ts +1 -1
  529. package/dist/types/common/fab/components/fabBase/fabBase.types.d.ts +1 -1
  530. package/dist/types/common/fab/components/fabBase/index.d.ts +1 -1
  531. package/dist/types/common/fab/fab.d.ts +1 -1
  532. package/dist/types/common/fab/fab.types.d.ts +2 -2
  533. package/dist/types/common/fab/index.d.ts +2 -2
  534. package/dist/types/common/flip/flip.d.ts +1 -1
  535. package/dist/types/common/flip/flip.types.d.ts +1 -1
  536. package/dist/types/common/flip/index.d.ts +2 -2
  537. package/dist/types/common/floorPlan/floorPlan.faces.d.ts +2 -2
  538. package/dist/types/common/floorPlan/floorPlan.fixtures.d.ts +1 -1
  539. package/dist/types/common/floorPlan/floorPlan.geometry.d.ts +1 -1
  540. package/dist/types/common/floorPlan/floorPlan.graph.d.ts +1 -1
  541. package/dist/types/common/floorPlan/floorPlan.hit.d.ts +1 -1
  542. package/dist/types/common/floorPlan/floorPlan.json.d.ts +1 -1
  543. package/dist/types/common/floorPlan/floorPlan.mesh.d.ts +1 -1
  544. package/dist/types/common/floorPlan/floorPlan.path.d.ts +1 -1
  545. package/dist/types/common/floorPlan/floorPlan.plan.d.ts +1 -1
  546. package/dist/types/common/floorPlan/floorPlan.rooms.d.ts +1 -1
  547. package/dist/types/common/floorPlan/floorPlan.snap.d.ts +1 -1
  548. package/dist/types/common/floorPlan/floorPlan.triangulate.d.ts +1 -1
  549. package/dist/types/common/floorPlan/index.d.ts +22 -22
  550. package/dist/types/common/floorPlan/legacySvg.d.ts +2 -2
  551. package/dist/types/common/hooks/index.d.ts +13 -0
  552. package/dist/types/common/hooks/useHotkeys.d.ts +45 -0
  553. package/dist/types/common/hooks/useScrollEdges.d.ts +18 -0
  554. package/dist/types/common/hooks/useSheet.d.ts +1 -1
  555. package/dist/types/common/hooks/useSwipeDismiss.d.ts +6 -2
  556. package/dist/types/common/iconPicker/iconPicker.d.ts +1 -1
  557. package/dist/types/common/iconPicker/iconPicker.types.d.ts +2 -2
  558. package/dist/types/common/iconPicker/index.d.ts +2 -1
  559. package/dist/types/common/idleManager/idleManager.d.ts +1 -1
  560. package/dist/types/common/idleManager/index.d.ts +2 -1
  561. package/dist/types/common/infiniteBlock/useInfiniteScroll.d.ts +5 -0
  562. package/dist/types/common/input/index.d.ts +2 -2
  563. package/dist/types/common/input/input.d.ts +1 -1
  564. package/dist/types/common/input/input.types.d.ts +2 -2
  565. package/dist/types/common/inputDropdown/index.d.ts +2 -1
  566. package/dist/types/common/inputDropdown/inputDropdown.d.ts +1 -1
  567. package/dist/types/common/inputDropdown/inputDropdown.types.d.ts +2 -2
  568. package/dist/types/common/interactableDiv/index.d.ts +1 -1
  569. package/dist/types/common/interactableDiv/interactableDiv.d.ts +1 -1
  570. package/dist/types/common/kanbanBoard/KanbanBoard.d.ts +1 -1
  571. package/dist/types/common/kanbanBoard/KanbanColumn.d.ts +1 -1
  572. package/dist/types/common/kanbanBoard/KanbanItem.d.ts +1 -1
  573. package/dist/types/common/kanbanBoard/index.d.ts +3 -3
  574. package/dist/types/common/kanbanBoard/kanbanBoard.types.d.ts +1 -1
  575. package/dist/types/common/kanbanBoard/kanbanBoard.utils.d.ts +1 -1
  576. package/dist/types/common/klipyPicker/components/gifPreview/gifPreview.d.ts +1 -1
  577. package/dist/types/common/klipyPicker/components/gifPreview/gifPreview.types.d.ts +1 -1
  578. package/dist/types/common/klipyPicker/components/gifPreview/index.d.ts +1 -1
  579. package/dist/types/common/klipyPicker/components/gifView/gifView.d.ts +1 -1
  580. package/dist/types/common/klipyPicker/components/gifView/index.d.ts +1 -1
  581. package/dist/types/common/klipyPicker/index.d.ts +2 -2
  582. package/dist/types/common/klipyPicker/klipyPicker.d.ts +1 -1
  583. package/dist/types/common/klipyPicker/klipyPicker.types.d.ts +1 -1
  584. package/dist/types/common/loading/index.d.ts +1 -2
  585. package/dist/types/common/loading/spinnerLoading/index.d.ts +1 -1
  586. package/dist/types/common/maskedInput/index.d.ts +2 -0
  587. package/dist/types/common/maskedInput/mask.d.ts +48 -0
  588. package/dist/types/common/maskedInput/maskedInput.d.ts +13 -0
  589. package/dist/types/common/maskedInput/maskedInput.types.d.ts +38 -0
  590. package/dist/types/common/menu/index.d.ts +3 -2
  591. package/dist/types/common/menu/menu.d.ts +1 -1
  592. package/dist/types/common/menu/menu.types.d.ts +13 -7
  593. package/dist/types/common/menu/menuHotkeys.d.ts +20 -0
  594. package/dist/types/common/modal/index.d.ts +2 -2
  595. package/dist/types/common/modal/modal.d.ts +1 -1
  596. package/dist/types/common/modal/modal.types.d.ts +6 -3
  597. package/dist/types/common/multiSelect/index.d.ts +2 -2
  598. package/dist/types/common/multiSelect/multiSelect.d.ts +1 -1
  599. package/dist/types/common/multiSelect/multiSelect.types.d.ts +3 -3
  600. package/dist/types/common/numberInput/index.d.ts +2 -2
  601. package/dist/types/common/numberInput/numberInput.d.ts +2 -2
  602. package/dist/types/common/numberInput/numberInput.types.d.ts +2 -2
  603. package/dist/types/common/optionPicker/index.d.ts +2 -2
  604. package/dist/types/common/optionPicker/optionPicker.d.ts +1 -1
  605. package/dist/types/common/optionPicker/optionPicker.types.d.ts +1 -1
  606. package/dist/types/common/otpInput/index.d.ts +2 -2
  607. package/dist/types/common/otpInput/otpInput.d.ts +1 -1
  608. package/dist/types/common/otpInput/otpInput.types.d.ts +2 -2
  609. package/dist/types/common/overscroll/index.d.ts +2 -2
  610. package/dist/types/common/overscroll/overscroll.d.ts +1 -1
  611. package/dist/types/common/pagination/index.d.ts +2 -2
  612. package/dist/types/common/pagination/pagination.d.ts +1 -1
  613. package/dist/types/common/pagination/pagination.types.d.ts +2 -2
  614. package/dist/types/common/planCanvas/index.d.ts +2 -2
  615. package/dist/types/common/planCanvas/planCanvas.d.ts +1 -1
  616. package/dist/types/common/planCanvas/planCanvas.types.d.ts +2 -2
  617. package/dist/types/common/popover/index.d.ts +2 -2
  618. package/dist/types/common/popover/popover.d.ts +1 -1
  619. package/dist/types/common/popover/popover.types.d.ts +2 -2
  620. package/dist/types/common/popover/usePopoverPosition.d.ts +2 -1
  621. package/dist/types/common/progressBar/index.d.ts +2 -2
  622. package/dist/types/common/progressBar/progressBar.d.ts +1 -1
  623. package/dist/types/common/progressBar/progressBar.types.d.ts +1 -1
  624. package/dist/types/common/radioGroup/index.d.ts +2 -2
  625. package/dist/types/common/radioGroup/radioGroup.d.ts +1 -1
  626. package/dist/types/common/radioGroup/radioGroup.types.d.ts +3 -3
  627. package/dist/types/common/rating/index.d.ts +2 -2
  628. package/dist/types/common/rating/rating.d.ts +1 -1
  629. package/dist/types/common/rating/rating.types.d.ts +2 -2
  630. package/dist/types/common/revealLens/index.d.ts +2 -2
  631. package/dist/types/common/revealLens/revealLens.d.ts +1 -1
  632. package/dist/types/common/revealLens/revealLens.types.d.ts +1 -1
  633. package/dist/types/common/ripple/index.d.ts +2 -2
  634. package/dist/types/common/ripple/ripple.d.ts +1 -1
  635. package/dist/types/common/ripple/ripple.types.d.ts +1 -1
  636. package/dist/types/common/roomDrawer/index.d.ts +2 -2
  637. package/dist/types/common/roomDrawer/roomDrawer.d.ts +1 -1
  638. package/dist/types/common/roomDrawer/roomDrawer.types.d.ts +3 -3
  639. package/dist/types/common/roomDrawer/usePlanHistory.d.ts +2 -2
  640. package/dist/types/common/roomViewer/index.d.ts +2 -2
  641. package/dist/types/common/roomViewer/roomViewer.d.ts +1 -1
  642. package/dist/types/common/roomViewer/roomViewer.types.d.ts +3 -3
  643. package/dist/types/common/scrollFade/index.d.ts +2 -0
  644. package/dist/types/common/scrollFade/scrollFade.d.ts +4 -0
  645. package/dist/types/common/scrollFade/scrollFade.types.d.ts +20 -0
  646. package/dist/types/common/scrollbarProvider/index.d.ts +1 -1
  647. package/dist/types/common/searchInput/index.d.ts +2 -2
  648. package/dist/types/common/searchInput/searchInput.d.ts +1 -1
  649. package/dist/types/common/searchInput/searchInput.types.d.ts +1 -1
  650. package/dist/types/common/sectionHeader/index.d.ts +2 -2
  651. package/dist/types/common/sectionHeader/sectionHeader.d.ts +1 -1
  652. package/dist/types/common/sectionHeader/sectionHeader.types.d.ts +3 -3
  653. package/dist/types/common/sheetBackdrop/index.d.ts +2 -2
  654. package/dist/types/common/sheetBackdrop/sheetBackdrop.d.ts +1 -1
  655. package/dist/types/common/skeleton/index.d.ts +2 -2
  656. package/dist/types/common/skeleton/skeleton.d.ts +1 -1
  657. package/dist/types/common/skeleton/skeleton.types.d.ts +1 -1
  658. package/dist/types/common/slider/index.d.ts +2 -2
  659. package/dist/types/common/slider/slider.d.ts +1 -1
  660. package/dist/types/common/slider/slider.types.d.ts +2 -2
  661. package/dist/types/common/splitButton/index.d.ts +2 -2
  662. package/dist/types/common/splitButton/splitButton.d.ts +1 -1
  663. package/dist/types/common/splitButton/splitButton.types.d.ts +4 -4
  664. package/dist/types/common/stepper/index.d.ts +2 -2
  665. package/dist/types/common/stepper/stepper.d.ts +1 -1
  666. package/dist/types/common/stepper/stepper.types.d.ts +2 -2
  667. package/dist/types/common/sticky/index.d.ts +1 -1
  668. package/dist/types/common/sticky/sticky.d.ts +2 -2
  669. package/dist/types/common/sticky/sticky.types.d.ts +16 -1
  670. package/dist/types/common/sticky/stickyStack.d.ts +5 -0
  671. package/dist/types/common/switch/index.d.ts +2 -2
  672. package/dist/types/common/switch/switch.d.ts +1 -1
  673. package/dist/types/common/switch/switch.types.d.ts +2 -2
  674. package/dist/types/common/tabHeader/index.d.ts +2 -2
  675. package/dist/types/common/tabHeader/tabHeader.d.ts +1 -1
  676. package/dist/types/common/tabHeader/tabHeader.types.d.ts +2 -2
  677. package/dist/types/common/textarea/index.d.ts +2 -2
  678. package/dist/types/common/textarea/textarea.d.ts +1 -1
  679. package/dist/types/common/textarea/textarea.types.d.ts +1 -1
  680. package/dist/types/common/themeProvider/defaultTheme.d.ts +1 -1
  681. package/dist/types/common/themeProvider/index.d.ts +4 -4
  682. package/dist/types/common/themeProvider/lightTheme.d.ts +1 -1
  683. package/dist/types/common/themeProvider/theme.types.d.ts +28 -0
  684. package/dist/types/common/themeProvider/themeProvider.d.ts +1 -1
  685. package/dist/types/common/tilt/index.d.ts +4 -4
  686. package/dist/types/common/tilt/tilt.d.ts +1 -1
  687. package/dist/types/common/tilt/tilt.types.d.ts +2 -2
  688. package/dist/types/common/tiltGroup/index.d.ts +3 -3
  689. package/dist/types/common/tiltGroup/tiltGroup.d.ts +1 -1
  690. package/dist/types/common/tiltGroup/tiltGroup.types.d.ts +1 -1
  691. package/dist/types/common/timeInput/components/clockDial/clockDial.d.ts +1 -1
  692. package/dist/types/common/timeInput/components/clockDial/clockDial.types.d.ts +3 -3
  693. package/dist/types/common/timeInput/components/clockDial/index.d.ts +1 -1
  694. package/dist/types/common/timeInput/index.d.ts +1 -1
  695. package/dist/types/common/timeInput/timeInput.d.ts +1 -1
  696. package/dist/types/common/timeInput/timeInput.types.d.ts +2 -2
  697. package/dist/types/common/timeline/index.d.ts +2 -2
  698. package/dist/types/common/timeline/timeline.d.ts +1 -1
  699. package/dist/types/common/timeline/timeline.types.d.ts +2 -2
  700. package/dist/types/common/timer/index.d.ts +2 -2
  701. package/dist/types/common/timer/timer.d.ts +1 -1
  702. package/dist/types/common/timer/timer.types.d.ts +2 -2
  703. package/dist/types/common/toast/index.d.ts +3 -3
  704. package/dist/types/common/toast/toast.d.ts +1 -1
  705. package/dist/types/common/toast/toast.types.d.ts +1 -1
  706. package/dist/types/common/toast/toastProvider.d.ts +1 -1
  707. package/dist/types/common/toast/toastService.d.ts +1 -1
  708. package/dist/types/common/tooltip/index.d.ts +2 -2
  709. package/dist/types/common/tooltip/tooltip.d.ts +1 -1
  710. package/dist/types/common/tree/flattenTree.d.ts +1 -1
  711. package/dist/types/common/tree/index.d.ts +3 -3
  712. package/dist/types/common/tree/tree.d.ts +1 -1
  713. package/dist/types/common/tree/tree.types.d.ts +2 -2
  714. package/dist/types/common/types/actions.types.d.ts +1 -1
  715. package/dist/types/common/types/slots.types.d.ts +1 -1
  716. package/dist/types/common/utils/interactiveTarget.d.ts +7 -0
  717. package/dist/types/common/utils/listNavigation.d.ts +49 -0
  718. package/dist/types/common/utils/renderIcon.d.ts +1 -1
  719. package/dist/types/common/utils/scrollAncestors.d.ts +10 -0
  720. package/dist/types/common/virtualList/index.d.ts +2 -2
  721. package/dist/types/common/virtualList/scroller.d.ts +33 -0
  722. package/dist/types/common/virtualList/useColumnResize.d.ts +1 -1
  723. package/dist/types/common/virtualList/useColumns.d.ts +1 -1
  724. package/dist/types/common/virtualList/useRowDrag.d.ts +7 -2
  725. package/dist/types/common/virtualList/useRowNavigation.d.ts +12 -2
  726. package/dist/types/common/virtualList/useSorting.d.ts +1 -1
  727. package/dist/types/common/virtualList/useVirtualWindow.d.ts +22 -3
  728. package/dist/types/common/virtualList/virtualList.d.ts +3 -3
  729. package/dist/types/common/virtualList/virtualList.types.d.ts +44 -4
  730. package/dist/types/common/virtualList/virtualList.utils.d.ts +1 -1
  731. package/dist/types/common/virtualList/virtualListHeader.d.ts +4 -4
  732. package/dist/types/common/virtualList/virtualRow.d.ts +1 -1
  733. package/dist/types/common/wizard/index.d.ts +1 -1
  734. package/dist/types/common/wizard/wizard.d.ts +1 -1
  735. package/dist/types/common/wizard/wizard.types.d.ts +1 -1
  736. package/dist/types/index.d.ts +154 -153
  737. package/dist/types/services/formValidation/index.d.ts +3 -3
  738. package/dist/types/services/formValidation/useFormValidatorGroup.d.ts +1 -1
  739. package/docs/ActionIcon.md +2 -0
  740. package/docs/CLAUDE.md +124 -230
  741. package/docs/Card.md +1 -1
  742. package/docs/Divider.md +2 -0
  743. package/docs/Dropdown.md +20 -0
  744. package/docs/Hooks.md +232 -0
  745. package/docs/IdleManager.md +38 -8
  746. package/docs/InputDropdown.md +11 -0
  747. package/docs/InteractableDiv.md +7 -1
  748. package/docs/KlipyPicker.md +1 -1
  749. package/docs/Loading.md +57 -14
  750. package/docs/Menu.md +27 -3
  751. package/docs/Modal.md +34 -10
  752. package/docs/MultiSelect.md +2 -2
  753. package/docs/Pagination.md +1 -1
  754. package/docs/Popover.md +4 -0
  755. package/docs/RadioGroup.md +1 -1
  756. package/docs/Rating.md +2 -0
  757. package/docs/Ripple.md +3 -0
  758. package/docs/RoomViewer.md +3 -5
  759. package/docs/ScrollFade.md +77 -0
  760. package/docs/ScrollbarProvider.md +2 -0
  761. package/docs/Slider.md +1 -1
  762. package/docs/Sticky.md +22 -1
  763. package/docs/Timer.md +1 -1
  764. package/docs/VirtualList.md +44 -4
  765. package/docs/Wizard.md +1 -1
  766. package/package.json +33 -11
  767. package/dist/esm/common/infiniteBlock/infiniteBlock.mjs +0 -2
  768. package/dist/esm/common/infiniteBlock/infiniteBlock.mjs.map +0 -1
  769. package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs +0 -2
  770. package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs.map +0 -1
  771. package/dist/esm/common/loading/iconLoading/iconLoading.mjs +0 -2
  772. package/dist/esm/common/loading/iconLoading/iconLoading.mjs.map +0 -1
  773. package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs +0 -2
  774. package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs.map +0 -1
  775. package/dist/esm/common/loading/iconLoading/index.mjs +0 -2
  776. package/dist/esm/common/loading/iconLoading/index.mjs.map +0 -1
  777. package/dist/types/common/infiniteBlock/index.d.ts +0 -1
  778. package/dist/types/common/infiniteBlock/infiniteBlock.d.ts +0 -4
  779. package/dist/types/common/infiniteBlock/infiniteBlock.types.d.ts +0 -13
  780. package/dist/types/common/loading/iconLoading/iconLoading.d.ts +0 -5
  781. package/dist/types/common/loading/iconLoading/index.d.ts +0 -2
  782. package/docs/Icon.md +0 -27
  783. package/docs/InfiniteBlock.md +0 -23
@@ -0,0 +1,155 @@
1
+ export { default as Accordion } from './common/accordion/index.js';
2
+ export * from './common/accordion/index.js';
3
+ export * from './common/actionButtons/index.js';
4
+ export { default as ActionIcon } from './common/actionIcon/index.js';
5
+ export * from './common/actionIcon/index.js';
6
+ export { default as Alert } from './common/alert/index.js';
7
+ export * from './common/alert/index.js';
8
+ export { default as AnimatedLogo } from './common/animatedLogo/index.js';
9
+ export * from './common/animatedLogo/index.js';
10
+ export { default as AnimatedText } from './common/animatedText/index.js';
11
+ export * from './common/animatedText/index.js';
12
+ export { default as Avatar } from './common/avatar/index.js';
13
+ export * from './common/avatar/index.js';
14
+ export { default as Badge } from './common/badge/index.js';
15
+ export * from './common/badge/index.js';
16
+ export { default as BodyEnd } from './common/bodyEnd/index.js';
17
+ export * from './common/bodyEnd/index.js';
18
+ export { default as Breadcrumb } from './common/breadcrumb/index.js';
19
+ export * from './common/breadcrumb/index.js';
20
+ export { default as Button } from './common/button/index.js';
21
+ export * from './common/button/index.js';
22
+ export { default as ButtonGroup } from './common/buttonGroup/index.js';
23
+ export * from './common/buttonGroup/index.js';
24
+ export { default as Card } from './common/card/index.js';
25
+ export * from './common/card/index.js';
26
+ export { default as Carousel } from './common/carousel/index.js';
27
+ export * from './common/carousel/index.js';
28
+ export { default as Checkbox } from './common/checkbox/index.js';
29
+ export * from './common/checkbox/index.js';
30
+ export { default as Chip } from './common/chip/index.js';
31
+ export * from './common/chip/index.js';
32
+ export { default as ColorPicker } from './common/colorPicker/index.js';
33
+ export * from './common/colorPicker/index.js';
34
+ export { default as ConfigProvider } from './common/configProvider/index.js';
35
+ export * from './common/configProvider/index.js';
36
+ export { default as ConfirmModal } from './common/confirmModal/index.js';
37
+ export * from './common/confirmModal/index.js';
38
+ export { default as DatePicker } from './common/datePicker/index.js';
39
+ export * from './common/datePicker/index.js';
40
+ export { default as Divider } from './common/divider/index.js';
41
+ export * from './common/divider/index.js';
42
+ export { default as Drawer } from './common/drawer/index.js';
43
+ export * from './common/drawer/index.js';
44
+ export { default as DropZone } from './common/dropZone/index.js';
45
+ export * from './common/dropZone/index.js';
46
+ export { default as Dropdown } from './common/dropdown/index.js';
47
+ export * from './common/dropdown/index.js';
48
+ export { default as EmptyState } from './common/emptyState/index.js';
49
+ export * from './common/emptyState/index.js';
50
+ export { default as ErrorBoundary } from './common/errorBoundary/index.js';
51
+ export * from './common/errorBoundary/index.js';
52
+ export { default as Fab } from './common/fab/index.js';
53
+ export * from './common/fab/index.js';
54
+ export { default as Flip } from './common/flip/index.js';
55
+ export * from './common/flip/index.js';
56
+ export * from './common/floorPlan/index.js';
57
+ export { default as IconPicker } from './common/iconPicker/index.js';
58
+ export * from './common/iconPicker/index.js';
59
+ export { default as IdleManager } from './common/idleManager/index.js';
60
+ export * from './common/idleManager/index.js';
61
+ export { default as Input } from './common/input/index.js';
62
+ export * from './common/input/index.js';
63
+ export { default as InputDropdown } from './common/inputDropdown/index.js';
64
+ export * from './common/inputDropdown/index.js';
65
+ export { default as InteractableDiv } from './common/interactableDiv/index.js';
66
+ export * from './common/interactableDiv/index.js';
67
+ export { default as KanbanBoard } from './common/kanbanBoard/index.js';
68
+ export * from './common/kanbanBoard/index.js';
69
+ export { default as KlipyPicker } from './common/klipyPicker/index.js';
70
+ export * from './common/klipyPicker/index.js';
71
+ export * from './common/loading/index.js';
72
+ export { default as Menu } from './common/menu/index.js';
73
+ export * from './common/menu/index.js';
74
+ export { default as Modal } from './common/modal/index.js';
75
+ export * from './common/modal/index.js';
76
+ export { default as MultiSelect } from './common/multiSelect/index.js';
77
+ export * from './common/multiSelect/index.js';
78
+ export { default as NumberInput } from './common/numberInput/index.js';
79
+ export * from './common/numberInput/index.js';
80
+ export { default as OptionPicker } from './common/optionPicker/index.js';
81
+ export * from './common/optionPicker/index.js';
82
+ export { default as OtpInput } from './common/otpInput/index.js';
83
+ export * from './common/otpInput/index.js';
84
+ export { default as Overscroll } from './common/overscroll/index.js';
85
+ export * from './common/overscroll/index.js';
86
+ export { default as Pagination } from './common/pagination/index.js';
87
+ export * from './common/pagination/index.js';
88
+ export { default as Popover } from './common/popover/index.js';
89
+ export * from './common/popover/index.js';
90
+ export { default as ProgressBar } from './common/progressBar/index.js';
91
+ export * from './common/progressBar/index.js';
92
+ export { default as RadioGroup } from './common/radioGroup/index.js';
93
+ export * from './common/radioGroup/index.js';
94
+ export { default as Rating } from './common/rating/index.js';
95
+ export * from './common/rating/index.js';
96
+ export { default as RevealLens } from './common/revealLens/index.js';
97
+ export * from './common/revealLens/index.js';
98
+ export { default as Ripple } from './common/ripple/index.js';
99
+ export * from './common/ripple/index.js';
100
+ export { default as RoomDrawer } from './common/roomDrawer/index.js';
101
+ export * from './common/roomDrawer/index.js';
102
+ export { default as RoomViewer } from './common/roomViewer/index.js';
103
+ export * from './common/roomViewer/index.js';
104
+ export { default as ScrollFade } from './common/scrollFade/index.js';
105
+ export * from './common/scrollFade/index.js';
106
+ export { default as ScrollbarProvider } from './common/scrollbarProvider/index.js';
107
+ export * from './common/scrollbarProvider/index.js';
108
+ export { default as SearchInput } from './common/searchInput/index.js';
109
+ export * from './common/searchInput/index.js';
110
+ export { default as SectionHeader } from './common/sectionHeader/index.js';
111
+ export * from './common/sectionHeader/index.js';
112
+ export { default as Skeleton } from './common/skeleton/index.js';
113
+ export * from './common/skeleton/index.js';
114
+ export { default as Slider } from './common/slider/index.js';
115
+ export * from './common/slider/index.js';
116
+ export { default as SplitButton } from './common/splitButton/index.js';
117
+ export * from './common/splitButton/index.js';
118
+ export { default as Stepper } from './common/stepper/index.js';
119
+ export * from './common/stepper/index.js';
120
+ export { default as Sticky } from './common/sticky/index.js';
121
+ export * from './common/sticky/index.js';
122
+ export { default as Switch } from './common/switch/index.js';
123
+ export * from './common/switch/index.js';
124
+ export { default as TabHeader } from './common/tabHeader/index.js';
125
+ export * from './common/tabHeader/index.js';
126
+ export { default as Textarea } from './common/textarea/index.js';
127
+ export * from './common/textarea/index.js';
128
+ export { default as ThemeProvider } from './common/themeProvider/index.js';
129
+ export * from './common/themeProvider/index.js';
130
+ export { useTheme } from './common/themeProvider/useTheme.js';
131
+ export { default as Tilt } from './common/tilt/index.js';
132
+ export * from './common/tilt/index.js';
133
+ export { default as TiltGroup } from './common/tiltGroup/index.js';
134
+ export * from './common/tiltGroup/index.js';
135
+ export { default as TimeInput } from './common/timeInput/index.js';
136
+ export * from './common/timeInput/index.js';
137
+ export { default as Timeline } from './common/timeline/index.js';
138
+ export * from './common/timeline/index.js';
139
+ export { default as Timer } from './common/timer/index.js';
140
+ export * from './common/timer/index.js';
141
+ export { default as ToastProvider } from './common/toast/index.js';
142
+ export * from './common/toast/index.js';
143
+ export { default as Tooltip } from './common/tooltip/index.js';
144
+ export * from './common/tooltip/index.js';
145
+ export { default as Tree } from './common/tree/index.js';
146
+ export * from './common/tree/index.js';
147
+ export { default as VirtualList } from './common/virtualList/index.js';
148
+ export * from './common/virtualList/index.js';
149
+ export { default as Wizard } from './common/wizard/index.js';
150
+ export * from './common/wizard/index.js';
151
+ export * from './common/hooks/index.js';
152
+ export { FormValidator, FormValidatorGroup, Validators, ValidatableComponent, useFormValidator, useFormValidatorGroup, } from './services/formValidation/index.js';
153
+ export type { ValidationError, ValidatorFunction, ErrorParser, FormValidatorGroupOptions, InferGroupValues, MergedValues, } from './services/formValidation/index.js';
154
+ export { mapLocale, setLocale, getLocale } from './services/localization.js';
155
+ export { isNumber, isDate, isISODate, isEmail, isBic, isURL, hasEightPasswordChars, hasOnePasswordLetter, hasOnePasswordDigit, isPassword, } from '@ahrowe/form-validation';
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,18 @@
1
+ import { FormValidatorGroup, FormGroup, FormValidatorGroupOptions, InferGroupValues } from '@ahrowe/form-validation';
2
+ import { default as React } from 'react';
3
+ /**
4
+ * FormValidatorGroup with `this.Form` automatically attached.
5
+ * Kept in a .tsx file so formValidatorGroup.ts stays framework-agnostic.
6
+ *
7
+ * This is the class you should use everywhere — it is a drop-in replacement
8
+ * for FormValidatorGroup with one extra property: `this.Form`.
9
+ *
10
+ * Also injects the default toast-based onSubmitError so both hook and class-component
11
+ * consumers surface errors out of the box; pass options.onSubmitError to override.
12
+ */
13
+ export default class FormValidatorGroupWithForm<TGroup extends FormGroup = FormGroup, TInitial = InferGroupValues<TGroup>> extends FormValidatorGroup<TGroup, TInitial> {
14
+ Form: React.FC<React.FormHTMLAttributes<HTMLFormElement>>;
15
+ constructor(groupDef: TGroup, component?: {
16
+ forceUpdate: () => void;
17
+ } | null, options?: FormValidatorGroupOptions<TGroup, TInitial>);
18
+ }
@@ -0,0 +1,5 @@
1
+ export { default as FormValidatorGroup } from './FormValidatorGroupWithForm.js';
2
+ export { default as ValidatableComponent } from './validatableComponent.js';
3
+ export { useFormValidatorGroup } from './useFormValidatorGroup.js';
4
+ export { FormValidator, Validators, useFormValidator } from '@ahrowe/form-validation';
5
+ export type { ValidationError, ValidatorFunction, ErrorParser, FormValidatorGroupOptions, InferGroupValues, MergedValues, } from '@ahrowe/form-validation';
@@ -0,0 +1,10 @@
1
+ import { FormGroup, FormValidatorGroupOptions, InferGroupValues } from '@ahrowe/form-validation';
2
+ import { default as FormValidatorGroupWithForm } from './FormValidatorGroupWithForm.js';
3
+ /**
4
+ * @ahrowe/ui's flavour of useFormValidatorGroup: the group it creates has
5
+ * `.Form` attached and defaults `onSubmitError` to an error toast (see
6
+ * FormValidatorGroupWithForm). Reuses the core package's reactive wiring
7
+ * (useFormValidatorGroupInstance) so this and the pure hook share one
8
+ * implementation of "subscribe a function component to a group".
9
+ */
10
+ export declare function useFormValidatorGroup<TGroup extends FormGroup = FormGroup, TInitial = InferGroupValues<TGroup>>(groupDef: TGroup, { initialValues, onSubmit, onValidate, errorParser, onSubmitError }?: FormValidatorGroupOptions<TGroup, TInitial>): FormValidatorGroupWithForm<TGroup, TInitial>;
@@ -0,0 +1,36 @@
1
+ import { default as React, PureComponent } from 'react';
2
+ import { FormValidator } from '@ahrowe/form-validation';
3
+ export interface ValidatableComponentProps {
4
+ formValidator?: FormValidator | null;
5
+ onMouseEnter?: ((event: React.MouseEvent) => void) | null;
6
+ onMouseLeave?: ((event: React.MouseEvent) => void) | null;
7
+ onFocus?: ((event: React.FocusEvent) => void) | null;
8
+ onBlur?: ((event: React.FocusEvent) => void) | null;
9
+ onChange?: ((value: unknown) => void) | null;
10
+ errorMessage?: string;
11
+ isValid?: boolean;
12
+ isRequired?: boolean;
13
+ label?: string;
14
+ }
15
+ export interface ValidatableComponentState {
16
+ isFocused: boolean;
17
+ isHovered: boolean;
18
+ }
19
+ /**
20
+ * Base class that extends PureComponent with FormValidator integration.
21
+ * Manages hover/focus state and renders error tooltips.
22
+ */
23
+ export default class ValidatableComponent<P extends ValidatableComponentProps = ValidatableComponentProps, S extends ValidatableComponentState = ValidatableComponentState> extends PureComponent<P, S> {
24
+ static defaultProps: Partial<ValidatableComponentProps>;
25
+ constructor(props: P);
26
+ componentDidMount(): void;
27
+ componentDidUpdate(prevProps: P): void;
28
+ onMouseEnter(event: React.MouseEvent): void;
29
+ onMouseLeave(event: React.MouseEvent): void;
30
+ onFocus(event: React.FocusEvent): void;
31
+ onBlur(event: React.FocusEvent): void;
32
+ hasError(): boolean;
33
+ isRequired(): boolean;
34
+ renderTooltip(): React.ReactNode;
35
+ onChange(newVal: unknown): void;
36
+ }
@@ -0,0 +1,36 @@
1
+ export interface KlipyMediaFormat {
2
+ url: string;
3
+ dims: [number, number];
4
+ size: number;
5
+ }
6
+ export interface KlipyResult {
7
+ id: string;
8
+ title: string;
9
+ media_formats: {
10
+ gif: KlipyMediaFormat;
11
+ tinygif: KlipyMediaFormat;
12
+ mediumgif: KlipyMediaFormat;
13
+ mp4: KlipyMediaFormat;
14
+ tinymp4: KlipyMediaFormat;
15
+ };
16
+ tags: string[];
17
+ url: string;
18
+ }
19
+ interface SearchOptions {
20
+ limit?: number;
21
+ contentfilter?: 'off' | 'low' | 'medium' | 'high';
22
+ pos?: string;
23
+ }
24
+ export default class KlipyService {
25
+ private key;
26
+ constructor(key: string);
27
+ search(query: string, options?: SearchOptions): Promise<{
28
+ results: KlipyResult[];
29
+ next: string;
30
+ }>;
31
+ searchSuggestions(query: string): Promise<{
32
+ results: string[];
33
+ }>;
34
+ registerShare(query: string, id: string): void;
35
+ }
36
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare const mapLocale: (locale: string) => string;
2
+ export declare function setLocale(locale: string): Promise<void>;
3
+ export declare function getLocale(delimiter?: string): string;
@@ -1,2 +1,2 @@
1
- "use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{useLabels as t}from"../configProvider/useLabels.mjs";import n from"../interactableDiv/index.mjs";import r from"../actionIcon/actionIcon.mjs";import i from"./carousel.module.mjs";import a,{useEffect as o,useLayoutEffect as s,useRef as c,useState as l}from"react";import u from"classnames";import{faChevronLeft as ee,faChevronRight as te}from"@fortawesome/free-solid-svg-icons";import{Fragment as ne,jsx as d,jsxs as f}from"react/jsx-runtime";var p=10,re=.2,ie={previous:`Previous slide`,next:`Next slide`,slides:`Slides`,goToSlide:e=>`Go to slide ${e}`};function m(m){let{children:ae,currentIndex:_,defaultIndex:oe=0,onChange:se=()=>{},loop:ce=!0,autoPlay:v=!1,autoPlayInterval:y=4e3,pauseOnHover:le=!0,showArrows:ue=!0,showDots:de=!0,swipeable:fe=!0,lazyRender:pe=!1,adaptiveHeight:b=!1,className:me,style:he,classNames:x,styles:S,labels:ge,...C}=e(`Carousel`,m),w=t(`Carousel`,ge,ie),_e=a.useId(),T=a.Children.toArray(ae),E=T.length,D=ce&&E>1,O=+!!D,k=D?[T[E-1],...T,T[0]]:T,A=_!==void 0,[ve,ye]=l(()=>g(oe,E,D)),j=g(A?_:ve,E,D),[M,N]=l(j+O),[be,P]=l(!0),F=c(j),[xe,I]=l(!1),[Se,L]=l(!1),[Ce,R]=l(!1),z=c(null),B=c(null),V=c(null),H=k.length>0?100/k.length:100;s(()=>{let e=F.current;if(F.current=j,e===j)return;let t=k.length-1,n=M;D&&M===0?n=E:D&&M===t&&(n=1);let r=D&&e===E-1&&j===0,i=D&&e===0&&j===E-1,a;a=r?n+1:i?n-1:j+O;let o=B.current;n!==M&&o&&(o.style.transition=`none`,o.style.transform=h(n,0,H),o.offsetWidth,o.style.transition=``),P(!0),N(a)},[j]);let[U,we]=l(()=>({min:j+O-1,max:j+O+1})),Te=Math.min(U.min,M-1),Ee=Math.max(U.max,M+1),[De,Oe]=l(void 0);s(()=>{if(!b)return;let e=B.current?.children[M];if(!e)return;let t=()=>Oe(e.offsetHeight);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[b,M,E]),s(()=>{let e=V.current,t=e?.children[j];e&&t&&(e.scrollLeft=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2)},[j,E]);function W(e){let t=g(e,E,D);A||ye(t),se(t)}function G(){!D&&j>=E-1||W(j+1)}function K(){!D&&j<=0||W(j-1)}function ke(e){e.target===e.currentTarget&&(we({min:M-1,max:M+1}),D&&(M===0?(P(!1),N(E)):M===k.length-1&&(P(!1),N(1))))}let q=v&&le,J=xe||Se||Ce;o(()=>{if(!v||E<=1||J)return;let e=setInterval(G,y);return()=>clearInterval(e)},[v,y,J,j,E]);let Y=c(null);function Ae(e){!fe||E<=1||(Y.current={startX:e.clientX,startY:e.clientY,width:z.current?.getBoundingClientRect().width||1,axisLocked:!1,active:!0,offsetPercent:0})}function je(e){let t=Y.current;if(!t||!t.active)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;if(!t.axisLocked){if(Math.abs(n)<p&&Math.abs(r)<p)return;if(Math.abs(r)>Math.abs(n)){t.active=!1;return}t.axisLocked=!0,e.currentTarget.setPointerCapture?.(e.pointerId),R(!0),P(!1)}t.offsetPercent=n/t.width*100,B.current&&(B.current.style.transform=h(M,t.offsetPercent,H))}function X(){let e=Y.current;if(Y.current=null,!e||!e.axisLocked){R(!1);return}P(!0),R(!1),B.current&&(B.current.style.transition=``,B.current.style.transform=h(M,0,H)),Math.abs(e.offsetPercent)>=re*100&&(e.offsetPercent<0?G():K())}function Me(e){e.defaultPrevented||B.current?.contains(e.target)||(e.key===`ArrowLeft`?(e.preventDefault(),K()):e.key===`ArrowRight`&&(e.preventDefault(),G()))}function Ne(e){let t=null;if(e.key===`ArrowLeft`?t=j-1:e.key===`ArrowRight`?t=j+1:e.key===`Home`?t=0:e.key===`End`&&(t=E-1),t===null)return;e.preventDefault();let n=g(t,E,D);W(n),(V.current?.children[n])?.focus()}let Pe=de&&E>1,Fe=e=>`${_e}-dot-${e}`,Z=e=>`${_e}-slide-${e}`,Ie=C[`aria-label`]!==void 0||C[`aria-labelledby`]!==void 0;function Le(e){return Pe?{id:Z(e),role:`tabpanel`,"aria-labelledby":Fe(e)}:{id:Z(e),role:`group`,"aria-roledescription":`slide`,"aria-label":`${e+1} of ${E}`}}let Q=!D&&j<=0,$=!D&&j>=E-1,Re=h(M,0,H);return f(`div`,{...C,ref:z,role:Ie?`region`:`group`,"aria-roledescription":`carousel`,className:u(i.carousel,b&&i.carouselAdaptive,x?.root,me),style:{height:b?De:void 0,...he,...S?.root},onMouseEnter:q?()=>I(!0):void 0,onMouseLeave:q?()=>I(!1):void 0,onFocus:q?()=>L(!0):void 0,onBlur:q?()=>L(!1):void 0,onKeyDown:Me,children:[d(`div`,{ref:B,className:u(i.carouselTrack,b&&i.carouselTrackAdaptive,x?.track),style:{width:`${k.length*100}%`,transform:Re,transition:be?void 0:`none`,...S?.track},"aria-live":v?`off`:`polite`,onTransitionEnd:ke,onPointerDown:Ae,onPointerMove:je,onPointerUp:X,onPointerCancel:X,children:k.map((e,t)=>{let n=D&&(t===0||t===k.length-1),r=t-O,a=!n&&r===j,o=!pe||t>=Te&&t<=Ee;return d(`div`,{...n?{}:Le(r),className:u(i.carouselSlide,x?.slide),style:{width:`${100/k.length}%`,...S?.slide},inert:!a||void 0,children:o?e:null},`carousel-slide-${t}`)})}),ue&&E>1&&f(ne,{children:[d(r,{icon:ee,title:w.previous,"aria-label":w.previous,"aria-disabled":Q||void 0,onClick:()=>!Q&&K(),className:u(i.carouselPrevButton,Q&&i.carouselButtonDisabled,x?.prevButton),style:S?.prevButton}),d(r,{icon:te,title:w.next,"aria-label":w.next,"aria-disabled":$||void 0,onClick:()=>!$&&G(),className:u(i.carouselNextButton,$&&i.carouselButtonDisabled,x?.nextButton),style:S?.nextButton})]}),Pe&&d(`div`,{ref:V,role:`tablist`,"aria-label":w.slides,className:u(i.carouselDots,x?.dots),style:S?.dots,onKeyDown:Ne,children:T.map((e,t)=>d(n,{id:Fe(t),role:`tab`,"aria-label":w.goToSlide(t+1),"aria-selected":t===j,"aria-controls":Z(t),tabIndex:t===j?0:-1,onClick:()=>W(t),className:u(i.carouselDot,t===j&&i.carouselDotActive,x?.dot),style:S?.dot},`carousel-dot-${t}`))})]})}function h(e,t,n){return`translateX(calc(${-e*n}% + ${n/100*t}%))`}function g(e,t,n){return t===0?0:n?(e%t+t)%t:Math.max(0,Math.min(t-1,e))}export{m as default};
1
+ "use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{useLabels as t}from"../configProvider/useLabels.mjs";import n from"../interactableDiv/index.mjs";import r from"../actionIcon/actionIcon.mjs";import i from"./carousel.module.mjs";import a from"../styles/scrollFade.module.mjs";import o,{useEffect as ee,useLayoutEffect as s,useRef as c,useState as l}from"react";import u from"classnames";import{faChevronLeft as te,faChevronRight as ne}from"@fortawesome/free-solid-svg-icons";import{Fragment as re,jsx as d,jsxs as f}from"react/jsx-runtime";var p=10,ie=.2,ae={previous:`Previous slide`,next:`Next slide`,slides:`Slides`,goToSlide:e=>`Go to slide ${e}`};function m(m){let{children:oe,currentIndex:_,defaultIndex:se=0,onChange:ce=()=>{},loop:le=!0,autoPlay:v=!1,autoPlayInterval:y=4e3,pauseOnHover:ue=!0,showArrows:de=!0,showDots:fe=!0,swipeable:pe=!0,lazyRender:me=!1,adaptiveHeight:b=!1,className:he,style:ge,classNames:x,styles:S,labels:_e,...C}=e(`Carousel`,m),w=t(`Carousel`,_e,ae),T=o.useId(),E=o.Children.toArray(oe),D=E.length,O=le&&D>1,k=+!!O,A=O?[E[D-1],...E,E[0]]:E,j=_!==void 0,[ve,ye]=l(()=>g(se,D,O)),M=g(j?_:ve,D,O),[N,P]=l(M+k),[be,F]=l(!0),I=c(M),[xe,L]=l(!1),[Se,R]=l(!1),[Ce,z]=l(!1),B=c(null),V=c(null),H=c(null),U=A.length>0?100/A.length:100;s(()=>{let e=I.current;if(I.current=M,e===M)return;let t=A.length-1,n=N;O&&N===0?n=D:O&&N===t&&(n=1);let r=O&&e===D-1&&M===0,i=O&&e===0&&M===D-1,a;a=r?n+1:i?n-1:M+k;let o=V.current;n!==N&&o&&(o.style.transition=`none`,o.style.transform=h(n,0,U),o.offsetWidth,o.style.transition=``),F(!0),P(a)},[M]);let[W,we]=l(()=>({min:M+k-1,max:M+k+1})),Te=Math.min(W.min,N-1),Ee=Math.max(W.max,N+1),[De,Oe]=l(void 0);s(()=>{if(!b)return;let e=V.current?.children[N];if(!e)return;let t=()=>Oe(e.offsetHeight);t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[b,N,D]),s(()=>{let e=H.current,t=e?.children[M];e&&t&&(e.scrollLeft=t.offsetLeft-(e.clientWidth-t.offsetWidth)/2)},[M,D]);function G(e){let t=g(e,D,O);j||ye(t),ce(t)}function K(){!O&&M>=D-1||G(M+1)}function q(){!O&&M<=0||G(M-1)}function ke(e){e.target===e.currentTarget&&(we({min:N-1,max:N+1}),O&&(N===0?(F(!1),P(D)):N===A.length-1&&(F(!1),P(1))))}let J=v&&ue,Y=xe||Se||Ce;ee(()=>{if(!v||D<=1||Y)return;let e=setInterval(K,y);return()=>clearInterval(e)},[v,y,Y,M,D]);let X=c(null);function Ae(e){!pe||D<=1||(X.current={startX:e.clientX,startY:e.clientY,width:B.current?.getBoundingClientRect().width||1,axisLocked:!1,active:!0,offsetPercent:0})}function je(e){let t=X.current;if(!t||!t.active)return;let n=e.clientX-t.startX,r=e.clientY-t.startY;if(!t.axisLocked){if(Math.abs(n)<p&&Math.abs(r)<p)return;if(Math.abs(r)>Math.abs(n)){t.active=!1;return}t.axisLocked=!0,e.currentTarget.setPointerCapture?.(e.pointerId),z(!0),F(!1)}t.offsetPercent=n/t.width*100,V.current&&(V.current.style.transform=h(N,t.offsetPercent,U))}function Me(){let e=X.current;if(X.current=null,!e||!e.axisLocked){z(!1);return}F(!0),z(!1),V.current&&(V.current.style.transition=``,V.current.style.transform=h(N,0,U)),Math.abs(e.offsetPercent)>=ie*100&&(e.offsetPercent<0?K():q())}function Ne(e){e.defaultPrevented||V.current?.contains(e.target)||(e.key===`ArrowLeft`?(e.preventDefault(),q()):e.key===`ArrowRight`&&(e.preventDefault(),K()))}function Pe(e){let t=null;if(e.key===`ArrowLeft`?t=M-1:e.key===`ArrowRight`?t=M+1:e.key===`Home`?t=0:e.key===`End`&&(t=D-1),t===null)return;e.preventDefault();let n=g(t,D,O);G(n),(H.current?.children[n])?.focus()}let Fe=fe&&D>1,Ie=e=>`${T}-dot-${e}`,Z=e=>`${T}-slide-${e}`,Le=C[`aria-label`]!==void 0||C[`aria-labelledby`]!==void 0;function Re(e){return Fe?{id:Z(e),role:`tabpanel`,"aria-labelledby":Ie(e)}:{id:Z(e),role:`group`,"aria-roledescription":`slide`,"aria-label":`${e+1} of ${D}`}}let Q=!O&&M<=0,$=!O&&M>=D-1,ze=h(N,0,U);return f(`div`,{...C,ref:B,role:Le?`region`:`group`,"aria-roledescription":`carousel`,className:u(i.carousel,b&&i.carouselAdaptive,x?.root,he),style:{height:b?De:void 0,...ge,...S?.root},onMouseEnter:J?()=>L(!0):void 0,onMouseLeave:J?()=>L(!1):void 0,onFocus:J?()=>R(!0):void 0,onBlur:J?()=>R(!1):void 0,onKeyDown:Ne,children:[d(`div`,{ref:V,className:u(i.carouselTrack,b&&i.carouselTrackAdaptive,x?.track),style:{width:`${A.length*100}%`,transform:ze,transition:be?void 0:`none`,...S?.track},"aria-live":v?`off`:`polite`,onTransitionEnd:ke,onPointerDown:Ae,onPointerMove:je,onPointerUp:Me,onPointerCancel:Me,children:A.map((e,t)=>{let n=O&&(t===0||t===A.length-1),r=t-k,a=!n&&r===M,o=!me||t>=Te&&t<=Ee;return d(`div`,{...n?{}:Re(r),className:u(i.carouselSlide,x?.slide),style:{width:`${100/A.length}%`,...S?.slide},inert:!a||void 0,children:o?e:null},`carousel-slide-${t}`)})}),de&&D>1&&f(re,{children:[d(r,{icon:te,title:w.previous,"aria-label":w.previous,"aria-disabled":Q||void 0,onClick:()=>!Q&&q(),className:u(i.carouselPrevButton,Q&&i.carouselButtonDisabled,x?.prevButton),style:S?.prevButton}),d(r,{icon:ne,title:w.next,"aria-label":w.next,"aria-disabled":$||void 0,onClick:()=>!$&&K(),className:u(i.carouselNextButton,$&&i.carouselButtonDisabled,x?.nextButton),style:S?.nextButton})]}),Fe&&d(`div`,{ref:H,role:`tablist`,"aria-label":w.slides,className:u(i.carouselDots,a.scrollFade,a.scrollFadeX,a.scrollFadeFadedStart,a.scrollFadeFadedEnd,x?.dots),style:S?.dots,onKeyDown:Pe,children:E.map((e,t)=>d(n,{id:Ie(t),role:`tab`,"aria-label":w.goToSlide(t+1),"aria-selected":t===M,"aria-controls":Z(t),tabIndex:t===M?0:-1,onClick:()=>G(t),className:u(i.carouselDot,t===M&&i.carouselDotActive,x?.dot),style:S?.dot},`carousel-dot-${t}`))})]})}function h(e,t,n){return`translateX(calc(${-e*n}% + ${n/100*t}%))`}function g(e,t,n){return t===0?0:n?(e%t+t)%t:Math.max(0,Math.min(t-1,e))}export{m as default};
2
2
  //# sourceMappingURL=carousel.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.mjs","names":[],"sources":["../../../../package/common/carousel/carousel.tsx"],"sourcesContent":["import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons';\n\nimport ActionIcon from '../actionIcon';\nimport InteractableDiv from '../interactableDiv';\nimport { useComponentDefaults, useLabels } from '../configProvider';\nimport type { CarouselLabels, CarouselProps } from './carousel.types';\n\nimport styles from './carousel.module.pcss';\n\nconst AXIS_LOCK_THRESHOLD = 10;\nconst DRAG_COMMIT_RATIO = 0.2;\n\nconst DEFAULT_LABELS: Required<CarouselLabels> = {\n previous: 'Previous slide',\n next: 'Next slide',\n slides: 'Slides',\n goToSlide: (slide) => `Go to slide ${slide}`,\n};\n\nfunction Carousel(props: CarouselProps) {\n const {\n children,\n currentIndex,\n defaultIndex = 0,\n onChange = () => {},\n loop = true,\n autoPlay = false,\n autoPlayInterval = 4000,\n pauseOnHover = true,\n showArrows = true,\n showDots = true,\n swipeable = true,\n lazyRender = false,\n adaptiveHeight = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n labels,\n ...rest\n } = useComponentDefaults('Carousel', props);\n const text = useLabels('Carousel', labels, DEFAULT_LABELS);\n\n const instanceId = React.useId();\n const slides = React.Children.toArray(children);\n const count = slides.length;\n const canLoop = loop && count > 1;\n const offset = canLoop ? 1 : 0;\n const extendedSlides = canLoop ? [slides[count - 1], ...slides, slides[0]] : slides;\n\n const isControlled = currentIndex !== undefined;\n const [internalIndex, setInternalIndex] = useState(() => clampIndex(defaultIndex, count, canLoop));\n const realIndex = clampIndex(isControlled ? currentIndex! : internalIndex, count, canLoop);\n\n const [displayIndex, setDisplayIndex] = useState(realIndex + offset);\n const [transitionEnabled, setTransitionEnabled] = useState(true);\n const prevRealIndexRef = useRef(realIndex);\n\n const [hovered, setHovered] = useState(false);\n const [focused, setFocused] = useState(false);\n const [dragging, setDragging] = useState(false);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const trackRef = useRef<HTMLDivElement>(null);\n const dotsRef = useRef<HTMLDivElement>(null);\n\n const slideWidthPercent = extendedSlides.length > 0 ? 100 / extendedSlides.length : 100;\n\n useLayoutEffect(() => {\n const prevReal = prevRealIndexRef.current;\n prevRealIndexRef.current = realIndex;\n if (prevReal === realIndex) return;\n\n // A wrap parks the track on a clone until transitionEnd swaps it back, so a change arriving\n // before that has to animate from the normalised position rather than the clone.\n const lastExtendedIndex = extendedSlides.length - 1;\n let fromIndex = displayIndex;\n if (canLoop && displayIndex === 0) fromIndex = count;\n else if (canLoop && displayIndex === lastExtendedIndex) fromIndex = 1;\n\n const forwardWrap = canLoop && prevReal === count - 1 && realIndex === 0;\n const backwardWrap = canLoop && prevReal === 0 && realIndex === count - 1;\n\n let target: number;\n if (forwardWrap) target = fromIndex + 1;\n else if (backwardWrap) target = fromIndex - 1;\n else target = realIndex + offset;\n\n // Written straight to the node: the normalised position has to reach style recalculation on its\n // own, or it and the animated position collapse into one jump with no transition.\n const track = trackRef.current;\n if (fromIndex !== displayIndex && track) {\n track.style.transition = 'none';\n track.style.transform = buildTrackTransform(fromIndex, 0, slideWidthPercent);\n void track.offsetWidth;\n track.style.transition = '';\n }\n\n setTransitionEnabled(true);\n setDisplayIndex(target);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [realIndex]);\n\n // The window of slides `lazyRender` keeps mounted, as of the last settled position. Slides are\n // rendered for the union of this and the current window, so the ones a multi-step jump slides\n // past stay mounted until the transform transition ends instead of blanking out mid-flight.\n const [settledMountRange, setSettledMountRange] = useState(() => ({\n min: realIndex + offset - 1,\n max: realIndex + offset + 1,\n }));\n const mountMin = Math.min(settledMountRange.min, displayIndex - 1);\n const mountMax = Math.max(settledMountRange.max, displayIndex + 1);\n\n const [contentHeight, setContentHeight] = useState<number | undefined>(undefined);\n\n useLayoutEffect(() => {\n if (!adaptiveHeight) return;\n const slideElement = trackRef.current?.children[displayIndex] as HTMLElement | undefined;\n if (!slideElement) return;\n\n const update = () => setContentHeight(slideElement.offsetHeight);\n update();\n\n const observer = new ResizeObserver(update);\n observer.observe(slideElement);\n return () => observer.disconnect();\n }, [adaptiveHeight, displayIndex, count]);\n\n // Keeps the selected dot in view. Written as `scrollLeft` because `scrollIntoView` is free to\n // scroll the page along with it.\n useLayoutEffect(() => {\n const strip = dotsRef.current;\n const dot = strip?.children[realIndex] as HTMLElement | undefined;\n if (!strip || !dot) return;\n strip.scrollLeft = dot.offsetLeft - (strip.clientWidth - dot.offsetWidth) / 2;\n }, [realIndex, count]);\n\n function goToIndex(nextIndex: number) {\n const clamped = clampIndex(nextIndex, count, canLoop);\n if (!isControlled) setInternalIndex(clamped);\n onChange(clamped);\n }\n\n function goNext() {\n if (!canLoop && realIndex >= count - 1) return;\n goToIndex(realIndex + 1);\n }\n\n function goPrev() {\n if (!canLoop && realIndex <= 0) return;\n goToIndex(realIndex - 1);\n }\n\n function handleTrackTransitionEnd(event: React.TransitionEvent<HTMLDivElement>) {\n if (event.target !== event.currentTarget) return;\n setSettledMountRange({ min: displayIndex - 1, max: displayIndex + 1 });\n\n if (!canLoop) return;\n if (displayIndex === 0) {\n setTransitionEnabled(false);\n setDisplayIndex(count);\n } else if (displayIndex === extendedSlides.length - 1) {\n setTransitionEnabled(false);\n setDisplayIndex(1);\n }\n }\n\n // Hover and focus only ever pause the timer, so without one they are not worth tracking.\n const tracksPointerPause = autoPlay && pauseOnHover;\n const isPaused = hovered || focused || dragging;\n useEffect(() => {\n if (!autoPlay || count <= 1 || isPaused) return;\n const timer = setInterval(goNext, autoPlayInterval);\n return () => clearInterval(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autoPlay, autoPlayInterval, isPaused, realIndex, count]);\n\n // A drag follows the pointer through the node, not through state: a render per move event would\n // rebuild every slide and dot for something only the track's transform sees.\n const dragRef = useRef<{\n startX: number;\n startY: number;\n width: number;\n axisLocked: boolean;\n active: boolean;\n offsetPercent: number;\n } | null>(null);\n\n function handlePointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (!swipeable || count <= 1) return;\n dragRef.current = {\n startX: event.clientX,\n startY: event.clientY,\n // Measured once: measuring per move would force a layout between the transform writes.\n width: containerRef.current?.getBoundingClientRect().width || 1,\n axisLocked: false,\n active: true,\n offsetPercent: 0,\n };\n }\n\n function handlePointerMove(event: React.PointerEvent<HTMLDivElement>) {\n const drag = dragRef.current;\n if (!drag || !drag.active) return;\n\n const deltaX = event.clientX - drag.startX;\n const deltaY = event.clientY - drag.startY;\n\n if (!drag.axisLocked) {\n if (Math.abs(deltaX) < AXIS_LOCK_THRESHOLD && Math.abs(deltaY) < AXIS_LOCK_THRESHOLD) return;\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n drag.active = false;\n return;\n }\n drag.axisLocked = true;\n // Never on pointerdown: a captured pointer sends its `click` to the capture target too, so\n // capturing earlier would swallow every click meant for a button inside a slide.\n event.currentTarget.setPointerCapture?.(event.pointerId);\n setDragging(true);\n setTransitionEnabled(false);\n }\n\n drag.offsetPercent = (deltaX / drag.width) * 100;\n if (trackRef.current) {\n trackRef.current.style.transform = buildTrackTransform(displayIndex, drag.offsetPercent, slideWidthPercent);\n }\n }\n\n function handlePointerUp() {\n const drag = dragRef.current;\n dragRef.current = null;\n if (!drag || !drag.axisLocked) {\n setDragging(false);\n return;\n }\n\n setTransitionEnabled(true);\n setDragging(false);\n\n // React never saw the dragged transform, so it has to be handed back by hand, and always: a\n // drag that changes no index would otherwise strand the track off-screen. One that does change\n // it overwrites this in the same tick, and still animates on from where the pointer left off.\n if (trackRef.current) {\n trackRef.current.style.transition = '';\n trackRef.current.style.transform = buildTrackTransform(displayIndex, 0, slideWidthPercent);\n }\n\n if (Math.abs(drag.offsetPercent) >= DRAG_COMMIT_RATIO * 100) {\n if (drag.offsetPercent < 0) goNext();\n else goPrev();\n }\n }\n\n // Arrow keys belong to the carousel's own controls, never to the slides: a text field or a\n // scrollable region in a slide has to keep its own. `defaultPrevented` leaves the dots to their\n // own handling below.\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (event.defaultPrevented || trackRef.current?.contains(event.target as Node)) return;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n goPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n goNext();\n }\n }\n\n function handleDotsKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n let next: number | null = null;\n if (event.key === 'ArrowLeft') next = realIndex - 1;\n else if (event.key === 'ArrowRight') next = realIndex + 1;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = count - 1;\n if (next === null) return;\n\n event.preventDefault();\n const clamped = clampIndex(next, count, canLoop);\n goToIndex(clamped);\n // The selected dot is the one holding the tab stop, so focus has to travel with the selection.\n (dotsRef.current?.children[clamped] as HTMLElement | undefined)?.focus();\n }\n\n // The dots are the APG tablist over the slides. Without them the slides describe themselves as\n // plain slides rather than as panels.\n const hasTabs = showDots && count > 1;\n const dotId = (index: number) => `${instanceId}-dot-${index}`;\n const slideId = (index: number) => `${instanceId}-slide-${index}`;\n\n // An unnamed landmark is worse than none, so the carousel is only a region once it has a name.\n const isNamed = rest['aria-label'] !== undefined || rest['aria-labelledby'] !== undefined;\n\n function slideSemantics(index: number) {\n if (hasTabs) {\n return { id: slideId(index), role: 'tabpanel', 'aria-labelledby': dotId(index) };\n }\n return {\n id: slideId(index),\n role: 'group',\n 'aria-roledescription': 'slide',\n 'aria-label': `${index + 1} of ${count}`,\n };\n }\n\n const isPrevDisabled = !canLoop && realIndex <= 0;\n const isNextDisabled = !canLoop && realIndex >= count - 1;\n\n const trackTransform = buildTrackTransform(displayIndex, 0, slideWidthPercent);\n\n return (\n <div\n {...rest}\n ref={containerRef}\n role={isNamed ? 'region' : 'group'}\n aria-roledescription='carousel'\n className={cx(styles.carousel, adaptiveHeight && styles.carouselAdaptive, classNames?.root, className)}\n style={{ height: adaptiveHeight ? contentHeight : undefined, ...style, ...slotStyles?.root }}\n onMouseEnter={tracksPointerPause ? () => setHovered(true) : undefined}\n onMouseLeave={tracksPointerPause ? () => setHovered(false) : undefined}\n onFocus={tracksPointerPause ? () => setFocused(true) : undefined}\n onBlur={tracksPointerPause ? () => setFocused(false) : undefined}\n onKeyDown={handleKeyDown}\n >\n <div\n ref={trackRef}\n className={cx(styles.carouselTrack, adaptiveHeight && styles.carouselTrackAdaptive, classNames?.track)}\n style={{\n width: `${extendedSlides.length * 100}%`,\n transform: trackTransform,\n transition: transitionEnabled ? undefined : 'none',\n ...slotStyles?.track,\n }}\n aria-live={autoPlay ? 'off' : 'polite'}\n onTransitionEnd={handleTrackTransitionEnd}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n >\n {extendedSlides.map((slide, idx) => {\n const isClonePosition = canLoop && (idx === 0 || idx === extendedSlides.length - 1);\n const logicalIndex = idx - offset;\n const isActive = !isClonePosition && logicalIndex === realIndex;\n const isRendered = !lazyRender || (idx >= mountMin && idx <= mountMax);\n\n return (\n <div\n key={`carousel-slide-${idx}`}\n {...(isClonePosition ? {} : slideSemantics(logicalIndex))}\n className={cx(styles.carouselSlide, classNames?.slide)}\n style={{ width: `${100 / extendedSlides.length}%`, ...slotStyles?.slide }}\n inert={isActive ? undefined : true}\n >\n {isRendered ? slide : null}\n </div>\n );\n })}\n </div>\n\n {showArrows && count > 1 && (\n <>\n <ActionIcon\n icon={faChevronLeft}\n title={text.previous}\n aria-label={text.previous}\n aria-disabled={isPrevDisabled || undefined}\n onClick={() => !isPrevDisabled && goPrev()}\n className={cx(\n styles.carouselPrevButton,\n isPrevDisabled && styles.carouselButtonDisabled,\n classNames?.prevButton,\n )}\n style={slotStyles?.prevButton}\n />\n <ActionIcon\n icon={faChevronRight}\n title={text.next}\n aria-label={text.next}\n aria-disabled={isNextDisabled || undefined}\n onClick={() => !isNextDisabled && goNext()}\n className={cx(\n styles.carouselNextButton,\n isNextDisabled && styles.carouselButtonDisabled,\n classNames?.nextButton,\n )}\n style={slotStyles?.nextButton}\n />\n </>\n )}\n\n {hasTabs && (\n <div\n ref={dotsRef}\n role='tablist'\n aria-label={text.slides}\n className={cx(styles.carouselDots, classNames?.dots)}\n style={slotStyles?.dots}\n onKeyDown={handleDotsKeyDown}\n >\n {slides.map((_, index) => (\n <InteractableDiv\n key={`carousel-dot-${index}`}\n id={dotId(index)}\n role='tab'\n aria-label={text.goToSlide(index + 1)}\n aria-selected={index === realIndex}\n aria-controls={slideId(index)}\n // One tab stop for the whole set, arrow keys inside it.\n tabIndex={index === realIndex ? 0 : -1}\n onClick={() => goToIndex(index)}\n className={cx(styles.carouselDot, index === realIndex && styles.carouselDotActive, classNames?.dot)}\n style={slotStyles?.dot}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction buildTrackTransform(position: number, dragPercent: number, slideWidthPercent: number): string {\n return `translateX(calc(${-position * slideWidthPercent}% + ${dragPercent * (slideWidthPercent / 100)}%))`;\n}\n\nfunction clampIndex(index: number, count: number, canLoop: boolean): number {\n if (count === 0) return 0;\n if (canLoop) return ((index % count) + count) % count;\n return Math.max(0, Math.min(count - 1, index));\n}\n\nexport default Carousel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"carousel.mjs","names":[],"sources":["../../../../package/common/carousel/carousel.tsx"],"sourcesContent":["import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons';\n\nimport ActionIcon from '../actionIcon';\nimport InteractableDiv from '../interactableDiv';\nimport { useComponentDefaults, useLabels } from '../configProvider';\nimport type { CarouselLabels, CarouselProps } from './carousel.types';\n\nimport styles from './carousel.module.pcss';\nimport fadeStyles from 'components/common/styles/scrollFade.module.pcss';\n\nconst AXIS_LOCK_THRESHOLD = 10;\nconst DRAG_COMMIT_RATIO = 0.2;\n\nconst DEFAULT_LABELS: Required<CarouselLabels> = {\n previous: 'Previous slide',\n next: 'Next slide',\n slides: 'Slides',\n goToSlide: (slide) => `Go to slide ${slide}`,\n};\n\nfunction Carousel(props: CarouselProps) {\n const {\n children,\n currentIndex,\n defaultIndex = 0,\n onChange = () => {},\n loop = true,\n autoPlay = false,\n autoPlayInterval = 4000,\n pauseOnHover = true,\n showArrows = true,\n showDots = true,\n swipeable = true,\n lazyRender = false,\n adaptiveHeight = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n labels,\n ...rest\n } = useComponentDefaults('Carousel', props);\n const text = useLabels('Carousel', labels, DEFAULT_LABELS);\n\n const instanceId = React.useId();\n const slides = React.Children.toArray(children);\n const count = slides.length;\n const canLoop = loop && count > 1;\n const offset = canLoop ? 1 : 0;\n const extendedSlides = canLoop ? [slides[count - 1], ...slides, slides[0]] : slides;\n\n const isControlled = currentIndex !== undefined;\n const [internalIndex, setInternalIndex] = useState(() => clampIndex(defaultIndex, count, canLoop));\n const realIndex = clampIndex(isControlled ? currentIndex! : internalIndex, count, canLoop);\n\n const [displayIndex, setDisplayIndex] = useState(realIndex + offset);\n const [transitionEnabled, setTransitionEnabled] = useState(true);\n const prevRealIndexRef = useRef(realIndex);\n\n const [hovered, setHovered] = useState(false);\n const [focused, setFocused] = useState(false);\n const [dragging, setDragging] = useState(false);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const trackRef = useRef<HTMLDivElement>(null);\n const dotsRef = useRef<HTMLDivElement>(null);\n\n const slideWidthPercent = extendedSlides.length > 0 ? 100 / extendedSlides.length : 100;\n\n useLayoutEffect(() => {\n const prevReal = prevRealIndexRef.current;\n prevRealIndexRef.current = realIndex;\n if (prevReal === realIndex) return;\n\n // A wrap parks the track on a clone until transitionEnd swaps it back, so a change arriving\n // before that has to animate from the normalised position rather than the clone.\n const lastExtendedIndex = extendedSlides.length - 1;\n let fromIndex = displayIndex;\n if (canLoop && displayIndex === 0) fromIndex = count;\n else if (canLoop && displayIndex === lastExtendedIndex) fromIndex = 1;\n\n const forwardWrap = canLoop && prevReal === count - 1 && realIndex === 0;\n const backwardWrap = canLoop && prevReal === 0 && realIndex === count - 1;\n\n let target: number;\n if (forwardWrap) target = fromIndex + 1;\n else if (backwardWrap) target = fromIndex - 1;\n else target = realIndex + offset;\n\n // Written straight to the node: the normalised position has to reach style recalculation on its\n // own, or it and the animated position collapse into one jump with no transition.\n const track = trackRef.current;\n if (fromIndex !== displayIndex && track) {\n track.style.transition = 'none';\n track.style.transform = buildTrackTransform(fromIndex, 0, slideWidthPercent);\n void track.offsetWidth;\n track.style.transition = '';\n }\n\n setTransitionEnabled(true);\n setDisplayIndex(target);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [realIndex]);\n\n // The window of slides `lazyRender` keeps mounted, as of the last settled position. Slides are\n // rendered for the union of this and the current window, so the ones a multi-step jump slides\n // past stay mounted until the transform transition ends instead of blanking out mid-flight.\n const [settledMountRange, setSettledMountRange] = useState(() => ({\n min: realIndex + offset - 1,\n max: realIndex + offset + 1,\n }));\n const mountMin = Math.min(settledMountRange.min, displayIndex - 1);\n const mountMax = Math.max(settledMountRange.max, displayIndex + 1);\n\n const [contentHeight, setContentHeight] = useState<number | undefined>(undefined);\n\n useLayoutEffect(() => {\n if (!adaptiveHeight) return;\n const slideElement = trackRef.current?.children[displayIndex] as HTMLElement | undefined;\n if (!slideElement) return;\n\n const update = () => setContentHeight(slideElement.offsetHeight);\n update();\n\n const observer = new ResizeObserver(update);\n observer.observe(slideElement);\n return () => observer.disconnect();\n }, [adaptiveHeight, displayIndex, count]);\n\n // Keeps the selected dot in view. Written as `scrollLeft` because `scrollIntoView` is free to\n // scroll the page along with it.\n useLayoutEffect(() => {\n const strip = dotsRef.current;\n const dot = strip?.children[realIndex] as HTMLElement | undefined;\n if (!strip || !dot) return;\n strip.scrollLeft = dot.offsetLeft - (strip.clientWidth - dot.offsetWidth) / 2;\n }, [realIndex, count]);\n\n function goToIndex(nextIndex: number) {\n const clamped = clampIndex(nextIndex, count, canLoop);\n if (!isControlled) setInternalIndex(clamped);\n onChange(clamped);\n }\n\n function goNext() {\n if (!canLoop && realIndex >= count - 1) return;\n goToIndex(realIndex + 1);\n }\n\n function goPrev() {\n if (!canLoop && realIndex <= 0) return;\n goToIndex(realIndex - 1);\n }\n\n function handleTrackTransitionEnd(event: React.TransitionEvent<HTMLDivElement>) {\n if (event.target !== event.currentTarget) return;\n setSettledMountRange({ min: displayIndex - 1, max: displayIndex + 1 });\n\n if (!canLoop) return;\n if (displayIndex === 0) {\n setTransitionEnabled(false);\n setDisplayIndex(count);\n } else if (displayIndex === extendedSlides.length - 1) {\n setTransitionEnabled(false);\n setDisplayIndex(1);\n }\n }\n\n // Hover and focus only ever pause the timer, so without one they are not worth tracking.\n const tracksPointerPause = autoPlay && pauseOnHover;\n const isPaused = hovered || focused || dragging;\n useEffect(() => {\n if (!autoPlay || count <= 1 || isPaused) return;\n const timer = setInterval(goNext, autoPlayInterval);\n return () => clearInterval(timer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [autoPlay, autoPlayInterval, isPaused, realIndex, count]);\n\n // A drag follows the pointer through the node, not through state: a render per move event would\n // rebuild every slide and dot for something only the track's transform sees.\n const dragRef = useRef<{\n startX: number;\n startY: number;\n width: number;\n axisLocked: boolean;\n active: boolean;\n offsetPercent: number;\n } | null>(null);\n\n function handlePointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (!swipeable || count <= 1) return;\n dragRef.current = {\n startX: event.clientX,\n startY: event.clientY,\n // Measured once: measuring per move would force a layout between the transform writes.\n width: containerRef.current?.getBoundingClientRect().width || 1,\n axisLocked: false,\n active: true,\n offsetPercent: 0,\n };\n }\n\n function handlePointerMove(event: React.PointerEvent<HTMLDivElement>) {\n const drag = dragRef.current;\n if (!drag || !drag.active) return;\n\n const deltaX = event.clientX - drag.startX;\n const deltaY = event.clientY - drag.startY;\n\n if (!drag.axisLocked) {\n if (Math.abs(deltaX) < AXIS_LOCK_THRESHOLD && Math.abs(deltaY) < AXIS_LOCK_THRESHOLD) return;\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n drag.active = false;\n return;\n }\n drag.axisLocked = true;\n // Never on pointerdown: a captured pointer sends its `click` to the capture target too, so\n // capturing earlier would swallow every click meant for a button inside a slide.\n event.currentTarget.setPointerCapture?.(event.pointerId);\n setDragging(true);\n setTransitionEnabled(false);\n }\n\n drag.offsetPercent = (deltaX / drag.width) * 100;\n if (trackRef.current) {\n trackRef.current.style.transform = buildTrackTransform(displayIndex, drag.offsetPercent, slideWidthPercent);\n }\n }\n\n function handlePointerUp() {\n const drag = dragRef.current;\n dragRef.current = null;\n if (!drag || !drag.axisLocked) {\n setDragging(false);\n return;\n }\n\n setTransitionEnabled(true);\n setDragging(false);\n\n // React never saw the dragged transform, so it has to be handed back by hand, and always: a\n // drag that changes no index would otherwise strand the track off-screen. One that does change\n // it overwrites this in the same tick, and still animates on from where the pointer left off.\n if (trackRef.current) {\n trackRef.current.style.transition = '';\n trackRef.current.style.transform = buildTrackTransform(displayIndex, 0, slideWidthPercent);\n }\n\n if (Math.abs(drag.offsetPercent) >= DRAG_COMMIT_RATIO * 100) {\n if (drag.offsetPercent < 0) goNext();\n else goPrev();\n }\n }\n\n // Arrow keys belong to the carousel's own controls, never to the slides: a text field or a\n // scrollable region in a slide has to keep its own. `defaultPrevented` leaves the dots to their\n // own handling below.\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (event.defaultPrevented || trackRef.current?.contains(event.target as Node)) return;\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n goPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n goNext();\n }\n }\n\n function handleDotsKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n let next: number | null = null;\n if (event.key === 'ArrowLeft') next = realIndex - 1;\n else if (event.key === 'ArrowRight') next = realIndex + 1;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = count - 1;\n if (next === null) return;\n\n event.preventDefault();\n const clamped = clampIndex(next, count, canLoop);\n goToIndex(clamped);\n // The selected dot is the one holding the tab stop, so focus has to travel with the selection.\n (dotsRef.current?.children[clamped] as HTMLElement | undefined)?.focus();\n }\n\n // The dots are the APG tablist over the slides. Without them the slides describe themselves as\n // plain slides rather than as panels.\n const hasTabs = showDots && count > 1;\n const dotId = (index: number) => `${instanceId}-dot-${index}`;\n const slideId = (index: number) => `${instanceId}-slide-${index}`;\n\n // An unnamed landmark is worse than none, so the carousel is only a region once it has a name.\n const isNamed = rest['aria-label'] !== undefined || rest['aria-labelledby'] !== undefined;\n\n function slideSemantics(index: number) {\n if (hasTabs) {\n return { id: slideId(index), role: 'tabpanel', 'aria-labelledby': dotId(index) };\n }\n return {\n id: slideId(index),\n role: 'group',\n 'aria-roledescription': 'slide',\n 'aria-label': `${index + 1} of ${count}`,\n };\n }\n\n const isPrevDisabled = !canLoop && realIndex <= 0;\n const isNextDisabled = !canLoop && realIndex >= count - 1;\n\n const trackTransform = buildTrackTransform(displayIndex, 0, slideWidthPercent);\n\n return (\n <div\n {...rest}\n ref={containerRef}\n role={isNamed ? 'region' : 'group'}\n aria-roledescription='carousel'\n className={cx(styles.carousel, adaptiveHeight && styles.carouselAdaptive, classNames?.root, className)}\n style={{ height: adaptiveHeight ? contentHeight : undefined, ...style, ...slotStyles?.root }}\n onMouseEnter={tracksPointerPause ? () => setHovered(true) : undefined}\n onMouseLeave={tracksPointerPause ? () => setHovered(false) : undefined}\n onFocus={tracksPointerPause ? () => setFocused(true) : undefined}\n onBlur={tracksPointerPause ? () => setFocused(false) : undefined}\n onKeyDown={handleKeyDown}\n >\n <div\n ref={trackRef}\n className={cx(styles.carouselTrack, adaptiveHeight && styles.carouselTrackAdaptive, classNames?.track)}\n style={{\n width: `${extendedSlides.length * 100}%`,\n transform: trackTransform,\n transition: transitionEnabled ? undefined : 'none',\n ...slotStyles?.track,\n }}\n aria-live={autoPlay ? 'off' : 'polite'}\n onTransitionEnd={handleTrackTransitionEnd}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n >\n {extendedSlides.map((slide, idx) => {\n const isClonePosition = canLoop && (idx === 0 || idx === extendedSlides.length - 1);\n const logicalIndex = idx - offset;\n const isActive = !isClonePosition && logicalIndex === realIndex;\n const isRendered = !lazyRender || (idx >= mountMin && idx <= mountMax);\n\n return (\n <div\n key={`carousel-slide-${idx}`}\n {...(isClonePosition ? {} : slideSemantics(logicalIndex))}\n className={cx(styles.carouselSlide, classNames?.slide)}\n style={{ width: `${100 / extendedSlides.length}%`, ...slotStyles?.slide }}\n inert={isActive ? undefined : true}\n >\n {isRendered ? slide : null}\n </div>\n );\n })}\n </div>\n\n {showArrows && count > 1 && (\n <>\n <ActionIcon\n icon={faChevronLeft}\n title={text.previous}\n aria-label={text.previous}\n aria-disabled={isPrevDisabled || undefined}\n onClick={() => !isPrevDisabled && goPrev()}\n className={cx(\n styles.carouselPrevButton,\n isPrevDisabled && styles.carouselButtonDisabled,\n classNames?.prevButton,\n )}\n style={slotStyles?.prevButton}\n />\n <ActionIcon\n icon={faChevronRight}\n title={text.next}\n aria-label={text.next}\n aria-disabled={isNextDisabled || undefined}\n onClick={() => !isNextDisabled && goNext()}\n className={cx(\n styles.carouselNextButton,\n isNextDisabled && styles.carouselButtonDisabled,\n classNames?.nextButton,\n )}\n style={slotStyles?.nextButton}\n />\n </>\n )}\n\n {hasTabs && (\n <div\n ref={dotsRef}\n role='tablist'\n aria-label={text.slides}\n className={cx(\n styles.carouselDots,\n // Both ends always: the strip's own padding holds the outer dots clear of the fade\n // until there is something to scroll, so this needs no measuring.\n fadeStyles.scrollFade,\n fadeStyles.scrollFadeX,\n fadeStyles.scrollFadeFadedStart,\n fadeStyles.scrollFadeFadedEnd,\n classNames?.dots,\n )}\n style={slotStyles?.dots}\n onKeyDown={handleDotsKeyDown}\n >\n {slides.map((_, index) => (\n <InteractableDiv\n key={`carousel-dot-${index}`}\n id={dotId(index)}\n role='tab'\n aria-label={text.goToSlide(index + 1)}\n aria-selected={index === realIndex}\n aria-controls={slideId(index)}\n // One tab stop for the whole set, arrow keys inside it.\n tabIndex={index === realIndex ? 0 : -1}\n onClick={() => goToIndex(index)}\n className={cx(styles.carouselDot, index === realIndex && styles.carouselDotActive, classNames?.dot)}\n style={slotStyles?.dot}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction buildTrackTransform(position: number, dragPercent: number, slideWidthPercent: number): string {\n return `translateX(calc(${-position * slideWidthPercent}% + ${dragPercent * (slideWidthPercent / 100)}%))`;\n}\n\nfunction clampIndex(index: number, count: number, canLoop: boolean): number {\n if (count === 0) return 0;\n if (canLoop) return ((index % count) + count) % count;\n return Math.max(0, Math.min(count - 1, index));\n}\n\nexport default Carousel;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.module.mjs","names":[],"sources":["../../../../package/common/carousel/carousel.module.pcss"],"sourcesContent":[".carousel {\n position: relative;\n overflow: hidden;\n border-radius: var(--default-border-radius);\n\n &-adaptive {\n transition: height 0.4s ease;\n }\n\n &-track {\n display: flex;\n align-items: stretch;\n transition: transform 0.4s ease;\n touch-action: pan-y;\n user-select: none;\n }\n\n &-trackAdaptive {\n align-items: flex-start;\n }\n\n &-slide {\n flex-shrink: 0;\n box-sizing: border-box;\n }\n\n &-prevButton,\n &-nextButton {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--background-accent);\n color: var(--text-color);\n box-shadow: var(--card-shadow);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n opacity 0.15s,\n background 0.15s;\n\n &:hover {\n background: var(--background-accent-light);\n }\n\n &:focus-visible {\n outline: none;\n box-shadow:\n var(--card-shadow),\n 0 0 0 2px var(--primary-lighter);\n }\n }\n\n &-buttonDisabled {\n opacity: 0.35;\n pointer-events: none;\n }\n\n &-prevButton {\n left: 12px;\n }\n\n &-nextButton {\n right: 12px;\n }\n\n /* A scroll strip rather than a row that shrinks, so the dots keep their size at any slide count.\n The padding holds the outer dots clear of the fade until the strip has somewhere to scroll. */\n &-dots {\n position: absolute;\n bottom: 4px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1;\n display: flex;\n box-sizing: border-box;\n width: max-content;\n max-width: 100%;\n padding-inline: 16px;\n overflow-x: auto;\n overscroll-behavior-x: contain;\n scroll-behavior: smooth;\n -webkit-mask-image: linear-gradient(to right, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%);\n mask-image: linear-gradient(to right, transparent 0, #000 16px, #000 calc(100% - 16px), transparent 100%);\n\n @media (prefers-reduced-motion: reduce) {\n scroll-behavior: auto;\n }\n }\n\n /* ScrollbarProvider reaches every scrollable element through `* { scrollbar-width: thin }`, which\n ties this on specificity and wins on order, so hiding the strip's scrollbar has to outweigh it. */\n & &-dots {\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n /* The dot stays 8px, its padding carries the hit area out to the 24px minimum. */\n &-dot {\n box-sizing: content-box;\n\n /* The strip is width-capped, and shrinking would pull the content box, the only part\n `background-clip` paints, down to nothing. */\n flex-shrink: 0;\n width: 8px;\n height: 8px;\n padding: 8px;\n border-radius: 2000px;\n background: var(--background-accent);\n background-clip: content-box;\n opacity: 0.6;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n opacity 0.15s,\n background 0.15s,\n width 0.15s;\n\n &:hover {\n opacity: 0.85;\n }\n\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--primary-lighter);\n }\n\n &-active {\n background: var(--primary-color);\n background-clip: content-box;\n opacity: 1;\n width: 20px;\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"carousel.module.mjs","names":[],"sources":["../../../../package/common/carousel/carousel.module.pcss"],"sourcesContent":[".carousel {\n position: relative;\n overflow: hidden;\n border-radius: var(--default-border-radius);\n\n &-adaptive {\n transition: height 0.4s ease;\n }\n\n &-track {\n display: flex;\n align-items: stretch;\n transition: transform 0.4s ease;\n touch-action: pan-y;\n user-select: none;\n }\n\n &-trackAdaptive {\n align-items: flex-start;\n }\n\n &-slide {\n flex-shrink: 0;\n box-sizing: border-box;\n }\n\n &-prevButton,\n &-nextButton {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--background-accent);\n color: var(--text-color);\n box-shadow: var(--card-shadow);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n opacity 0.15s,\n background 0.15s;\n\n &:hover {\n background: var(--background-accent-light);\n }\n\n &:focus-visible {\n outline: none;\n box-shadow:\n var(--card-shadow),\n 0 0 0 2px var(--primary-lighter);\n }\n }\n\n &-buttonDisabled {\n opacity: 0.35;\n pointer-events: none;\n }\n\n &-prevButton {\n left: 12px;\n }\n\n &-nextButton {\n right: 12px;\n }\n\n /* A scroll strip rather than a row that shrinks, so the dots keep their size at any slide count.\n The padding holds the outer dots clear of the fade until the strip has somewhere to scroll. */\n &-dots {\n position: absolute;\n bottom: 4px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1;\n display: flex;\n box-sizing: border-box;\n width: max-content;\n max-width: 100%;\n padding-inline: 16px;\n overflow-x: auto;\n overscroll-behavior-x: contain;\n scroll-behavior: smooth;\n\n /* Matches the strip's own `padding-inline`, so the first and last dot start out clear of the\n fade. The shared sheet's private length, not `--scroll-fade-length`, which would inherit. */\n --custom-scroll-fade-length: 16px;\n\n @media (prefers-reduced-motion: reduce) {\n scroll-behavior: auto;\n }\n }\n\n /* ScrollbarProvider reaches every scrollable element through `* { scrollbar-width: thin }`, which\n ties this on specificity and wins on order, so hiding the strip's scrollbar has to outweigh it. */\n & &-dots {\n scrollbar-width: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n }\n\n /* The dot stays 8px, its padding carries the hit area out to the 24px minimum. */\n &-dot {\n box-sizing: content-box;\n\n /* The strip is width-capped, and shrinking would pull the content box, the only part\n `background-clip` paints, down to nothing. */\n flex-shrink: 0;\n width: 8px;\n height: 8px;\n padding: 8px;\n border-radius: 2000px;\n background: var(--background-accent);\n background-clip: content-box;\n opacity: 0.6;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n transition:\n opacity 0.15s,\n background 0.15s,\n width 0.15s;\n\n &:hover {\n opacity: 0.85;\n }\n\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--primary-lighter);\n }\n\n &-active {\n background: var(--primary-color);\n background-clip: content-box;\n opacity: 1;\n width: 20px;\n }\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- "use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{useLabels as t}from"../configProvider/useLabels.mjs";import{ButtonStyleType as n}from"../button/button.types.mjs";import r from"../actionButtons/actionButtons.mjs";import i from"../modal/modal.mjs";import{useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";var c={submit:`Confirm`,cancel:`Cancel`};function l(l){let{children:u=null,className:d=``,onClose:f=()=>{},onConfirm:p=()=>{},title:m=``,content:h=null,isOpen:g=void 0,labels:_,isDelete:v=!1,actionButtonsProps:y={},style:b,...x}=e(`ConfirmModal`,l),S=t(`ConfirmModal`,_,c),[C,w]=a(!1),[T,E]=a(!1);function D(e=!1){w(!1),f(e)}async function O(){E(!0);try{await p(),D(!0)}catch{}finally{E(!1)}}let k=s(i,{title:m,isOpen:g===void 0?C:g,onClose:()=>D(),className:u?void 0:d,children:[h,o(r,{onClose:()=>D(),onSubmit:O,labels:{submit:S.submit,cancel:S.cancel},submitButtonStyle:v?n.Delete:void 0,isSubmitButtonLoading:T,...y})]});return u?s(`div`,{...x,className:d,style:b,children:[o(`span`,{onClick:()=>w(!0),children:u}),k]}):k}export{l as default};
1
+ "use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{useLabels as t}from"../configProvider/useLabels.mjs";import{ButtonStyleType as n}from"../button/button.types.mjs";import r from"../actionButtons/actionButtons.mjs";import i from"../modal/modal.mjs";import{useState as a}from"react";import{jsx as o,jsxs as s}from"react/jsx-runtime";var c={submit:`Confirm`,cancel:`Cancel`};function l(l){let{children:u=null,className:d=``,onClose:f=()=>{},onConfirm:p=()=>{},title:m=``,content:h=null,isOpen:g=void 0,labels:_,isDelete:v=!1,actionButtonsProps:y={},style:b,...x}=e(`ConfirmModal`,l),S=t(`ConfirmModal`,_,c),[C,w]=a(!1),[T,E]=a(!1);function D(e=!1){w(!1),f(e)}async function O(){E(!0);try{await p(),D(!0)}catch{}finally{E(!1)}}let k=o(i,{title:m,isOpen:g===void 0?C:g,onClose:()=>D(),className:u?void 0:d,footer:o(r,{onClose:()=>D(),onSubmit:O,labels:{submit:S.submit,cancel:S.cancel},submitButtonStyle:v?n.Delete:void 0,isSubmitButtonLoading:T,noMargin:!0,...y}),children:h});return u?s(`div`,{...x,className:d,style:b,children:[o(`span`,{onClick:()=>w(!0),children:u}),k]}):k}export{l as default};
2
2
  //# sourceMappingURL=confirmModal.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirmModal.mjs","names":[],"sources":["../../../../package/common/confirmModal/confirmModal.tsx"],"sourcesContent":["import { useState, type ReactElement } from 'react';\n\nimport Modal from '../modal';\nimport { ActionButtons } from '../actionButtons';\nimport { ButtonStyleType } from '../button';\nimport { useComponentDefaults, useLabels } from '../configProvider';\nimport type { ConfirmModalLabels, ConfirmModalProps } from './confirmModal.types';\n\nconst DEFAULT_LABELS: Required<ConfirmModalLabels> = {\n submit: 'Confirm',\n cancel: 'Cancel',\n};\n\nfunction ConfirmModal(props: ConfirmModalProps): ReactElement {\n const {\n children = null,\n className = '',\n onClose = () => {},\n onConfirm = () => {},\n title = '',\n content = null,\n isOpen: propIsOpen = undefined,\n labels,\n isDelete = false,\n actionButtonsProps = {},\n style,\n ...rest\n } = useComponentDefaults('ConfirmModal', props);\n const text = useLabels('ConfirmModal', labels, DEFAULT_LABELS);\n const [internalOpen, setInternalOpen] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n function handleClose(didSubmit = false) {\n setInternalOpen(false);\n onClose(didSubmit);\n }\n\n async function handleConfirm() {\n setIsSubmitting(true);\n try {\n await onConfirm();\n handleClose(true);\n } catch {\n // Nothing is awaiting this handler, so a rejection would surface as an unhandled one.\n // The dialog staying open is the signal that the action did not go through; reporting\n // the failure itself belongs to whoever wrote `onConfirm`.\n } finally {\n setIsSubmitting(false);\n }\n }\n\n const isOpen = propIsOpen === undefined ? internalOpen : propIsOpen;\n\n const modal = (\n <Modal title={title} isOpen={isOpen} onClose={() => handleClose()} className={children ? undefined : className}>\n {content}\n <ActionButtons\n onClose={() => handleClose()}\n onSubmit={handleConfirm}\n labels={{ submit: text.submit, cancel: text.cancel }}\n submitButtonStyle={isDelete ? ButtonStyleType.Delete : undefined}\n isSubmitButtonLoading={isSubmitting}\n {...actionButtonsProps}\n />\n </Modal>\n );\n\n if (!children) return modal;\n\n return (\n <div {...rest} className={className} style={style}>\n <span onClick={() => setInternalOpen(true)}>{children}</span>\n {modal}\n </div>\n );\n}\n\nexport default ConfirmModal;\n"],"mappings":"+XAQA,IAAM,EAA+C,CACnD,OAAQ,UACR,OAAQ,QACV,EAEA,SAAS,EAAa,EAAwC,CAC5D,GAAM,CACJ,WAAW,KACX,YAAY,GACZ,cAAgB,CAAC,EACjB,gBAAkB,CAAC,EACnB,QAAQ,GACR,UAAU,KACV,OAAQ,EAAa,IAAA,GACrB,SACA,WAAW,GACX,qBAAqB,CAAC,EACtB,QACA,GAAG,GACD,EAAqB,eAAgB,CAAK,EACxC,EAAO,EAAU,eAAgB,EAAQ,CAAc,EACvD,CAAC,EAAc,GAAmB,EAAS,EAAK,EAChD,CAAC,EAAc,GAAmB,EAAS,EAAK,EAEtD,SAAS,EAAY,EAAY,GAAO,CACtC,EAAgB,EAAK,EACrB,EAAQ,CAAS,CACnB,CAEA,eAAe,GAAgB,CAC7B,EAAgB,EAAI,EACpB,GAAI,CACF,MAAM,EAAU,EAChB,EAAY,EAAI,CAClB,MAAQ,CAIR,QAAU,CACR,EAAgB,EAAK,CACvB,CACF,CAIA,IAAM,EACJ,EAAC,EAAD,CAAc,QAAe,OAHhB,IAAe,IAAA,GAAY,EAAe,EAGlB,YAAe,EAAY,EAAG,UAAW,EAAW,IAAA,GAAY,EAArG,SAAA,CACG,EACD,EAAC,EAAD,CACE,YAAe,EAAY,EAC3B,SAAU,EACV,OAAQ,CAAE,OAAQ,EAAK,OAAQ,OAAQ,EAAK,MAAO,EACnD,kBAAmB,EAAW,EAAgB,OAAS,IAAA,GACvD,sBAAuB,EACvB,GAAI,CACL,CAAA,CACI,IAKT,OAFK,EAGH,EAAC,MAAD,CAAK,GAAI,EAAiB,YAAkB,QAA5C,SAAA,CACE,EAAC,OAAD,CAAM,YAAe,EAAgB,EAAI,EAAI,UAAe,CAAA,EAC3D,CACE,IANe,CAQxB"}
1
+ {"version":3,"file":"confirmModal.mjs","names":[],"sources":["../../../../package/common/confirmModal/confirmModal.tsx"],"sourcesContent":["import { useState, type ReactElement } from 'react';\n\nimport Modal from '../modal';\nimport { ActionButtons } from '../actionButtons';\nimport { ButtonStyleType } from '../button';\nimport { useComponentDefaults, useLabels } from '../configProvider';\nimport type { ConfirmModalLabels, ConfirmModalProps } from './confirmModal.types';\n\nconst DEFAULT_LABELS: Required<ConfirmModalLabels> = {\n submit: 'Confirm',\n cancel: 'Cancel',\n};\n\nfunction ConfirmModal(props: ConfirmModalProps): ReactElement {\n const {\n children = null,\n className = '',\n onClose = () => {},\n onConfirm = () => {},\n title = '',\n content = null,\n isOpen: propIsOpen = undefined,\n labels,\n isDelete = false,\n actionButtonsProps = {},\n style,\n ...rest\n } = useComponentDefaults('ConfirmModal', props);\n const text = useLabels('ConfirmModal', labels, DEFAULT_LABELS);\n const [internalOpen, setInternalOpen] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n function handleClose(didSubmit = false) {\n setInternalOpen(false);\n onClose(didSubmit);\n }\n\n async function handleConfirm() {\n setIsSubmitting(true);\n try {\n await onConfirm();\n handleClose(true);\n } catch {\n // Nothing is awaiting this handler, so a rejection would surface as an unhandled one.\n // The dialog staying open is the signal that the action did not go through; reporting\n // the failure itself belongs to whoever wrote `onConfirm`.\n } finally {\n setIsSubmitting(false);\n }\n }\n\n const isOpen = propIsOpen === undefined ? internalOpen : propIsOpen;\n\n const modal = (\n <Modal\n title={title}\n isOpen={isOpen}\n onClose={() => handleClose()}\n className={children ? undefined : className}\n footer={\n <ActionButtons\n onClose={() => handleClose()}\n onSubmit={handleConfirm}\n labels={{ submit: text.submit, cancel: text.cancel }}\n submitButtonStyle={isDelete ? ButtonStyleType.Delete : undefined}\n isSubmitButtonLoading={isSubmitting}\n // The footer slot already supplies the gap above the buttons.\n noMargin\n {...actionButtonsProps}\n />\n }\n >\n {content}\n </Modal>\n );\n\n if (!children) return modal;\n\n return (\n <div {...rest} className={className} style={style}>\n <span onClick={() => setInternalOpen(true)}>{children}</span>\n {modal}\n </div>\n );\n}\n\nexport default ConfirmModal;\n"],"mappings":"+XAQA,IAAM,EAA+C,CACnD,OAAQ,UACR,OAAQ,QACV,EAEA,SAAS,EAAa,EAAwC,CAC5D,GAAM,CACJ,WAAW,KACX,YAAY,GACZ,cAAgB,CAAC,EACjB,gBAAkB,CAAC,EACnB,QAAQ,GACR,UAAU,KACV,OAAQ,EAAa,IAAA,GACrB,SACA,WAAW,GACX,qBAAqB,CAAC,EACtB,QACA,GAAG,GACD,EAAqB,eAAgB,CAAK,EACxC,EAAO,EAAU,eAAgB,EAAQ,CAAc,EACvD,CAAC,EAAc,GAAmB,EAAS,EAAK,EAChD,CAAC,EAAc,GAAmB,EAAS,EAAK,EAEtD,SAAS,EAAY,EAAY,GAAO,CACtC,EAAgB,EAAK,EACrB,EAAQ,CAAS,CACnB,CAEA,eAAe,GAAgB,CAC7B,EAAgB,EAAI,EACpB,GAAI,CACF,MAAM,EAAU,EAChB,EAAY,EAAI,CAClB,MAAQ,CAIR,QAAU,CACR,EAAgB,EAAK,CACvB,CACF,CAIA,IAAM,EACJ,EAAC,EAAD,CACS,QACC,OALG,IAAe,IAAA,GAAY,EAAe,EAMrD,YAAe,EAAY,EAC3B,UAAW,EAAW,IAAA,GAAY,EAClC,OACE,EAAC,EAAD,CACE,YAAe,EAAY,EAC3B,SAAU,EACV,OAAQ,CAAE,OAAQ,EAAK,OAAQ,OAAQ,EAAK,MAAO,EACnD,kBAAmB,EAAW,EAAgB,OAAS,IAAA,GACvD,sBAAuB,EAEvB,SAAA,GACA,GAAI,CACL,CAAA,EAGF,SAAA,CACI,CAAA,EAKT,OAFK,EAGH,EAAC,MAAD,CAAK,GAAI,EAAiB,YAAkB,QAA5C,SAAA,CACE,EAAC,OAAD,CAAM,YAAe,EAAgB,EAAI,EAAI,UAAe,CAAA,EAC3D,CACE,IANe,CAQxB"}
@@ -1,2 +1,2 @@
1
- "use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import t from"../button/button.mjs";import n from"../actionIcon/actionIcon.mjs";import{PopoverAlign as r,PopoverPlacement as i}from"../popover/popover.types.mjs";import ee from"../popover/popover.mjs";import te from"../tooltip/tooltip.mjs";import ne from"../input/input.mjs";import a from"../modal/modal.mjs";import{getLocale as o}from"../../services/localization.mjs";import{correctDateMaskValue as re,getDateFromDayMonthAndYear as ie,getDateString as s,getMonthName as ae,getMonthNames as oe}from"./dateFunctions.mjs";import se from"./components/datePickerMonth/datePickerMonth.mjs";import c from"../dropdown/dropdown.mjs";import l from"./datePicker.module.mjs";import{useEffect as ce,useRef as le,useState as u}from"react";import d from"classnames";import{faChevronLeft as f,faChevronRight as p}from"@fortawesome/free-solid-svg-icons";import{Fragment as m,jsx as h,jsxs as g}from"react/jsx-runtime";import ue from"@mona-health/react-input-mask";function _(_){let{className:de=``,selected:v,onSelect:fe=()=>null,formValidator:y=null,noInput:pe=!1,noHeader:me=!1,isModal:b=!1,isInline:x=!1,onChange:he=()=>null,minDate:S=null,maxDate:C=null,children:ge=null,showClearButton:_e=!1,label:ve=``,isValid:ye=!0,errorMessage:w=``,isRequired:T=!1,startDate:E,endDate:D,style:O,classNames:k,styles:A,...j}=e(`DatePicker`,_),M=()=>y?y.value:v,N=M()??new Date,[P,F]=u(N.getMonth()+1),[I,L]=u(N.getFullYear()),[R,z]=u(!1),[B,V]=u(()=>M()?s(N):``),[be,H]=u(!1),[xe,U]=u(!1),[,Se]=u(0),[Ce,we]=u(v),W=le(y);if(Ce!==v){we(v);let e=v??new Date;F(e.getMonth()+1),L(e.getFullYear()),V(v?s(v):``)}ce(()=>{if(W.current=y,!y)return;let e=()=>{let e=y.value;e?(F(e.getMonth()+1),L(e.getFullYear()),V(s(e))):V(``),Se(e=>e+1)};return y.registerOnUpdateListener(e),()=>y.removeOnUpdateListener(e)},[y]);let Te=()=>y?y.touched&&y.hasError():!ye||!!w,Ee=()=>!!(T||y?.validators.find(e=>e.validatorId===`required`)),G=e=>{V(e?s(e):``),y&&y.set(e),he(e)},K=e=>{G(e),fe(e),z(!1)},q=e=>{F(t=>{let n=t+e;return n<1?(n=12,L(e=>e-1)):n>12&&(n=1,L(e=>e+1)),n})},J=e=>{if(e.match(/\d{2}\.\d{2}\.\d{4}/gi)){let[t,n,r]=e.split(`.`),i=ie(Number(t),Number(n),Number(r));if(i&&i.toString()!==`Invalid Date`&&(!C||i<=C)&&(!S||i>=S))return i}return null},De=({previousState:e,nextState:t})=>{if(!e||t.value===e.value)return t;let n=re(t.value,e.value,t.selection??null),r=J(n.value);return r&&G(r),n},Y=()=>{let e=400,t=new Date().getFullYear()-200;return S&&(t=S.getFullYear()),C&&(e=C.getFullYear()-t+1),Array.from(Array(e).keys()).map(e=>({key:e+t,label:e+t}))},X=M(),Z=Te(),Oe=me?null:g(`div`,{className:d(l.datePickerHeader,k?.header),style:A?.header,children:[h(n,{icon:f,onClick:()=>q(-1)}),h(`div`,{className:l.datePickerHeaderMonthAndYearContainer,children:g(`div`,{className:l.datePickerHeaderMonthAndYear,children:[h(c,{plainStyle:!0,scrollToSelected:!0,onChange:e=>F(e),className:d(l.datePickerHeaderMonth,k?.monthDropdown),style:A?.monthDropdown,value:ae(o(`-`),I,P,1),items:oe().map((e,t)=>({key:t+1,label:e}))}),h(c,{plainStyle:!0,scrollToSelected:!0,useMatLabelStyle:!1,className:d(l.datePickerHeaderYear,k?.yearDropdown),style:A?.yearDropdown,onChange:e=>L(e),value:I,items:Y()})]})}),h(n,{icon:p,onClick:()=>q(1)})]}),Q=g(m,{children:[Oe,h(se,{className:d(l.datePickerMonth,k?.calendar),style:A?.calendar,month:P,year:I,onSelect:K,selectionStart:E??X,selectionEnd:D??X,minDate:S,maxDate:C,onNavigateMonth:q}),_e&&h(t,{onClick:()=>K(null),className:k?.clearButton,style:A?.clearButton,children:`Clear`}),ge]}),$=pe?null:h(ne,{autoComplete:`off`,className:k?.input,style:A?.input,readOnly:b,classNames:b?{input:l.datePickerModalInput}:void 0,label:`${ve}${Ee()?` *`:``}`,value:B,onChange:e=>V(e),onClick:()=>z(!0),customInput:h(ue,{mask:`99.99.9999`,maskPlaceholder:`_`,beforeMaskedStateChange:De}),onBlur:()=>{W.current&&(W.current.touched=!0),H(!1),G(J(B))},onFocus:()=>H(!0),onMouseEnter:()=>U(!0),onMouseLeave:()=>U(!1),isValid:!Z}),ke=x?Q:b?h(a,{hideHeader:!0,isOpen:R,onClose:()=>z(!1),children:Q}):h(ee,{isOpen:R,onOpenChange:e=>z(e),content:Q,placement:i.Bottom,align:r.Start,closeOnTriggerClick:!1,constrainWidth:!1,children:$});return g(`div`,{...j,className:d(l.datePicker,de,k?.root),style:{...O,...A?.root},children:[(b||x)&&$,ke,h(te,{variant:`error`,message:y?y.getCurrentErrorMessage():w||``,isVisible:Z&&(be||xe)})]})}export{_ as default};
1
+ "use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import t from"../button/button.mjs";import n from"../actionIcon/actionIcon.mjs";import{PopoverAlign as r,PopoverPlacement as i}from"../popover/popover.types.mjs";import ee from"../popover/popover.mjs";import te from"../tooltip/tooltip.mjs";import ne from"../input/input.mjs";import a from"../modal/modal.mjs";import{getLocale as o}from"../../services/localization.mjs";import{correctDateMaskValue as re,getDateFromDayMonthAndYear as ie,getDateString as s,getMonthName as ae,getMonthNames as oe}from"./dateFunctions.mjs";import se from"./components/datePickerMonth/datePickerMonth.mjs";import c from"../dropdown/dropdown.mjs";import ce from"../maskedInput/maskedInput.mjs";import l from"./datePicker.module.mjs";import{useEffect as le,useRef as u,useState as d}from"react";import f from"classnames";import{faChevronLeft as p,faChevronRight as m}from"@fortawesome/free-solid-svg-icons";import{Fragment as ue,jsx as h,jsxs as g}from"react/jsx-runtime";function _(_){let{className:de=``,selected:v,onSelect:fe=()=>null,formValidator:y=null,noInput:pe=!1,noHeader:me=!1,isModal:b=!1,isInline:x=!1,onChange:he=()=>null,minDate:S=null,maxDate:C=null,children:ge=null,showClearButton:_e=!1,label:ve=``,isValid:ye=!0,errorMessage:w=``,isRequired:T=!1,startDate:E,endDate:D,style:O,classNames:k,styles:A,...j}=e(`DatePicker`,_),M=()=>y?y.value:v,N=M()??new Date,[P,F]=d(N.getMonth()+1),[I,L]=d(N.getFullYear()),[R,z]=d(!1),[B,V]=d(()=>M()?s(N):``),[be,H]=d(!1),[xe,U]=d(!1),[,Se]=d(0),[Ce,we]=d(v),W=u(y);if(Ce!==v){we(v);let e=v??new Date;F(e.getMonth()+1),L(e.getFullYear()),V(v?s(v):``)}le(()=>{if(W.current=y,!y)return;let e=()=>{let e=y.value;e?(F(e.getMonth()+1),L(e.getFullYear()),V(s(e))):V(``),Se(e=>e+1)};return y.registerOnUpdateListener(e),()=>y.removeOnUpdateListener(e)},[y]);let Te=()=>y?y.touched&&y.hasError():!ye||!!w,Ee=()=>!!(T||y?.validators.find(e=>e.validatorId===`required`)),G=e=>{V(e?s(e):``),y&&y.set(e),he(e)},K=e=>{G(e),fe(e),z(!1)},q=e=>{F(t=>{let n=t+e;return n<1?(n=12,L(e=>e-1)):n>12&&(n=1,L(e=>e+1)),n})},J=e=>{if(e.match(/\d{2}\.\d{2}\.\d{4}/gi)){let[t,n,r]=e.split(`.`),i=ie(Number(t),Number(n),Number(r));if(i&&i.toString()!==`Invalid Date`&&(!C||i<=C)&&(!S||i>=S))return i}return null},De=({previousState:e,nextState:t})=>{if(t.value===e.value)return t;let n=re(t.value,e.value,t.selection??null),r=J(n.value);return r&&G(r),n},Y=()=>{let e=400,t=new Date().getFullYear()-200;return S&&(t=S.getFullYear()),C&&(e=C.getFullYear()-t+1),Array.from(Array(e).keys()).map(e=>({key:e+t,label:e+t}))},X=M(),Z=Te(),Oe=me?null:g(`div`,{className:f(l.datePickerHeader,k?.header),style:A?.header,children:[h(n,{icon:p,onClick:()=>q(-1)}),h(`div`,{className:l.datePickerHeaderMonthAndYearContainer,children:g(`div`,{className:l.datePickerHeaderMonthAndYear,children:[h(c,{plainStyle:!0,scrollToSelected:!0,onChange:e=>F(e),className:f(l.datePickerHeaderMonth,k?.monthDropdown),style:A?.monthDropdown,value:ae(o(`-`),I,P,1),items:oe().map((e,t)=>({key:t+1,label:e}))}),h(c,{plainStyle:!0,scrollToSelected:!0,useMatLabelStyle:!1,className:f(l.datePickerHeaderYear,k?.yearDropdown),style:A?.yearDropdown,onChange:e=>L(e),value:I,items:Y()})]})}),h(n,{icon:m,onClick:()=>q(1)})]}),Q=g(ue,{children:[Oe,h(se,{className:f(l.datePickerMonth,k?.calendar),style:A?.calendar,month:P,year:I,onSelect:K,selectionStart:E??X,selectionEnd:D??X,minDate:S,maxDate:C,onNavigateMonth:q}),_e&&h(t,{onClick:()=>K(null),className:k?.clearButton,style:A?.clearButton,children:`Clear`}),ge]}),$=pe?null:h(ne,{autoComplete:`off`,className:k?.input,style:A?.input,readOnly:b,classNames:b?{input:l.datePickerModalInput}:void 0,label:`${ve}${Ee()?` *`:``}`,value:B,onChange:e=>V(e),onClick:()=>z(!0),customInput:h(ce,{mask:`99.99.9999`,beforeMaskedStateChange:De}),onBlur:()=>{W.current&&(W.current.touched=!0),H(!1),G(J(B))},onFocus:()=>H(!0),onMouseEnter:()=>U(!0),onMouseLeave:()=>U(!1),isValid:!Z}),ke=x?Q:b?h(a,{hideHeader:!0,isOpen:R,onClose:()=>z(!1),children:Q}):h(ee,{isOpen:R,onOpenChange:e=>z(e),content:Q,placement:i.Bottom,align:r.Start,closeOnTriggerClick:!1,constrainWidth:!1,children:$});return g(`div`,{...j,className:f(l.datePicker,de,k?.root),style:{...O,...A?.root},children:[(b||x)&&$,ke,h(te,{variant:`error`,message:y?y.getCurrentErrorMessage():w||``,isVisible:Z&&(be||xe)})]})}export{_ as default};
2
2
  //# sourceMappingURL=datePicker.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"datePicker.mjs","names":[],"sources":["../../../../package/common/datePicker/datePicker.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport cx from 'classnames';\nimport Input from '../input';\nimport { useComponentDefaults } from '../configProvider';\nimport DatePickerMonth from './components/datePickerMonth';\nimport { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons';\nimport { getLocale } from 'services/localization';\nimport ActionIcon from '../actionIcon';\nimport Modal from '../modal';\nimport Popover from '../popover';\nimport Dropdown from '../dropdown';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport InputMask, { InputState, BeforeMaskedStateChangeStates } from '@mona-health/react-input-mask';\nimport {\n getDateFromDayMonthAndYear,\n getMonthName,\n getMonthNames,\n getDateString,\n correctDateMaskValue,\n} from './dateFunctions';\nimport Button from '../button';\nimport Tooltip from '../tooltip';\nimport type { DatePickerProps } from './datePicker.types';\n\nimport styles from './datePicker.module.pcss';\n\nexport default function DatePicker(props: DatePickerProps) {\n const {\n className = '',\n selected,\n onSelect = () => null,\n formValidator = null,\n noInput = false,\n noHeader = false,\n isModal = false,\n isInline = false,\n onChange = () => null,\n minDate = null,\n maxDate = null,\n children = null,\n showClearButton = false,\n label = '',\n isValid = true,\n errorMessage = '',\n isRequired = false,\n startDate,\n endDate,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('DatePicker', props);\n const getCurrValue = (): Date | undefined => (formValidator ? (formValidator.value as Date) : selected);\n\n const initialDate = getCurrValue() ?? new Date();\n\n const [currentMonth, setCurrentMonth] = useState(initialDate.getMonth() + 1);\n const [currentYear, setCurrentYear] = useState(initialDate.getFullYear());\n const [isPickerOpen, setIsPickerOpen] = useState(false);\n const [currentDateString, setCurrentDateString] = useState(() => (getCurrValue() ? getDateString(initialDate) : ''));\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [, forceUpdate] = useState(0);\n const [prevSelected, setPrevSelected] = useState(selected);\n\n const fvRef = useRef(formValidator);\n\n // Sync navigation view when `selected` prop changes externally\n if (prevSelected !== selected) {\n setPrevSelected(selected);\n const d = selected ?? new Date();\n setCurrentMonth(d.getMonth() + 1);\n setCurrentYear(d.getFullYear());\n setCurrentDateString(selected ? getDateString(selected) : '');\n }\n\n // Subscribe to formValidator updates (external system → setState in callback)\n useEffect(() => {\n fvRef.current = formValidator;\n if (!formValidator) return;\n const listener = () => {\n const val = formValidator.value as Date | undefined;\n if (val) {\n setCurrentMonth(val.getMonth() + 1);\n setCurrentYear(val.getFullYear());\n setCurrentDateString(getDateString(val));\n } else {\n setCurrentDateString('');\n }\n forceUpdate((n: number) => n + 1);\n };\n formValidator.registerOnUpdateListener(listener);\n return () => formValidator.removeOnUpdateListener(listener);\n }, [formValidator]);\n\n const hasError = (): boolean => {\n return formValidator ? formValidator.touched && formValidator.hasError() : !isValid || !!errorMessage;\n };\n\n const computedIsRequired = (): boolean => {\n return !!(\n isRequired || formValidator?.validators.find((v) => (v as { validatorId?: string }).validatorId === 'required')\n );\n };\n\n const handleChange = (date: Date | null) => {\n setCurrentDateString(date ? getDateString(date) : '');\n if (formValidator) formValidator.set(date);\n onChange(date);\n };\n\n const handleSelect = (date: Date | null) => {\n handleChange(date);\n onSelect(date);\n setIsPickerOpen(false);\n };\n\n const changeMonth = (delta: number) => {\n setCurrentMonth((prev) => {\n let next = prev + delta;\n if (next < 1) {\n next = 12;\n setCurrentYear((y) => y - 1);\n } else if (next > 12) {\n next = 1;\n setCurrentYear((y) => y + 1);\n }\n return next;\n });\n };\n\n const tryParseDateString = (dateString: string): Date | null => {\n if (dateString.match(/\\d{2}\\.\\d{2}\\.\\d{4}/gi)) {\n const [day, month, year] = dateString.split('.');\n const parsedDate = getDateFromDayMonthAndYear(Number(day), Number(month), Number(year));\n if (parsedDate && parsedDate.toString() !== 'Invalid Date') {\n const isSmallerThanMaxDate = !maxDate || parsedDate <= maxDate;\n const isBiggerThanMinDate = !minDate || parsedDate >= minDate;\n if (isSmallerThanMaxDate && isBiggerThanMinDate) return parsedDate;\n }\n }\n return null;\n };\n\n const beforeMaskedStateChange = ({ previousState, nextState }: BeforeMaskedStateChangeStates): InputState => {\n // previousState is only supplied on user-driven change events; on mount/focus/blur\n // there is nothing to auto-correct, so the next state passes through unchanged.\n if (!previousState || nextState.value === previousState.value) return nextState;\n\n const corrected = correctDateMaskValue(nextState.value, previousState.value, nextState.selection ?? null);\n\n const parsedDate = tryParseDateString(corrected.value);\n if (parsedDate) handleChange(parsedDate);\n\n return corrected;\n };\n\n const getYearDropdownOptions = () => {\n let length = 400;\n let zeroOffset = new Date().getFullYear() - 200;\n if (minDate) zeroOffset = minDate.getFullYear();\n if (maxDate) length = maxDate.getFullYear() - zeroOffset + 1;\n return Array.from(Array(length).keys()).map((i) => ({ key: i + zeroOffset, label: i + zeroOffset }));\n };\n\n const currValue = getCurrValue();\n const hasErr = hasError();\n\n const header = noHeader ? null : (\n <div className={cx(styles.datePickerHeader, classNames?.header)} style={slotStyles?.header}>\n <ActionIcon icon={faChevronLeft} onClick={() => changeMonth(-1)} />\n <div className={styles.datePickerHeaderMonthAndYearContainer}>\n <div className={styles.datePickerHeaderMonthAndYear}>\n <Dropdown\n plainStyle\n scrollToSelected\n onChange={(v) => setCurrentMonth(v as number)}\n className={cx(styles.datePickerHeaderMonth, classNames?.monthDropdown)}\n style={slotStyles?.monthDropdown}\n value={getMonthName(getLocale('-'), currentYear, currentMonth, 1)}\n items={getMonthNames().map((month, index) => ({ key: index + 1, label: month }))}\n />\n <Dropdown\n plainStyle\n scrollToSelected\n useMatLabelStyle={false}\n className={cx(styles.datePickerHeaderYear, classNames?.yearDropdown)}\n style={slotStyles?.yearDropdown}\n onChange={(v) => setCurrentYear(v as number)}\n value={currentYear}\n items={getYearDropdownOptions()}\n />\n </div>\n </div>\n <ActionIcon icon={faChevronRight} onClick={() => changeMonth(1)} />\n </div>\n );\n\n const pickerContent = (\n <>\n {header}\n <DatePickerMonth\n className={cx(styles.datePickerMonth, classNames?.calendar)}\n style={slotStyles?.calendar}\n month={currentMonth}\n year={currentYear}\n onSelect={handleSelect}\n selectionStart={startDate ?? currValue}\n selectionEnd={endDate ?? currValue}\n minDate={minDate}\n maxDate={maxDate}\n onNavigateMonth={changeMonth}\n />\n {showClearButton && (\n <Button onClick={() => handleSelect(null)} className={classNames?.clearButton} style={slotStyles?.clearButton}>\n Clear\n </Button>\n )}\n {children}\n </>\n );\n\n const input = noInput ? null : (\n <Input\n autoComplete='off'\n className={classNames?.input}\n style={slotStyles?.input}\n readOnly={isModal}\n classNames={isModal ? { input: styles.datePickerModalInput } : undefined}\n label={`${label}${computedIsRequired() ? ' *' : ''}`}\n value={currentDateString}\n onChange={(v) => setCurrentDateString(v as string)}\n onClick={() => setIsPickerOpen(true)}\n customInput={\n <InputMask mask='99.99.9999' maskPlaceholder='_' beforeMaskedStateChange={beforeMaskedStateChange} />\n }\n onBlur={() => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n handleChange(tryParseDateString(currentDateString));\n }}\n onFocus={() => setIsFocused(true)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n isValid={!hasErr}\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={(open: boolean) => setIsPickerOpen(open)}\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 {...rest}\n className={cx(styles.datePicker, className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\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":"datePicker.mjs","names":[],"sources":["../../../../package/common/datePicker/datePicker.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport cx from 'classnames';\nimport Input from '../input';\nimport { useComponentDefaults } from '../configProvider';\nimport DatePickerMonth from './components/datePickerMonth';\nimport { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons';\nimport { getLocale } from 'services/localization';\nimport ActionIcon from '../actionIcon';\nimport Modal from '../modal';\nimport Popover from '../popover';\nimport Dropdown from '../dropdown';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport MaskedInput from '../maskedInput';\nimport type { BeforeMaskedStateChangeStates, MaskState } from '../maskedInput';\nimport {\n getDateFromDayMonthAndYear,\n getMonthName,\n getMonthNames,\n getDateString,\n correctDateMaskValue,\n} from './dateFunctions';\nimport Button from '../button';\nimport Tooltip from '../tooltip';\nimport type { DatePickerProps } from './datePicker.types';\n\nimport styles from './datePicker.module.pcss';\n\nexport default function DatePicker(props: DatePickerProps) {\n const {\n className = '',\n selected,\n onSelect = () => null,\n formValidator = null,\n noInput = false,\n noHeader = false,\n isModal = false,\n isInline = false,\n onChange = () => null,\n minDate = null,\n maxDate = null,\n children = null,\n showClearButton = false,\n label = '',\n isValid = true,\n errorMessage = '',\n isRequired = false,\n startDate,\n endDate,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('DatePicker', props);\n const getCurrValue = (): Date | undefined => (formValidator ? (formValidator.value as Date) : selected);\n\n const initialDate = getCurrValue() ?? new Date();\n\n const [currentMonth, setCurrentMonth] = useState(initialDate.getMonth() + 1);\n const [currentYear, setCurrentYear] = useState(initialDate.getFullYear());\n const [isPickerOpen, setIsPickerOpen] = useState(false);\n const [currentDateString, setCurrentDateString] = useState(() => (getCurrValue() ? getDateString(initialDate) : ''));\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n const [, forceUpdate] = useState(0);\n const [prevSelected, setPrevSelected] = useState(selected);\n\n const fvRef = useRef(formValidator);\n\n // Sync navigation view when `selected` prop changes externally\n if (prevSelected !== selected) {\n setPrevSelected(selected);\n const d = selected ?? new Date();\n setCurrentMonth(d.getMonth() + 1);\n setCurrentYear(d.getFullYear());\n setCurrentDateString(selected ? getDateString(selected) : '');\n }\n\n // Subscribe to formValidator updates (external system → setState in callback)\n useEffect(() => {\n fvRef.current = formValidator;\n if (!formValidator) return;\n const listener = () => {\n const val = formValidator.value as Date | undefined;\n if (val) {\n setCurrentMonth(val.getMonth() + 1);\n setCurrentYear(val.getFullYear());\n setCurrentDateString(getDateString(val));\n } else {\n setCurrentDateString('');\n }\n forceUpdate((n: number) => n + 1);\n };\n formValidator.registerOnUpdateListener(listener);\n return () => formValidator.removeOnUpdateListener(listener);\n }, [formValidator]);\n\n const hasError = (): boolean => {\n return formValidator ? formValidator.touched && formValidator.hasError() : !isValid || !!errorMessage;\n };\n\n const computedIsRequired = (): boolean => {\n return !!(\n isRequired || formValidator?.validators.find((v) => (v as { validatorId?: string }).validatorId === 'required')\n );\n };\n\n const handleChange = (date: Date | null) => {\n setCurrentDateString(date ? getDateString(date) : '');\n if (formValidator) formValidator.set(date);\n onChange(date);\n };\n\n const handleSelect = (date: Date | null) => {\n handleChange(date);\n onSelect(date);\n setIsPickerOpen(false);\n };\n\n const changeMonth = (delta: number) => {\n setCurrentMonth((prev) => {\n let next = prev + delta;\n if (next < 1) {\n next = 12;\n setCurrentYear((y) => y - 1);\n } else if (next > 12) {\n next = 1;\n setCurrentYear((y) => y + 1);\n }\n return next;\n });\n };\n\n const tryParseDateString = (dateString: string): Date | null => {\n if (dateString.match(/\\d{2}\\.\\d{2}\\.\\d{4}/gi)) {\n const [day, month, year] = dateString.split('.');\n const parsedDate = getDateFromDayMonthAndYear(Number(day), Number(month), Number(year));\n if (parsedDate && parsedDate.toString() !== 'Invalid Date') {\n const isSmallerThanMaxDate = !maxDate || parsedDate <= maxDate;\n const isBiggerThanMinDate = !minDate || parsedDate >= minDate;\n if (isSmallerThanMaxDate && isBiggerThanMinDate) return parsedDate;\n }\n }\n return null;\n };\n\n const beforeMaskedStateChange = ({ previousState, nextState }: BeforeMaskedStateChangeStates): MaskState => {\n // A change that moved nothing needs no correcting, and re-running the day/month padding on\n // an unchanged value would fight the caret the mask just placed.\n if (nextState.value === previousState.value) return nextState;\n\n const corrected = correctDateMaskValue(nextState.value, previousState.value, nextState.selection ?? null);\n\n const parsedDate = tryParseDateString(corrected.value);\n if (parsedDate) handleChange(parsedDate);\n\n return corrected;\n };\n\n const getYearDropdownOptions = () => {\n let length = 400;\n let zeroOffset = new Date().getFullYear() - 200;\n if (minDate) zeroOffset = minDate.getFullYear();\n if (maxDate) length = maxDate.getFullYear() - zeroOffset + 1;\n return Array.from(Array(length).keys()).map((i) => ({ key: i + zeroOffset, label: i + zeroOffset }));\n };\n\n const currValue = getCurrValue();\n const hasErr = hasError();\n\n const header = noHeader ? null : (\n <div className={cx(styles.datePickerHeader, classNames?.header)} style={slotStyles?.header}>\n <ActionIcon icon={faChevronLeft} onClick={() => changeMonth(-1)} />\n <div className={styles.datePickerHeaderMonthAndYearContainer}>\n <div className={styles.datePickerHeaderMonthAndYear}>\n <Dropdown\n plainStyle\n scrollToSelected\n onChange={(v) => setCurrentMonth(v as number)}\n className={cx(styles.datePickerHeaderMonth, classNames?.monthDropdown)}\n style={slotStyles?.monthDropdown}\n value={getMonthName(getLocale('-'), currentYear, currentMonth, 1)}\n items={getMonthNames().map((month, index) => ({ key: index + 1, label: month }))}\n />\n <Dropdown\n plainStyle\n scrollToSelected\n useMatLabelStyle={false}\n className={cx(styles.datePickerHeaderYear, classNames?.yearDropdown)}\n style={slotStyles?.yearDropdown}\n onChange={(v) => setCurrentYear(v as number)}\n value={currentYear}\n items={getYearDropdownOptions()}\n />\n </div>\n </div>\n <ActionIcon icon={faChevronRight} onClick={() => changeMonth(1)} />\n </div>\n );\n\n const pickerContent = (\n <>\n {header}\n <DatePickerMonth\n className={cx(styles.datePickerMonth, classNames?.calendar)}\n style={slotStyles?.calendar}\n month={currentMonth}\n year={currentYear}\n onSelect={handleSelect}\n selectionStart={startDate ?? currValue}\n selectionEnd={endDate ?? currValue}\n minDate={minDate}\n maxDate={maxDate}\n onNavigateMonth={changeMonth}\n />\n {showClearButton && (\n <Button onClick={() => handleSelect(null)} className={classNames?.clearButton} style={slotStyles?.clearButton}>\n Clear\n </Button>\n )}\n {children}\n </>\n );\n\n const input = noInput ? null : (\n <Input\n autoComplete='off'\n className={classNames?.input}\n style={slotStyles?.input}\n readOnly={isModal}\n classNames={isModal ? { input: styles.datePickerModalInput } : undefined}\n label={`${label}${computedIsRequired() ? ' *' : ''}`}\n value={currentDateString}\n onChange={(v) => setCurrentDateString(v as string)}\n onClick={() => setIsPickerOpen(true)}\n customInput={<MaskedInput mask='99.99.9999' beforeMaskedStateChange={beforeMaskedStateChange} />}\n onBlur={() => {\n if (fvRef.current) fvRef.current.touched = true;\n setIsFocused(false);\n handleChange(tryParseDateString(currentDateString));\n }}\n onFocus={() => setIsFocused(true)}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n isValid={!hasErr}\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={(open: boolean) => setIsPickerOpen(open)}\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 {...rest}\n className={cx(styles.datePicker, className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\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 +1 @@
1
- {"version":3,"file":"drawer.module.mjs","names":[],"sources":["../../../../package/common/drawer/drawer.module.pcss"],"sourcesContent":[".drawer {\n height: 100%;\n overflow-x: hidden;\n width: var(--drawer-closed-width, 0);\n transition: width 0.3s ease;\n background: var(--background-accent);\n\n &-open {\n width: var(--drawer-opened-width, var(--drawer-content-width, max-content));\n }\n\n &-content {\n width: max-content;\n height: 100%;\n pointer-events: all;\n\n &-inner {\n height: 100%;\n }\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"drawer.module.mjs","names":[],"sources":["../../../../package/common/drawer/drawer.module.pcss"],"sourcesContent":[".drawer {\n height: 100%;\n overflow-x: hidden;\n width: var(--drawer-closed-width, 0);\n transition: width 0.3s ease;\n background: var(--background-accent);\n\n &-open {\n width: var(--drawer-opened-width, var(--drawer-content-width, max-content));\n }\n\n &-content {\n width: max-content;\n height: 100%;\n pointer-events: all;\n\n &-inner {\n height: 100%;\n }\n }\n}\n\n/* Opening and closing then snaps to the new width instead of sliding to it. */\n@media (prefers-reduced-motion: reduce) {\n .drawer {\n transition: none;\n }\n}\n"],"mappings":""}