@banzamel/mineralui 2.4.3 → 2.5.1

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 (544) 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/validators-B6yWdsu2.cjs +0 -2
  543. package/dist/validators-B6yWdsu2.cjs.map +0 -1
  544. package/dist/validators-DVYOtFnw.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"MInputCVC-CrDTaUXm.js","names":[],"sources":["../src/components/inputs/MInputExpDate/MInputExpDate.tsx","../src/components/inputs/MInputCVC/MInputCVC.tsx"],"sourcesContent":["import {forwardRef, useCallback, useMemo, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputExpDateProps} from './MInputExpDate.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCloseIcon, MChevronDownIcon} from '../../../icons'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport '../MInput/MInput.css'\nimport './MInputExpDate.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction padMonth(value?: string) {\n if (!value) {\n return ''\n }\n\n return value.padStart(2, '0').slice(0, 2)\n}\n\nfunction formatValue(month?: string, year?: string) {\n const resolvedMonth = padMonth(month)\n const resolvedYear = year?.slice(0, 4) ?? ''\n\n if (!resolvedMonth && !resolvedYear) {\n return ''\n }\n\n if (!resolvedYear) {\n return resolvedMonth\n }\n\n return `${resolvedMonth}/${resolvedYear}`\n}\n\nfunction parseValue(value: string) {\n const digits = stripDigits(value).slice(0, 6)\n\n return {\n month: digits.slice(0, 2),\n year: digits.slice(2, 6),\n }\n}\n\nfunction resolveYearBounds(minYear?: number, maxYear?: number) {\n const currentYear = new Date().getFullYear()\n const resolvedMinYear = Math.max(minYear ?? currentYear, currentYear)\n const resolvedMaxYear = Math.max(maxYear ?? currentYear + 20, resolvedMinYear)\n\n return {\n resolvedMinYear,\n resolvedMaxYear,\n }\n}\n\nfunction validateExpDate(\n value: string,\n {minYear, maxYear}: Pick<MInputExpDateProps, 'minYear' | 'maxYear'>\n): ValidationResult {\n if (!value) {\n return OK\n }\n\n const {month: monthValue, year: yearValue} = parseValue(value)\n\n if (monthValue.length !== 2 || yearValue.length !== 4) {\n return {valid: false, error: 'Expiration date is incomplete'}\n }\n\n const month = parseInt(monthValue, 10)\n const year = parseInt(yearValue, 10)\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n\n if (Number.isNaN(month) || month < 1 || month > 12) {\n return {valid: false, error: 'Use a valid month'}\n }\n\n if (Number.isNaN(year)) {\n return {valid: false, error: 'Use a valid year'}\n }\n\n if (year < resolvedMinYear) {\n return {valid: false, error: `Year must be ${resolvedMinYear} or later`}\n }\n\n if (year > resolvedMaxYear) {\n return {valid: false, error: `Year must be ${resolvedMaxYear} or earlier`}\n }\n\n const now = new Date()\n const currentMonth = now.getMonth() + 1\n const currentYear = now.getFullYear()\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n return {valid: false, error: 'Card has expired'}\n }\n\n return OK\n}\n\nexport const MInputExpDate = forwardRef<HTMLInputElement, MInputExpDateProps>(function MInputExpDate(\n {\n validateOnBlur = true,\n validateOnChange = false,\n minYear,\n maxYear,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n name,\n id,\n disabled = false,\n readOnly = false,\n required = false,\n autoFocus = false,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n rounded = false,\n label,\n helperText,\n errorText,\n startIcon,\n endIcon,\n clearable = false,\n error = false,\n success,\n onChange,\n onFocus,\n onBlur,\n onClear,\n className,\n style,\n labelClassName,\n },\n ref\n) {\n const texts = useMCommonTexts()\n const inputRef = useRef<HTMLInputElement>(null)\n const rootRef = useRef<HTMLDivElement>(null)\n const {currentValue, setCurrentValue} = useControllableString(value, defaultValue)\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n const [focused, setFocused] = useState(false)\n const [monthMenuOpen, setMonthMenuOpen] = useState(false)\n const [yearMenuOpen, setYearMenuOpen] = useState(false)\n\n const {month, year} = parseValue(currentValue)\n const hasContent = Boolean(month || year)\n const segmentDisabled = disabled || readOnly\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n const yearOptions = useMemo(\n () => Array.from({length: resolvedMaxYear - resolvedMinYear + 1}, (_, index) => resolvedMinYear + index),\n [resolvedMaxYear, resolvedMinYear]\n )\n\n const runValidation = useCallback(\n (formattedValue: string) => {\n const result = validateExpDate(formattedValue, {minYear, maxYear})\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [maxYear, minYear, onValidationChange]\n )\n\n const syncValue = useCallback(\n (formattedValue: string) => {\n setCurrentValue(formattedValue)\n onValueChange?.(stripDigits(formattedValue), formattedValue)\n\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, formattedValue)\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n },\n [onValueChange, ref, setCurrentValue]\n )\n\n const updateValue = useCallback(\n (nextMonth?: string, nextYear?: string) => {\n const formattedValue = formatValue(nextMonth, nextYear)\n syncValue(formattedValue)\n\n if (validateOnChange && touched) {\n runValidation(formattedValue)\n }\n },\n [runValidation, syncValue, touched, validateOnChange]\n )\n\n const focusHiddenInput = useCallback(() => {\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n input?.focus()\n }, [ref])\n\n const handleRootFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (focused) {\n return\n }\n\n setFocused(true)\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input && event.target !== input) {\n onFocus?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n }\n },\n [focused, onFocus, ref]\n )\n\n const handleRootBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null\n\n if (nextTarget && rootRef.current?.contains(nextTarget)) {\n return\n }\n\n setFocused(false)\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleSelectMonth = useCallback(\n (nextMonth: string) => {\n focusHiddenInput()\n updateValue(nextMonth, year)\n },\n [focusHiddenInput, updateValue, year]\n )\n\n const handleSelectYear = useCallback(\n (nextYear: string) => {\n focusHiddenInput()\n updateValue(month, nextYear)\n },\n [focusHiddenInput, month, updateValue]\n )\n\n const handleClear = useCallback(() => {\n syncValue('')\n setTouched(false)\n setValidation(OK)\n onValidationChange?.(OK)\n onClear?.()\n focusHiddenInput()\n }, [focusHiddenInput, onClear, onValidationChange, syncValue])\n\n const hasError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !hasError && (success !== undefined ? success : touched && validation.valid && Boolean(month && year))\n const resolvedColorClass = hasError ? 'color-error' : color ? `color-${color}` : undefined\n\n const containerClasses = cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'input-error',\n isSuccess && !hasError && 'input-success',\n resolvedColorClass,\n disabled && 'disabled',\n rounded && 'rounded'\n )\n\n const monthLabel = month || 'MM'\n const yearLabel = year || 'YYYY'\n\n return (\n <div\n ref={rootRef}\n className={cn('input', 'input-exp-date', resolvedColorClass, fullWidth && 'full-width', className)}\n style={style}\n onFocusCapture={handleRootFocus}\n onBlurCapture={handleRootBlur}\n >\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'field-label',\n focused && 'focused',\n hasError && 'error',\n isSuccess && !hasError && 'success',\n required && 'required',\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n\n <div className={containerClasses} onClick={focusHiddenInput}>\n {startIcon && <span className=\"start-icon\">{startIcon}</span>}\n\n <input\n ref={ref ?? inputRef}\n type=\"text\"\n value={currentValue}\n name={name}\n id={id}\n readOnly\n required={required}\n autoFocus={autoFocus}\n className=\"input-exp-date-native\"\n tabIndex={-1}\n aria-hidden=\"true\"\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n\n <div className=\"input-exp-date-segments\" aria-label={texts.expirationDate}>\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !month && 'placeholder', 'static')}>\n <span>{monthLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n monthMenuOpen && 'open',\n !month && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{monthLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setMonthMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {Array.from({length: 12}, (_, index) => {\n const option = String(index + 1).padStart(2, '0')\n\n return (\n <MDropdownItem\n key={option}\n label={option}\n active={month === option}\n onClick={() => handleSelectMonth(option)}\n />\n )\n })}\n </MDropdownMenu>\n )}\n\n <span className=\"input-exp-date-separator\">/</span>\n\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !year && 'placeholder', 'static')}>\n <span>{yearLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n yearMenuOpen && 'open',\n !year && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{yearLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setYearMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {yearOptions.map((option) => (\n <MDropdownItem\n key={option}\n label={String(option)}\n active={year === String(option)}\n onClick={() => handleSelectYear(String(option))}\n />\n ))}\n </MDropdownMenu>\n )}\n </div>\n\n {clearable && hasContent && !segmentDisabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onClick={(event) => {\n event.stopPropagation()\n handleClear()\n }}\n tabIndex={-1}\n aria-label={texts.clearInput}\n >\n <MCloseIcon />\n </button>\n )}\n\n {endIcon && <span className=\"end-icon\">{endIcon}</span>}\n </div>\n\n {(resolvedErrorText || helperText) && (\n <div className=\"bottom-row\">\n <span>\n {resolvedErrorText && (\n <span id={id ? `${id}-error` : undefined} className=\"field-error\" role=\"alert\">\n {resolvedErrorText}\n </span>\n )}\n {!resolvedErrorText && helperText && (\n <span id={id ? `${id}-helper` : undefined} className=\"field-helper\">\n {helperText}\n </span>\n )}\n </span>\n </div>\n )}\n </div>\n )\n})\n","import {forwardRef, useCallback, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputCVCProps} from './MInputCVC.types'\nimport {MInput} from '../MInput'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MInputCVC.css'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction validateCvc(value: string, length: 3 | 4): ValidationResult {\n if (!value) {\n return OK\n }\n\n const digits = stripDigits(value)\n\n if (digits.length !== length) {\n return {valid: false, error: `Security code must have ${length} digits`}\n }\n\n return OK\n}\n\nexport const MInputCVC = forwardRef<HTMLInputElement, MInputCVCProps>(function MInputCVC(\n {\n length = 3,\n validateOnBlur = true,\n validateOnChange = false,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n onKeyDown,\n error,\n errorText,\n success,\n placeholder,\n className,\n inputClassName,\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(() =>\n stripDigits(defaultValue?.toString() ?? '').slice(0, length)\n )\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? stripDigits(value.toString()).slice(0, length) : internalValue\n\n const runValidation = useCallback(\n (nextValue: string) => {\n const result = validateCvc(nextValue, length)\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [length, onValidationChange]\n )\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextValue = stripDigits(event.target.value).slice(0, length)\n\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n\n if (validateOnChange && touched) {\n runValidation(nextValue)\n }\n\n onChange?.(event)\n },\n [length, onChange, onValueChange, runValidation, touched, validateOnChange, value]\n )\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) {\n onKeyDown?.(event)\n return\n }\n\n if (event.ctrlKey || event.metaKey) {\n onKeyDown?.(event)\n return\n }\n\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault()\n }\n\n onKeyDown?.(event)\n },\n [onKeyDown]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess = !isError && (success !== undefined ? success : touched && currentValue.length === length)\n const endIcon = isSuccess ? <MCheckIcon /> : undefined\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder ?? ''.padEnd(length, '0')}\n maxLength={length}\n endIcon={endIcon}\n inputClassName={cn('input-cvc-field', inputClassName)}\n className={className}\n />\n )\n})\n"],"mappings":";;;;;;;;AAYA,IAAM,IAAuB,EAAC,OAAO,IAAK;AAE1C,SAAS,EAAY,GAAe;AAChC,QAAO,EAAM,QAAQ,OAAO,GAAG;;AAGnC,SAAS,EAAS,GAAgB;AAK9B,QAJK,IAIE,EAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAH9B;;AAMf,SAAS,GAAY,GAAgB,GAAe;CAChD,IAAM,IAAgB,EAAS,EAAM,EAC/B,IAAe,GAAM,MAAM,GAAG,EAAE,IAAI;AAU1C,QARI,CAAC,KAAiB,CAAC,IACZ,KAGN,IAIE,GAAG,EAAc,GAAG,MAHhB;;AAMf,SAAS,EAAW,GAAe;CAC/B,IAAM,IAAS,EAAY,EAAM,CAAC,MAAM,GAAG,EAAE;AAE7C,QAAO;EACH,OAAO,EAAO,MAAM,GAAG,EAAE;EACzB,MAAM,EAAO,MAAM,GAAG,EAAE;EAC3B;;AAGL,SAAS,EAAkB,GAAkB,GAAkB;CAC3D,IAAM,qBAAc,IAAI,MAAM,EAAC,aAAa,EACtC,IAAkB,KAAK,IAAI,KAAW,GAAa,EAAY;AAGrE,QAAO;EACH;EACA,iBAJoB,KAAK,IAAI,KAAW,IAAc,IAAI,EAAgB;EAK7E;;AAGL,SAAS,GACL,GACA,EAAC,YAAS,cACM;AAChB,KAAI,CAAC,EACD,QAAO;CAGX,IAAM,EAAC,OAAO,GAAY,MAAM,MAAa,EAAW,EAAM;AAE9D,KAAI,EAAW,WAAW,KAAK,EAAU,WAAW,EAChD,QAAO;EAAC,OAAO;EAAO,OAAO;EAAgC;CAGjE,IAAM,IAAQ,SAAS,GAAY,GAAG,EAChC,IAAO,SAAS,GAAW,GAAG,EAC9B,EAAC,oBAAiB,uBAAmB,EAAkB,GAAS,EAAQ;AAE9E,KAAI,OAAO,MAAM,EAAM,IAAI,IAAQ,KAAK,IAAQ,GAC5C,QAAO;EAAC,OAAO;EAAO,OAAO;EAAoB;AAGrD,KAAI,OAAO,MAAM,EAAK,CAClB,QAAO;EAAC,OAAO;EAAO,OAAO;EAAmB;AAGpD,KAAI,IAAO,EACP,QAAO;EAAC,OAAO;EAAO,OAAO,gBAAgB,EAAgB;EAAW;AAG5E,KAAI,IAAO,EACP,QAAO;EAAC,OAAO;EAAO,OAAO,gBAAgB,EAAgB;EAAa;CAG9E,IAAM,oBAAM,IAAI,MAAM,EAChB,IAAe,EAAI,UAAU,GAAG,GAChC,IAAc,EAAI,aAAa;AAMrC,QAJI,IAAO,KAAgB,MAAS,KAAe,IAAQ,IAChD;EAAC,OAAO;EAAO,OAAO;EAAmB,GAG7C;;AAGX,IAAa,IAAgB,EAAiD,SAC1E,EACI,oBAAiB,IACjB,sBAAmB,IACnB,YACA,YACA,uBACA,kBACA,UACA,kBACA,SACA,OACA,cAAW,IACX,eAAW,IACX,cAAW,IACX,gBAAY,IACZ,aAAU,YACV,UAAO,MACP,UACA,gBAAY,IACZ,cAAU,IACV,UACA,eACA,cACA,cACA,aACA,gBAAY,IACZ,YAAQ,IACR,aACA,cACA,YACA,WACA,YACA,eACA,WACA,sBAEJ,GACF;CACE,IAAM,KAAQ,GAAiB,EACzB,IAAW,EAAyB,KAAK,EACzC,KAAU,EAAuB,KAAK,EACtC,EAAC,iBAAc,wBAAmB,EAAsB,GAAO,GAAa,EAC5E,CAAC,GAAY,MAAiB,EAA2B,EAAG,EAC5D,CAAC,GAAS,MAAc,EAAS,GAAM,EACvC,CAAC,GAAS,MAAc,EAAS,GAAM,EACvC,CAAC,IAAe,MAAoB,EAAS,GAAM,EACnD,CAAC,IAAc,MAAmB,EAAS,GAAM,EAEjD,EAAC,UAAO,YAAQ,EAAW,EAAa,EACxC,KAAa,GAAQ,KAAS,IAC9B,IAAkB,KAAY,IAC9B,EAAC,oBAAiB,wBAAmB,EAAkB,GAAS,EAAQ,EACxE,KAAc,QACV,MAAM,KAAK,EAAC,QAAQ,KAAkB,IAAkB,GAAE,GAAG,GAAG,MAAU,IAAkB,EAAM,EACxG,CAAC,IAAiB,EAAgB,CACrC,EAEK,IAAgB,GACjB,MAA2B;EACxB,IAAM,IAAS,GAAgB,GAAgB;GAAC;GAAS;GAAQ,CAAC;AAGlE,SAFA,GAAc,EAAO,EACrB,IAAqB,EAAO,EACrB;IAEX;EAAC;EAAS;EAAS;EAAmB,CACzC,EAEK,IAAY,GACb,MAA2B;AAExB,EADA,GAAgB,EAAe,EAC/B,IAAgB,EAAY,EAAe,EAAE,EAAe;EAE5D,IAAM,IAAS,GAA2C,WAAW,EAAS;AAC9E,EAAI,OACkB,OAAO,yBAAyB,iBAAiB,WAAW,QAAQ,EAAE,MAC7E,KAAK,GAAO,EAAe,EACtC,EAAM,cAAc,IAAI,MAAM,SAAS,EAAC,SAAS,IAAK,CAAC,CAAC;IAGhE;EAAC;EAAe;EAAK;EAAgB,CACxC,EAEK,IAAc,GACf,GAAoB,MAAsB;EACvC,IAAM,IAAiB,GAAY,GAAW,EAAS;AAGvD,EAFA,EAAU,EAAe,EAErB,KAAoB,KACpB,EAAc,EAAe;IAGrC;EAAC;EAAe;EAAW;EAAS;EAAiB,CACxD,EAEK,IAAmB,QAAkB;AAEvC,GADe,GAA2C,WAAW,EAAS,UACvE,OAAO;IACf,CAAC,EAAI,CAAC,EAEH,KAAkB,GACnB,MAA4C;AACzC,MAAI,EACA;AAGJ,KAAW,GAAK;EAChB,IAAM,IAAS,GAA2C,WAAW,EAAS;AAC9E,EAAI,KAAS,EAAM,WAAW,KAC1B,IAAU,EAAuD;IAGzE;EAAC;EAAS;EAAS;EAAI,CAC1B,EAEK,KAAiB,GAClB,MAA4C;EACzC,IAAM,IAAa,EAAM;AAErB,OAAc,GAAQ,SAAS,SAAS,EAAW,KAIvD,GAAW,GAAM,EACjB,GAAW,GAAK,EAEZ,KAAkB,KAClB,EAAc,EAAa,EAG/B,IAAS,EAAuD;IAEpE;EAAC;EAAc;EAAQ;EAAe;EAAe,CACxD,EAEK,KAAoB,GACrB,MAAsB;AAEnB,EADA,GAAkB,EAClB,EAAY,GAAW,EAAK;IAEhC;EAAC;EAAkB;EAAa;EAAK,CACxC,EAEK,KAAmB,GACpB,MAAqB;AAElB,EADA,GAAkB,EAClB,EAAY,GAAO,EAAS;IAEhC;EAAC;EAAkB;EAAO;EAAY,CACzC,EAEK,KAAc,QAAkB;AAMlC,EALA,EAAU,GAAG,EACb,GAAW,GAAM,EACjB,GAAc,EAAG,EACjB,IAAqB,EAAG,EACxB,KAAW,EACX,GAAkB;IACnB;EAAC;EAAkB;EAAS;EAAoB;EAAU,CAAC,EAExD,IAAW,MAAU,KAAW,CAAC,EAAW,OAC5C,IAAoB,MAAc,KAAW,CAAC,EAAW,QAAQ,EAAW,QAAQ,KAAA,IACpF,KACF,CAAC,MAAa,OAAY,KAAA,IAAsB,KAAW,EAAW,SAAS,GAAQ,KAAS,KAA1D,KACpC,KAAqB,IAAW,gBAAgB,IAAQ,SAAS,MAAU,KAAA,GAE3E,KAAmB,EACrB,aACA,SAAS,KACT,SAAS,KACT,KAAW,WACX,KAAY,eACZ,MAAa,CAAC,KAAY,iBAC1B,IACA,KAAY,YACZ,MAAW,UACd,EAEK,KAAa,KAAS,MACtB,KAAY,KAAQ;AAE1B,QACI,kBAAC,OAAD;EACI,KAAK;EACL,WAAW,EAAG,SAAS,kBAAkB,IAAoB,MAAa,cAAc,GAAU;EAC3F;EACP,gBAAgB;EAChB,eAAe;YALnB;GAOK,KACG,kBAAC,SAAD;IACI,SAAS;IACT,WAAW,EACP,eACA,KAAW,WACX,KAAY,SACZ,MAAa,CAAC,KAAY,WAC1B,KAAY,YACZ,GACH;cAEA;IACG,CAAA;GAGZ,kBAAC,OAAD;IAAK,WAAW;IAAkB,SAAS;cAA3C;KACK,KAAa,kBAAC,QAAD;MAAM,WAAU;gBAAc;MAAiB,CAAA;KAE7D,kBAAC,SAAD;MACI,KAAK,KAAO;MACZ,MAAK;MACL,OAAO;MACD;MACF;MACJ,UAAA;MACU;MACC;MACX,WAAU;MACV,UAAU;MACV,eAAY;MACF;MACD;MACD;MACV,CAAA;KAEF,kBAAC,OAAD;MAAK,WAAU;MAA0B,cAAY,GAAM;gBAA3D;OACK,IACG,kBAAC,QAAD;QAAM,WAAW,EAAG,0BAA0B,CAAC,KAAS,eAAe,SAAS;kBAC5E,kBAAC,QAAD,EAAA,UAAO,IAAkB,CAAA;QACtB,CAAA,GAEP,kBAAC,GAAD;QACI,SACI,kBAAC,QAAD;SACI,WAAW,EACP,0BACA,MAAiB,QACjB,CAAC,KAAS,cACb;SACD,aAAa;mBANjB,CAQI,kBAAC,QAAD,EAAA,UAAO,IAAkB,CAAA,EACzB,kBAAC,GAAD,EAAkB,MAAM,IAAM,CAAA,CAC3B;;QAEX,QAAO;QACP,eAAA;QACA,cAAc;QACd,kBAAiB;kBAEhB,MAAM,KAAK,EAAC,QAAQ,IAAG,GAAG,GAAG,MAAU;SACpC,IAAM,IAAS,OAAO,IAAQ,EAAE,CAAC,SAAS,GAAG,IAAI;AAEjD,gBACI,kBAAC,GAAD;UAEI,OAAO;UACP,QAAQ,MAAU;UAClB,eAAe,GAAkB,EAAO;UAC1C,EAJO,EAIP;UAER;QACU,CAAA;OAGpB,kBAAC,QAAD;QAAM,WAAU;kBAA2B;QAAQ,CAAA;OAElD,IACG,kBAAC,QAAD;QAAM,WAAW,EAAG,0BAA0B,CAAC,KAAQ,eAAe,SAAS;kBAC3E,kBAAC,QAAD,EAAA,UAAO,IAAiB,CAAA;QACrB,CAAA,GAEP,kBAAC,GAAD;QACI,SACI,kBAAC,QAAD;SACI,WAAW,EACP,0BACA,MAAgB,QAChB,CAAC,KAAQ,cACZ;SACD,aAAa;mBANjB,CAQI,kBAAC,QAAD,EAAA,UAAO,IAAiB,CAAA,EACxB,kBAAC,GAAD,EAAkB,MAAM,IAAM,CAAA,CAC3B;;QAEX,QAAO;QACP,eAAA;QACA,cAAc;QACd,kBAAiB;kBAEhB,GAAY,KAAK,MACd,kBAAC,GAAD;SAEI,OAAO,OAAO,EAAO;SACrB,QAAQ,MAAS,OAAO,EAAO;SAC/B,eAAe,GAAiB,OAAO,EAAO,CAAC;SACjD,EAJO,EAIP,CACJ;QACU,CAAA;OAElB;;KAEL,MAAa,MAAc,CAAC,KACzB,kBAAC,UAAD;MACI,MAAK;MACL,WAAU;MACV,UAAU,MAAU;AAEhB,OADA,EAAM,iBAAiB,EACvB,IAAa;;MAEjB,UAAU;MACV,cAAY,GAAM;gBAElB,kBAAC,GAAD,EAAc,CAAA;MACT,CAAA;KAGZ,MAAW,kBAAC,QAAD;MAAM,WAAU;gBAAY;MAAe,CAAA;KACrD;;IAEJ,KAAqB,MACnB,kBAAC,OAAD;IAAK,WAAU;cACX,kBAAC,QAAD,EAAA,UAAA,CACK,KACG,kBAAC,QAAD;KAAM,IAAI,IAAK,GAAG,EAAG,UAAU,KAAA;KAAW,WAAU;KAAc,MAAK;eAClE;KACE,CAAA,EAEV,CAAC,KAAqB,KACnB,kBAAC,QAAD;KAAM,IAAI,IAAK,GAAG,EAAG,WAAW,KAAA;KAAW,WAAU;eAChD;KACE,CAAA,CAER,EAAA,CAAA;IACL,CAAA;GAER;;EAEZ,ECpbI,IAAuB,EAAC,OAAO,IAAK;AAE1C,SAAS,EAAY,GAAe;AAChC,QAAO,EAAM,QAAQ,OAAO,GAAG;;AAGnC,SAAS,GAAY,GAAe,GAAiC;AAWjE,QAVK,IAIU,EAAY,EAAM,CAEtB,WAAW,IAIf,IAHI;EAAC,OAAO;EAAO,OAAO,2BAA2B,EAAO;EAAS,GANjE;;AAYf,IAAa,IAAY,EAA6C,SAClE,EACI,YAAS,GACT,oBAAiB,IACjB,sBAAmB,IACnB,uBACA,kBACA,UACA,iBACA,aACA,WACA,cACA,UACA,cACA,YACA,iBACA,cACA,mBACA,GAAG,MAEP,GACF;CACE,IAAM,CAAC,GAAe,KAAoB,QACtC,EAAY,GAAc,UAAU,IAAI,GAAG,CAAC,MAAM,GAAG,EAAO,CAC/D,EACK,CAAC,GAAY,MAAiB,EAA2B,EAAG,EAC5D,CAAC,GAAS,MAAc,EAAS,GAAM,EAEvC,IAAe,MAAU,KAAA,IAA6D,IAAjD,EAAY,EAAM,UAAU,CAAC,CAAC,MAAM,GAAG,EAAO,EAEnF,IAAgB,GACjB,MAAsB;EACnB,IAAM,IAAS,GAAY,GAAW,EAAO;AAG7C,SAFA,GAAc,EAAO,EACrB,IAAqB,EAAO,EACrB;IAEX,CAAC,GAAQ,EAAmB,CAC/B,EAEK,IAAe,GAChB,MAA+C;EAC5C,IAAM,IAAY,EAAY,EAAM,OAAO,MAAM,CAAC,MAAM,GAAG,EAAO;AAYlE,EAVI,MAAU,KAAA,KACV,EAAiB,EAAU,EAG/B,IAAgB,EAAU,EAEtB,KAAoB,KACpB,EAAc,EAAU,EAG5B,IAAW,EAAM;IAErB;EAAC;EAAQ;EAAU;EAAe;EAAe;EAAS;EAAkB;EAAM,CACrF,EAEK,KAAa,GACd,MAA8C;AAO3C,EANA,GAAW,GAAK,EAEZ,KAAkB,KAClB,EAAc,EAAa,EAG/B,IAAS,EAAM;IAEnB;EAAC;EAAc;EAAQ;EAAe;EAAe,CACxD,EAEK,KAAgB,GACjB,MAAiD;AAC9C,MAAI;GAAC;GAAa;GAAU;GAAO;GAAa;GAAc;GAAQ;GAAM,CAAC,SAAS,EAAM,IAAI,EAAE;AAC9F,OAAY,EAAM;AAClB;;AAGJ,MAAI,EAAM,WAAW,EAAM,SAAS;AAChC,OAAY,EAAM;AAClB;;AAOJ,EAJK,OAAO,KAAK,EAAM,IAAI,IACvB,EAAM,gBAAgB,EAG1B,IAAY,EAAM;IAEtB,CAAC,EAAU,CACd,EAEK,IAAU,KAAU,KAAW,CAAC,EAAW,OAC3C,IAAoB,MAAc,KAAW,CAAC,EAAW,QAAQ,EAAW,QAAQ,KAAA,IACpF,IAAY,CAAC,MAAY,MAAY,KAAA,IAAsB,KAAW,EAAa,WAAW,IAA7C,IACjD,IAAU,IAAY,kBAAC,GAAD,EAAc,CAAA,GAAG,KAAA;AAE7C,QACI,kBAAC,GAAD;EACI,GAAI;EACC;EACL,MAAK;EACL,WAAU;EACV,OAAO;EACP,UAAU;EACV,QAAQ;EACR,WAAW;EACX,OAAO;EACP,WAAW;EACX,SAAS;EACT,aAAa,MAAe,GAAG,OAAO,GAAQ,IAAI;EAClD,WAAW;EACF;EACT,gBAAgB,EAAG,mBAAmB,EAAe;EAC1C;EACb,CAAA;EAER"}
