@banzamel/mineralui 2.4.3 → 2.5.2

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 (545) hide show
  1. package/README.md +1 -1
  2. package/dist/MAvatar-CvQuiGvT.cjs +2 -0
  3. package/dist/MAvatar-CvQuiGvT.cjs.map +1 -0
  4. package/dist/MAvatar-EkOBrEtS.js +73 -0
  5. package/dist/MAvatar-EkOBrEtS.js.map +1 -0
  6. package/dist/MButton-BxEky3xQ.cjs +2 -0
  7. package/dist/MButton-BxEky3xQ.cjs.map +1 -0
  8. package/dist/MButton-KELyyBw1.js +123 -0
  9. package/dist/MButton-KELyyBw1.js.map +1 -0
  10. package/dist/{MButtonGroup-BEJxXZ8u.js → MButtonGroup-DDnn8Wfy.js} +3 -3
  11. package/dist/{MButtonGroup-BEJxXZ8u.js.map → MButtonGroup-DDnn8Wfy.js.map} +1 -1
  12. package/dist/{MButtonGroup-DO1Tq3Za.cjs → MButtonGroup-Dz8Fm-oA.cjs} +2 -2
  13. package/dist/{MButtonGroup-DO1Tq3Za.cjs.map → MButtonGroup-Dz8Fm-oA.cjs.map} +1 -1
  14. package/dist/{MCard-P8OoswWM.cjs → MCard-Bqm4BjK_.cjs} +2 -2
  15. package/dist/MCard-Bqm4BjK_.cjs.map +1 -0
  16. package/dist/{MCard-BqSkGAgf.js → MCard-CqZYGaS2.js} +4 -4
  17. package/dist/MCard-CqZYGaS2.js.map +1 -0
  18. package/dist/MCheckbox-CaWgyUn5.js +72 -0
  19. package/dist/MCheckbox-CaWgyUn5.js.map +1 -0
  20. package/dist/MCheckbox-DpKJpnFF.cjs +2 -0
  21. package/dist/MCheckbox-DpKJpnFF.cjs.map +1 -0
  22. package/dist/{MConflictIllustration-znC7ijmP.js → MConflictIllustration-dwZS44ye.js} +1517 -1515
  23. package/dist/MConflictIllustration-dwZS44ye.js.map +1 -0
  24. package/dist/MConflictIllustration-vfHs-jad.cjs +2 -0
  25. package/dist/MConflictIllustration-vfHs-jad.cjs.map +1 -0
  26. package/dist/MDetailList-C3othNs3.js +127 -0
  27. package/dist/MDetailList-C3othNs3.js.map +1 -0
  28. package/dist/MDetailList-DkDHLdJ8.cjs +2 -0
  29. package/dist/MDetailList-DkDHLdJ8.cjs.map +1 -0
  30. package/dist/MDropdownMenu-C4-r7UZM.cjs +2 -0
  31. package/dist/MDropdownMenu-C4-r7UZM.cjs.map +1 -0
  32. package/dist/MDropdownMenu-Dvg9UsHB.js +219 -0
  33. package/dist/MDropdownMenu-Dvg9UsHB.js.map +1 -0
  34. package/dist/MGrid-CQqT8nHi.js +271 -0
  35. package/dist/MGrid-CQqT8nHi.js.map +1 -0
  36. package/dist/MGrid-tBsqShLG.cjs +2 -0
  37. package/dist/MGrid-tBsqShLG.cjs.map +1 -0
  38. package/dist/MHeading-DQSQ8c7L.js +21 -0
  39. package/dist/MHeading-DQSQ8c7L.js.map +1 -0
  40. package/dist/MHeading-DiGYs1FJ.cjs +2 -0
  41. package/dist/MHeading-DiGYs1FJ.cjs.map +1 -0
  42. package/dist/MInput-BeEGufZG.cjs +2 -0
  43. package/dist/MInput-BeEGufZG.cjs.map +1 -0
  44. package/dist/MInput-QnQV9L8U.js +190 -0
  45. package/dist/MInput-QnQV9L8U.js.map +1 -0
  46. package/dist/MInputCVC-CCNRAqHw.cjs +2 -0
  47. package/dist/MInputCVC-CCNRAqHw.cjs.map +1 -0
  48. package/dist/MInputCVC-IXIYZwex.js +410 -0
  49. package/dist/MInputCVC-IXIYZwex.js.map +1 -0
  50. package/dist/MInputSearch-BSIc6m2P.cjs +2 -0
  51. package/dist/MInputSearch-BSIc6m2P.cjs.map +1 -0
  52. package/dist/MInputSearch-CNuTAbYs.js +44 -0
  53. package/dist/MInputSearch-CNuTAbYs.js.map +1 -0
  54. package/dist/{MKbd-BR1GX5oK.cjs → MKbd-CnW3NUIu.cjs} +2 -2
  55. package/dist/{MKbd-BR1GX5oK.cjs.map → MKbd-CnW3NUIu.cjs.map} +1 -1
  56. package/dist/{MKbd-COb7oh_k.js → MKbd-DjfGyajR.js} +2 -2
  57. package/dist/{MKbd-COb7oh_k.js.map → MKbd-DjfGyajR.js.map} +1 -1
  58. package/dist/MLink-C6uwA6db.cjs +2 -0
  59. package/dist/MLink-C6uwA6db.cjs.map +1 -0
  60. package/dist/MLink-ixg0xFFI.js +31 -0
  61. package/dist/MLink-ixg0xFFI.js.map +1 -0
  62. package/dist/MLoader-CViA3zBo.js +44 -0
  63. package/dist/MLoader-CViA3zBo.js.map +1 -0
  64. package/dist/MLoader-DUOoOoNE.cjs +2 -0
  65. package/dist/MLoader-DUOoOoNE.cjs.map +1 -0
  66. package/dist/MPagination-BTGenxWW.js +122 -0
  67. package/dist/MPagination-BTGenxWW.js.map +1 -0
  68. package/dist/MPagination-DitmdtCc.cjs +2 -0
  69. package/dist/MPagination-DitmdtCc.cjs.map +1 -0
  70. package/dist/MPopover-CBDbUOW6.js +183 -0
  71. package/dist/MPopover-CBDbUOW6.js.map +1 -0
  72. package/dist/MPopover-ZeoU9hb5.cjs +2 -0
  73. package/dist/MPopover-ZeoU9hb5.cjs.map +1 -0
  74. package/dist/{MSimpleGrid-Ui8cI0ho.js → MSimpleGrid-C_QvLmck.js} +3 -3
  75. package/dist/MSimpleGrid-C_QvLmck.js.map +1 -0
  76. package/dist/MSimpleGrid-wgvjnxwM.cjs +2 -0
  77. package/dist/MSimpleGrid-wgvjnxwM.cjs.map +1 -0
  78. package/dist/{MSkeleton-Dhu-loDO.js → MSkeleton-BpcpBBJq.js} +12 -10
  79. package/dist/MSkeleton-BpcpBBJq.js.map +1 -0
  80. package/dist/MSkeleton-DuAN8Vcv.cjs +2 -0
  81. package/dist/MSkeleton-DuAN8Vcv.cjs.map +1 -0
  82. package/dist/MSlider-CLASUc2H.js +134 -0
  83. package/dist/MSlider-CLASUc2H.js.map +1 -0
  84. package/dist/MSlider-hONQBulE.cjs +2 -0
  85. package/dist/MSlider-hONQBulE.cjs.map +1 -0
  86. package/dist/MStack-BwAFeGGg.js +39 -0
  87. package/dist/MStack-BwAFeGGg.js.map +1 -0
  88. package/dist/MStack-CGII4A-q.cjs +2 -0
  89. package/dist/MStack-CGII4A-q.cjs.map +1 -0
  90. package/dist/MSubText-BeZk-fhz.js +17 -0
  91. package/dist/MSubText-BeZk-fhz.js.map +1 -0
  92. package/dist/MSubText-Dl1PfToZ.cjs +2 -0
  93. package/dist/MSubText-Dl1PfToZ.cjs.map +1 -0
  94. package/dist/MSurface-B_QnRLr5.js +74 -0
  95. package/dist/MSurface-B_QnRLr5.js.map +1 -0
  96. package/dist/MSurface-BrFo-JMJ.cjs +2 -0
  97. package/dist/MSurface-BrFo-JMJ.cjs.map +1 -0
  98. package/dist/MTag-BZrKN_DS.js +41 -0
  99. package/dist/MTag-BZrKN_DS.js.map +1 -0
  100. package/dist/MTag-DCE1vRJM.cjs +2 -0
  101. package/dist/MTag-DCE1vRJM.cjs.map +1 -0
  102. package/dist/MText-BUWQPoBM.js +45 -0
  103. package/dist/MText-BUWQPoBM.js.map +1 -0
  104. package/dist/MText-nsvLFsSv.cjs +2 -0
  105. package/dist/MText-nsvLFsSv.cjs.map +1 -0
  106. package/dist/MTooltip-BRSPJ3RY.js +100 -0
  107. package/dist/MTooltip-BRSPJ3RY.js.map +1 -0
  108. package/dist/MTooltip-Cj2Fxmzc.cjs +2 -0
  109. package/dist/MTooltip-Cj2Fxmzc.cjs.map +1 -0
  110. package/dist/MTreeView-BWCTlsU-.cjs +2 -0
  111. package/dist/MTreeView-BWCTlsU-.cjs.map +1 -0
  112. package/dist/MTreeView-CWcMwE-Z.js +554 -0
  113. package/dist/MTreeView-CWcMwE-Z.js.map +1 -0
  114. package/dist/calendar-2yhnCkGW.cjs +2 -0
  115. package/dist/calendar-2yhnCkGW.cjs.map +1 -0
  116. package/dist/calendar-DcNYDTVb.js +195 -0
  117. package/dist/calendar-DcNYDTVb.js.map +1 -0
  118. package/dist/calendar.cjs +1 -1
  119. package/dist/calendar.js +1 -1
  120. package/dist/{calendarDates-M_Dawj0j.js → calendarDates-Bpw_G_QR.js} +30 -19
  121. package/dist/calendarDates-Bpw_G_QR.js.map +1 -0
  122. package/dist/calendarDates-Cg0nm69Y.cjs +2 -0
  123. package/dist/calendarDates-Cg0nm69Y.cjs.map +1 -0
  124. package/dist/cards-Bp886TRb.cjs +2 -0
  125. package/dist/cards-Bp886TRb.cjs.map +1 -0
  126. package/dist/cards-BvER6Gx0.js +1277 -0
  127. package/dist/cards-BvER6Gx0.js.map +1 -0
  128. package/dist/cards.cjs +1 -1
  129. package/dist/cards.js +2 -2
  130. package/dist/{cn-YER3QsV1.js → cn-CUSXNnjF.js} +1 -1
  131. package/dist/{cn-YER3QsV1.js.map → cn-CUSXNnjF.js.map} +1 -1
  132. package/dist/{cn-CU5TNITO.cjs → cn-DYFxgzi2.cjs} +1 -1
  133. package/dist/{cn-CU5TNITO.cjs.map → cn-DYFxgzi2.cjs.map} +1 -1
  134. package/dist/components/cards/MCardDaySchedule/MCardDaySchedule.d.ts +1 -1
  135. package/dist/components/cards/MCardDocumentTree/MCardDocumentTree.d.ts +1 -1
  136. package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
  137. package/dist/components/cards/MCardPayment/MCardPayment.d.ts +1 -1
  138. package/dist/components/cards/MCardPayment/MCardPayment.types.d.ts +4 -0
  139. package/dist/components/cards/MCardPaymentMethod/MCardPaymentMethod.d.ts +1 -1
  140. package/dist/components/cards/MStatCard/MStatCard.d.ts +1 -1
  141. package/dist/components/controls/MCheckbox/MCheckbox.types.d.ts +6 -0
  142. package/dist/components/controls/MLoadMore/MLoadMore.d.ts +1 -1
  143. package/dist/components/controls/MSlider/MSlider.d.ts +1 -1
  144. package/dist/components/controls/MSlider/MSlider.types.d.ts +5 -0
  145. package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
  146. package/dist/components/data/MTreeView/MTreeView.types.d.ts +6 -0
  147. package/dist/components/data/MWeekGrid/MWeekGrid.d.ts +1 -1
  148. package/dist/components/data/MWeekGrid/MWeekGrid.types.d.ts +9 -3
  149. package/dist/components/display/MCodeBlock/MCodeBlock.d.ts +1 -1
  150. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.d.ts +1 -1
  151. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.types.d.ts +8 -2
  152. package/dist/components/dropdowns/MSelect/MSelect.d.ts +1 -1
  153. package/dist/components/dropdowns/shared/TimeColumnListbox.d.ts +20 -0
  154. package/dist/components/feedback/MAlert/MAlert.d.ts +1 -1
  155. package/dist/components/feedback/MBadge/MBadge.d.ts +1 -1
  156. package/dist/components/feedback/MBanner/MBanner.d.ts +1 -1
  157. package/dist/components/feedback/MLoader/MLoader.d.ts +1 -1
  158. package/dist/components/feedback/MSpinner/MSpinner.d.ts +1 -1
  159. package/dist/components/feedback/MTag/MTag.d.ts +1 -1
  160. package/dist/components/inputs/MInput/MInput.types.d.ts +6 -1
  161. package/dist/components/inputs/MInput/useFormatCaret.d.ts +8 -0
  162. package/dist/components/layout/MCanvasGrid/MCanvasGrid.types.d.ts +5 -0
  163. package/dist/components/layout/MContainer/MContainer.d.ts +1 -1
  164. package/dist/components/layout/MDivider/MDivider.d.ts +1 -1
  165. package/dist/components/layout/MFooter/MFooter.d.ts +1 -1
  166. package/dist/components/layout/MHeader/MHeader.d.ts +1 -1
  167. package/dist/components/layout/MInline/MInline.d.ts +1 -1
  168. package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
  169. package/dist/components/layout/MNavbar/MNavbar.types.d.ts +2 -0
  170. package/dist/components/layout/MSection/MSection.d.ts +1 -1
  171. package/dist/components/layout/MStack/MStack.d.ts +1 -1
  172. package/dist/components/layout/MStickyPanel/MStickyPanel.types.d.ts +4 -0
  173. package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
  174. package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
  175. package/dist/components/media/MAvatar/MAvatar.types.d.ts +10 -0
  176. package/dist/components/media/MCarousel/MCarousel.d.ts +1 -1
  177. package/dist/components/media/MImage/MImage.d.ts +1 -1
  178. package/dist/components/media/carouselA11y.d.ts +9 -0
  179. package/dist/components/overlays/MCommandPalette/MCommandPalette.d.ts +1 -1
  180. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.d.ts +4 -2
  181. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.types.d.ts +3 -1
  182. package/dist/components/overlays/MPopconfirm/MPopconfirm.d.ts +1 -1
  183. package/dist/components/overlays/scrollLock.d.ts +14 -0
  184. package/dist/components/primitives/MPopover/MPopover.d.ts +1 -1
  185. package/dist/components/primitives/MPopover/MPopover.types.d.ts +32 -1
  186. package/dist/components/primitives/MPopover/popoverStack.d.ts +6 -0
  187. package/dist/components/typography/MHeading/MHeading.d.ts +2 -3
  188. package/dist/components/typography/MSubText/MSubText.d.ts +1 -1
  189. package/dist/components/typography/MText/MText.d.ts +1 -1
  190. package/dist/controls-B4Dxaab4.js +491 -0
  191. package/dist/controls-B4Dxaab4.js.map +1 -0
  192. package/dist/controls-CyXEIOXD.cjs +2 -0
  193. package/dist/controls-CyXEIOXD.cjs.map +1 -0
  194. package/dist/controls.cjs +1 -1
  195. package/dist/controls.js +5 -5
  196. package/dist/creditCards-Bo2mrc53.cjs +2 -0
  197. package/dist/creditCards-Bo2mrc53.cjs.map +1 -0
  198. package/dist/{creditCards-D_iWmtG6.js → creditCards-DmDOyvcw.js} +20 -31
  199. package/dist/creditCards-DmDOyvcw.js.map +1 -0
  200. package/dist/data-BM3KG8oN.cjs +2 -0
  201. package/dist/data-BM3KG8oN.cjs.map +1 -0
  202. package/dist/data-qnR8OBmj.js +808 -0
  203. package/dist/data-qnR8OBmj.js.map +1 -0
  204. package/dist/data.cjs +1 -1
  205. package/dist/data.js +2 -2
  206. package/dist/{dateUtils-CUY6CRCf.js → dateUtils-B-ToNZq_.js} +5 -6
  207. package/dist/dateUtils-B-ToNZq_.js.map +1 -0
  208. package/dist/dateUtils-z2L7ZaxA.cjs +2 -0
  209. package/dist/dateUtils-z2L7ZaxA.cjs.map +1 -0
  210. package/dist/display-BLMOBofj.cjs +3 -0
  211. package/dist/display-BLMOBofj.cjs.map +1 -0
  212. package/dist/display-Dlb79lkA.js +968 -0
  213. package/dist/display-Dlb79lkA.js.map +1 -0
  214. package/dist/display.cjs +1 -1
  215. package/dist/display.js +2 -2
  216. package/dist/dropdowns-2_7VMEDo.js +2009 -0
  217. package/dist/dropdowns-2_7VMEDo.js.map +1 -0
  218. package/dist/dropdowns-DN7j8J-V.cjs +2 -0
  219. package/dist/dropdowns-DN7j8J-V.cjs.map +1 -0
  220. package/dist/dropdowns.cjs +1 -1
  221. package/dist/dropdowns.js +1 -1
  222. package/dist/feedback-CECayytY.js +335 -0
  223. package/dist/feedback-CECayytY.js.map +1 -0
  224. package/dist/feedback-paV8Ls-h.cjs +2 -0
  225. package/dist/feedback-paV8Ls-h.cjs.map +1 -0
  226. package/dist/feedback.cjs +1 -1
  227. package/dist/feedback.js +5 -5
  228. package/dist/form-Br56h5EF.cjs +2 -0
  229. package/dist/form-Br56h5EF.cjs.map +1 -0
  230. package/dist/form-CJmMZgsH.js +165 -0
  231. package/dist/form-CJmMZgsH.js.map +1 -0
  232. package/dist/form.cjs +1 -1
  233. package/dist/form.js +1 -1
  234. package/dist/{formatters-CNjg_h7-.cjs → formatters-CauWlsnM.cjs} +1 -1
  235. package/dist/{formatters-CNjg_h7-.cjs.map → formatters-CauWlsnM.cjs.map} +1 -1
  236. package/dist/{formatters-T0vvjMtB.js → formatters-Doqdu_w1.js} +1 -1
  237. package/dist/{formatters-T0vvjMtB.js.map → formatters-Doqdu_w1.js.map} +1 -1
  238. package/dist/frameworkTexts-CaqdiKHW.cjs +2 -0
  239. package/dist/frameworkTexts-CaqdiKHW.cjs.map +1 -0
  240. package/dist/frameworkTexts-o43FqY1A.js +505 -0
  241. package/dist/frameworkTexts-o43FqY1A.js.map +1 -0
  242. package/dist/i18n/MI18nProvider.d.ts +6 -1
  243. package/dist/i18n/frameworkTexts.d.ts +511 -0
  244. package/dist/i18n/index.d.ts +1 -0
  245. package/dist/i18n.cjs +1 -1
  246. package/dist/i18n.js +2 -2
  247. package/dist/icons-Bp8bB9TP.cjs +2 -0
  248. package/dist/icons-Bp8bB9TP.cjs.map +1 -0
  249. package/dist/{icons-CBMl-kOM.js → icons-IqEBmGh3.js} +1223 -1220
  250. package/dist/icons-IqEBmGh3.js.map +1 -0
  251. package/dist/icons.cjs +1 -1
  252. package/dist/icons.js +1 -1
  253. package/dist/illustrations.cjs +1 -1
  254. package/dist/illustrations.js +1 -1
  255. package/dist/index.cjs +1 -1
  256. package/dist/index.d.ts +4 -2
  257. package/dist/index.js +56 -56
  258. package/dist/inputs-C0BJzlA-.js +1923 -0
  259. package/dist/inputs-C0BJzlA-.js.map +1 -0
  260. package/dist/inputs-CvNBBLFA.cjs +2 -0
  261. package/dist/inputs-CvNBBLFA.cjs.map +1 -0
  262. package/dist/inputs.cjs +1 -1
  263. package/dist/inputs.js +4 -4
  264. package/dist/layout-BSFqGXLZ.js +1101 -0
  265. package/dist/layout-BSFqGXLZ.js.map +1 -0
  266. package/dist/layout-MKqvUkPv.cjs +2 -0
  267. package/dist/layout-MKqvUkPv.cjs.map +1 -0
  268. package/dist/layout.cjs +1 -1
  269. package/dist/layout.js +6 -6
  270. package/dist/{layoutProps-Ck4VtGm9.cjs → layoutProps-B8y2XwHy.cjs} +1 -1
  271. package/dist/{layoutProps-Ck4VtGm9.cjs.map → layoutProps-B8y2XwHy.cjs.map} +1 -1
  272. package/dist/{layoutProps-Cl6d1KmH.js → layoutProps-CE5-ghKw.js} +1 -1
  273. package/dist/{layoutProps-Cl6d1KmH.js.map → layoutProps-CE5-ghKw.js.map} +1 -1
  274. package/dist/{licensing-f5KYVz7D.js → licensing-BKmoAdfr.js} +5 -4
  275. package/dist/licensing-BKmoAdfr.js.map +1 -0
  276. package/dist/licensing-DVgjkw-s.cjs +2 -0
  277. package/dist/licensing-DVgjkw-s.cjs.map +1 -0
  278. package/dist/media-fiasAbBv.js +485 -0
  279. package/dist/media-fiasAbBv.js.map +1 -0
  280. package/dist/media-tr1s386v.cjs +2 -0
  281. package/dist/media-tr1s386v.cjs.map +1 -0
  282. package/dist/media.cjs +1 -1
  283. package/dist/media.js +2 -2
  284. package/dist/overlays-Df-NpmkW.cjs +2 -0
  285. package/dist/overlays-Df-NpmkW.cjs.map +1 -0
  286. package/dist/overlays-W0WW3fn7.js +607 -0
  287. package/dist/overlays-W0WW3fn7.js.map +1 -0
  288. package/dist/overlays.cjs +1 -1
  289. package/dist/overlays.js +3 -3
  290. package/dist/primitives.cjs +1 -1
  291. package/dist/primitives.js +2 -2
  292. package/dist/radioGroupKeys-Bm-Qeh8G.js +28 -0
  293. package/dist/radioGroupKeys-Bm-Qeh8G.js.map +1 -0
  294. package/dist/radioGroupKeys-COL8uXbH.cjs +2 -0
  295. package/dist/radioGroupKeys-COL8uXbH.cjs.map +1 -0
  296. package/dist/{relativeTime-Cr-NVzij.js → relativeTime-BqCuaBqb.js} +1 -1
  297. package/dist/{relativeTime-Cr-NVzij.js.map → relativeTime-BqCuaBqb.js.map} +1 -1
  298. package/dist/{relativeTime-DgYBUaVm.cjs → relativeTime-DUbW4O44.cjs} +1 -1
  299. package/dist/{relativeTime-DgYBUaVm.cjs.map → relativeTime-DUbW4O44.cjs.map} +1 -1
  300. package/dist/scrollLock-C9P9o6wH.cjs +2 -0
  301. package/dist/scrollLock-C9P9o6wH.cjs.map +1 -0
  302. package/dist/scrollLock-D27VmgPV.js +14 -0
  303. package/dist/scrollLock-D27VmgPV.js.map +1 -0
  304. package/dist/style-runtime.cjs +1 -1
  305. package/dist/style-runtime.js +1 -1
  306. package/dist/styles.css +1 -1
  307. package/dist/theme/MThemeProvider.d.ts +18 -1
  308. package/dist/theme/index.d.ts +2 -2
  309. package/dist/{theme-DAOU1aPs.js → theme-B_juOenJ.js} +71 -61
  310. package/dist/theme-B_juOenJ.js.map +1 -0
  311. package/dist/theme-ByPZH0dh.cjs +2 -0
  312. package/dist/theme-ByPZH0dh.cjs.map +1 -0
  313. package/dist/theme.cjs +1 -1
  314. package/dist/theme.js +2 -2
  315. package/dist/{typography-C806GYT4.js → typography-DNcB8dOy.js} +3 -3
  316. package/dist/{typography-C806GYT4.js.map → typography-DNcB8dOy.js.map} +1 -1
  317. package/dist/{typography-4v01oNWx.cjs → typography-I7aeG8pH.cjs} +2 -2
  318. package/dist/{typography-4v01oNWx.cjs.map → typography-I7aeG8pH.cjs.map} +1 -1
  319. package/dist/typography.cjs +1 -1
  320. package/dist/typography.js +6 -6
  321. package/dist/useGhostText-CKsb8Ufa.js +240 -0
  322. package/dist/useGhostText-CKsb8Ufa.js.map +1 -0
  323. package/dist/useGhostText-DO-tfxS0.cjs +2 -0
  324. package/dist/useGhostText-DO-tfxS0.cjs.map +1 -0
  325. package/dist/useModalLayer-CpOPSDbf.js +128 -0
  326. package/dist/useModalLayer-CpOPSDbf.js.map +1 -0
  327. package/dist/useModalLayer-Cyt93Prs.cjs +2 -0
  328. package/dist/useModalLayer-Cyt93Prs.cjs.map +1 -0
  329. package/dist/utils/calendarDates.d.ts +5 -0
  330. package/dist/utils/radioGroupKeys.d.ts +9 -0
  331. package/dist/utils/useDateGridNav.d.ts +39 -0
  332. package/dist/utils/useGhostText.d.ts +2 -1
  333. package/dist/utils/useKeyboardNav.d.ts +51 -5
  334. package/dist/utils/useModalLayer.d.ts +4 -0
  335. package/dist/utils/useRovingToolbar.d.ts +26 -0
  336. package/dist/utils/validationMessages.d.ts +15 -0
  337. package/dist/utils.cjs +1 -1
  338. package/dist/utils.entry.d.ts +3 -1
  339. package/dist/utils.js +11 -11
  340. package/dist/validationMessages-BFimXxlT.js +23 -0
  341. package/dist/validationMessages-BFimXxlT.js.map +1 -0
  342. package/dist/validationMessages-iHu7apWr.cjs +2 -0
  343. package/dist/validationMessages-iHu7apWr.cjs.map +1 -0
  344. package/dist/validators-SZmLxnir.cjs +2 -0
  345. package/dist/validators-SZmLxnir.cjs.map +1 -0
  346. package/dist/{validators-DVYOtFnw.js → validators-ULebNme2.js} +107 -106
  347. package/dist/validators-ULebNme2.js.map +1 -0
  348. package/package.json +1 -1
  349. package/dist/MAvatar-DHNB3829.cjs +0 -2
  350. package/dist/MAvatar-DHNB3829.cjs.map +0 -1
  351. package/dist/MAvatar-GeRL-CNO.js +0 -63
  352. package/dist/MAvatar-GeRL-CNO.js.map +0 -1
  353. package/dist/MButton-CEwo8lUB.js +0 -115
  354. package/dist/MButton-CEwo8lUB.js.map +0 -1
  355. package/dist/MButton-CnAr77Za.cjs +0 -2
  356. package/dist/MButton-CnAr77Za.cjs.map +0 -1
  357. package/dist/MCard-BqSkGAgf.js.map +0 -1
  358. package/dist/MCard-P8OoswWM.cjs.map +0 -1
  359. package/dist/MCheckbox-BxFBADcE.js +0 -59
  360. package/dist/MCheckbox-BxFBADcE.js.map +0 -1
  361. package/dist/MCheckbox-DozwF2ai.cjs +0 -2
  362. package/dist/MCheckbox-DozwF2ai.cjs.map +0 -1
  363. package/dist/MConflictIllustration-2QL-BHYv.cjs +0 -2
  364. package/dist/MConflictIllustration-2QL-BHYv.cjs.map +0 -1
  365. package/dist/MConflictIllustration-znC7ijmP.js.map +0 -1
  366. package/dist/MDetailList-CThQvoyf.cjs +0 -2
  367. package/dist/MDetailList-CThQvoyf.cjs.map +0 -1
  368. package/dist/MDetailList-Cx9H81xT.js +0 -98
  369. package/dist/MDetailList-Cx9H81xT.js.map +0 -1
  370. package/dist/MDropdownMenu-DnKcCyW6.cjs +0 -2
  371. package/dist/MDropdownMenu-DnKcCyW6.cjs.map +0 -1
  372. package/dist/MDropdownMenu-DxbKN7Ui.js +0 -172
  373. package/dist/MDropdownMenu-DxbKN7Ui.js.map +0 -1
  374. package/dist/MGrid-BkRSGN2t.cjs +0 -2
  375. package/dist/MGrid-BkRSGN2t.cjs.map +0 -1
  376. package/dist/MGrid-CIz-2i6X.js +0 -265
  377. package/dist/MGrid-CIz-2i6X.js.map +0 -1
  378. package/dist/MHeading-AYQ8_GFP.cjs +0 -2
  379. package/dist/MHeading-AYQ8_GFP.cjs.map +0 -1
  380. package/dist/MHeading-DcGxUMwC.js +0 -21
  381. package/dist/MHeading-DcGxUMwC.js.map +0 -1
  382. package/dist/MI18nProvider-CqAwaswx.cjs +0 -2
  383. package/dist/MI18nProvider-CqAwaswx.cjs.map +0 -1
  384. package/dist/MI18nProvider-VH14CI8u.js +0 -72
  385. package/dist/MI18nProvider-VH14CI8u.js.map +0 -1
  386. package/dist/MInput-BYj2BdUe.cjs +0 -2
  387. package/dist/MInput-BYj2BdUe.cjs.map +0 -1
  388. package/dist/MInput-nodE-CZF.js +0 -188
  389. package/dist/MInput-nodE-CZF.js.map +0 -1
  390. package/dist/MInputCVC-9XWryaTz.cjs +0 -2
  391. package/dist/MInputCVC-9XWryaTz.cjs.map +0 -1
  392. package/dist/MInputCVC-CrDTaUXm.js +0 -321
  393. package/dist/MInputCVC-CrDTaUXm.js.map +0 -1
  394. package/dist/MInputSearch-BMgCHjFk.js +0 -43
  395. package/dist/MInputSearch-BMgCHjFk.js.map +0 -1
  396. package/dist/MInputSearch-BiVI1jNc.cjs +0 -2
  397. package/dist/MInputSearch-BiVI1jNc.cjs.map +0 -1
  398. package/dist/MLink-CAl6N6_z.js +0 -31
  399. package/dist/MLink-CAl6N6_z.js.map +0 -1
  400. package/dist/MLink-Dk_ReE6i.cjs +0 -2
  401. package/dist/MLink-Dk_ReE6i.cjs.map +0 -1
  402. package/dist/MLoader-CYp0OJU_.js +0 -41
  403. package/dist/MLoader-CYp0OJU_.js.map +0 -1
  404. package/dist/MLoader-DvmFle31.cjs +0 -2
  405. package/dist/MLoader-DvmFle31.cjs.map +0 -1
  406. package/dist/MPagination-E7IixIeo.js +0 -113
  407. package/dist/MPagination-E7IixIeo.js.map +0 -1
  408. package/dist/MPagination-reDU9xTW.cjs +0 -2
  409. package/dist/MPagination-reDU9xTW.cjs.map +0 -1
  410. package/dist/MPopover-8gYD3Ogq.js +0 -118
  411. package/dist/MPopover-8gYD3Ogq.js.map +0 -1
  412. package/dist/MPopover-B3npyAkL.cjs +0 -2
  413. package/dist/MPopover-B3npyAkL.cjs.map +0 -1
  414. package/dist/MPortal-Ba2Sxset.js +0 -10
  415. package/dist/MPortal-Ba2Sxset.js.map +0 -1
  416. package/dist/MPortal-CuBXhhl_.cjs +0 -2
  417. package/dist/MPortal-CuBXhhl_.cjs.map +0 -1
  418. package/dist/MSimpleGrid-BchGYPMi.cjs +0 -2
  419. package/dist/MSimpleGrid-BchGYPMi.cjs.map +0 -1
  420. package/dist/MSimpleGrid-Ui8cI0ho.js.map +0 -1
  421. package/dist/MSkeleton-DPa_G_2X.cjs +0 -2
  422. package/dist/MSkeleton-DPa_G_2X.cjs.map +0 -1
  423. package/dist/MSkeleton-Dhu-loDO.js.map +0 -1
  424. package/dist/MSlider-BRjhyBSc.js +0 -75
  425. package/dist/MSlider-BRjhyBSc.js.map +0 -1
  426. package/dist/MSlider-w5214a-W.cjs +0 -2
  427. package/dist/MSlider-w5214a-W.cjs.map +0 -1
  428. package/dist/MStack-Dt-rWvg3.js +0 -39
  429. package/dist/MStack-Dt-rWvg3.js.map +0 -1
  430. package/dist/MStack-nc6Y_9K3.cjs +0 -2
  431. package/dist/MStack-nc6Y_9K3.cjs.map +0 -1
  432. package/dist/MSubText-B0tXiuAp.js +0 -17
  433. package/dist/MSubText-B0tXiuAp.js.map +0 -1
  434. package/dist/MSubText-C6v6Exa2.cjs +0 -2
  435. package/dist/MSubText-C6v6Exa2.cjs.map +0 -1
  436. package/dist/MSurface-BjE-mL1L.cjs +0 -2
  437. package/dist/MSurface-BjE-mL1L.cjs.map +0 -1
  438. package/dist/MSurface-CpDJCdb5.js +0 -74
  439. package/dist/MSurface-CpDJCdb5.js.map +0 -1
  440. package/dist/MTag-BgOxiahL.cjs +0 -2
  441. package/dist/MTag-BgOxiahL.cjs.map +0 -1
  442. package/dist/MTag-cw3cIGHX.js +0 -41
  443. package/dist/MTag-cw3cIGHX.js.map +0 -1
  444. package/dist/MText-BDI4mdw8.cjs +0 -2
  445. package/dist/MText-BDI4mdw8.cjs.map +0 -1
  446. package/dist/MText-DhbAjtUE.js +0 -45
  447. package/dist/MText-DhbAjtUE.js.map +0 -1
  448. package/dist/MTooltip-BAgHlv5I.cjs +0 -2
  449. package/dist/MTooltip-BAgHlv5I.cjs.map +0 -1
  450. package/dist/MTooltip-CJxvlkOX.js +0 -92
  451. package/dist/MTooltip-CJxvlkOX.js.map +0 -1
  452. package/dist/MTreeView-DsBnYQMT.js +0 -315
  453. package/dist/MTreeView-DsBnYQMT.js.map +0 -1
  454. package/dist/MTreeView-LiJ5o-zy.cjs +0 -2
  455. package/dist/MTreeView-LiJ5o-zy.cjs.map +0 -1
  456. package/dist/calendar-Bq6NMNnS.js +0 -193
  457. package/dist/calendar-Bq6NMNnS.js.map +0 -1
  458. package/dist/calendar-C57BH8Nd.cjs +0 -2
  459. package/dist/calendar-C57BH8Nd.cjs.map +0 -1
  460. package/dist/calendarDates-M_Dawj0j.js.map +0 -1
  461. package/dist/calendarDates-qm047RW2.cjs +0 -2
  462. package/dist/calendarDates-qm047RW2.cjs.map +0 -1
  463. package/dist/cards-D4xJVd4q.js +0 -1227
  464. package/dist/cards-D4xJVd4q.js.map +0 -1
  465. package/dist/cards-Du6dbZSQ.cjs +0 -2
  466. package/dist/cards-Du6dbZSQ.cjs.map +0 -1
  467. package/dist/controls-BKoc_yel.js +0 -475
  468. package/dist/controls-BKoc_yel.js.map +0 -1
  469. package/dist/controls-Ck-PMt__.cjs +0 -2
  470. package/dist/controls-Ck-PMt__.cjs.map +0 -1
  471. package/dist/creditCards-D_HwRUBz.cjs +0 -2
  472. package/dist/creditCards-D_HwRUBz.cjs.map +0 -1
  473. package/dist/creditCards-D_iWmtG6.js.map +0 -1
  474. package/dist/data-CdQximqm.js +0 -689
  475. package/dist/data-CdQximqm.js.map +0 -1
  476. package/dist/data-PS4ygCyj.cjs +0 -2
  477. package/dist/data-PS4ygCyj.cjs.map +0 -1
  478. package/dist/dateUtils-CUY6CRCf.js.map +0 -1
  479. package/dist/dateUtils-Dq1vaA-D.cjs +0 -2
  480. package/dist/dateUtils-Dq1vaA-D.cjs.map +0 -1
  481. package/dist/display-YC1fVpXA.js +0 -782
  482. package/dist/display-YC1fVpXA.js.map +0 -1
  483. package/dist/display-slIo1bQI.cjs +0 -3
  484. package/dist/display-slIo1bQI.cjs.map +0 -1
  485. package/dist/dropdowns-DFbUoZ8Q.cjs +0 -2
  486. package/dist/dropdowns-DFbUoZ8Q.cjs.map +0 -1
  487. package/dist/dropdowns-nW3MY5XG.js +0 -1715
  488. package/dist/dropdowns-nW3MY5XG.js.map +0 -1
  489. package/dist/feedback-6MNb2Xyk.cjs +0 -2
  490. package/dist/feedback-6MNb2Xyk.cjs.map +0 -1
  491. package/dist/feedback-CPwJaQHY.js +0 -259
  492. package/dist/feedback-CPwJaQHY.js.map +0 -1
  493. package/dist/form-CMsZo6Dm.cjs +0 -2
  494. package/dist/form-CMsZo6Dm.cjs.map +0 -1
  495. package/dist/form-WU6DcQGD.js +0 -164
  496. package/dist/form-WU6DcQGD.js.map +0 -1
  497. package/dist/frameworkTexts-BSXUtXOp.cjs +0 -2
  498. package/dist/frameworkTexts-BSXUtXOp.cjs.map +0 -1
  499. package/dist/frameworkTexts-DP5RUl19.js +0 -131
  500. package/dist/frameworkTexts-DP5RUl19.js.map +0 -1
  501. package/dist/icons-CBMl-kOM.js.map +0 -1
  502. package/dist/icons-D3n9-919.cjs +0 -2
  503. package/dist/icons-D3n9-919.cjs.map +0 -1
  504. package/dist/inputs-B7rGMLMr.js +0 -1753
  505. package/dist/inputs-B7rGMLMr.js.map +0 -1
  506. package/dist/inputs-BiN62hgH.cjs +0 -2
  507. package/dist/inputs-BiN62hgH.cjs.map +0 -1
  508. package/dist/layout-BMggJ_qO.cjs +0 -2
  509. package/dist/layout-BMggJ_qO.cjs.map +0 -1
  510. package/dist/layout-DBYHyCTr.js +0 -883
  511. package/dist/layout-DBYHyCTr.js.map +0 -1
  512. package/dist/licensing-Be3g-PJt.cjs +0 -2
  513. package/dist/licensing-Be3g-PJt.cjs.map +0 -1
  514. package/dist/licensing-f5KYVz7D.js.map +0 -1
  515. package/dist/media-BPzMgzqE.js +0 -405
  516. package/dist/media-BPzMgzqE.js.map +0 -1
  517. package/dist/media-D63hxCAJ.cjs +0 -2
  518. package/dist/media-D63hxCAJ.cjs.map +0 -1
  519. package/dist/overlays-CCeYD6hT.js +0 -555
  520. package/dist/overlays-CCeYD6hT.js.map +0 -1
  521. package/dist/overlays-CsRN5OG8.cjs +0 -2
  522. package/dist/overlays-CsRN5OG8.cjs.map +0 -1
  523. package/dist/popoverStack--0r2oJCD.js +0 -44
  524. package/dist/popoverStack--0r2oJCD.js.map +0 -1
  525. package/dist/popoverStack-BmMk-VZJ.cjs +0 -2
  526. package/dist/popoverStack-BmMk-VZJ.cjs.map +0 -1
  527. package/dist/theme-CJuqObWL.cjs +0 -2
  528. package/dist/theme-CJuqObWL.cjs.map +0 -1
  529. package/dist/theme-DAOU1aPs.js.map +0 -1
  530. package/dist/useGhostText-DG0bzcao.js +0 -68
  531. package/dist/useGhostText-DG0bzcao.js.map +0 -1
  532. package/dist/useGhostText-mibV4s1-.cjs +0 -2
  533. package/dist/useGhostText-mibV4s1-.cjs.map +0 -1
  534. package/dist/useKeyboardNav-CCUoRMgm.cjs +0 -2
  535. package/dist/useKeyboardNav-CCUoRMgm.cjs.map +0 -1
  536. package/dist/useKeyboardNav-iEXOdEMB.js +0 -43
  537. package/dist/useKeyboardNav-iEXOdEMB.js.map +0 -1
  538. package/dist/useModalLayer-Bf4TcEz-.js +0 -58
  539. package/dist/useModalLayer-Bf4TcEz-.js.map +0 -1
  540. package/dist/useModalLayer-DxYhhgRO.cjs +0 -2
  541. package/dist/useModalLayer-DxYhhgRO.cjs.map +0 -1
  542. package/dist/utils/proActivationWarning.d.ts +0 -7
  543. package/dist/validators-B6yWdsu2.cjs +0 -2
  544. package/dist/validators-B6yWdsu2.cjs.map +0 -1
  545. package/dist/validators-DVYOtFnw.js.map +0 -1
@@ -1,193 +0,0 @@
1
- import { Ji as e, qi as t } from "./icons-CBMl-kOM.js";
2
- import { t as n } from "./cn-YER3QsV1.js";
3
- import { t as r } from "./MButton-CEwo8lUB.js";
4
- import { a as i } from "./frameworkTexts-DP5RUl19.js";
5
- import { t as a } from "./locale-CjJpk9GN.js";
6
- import { a as o, c as s, d as c, i as ee, l, n as u, o as d, r as f, s as p, t as m, u as h } from "./calendarDates-M_Dawj0j.js";
7
- import { useCallback as g, useEffect as _, useMemo as v, useRef as y, useState as b } from "react";
8
- import { jsx as x, jsxs as S } from "react/jsx-runtime";
9
- //#region src/utils/useControllableState.ts
10
- function C(e, t, n) {
11
- let [r, i] = b(t), a = e !== void 0, o = a ? e : r, s = y(n);
12
- s.current = n;
13
- let c = y(o);
14
- return c.current = o, [o, g((e) => {
15
- a || i(e), Object.is(e, c.current) || s.current?.(e);
16
- }, [a])];
17
- }
18
- //#endregion
19
- //#region src/components/calendar/MMiniCalendar/MMiniCalendar.tsx
20
- var w = new Set([
21
- "primary",
22
- "neutral",
23
- "success",
24
- "error",
25
- "warning",
26
- "info",
27
- "light",
28
- "dark",
29
- "news"
30
- ]);
31
- function te(e) {
32
- return e ? w.has(e) ? `var(--mineral-${e})` : e : "var(--mineral-primary)";
33
- }
34
- function ne(e) {
35
- return e ? Array.isArray(e) ? e : [e] : [];
36
- }
37
- function T({ value: g, defaultValue: w = null, onChange: T, month: E, defaultMonth: re, onMonthChange: ie, min: D, max: O, disabledDates: k, weekStartsOn: A = 1, locale: ae, highlightRange: j, markers: M, showOutsideDays: oe = !0, size: se = "md", color: N = "primary", texts: ce, autoFocus: le = !1, className: ue, style: de, ...fe }) {
38
- let P = a(ae), F = i(P, ce), [I, pe] = C(g, w, (e) => {
39
- e && T?.(e);
40
- }), L = c(/* @__PURE__ */ new Date()), [R, z] = C(E ? l(E) : void 0, () => l(re ?? g ?? w ?? L), ie), [B, V] = b(() => c(g ?? w ?? L)), H = y(null), U = y(le), W = v(() => s(D ?? null), [D]), G = v(() => s(O ?? null), [O]), K = (e) => W && e < W || G && e > G ? !0 : typeof k == "function" ? k(e) : !!k?.some((t) => d(t, e));
41
- _(() => {
42
- p(B, R) || V(c(I && p(I, R) ? I : R));
43
- }, [R]), _(() => {
44
- U.current && (U.current = !1, (H.current?.querySelector(`[data-date="${f(B)}"]`))?.focus());
45
- }, [B]);
46
- let q = v(() => ee(R, A), [R, A]), me = v(() => Array.from({ length: 6 }, (e, t) => q.slice(t * 7, t * 7 + 7)), [q]), he = v(() => o(P, A, "short"), [P, A]), ge = v(() => o(P, A, "long"), [P, A]), J = new Intl.DateTimeFormat(P, {
47
- month: "long",
48
- year: "numeric"
49
- }).format(R), Y = v(() => new Intl.DateTimeFormat(P, {
50
- weekday: "long",
51
- day: "numeric",
52
- month: "long",
53
- year: "numeric"
54
- }), [P]), X = j ? c(j.start) : null, Z = j ? c(j.end) : null, _e = (e) => {
55
- let t = c(e);
56
- U.current = !0, V(t), p(t, R) || z(l(t));
57
- }, Q = (e) => {
58
- K(e) || (pe(e), V(e), p(e, R) || z(l(e)));
59
- }, ve = (e) => {
60
- let t = B, n = null;
61
- switch (e.key) {
62
- case "ArrowLeft":
63
- n = m(t, -1);
64
- break;
65
- case "ArrowRight":
66
- n = m(t, 1);
67
- break;
68
- case "ArrowUp":
69
- n = m(t, -7);
70
- break;
71
- case "ArrowDown":
72
- n = m(t, 7);
73
- break;
74
- case "PageUp":
75
- n = u(t, e.shiftKey ? -12 : -1);
76
- break;
77
- case "PageDown":
78
- n = u(t, e.shiftKey ? 12 : 1);
79
- break;
80
- case "Home":
81
- n = h(t, A);
82
- break;
83
- case "End":
84
- n = m(h(t, A), 6);
85
- break;
86
- case "Enter":
87
- case " ":
88
- e.preventDefault(), Q(t);
89
- return;
90
- default: return;
91
- }
92
- e.preventDefault(), _e(n);
93
- }, $ = (e) => {
94
- z(l(u(R, e)));
95
- };
96
- return /* @__PURE__ */ S("div", {
97
- className: n("mineral-mini-calendar", `mineral-mini-calendar--${se}`, ue),
98
- style: {
99
- "--mineral-mini-calendar-accent": `var(--mineral-${N})`,
100
- "--mineral-mini-calendar-accent-contrast": `var(--mineral-${N}-contrast)`,
101
- ...de
102
- },
103
- ...fe,
104
- children: [/* @__PURE__ */ S("div", {
105
- className: "mineral-mini-calendar__header",
106
- children: [
107
- /* @__PURE__ */ x(r, {
108
- size: "sm",
109
- variant: "ghost",
110
- color: N,
111
- iconOnly: !0,
112
- "aria-label": F.previousMonth,
113
- startIcon: /* @__PURE__ */ x(e, { size: 16 }),
114
- onClick: () => $(-1)
115
- }),
116
- /* @__PURE__ */ x("span", {
117
- className: "mineral-mini-calendar__title",
118
- "aria-live": "polite",
119
- children: J
120
- }),
121
- /* @__PURE__ */ x(r, {
122
- size: "sm",
123
- variant: "ghost",
124
- color: N,
125
- iconOnly: !0,
126
- "aria-label": F.nextMonth,
127
- startIcon: /* @__PURE__ */ x(t, { size: 16 }),
128
- onClick: () => $(1)
129
- })
130
- ]
131
- }), /* @__PURE__ */ S("div", {
132
- ref: H,
133
- className: "mineral-mini-calendar__grid",
134
- role: "grid",
135
- "aria-label": J,
136
- onKeyDown: ve,
137
- children: [/* @__PURE__ */ x("div", {
138
- className: "mineral-mini-calendar__row",
139
- role: "row",
140
- children: he.map((e, t) => /* @__PURE__ */ x("span", {
141
- className: "mineral-mini-calendar__weekday",
142
- role: "columnheader",
143
- "aria-label": ge[t],
144
- children: e
145
- }, e + t))
146
- }), me.map((e) => /* @__PURE__ */ x("div", {
147
- className: "mineral-mini-calendar__row",
148
- role: "row",
149
- children: e.map((e) => {
150
- let t = !p(e, R);
151
- if (t && !oe) return /* @__PURE__ */ x("span", {
152
- className: "mineral-mini-calendar__cell",
153
- role: "gridcell"
154
- }, f(e));
155
- let r = K(e), i = !!(I && d(I, e)), a = d(L, e), o = !!(X && Z && e >= X && e <= Z), s = M ? ne(M(e)) : [], c = s.map((e) => e.label).filter(Boolean).join(", ");
156
- return /* @__PURE__ */ x("span", {
157
- className: "mineral-mini-calendar__cell",
158
- role: "gridcell",
159
- "aria-selected": i,
160
- children: /* @__PURE__ */ S("button", {
161
- type: "button",
162
- "data-date": f(e),
163
- className: n("mineral-mini-calendar__day", t && "mineral-mini-calendar__day--outside", a && "mineral-mini-calendar__day--today", i && "mineral-mini-calendar__day--selected", o && "mineral-mini-calendar__day--in-range", r && "mineral-mini-calendar__day--disabled"),
164
- tabIndex: d(e, B) ? 0 : -1,
165
- disabled: r,
166
- "aria-current": a ? "date" : void 0,
167
- "aria-label": c ? `${Y.format(e)}, ${c}` : Y.format(e),
168
- onClick: () => Q(e),
169
- onFocus: () => {
170
- d(e, B) || V(e);
171
- },
172
- children: [/* @__PURE__ */ x("span", {
173
- className: "mineral-mini-calendar__number",
174
- children: e.getDate()
175
- }), s.length > 0 ? /* @__PURE__ */ x("span", {
176
- className: "mineral-mini-calendar__markers",
177
- "aria-hidden": "true",
178
- children: s.slice(0, 3).map((e, t) => /* @__PURE__ */ x("span", {
179
- className: "mineral-mini-calendar__marker",
180
- style: { background: te(e.color) }
181
- }, t))
182
- }) : null]
183
- })
184
- }, f(e));
185
- })
186
- }, f(e[0])))]
187
- })]
188
- });
189
- }
190
- //#endregion
191
- export { T as t };
192
-
193
- //# sourceMappingURL=calendar-Bq6NMNnS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar-Bq6NMNnS.js","names":[],"sources":["../src/utils/useControllableState.ts","../src/components/calendar/MMiniCalendar/MMiniCalendar.tsx"],"sourcesContent":["import {useCallback, useRef, useState} from 'react'\n\n/**\n * Generic controlled/uncontrolled state. The value is controlled when `value !== undefined`\n * (React convention). `onChange` fires for every requested change, controlled or not.\n */\nexport function useControllableState<T>(\n value: T | undefined,\n defaultValue: T | (() => T),\n onChange?: (next: T) => void\n): [T, (next: T) => void] {\n const [inner, setInner] = useState<T>(defaultValue)\n const controlled = value !== undefined\n const current = controlled ? (value as T) : inner\n const onChangeRef = useRef(onChange)\n onChangeRef.current = onChange\n const currentRef = useRef(current)\n currentRef.current = current\n\n const setValue = useCallback(\n (next: T) => {\n if (!controlled) {\n setInner(next)\n }\n if (!Object.is(next, currentRef.current)) {\n onChangeRef.current?.(next)\n }\n },\n [controlled]\n )\n\n return [current, setValue]\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {CSSProperties, KeyboardEvent} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {useDocumentLocale} from '../../../utils/locale'\nimport {useControllableState} from '../../../utils/useControllableState'\nimport {\n addDays,\n addMonthsClamped,\n getDateKey,\n getMonthMatrix,\n getWeekdayLabels,\n isSameDay,\n isSameMonth,\n normalizeDate,\n startOfMonth,\n startOfWeek,\n stripTime,\n} from '../../../utils/calendarDates'\nimport {useMMiniCalendarTexts} from '../../../i18n/frameworkTexts'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MMiniCalendarMarker, MMiniCalendarProps} from './MMiniCalendar.types'\nimport './MMiniCalendar.css'\n\nconst COLOR_FAMILIES = new Set(['primary', 'neutral', 'success', 'error', 'warning', 'info', 'light', 'dark', 'news'])\n\nfunction markerColor(color?: string): string {\n if (!color) {\n return 'var(--mineral-primary)'\n }\n return COLOR_FAMILIES.has(color) ? `var(--mineral-${color})` : color\n}\n\nfunction toMarkerList(value: MMiniCalendarMarker | MMiniCalendarMarker[] | null | undefined): MMiniCalendarMarker[] {\n if (!value) {\n return []\n }\n return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Compact month grid with WAI-ARIA date-grid keyboard support: arrows move by day or week,\n * PageUp/PageDown by month (Shift: year), Home/End to the week edges, Enter/Space selects.\n */\nexport function MMiniCalendar({\n value,\n defaultValue = null,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n weekStartsOn = 1,\n locale: localeProp,\n highlightRange,\n markers,\n showOutsideDays = true,\n size = 'md',\n color = 'primary',\n texts: textsProp,\n autoFocus = false,\n className,\n style,\n ...rest\n}: MMiniCalendarProps) {\n const locale = useDocumentLocale(localeProp)\n const texts = useMMiniCalendarTexts(locale, textsProp)\n const [selected, setSelected] = useControllableState<Date | null>(value, defaultValue, (next) => {\n if (next) {\n onChange?.(next)\n }\n })\n const today = stripTime(new Date())\n const [visibleMonth, setVisibleMonth] = useControllableState<Date>(\n month ? startOfMonth(month) : undefined,\n () => startOfMonth(defaultMonth ?? value ?? defaultValue ?? today),\n onMonthChange\n )\n const [focusDate, setFocusDate] = useState<Date>(() => stripTime(value ?? defaultValue ?? today))\n const gridRef = useRef<HTMLDivElement>(null)\n const shouldFocusRef = useRef(autoFocus)\n\n const minDate = useMemo(() => normalizeDate(min ?? null), [min])\n const maxDate = useMemo(() => normalizeDate(max ?? null), [max])\n\n const isDisabled = (date: Date) => {\n if (minDate && date < minDate) {\n return true\n }\n if (maxDate && date > maxDate) {\n return true\n }\n if (typeof disabledDates === 'function') {\n return disabledDates(date)\n }\n return Boolean(disabledDates?.some((item) => isSameDay(item, date)))\n }\n\n // Keep the roving focus target inside the displayed month.\n useEffect(() => {\n if (!isSameMonth(focusDate, visibleMonth)) {\n const candidate = selected && isSameMonth(selected, visibleMonth) ? selected : visibleMonth\n setFocusDate(stripTime(candidate))\n }\n }, [visibleMonth])\n\n useEffect(() => {\n if (!shouldFocusRef.current) {\n return\n }\n shouldFocusRef.current = false\n const node = gridRef.current?.querySelector<HTMLButtonElement>(`[data-date=\"${getDateKey(focusDate)}\"]`)\n node?.focus()\n }, [focusDate])\n\n const days = useMemo(() => getMonthMatrix(visibleMonth, weekStartsOn), [visibleMonth, weekStartsOn])\n const weeks = useMemo(() => Array.from({length: 6}, (_, index) => days.slice(index * 7, index * 7 + 7)), [days])\n const weekdayLabels = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'short'), [locale, weekStartsOn])\n const weekdayLong = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'long'), [locale, weekStartsOn])\n const monthTitle = new Intl.DateTimeFormat(locale, {month: 'long', year: 'numeric'}).format(visibleMonth)\n const dayLabelFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, {weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'}),\n [locale]\n )\n\n const rangeStart = highlightRange ? stripTime(highlightRange.start) : null\n const rangeEnd = highlightRange ? stripTime(highlightRange.end) : null\n\n const moveFocus = (next: Date) => {\n const target = stripTime(next)\n shouldFocusRef.current = true\n setFocusDate(target)\n if (!isSameMonth(target, visibleMonth)) {\n setVisibleMonth(startOfMonth(target))\n }\n }\n\n const select = (date: Date) => {\n if (isDisabled(date)) {\n return\n }\n setSelected(date)\n setFocusDate(date)\n if (!isSameMonth(date, visibleMonth)) {\n setVisibleMonth(startOfMonth(date))\n }\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const current = focusDate\n let next: Date | null = null\n switch (event.key) {\n case 'ArrowLeft':\n next = addDays(current, -1)\n break\n case 'ArrowRight':\n next = addDays(current, 1)\n break\n case 'ArrowUp':\n next = addDays(current, -7)\n break\n case 'ArrowDown':\n next = addDays(current, 7)\n break\n case 'PageUp':\n next = addMonthsClamped(current, event.shiftKey ? -12 : -1)\n break\n case 'PageDown':\n next = addMonthsClamped(current, event.shiftKey ? 12 : 1)\n break\n case 'Home':\n next = startOfWeek(current, weekStartsOn)\n break\n case 'End':\n next = addDays(startOfWeek(current, weekStartsOn), 6)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n select(current)\n return\n default:\n return\n }\n event.preventDefault()\n moveFocus(next)\n }\n\n const goMonth = (amount: number) => {\n const nextMonth = startOfMonth(addMonthsClamped(visibleMonth, amount))\n setVisibleMonth(nextMonth)\n }\n\n return (\n <div\n className={cn('mineral-mini-calendar', `mineral-mini-calendar--${size}`, className)}\n style={\n {\n ['--mineral-mini-calendar-accent' as string]: `var(--mineral-${color})`,\n ['--mineral-mini-calendar-accent-contrast' as string]: `var(--mineral-${color}-contrast)`,\n ...style,\n } as CSSProperties\n }\n {...rest}\n >\n <div className={'mineral-mini-calendar__header'}>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.previousMonth}\n startIcon={<MChevronLeftIcon size={16} />}\n onClick={() => goMonth(-1)}\n />\n <span className={'mineral-mini-calendar__title'} aria-live={'polite'}>\n {monthTitle}\n </span>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.nextMonth}\n startIcon={<MChevronRightIcon size={16} />}\n onClick={() => goMonth(1)}\n />\n </div>\n <div\n ref={gridRef}\n className={'mineral-mini-calendar__grid'}\n role={'grid'}\n aria-label={monthTitle}\n onKeyDown={handleKeyDown}\n >\n <div className={'mineral-mini-calendar__row'} role={'row'}>\n {weekdayLabels.map((label, index) => (\n <span\n key={label + index}\n className={'mineral-mini-calendar__weekday'}\n role={'columnheader'}\n aria-label={weekdayLong[index]}\n >\n {label}\n </span>\n ))}\n </div>\n {weeks.map((week) => (\n <div key={getDateKey(week[0])} className={'mineral-mini-calendar__row'} role={'row'}>\n {week.map((day) => {\n const outside = !isSameMonth(day, visibleMonth)\n if (outside && !showOutsideDays) {\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n />\n )\n }\n const disabled = isDisabled(day)\n const isSelected = Boolean(selected && isSameDay(selected, day))\n const isToday = isSameDay(today, day)\n const inRange = Boolean(rangeStart && rangeEnd && day >= rangeStart && day <= rangeEnd)\n const dayMarkers = markers ? toMarkerList(markers(day)) : []\n const markerText = dayMarkers\n .map((marker) => marker.label)\n .filter(Boolean)\n .join(', ')\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n aria-selected={isSelected}\n >\n <button\n type={'button'}\n data-date={getDateKey(day)}\n className={cn(\n 'mineral-mini-calendar__day',\n outside && 'mineral-mini-calendar__day--outside',\n isToday && 'mineral-mini-calendar__day--today',\n isSelected && 'mineral-mini-calendar__day--selected',\n inRange && 'mineral-mini-calendar__day--in-range',\n disabled && 'mineral-mini-calendar__day--disabled'\n )}\n tabIndex={isSameDay(day, focusDate) ? 0 : -1}\n disabled={disabled}\n aria-current={isToday ? 'date' : undefined}\n aria-label={\n markerText\n ? `${dayLabelFormatter.format(day)}, ${markerText}`\n : dayLabelFormatter.format(day)\n }\n onClick={() => select(day)}\n onFocus={() => {\n if (!isSameDay(day, focusDate)) {\n setFocusDate(day)\n }\n }}\n >\n <span className={'mineral-mini-calendar__number'}>{day.getDate()}</span>\n {dayMarkers.length > 0 ? (\n <span className={'mineral-mini-calendar__markers'} aria-hidden={'true'}>\n {dayMarkers.slice(0, 3).map((marker, index) => (\n <span\n key={index}\n className={'mineral-mini-calendar__marker'}\n style={{background: markerColor(marker.color)}}\n />\n ))}\n </span>\n ) : null}\n </button>\n </span>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- const e=require(`./icons-D3n9-919.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MButton-CnAr77Za.cjs`),r=require(`./frameworkTexts-BSXUtXOp.cjs`),i=require(`./locale-C08q7FjE.cjs`),a=require(`./calendarDates-qm047RW2.cjs`);require(`./core-w629c4ND.cjs`);let o=require(`react`),s=require(`react/jsx-runtime`);function c(e,t,n){let[r,i]=(0,o.useState)(t),a=e!==void 0,s=a?e:r,c=(0,o.useRef)(n);c.current=n;let l=(0,o.useRef)(s);return l.current=s,[s,(0,o.useCallback)(e=>{a||i(e),Object.is(e,l.current)||c.current?.(e)},[a])]}var l=new Set([`primary`,`neutral`,`success`,`error`,`warning`,`info`,`light`,`dark`,`news`]);function u(e){return e?l.has(e)?`var(--mineral-${e})`:e:`var(--mineral-primary)`}function d(e){return e?Array.isArray(e)?e:[e]:[]}function f({value:l,defaultValue:f=null,onChange:p,month:m,defaultMonth:h,onMonthChange:g,min:_,max:v,disabledDates:y,weekStartsOn:b=1,locale:x,highlightRange:S,markers:C,showOutsideDays:ee=!0,size:te=`md`,color:w=`primary`,texts:T,autoFocus:E=!1,className:D,style:O,...k}){let A=i.t(x),j=r.a(A,T),[M,N]=c(l,f,e=>{e&&p?.(e)}),P=a.d(new Date),[F,I]=c(m?a.l(m):void 0,()=>a.l(h??l??f??P),g),[L,R]=(0,o.useState)(()=>a.d(l??f??P)),z=(0,o.useRef)(null),B=(0,o.useRef)(E),V=(0,o.useMemo)(()=>a.c(_??null),[_]),H=(0,o.useMemo)(()=>a.c(v??null),[v]),U=e=>V&&e<V||H&&e>H?!0:typeof y==`function`?y(e):!!y?.some(t=>a.o(t,e));(0,o.useEffect)(()=>{a.s(L,F)||R(a.d(M&&a.s(M,F)?M:F))},[F]),(0,o.useEffect)(()=>{B.current&&(B.current=!1,(z.current?.querySelector(`[data-date="${a.r(L)}"]`))?.focus())},[L]);let W=(0,o.useMemo)(()=>a.i(F,b),[F,b]),G=(0,o.useMemo)(()=>Array.from({length:6},(e,t)=>W.slice(t*7,t*7+7)),[W]),K=(0,o.useMemo)(()=>a.a(A,b,`short`),[A,b]),q=(0,o.useMemo)(()=>a.a(A,b,`long`),[A,b]),J=new Intl.DateTimeFormat(A,{month:`long`,year:`numeric`}).format(F),Y=(0,o.useMemo)(()=>new Intl.DateTimeFormat(A,{weekday:`long`,day:`numeric`,month:`long`,year:`numeric`}),[A]),X=S?a.d(S.start):null,Z=S?a.d(S.end):null,ne=e=>{let t=a.d(e);B.current=!0,R(t),a.s(t,F)||I(a.l(t))},Q=e=>{U(e)||(N(e),R(e),a.s(e,F)||I(a.l(e)))},re=e=>{let t=L,n=null;switch(e.key){case`ArrowLeft`:n=a.t(t,-1);break;case`ArrowRight`:n=a.t(t,1);break;case`ArrowUp`:n=a.t(t,-7);break;case`ArrowDown`:n=a.t(t,7);break;case`PageUp`:n=a.n(t,e.shiftKey?-12:-1);break;case`PageDown`:n=a.n(t,e.shiftKey?12:1);break;case`Home`:n=a.u(t,b);break;case`End`:n=a.t(a.u(t,b),6);break;case`Enter`:case` `:e.preventDefault(),Q(t);return;default:return}e.preventDefault(),ne(n)},$=e=>{I(a.l(a.n(F,e)))};return(0,s.jsxs)(`div`,{className:t.t(`mineral-mini-calendar`,`mineral-mini-calendar--${te}`,D),style:{"--mineral-mini-calendar-accent":`var(--mineral-${w})`,"--mineral-mini-calendar-accent-contrast":`var(--mineral-${w}-contrast)`,...O},...k,children:[(0,s.jsxs)(`div`,{className:`mineral-mini-calendar__header`,children:[(0,s.jsx)(n.t,{size:`sm`,variant:`ghost`,color:w,iconOnly:!0,"aria-label":j.previousMonth,startIcon:(0,s.jsx)(e.Ji,{size:16}),onClick:()=>$(-1)}),(0,s.jsx)(`span`,{className:`mineral-mini-calendar__title`,"aria-live":`polite`,children:J}),(0,s.jsx)(n.t,{size:`sm`,variant:`ghost`,color:w,iconOnly:!0,"aria-label":j.nextMonth,startIcon:(0,s.jsx)(e.qi,{size:16}),onClick:()=>$(1)})]}),(0,s.jsxs)(`div`,{ref:z,className:`mineral-mini-calendar__grid`,role:`grid`,"aria-label":J,onKeyDown:re,children:[(0,s.jsx)(`div`,{className:`mineral-mini-calendar__row`,role:`row`,children:K.map((e,t)=>(0,s.jsx)(`span`,{className:`mineral-mini-calendar__weekday`,role:`columnheader`,"aria-label":q[t],children:e},e+t))}),G.map(e=>(0,s.jsx)(`div`,{className:`mineral-mini-calendar__row`,role:`row`,children:e.map(e=>{let n=!a.s(e,F);if(n&&!ee)return(0,s.jsx)(`span`,{className:`mineral-mini-calendar__cell`,role:`gridcell`},a.r(e));let r=U(e),i=!!(M&&a.o(M,e)),o=a.o(P,e),c=!!(X&&Z&&e>=X&&e<=Z),l=C?d(C(e)):[],f=l.map(e=>e.label).filter(Boolean).join(`, `);return(0,s.jsx)(`span`,{className:`mineral-mini-calendar__cell`,role:`gridcell`,"aria-selected":i,children:(0,s.jsxs)(`button`,{type:`button`,"data-date":a.r(e),className:t.t(`mineral-mini-calendar__day`,n&&`mineral-mini-calendar__day--outside`,o&&`mineral-mini-calendar__day--today`,i&&`mineral-mini-calendar__day--selected`,c&&`mineral-mini-calendar__day--in-range`,r&&`mineral-mini-calendar__day--disabled`),tabIndex:a.o(e,L)?0:-1,disabled:r,"aria-current":o?`date`:void 0,"aria-label":f?`${Y.format(e)}, ${f}`:Y.format(e),onClick:()=>Q(e),onFocus:()=>{a.o(e,L)||R(e)},children:[(0,s.jsx)(`span`,{className:`mineral-mini-calendar__number`,children:e.getDate()}),l.length>0?(0,s.jsx)(`span`,{className:`mineral-mini-calendar__markers`,"aria-hidden":`true`,children:l.slice(0,3).map((e,t)=>(0,s.jsx)(`span`,{className:`mineral-mini-calendar__marker`,style:{background:u(e.color)}},t))}):null]})},a.r(e))})},a.r(e[0])))]})]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
2
- //# sourceMappingURL=calendar-C57BH8Nd.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar-C57BH8Nd.cjs","names":[],"sources":["../src/utils/useControllableState.ts","../src/components/calendar/MMiniCalendar/MMiniCalendar.tsx"],"sourcesContent":["import {useCallback, useRef, useState} from 'react'\n\n/**\n * Generic controlled/uncontrolled state. The value is controlled when `value !== undefined`\n * (React convention). `onChange` fires for every requested change, controlled or not.\n */\nexport function useControllableState<T>(\n value: T | undefined,\n defaultValue: T | (() => T),\n onChange?: (next: T) => void\n): [T, (next: T) => void] {\n const [inner, setInner] = useState<T>(defaultValue)\n const controlled = value !== undefined\n const current = controlled ? (value as T) : inner\n const onChangeRef = useRef(onChange)\n onChangeRef.current = onChange\n const currentRef = useRef(current)\n currentRef.current = current\n\n const setValue = useCallback(\n (next: T) => {\n if (!controlled) {\n setInner(next)\n }\n if (!Object.is(next, currentRef.current)) {\n onChangeRef.current?.(next)\n }\n },\n [controlled]\n )\n\n return [current, setValue]\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {CSSProperties, KeyboardEvent} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {useDocumentLocale} from '../../../utils/locale'\nimport {useControllableState} from '../../../utils/useControllableState'\nimport {\n addDays,\n addMonthsClamped,\n getDateKey,\n getMonthMatrix,\n getWeekdayLabels,\n isSameDay,\n isSameMonth,\n normalizeDate,\n startOfMonth,\n startOfWeek,\n stripTime,\n} from '../../../utils/calendarDates'\nimport {useMMiniCalendarTexts} from '../../../i18n/frameworkTexts'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MMiniCalendarMarker, MMiniCalendarProps} from './MMiniCalendar.types'\nimport './MMiniCalendar.css'\n\nconst COLOR_FAMILIES = new Set(['primary', 'neutral', 'success', 'error', 'warning', 'info', 'light', 'dark', 'news'])\n\nfunction markerColor(color?: string): string {\n if (!color) {\n return 'var(--mineral-primary)'\n }\n return COLOR_FAMILIES.has(color) ? `var(--mineral-${color})` : color\n}\n\nfunction toMarkerList(value: MMiniCalendarMarker | MMiniCalendarMarker[] | null | undefined): MMiniCalendarMarker[] {\n if (!value) {\n return []\n }\n return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Compact month grid with WAI-ARIA date-grid keyboard support: arrows move by day or week,\n * PageUp/PageDown by month (Shift: year), Home/End to the week edges, Enter/Space selects.\n */\nexport function MMiniCalendar({\n value,\n defaultValue = null,\n onChange,\n month,\n defaultMonth,\n onMonthChange,\n min,\n max,\n disabledDates,\n weekStartsOn = 1,\n locale: localeProp,\n highlightRange,\n markers,\n showOutsideDays = true,\n size = 'md',\n color = 'primary',\n texts: textsProp,\n autoFocus = false,\n className,\n style,\n ...rest\n}: MMiniCalendarProps) {\n const locale = useDocumentLocale(localeProp)\n const texts = useMMiniCalendarTexts(locale, textsProp)\n const [selected, setSelected] = useControllableState<Date | null>(value, defaultValue, (next) => {\n if (next) {\n onChange?.(next)\n }\n })\n const today = stripTime(new Date())\n const [visibleMonth, setVisibleMonth] = useControllableState<Date>(\n month ? startOfMonth(month) : undefined,\n () => startOfMonth(defaultMonth ?? value ?? defaultValue ?? today),\n onMonthChange\n )\n const [focusDate, setFocusDate] = useState<Date>(() => stripTime(value ?? defaultValue ?? today))\n const gridRef = useRef<HTMLDivElement>(null)\n const shouldFocusRef = useRef(autoFocus)\n\n const minDate = useMemo(() => normalizeDate(min ?? null), [min])\n const maxDate = useMemo(() => normalizeDate(max ?? null), [max])\n\n const isDisabled = (date: Date) => {\n if (minDate && date < minDate) {\n return true\n }\n if (maxDate && date > maxDate) {\n return true\n }\n if (typeof disabledDates === 'function') {\n return disabledDates(date)\n }\n return Boolean(disabledDates?.some((item) => isSameDay(item, date)))\n }\n\n // Keep the roving focus target inside the displayed month.\n useEffect(() => {\n if (!isSameMonth(focusDate, visibleMonth)) {\n const candidate = selected && isSameMonth(selected, visibleMonth) ? selected : visibleMonth\n setFocusDate(stripTime(candidate))\n }\n }, [visibleMonth])\n\n useEffect(() => {\n if (!shouldFocusRef.current) {\n return\n }\n shouldFocusRef.current = false\n const node = gridRef.current?.querySelector<HTMLButtonElement>(`[data-date=\"${getDateKey(focusDate)}\"]`)\n node?.focus()\n }, [focusDate])\n\n const days = useMemo(() => getMonthMatrix(visibleMonth, weekStartsOn), [visibleMonth, weekStartsOn])\n const weeks = useMemo(() => Array.from({length: 6}, (_, index) => days.slice(index * 7, index * 7 + 7)), [days])\n const weekdayLabels = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'short'), [locale, weekStartsOn])\n const weekdayLong = useMemo(() => getWeekdayLabels(locale, weekStartsOn, 'long'), [locale, weekStartsOn])\n const monthTitle = new Intl.DateTimeFormat(locale, {month: 'long', year: 'numeric'}).format(visibleMonth)\n const dayLabelFormatter = useMemo(\n () => new Intl.DateTimeFormat(locale, {weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'}),\n [locale]\n )\n\n const rangeStart = highlightRange ? stripTime(highlightRange.start) : null\n const rangeEnd = highlightRange ? stripTime(highlightRange.end) : null\n\n const moveFocus = (next: Date) => {\n const target = stripTime(next)\n shouldFocusRef.current = true\n setFocusDate(target)\n if (!isSameMonth(target, visibleMonth)) {\n setVisibleMonth(startOfMonth(target))\n }\n }\n\n const select = (date: Date) => {\n if (isDisabled(date)) {\n return\n }\n setSelected(date)\n setFocusDate(date)\n if (!isSameMonth(date, visibleMonth)) {\n setVisibleMonth(startOfMonth(date))\n }\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const current = focusDate\n let next: Date | null = null\n switch (event.key) {\n case 'ArrowLeft':\n next = addDays(current, -1)\n break\n case 'ArrowRight':\n next = addDays(current, 1)\n break\n case 'ArrowUp':\n next = addDays(current, -7)\n break\n case 'ArrowDown':\n next = addDays(current, 7)\n break\n case 'PageUp':\n next = addMonthsClamped(current, event.shiftKey ? -12 : -1)\n break\n case 'PageDown':\n next = addMonthsClamped(current, event.shiftKey ? 12 : 1)\n break\n case 'Home':\n next = startOfWeek(current, weekStartsOn)\n break\n case 'End':\n next = addDays(startOfWeek(current, weekStartsOn), 6)\n break\n case 'Enter':\n case ' ':\n event.preventDefault()\n select(current)\n return\n default:\n return\n }\n event.preventDefault()\n moveFocus(next)\n }\n\n const goMonth = (amount: number) => {\n const nextMonth = startOfMonth(addMonthsClamped(visibleMonth, amount))\n setVisibleMonth(nextMonth)\n }\n\n return (\n <div\n className={cn('mineral-mini-calendar', `mineral-mini-calendar--${size}`, className)}\n style={\n {\n ['--mineral-mini-calendar-accent' as string]: `var(--mineral-${color})`,\n ['--mineral-mini-calendar-accent-contrast' as string]: `var(--mineral-${color}-contrast)`,\n ...style,\n } as CSSProperties\n }\n {...rest}\n >\n <div className={'mineral-mini-calendar__header'}>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.previousMonth}\n startIcon={<MChevronLeftIcon size={16} />}\n onClick={() => goMonth(-1)}\n />\n <span className={'mineral-mini-calendar__title'} aria-live={'polite'}>\n {monthTitle}\n </span>\n <MButton\n size={'sm'}\n variant={'ghost'}\n color={color}\n iconOnly\n aria-label={texts.nextMonth}\n startIcon={<MChevronRightIcon size={16} />}\n onClick={() => goMonth(1)}\n />\n </div>\n <div\n ref={gridRef}\n className={'mineral-mini-calendar__grid'}\n role={'grid'}\n aria-label={monthTitle}\n onKeyDown={handleKeyDown}\n >\n <div className={'mineral-mini-calendar__row'} role={'row'}>\n {weekdayLabels.map((label, index) => (\n <span\n key={label + index}\n className={'mineral-mini-calendar__weekday'}\n role={'columnheader'}\n aria-label={weekdayLong[index]}\n >\n {label}\n </span>\n ))}\n </div>\n {weeks.map((week) => (\n <div key={getDateKey(week[0])} className={'mineral-mini-calendar__row'} role={'row'}>\n {week.map((day) => {\n const outside = !isSameMonth(day, visibleMonth)\n if (outside && !showOutsideDays) {\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n />\n )\n }\n const disabled = isDisabled(day)\n const isSelected = Boolean(selected && isSameDay(selected, day))\n const isToday = isSameDay(today, day)\n const inRange = Boolean(rangeStart && rangeEnd && day >= rangeStart && day <= rangeEnd)\n const dayMarkers = markers ? toMarkerList(markers(day)) : []\n const markerText = dayMarkers\n .map((marker) => marker.label)\n .filter(Boolean)\n .join(', ')\n return (\n <span\n key={getDateKey(day)}\n className={'mineral-mini-calendar__cell'}\n role={'gridcell'}\n aria-selected={isSelected}\n >\n <button\n type={'button'}\n data-date={getDateKey(day)}\n className={cn(\n 'mineral-mini-calendar__day',\n outside && 'mineral-mini-calendar__day--outside',\n isToday && 'mineral-mini-calendar__day--today',\n isSelected && 'mineral-mini-calendar__day--selected',\n inRange && 'mineral-mini-calendar__day--in-range',\n disabled && 'mineral-mini-calendar__day--disabled'\n )}\n tabIndex={isSameDay(day, focusDate) ? 0 : -1}\n disabled={disabled}\n aria-current={isToday ? 'date' : undefined}\n aria-label={\n markerText\n ? `${dayLabelFormatter.format(day)}, ${markerText}`\n : dayLabelFormatter.format(day)\n }\n onClick={() => select(day)}\n onFocus={() => {\n if (!isSameDay(day, focusDate)) {\n setFocusDate(day)\n }\n }}\n >\n <span className={'mineral-mini-calendar__number'}>{day.getDate()}</span>\n {dayMarkers.length > 0 ? (\n <span className={'mineral-mini-calendar__markers'} aria-hidden={'true'}>\n {dayMarkers.slice(0, 3).map((marker, index) => (\n <span\n key={index}\n className={'mineral-mini-calendar__marker'}\n style={{background: markerColor(marker.color)}}\n />\n ))}\n </span>\n ) : null}\n </button>\n </span>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":"wTAMA,SAAgB,EACZ,EACA,EACA,EACsB,CACtB,GAAM,CAAC,EAAO,IAAA,EAAA,EAAA,UAAwB,EAAa,CAC7C,EAAa,IAAU,IAAA,GACvB,EAAU,EAAc,EAAc,EACtC,GAAA,EAAA,EAAA,QAAqB,EAAS,CACpC,EAAY,QAAU,EACtB,IAAM,GAAA,EAAA,EAAA,QAAoB,EAAQ,CAelC,MAdA,GAAW,QAAU,EAcd,CAAC,GAAA,EAAA,EAAA,aAXH,GAAY,CACJ,GACD,EAAS,EAAK,CAEb,OAAO,GAAG,EAAM,EAAW,QAAQ,EACpC,EAAY,UAAU,EAAK,EAGnC,CAAC,EAAW,CACf,CAEyB,CCP9B,IAAM,EAAiB,IAAI,IAAI,CAAC,UAAW,UAAW,UAAW,QAAS,UAAW,OAAQ,QAAS,OAAQ,OAAO,CAAC,CAEtH,SAAS,EAAY,EAAwB,CAIzC,OAHK,EAGE,EAAe,IAAI,EAAM,CAAG,iBAAiB,EAAM,GAAK,EAFpD,yBAKf,SAAS,EAAa,EAA8F,CAIhH,OAHK,EAGE,MAAM,QAAQ,EAAM,CAAG,EAAQ,CAAC,EAAM,CAFlC,EAAE,CASjB,SAAgB,EAAc,CAC1B,QACA,eAAe,KACf,WACA,QACA,eACA,gBACA,MACA,MACA,gBACA,eAAe,EACf,OAAQ,EACR,iBACA,UACA,mBAAkB,GAClB,QAAO,KACP,QAAQ,UACR,MAAO,EACP,YAAY,GACZ,YACA,QACA,GAAG,GACgB,CACnB,IAAM,EAAS,EAAA,EAAkB,EAAW,CACtC,EAAQ,EAAA,EAAsB,EAAQ,EAAU,CAChD,CAAC,EAAU,GAAe,EAAkC,EAAO,EAAe,GAAS,CACzF,GACA,IAAW,EAAK,EAEtB,CACI,EAAQ,EAAA,EAAU,IAAI,KAAO,CAC7B,CAAC,EAAc,GAAmB,EACpC,EAAQ,EAAA,EAAa,EAAM,CAAG,IAAA,OACxB,EAAA,EAAa,GAAgB,GAAS,GAAgB,EAAM,CAClE,EACH,CACK,CAAC,EAAW,IAAA,EAAA,EAAA,cAAqC,EAAA,EAAU,GAAS,GAAgB,EAAM,CAAC,CAC3F,GAAA,EAAA,EAAA,QAAiC,KAAK,CACtC,GAAA,EAAA,EAAA,QAAwB,EAAU,CAElC,GAAA,EAAA,EAAA,aAAwB,EAAA,EAAc,GAAO,KAAK,CAAE,CAAC,EAAI,CAAC,CAC1D,GAAA,EAAA,EAAA,aAAwB,EAAA,EAAc,GAAO,KAAK,CAAE,CAAC,EAAI,CAAC,CAE1D,EAAc,GACZ,GAAW,EAAO,GAGlB,GAAW,EAAO,EACX,GAEP,OAAO,GAAkB,WAClB,EAAc,EAAK,CAEvB,EAAQ,GAAe,KAAM,GAAS,EAAA,EAAU,EAAM,EAAK,CAAC,EAIvE,EAAA,EAAA,eAAgB,CACP,EAAA,EAAY,EAAW,EAAa,EAErC,EAAa,EAAA,EADK,GAAY,EAAA,EAAY,EAAU,EAAa,CAAG,EAAW,EAC9C,CAAC,EAEvC,CAAC,EAAa,CAAC,EAElB,EAAA,EAAA,eAAgB,CACP,EAAe,UAGpB,EAAe,QAAU,IACZ,EAAQ,SAAS,cAAiC,eAAe,EAAA,EAAW,EAAU,CAAC,IAAI,GAClG,OAAO,GACd,CAAC,EAAU,CAAC,CAEf,IAAM,GAAA,EAAA,EAAA,aAAqB,EAAA,EAAe,EAAc,EAAa,CAAE,CAAC,EAAc,EAAa,CAAC,CAC9F,GAAA,EAAA,EAAA,aAAsB,MAAM,KAAK,CAAC,OAAQ,EAAE,EAAG,EAAG,IAAU,EAAK,MAAM,EAAQ,EAAG,EAAQ,EAAI,EAAE,CAAC,CAAE,CAAC,EAAK,CAAC,CAC1G,GAAA,EAAA,EAAA,aAA8B,EAAA,EAAiB,EAAQ,EAAc,QAAQ,CAAE,CAAC,EAAQ,EAAa,CAAC,CACtG,GAAA,EAAA,EAAA,aAA4B,EAAA,EAAiB,EAAQ,EAAc,OAAO,CAAE,CAAC,EAAQ,EAAa,CAAC,CACnG,EAAa,IAAI,KAAK,eAAe,EAAQ,CAAC,MAAO,OAAQ,KAAM,UAAU,CAAC,CAAC,OAAO,EAAa,CACnG,GAAA,EAAA,EAAA,aACI,IAAI,KAAK,eAAe,EAAQ,CAAC,QAAS,OAAQ,IAAK,UAAW,MAAO,OAAQ,KAAM,UAAU,CAAC,CACxG,CAAC,EAAO,CACX,CAEK,EAAa,EAAiB,EAAA,EAAU,EAAe,MAAM,CAAG,KAChE,EAAW,EAAiB,EAAA,EAAU,EAAe,IAAI,CAAG,KAE5D,GAAa,GAAe,CAC9B,IAAM,EAAS,EAAA,EAAU,EAAK,CAC9B,EAAe,QAAU,GACzB,EAAa,EAAO,CACf,EAAA,EAAY,EAAQ,EAAa,EAClC,EAAgB,EAAA,EAAa,EAAO,CAAC,EAIvC,EAAU,GAAe,CACvB,EAAW,EAAK,GAGpB,EAAY,EAAK,CACjB,EAAa,EAAK,CACb,EAAA,EAAY,EAAM,EAAa,EAChC,EAAgB,EAAA,EAAa,EAAK,CAAC,GAIrC,GAAiB,GAAyC,CAC5D,IAAM,EAAU,EACZ,EAAoB,KACxB,OAAQ,EAAM,IAAd,CACI,IAAK,YACD,EAAO,EAAA,EAAQ,EAAS,GAAG,CAC3B,MACJ,IAAK,aACD,EAAO,EAAA,EAAQ,EAAS,EAAE,CAC1B,MACJ,IAAK,UACD,EAAO,EAAA,EAAQ,EAAS,GAAG,CAC3B,MACJ,IAAK,YACD,EAAO,EAAA,EAAQ,EAAS,EAAE,CAC1B,MACJ,IAAK,SACD,EAAO,EAAA,EAAiB,EAAS,EAAM,SAAW,IAAM,GAAG,CAC3D,MACJ,IAAK,WACD,EAAO,EAAA,EAAiB,EAAS,EAAM,SAAW,GAAK,EAAE,CACzD,MACJ,IAAK,OACD,EAAO,EAAA,EAAY,EAAS,EAAa,CACzC,MACJ,IAAK,MACD,EAAO,EAAA,EAAQ,EAAA,EAAY,EAAS,EAAa,CAAE,EAAE,CACrD,MACJ,IAAK,QACL,IAAK,IACD,EAAM,gBAAgB,CACtB,EAAO,EAAQ,CACf,OACJ,QACI,OAER,EAAM,gBAAgB,CACtB,GAAU,EAAK,EAGb,EAAW,GAAmB,CAEhC,EADkB,EAAA,EAAa,EAAA,EAAiB,EAAc,EAAO,CAAC,CAC5C,EAG9B,OACI,EAAA,EAAA,MAAC,MAAD,CACI,UAAW,EAAA,EAAG,wBAAyB,0BAA0B,KAAQ,EAAU,CACnF,MACI,CACK,iCAA6C,iBAAiB,EAAM,GACpE,0CAAsD,iBAAiB,EAAM,YAC9E,GAAG,EACN,CAEL,GAAI,WATR,EAWI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,yCAAhB,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,KAAM,KACN,QAAS,QACF,QACP,SAAA,GACA,aAAY,EAAM,cAClB,WAAW,EAAA,EAAA,KAAC,EAAA,GAAD,CAAkB,KAAM,GAAM,CAAA,CACzC,YAAe,EAAQ,GAAG,CAC5B,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,+BAAgC,YAAW,kBACvD,EACE,CAAA,EACP,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,KAAM,KACN,QAAS,QACF,QACP,SAAA,GACA,aAAY,EAAM,UAClB,WAAW,EAAA,EAAA,KAAC,EAAA,GAAD,CAAmB,KAAM,GAAM,CAAA,CAC1C,YAAe,EAAQ,EAAE,CAC3B,CAAA,CACA,IACN,EAAA,EAAA,MAAC,MAAD,CACI,IAAK,EACL,UAAW,8BACX,KAAM,OACN,aAAY,EACZ,UAAW,YALf,EAOI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,6BAA8B,KAAM,eAC/C,EAAc,KAAK,EAAO,KACvB,EAAA,EAAA,KAAC,OAAD,CAEI,UAAW,iCACX,KAAM,eACN,aAAY,EAAY,YAEvB,EACE,CANE,EAAQ,EAMV,CACT,CACA,CAAA,CACL,EAAM,IAAK,IACR,EAAA,EAAA,KAAC,MAAD,CAA+B,UAAW,6BAA8B,KAAM,eACzE,EAAK,IAAK,GAAQ,CACf,IAAM,EAAU,CAAC,EAAA,EAAY,EAAK,EAAa,CAC/C,GAAI,GAAW,CAAC,GACZ,OACI,EAAA,EAAA,KAAC,OAAD,CAEI,UAAW,8BACX,KAAM,WACR,CAHO,EAAA,EAAW,EAAI,CAGtB,CAGV,IAAM,EAAW,EAAW,EAAI,CAC1B,EAAa,GAAQ,GAAY,EAAA,EAAU,EAAU,EAAI,EACzD,EAAU,EAAA,EAAU,EAAO,EAAI,CAC/B,EAAU,GAAQ,GAAc,GAAY,GAAO,GAAc,GAAO,GACxE,EAAa,EAAU,EAAa,EAAQ,EAAI,CAAC,CAAG,EAAE,CACtD,EAAa,EACd,IAAK,GAAW,EAAO,MAAM,CAC7B,OAAO,QAAQ,CACf,KAAK,KAAK,CACf,OACI,EAAA,EAAA,KAAC,OAAD,CAEI,UAAW,8BACX,KAAM,WACN,gBAAe,YAEf,EAAA,EAAA,MAAC,SAAD,CACI,KAAM,SACN,YAAW,EAAA,EAAW,EAAI,CAC1B,UAAW,EAAA,EACP,6BACA,GAAW,sCACX,GAAW,oCACX,GAAc,uCACd,GAAW,uCACX,GAAY,uCACf,CACD,SAAU,EAAA,EAAU,EAAK,EAAU,CAAG,EAAI,GAChC,WACV,eAAc,EAAU,OAAS,IAAA,GACjC,aACI,EACM,GAAG,EAAkB,OAAO,EAAI,CAAC,IAAI,IACrC,EAAkB,OAAO,EAAI,CAEvC,YAAe,EAAO,EAAI,CAC1B,YAAe,CACN,EAAA,EAAU,EAAK,EAAU,EAC1B,EAAa,EAAI,WAtB7B,EA0BI,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,yCAAkC,EAAI,SAAS,CAAQ,CAAA,CACvE,EAAW,OAAS,GACjB,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,iCAAkC,cAAa,gBAC3D,EAAW,MAAM,EAAG,EAAE,CAAC,KAAK,EAAQ,KACjC,EAAA,EAAA,KAAC,OAAD,CAEI,UAAW,gCACX,MAAO,CAAC,WAAY,EAAY,EAAO,MAAM,CAAC,CAChD,CAHO,EAGP,CACJ,CACC,CAAA,CACP,KACC,GACN,CA5CE,EAAA,EAAW,EAAI,CA4CjB,EAEb,CACA,CAtEI,EAAA,EAAW,EAAK,GAAG,CAsEvB,CACR,CACA,GACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendarDates-M_Dawj0j.js","names":[],"sources":["../src/utils/calendarDates.ts"],"sourcesContent":["/**\n * Internal date helpers shared by the calendar family (MCalendarBoard, MTimelineBoard,\n * MMiniCalendar, MScheduler) and MDatePicker. Basic-safe: no Pro imports, not re-exported\n * from the package root. Every helper works in the browser's local time zone.\n */\n\nexport const MS_PER_MINUTE = 60_000\nexport const MS_PER_HOUR = 3_600_000\nexport const MS_PER_DAY = 24 * MS_PER_HOUR\n\nexport type CalendarWeekStart = 0 | 1\n\nexport function toDate(value: Date | string): Date {\n return value instanceof Date ? value : new Date(value)\n}\n\nexport function isValidDate(value: Date): boolean {\n return !Number.isNaN(value.getTime())\n}\n\nexport function parseHmToMinutes(value?: string): number | null {\n if (!value) {\n return null\n }\n const match = /^(\\d{1,2}):(\\d{2})$/.exec(value)\n if (!match) {\n return null\n }\n return Number(match[1]) * 60 + Number(match[2])\n}\n\nexport function startOfDay(date: Date): Date {\n const next = new Date(date)\n next.setHours(0, 0, 0, 0)\n return next\n}\n\nexport function stripTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nexport function normalizeDate(value?: Date | string | null): Date | null {\n if (!value) {\n return null\n }\n const parsed = toDate(value)\n if (!isValidDate(parsed)) {\n return null\n }\n return stripTime(parsed)\n}\n\n/** Adds calendar days (DST-safe, keeps the wall-clock time). */\nexport function addDays(date: Date, amount: number): Date {\n const next = new Date(date)\n next.setDate(next.getDate() + amount)\n return next\n}\n\nexport function addMinutes(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * MS_PER_MINUTE)\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/** First day of the month `amount` months away from `date`. */\nexport function addMonthsToMonth(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1)\n}\n\n/** Same day of month `amount` months away, clamped to the target month length. */\nexport function addMonthsClamped(date: Date, amount: number): Date {\n const target = new Date(date.getFullYear(), date.getMonth() + amount, 1)\n const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate()\n target.setDate(Math.min(date.getDate(), lastDay))\n return target\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: CalendarWeekStart = 1): Date {\n const safeDate = stripTime(date)\n const delta = (safeDate.getDay() - weekStartsOn + 7) % 7\n return stripTime(addDays(safeDate, -delta))\n}\n\nexport function getDateKey(date: Date): string {\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\nexport function isWeekend(date: Date): boolean {\n const day = date.getDay()\n return day === 0 || day === 6\n}\n\n/** Minutes elapsed since local midnight. */\nexport function minutesOfDay(date: Date): number {\n return date.getHours() * 60 + date.getMinutes() + date.getSeconds() / 60\n}\n\n/** Whole calendar days between two dates (b - a), ignoring the time of day. */\nexport function diffCalendarDays(a: Date, b: Date): number {\n return Math.round((stripTime(b).getTime() - stripTime(a).getTime()) / MS_PER_DAY)\n}\n\n/** The 6 x 7 month grid starting on `weekStartsOn`, outside days included. */\nexport function getMonthMatrix(month: Date, weekStartsOn: CalendarWeekStart = 1): Date[] {\n const gridStart = startOfWeek(startOfMonth(month), weekStartsOn)\n return Array.from({length: 42}, (_, index) => stripTime(addDays(gridStart, index)))\n}\n\n/** Localised short weekday names, ordered from `weekStartsOn`. */\nexport function getWeekdayLabels(\n locale: string,\n weekStartsOn: CalendarWeekStart = 1,\n format: 'narrow' | 'short' | 'long' = 'short'\n): string[] {\n const formatter = new Intl.DateTimeFormat(locale, {weekday: format})\n // 2023-01-01 was a Sunday.\n return Array.from({length: 7}, (_, index) => formatter.format(new Date(2023, 0, 1 + ((index + weekStartsOn) % 7))))\n}\n\nexport function formatHourLabel(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {hour: '2-digit', minute: '2-digit', hour12: false}).format(date)\n}\n\nexport function formatDayLabel(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'short', day: '2-digit', month: 'short'}).format(date)\n}\n\nexport function formatShortWeekday(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'short'}).format(date)\n}\n\nexport function formatRangeLabel(start: Date, end: Date, locale: string): string {\n return `${formatHourLabel(start, locale)} – ${formatHourLabel(end, locale)}`\n}\n\nexport function formatFullDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'}).format(\n date\n )\n}\n\nexport function formatMonthTitle(date: Date, locale: string, withYear = true): string {\n return new Intl.DateTimeFormat(locale, withYear ? {month: 'long', year: 'numeric'} : {month: 'long'}).format(date)\n}\n\ntype RangeFormatter = Intl.DateTimeFormat & {formatRange?: (start: Date, end: Date) => string}\n\n/** \"21 – 27 September 2026\", \"28 September – 4 October 2026\", with a plain fallback. */\nexport function formatDateRange(start: Date, endInclusive: Date, locale: string): string {\n const formatter = new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }) as RangeFormatter\n if (isSameDay(start, endInclusive)) {\n return formatter.format(start)\n }\n if (typeof formatter.formatRange === 'function') {\n return formatter.formatRange(start, endInclusive)\n }\n return `${formatter.format(start)} – ${formatter.format(endInclusive)}`\n}\n\nexport type CalendarPeriodView = 'week' | 'day' | 'timeline' | 'month' | 'agenda'\n\n/**\n * Toolbar title for a period. `end` is exclusive. Month uses the month that holds the\n * middle of the range, so a 6-week grid still reads \"September 2026\".\n */\nexport function formatPeriodTitle(view: CalendarPeriodView, start: Date, end: Date, locale: string): string {\n if (view === 'month') {\n const middle = new Date((start.getTime() + end.getTime()) / 2)\n return formatMonthTitle(middle, locale)\n }\n if (view === 'day' || view === 'timeline') {\n return formatFullDate(start, locale)\n }\n const lastDay = addDays(end, -1)\n return formatDateRange(start, lastDay, locale)\n}\n"],"mappings":"AAYA,SAAgB,EAAO,GAA4B;AAC/C,QAAO,aAAiB,OAAO,IAAQ,IAAI,KAAK,EAAM;;AAG1D,SAAgB,EAAY,GAAsB;AAC9C,QAAO,CAAC,OAAO,MAAM,EAAM,SAAS,CAAC;;AAoBzC,SAAgB,EAAU,GAAkB;AACxC,QAAO,IAAI,KAAK,EAAK,aAAa,EAAE,EAAK,UAAU,EAAE,EAAK,SAAS,CAAC;;AAGxE,SAAgB,EAAc,GAA2C;AACrE,KAAI,CAAC,EACD,QAAO;CAEX,IAAM,IAAS,EAAO,EAAM;AAI5B,QAHK,EAAY,EAAO,GAGjB,EAAU,EAAO,GAFb;;AAMf,SAAgB,EAAQ,GAAY,GAAsB;CACtD,IAAM,IAAO,IAAI,KAAK,EAAK;AAE3B,QADA,EAAK,QAAQ,EAAK,SAAS,GAAG,EAAO,EAC9B;;AAOX,SAAgB,EAAa,GAAkB;AAC3C,QAAO,IAAI,KAAK,EAAK,aAAa,EAAE,EAAK,UAAU,EAAE,EAAE;;AAS3D,SAAgB,EAAiB,GAAY,GAAsB;CAC/D,IAAM,IAAS,IAAI,KAAK,EAAK,aAAa,EAAE,EAAK,UAAU,GAAG,GAAQ,EAAE,EAClE,IAAU,IAAI,KAAK,EAAO,aAAa,EAAE,EAAO,UAAU,GAAG,GAAG,EAAE,CAAC,SAAS;AAElF,QADA,EAAO,QAAQ,KAAK,IAAI,EAAK,SAAS,EAAE,EAAQ,CAAC,EAC1C;;AAGX,SAAgB,EAAU,GAAS,GAAkB;AACjD,QAAO,EAAE,aAAa,KAAK,EAAE,aAAa,IAAI,EAAE,UAAU,KAAK,EAAE,UAAU,IAAI,EAAE,SAAS,KAAK,EAAE,SAAS;;AAG9G,SAAgB,EAAY,GAAS,GAAkB;AACnD,QAAO,EAAE,aAAa,KAAK,EAAE,aAAa,IAAI,EAAE,UAAU,KAAK,EAAE,UAAU;;AAO/E,SAAgB,EAAY,GAAY,IAAkC,GAAS;CAC/E,IAAM,IAAW,EAAU,EAAK;AAEhC,QAAO,EAAU,EAAQ,GAAU,GADpB,EAAS,QAAQ,GAAG,IAAe,KAAK,GACb,CAAC;;AAG/C,SAAgB,EAAW,GAAoB;AAI3C,QAAO,GAHM,EAAK,aAAa,CAGhB,GAFD,OAAO,EAAK,UAAU,GAAG,EAAE,CAAC,SAAS,GAAG,IAAI,CAElC,GADZ,OAAO,EAAK,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI;;AAoBvD,SAAgB,EAAe,GAAa,IAAkC,GAAW;CACrF,IAAM,IAAY,EAAY,EAAa,EAAM,EAAE,EAAa;AAChE,QAAO,MAAM,KAAK,EAAC,QAAQ,IAAG,GAAG,GAAG,MAAU,EAAU,EAAQ,GAAW,EAAM,CAAC,CAAC;;AAIvF,SAAgB,EACZ,GACA,IAAkC,GAClC,IAAsC,SAC9B;CACR,IAAM,IAAY,IAAI,KAAK,eAAe,GAAQ,EAAC,SAAS,GAAO,CAAC;AAEpE,QAAO,MAAM,KAAK,EAAC,QAAQ,GAAE,GAAG,GAAG,MAAU,EAAU,OAAO,IAAI,KAAK,MAAM,GAAG,KAAM,IAAQ,KAAgB,EAAG,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- function e(e){return e instanceof Date?e:new Date(e)}function t(e){return!Number.isNaN(e.getTime())}function n(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function r(r){if(!r)return null;let i=e(r);return t(i)?n(i):null}function i(e,t){let n=new Date(e);return n.setDate(n.getDate()+t),n}function a(e){return new Date(e.getFullYear(),e.getMonth(),1)}function o(e,t){let n=new Date(e.getFullYear(),e.getMonth()+t,1),r=new Date(n.getFullYear(),n.getMonth()+1,0).getDate();return n.setDate(Math.min(e.getDate(),r)),n}function s(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function c(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()}function l(e,t=1){let r=n(e);return n(i(r,-((r.getDay()-t+7)%7)))}function u(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function d(e,t=1){let r=l(a(e),t);return Array.from({length:42},(e,t)=>n(i(r,t)))}function f(e,t=1,n=`short`){let r=new Intl.DateTimeFormat(e,{weekday:n});return Array.from({length:7},(e,n)=>r.format(new Date(2023,0,1+(n+t)%7)))}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
2
- //# sourceMappingURL=calendarDates-qm047RW2.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendarDates-qm047RW2.cjs","names":[],"sources":["../src/utils/calendarDates.ts"],"sourcesContent":["/**\n * Internal date helpers shared by the calendar family (MCalendarBoard, MTimelineBoard,\n * MMiniCalendar, MScheduler) and MDatePicker. Basic-safe: no Pro imports, not re-exported\n * from the package root. Every helper works in the browser's local time zone.\n */\n\nexport const MS_PER_MINUTE = 60_000\nexport const MS_PER_HOUR = 3_600_000\nexport const MS_PER_DAY = 24 * MS_PER_HOUR\n\nexport type CalendarWeekStart = 0 | 1\n\nexport function toDate(value: Date | string): Date {\n return value instanceof Date ? value : new Date(value)\n}\n\nexport function isValidDate(value: Date): boolean {\n return !Number.isNaN(value.getTime())\n}\n\nexport function parseHmToMinutes(value?: string): number | null {\n if (!value) {\n return null\n }\n const match = /^(\\d{1,2}):(\\d{2})$/.exec(value)\n if (!match) {\n return null\n }\n return Number(match[1]) * 60 + Number(match[2])\n}\n\nexport function startOfDay(date: Date): Date {\n const next = new Date(date)\n next.setHours(0, 0, 0, 0)\n return next\n}\n\nexport function stripTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nexport function normalizeDate(value?: Date | string | null): Date | null {\n if (!value) {\n return null\n }\n const parsed = toDate(value)\n if (!isValidDate(parsed)) {\n return null\n }\n return stripTime(parsed)\n}\n\n/** Adds calendar days (DST-safe, keeps the wall-clock time). */\nexport function addDays(date: Date, amount: number): Date {\n const next = new Date(date)\n next.setDate(next.getDate() + amount)\n return next\n}\n\nexport function addMinutes(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * MS_PER_MINUTE)\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/** First day of the month `amount` months away from `date`. */\nexport function addMonthsToMonth(date: Date, amount: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + amount, 1)\n}\n\n/** Same day of month `amount` months away, clamped to the target month length. */\nexport function addMonthsClamped(date: Date, amount: number): Date {\n const target = new Date(date.getFullYear(), date.getMonth() + amount, 1)\n const lastDay = new Date(target.getFullYear(), target.getMonth() + 1, 0).getDate()\n target.setDate(Math.min(date.getDate(), lastDay))\n return target\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate()\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth()\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: CalendarWeekStart = 1): Date {\n const safeDate = stripTime(date)\n const delta = (safeDate.getDay() - weekStartsOn + 7) % 7\n return stripTime(addDays(safeDate, -delta))\n}\n\nexport function getDateKey(date: Date): string {\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\nexport function isWeekend(date: Date): boolean {\n const day = date.getDay()\n return day === 0 || day === 6\n}\n\n/** Minutes elapsed since local midnight. */\nexport function minutesOfDay(date: Date): number {\n return date.getHours() * 60 + date.getMinutes() + date.getSeconds() / 60\n}\n\n/** Whole calendar days between two dates (b - a), ignoring the time of day. */\nexport function diffCalendarDays(a: Date, b: Date): number {\n return Math.round((stripTime(b).getTime() - stripTime(a).getTime()) / MS_PER_DAY)\n}\n\n/** The 6 x 7 month grid starting on `weekStartsOn`, outside days included. */\nexport function getMonthMatrix(month: Date, weekStartsOn: CalendarWeekStart = 1): Date[] {\n const gridStart = startOfWeek(startOfMonth(month), weekStartsOn)\n return Array.from({length: 42}, (_, index) => stripTime(addDays(gridStart, index)))\n}\n\n/** Localised short weekday names, ordered from `weekStartsOn`. */\nexport function getWeekdayLabels(\n locale: string,\n weekStartsOn: CalendarWeekStart = 1,\n format: 'narrow' | 'short' | 'long' = 'short'\n): string[] {\n const formatter = new Intl.DateTimeFormat(locale, {weekday: format})\n // 2023-01-01 was a Sunday.\n return Array.from({length: 7}, (_, index) => formatter.format(new Date(2023, 0, 1 + ((index + weekStartsOn) % 7))))\n}\n\nexport function formatHourLabel(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {hour: '2-digit', minute: '2-digit', hour12: false}).format(date)\n}\n\nexport function formatDayLabel(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'short', day: '2-digit', month: 'short'}).format(date)\n}\n\nexport function formatShortWeekday(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'short'}).format(date)\n}\n\nexport function formatRangeLabel(start: Date, end: Date, locale: string): string {\n return `${formatHourLabel(start, locale)} – ${formatHourLabel(end, locale)}`\n}\n\nexport function formatFullDate(date: Date, locale: string): string {\n return new Intl.DateTimeFormat(locale, {weekday: 'long', day: 'numeric', month: 'long', year: 'numeric'}).format(\n date\n )\n}\n\nexport function formatMonthTitle(date: Date, locale: string, withYear = true): string {\n return new Intl.DateTimeFormat(locale, withYear ? {month: 'long', year: 'numeric'} : {month: 'long'}).format(date)\n}\n\ntype RangeFormatter = Intl.DateTimeFormat & {formatRange?: (start: Date, end: Date) => string}\n\n/** \"21 – 27 September 2026\", \"28 September – 4 October 2026\", with a plain fallback. */\nexport function formatDateRange(start: Date, endInclusive: Date, locale: string): string {\n const formatter = new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }) as RangeFormatter\n if (isSameDay(start, endInclusive)) {\n return formatter.format(start)\n }\n if (typeof formatter.formatRange === 'function') {\n return formatter.formatRange(start, endInclusive)\n }\n return `${formatter.format(start)} – ${formatter.format(endInclusive)}`\n}\n\nexport type CalendarPeriodView = 'week' | 'day' | 'timeline' | 'month' | 'agenda'\n\n/**\n * Toolbar title for a period. `end` is exclusive. Month uses the month that holds the\n * middle of the range, so a 6-week grid still reads \"September 2026\".\n */\nexport function formatPeriodTitle(view: CalendarPeriodView, start: Date, end: Date, locale: string): string {\n if (view === 'month') {\n const middle = new Date((start.getTime() + end.getTime()) / 2)\n return formatMonthTitle(middle, locale)\n }\n if (view === 'day' || view === 'timeline') {\n return formatFullDate(start, locale)\n }\n const lastDay = addDays(end, -1)\n return formatDateRange(start, lastDay, locale)\n}\n"],"mappings":"AAYA,SAAgB,EAAO,EAA4B,CAC/C,OAAO,aAAiB,KAAO,EAAQ,IAAI,KAAK,EAAM,CAG1D,SAAgB,EAAY,EAAsB,CAC9C,MAAO,CAAC,OAAO,MAAM,EAAM,SAAS,CAAC,CAoBzC,SAAgB,EAAU,EAAkB,CACxC,OAAO,IAAI,KAAK,EAAK,aAAa,CAAE,EAAK,UAAU,CAAE,EAAK,SAAS,CAAC,CAGxE,SAAgB,EAAc,EAA2C,CACrE,GAAI,CAAC,EACD,OAAO,KAEX,IAAM,EAAS,EAAO,EAAM,CAI5B,OAHK,EAAY,EAAO,CAGjB,EAAU,EAAO,CAFb,KAMf,SAAgB,EAAQ,EAAY,EAAsB,CACtD,IAAM,EAAO,IAAI,KAAK,EAAK,CAE3B,OADA,EAAK,QAAQ,EAAK,SAAS,CAAG,EAAO,CAC9B,EAOX,SAAgB,EAAa,EAAkB,CAC3C,OAAO,IAAI,KAAK,EAAK,aAAa,CAAE,EAAK,UAAU,CAAE,EAAE,CAS3D,SAAgB,EAAiB,EAAY,EAAsB,CAC/D,IAAM,EAAS,IAAI,KAAK,EAAK,aAAa,CAAE,EAAK,UAAU,CAAG,EAAQ,EAAE,CAClE,EAAU,IAAI,KAAK,EAAO,aAAa,CAAE,EAAO,UAAU,CAAG,EAAG,EAAE,CAAC,SAAS,CAElF,OADA,EAAO,QAAQ,KAAK,IAAI,EAAK,SAAS,CAAE,EAAQ,CAAC,CAC1C,EAGX,SAAgB,EAAU,EAAS,EAAkB,CACjD,OAAO,EAAE,aAAa,GAAK,EAAE,aAAa,EAAI,EAAE,UAAU,GAAK,EAAE,UAAU,EAAI,EAAE,SAAS,GAAK,EAAE,SAAS,CAG9G,SAAgB,EAAY,EAAS,EAAkB,CACnD,OAAO,EAAE,aAAa,GAAK,EAAE,aAAa,EAAI,EAAE,UAAU,GAAK,EAAE,UAAU,CAO/E,SAAgB,EAAY,EAAY,EAAkC,EAAS,CAC/E,IAAM,EAAW,EAAU,EAAK,CAEhC,OAAO,EAAU,EAAQ,EAAU,GADpB,EAAS,QAAQ,CAAG,EAAe,GAAK,GACb,CAAC,CAG/C,SAAgB,EAAW,EAAoB,CAI3C,MAAO,GAHM,EAAK,aAAa,CAGhB,GAFD,OAAO,EAAK,UAAU,CAAG,EAAE,CAAC,SAAS,EAAG,IAAI,CAElC,GADZ,OAAO,EAAK,SAAS,CAAC,CAAC,SAAS,EAAG,IAAI,GAoBvD,SAAgB,EAAe,EAAa,EAAkC,EAAW,CACrF,IAAM,EAAY,EAAY,EAAa,EAAM,CAAE,EAAa,CAChE,OAAO,MAAM,KAAK,CAAC,OAAQ,GAAG,EAAG,EAAG,IAAU,EAAU,EAAQ,EAAW,EAAM,CAAC,CAAC,CAIvF,SAAgB,EACZ,EACA,EAAkC,EAClC,EAAsC,QAC9B,CACR,IAAM,EAAY,IAAI,KAAK,eAAe,EAAQ,CAAC,QAAS,EAAO,CAAC,CAEpE,OAAO,MAAM,KAAK,CAAC,OAAQ,EAAE,EAAG,EAAG,IAAU,EAAU,OAAO,IAAI,KAAK,KAAM,EAAG,GAAM,EAAQ,GAAgB,EAAG,CAAC,CAAC"}