@@ -1,43 +0,0 @@
1
- import { Zi as e } from "./icons-CBMl-kOM.js";
2
- import { r as t } from "./useGhostText-DG0bzcao.js";
3
- import { t as n } from "./MInput-nodE-CZF.js";
4
- import { forwardRef as r, useCallback as i, useState as a } from "react";
5
- import { jsx as o } from "react/jsx-runtime";
6
- //#region src/components/inputs/MInputSearch/MInputSearch.tsx
7
- var s = r(function({ debounceMs: r = 300, onSearch: s, value: c, defaultValue: l, onChange: u, onKeyDown: d, onClear: f, clearable: p = !0, placeholder: m = "Search...", ...h }, g) {
8
- let [_, v] = a(l?.toString() ?? ""), y = c === void 0 ? _ : c.toString(), b = t((e) => s?.(e), r), x = i((e) => {
9
- c === void 0 && v(e.target.value), b(e.target.value), u?.(e);
10
- }, [
11
- u,
12
- c,
13
- b
14
- ]), S = i((e) => {
15
- e.key === "Enter" && s?.(y), d?.(e);
16
- }, [
17
- y,
18
- s,
19
- d
20
- ]), C = i(() => {
21
- c === void 0 && v(""), s?.(""), f?.();
22
- }, [
23
- c,
24
- s,
25
- f
26
- ]);
27
- return /* @__PURE__ */ o(n, {
28
- ...h,
29
- ref: g,
30
- type: "text",
31
- value: y,
32
- onChange: x,
33
- onKeyDown: S,
34
- onClear: C,
35
- clearable: p,
36
- placeholder: m,
37
- startIcon: /* @__PURE__ */ o(e, {})
38
- });
39
- });
40
- //#endregion
41
- export { s as t };
42
-
43
- //# sourceMappingURL=MInputSearch-BMgCHjFk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MInputSearch-BMgCHjFk.js","names":[],"sources":["../src/components/inputs/MInputSearch/MInputSearch.tsx"],"sourcesContent":["import {useState, useCallback, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputSearchProps} from './MInputSearch.types'\nimport {MInput} from '../MInput'\nimport {useDebouncedCallback} from '../../../utils/useDebounce'\nimport {MSearchIcon} from '../../../icons'\n\n// Extend the base input with debounced search callbacks and an inline clear action.\nexport const MInputSearch = forwardRef<HTMLInputElement, MInputSearchProps>(function MInputSearch(\n {\n debounceMs = 300,\n onSearch,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n onClear,\n clearable = true,\n placeholder = 'Search...',\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const currentValue = value !== undefined ? value.toString() : internalValue\n\n const debouncedSearch = useDebouncedCallback((val: string) => onSearch?.(val), debounceMs)\n\n // Update local state and debounce search notifications while typing.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n debouncedSearch(e.target.value)\n onChange?.(e)\n },\n [onChange, value, debouncedSearch]\n )\n\n // Run search immediately when the user confirms with Enter.\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n onSearch?.(currentValue)\n }\n onKeyDown?.(e)\n },\n [currentValue, onSearch, onKeyDown]\n )\n\n // Clear both the visible field and the emitted search query.\n const handleClear = useCallback(() => {\n if (value === undefined) {\n setInternalValue('')\n }\n onSearch?.('')\n onClear?.()\n }, [value, onSearch, onClear])\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"text\"\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onClear={handleClear}\n clearable={clearable}\n placeholder={placeholder}\n startIcon={<MSearchIcon />}\n />\n )\n})\n"],"mappings":";;;;;;AAQA,IAAa,IAAe,EAAgD,SACxE,EACI,gBAAa,KACb,aACA,UACA,iBACA,aACA,cACA,YACA,eAAY,IACZ,iBAAc,aACd,GAAG,KAEP,GACF;CACE,IAAM,CAAC,GAAe,KAAoB,EAAS,GAAc,UAAU,IAAI,GAAG,EAC5E,IAAe,MAAU,KAAA,IAA+B,IAAnB,EAAM,UAAU,EAErD,IAAkB,GAAsB,MAAgB,IAAW,EAAI,EAAE,EAAW,EAGpF,IAAe,GAChB,MAA2C;AAKxC,EAJI,MAAU,KAAA,KACV,EAAiB,EAAE,OAAO,MAAM,EAEpC,EAAgB,EAAE,OAAO,MAAM,EAC/B,IAAW,EAAE;IAEjB;EAAC;EAAU;EAAO;EAAgB,CACrC,EAGK,IAAgB,GACjB,MAA6C;AAI1C,EAHI,EAAE,QAAQ,WACV,IAAW,EAAa,EAE5B,IAAY,EAAE;IAElB;EAAC;EAAc;EAAU;EAAU,CACtC,EAGK,IAAc,QAAkB;AAKlC,EAJI,MAAU,KAAA,KACV,EAAiB,GAAG,EAExB,IAAW,GAAG,EACd,KAAW;IACZ;EAAC;EAAO;EAAU;EAAQ,CAAC;AAE9B,QACI,kBAAC,GAAD;EACI,GAAI;EACC;EACL,MAAK;EACL,OAAO;EACP,UAAU;EACV,WAAW;EACX,SAAS;EACE;EACE;EACb,WAAW,kBAAC,GAAD,EAAe,CAAA;EAC5B,CAAA;EAER"}
@@ -1,2 +0,0 @@
1
- const e=require(`./icons-D3n9-919.cjs`),t=require(`./useGhostText-mibV4s1-.cjs`),n=require(`./MInput-BYj2BdUe.cjs`);require(`./core-w629c4ND.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);var a=(0,r.forwardRef)(function({debounceMs:a=300,onSearch:o,value:s,defaultValue:c,onChange:l,onKeyDown:u,onClear:d,clearable:f=!0,placeholder:p=`Search...`,...m},h){let[g,_]=(0,r.useState)(c?.toString()??``),v=s===void 0?g:s.toString(),y=t.r(e=>o?.(e),a),b=(0,r.useCallback)(e=>{s===void 0&&_(e.target.value),y(e.target.value),l?.(e)},[l,s,y]),x=(0,r.useCallback)(e=>{e.key===`Enter`&&o?.(v),u?.(e)},[v,o,u]),S=(0,r.useCallback)(()=>{s===void 0&&_(``),o?.(``),d?.()},[s,o,d]);return(0,i.jsx)(n.t,{...m,ref:h,type:`text`,value:v,onChange:b,onKeyDown:x,onClear:S,clearable:f,placeholder:p,startIcon:(0,i.jsx)(e.Zi,{})})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=MInputSearch-BiVI1jNc.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MInputSearch-BiVI1jNc.cjs","names":[],"sources":["../src/components/inputs/MInputSearch/MInputSearch.tsx"],"sourcesContent":["import {useState, useCallback, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputSearchProps} from './MInputSearch.types'\nimport {MInput} from '../MInput'\nimport {useDebouncedCallback} from '../../../utils/useDebounce'\nimport {MSearchIcon} from '../../../icons'\n\n// Extend the base input with debounced search callbacks and an inline clear action.\nexport const MInputSearch = forwardRef<HTMLInputElement, MInputSearchProps>(function MInputSearch(\n {\n debounceMs = 300,\n onSearch,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n onClear,\n clearable = true,\n placeholder = 'Search...',\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const currentValue = value !== undefined ? value.toString() : internalValue\n\n const debouncedSearch = useDebouncedCallback((val: string) => onSearch?.(val), debounceMs)\n\n // Update local state and debounce search notifications while typing.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n debouncedSearch(e.target.value)\n onChange?.(e)\n },\n [onChange, value, debouncedSearch]\n )\n\n // Run search immediately when the user confirms with Enter.\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n onSearch?.(currentValue)\n }\n onKeyDown?.(e)\n },\n [currentValue, onSearch, onKeyDown]\n )\n\n // Clear both the visible field and the emitted search query.\n const handleClear = useCallback(() => {\n if (value === undefined) {\n setInternalValue('')\n }\n onSearch?.('')\n onClear?.()\n }, [value, onSearch, onClear])\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"text\"\n value={currentValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onClear={handleClear}\n clearable={clearable}\n placeholder={placeholder}\n startIcon={<MSearchIcon />}\n />\n )\n})\n"],"mappings":"yMAQA,IAAa,GAAA,EAAA,EAAA,YAA+D,SACxE,CACI,aAAa,IACb,WACA,QACA,eACA,WACA,YACA,UACA,YAAY,GACZ,cAAc,YACd,GAAG,GAEP,EACF,CACE,GAAM,CAAC,EAAe,IAAA,EAAA,EAAA,UAA6B,GAAc,UAAU,EAAI,GAAG,CAC5E,EAAe,IAAU,IAAA,GAA+B,EAAnB,EAAM,UAAU,CAErD,EAAkB,EAAA,EAAsB,GAAgB,IAAW,EAAI,CAAE,EAAW,CAGpF,GAAA,EAAA,EAAA,aACD,GAA2C,CACpC,IAAU,IAAA,IACV,EAAiB,EAAE,OAAO,MAAM,CAEpC,EAAgB,EAAE,OAAO,MAAM,CAC/B,IAAW,EAAE,EAEjB,CAAC,EAAU,EAAO,EAAgB,CACrC,CAGK,GAAA,EAAA,EAAA,aACD,GAA6C,CACtC,EAAE,MAAQ,SACV,IAAW,EAAa,CAE5B,IAAY,EAAE,EAElB,CAAC,EAAc,EAAU,EAAU,CACtC,CAGK,GAAA,EAAA,EAAA,iBAAgC,CAC9B,IAAU,IAAA,IACV,EAAiB,GAAG,CAExB,IAAW,GAAG,CACd,KAAW,EACZ,CAAC,EAAO,EAAU,EAAQ,CAAC,CAE9B,OACI,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,GAAI,EACC,MACL,KAAK,OACL,MAAO,EACP,SAAU,EACV,UAAW,EACX,QAAS,EACE,YACE,cACb,WAAW,EAAA,EAAA,KAAC,EAAA,GAAD,EAAe,CAAA,CAC5B,CAAA,EAER"}
@@ -1,31 +0,0 @@
1
- import { r as e } from "./theme-DAOU1aPs.js";
2
- import { t } from "./cn-YER3QsV1.js";
3
- import { forwardRef as n } from "react";
4
- import { jsx as r } from "react/jsx-runtime";
5
- //#region src/components/typography/MLink/MLink.tsx
6
- var i = n(function({ component: n, to: i, tone: a = "default", underline: o = "hover", hidden: s, current: c = !1, block: l = !1, disabled: u = !1, className: d, children: f, href: p, onClick: m, ...h }, g) {
7
- let _ = n ?? "a";
8
- function v(e) {
9
- if (u) {
10
- e.preventDefault();
11
- return;
12
- }
13
- m?.(e);
14
- }
15
- return /* @__PURE__ */ r(_, {
16
- ref: g,
17
- href: n || u ? void 0 : p,
18
- to: n ? i : void 0,
19
- className: t("link", a, o, c && "current", l && "block", u && "disabled", d),
20
- "aria-current": c ? "page" : void 0,
21
- "aria-disabled": u || void 0,
22
- onClick: v,
23
- ...e(s),
24
- ...h,
25
- children: f
26
- });
27
- });
28
- //#endregion
29
- export { i as t };
30
-
31
- //# sourceMappingURL=MLink-CAl6N6_z.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MLink-CAl6N6_z.js","names":[],"sources":["../src/components/typography/MLink/MLink.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MLinkProps} from './MLink.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MLink.css'\n\n// Render a semantic link that can target anchors or router link components.\nexport const MLink = forwardRef<HTMLElement, MLinkProps>(function MLink(\n {\n component,\n to,\n tone = 'default',\n underline = 'hover',\n hidden,\n current = false,\n block = false,\n disabled = false,\n className,\n children,\n href,\n onClick,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'a'\n\n // Prevent disabled links from navigating while still exposing their content.\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n onClick?.(event)\n }\n\n return (\n <Component\n ref={ref}\n href={component ? undefined : disabled ? undefined : href}\n to={component ? to : undefined}\n className={cn(\n 'link',\n tone,\n underline,\n current && 'current',\n block && 'block',\n disabled && 'disabled',\n className\n )}\n aria-current={current ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n})\n"],"mappings":";;;;;AAQA,IAAa,IAAQ,EAAoC,SACrD,EACI,cACA,OACA,UAAO,WACP,eAAY,SACZ,WACA,aAAU,IACV,WAAQ,IACR,cAAW,IACX,cACA,aACA,SACA,YACA,GAAG,KAEP,GACF;CACE,IAAM,IAAY,KAAa;CAG/B,SAAS,EAAY,GAAsC;AACvD,MAAI,GAAU;AACV,KAAM,gBAAgB;AACtB;;AAGJ,MAAU,EAAM;;AAGpB,QACI,kBAAC,GAAD;EACS;EACL,MAAM,KAAwB,IAAZ,KAAA,IAAmC;EACrD,IAAI,IAAY,IAAK,KAAA;EACrB,WAAW,EACP,QACA,GACA,GACA,KAAW,WACX,KAAS,SACT,KAAY,YACZ,EACH;EACD,gBAAc,IAAU,SAAS,KAAA;EACjC,iBAAe,KAAY,KAAA;EAC3B,SAAS;EACT,GAAI,EAAe,EAAO;EAC1B,GAAI;EAEH;EACO,CAAA;EAElB"}
@@ -1,2 +0,0 @@
1
- const e=require(`./theme-CJuqObWL.cjs`),t=require(`./cn-CU5TNITO.cjs`);require(`./core-w629c4ND.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);var i=(0,n.forwardRef)(function({component:n,to:i,tone:a=`default`,underline:o=`hover`,hidden:s,current:c=!1,block:l=!1,disabled:u=!1,className:d,children:f,href:p,onClick:m,...h},g){let _=n??`a`;function v(e){if(u){e.preventDefault();return}m?.(e)}return(0,r.jsx)(_,{ref:g,href:n||u?void 0:p,to:n?i:void 0,className:t.t(`link`,a,o,c&&`current`,l&&`block`,u&&`disabled`,d),"aria-current":c?`page`:void 0,"aria-disabled":u||void 0,onClick:v,...e.r(s),...h,children:f})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
2
- //# sourceMappingURL=MLink-Dk_ReE6i.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MLink-Dk_ReE6i.cjs","names":[],"sources":["../src/components/typography/MLink/MLink.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MLinkProps} from './MLink.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MLink.css'\n\n// Render a semantic link that can target anchors or router link components.\nexport const MLink = forwardRef<HTMLElement, MLinkProps>(function MLink(\n {\n component,\n to,\n tone = 'default',\n underline = 'hover',\n hidden,\n current = false,\n block = false,\n disabled = false,\n className,\n children,\n href,\n onClick,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'a'\n\n // Prevent disabled links from navigating while still exposing their content.\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n onClick?.(event)\n }\n\n return (\n <Component\n ref={ref}\n href={component ? undefined : disabled ? undefined : href}\n to={component ? to : undefined}\n className={cn(\n 'link',\n tone,\n underline,\n current && 'current',\n block && 'block',\n disabled && 'disabled',\n className\n )}\n aria-current={current ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n})\n"],"mappings":"4JAQA,IAAa,GAAA,EAAA,EAAA,YAA4C,SACrD,CACI,YACA,KACA,OAAO,UACP,YAAY,QACZ,SACA,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YACA,WACA,OACA,UACA,GAAG,GAEP,EACF,CACE,IAAM,EAAY,GAAa,IAG/B,SAAS,EAAY,EAAsC,CACvD,GAAI,EAAU,CACV,EAAM,gBAAgB,CACtB,OAGJ,IAAU,EAAM,CAGpB,OACI,EAAA,EAAA,KAAC,EAAD,CACS,MACL,KAAM,GAAwB,EAAZ,IAAA,GAAmC,EACrD,GAAI,EAAY,EAAK,IAAA,GACrB,UAAW,EAAA,EACP,OACA,EACA,EACA,GAAW,UACX,GAAS,QACT,GAAY,WACZ,EACH,CACD,eAAc,EAAU,OAAS,IAAA,GACjC,gBAAe,GAAY,IAAA,GAC3B,QAAS,EACT,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,EAEH,WACO,CAAA,EAElB"}
@@ -1,41 +0,0 @@
1
- import { t as e } from "./cn-YER3QsV1.js";
2
- import { t } from "./MText-DhbAjtUE.js";
3
- import { r as n } from "./MButton-CEwo8lUB.js";
4
- import { t as r } from "./MStack-Dt-rWvg3.js";
5
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
- //#region src/components/feedback/MLoader/MLoader.tsx
7
- var o = {
8
- xs: "xs",
9
- sm: "sm",
10
- md: "md",
11
- lg: "lg",
12
- xl: "xl"
13
- };
14
- function s({ color: s = "primary", size: c = "lg", label: l = "Loading", center: u = !0, minHeight: d = "40vh", className: f, style: p, ...m }) {
15
- let h = {
16
- minHeight: typeof d == "number" ? `${d}px` : d,
17
- ...p
18
- };
19
- return /* @__PURE__ */ i("div", {
20
- className: e("loader", u && "center", f),
21
- style: h,
22
- ...m,
23
- children: /* @__PURE__ */ a(r, {
24
- align: "center",
25
- children: [/* @__PURE__ */ i(n, {
26
- size: c,
27
- color: s,
28
- label: l
29
- }), /* @__PURE__ */ i(t, {
30
- tone: "muted",
31
- align: "center",
32
- size: typeof c == "number" ? void 0 : o[c],
33
- children: l
34
- })]
35
- })
36
- });
37
- }
38
- //#endregion
39
- export { s as t };
40
-
41
- //# sourceMappingURL=MLoader-CYp0OJU_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MLoader-CYp0OJU_.js","names":[],"sources":["../src/components/feedback/MLoader/MLoader.tsx"],"sourcesContent":["import type {CSSProperties} from 'react'\nimport type {MSize} from '../../../theme'\nimport {MSpinner} from '../MSpinner'\nimport {MStack} from '../../layout'\nimport {MText} from '../../typography'\nimport {cn} from '../../../utils/cn'\nimport type {MLoaderProps} from './MLoader.types'\nimport './MLoader.css'\n\nconst TEXT_SIZE: Record<MSize, MSize> = {xs: 'xs', sm: 'sm', md: 'md', lg: 'lg', xl: 'xl'}\n\n// Keep loading feedback minimal so apps can reuse it without card or alert chrome.\nexport function MLoader({\n color = 'primary',\n size = 'lg',\n label = 'Loading',\n center = true,\n minHeight = '40vh',\n className,\n style,\n ...rest\n}: MLoaderProps) {\n const inlineStyle: CSSProperties = {\n minHeight: typeof minHeight === 'number' ? `${minHeight}px` : minHeight,\n ...style,\n }\n\n return (\n <div className={cn('loader', center && 'center', className)} style={inlineStyle} {...rest}>\n <MStack align={'center'}>\n <MSpinner size={size} color={color} label={label} />\n <MText tone={'muted'} align={'center'} size={typeof size === 'number' ? undefined : TEXT_SIZE[size]}>\n {label}\n </MText>\n </MStack>\n </div>\n )\n}\n"],"mappings":";;;;;;AASA,IAAM,IAAkC;CAAC,IAAI;CAAM,IAAI;CAAM,IAAI;CAAM,IAAI;CAAM,IAAI;CAAK;AAG1F,SAAgB,EAAQ,EACpB,WAAQ,WACR,UAAO,MACP,WAAQ,WACR,YAAS,IACT,eAAY,QACZ,cACA,UACA,GAAG,KACU;CACb,IAAM,IAA6B;EAC/B,WAAW,OAAO,KAAc,WAAW,GAAG,EAAU,MAAM;EAC9D,GAAG;EACN;AAED,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,KAAU,UAAU,EAAU;EAAE,OAAO;EAAa,GAAI;YACjF,kBAAC,GAAD;GAAQ,OAAO;aAAf,CACI,kBAAC,GAAD;IAAgB;IAAa;IAAc;IAAS,CAAA,EACpD,kBAAC,GAAD;IAAO,MAAM;IAAS,OAAO;IAAU,MAAM,OAAO,KAAS,WAAW,KAAA,IAAY,EAAU;cACzF;IACG,CAAA,CACH;;EACP,CAAA"}
@@ -1,2 +0,0 @@
1
- const e=require(`./cn-CU5TNITO.cjs`),t=require(`./MText-BDI4mdw8.cjs`),n=require(`./MButton-CnAr77Za.cjs`),r=require(`./MStack-nc6Y_9K3.cjs`);require(`./core-w629c4ND.cjs`);let i=require(`react/jsx-runtime`);var a={xs:`xs`,sm:`sm`,md:`md`,lg:`lg`,xl:`xl`};function o({color:o=`primary`,size:s=`lg`,label:c=`Loading`,center:l=!0,minHeight:u=`40vh`,className:d,style:f,...p}){let m={minHeight:typeof u==`number`?`${u}px`:u,...f};return(0,i.jsx)(`div`,{className:e.t(`loader`,l&&`center`,d),style:m,...p,children:(0,i.jsxs)(r.t,{align:`center`,children:[(0,i.jsx)(n.r,{size:s,color:o,label:c}),(0,i.jsx)(t.t,{tone:`muted`,align:`center`,size:typeof s==`number`?void 0:a[s],children:c})]})})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=MLoader-DvmFle31.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MLoader-DvmFle31.cjs","names":[],"sources":["../src/components/feedback/MLoader/MLoader.tsx"],"sourcesContent":["import type {CSSProperties} from 'react'\nimport type {MSize} from '../../../theme'\nimport {MSpinner} from '../MSpinner'\nimport {MStack} from '../../layout'\nimport {MText} from '../../typography'\nimport {cn} from '../../../utils/cn'\nimport type {MLoaderProps} from './MLoader.types'\nimport './MLoader.css'\n\nconst TEXT_SIZE: Record<MSize, MSize> = {xs: 'xs', sm: 'sm', md: 'md', lg: 'lg', xl: 'xl'}\n\n// Keep loading feedback minimal so apps can reuse it without card or alert chrome.\nexport function MLoader({\n color = 'primary',\n size = 'lg',\n label = 'Loading',\n center = true,\n minHeight = '40vh',\n className,\n style,\n ...rest\n}: MLoaderProps) {\n const inlineStyle: CSSProperties = {\n minHeight: typeof minHeight === 'number' ? `${minHeight}px` : minHeight,\n ...style,\n }\n\n return (\n <div className={cn('loader', center && 'center', className)} style={inlineStyle} {...rest}>\n <MStack align={'center'}>\n <MSpinner size={size} color={color} label={label} />\n <MText tone={'muted'} align={'center'} size={typeof size === 'number' ? undefined : TEXT_SIZE[size]}>\n {label}\n </MText>\n </MStack>\n </div>\n )\n}\n"],"mappings":"gNASA,IAAM,EAAkC,CAAC,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAK,CAG1F,SAAgB,EAAQ,CACpB,QAAQ,UACR,OAAO,KACP,QAAQ,UACR,SAAS,GACT,YAAY,OACZ,YACA,QACA,GAAG,GACU,CACb,IAAM,EAA6B,CAC/B,UAAW,OAAO,GAAc,SAAW,GAAG,EAAU,IAAM,EAC9D,GAAG,EACN,CAED,OACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,EAAG,SAAU,GAAU,SAAU,EAAU,CAAE,MAAO,EAAa,GAAI,YACjF,EAAA,EAAA,MAAC,EAAA,EAAD,CAAQ,MAAO,kBAAf,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAgB,OAAa,QAAc,QAAS,CAAA,EACpD,EAAA,EAAA,KAAC,EAAA,EAAD,CAAO,KAAM,QAAS,MAAO,SAAU,KAAM,OAAO,GAAS,SAAW,IAAA,GAAY,EAAU,YACzF,EACG,CAAA,CACH,GACP,CAAA"}
@@ -1,113 +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 { useMemo as i } from "react";
5
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
- //#region src/components/layout/MPagination/MPagination.tsx
7
- function s(e, t) {
8
- let n = [];
9
- for (let r = e; r <= t; r++) n.push(r);
10
- return n;
11
- }
12
- function c(e, t, n, r) {
13
- if (e <= r * 2 + n * 2 + 3) return s(1, e);
14
- let i = Math.max(t - n, r + 2), a = Math.min(t + n, e - r - 1), o = i > r + 2, c = a < e - r - 1, l = s(1, r), u = s(e - r + 1, e);
15
- if (!o && c) return [
16
- ...s(1, n * 2 + r + 2),
17
- "dots",
18
- ...u
19
- ];
20
- if (o && !c) {
21
- let t = n * 2 + r + 2;
22
- return [
23
- ...l,
24
- "dots",
25
- ...s(e - t + 1, e)
26
- ];
27
- }
28
- return [
29
- ...l,
30
- "dots",
31
- ...s(i, a),
32
- "dots",
33
- ...u
34
- ];
35
- }
36
- function l({ total: s, page: l, pageSize: u = 10, onChange: d, siblings: f = 1, boundaries: p = 1, variant: m = "numbered", className: h, ...g }) {
37
- let _ = Math.max(1, Math.ceil(s / u)), v = Math.min(Math.max(1, l), _), y = i(() => c(_, v, f, p), [
38
- _,
39
- v,
40
- f,
41
- p
42
- ]);
43
- return m === "simple" ? /* @__PURE__ */ o("nav", {
44
- "aria-label": "pagination",
45
- className: n("pagination", h),
46
- ...g,
47
- children: [
48
- /* @__PURE__ */ a(r, {
49
- variant: "outlined",
50
- size: "sm",
51
- iconOnly: !0,
52
- disabled: v <= 1,
53
- onClick: () => d(v - 1),
54
- className: "nav",
55
- children: /* @__PURE__ */ a(e, {})
56
- }),
57
- /* @__PURE__ */ o("span", {
58
- className: "info",
59
- children: [
60
- v,
61
- " / ",
62
- _
63
- ]
64
- }),
65
- /* @__PURE__ */ a(r, {
66
- variant: "outlined",
67
- size: "sm",
68
- iconOnly: !0,
69
- disabled: v >= _,
70
- onClick: () => d(v + 1),
71
- className: "nav",
72
- children: /* @__PURE__ */ a(t, {})
73
- })
74
- ]
75
- }) : /* @__PURE__ */ o("nav", {
76
- "aria-label": "pagination",
77
- className: n("pagination", h),
78
- ...g,
79
- children: [
80
- /* @__PURE__ */ a(r, {
81
- variant: "outlined",
82
- size: "sm",
83
- iconOnly: !0,
84
- disabled: v <= 1,
85
- onClick: () => d(v - 1),
86
- className: "nav",
87
- children: /* @__PURE__ */ a(e, {})
88
- }),
89
- y.map((e, t) => e === "dots" ? /* @__PURE__ */ a("span", {
90
- className: "dots",
91
- children: "…"
92
- }, `dots-${t}`) : /* @__PURE__ */ a("button", {
93
- type: "button",
94
- className: n("btn", e === v && "active"),
95
- onClick: () => d(e),
96
- children: e
97
- }, e)),
98
- /* @__PURE__ */ a(r, {
99
- variant: "outlined",
100
- size: "sm",
101
- iconOnly: !0,
102
- disabled: v >= _,
103
- onClick: () => d(v + 1),
104
- className: "nav",
105
- children: /* @__PURE__ */ a(t, {})
106
- })
107
- ]
108
- });
109
- }
110
- //#endregion
111
- export { l as t };
112
-
113
- //# sourceMappingURL=MPagination-E7IixIeo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MPagination-E7IixIeo.js","names":[],"sources":["../src/components/layout/MPagination/MPagination.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MPaginationProps} from './MPagination.types'\nimport './MPagination.css'\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nfunction buildPages(totalPages: number, page: number, siblings: number, boundaries: number): (number | 'dots')[] {\n if (totalPages <= boundaries * 2 + siblings * 2 + 3) {\n return range(1, totalPages)\n }\n\n const leftBound = Math.max(page - siblings, boundaries + 2)\n const rightBound = Math.min(page + siblings, totalPages - boundaries - 1)\n\n const showLeftDots = leftBound > boundaries + 2\n const showRightDots = rightBound < totalPages - boundaries - 1\n\n const leftEdge = range(1, boundaries)\n const rightEdge = range(totalPages - boundaries + 1, totalPages)\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n return [...range(1, leftCount), 'dots', ...rightEdge]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n return [...leftEdge, 'dots', ...range(totalPages - rightCount + 1, totalPages)]\n }\n\n return [...leftEdge, 'dots', ...range(leftBound, rightBound), 'dots', ...rightEdge]\n}\n\nexport function MPagination({\n total,\n page,\n pageSize = 10,\n onChange,\n siblings = 1,\n boundaries = 1,\n variant = 'numbered',\n className,\n ...rest\n}: MPaginationProps) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\n const currentPage = Math.min(Math.max(1, page), totalPages)\n\n const pages = useMemo(\n () => buildPages(totalPages, currentPage, siblings, boundaries),\n [totalPages, currentPage, siblings, boundaries]\n )\n\n if (variant === 'simple') {\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n <span className=\"info\">\n {currentPage} / {totalPages}\n </span>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n }\n\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n {pages.map((p, i) =>\n p === 'dots' ? (\n <span key={`dots-${i}`} className=\"dots\">\n &#8230;\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={cn('btn', p === currentPage && 'active')}\n onClick={() => onChange(p)}\n >\n {p}\n </button>\n )\n )}\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n}\n"],"mappings":";;;;;;AAOA,SAAS,EAAM,GAAe,GAAuB;CACjD,IAAM,IAAmB,EAAE;AAC3B,MAAK,IAAI,IAAI,GAAO,KAAK,GAAK,IAAK,GAAO,KAAK,EAAE;AACjD,QAAO;;AAGX,SAAS,EAAW,GAAoB,GAAc,GAAkB,GAAyC;AAC7G,KAAI,KAAc,IAAa,IAAI,IAAW,IAAI,EAC9C,QAAO,EAAM,GAAG,EAAW;CAG/B,IAAM,IAAY,KAAK,IAAI,IAAO,GAAU,IAAa,EAAE,EACrD,IAAa,KAAK,IAAI,IAAO,GAAU,IAAa,IAAa,EAAE,EAEnE,IAAe,IAAY,IAAa,GACxC,IAAgB,IAAa,IAAa,IAAa,GAEvD,IAAW,EAAM,GAAG,EAAW,EAC/B,IAAY,EAAM,IAAa,IAAa,GAAG,EAAW;AAEhE,KAAI,CAAC,KAAgB,EAEjB,QAAO;EAAC,GAAG,EAAM,GADC,IAAW,IAAI,IAAa,EAChB;EAAE;EAAQ,GAAG;EAAU;AAGzD,KAAI,KAAgB,CAAC,GAAe;EAChC,IAAM,IAAa,IAAW,IAAI,IAAa;AAC/C,SAAO;GAAC,GAAG;GAAU;GAAQ,GAAG,EAAM,IAAa,IAAa,GAAG,EAAW;GAAC;;AAGnF,QAAO;EAAC,GAAG;EAAU;EAAQ,GAAG,EAAM,GAAW,EAAW;EAAE;EAAQ,GAAG;EAAU;;AAGvF,SAAgB,EAAY,EACxB,UACA,SACA,cAAW,IACX,aACA,cAAW,GACX,gBAAa,GACb,aAAU,YACV,cACA,GAAG,KACc;CACjB,IAAM,IAAa,KAAK,IAAI,GAAG,KAAK,KAAK,IAAQ,EAAS,CAAC,EACrD,IAAc,KAAK,IAAI,KAAK,IAAI,GAAG,EAAK,EAAE,EAAW,EAErD,IAAQ,QACJ,EAAW,GAAY,GAAa,GAAU,EAAW,EAC/D;EAAC;EAAY;EAAa;EAAU;EAAW,CAClD;AAgCD,QA9BI,MAAY,WAER,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAW,EAAG,cAAc,EAAU;EAAE,GAAI;YAAzE;GACI,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAoB,CAAA;IACd,CAAA;GACV,kBAAC,QAAD;IAAM,WAAU;cAAhB;KACK;KAAY;KAAI;KACd;;GACP,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAqB,CAAA;IACf,CAAA;GACR;MAKV,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAW,EAAG,cAAc,EAAU;EAAE,GAAI;YAAzE;GACI,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAoB,CAAA;IACd,CAAA;GACT,EAAM,KAAK,GAAG,MACX,MAAM,SACF,kBAAC,QAAD;IAAwB,WAAU;cAAO;IAElC,EAFI,QAAQ,IAEZ,GAEP,kBAAC,UAAD;IAEI,MAAK;IACL,WAAW,EAAG,OAAO,MAAM,KAAe,SAAS;IACnD,eAAe,EAAS,EAAE;cAEzB;IACI,EANA,EAMA,CAEhB;GACD,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAqB,CAAA;IACf,CAAA;GACR"}
@@ -1,2 +0,0 @@
1
- const e=require(`./icons-D3n9-919.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MButton-CnAr77Za.cjs`);require(`./core-w629c4ND.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a(e,t){let n=[];for(let r=e;r<=t;r++)n.push(r);return n}function o(e,t,n,r){if(e<=r*2+n*2+3)return a(1,e);let i=Math.max(t-n,r+2),o=Math.min(t+n,e-r-1),s=i>r+2,c=o<e-r-1,l=a(1,r),u=a(e-r+1,e);if(!s&&c)return[...a(1,n*2+r+2),`dots`,...u];if(s&&!c){let t=n*2+r+2;return[...l,`dots`,...a(e-t+1,e)]}return[...l,`dots`,...a(i,o),`dots`,...u]}function s({total:a,page:s,pageSize:c=10,onChange:l,siblings:u=1,boundaries:d=1,variant:f=`numbered`,className:p,...m}){let h=Math.max(1,Math.ceil(a/c)),g=Math.min(Math.max(1,s),h),_=(0,r.useMemo)(()=>o(h,g,u,d),[h,g,u,d]);return f===`simple`?(0,i.jsxs)(`nav`,{"aria-label":`pagination`,className:t.t(`pagination`,p),...m,children:[(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g<=1,onClick:()=>l(g-1),className:`nav`,children:(0,i.jsx)(e.Ji,{})}),(0,i.jsxs)(`span`,{className:`info`,children:[g,` / `,h]}),(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g>=h,onClick:()=>l(g+1),className:`nav`,children:(0,i.jsx)(e.qi,{})})]}):(0,i.jsxs)(`nav`,{"aria-label":`pagination`,className:t.t(`pagination`,p),...m,children:[(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g<=1,onClick:()=>l(g-1),className:`nav`,children:(0,i.jsx)(e.Ji,{})}),_.map((e,n)=>e===`dots`?(0,i.jsx)(`span`,{className:`dots`,children:`…`},`dots-${n}`):(0,i.jsx)(`button`,{type:`button`,className:t.t(`btn`,e===g&&`active`),onClick:()=>l(e),children:e},e)),(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g>=h,onClick:()=>l(g+1),className:`nav`,children:(0,i.jsx)(e.qi,{})})]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
2
- //# sourceMappingURL=MPagination-reDU9xTW.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MPagination-reDU9xTW.cjs","names":[],"sources":["../src/components/layout/MPagination/MPagination.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MPaginationProps} from './MPagination.types'\nimport './MPagination.css'\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nfunction buildPages(totalPages: number, page: number, siblings: number, boundaries: number): (number | 'dots')[] {\n if (totalPages <= boundaries * 2 + siblings * 2 + 3) {\n return range(1, totalPages)\n }\n\n const leftBound = Math.max(page - siblings, boundaries + 2)\n const rightBound = Math.min(page + siblings, totalPages - boundaries - 1)\n\n const showLeftDots = leftBound > boundaries + 2\n const showRightDots = rightBound < totalPages - boundaries - 1\n\n const leftEdge = range(1, boundaries)\n const rightEdge = range(totalPages - boundaries + 1, totalPages)\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n return [...range(1, leftCount), 'dots', ...rightEdge]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n return [...leftEdge, 'dots', ...range(totalPages - rightCount + 1, totalPages)]\n }\n\n return [...leftEdge, 'dots', ...range(leftBound, rightBound), 'dots', ...rightEdge]\n}\n\nexport function MPagination({\n total,\n page,\n pageSize = 10,\n onChange,\n siblings = 1,\n boundaries = 1,\n variant = 'numbered',\n className,\n ...rest\n}: MPaginationProps) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\n const currentPage = Math.min(Math.max(1, page), totalPages)\n\n const pages = useMemo(\n () => buildPages(totalPages, currentPage, siblings, boundaries),\n [totalPages, currentPage, siblings, boundaries]\n )\n\n if (variant === 'simple') {\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n <span className=\"info\">\n {currentPage} / {totalPages}\n </span>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n }\n\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n {pages.map((p, i) =>\n p === 'dots' ? (\n <span key={`dots-${i}`} className=\"dots\">\n &#8230;\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={cn('btn', p === currentPage && 'active')}\n onClick={() => onChange(p)}\n >\n {p}\n </button>\n )\n )}\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n}\n"],"mappings":"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"}
@@ -1,118 +0,0 @@
1
- import { t as e } from "./cn-YER3QsV1.js";
2
- import { t } from "./MPortal-Ba2Sxset.js";
3
- import { i as n, n as r, r as i } from "./popoverStack--0r2oJCD.js";
4
- import { useCallback as a, useEffect as o, useRef as s, useState as c } from "react";
5
- import { jsx as l } from "react/jsx-runtime";
6
- //#region src/components/primitives/MPopover/MPopover.tsx
7
- function u({ open: u, anchorRef: d, onClose: f, placement: p = "bottom-start", matchWidth: m = !1, offset: h = 4, zIndex: g, children: _, className: v, style: y }) {
8
- let b = s(null), x = s(null);
9
- x.current === null && (x.current = i());
10
- let S = x.current, [C, w] = c(null), [T, E] = c(!1), [D, O] = c(null), k = a(() => {
11
- if (g !== void 0) {
12
- O(g);
13
- return;
14
- }
15
- let e = d.current;
16
- if (!e || typeof window > "u") {
17
- O(null);
18
- return;
19
- }
20
- let t = e.closest(".drawer-backdrop, .modal-backdrop, .sheet-backdrop, .sidebar.mobile-open, .popover");
21
- if (!t) {
22
- O(null);
23
- return;
24
- }
25
- let n = window.getComputedStyle(t).zIndex, r = Number.parseInt(n, 10);
26
- O(Number.isFinite(r) ? r + 1 : null);
27
- }, [d, g]), A = a(() => {
28
- if (!d.current || !b.current) return;
29
- let e = d.current.getBoundingClientRect(), t = {
30
- width: b.current.offsetWidth,
31
- height: b.current.offsetHeight
32
- }, n = {
33
- width: window.innerWidth,
34
- height: window.innerHeight
35
- }, r = p.startsWith("top"), i = p.startsWith("right"), a = p.startsWith("left"), o = i || a, s = p.endsWith("end"), c, l;
36
- if (o) {
37
- let r = n.width - e.right - h, a = e.left - h, o = i ? r < t.width && a > r : a < t.width && r > a;
38
- E(o), l = (i ? !o : o) ? e.right + h + window.scrollX : e.left - t.width - h + window.scrollX, c = s ? e.bottom - t.height + window.scrollY : e.top + window.scrollY, c = Math.min(c, window.scrollY + n.height - t.height - 8);
39
- } else {
40
- let i = n.height - e.bottom - h, a = e.top - h, o = r ? a < t.height && i > a : i < t.height && a > i;
41
- E(o), c = (r ? !o : o) ? e.top - t.height - h + window.scrollY : e.bottom + h + window.scrollY, l = s ? e.right - t.width + window.scrollX : e.left + window.scrollX;
42
- }
43
- l = Math.max(8, Math.min(l, n.width - t.width - 8)), c = Math.max(8 + window.scrollY, c), w({
44
- top: c,
45
- left: l,
46
- width: m ? e.width : void 0
47
- });
48
- }, [
49
- d,
50
- p,
51
- h,
52
- m
53
- ]);
54
- return o(() => {
55
- if (!u) {
56
- w(null), O(null);
57
- return;
58
- }
59
- k(), requestAnimationFrame(A);
60
- let e = typeof ResizeObserver > "u" ? null : new ResizeObserver(() => A());
61
- return e && b.current && e.observe(b.current), document.addEventListener("scroll", A, {
62
- capture: !0,
63
- passive: !0
64
- }), window.addEventListener("resize", A, { passive: !0 }), () => {
65
- e?.disconnect(), document.removeEventListener("scroll", A, { capture: !0 }), window.removeEventListener("resize", A);
66
- };
67
- }, [
68
- u,
69
- k,
70
- A
71
- ]), o(() => {
72
- if (!u) return;
73
- let e = (e) => {
74
- e.key === "Escape" && f();
75
- };
76
- return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
77
- }, [u, f]), o(() => {
78
- if (u) return n({
79
- id: S,
80
- getPopoverEl: () => b.current,
81
- getAnchorEl: () => d.current
82
- });
83
- }, [
84
- u,
85
- S,
86
- d
87
- ]), o(() => {
88
- if (!u) return;
89
- let e = (e) => {
90
- let t = e.target;
91
- b.current?.contains(t) || d.current?.contains(t) || r(S, t) || f();
92
- };
93
- return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
94
- }, [
95
- u,
96
- f,
97
- d,
98
- S
99
- ]), u ? /* @__PURE__ */ l(t, { children: /* @__PURE__ */ l("div", {
100
- ref: b,
101
- className: e("popover", T ? "flipped" : "normal", v),
102
- style: {
103
- position: "absolute",
104
- top: C?.top ?? 0,
105
- left: C?.left ?? 0,
106
- width: C?.width,
107
- zIndex: D ?? void 0,
108
- visibility: C ? "visible" : "hidden",
109
- ...y
110
- },
111
- role: "listbox",
112
- children: _
113
- }) }) : null;
114
- }
115
- //#endregion
116
- export { u as t };
117
-
118
- //# sourceMappingURL=MPopover-8gYD3Ogq.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MPopover-8gYD3Ogq.js","names":[],"sources":["../src/components/primitives/MPopover/MPopover.tsx"],"sourcesContent":["import {useState, useEffect, useRef, useCallback} from 'react'\nimport {MPortal} from '../MPortal'\nimport {cn} from '../../../utils/cn'\nimport {isInsideDescendantPopover, nextPopoverId, registerPopover} from './popoverStack'\nimport type {MPopoverProps} from './MPopover.types'\nimport './MPopover.css'\n\n// Position floating content relative to an anchor with viewport-aware flipping.\nexport function MPopover({\n open,\n anchorRef,\n onClose,\n placement = 'bottom-start',\n matchWidth = false,\n offset = 4,\n zIndex,\n children,\n className,\n style,\n}: MPopoverProps) {\n const popoverRef = useRef<HTMLDivElement>(null)\n const popoverIdRef = useRef<number>(null)\n if (popoverIdRef.current === null) popoverIdRef.current = nextPopoverId()\n const popoverId = popoverIdRef.current\n const [position, setPosition] = useState<{top: number; left: number; width?: number} | null>(null)\n const [flipped, setFlipped] = useState(false)\n const [layerZ, setLayerZ] = useState<number | string | null>(null)\n\n // Lift popovers above drawers, modals and mobile sidebars when the anchor sits inside them.\n const updateLayer = useCallback(() => {\n if (zIndex !== undefined) {\n setLayerZ(zIndex)\n return\n }\n\n const anchor = anchorRef.current\n if (!anchor || typeof window === 'undefined') {\n setLayerZ(null)\n return\n }\n\n const layerHost = anchor.closest(\n '.drawer-backdrop, .modal-backdrop, .sheet-backdrop, .sidebar.mobile-open, .popover'\n )\n if (!layerHost) {\n setLayerZ(null)\n return\n }\n\n const computedZ = window.getComputedStyle(layerHost).zIndex\n const parsedZ = Number.parseInt(computedZ, 10)\n setLayerZ(Number.isFinite(parsedZ) ? parsedZ + 1 : null)\n }, [anchorRef, zIndex])\n\n // Recalculate popover position whenever layout or viewport constraints change.\n const updatePosition = useCallback(() => {\n if (!anchorRef.current || !popoverRef.current) return\n\n const anchor = anchorRef.current.getBoundingClientRect()\n // Layout size, not getBoundingClientRect: the open animation scales the popover, and\n // measuring mid-animation under-reports its height by ~5 % (enough to overflow the\n // viewport after a flip / shift).\n const popover = {width: popoverRef.current.offsetWidth, height: popoverRef.current.offsetHeight}\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const isTop = placement.startsWith('top')\n const isRight = placement.startsWith('right')\n const isLeft = placement.startsWith('left')\n const isHorizontal = isRight || isLeft\n const isEnd = placement.endsWith('end')\n\n let top: number\n let left: number\n\n if (isHorizontal) {\n // Horizontal placement: position to the right or left of the anchor\n const spaceRight = viewport.width - anchor.right - offset\n const spaceLeft = anchor.left - offset\n const shouldFlip = isRight\n ? spaceRight < popover.width && spaceLeft > spaceRight\n : spaceLeft < popover.width && spaceRight > spaceLeft\n\n setFlipped(shouldFlip)\n\n const showOnRight = isRight ? !shouldFlip : shouldFlip\n\n if (showOnRight) {\n left = anchor.right + offset + window.scrollX\n } else {\n left = anchor.left - popover.width - offset + window.scrollX\n }\n\n if (isEnd) {\n top = anchor.bottom - popover.height + window.scrollY\n } else {\n top = anchor.top + window.scrollY\n }\n\n // Shift along the anchor edge so a side popover near the bottom of the viewport\n // slides up instead of running off-screen (the top clamp below wins when it is\n // taller than the viewport).\n top = Math.min(top, window.scrollY + viewport.height - popover.height - 8)\n } else {\n // Vertical placement: position above or below the anchor\n const spaceBelow = viewport.height - anchor.bottom - offset\n const spaceAbove = anchor.top - offset\n const shouldFlip = isTop\n ? spaceAbove < popover.height && spaceBelow > spaceAbove\n : spaceBelow < popover.height && spaceAbove > spaceBelow\n\n setFlipped(shouldFlip)\n\n const showOnTop = isTop ? !shouldFlip : shouldFlip\n\n if (showOnTop) {\n top = anchor.top - popover.height - offset + window.scrollY\n } else {\n top = anchor.bottom + offset + window.scrollY\n }\n\n if (isEnd) {\n left = anchor.right - popover.width + window.scrollX\n } else {\n left = anchor.left + window.scrollX\n }\n }\n\n // Clamp to viewport\n left = Math.max(8, Math.min(left, viewport.width - popover.width - 8))\n top = Math.max(8 + window.scrollY, top)\n\n setPosition({\n top,\n left,\n width: matchWidth ? anchor.width : undefined,\n })\n }, [anchorRef, placement, offset, matchWidth])\n\n useEffect(() => {\n if (!open) {\n setPosition(null)\n setLayerZ(null)\n return\n }\n\n updateLayer()\n // Wait one frame so the rendered popover can be measured accurately.\n requestAnimationFrame(updatePosition)\n\n // Content that grows after opening (images, expanded lists) must re-run the\n // flip / shift, or the popover drifts past the viewport edge.\n const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => updatePosition())\n if (resizeObserver && popoverRef.current) {\n resizeObserver.observe(popoverRef.current)\n }\n\n // `scroll` does not bubble, so a window listener only ever sees the\n // document scrolling. Anchors living inside a scrollable ancestor — an\n // app shell with a scrolling main region, MStickyPanel, an overflowing\n // card — would leave the popover stranded at its opening coordinates\n // while the anchor moved away underneath it. Scroll events do capture,\n // so a capture-phase listener on the document catches scrolling from\n // ANY container, including the document itself.\n document.addEventListener('scroll', updatePosition, {capture: true, passive: true})\n window.addEventListener('resize', updatePosition, {passive: true})\n return () => {\n resizeObserver?.disconnect()\n document.removeEventListener('scroll', updatePosition, {capture: true})\n window.removeEventListener('resize', updatePosition)\n }\n }, [open, updateLayer, updatePosition])\n\n // Close the popover with the standard Escape key interaction.\n useEffect(() => {\n if (!open) return\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n document.addEventListener('keydown', handleKey)\n return () => document.removeEventListener('keydown', handleKey)\n }, [open, onClose])\n\n // Publish this instance while it is open so nested popovers can be related\n // back to it — see popoverStack.ts for why the DOM alone cannot answer this.\n useEffect(() => {\n if (!open) return\n return registerPopover({\n id: popoverId,\n getPopoverEl: () => popoverRef.current,\n getAnchorEl: () => anchorRef.current,\n })\n }, [open, popoverId, anchorRef])\n\n // Close when the user interacts outside both the popover and its anchor.\n useEffect(() => {\n if (!open) return\n const handleClick = (e: MouseEvent) => {\n const target = e.target as Node\n\n if (popoverRef.current?.contains(target) || anchorRef.current?.contains(target)) {\n return\n }\n\n // A popover nested inside this one is portaled to `document.body`,\n // so it fails the `contains` checks above even though the click\n // belongs to this popover's own subtree. Closing here would unmount\n // that child between mousedown and mouseup and swallow its click.\n if (isInsideDescendantPopover(popoverId, target)) {\n return\n }\n\n onClose()\n }\n document.addEventListener('mousedown', handleClick)\n return () => document.removeEventListener('mousedown', handleClick)\n }, [open, onClose, anchorRef, popoverId])\n\n if (!open) return null\n\n return (\n <MPortal>\n <div\n ref={popoverRef}\n className={cn('popover', flipped ? 'flipped' : 'normal', className)}\n style={{\n position: 'absolute',\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n width: position?.width,\n zIndex: layerZ ?? undefined,\n visibility: position ? 'visible' : 'hidden',\n ...style,\n }}\n role=\"listbox\"\n >\n {children}\n </div>\n </MPortal>\n )\n}\n"],"mappings":";;;;;;AAQA,SAAgB,EAAS,EACrB,SACA,cACA,YACA,eAAY,gBACZ,gBAAa,IACb,YAAS,GACT,WACA,aACA,cACA,YACc;CACd,IAAM,IAAa,EAAuB,KAAK,EACzC,IAAe,EAAe,KAAK;AACzC,CAAI,EAAa,YAAY,SAAM,EAAa,UAAU,GAAe;CACzE,IAAM,IAAY,EAAa,SACzB,CAAC,GAAU,KAAe,EAA6D,KAAK,EAC5F,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAQ,KAAa,EAAiC,KAAK,EAG5D,IAAc,QAAkB;AAClC,MAAI,MAAW,KAAA,GAAW;AACtB,KAAU,EAAO;AACjB;;EAGJ,IAAM,IAAS,EAAU;AACzB,MAAI,CAAC,KAAU,OAAO,SAAW,KAAa;AAC1C,KAAU,KAAK;AACf;;EAGJ,IAAM,IAAY,EAAO,QACrB,qFACH;AACD,MAAI,CAAC,GAAW;AACZ,KAAU,KAAK;AACf;;EAGJ,IAAM,IAAY,OAAO,iBAAiB,EAAU,CAAC,QAC/C,IAAU,OAAO,SAAS,GAAW,GAAG;AAC9C,IAAU,OAAO,SAAS,EAAQ,GAAG,IAAU,IAAI,KAAK;IACzD,CAAC,GAAW,EAAO,CAAC,EAGjB,IAAiB,QAAkB;AACrC,MAAI,CAAC,EAAU,WAAW,CAAC,EAAW,QAAS;EAE/C,IAAM,IAAS,EAAU,QAAQ,uBAAuB,EAIlD,IAAU;GAAC,OAAO,EAAW,QAAQ;GAAa,QAAQ,EAAW,QAAQ;GAAa,EAC1F,IAAW;GACb,OAAO,OAAO;GACd,QAAQ,OAAO;GAClB,EAEK,IAAQ,EAAU,WAAW,MAAM,EACnC,IAAU,EAAU,WAAW,QAAQ,EACvC,IAAS,EAAU,WAAW,OAAO,EACrC,IAAe,KAAW,GAC1B,IAAQ,EAAU,SAAS,MAAM,EAEnC,GACA;AAEJ,MAAI,GAAc;GAEd,IAAM,IAAa,EAAS,QAAQ,EAAO,QAAQ,GAC7C,IAAY,EAAO,OAAO,GAC1B,IAAa,IACb,IAAa,EAAQ,SAAS,IAAY,IAC1C,IAAY,EAAQ,SAAS,IAAa;AAqBhD,GAnBA,EAAW,EAAW,EAItB,AAGI,KALgB,IAAU,CAAC,IAAa,KAGjC,EAAO,QAAQ,IAAS,OAAO,UAE/B,EAAO,OAAO,EAAQ,QAAQ,IAAS,OAAO,SAGzD,AAGI,IAHA,IACM,EAAO,SAAS,EAAQ,SAAS,OAAO,UAExC,EAAO,MAAM,OAAO,SAM9B,IAAM,KAAK,IAAI,GAAK,OAAO,UAAU,EAAS,SAAS,EAAQ,SAAS,EAAE;SACvE;GAEH,IAAM,IAAa,EAAS,SAAS,EAAO,SAAS,GAC/C,IAAa,EAAO,MAAM,GAC1B,IAAa,IACb,IAAa,EAAQ,UAAU,IAAa,IAC5C,IAAa,EAAQ,UAAU,IAAa;AAYlD,GAVA,EAAW,EAAW,EAItB,AAGI,KALc,IAAQ,CAAC,IAAa,KAG9B,EAAO,MAAM,EAAQ,SAAS,IAAS,OAAO,UAE9C,EAAO,SAAS,IAAS,OAAO,SAG1C,AAGI,IAHA,IACO,EAAO,QAAQ,EAAQ,QAAQ,OAAO,UAEtC,EAAO,OAAO,OAAO;;AAQpC,EAHA,IAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAM,EAAS,QAAQ,EAAQ,QAAQ,EAAE,CAAC,EACtE,IAAM,KAAK,IAAI,IAAI,OAAO,SAAS,EAAI,EAEvC,EAAY;GACR;GACA;GACA,OAAO,IAAa,EAAO,QAAQ,KAAA;GACtC,CAAC;IACH;EAAC;EAAW;EAAW;EAAQ;EAAW,CAAC;AAmF9C,QAjFA,QAAgB;AACZ,MAAI,CAAC,GAAM;AAEP,GADA,EAAY,KAAK,EACjB,EAAU,KAAK;AACf;;AAKJ,EAFA,GAAa,EAEb,sBAAsB,EAAe;EAIrC,IAAM,IAAiB,OAAO,iBAAmB,MAAc,OAAO,IAAI,qBAAqB,GAAgB,CAAC;AAchH,SAbI,KAAkB,EAAW,WAC7B,EAAe,QAAQ,EAAW,QAAQ,EAU9C,SAAS,iBAAiB,UAAU,GAAgB;GAAC,SAAS;GAAM,SAAS;GAAK,CAAC,EACnF,OAAO,iBAAiB,UAAU,GAAgB,EAAC,SAAS,IAAK,CAAC,QACrD;AAGT,GAFA,GAAgB,YAAY,EAC5B,SAAS,oBAAoB,UAAU,GAAgB,EAAC,SAAS,IAAK,CAAC,EACvE,OAAO,oBAAoB,UAAU,EAAe;;IAEzD;EAAC;EAAM;EAAa;EAAe,CAAC,EAGvC,QAAgB;AACZ,MAAI,CAAC,EAAM;EACX,IAAM,KAAa,MAAqB;AACpC,GAAI,EAAE,QAAQ,YAAU,GAAS;;AAGrC,SADA,SAAS,iBAAiB,WAAW,EAAU,QAClC,SAAS,oBAAoB,WAAW,EAAU;IAChE,CAAC,GAAM,EAAQ,CAAC,EAInB,QAAgB;AACP,QACL,QAAO,EAAgB;GACnB,IAAI;GACJ,oBAAoB,EAAW;GAC/B,mBAAmB,EAAU;GAChC,CAAC;IACH;EAAC;EAAM;EAAW;EAAU,CAAC,EAGhC,QAAgB;AACZ,MAAI,CAAC,EAAM;EACX,IAAM,KAAe,MAAkB;GACnC,IAAM,IAAS,EAAE;AAEb,KAAW,SAAS,SAAS,EAAO,IAAI,EAAU,SAAS,SAAS,EAAO,IAQ3E,EAA0B,GAAW,EAAO,IAIhD,GAAS;;AAGb,SADA,SAAS,iBAAiB,aAAa,EAAY,QACtC,SAAS,oBAAoB,aAAa,EAAY;IACpE;EAAC;EAAM;EAAS;EAAW;EAAU,CAAC,EAEpC,IAGD,kBAAC,GAAD,EAAA,UACI,kBAAC,OAAD;EACI,KAAK;EACL,WAAW,EAAG,WAAW,IAAU,YAAY,UAAU,EAAU;EACnE,OAAO;GACH,UAAU;GACV,KAAK,GAAU,OAAO;GACtB,MAAM,GAAU,QAAQ;GACxB,OAAO,GAAU;GACjB,QAAQ,KAAU,KAAA;GAClB,YAAY,IAAW,YAAY;GACnC,GAAG;GACN;EACD,MAAK;EAEJ;EACC,CAAA,EACA,CAAA,GApBI"}
@@ -1,2 +0,0 @@
1
- const e=require(`./cn-CU5TNITO.cjs`),t=require(`./MPortal-CuBXhhl_.cjs`),n=require(`./popoverStack-BmMk-VZJ.cjs`);require(`./core-w629c4ND.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a({open:a,anchorRef:o,onClose:s,placement:c=`bottom-start`,matchWidth:l=!1,offset:u=4,zIndex:d,children:f,className:p,style:m}){let h=(0,r.useRef)(null),g=(0,r.useRef)(null);g.current===null&&(g.current=n.r());let _=g.current,[v,y]=(0,r.useState)(null),[b,x]=(0,r.useState)(!1),[S,C]=(0,r.useState)(null),w=(0,r.useCallback)(()=>{if(d!==void 0){C(d);return}let e=o.current;if(!e||typeof window>`u`){C(null);return}let t=e.closest(`.drawer-backdrop, .modal-backdrop, .sheet-backdrop, .sidebar.mobile-open, .popover`);if(!t){C(null);return}let n=window.getComputedStyle(t).zIndex,r=Number.parseInt(n,10);C(Number.isFinite(r)?r+1:null)},[o,d]),T=(0,r.useCallback)(()=>{if(!o.current||!h.current)return;let e=o.current.getBoundingClientRect(),t={width:h.current.offsetWidth,height:h.current.offsetHeight},n={width:window.innerWidth,height:window.innerHeight},r=c.startsWith(`top`),i=c.startsWith(`right`),a=c.startsWith(`left`),s=i||a,d=c.endsWith(`end`),f,p;if(s){let r=n.width-e.right-u,a=e.left-u,o=i?r<t.width&&a>r:a<t.width&&r>a;x(o),p=(i?!o:o)?e.right+u+window.scrollX:e.left-t.width-u+window.scrollX,f=d?e.bottom-t.height+window.scrollY:e.top+window.scrollY,f=Math.min(f,window.scrollY+n.height-t.height-8)}else{let i=n.height-e.bottom-u,a=e.top-u,o=r?a<t.height&&i>a:i<t.height&&a>i;x(o),f=(r?!o:o)?e.top-t.height-u+window.scrollY:e.bottom+u+window.scrollY,p=d?e.right-t.width+window.scrollX:e.left+window.scrollX}p=Math.max(8,Math.min(p,n.width-t.width-8)),f=Math.max(8+window.scrollY,f),y({top:f,left:p,width:l?e.width:void 0})},[o,c,u,l]);return(0,r.useEffect)(()=>{if(!a){y(null),C(null);return}w(),requestAnimationFrame(T);let e=typeof ResizeObserver>`u`?null:new ResizeObserver(()=>T());return e&&h.current&&e.observe(h.current),document.addEventListener(`scroll`,T,{capture:!0,passive:!0}),window.addEventListener(`resize`,T,{passive:!0}),()=>{e?.disconnect(),document.removeEventListener(`scroll`,T,{capture:!0}),window.removeEventListener(`resize`,T)}},[a,w,T]),(0,r.useEffect)(()=>{if(!a)return;let e=e=>{e.key===`Escape`&&s()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a,s]),(0,r.useEffect)(()=>{if(a)return n.i({id:_,getPopoverEl:()=>h.current,getAnchorEl:()=>o.current})},[a,_,o]),(0,r.useEffect)(()=>{if(!a)return;let e=e=>{let t=e.target;h.current?.contains(t)||o.current?.contains(t)||n.n(_,t)||s()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[a,s,o,_]),a?(0,i.jsx)(t.t,{children:(0,i.jsx)(`div`,{ref:h,className:e.t(`popover`,b?`flipped`:`normal`,p),style:{position:`absolute`,top:v?.top??0,left:v?.left??0,width:v?.width,zIndex:S??void 0,visibility:v?`visible`:`hidden`,...m},role:`listbox`,children:f})}):null}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
2
- //# sourceMappingURL=MPopover-B3npyAkL.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MPopover-B3npyAkL.cjs","names":[],"sources":["../src/components/primitives/MPopover/MPopover.tsx"],"sourcesContent":["import {useState, useEffect, useRef, useCallback} from 'react'\nimport {MPortal} from '../MPortal'\nimport {cn} from '../../../utils/cn'\nimport {isInsideDescendantPopover, nextPopoverId, registerPopover} from './popoverStack'\nimport type {MPopoverProps} from './MPopover.types'\nimport './MPopover.css'\n\n// Position floating content relative to an anchor with viewport-aware flipping.\nexport function MPopover({\n open,\n anchorRef,\n onClose,\n placement = 'bottom-start',\n matchWidth = false,\n offset = 4,\n zIndex,\n children,\n className,\n style,\n}: MPopoverProps) {\n const popoverRef = useRef<HTMLDivElement>(null)\n const popoverIdRef = useRef<number>(null)\n if (popoverIdRef.current === null) popoverIdRef.current = nextPopoverId()\n const popoverId = popoverIdRef.current\n const [position, setPosition] = useState<{top: number; left: number; width?: number} | null>(null)\n const [flipped, setFlipped] = useState(false)\n const [layerZ, setLayerZ] = useState<number | string | null>(null)\n\n // Lift popovers above drawers, modals and mobile sidebars when the anchor sits inside them.\n const updateLayer = useCallback(() => {\n if (zIndex !== undefined) {\n setLayerZ(zIndex)\n return\n }\n\n const anchor = anchorRef.current\n if (!anchor || typeof window === 'undefined') {\n setLayerZ(null)\n return\n }\n\n const layerHost = anchor.closest(\n '.drawer-backdrop, .modal-backdrop, .sheet-backdrop, .sidebar.mobile-open, .popover'\n )\n if (!layerHost) {\n setLayerZ(null)\n return\n }\n\n const computedZ = window.getComputedStyle(layerHost).zIndex\n const parsedZ = Number.parseInt(computedZ, 10)\n setLayerZ(Number.isFinite(parsedZ) ? parsedZ + 1 : null)\n }, [anchorRef, zIndex])\n\n // Recalculate popover position whenever layout or viewport constraints change.\n const updatePosition = useCallback(() => {\n if (!anchorRef.current || !popoverRef.current) return\n\n const anchor = anchorRef.current.getBoundingClientRect()\n // Layout size, not getBoundingClientRect: the open animation scales the popover, and\n // measuring mid-animation under-reports its height by ~5 % (enough to overflow the\n // viewport after a flip / shift).\n const popover = {width: popoverRef.current.offsetWidth, height: popoverRef.current.offsetHeight}\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const isTop = placement.startsWith('top')\n const isRight = placement.startsWith('right')\n const isLeft = placement.startsWith('left')\n const isHorizontal = isRight || isLeft\n const isEnd = placement.endsWith('end')\n\n let top: number\n let left: number\n\n if (isHorizontal) {\n // Horizontal placement: position to the right or left of the anchor\n const spaceRight = viewport.width - anchor.right - offset\n const spaceLeft = anchor.left - offset\n const shouldFlip = isRight\n ? spaceRight < popover.width && spaceLeft > spaceRight\n : spaceLeft < popover.width && spaceRight > spaceLeft\n\n setFlipped(shouldFlip)\n\n const showOnRight = isRight ? !shouldFlip : shouldFlip\n\n if (showOnRight) {\n left = anchor.right + offset + window.scrollX\n } else {\n left = anchor.left - popover.width - offset + window.scrollX\n }\n\n if (isEnd) {\n top = anchor.bottom - popover.height + window.scrollY\n } else {\n top = anchor.top + window.scrollY\n }\n\n // Shift along the anchor edge so a side popover near the bottom of the viewport\n // slides up instead of running off-screen (the top clamp below wins when it is\n // taller than the viewport).\n top = Math.min(top, window.scrollY + viewport.height - popover.height - 8)\n } else {\n // Vertical placement: position above or below the anchor\n const spaceBelow = viewport.height - anchor.bottom - offset\n const spaceAbove = anchor.top - offset\n const shouldFlip = isTop\n ? spaceAbove < popover.height && spaceBelow > spaceAbove\n : spaceBelow < popover.height && spaceAbove > spaceBelow\n\n setFlipped(shouldFlip)\n\n const showOnTop = isTop ? !shouldFlip : shouldFlip\n\n if (showOnTop) {\n top = anchor.top - popover.height - offset + window.scrollY\n } else {\n top = anchor.bottom + offset + window.scrollY\n }\n\n if (isEnd) {\n left = anchor.right - popover.width + window.scrollX\n } else {\n left = anchor.left + window.scrollX\n }\n }\n\n // Clamp to viewport\n left = Math.max(8, Math.min(left, viewport.width - popover.width - 8))\n top = Math.max(8 + window.scrollY, top)\n\n setPosition({\n top,\n left,\n width: matchWidth ? anchor.width : undefined,\n })\n }, [anchorRef, placement, offset, matchWidth])\n\n useEffect(() => {\n if (!open) {\n setPosition(null)\n setLayerZ(null)\n return\n }\n\n updateLayer()\n // Wait one frame so the rendered popover can be measured accurately.\n requestAnimationFrame(updatePosition)\n\n // Content that grows after opening (images, expanded lists) must re-run the\n // flip / shift, or the popover drifts past the viewport edge.\n const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => updatePosition())\n if (resizeObserver && popoverRef.current) {\n resizeObserver.observe(popoverRef.current)\n }\n\n // `scroll` does not bubble, so a window listener only ever sees the\n // document scrolling. Anchors living inside a scrollable ancestor — an\n // app shell with a scrolling main region, MStickyPanel, an overflowing\n // card — would leave the popover stranded at its opening coordinates\n // while the anchor moved away underneath it. Scroll events do capture,\n // so a capture-phase listener on the document catches scrolling from\n // ANY container, including the document itself.\n document.addEventListener('scroll', updatePosition, {capture: true, passive: true})\n window.addEventListener('resize', updatePosition, {passive: true})\n return () => {\n resizeObserver?.disconnect()\n document.removeEventListener('scroll', updatePosition, {capture: true})\n window.removeEventListener('resize', updatePosition)\n }\n }, [open, updateLayer, updatePosition])\n\n // Close the popover with the standard Escape key interaction.\n useEffect(() => {\n if (!open) return\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n document.addEventListener('keydown', handleKey)\n return () => document.removeEventListener('keydown', handleKey)\n }, [open, onClose])\n\n // Publish this instance while it is open so nested popovers can be related\n // back to it — see popoverStack.ts for why the DOM alone cannot answer this.\n useEffect(() => {\n if (!open) return\n return registerPopover({\n id: popoverId,\n getPopoverEl: () => popoverRef.current,\n getAnchorEl: () => anchorRef.current,\n })\n }, [open, popoverId, anchorRef])\n\n // Close when the user interacts outside both the popover and its anchor.\n useEffect(() => {\n if (!open) return\n const handleClick = (e: MouseEvent) => {\n const target = e.target as Node\n\n if (popoverRef.current?.contains(target) || anchorRef.current?.contains(target)) {\n return\n }\n\n // A popover nested inside this one is portaled to `document.body`,\n // so it fails the `contains` checks above even though the click\n // belongs to this popover's own subtree. Closing here would unmount\n // that child between mousedown and mouseup and swallow its click.\n if (isInsideDescendantPopover(popoverId, target)) {\n return\n }\n\n onClose()\n }\n document.addEventListener('mousedown', handleClick)\n return () => document.removeEventListener('mousedown', handleClick)\n }, [open, onClose, anchorRef, popoverId])\n\n if (!open) return null\n\n return (\n <MPortal>\n <div\n ref={popoverRef}\n className={cn('popover', flipped ? 'flipped' : 'normal', className)}\n style={{\n position: 'absolute',\n top: position?.top ?? 0,\n left: position?.left ?? 0,\n width: position?.width,\n zIndex: layerZ ?? undefined,\n visibility: position ? 'visible' : 'hidden',\n ...style,\n }}\n role=\"listbox\"\n >\n {children}\n </div>\n </MPortal>\n )\n}\n"],"mappings":"uMAQA,SAAgB,EAAS,CACrB,OACA,YACA,UACA,YAAY,eACZ,aAAa,GACb,SAAS,EACT,SACA,WACA,YACA,SACc,CACd,IAAM,GAAA,EAAA,EAAA,QAAoC,KAAK,CACzC,GAAA,EAAA,EAAA,QAA8B,KAAK,CACrC,EAAa,UAAY,OAAM,EAAa,QAAU,EAAA,GAAe,EACzE,IAAM,EAAY,EAAa,QACzB,CAAC,EAAU,IAAA,EAAA,EAAA,UAA4E,KAAK,CAC5F,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAQ,IAAA,EAAA,EAAA,UAA8C,KAAK,CAG5D,GAAA,EAAA,EAAA,iBAAgC,CAClC,GAAI,IAAW,IAAA,GAAW,CACtB,EAAU,EAAO,CACjB,OAGJ,IAAM,EAAS,EAAU,QACzB,GAAI,CAAC,GAAU,OAAO,OAAW,IAAa,CAC1C,EAAU,KAAK,CACf,OAGJ,IAAM,EAAY,EAAO,QACrB,qFACH,CACD,GAAI,CAAC,EAAW,CACZ,EAAU,KAAK,CACf,OAGJ,IAAM,EAAY,OAAO,iBAAiB,EAAU,CAAC,OAC/C,EAAU,OAAO,SAAS,EAAW,GAAG,CAC9C,EAAU,OAAO,SAAS,EAAQ,CAAG,EAAU,EAAI,KAAK,EACzD,CAAC,EAAW,EAAO,CAAC,CAGjB,GAAA,EAAA,EAAA,iBAAmC,CACrC,GAAI,CAAC,EAAU,SAAW,CAAC,EAAW,QAAS,OAE/C,IAAM,EAAS,EAAU,QAAQ,uBAAuB,CAIlD,EAAU,CAAC,MAAO,EAAW,QAAQ,YAAa,OAAQ,EAAW,QAAQ,aAAa,CAC1F,EAAW,CACb,MAAO,OAAO,WACd,OAAQ,OAAO,YAClB,CAEK,EAAQ,EAAU,WAAW,MAAM,CACnC,EAAU,EAAU,WAAW,QAAQ,CACvC,EAAS,EAAU,WAAW,OAAO,CACrC,EAAe,GAAW,EAC1B,EAAQ,EAAU,SAAS,MAAM,CAEnC,EACA,EAEJ,GAAI,EAAc,CAEd,IAAM,EAAa,EAAS,MAAQ,EAAO,MAAQ,EAC7C,EAAY,EAAO,KAAO,EAC1B,EAAa,EACb,EAAa,EAAQ,OAAS,EAAY,EAC1C,EAAY,EAAQ,OAAS,EAAa,EAEhD,EAAW,EAAW,CAItB,AAGI,GALgB,EAAU,CAAC,EAAa,GAGjC,EAAO,MAAQ,EAAS,OAAO,QAE/B,EAAO,KAAO,EAAQ,MAAQ,EAAS,OAAO,QAGzD,AAGI,EAHA,EACM,EAAO,OAAS,EAAQ,OAAS,OAAO,QAExC,EAAO,IAAM,OAAO,QAM9B,EAAM,KAAK,IAAI,EAAK,OAAO,QAAU,EAAS,OAAS,EAAQ,OAAS,EAAE,KACvE,CAEH,IAAM,EAAa,EAAS,OAAS,EAAO,OAAS,EAC/C,EAAa,EAAO,IAAM,EAC1B,EAAa,EACb,EAAa,EAAQ,QAAU,EAAa,EAC5C,EAAa,EAAQ,QAAU,EAAa,EAElD,EAAW,EAAW,CAItB,AAGI,GALc,EAAQ,CAAC,EAAa,GAG9B,EAAO,IAAM,EAAQ,OAAS,EAAS,OAAO,QAE9C,EAAO,OAAS,EAAS,OAAO,QAG1C,AAGI,EAHA,EACO,EAAO,MAAQ,EAAQ,MAAQ,OAAO,QAEtC,EAAO,KAAO,OAAO,QAKpC,EAAO,KAAK,IAAI,EAAG,KAAK,IAAI,EAAM,EAAS,MAAQ,EAAQ,MAAQ,EAAE,CAAC,CACtE,EAAM,KAAK,IAAI,EAAI,OAAO,QAAS,EAAI,CAEvC,EAAY,CACR,MACA,OACA,MAAO,EAAa,EAAO,MAAQ,IAAA,GACtC,CAAC,EACH,CAAC,EAAW,EAAW,EAAQ,EAAW,CAAC,CAmF9C,OAjFA,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAM,CACP,EAAY,KAAK,CACjB,EAAU,KAAK,CACf,OAGJ,GAAa,CAEb,sBAAsB,EAAe,CAIrC,IAAM,EAAiB,OAAO,eAAmB,IAAc,KAAO,IAAI,mBAAqB,GAAgB,CAAC,CAchH,OAbI,GAAkB,EAAW,SAC7B,EAAe,QAAQ,EAAW,QAAQ,CAU9C,SAAS,iBAAiB,SAAU,EAAgB,CAAC,QAAS,GAAM,QAAS,GAAK,CAAC,CACnF,OAAO,iBAAiB,SAAU,EAAgB,CAAC,QAAS,GAAK,CAAC,KACrD,CACT,GAAgB,YAAY,CAC5B,SAAS,oBAAoB,SAAU,EAAgB,CAAC,QAAS,GAAK,CAAC,CACvE,OAAO,oBAAoB,SAAU,EAAe,GAEzD,CAAC,EAAM,EAAa,EAAe,CAAC,EAGvC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAM,OACX,IAAM,EAAa,GAAqB,CAChC,EAAE,MAAQ,UAAU,GAAS,EAGrC,OADA,SAAS,iBAAiB,UAAW,EAAU,KAClC,SAAS,oBAAoB,UAAW,EAAU,EAChE,CAAC,EAAM,EAAQ,CAAC,EAInB,EAAA,EAAA,eAAgB,CACP,KACL,OAAO,EAAA,EAAgB,CACnB,GAAI,EACJ,iBAAoB,EAAW,QAC/B,gBAAmB,EAAU,QAChC,CAAC,EACH,CAAC,EAAM,EAAW,EAAU,CAAC,EAGhC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAM,OACX,IAAM,EAAe,GAAkB,CACnC,IAAM,EAAS,EAAE,OAEb,EAAW,SAAS,SAAS,EAAO,EAAI,EAAU,SAAS,SAAS,EAAO,EAQ3E,EAAA,EAA0B,EAAW,EAAO,EAIhD,GAAS,EAGb,OADA,SAAS,iBAAiB,YAAa,EAAY,KACtC,SAAS,oBAAoB,YAAa,EAAY,EACpE,CAAC,EAAM,EAAS,EAAW,EAAU,CAAC,CAEpC,GAGD,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,IAAK,EACL,UAAW,EAAA,EAAG,UAAW,EAAU,UAAY,SAAU,EAAU,CACnE,MAAO,CACH,SAAU,WACV,IAAK,GAAU,KAAO,EACtB,KAAM,GAAU,MAAQ,EACxB,MAAO,GAAU,MACjB,OAAQ,GAAU,IAAA,GAClB,WAAY,EAAW,UAAY,SACnC,GAAG,EACN,CACD,KAAK,UAEJ,WACC,CAAA,CACA,CAAA,CApBI"}
@@ -1,10 +0,0 @@
1
- import { createPortal as e } from "react-dom";
2
- //#region src/components/primitives/MPortal/MPortal.tsx
3
- function t({ children: t, container: n }) {
4
- let r = n ?? (typeof document < "u" ? document.body : null);
5
- return r ? e(t, r) : null;
6
- }
7
- //#endregion
8
- export { t };
9
-
10
- //# sourceMappingURL=MPortal-Ba2Sxset.js.map