@banzamel/mineralui 2.4.3 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. package/README.md +1 -1
  2. package/dist/MAvatar-CvQuiGvT.cjs +2 -0
  3. package/dist/MAvatar-CvQuiGvT.cjs.map +1 -0
  4. package/dist/MAvatar-EkOBrEtS.js +73 -0
  5. package/dist/MAvatar-EkOBrEtS.js.map +1 -0
  6. package/dist/MButton-BxEky3xQ.cjs +2 -0
  7. package/dist/MButton-BxEky3xQ.cjs.map +1 -0
  8. package/dist/MButton-KELyyBw1.js +123 -0
  9. package/dist/MButton-KELyyBw1.js.map +1 -0
  10. package/dist/{MButtonGroup-BEJxXZ8u.js → MButtonGroup-DDnn8Wfy.js} +3 -3
  11. package/dist/{MButtonGroup-BEJxXZ8u.js.map → MButtonGroup-DDnn8Wfy.js.map} +1 -1
  12. package/dist/{MButtonGroup-DO1Tq3Za.cjs → MButtonGroup-Dz8Fm-oA.cjs} +2 -2
  13. package/dist/{MButtonGroup-DO1Tq3Za.cjs.map → MButtonGroup-Dz8Fm-oA.cjs.map} +1 -1
  14. package/dist/{MCard-P8OoswWM.cjs → MCard-Bqm4BjK_.cjs} +2 -2
  15. package/dist/MCard-Bqm4BjK_.cjs.map +1 -0
  16. package/dist/{MCard-BqSkGAgf.js → MCard-CqZYGaS2.js} +4 -4
  17. package/dist/MCard-CqZYGaS2.js.map +1 -0
  18. package/dist/MCheckbox-CaWgyUn5.js +72 -0
  19. package/dist/MCheckbox-CaWgyUn5.js.map +1 -0
  20. package/dist/MCheckbox-DpKJpnFF.cjs +2 -0
  21. package/dist/MCheckbox-DpKJpnFF.cjs.map +1 -0
  22. package/dist/{MConflictIllustration-znC7ijmP.js → MConflictIllustration-dwZS44ye.js} +1517 -1515
  23. package/dist/MConflictIllustration-dwZS44ye.js.map +1 -0
  24. package/dist/MConflictIllustration-vfHs-jad.cjs +2 -0
  25. package/dist/MConflictIllustration-vfHs-jad.cjs.map +1 -0
  26. package/dist/MDetailList-C3othNs3.js +127 -0
  27. package/dist/MDetailList-C3othNs3.js.map +1 -0
  28. package/dist/MDetailList-DkDHLdJ8.cjs +2 -0
  29. package/dist/MDetailList-DkDHLdJ8.cjs.map +1 -0
  30. package/dist/MDropdownMenu-C4-r7UZM.cjs +2 -0
  31. package/dist/MDropdownMenu-C4-r7UZM.cjs.map +1 -0
  32. package/dist/MDropdownMenu-Dvg9UsHB.js +219 -0
  33. package/dist/MDropdownMenu-Dvg9UsHB.js.map +1 -0
  34. package/dist/MGrid-CQqT8nHi.js +271 -0
  35. package/dist/MGrid-CQqT8nHi.js.map +1 -0
  36. package/dist/MGrid-tBsqShLG.cjs +2 -0
  37. package/dist/MGrid-tBsqShLG.cjs.map +1 -0
  38. package/dist/MHeading-DQSQ8c7L.js +21 -0
  39. package/dist/MHeading-DQSQ8c7L.js.map +1 -0
  40. package/dist/MHeading-DiGYs1FJ.cjs +2 -0
  41. package/dist/MHeading-DiGYs1FJ.cjs.map +1 -0
  42. package/dist/MInput-BeEGufZG.cjs +2 -0
  43. package/dist/MInput-BeEGufZG.cjs.map +1 -0
  44. package/dist/MInput-QnQV9L8U.js +190 -0
  45. package/dist/MInput-QnQV9L8U.js.map +1 -0
  46. package/dist/MInputCVC-CCNRAqHw.cjs +2 -0
  47. package/dist/MInputCVC-CCNRAqHw.cjs.map +1 -0
  48. package/dist/MInputCVC-IXIYZwex.js +410 -0
  49. package/dist/MInputCVC-IXIYZwex.js.map +1 -0
  50. package/dist/MInputSearch-BSIc6m2P.cjs +2 -0
  51. package/dist/MInputSearch-BSIc6m2P.cjs.map +1 -0
  52. package/dist/MInputSearch-CNuTAbYs.js +44 -0
  53. package/dist/MInputSearch-CNuTAbYs.js.map +1 -0
  54. package/dist/{MKbd-BR1GX5oK.cjs → MKbd-CnW3NUIu.cjs} +2 -2
  55. package/dist/{MKbd-BR1GX5oK.cjs.map → MKbd-CnW3NUIu.cjs.map} +1 -1
  56. package/dist/{MKbd-COb7oh_k.js → MKbd-DjfGyajR.js} +2 -2
  57. package/dist/{MKbd-COb7oh_k.js.map → MKbd-DjfGyajR.js.map} +1 -1
  58. package/dist/MLink-C6uwA6db.cjs +2 -0
  59. package/dist/MLink-C6uwA6db.cjs.map +1 -0
  60. package/dist/MLink-ixg0xFFI.js +31 -0
  61. package/dist/MLink-ixg0xFFI.js.map +1 -0
  62. package/dist/MLoader-CViA3zBo.js +44 -0
  63. package/dist/MLoader-CViA3zBo.js.map +1 -0
  64. package/dist/MLoader-DUOoOoNE.cjs +2 -0
  65. package/dist/MLoader-DUOoOoNE.cjs.map +1 -0
  66. package/dist/MPagination-BTGenxWW.js +122 -0
  67. package/dist/MPagination-BTGenxWW.js.map +1 -0
  68. package/dist/MPagination-DitmdtCc.cjs +2 -0
  69. package/dist/MPagination-DitmdtCc.cjs.map +1 -0
  70. package/dist/MPopover-CBDbUOW6.js +183 -0
  71. package/dist/MPopover-CBDbUOW6.js.map +1 -0
  72. package/dist/MPopover-ZeoU9hb5.cjs +2 -0
  73. package/dist/MPopover-ZeoU9hb5.cjs.map +1 -0
  74. package/dist/{MSimpleGrid-Ui8cI0ho.js → MSimpleGrid-C_QvLmck.js} +3 -3
  75. package/dist/MSimpleGrid-C_QvLmck.js.map +1 -0
  76. package/dist/MSimpleGrid-wgvjnxwM.cjs +2 -0
  77. package/dist/MSimpleGrid-wgvjnxwM.cjs.map +1 -0
  78. package/dist/{MSkeleton-Dhu-loDO.js → MSkeleton-BpcpBBJq.js} +12 -10
  79. package/dist/MSkeleton-BpcpBBJq.js.map +1 -0
  80. package/dist/MSkeleton-DuAN8Vcv.cjs +2 -0
  81. package/dist/MSkeleton-DuAN8Vcv.cjs.map +1 -0
  82. package/dist/MSlider-CLASUc2H.js +134 -0
  83. package/dist/MSlider-CLASUc2H.js.map +1 -0
  84. package/dist/MSlider-hONQBulE.cjs +2 -0
  85. package/dist/MSlider-hONQBulE.cjs.map +1 -0
  86. package/dist/MStack-BwAFeGGg.js +39 -0
  87. package/dist/MStack-BwAFeGGg.js.map +1 -0
  88. package/dist/MStack-CGII4A-q.cjs +2 -0
  89. package/dist/MStack-CGII4A-q.cjs.map +1 -0
  90. package/dist/MSubText-BeZk-fhz.js +17 -0
  91. package/dist/MSubText-BeZk-fhz.js.map +1 -0
  92. package/dist/MSubText-Dl1PfToZ.cjs +2 -0
  93. package/dist/MSubText-Dl1PfToZ.cjs.map +1 -0
  94. package/dist/MSurface-B_QnRLr5.js +74 -0
  95. package/dist/MSurface-B_QnRLr5.js.map +1 -0
  96. package/dist/MSurface-BrFo-JMJ.cjs +2 -0
  97. package/dist/MSurface-BrFo-JMJ.cjs.map +1 -0
  98. package/dist/MTag-BZrKN_DS.js +41 -0
  99. package/dist/MTag-BZrKN_DS.js.map +1 -0
  100. package/dist/MTag-DCE1vRJM.cjs +2 -0
  101. package/dist/MTag-DCE1vRJM.cjs.map +1 -0
  102. package/dist/MText-BUWQPoBM.js +45 -0
  103. package/dist/MText-BUWQPoBM.js.map +1 -0
  104. package/dist/MText-nsvLFsSv.cjs +2 -0
  105. package/dist/MText-nsvLFsSv.cjs.map +1 -0
  106. package/dist/MTooltip-BRSPJ3RY.js +100 -0
  107. package/dist/MTooltip-BRSPJ3RY.js.map +1 -0
  108. package/dist/MTooltip-Cj2Fxmzc.cjs +2 -0
  109. package/dist/MTooltip-Cj2Fxmzc.cjs.map +1 -0
  110. package/dist/MTreeView-BWCTlsU-.cjs +2 -0
  111. package/dist/MTreeView-BWCTlsU-.cjs.map +1 -0
  112. package/dist/MTreeView-CWcMwE-Z.js +554 -0
  113. package/dist/MTreeView-CWcMwE-Z.js.map +1 -0
  114. package/dist/calendar-2yhnCkGW.cjs +2 -0
  115. package/dist/calendar-2yhnCkGW.cjs.map +1 -0
  116. package/dist/calendar-DcNYDTVb.js +195 -0
  117. package/dist/calendar-DcNYDTVb.js.map +1 -0
  118. package/dist/calendar.cjs +1 -1
  119. package/dist/calendar.js +1 -1
  120. package/dist/{calendarDates-M_Dawj0j.js → calendarDates-Bpw_G_QR.js} +30 -19
  121. package/dist/calendarDates-Bpw_G_QR.js.map +1 -0
  122. package/dist/calendarDates-Cg0nm69Y.cjs +2 -0
  123. package/dist/calendarDates-Cg0nm69Y.cjs.map +1 -0
  124. package/dist/cards-Bp886TRb.cjs +2 -0
  125. package/dist/cards-Bp886TRb.cjs.map +1 -0
  126. package/dist/cards-BvER6Gx0.js +1277 -0
  127. package/dist/cards-BvER6Gx0.js.map +1 -0
  128. package/dist/cards.cjs +1 -1
  129. package/dist/cards.js +2 -2
  130. package/dist/{cn-YER3QsV1.js → cn-CUSXNnjF.js} +1 -1
  131. package/dist/{cn-YER3QsV1.js.map → cn-CUSXNnjF.js.map} +1 -1
  132. package/dist/{cn-CU5TNITO.cjs → cn-DYFxgzi2.cjs} +1 -1
  133. package/dist/{cn-CU5TNITO.cjs.map → cn-DYFxgzi2.cjs.map} +1 -1
  134. package/dist/components/cards/MCardDaySchedule/MCardDaySchedule.d.ts +1 -1
  135. package/dist/components/cards/MCardDocumentTree/MCardDocumentTree.d.ts +1 -1
  136. package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
  137. package/dist/components/cards/MCardPayment/MCardPayment.d.ts +1 -1
  138. package/dist/components/cards/MCardPayment/MCardPayment.types.d.ts +4 -0
  139. package/dist/components/cards/MCardPaymentMethod/MCardPaymentMethod.d.ts +1 -1
  140. package/dist/components/cards/MStatCard/MStatCard.d.ts +1 -1
  141. package/dist/components/controls/MCheckbox/MCheckbox.types.d.ts +6 -0
  142. package/dist/components/controls/MLoadMore/MLoadMore.d.ts +1 -1
  143. package/dist/components/controls/MSlider/MSlider.d.ts +1 -1
  144. package/dist/components/controls/MSlider/MSlider.types.d.ts +5 -0
  145. package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
  146. package/dist/components/data/MTreeView/MTreeView.types.d.ts +6 -0
  147. package/dist/components/data/MWeekGrid/MWeekGrid.d.ts +1 -1
  148. package/dist/components/data/MWeekGrid/MWeekGrid.types.d.ts +9 -3
  149. package/dist/components/display/MCodeBlock/MCodeBlock.d.ts +1 -1
  150. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.d.ts +1 -1
  151. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.types.d.ts +8 -2
  152. package/dist/components/dropdowns/MSelect/MSelect.d.ts +1 -1
  153. package/dist/components/dropdowns/shared/TimeColumnListbox.d.ts +20 -0
  154. package/dist/components/feedback/MAlert/MAlert.d.ts +1 -1
  155. package/dist/components/feedback/MBadge/MBadge.d.ts +1 -1
  156. package/dist/components/feedback/MBanner/MBanner.d.ts +1 -1
  157. package/dist/components/feedback/MLoader/MLoader.d.ts +1 -1
  158. package/dist/components/feedback/MSpinner/MSpinner.d.ts +1 -1
  159. package/dist/components/feedback/MTag/MTag.d.ts +1 -1
  160. package/dist/components/inputs/MInput/MInput.types.d.ts +6 -1
  161. package/dist/components/inputs/MInput/useFormatCaret.d.ts +8 -0
  162. package/dist/components/layout/MCanvasGrid/MCanvasGrid.types.d.ts +5 -0
  163. package/dist/components/layout/MContainer/MContainer.d.ts +1 -1
  164. package/dist/components/layout/MDivider/MDivider.d.ts +1 -1
  165. package/dist/components/layout/MFooter/MFooter.d.ts +1 -1
  166. package/dist/components/layout/MHeader/MHeader.d.ts +1 -1
  167. package/dist/components/layout/MInline/MInline.d.ts +1 -1
  168. package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
  169. package/dist/components/layout/MNavbar/MNavbar.types.d.ts +2 -0
  170. package/dist/components/layout/MSection/MSection.d.ts +1 -1
  171. package/dist/components/layout/MStack/MStack.d.ts +1 -1
  172. package/dist/components/layout/MStickyPanel/MStickyPanel.types.d.ts +4 -0
  173. package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
  174. package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
  175. package/dist/components/media/MAvatar/MAvatar.types.d.ts +10 -0
  176. package/dist/components/media/MCarousel/MCarousel.d.ts +1 -1
  177. package/dist/components/media/MImage/MImage.d.ts +1 -1
  178. package/dist/components/media/carouselA11y.d.ts +9 -0
  179. package/dist/components/overlays/MCommandPalette/MCommandPalette.d.ts +1 -1
  180. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.d.ts +4 -2
  181. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.types.d.ts +3 -1
  182. package/dist/components/overlays/MPopconfirm/MPopconfirm.d.ts +1 -1
  183. package/dist/components/overlays/scrollLock.d.ts +14 -0
  184. package/dist/components/primitives/MPopover/MPopover.d.ts +1 -1
  185. package/dist/components/primitives/MPopover/MPopover.types.d.ts +32 -1
  186. package/dist/components/primitives/MPopover/popoverStack.d.ts +6 -0
  187. package/dist/components/typography/MHeading/MHeading.d.ts +2 -3
  188. package/dist/components/typography/MSubText/MSubText.d.ts +1 -1
  189. package/dist/components/typography/MText/MText.d.ts +1 -1
  190. package/dist/controls-B4Dxaab4.js +491 -0
  191. package/dist/controls-B4Dxaab4.js.map +1 -0
  192. package/dist/controls-CyXEIOXD.cjs +2 -0
  193. package/dist/controls-CyXEIOXD.cjs.map +1 -0
  194. package/dist/controls.cjs +1 -1
  195. package/dist/controls.js +5 -5
  196. package/dist/creditCards-Bo2mrc53.cjs +2 -0
  197. package/dist/creditCards-Bo2mrc53.cjs.map +1 -0
  198. package/dist/{creditCards-D_iWmtG6.js → creditCards-DmDOyvcw.js} +20 -31
  199. package/dist/creditCards-DmDOyvcw.js.map +1 -0
  200. package/dist/data-BM3KG8oN.cjs +2 -0
  201. package/dist/data-BM3KG8oN.cjs.map +1 -0
  202. package/dist/data-qnR8OBmj.js +808 -0
  203. package/dist/data-qnR8OBmj.js.map +1 -0
  204. package/dist/data.cjs +1 -1
  205. package/dist/data.js +2 -2
  206. package/dist/{dateUtils-CUY6CRCf.js → dateUtils-B-ToNZq_.js} +5 -6
  207. package/dist/dateUtils-B-ToNZq_.js.map +1 -0
  208. package/dist/dateUtils-z2L7ZaxA.cjs +2 -0
  209. package/dist/dateUtils-z2L7ZaxA.cjs.map +1 -0
  210. package/dist/display-BLMOBofj.cjs +3 -0
  211. package/dist/display-BLMOBofj.cjs.map +1 -0
  212. package/dist/display-Dlb79lkA.js +968 -0
  213. package/dist/display-Dlb79lkA.js.map +1 -0
  214. package/dist/display.cjs +1 -1
  215. package/dist/display.js +2 -2
  216. package/dist/dropdowns-2_7VMEDo.js +2009 -0
  217. package/dist/dropdowns-2_7VMEDo.js.map +1 -0
  218. package/dist/dropdowns-DN7j8J-V.cjs +2 -0
  219. package/dist/dropdowns-DN7j8J-V.cjs.map +1 -0
  220. package/dist/dropdowns.cjs +1 -1
  221. package/dist/dropdowns.js +1 -1
  222. package/dist/feedback-CECayytY.js +335 -0
  223. package/dist/feedback-CECayytY.js.map +1 -0
  224. package/dist/feedback-paV8Ls-h.cjs +2 -0
  225. package/dist/feedback-paV8Ls-h.cjs.map +1 -0
  226. package/dist/feedback.cjs +1 -1
  227. package/dist/feedback.js +5 -5
  228. package/dist/form-Br56h5EF.cjs +2 -0
  229. package/dist/form-Br56h5EF.cjs.map +1 -0
  230. package/dist/form-CJmMZgsH.js +165 -0
  231. package/dist/form-CJmMZgsH.js.map +1 -0
  232. package/dist/form.cjs +1 -1
  233. package/dist/form.js +1 -1
  234. package/dist/{formatters-CNjg_h7-.cjs → formatters-CauWlsnM.cjs} +1 -1
  235. package/dist/{formatters-CNjg_h7-.cjs.map → formatters-CauWlsnM.cjs.map} +1 -1
  236. package/dist/{formatters-T0vvjMtB.js → formatters-Doqdu_w1.js} +1 -1
  237. package/dist/{formatters-T0vvjMtB.js.map → formatters-Doqdu_w1.js.map} +1 -1
  238. package/dist/frameworkTexts-CaqdiKHW.cjs +2 -0
  239. package/dist/frameworkTexts-CaqdiKHW.cjs.map +1 -0
  240. package/dist/frameworkTexts-o43FqY1A.js +505 -0
  241. package/dist/frameworkTexts-o43FqY1A.js.map +1 -0
  242. package/dist/i18n/MI18nProvider.d.ts +6 -1
  243. package/dist/i18n/frameworkTexts.d.ts +511 -0
  244. package/dist/i18n/index.d.ts +1 -0
  245. package/dist/i18n.cjs +1 -1
  246. package/dist/i18n.js +2 -2
  247. package/dist/icons-Bp8bB9TP.cjs +2 -0
  248. package/dist/icons-Bp8bB9TP.cjs.map +1 -0
  249. package/dist/{icons-CBMl-kOM.js → icons-IqEBmGh3.js} +1223 -1220
  250. package/dist/icons-IqEBmGh3.js.map +1 -0
  251. package/dist/icons.cjs +1 -1
  252. package/dist/icons.js +1 -1
  253. package/dist/illustrations.cjs +1 -1
  254. package/dist/illustrations.js +1 -1
  255. package/dist/index.cjs +1 -1
  256. package/dist/index.d.ts +4 -2
  257. package/dist/index.js +56 -56
  258. package/dist/inputs-C0BJzlA-.js +1923 -0
  259. package/dist/inputs-C0BJzlA-.js.map +1 -0
  260. package/dist/inputs-CvNBBLFA.cjs +2 -0
  261. package/dist/inputs-CvNBBLFA.cjs.map +1 -0
  262. package/dist/inputs.cjs +1 -1
  263. package/dist/inputs.js +4 -4
  264. package/dist/layout-BSFqGXLZ.js +1101 -0
  265. package/dist/layout-BSFqGXLZ.js.map +1 -0
  266. package/dist/layout-MKqvUkPv.cjs +2 -0
  267. package/dist/layout-MKqvUkPv.cjs.map +1 -0
  268. package/dist/layout.cjs +1 -1
  269. package/dist/layout.js +6 -6
  270. package/dist/{layoutProps-Ck4VtGm9.cjs → layoutProps-B8y2XwHy.cjs} +1 -1
  271. package/dist/{layoutProps-Ck4VtGm9.cjs.map → layoutProps-B8y2XwHy.cjs.map} +1 -1
  272. package/dist/{layoutProps-Cl6d1KmH.js → layoutProps-CE5-ghKw.js} +1 -1
  273. package/dist/{layoutProps-Cl6d1KmH.js.map → layoutProps-CE5-ghKw.js.map} +1 -1
  274. package/dist/{licensing-f5KYVz7D.js → licensing-BKmoAdfr.js} +5 -4
  275. package/dist/licensing-BKmoAdfr.js.map +1 -0
  276. package/dist/licensing-DVgjkw-s.cjs +2 -0
  277. package/dist/licensing-DVgjkw-s.cjs.map +1 -0
  278. package/dist/media-fiasAbBv.js +485 -0
  279. package/dist/media-fiasAbBv.js.map +1 -0
  280. package/dist/media-tr1s386v.cjs +2 -0
  281. package/dist/media-tr1s386v.cjs.map +1 -0
  282. package/dist/media.cjs +1 -1
  283. package/dist/media.js +2 -2
  284. package/dist/overlays-Df-NpmkW.cjs +2 -0
  285. package/dist/overlays-Df-NpmkW.cjs.map +1 -0
  286. package/dist/overlays-W0WW3fn7.js +607 -0
  287. package/dist/overlays-W0WW3fn7.js.map +1 -0
  288. package/dist/overlays.cjs +1 -1
  289. package/dist/overlays.js +3 -3
  290. package/dist/primitives.cjs +1 -1
  291. package/dist/primitives.js +2 -2
  292. package/dist/radioGroupKeys-Bm-Qeh8G.js +28 -0
  293. package/dist/radioGroupKeys-Bm-Qeh8G.js.map +1 -0
  294. package/dist/radioGroupKeys-COL8uXbH.cjs +2 -0
  295. package/dist/radioGroupKeys-COL8uXbH.cjs.map +1 -0
  296. package/dist/{relativeTime-Cr-NVzij.js → relativeTime-BqCuaBqb.js} +1 -1
  297. package/dist/{relativeTime-Cr-NVzij.js.map → relativeTime-BqCuaBqb.js.map} +1 -1
  298. package/dist/{relativeTime-DgYBUaVm.cjs → relativeTime-DUbW4O44.cjs} +1 -1
  299. package/dist/{relativeTime-DgYBUaVm.cjs.map → relativeTime-DUbW4O44.cjs.map} +1 -1
  300. package/dist/scrollLock-C9P9o6wH.cjs +2 -0
  301. package/dist/scrollLock-C9P9o6wH.cjs.map +1 -0
  302. package/dist/scrollLock-D27VmgPV.js +14 -0
  303. package/dist/scrollLock-D27VmgPV.js.map +1 -0
  304. package/dist/style-runtime.cjs +1 -1
  305. package/dist/style-runtime.js +1 -1
  306. package/dist/styles.css +1 -1
  307. package/dist/theme/MThemeProvider.d.ts +18 -1
  308. package/dist/theme/index.d.ts +2 -2
  309. package/dist/{theme-DAOU1aPs.js → theme-B_juOenJ.js} +71 -61
  310. package/dist/theme-B_juOenJ.js.map +1 -0
  311. package/dist/theme-ByPZH0dh.cjs +2 -0
  312. package/dist/theme-ByPZH0dh.cjs.map +1 -0
  313. package/dist/theme.cjs +1 -1
  314. package/dist/theme.js +2 -2
  315. package/dist/{typography-C806GYT4.js → typography-DNcB8dOy.js} +3 -3
  316. package/dist/{typography-C806GYT4.js.map → typography-DNcB8dOy.js.map} +1 -1
  317. package/dist/{typography-4v01oNWx.cjs → typography-I7aeG8pH.cjs} +2 -2
  318. package/dist/{typography-4v01oNWx.cjs.map → typography-I7aeG8pH.cjs.map} +1 -1
  319. package/dist/typography.cjs +1 -1
  320. package/dist/typography.js +6 -6
  321. package/dist/useGhostText-CKsb8Ufa.js +240 -0
  322. package/dist/useGhostText-CKsb8Ufa.js.map +1 -0
  323. package/dist/useGhostText-DO-tfxS0.cjs +2 -0
  324. package/dist/useGhostText-DO-tfxS0.cjs.map +1 -0
  325. package/dist/useModalLayer-CpOPSDbf.js +128 -0
  326. package/dist/useModalLayer-CpOPSDbf.js.map +1 -0
  327. package/dist/useModalLayer-Cyt93Prs.cjs +2 -0
  328. package/dist/useModalLayer-Cyt93Prs.cjs.map +1 -0
  329. package/dist/utils/calendarDates.d.ts +5 -0
  330. package/dist/utils/radioGroupKeys.d.ts +9 -0
  331. package/dist/utils/useDateGridNav.d.ts +39 -0
  332. package/dist/utils/useGhostText.d.ts +2 -1
  333. package/dist/utils/useKeyboardNav.d.ts +51 -5
  334. package/dist/utils/useModalLayer.d.ts +4 -0
  335. package/dist/utils/useRovingToolbar.d.ts +26 -0
  336. package/dist/utils/validationMessages.d.ts +15 -0
  337. package/dist/utils.cjs +1 -1
  338. package/dist/utils.entry.d.ts +3 -1
  339. package/dist/utils.js +11 -11
  340. package/dist/validationMessages-BFimXxlT.js +23 -0
  341. package/dist/validationMessages-BFimXxlT.js.map +1 -0
  342. package/dist/validationMessages-iHu7apWr.cjs +2 -0
  343. package/dist/validationMessages-iHu7apWr.cjs.map +1 -0
  344. package/dist/validators-SZmLxnir.cjs +2 -0
  345. package/dist/validators-SZmLxnir.cjs.map +1 -0
  346. package/dist/{validators-DVYOtFnw.js → validators-ULebNme2.js} +107 -106
  347. package/dist/validators-ULebNme2.js.map +1 -0
  348. package/package.json +1 -1
  349. package/dist/MAvatar-DHNB3829.cjs +0 -2
  350. package/dist/MAvatar-DHNB3829.cjs.map +0 -1
  351. package/dist/MAvatar-GeRL-CNO.js +0 -63
  352. package/dist/MAvatar-GeRL-CNO.js.map +0 -1
  353. package/dist/MButton-CEwo8lUB.js +0 -115
  354. package/dist/MButton-CEwo8lUB.js.map +0 -1
  355. package/dist/MButton-CnAr77Za.cjs +0 -2
  356. package/dist/MButton-CnAr77Za.cjs.map +0 -1
  357. package/dist/MCard-BqSkGAgf.js.map +0 -1
  358. package/dist/MCard-P8OoswWM.cjs.map +0 -1
  359. package/dist/MCheckbox-BxFBADcE.js +0 -59
  360. package/dist/MCheckbox-BxFBADcE.js.map +0 -1
  361. package/dist/MCheckbox-DozwF2ai.cjs +0 -2
  362. package/dist/MCheckbox-DozwF2ai.cjs.map +0 -1
  363. package/dist/MConflictIllustration-2QL-BHYv.cjs +0 -2
  364. package/dist/MConflictIllustration-2QL-BHYv.cjs.map +0 -1
  365. package/dist/MConflictIllustration-znC7ijmP.js.map +0 -1
  366. package/dist/MDetailList-CThQvoyf.cjs +0 -2
  367. package/dist/MDetailList-CThQvoyf.cjs.map +0 -1
  368. package/dist/MDetailList-Cx9H81xT.js +0 -98
  369. package/dist/MDetailList-Cx9H81xT.js.map +0 -1
  370. package/dist/MDropdownMenu-DnKcCyW6.cjs +0 -2
  371. package/dist/MDropdownMenu-DnKcCyW6.cjs.map +0 -1
  372. package/dist/MDropdownMenu-DxbKN7Ui.js +0 -172
  373. package/dist/MDropdownMenu-DxbKN7Ui.js.map +0 -1
  374. package/dist/MGrid-BkRSGN2t.cjs +0 -2
  375. package/dist/MGrid-BkRSGN2t.cjs.map +0 -1
  376. package/dist/MGrid-CIz-2i6X.js +0 -265
  377. package/dist/MGrid-CIz-2i6X.js.map +0 -1
  378. package/dist/MHeading-AYQ8_GFP.cjs +0 -2
  379. package/dist/MHeading-AYQ8_GFP.cjs.map +0 -1
  380. package/dist/MHeading-DcGxUMwC.js +0 -21
  381. package/dist/MHeading-DcGxUMwC.js.map +0 -1
  382. package/dist/MI18nProvider-CqAwaswx.cjs +0 -2
  383. package/dist/MI18nProvider-CqAwaswx.cjs.map +0 -1
  384. package/dist/MI18nProvider-VH14CI8u.js +0 -72
  385. package/dist/MI18nProvider-VH14CI8u.js.map +0 -1
  386. package/dist/MInput-BYj2BdUe.cjs +0 -2
  387. package/dist/MInput-BYj2BdUe.cjs.map +0 -1
  388. package/dist/MInput-nodE-CZF.js +0 -188
  389. package/dist/MInput-nodE-CZF.js.map +0 -1
  390. package/dist/MInputCVC-9XWryaTz.cjs +0 -2
  391. package/dist/MInputCVC-9XWryaTz.cjs.map +0 -1
  392. package/dist/MInputCVC-CrDTaUXm.js +0 -321
  393. package/dist/MInputCVC-CrDTaUXm.js.map +0 -1
  394. package/dist/MInputSearch-BMgCHjFk.js +0 -43
  395. package/dist/MInputSearch-BMgCHjFk.js.map +0 -1
  396. package/dist/MInputSearch-BiVI1jNc.cjs +0 -2
  397. package/dist/MInputSearch-BiVI1jNc.cjs.map +0 -1
  398. package/dist/MLink-CAl6N6_z.js +0 -31
  399. package/dist/MLink-CAl6N6_z.js.map +0 -1
  400. package/dist/MLink-Dk_ReE6i.cjs +0 -2
  401. package/dist/MLink-Dk_ReE6i.cjs.map +0 -1
  402. package/dist/MLoader-CYp0OJU_.js +0 -41
  403. package/dist/MLoader-CYp0OJU_.js.map +0 -1
  404. package/dist/MLoader-DvmFle31.cjs +0 -2
  405. package/dist/MLoader-DvmFle31.cjs.map +0 -1
  406. package/dist/MPagination-E7IixIeo.js +0 -113
  407. package/dist/MPagination-E7IixIeo.js.map +0 -1
  408. package/dist/MPagination-reDU9xTW.cjs +0 -2
  409. package/dist/MPagination-reDU9xTW.cjs.map +0 -1
  410. package/dist/MPopover-8gYD3Ogq.js +0 -118
  411. package/dist/MPopover-8gYD3Ogq.js.map +0 -1
  412. package/dist/MPopover-B3npyAkL.cjs +0 -2
  413. package/dist/MPopover-B3npyAkL.cjs.map +0 -1
  414. package/dist/MPortal-Ba2Sxset.js +0 -10
  415. package/dist/MPortal-Ba2Sxset.js.map +0 -1
  416. package/dist/MPortal-CuBXhhl_.cjs +0 -2
  417. package/dist/MPortal-CuBXhhl_.cjs.map +0 -1
  418. package/dist/MSimpleGrid-BchGYPMi.cjs +0 -2
  419. package/dist/MSimpleGrid-BchGYPMi.cjs.map +0 -1
  420. package/dist/MSimpleGrid-Ui8cI0ho.js.map +0 -1
  421. package/dist/MSkeleton-DPa_G_2X.cjs +0 -2
  422. package/dist/MSkeleton-DPa_G_2X.cjs.map +0 -1
  423. package/dist/MSkeleton-Dhu-loDO.js.map +0 -1
  424. package/dist/MSlider-BRjhyBSc.js +0 -75
  425. package/dist/MSlider-BRjhyBSc.js.map +0 -1
  426. package/dist/MSlider-w5214a-W.cjs +0 -2
  427. package/dist/MSlider-w5214a-W.cjs.map +0 -1
  428. package/dist/MStack-Dt-rWvg3.js +0 -39
  429. package/dist/MStack-Dt-rWvg3.js.map +0 -1
  430. package/dist/MStack-nc6Y_9K3.cjs +0 -2
  431. package/dist/MStack-nc6Y_9K3.cjs.map +0 -1
  432. package/dist/MSubText-B0tXiuAp.js +0 -17
  433. package/dist/MSubText-B0tXiuAp.js.map +0 -1
  434. package/dist/MSubText-C6v6Exa2.cjs +0 -2
  435. package/dist/MSubText-C6v6Exa2.cjs.map +0 -1
  436. package/dist/MSurface-BjE-mL1L.cjs +0 -2
  437. package/dist/MSurface-BjE-mL1L.cjs.map +0 -1
  438. package/dist/MSurface-CpDJCdb5.js +0 -74
  439. package/dist/MSurface-CpDJCdb5.js.map +0 -1
  440. package/dist/MTag-BgOxiahL.cjs +0 -2
  441. package/dist/MTag-BgOxiahL.cjs.map +0 -1
  442. package/dist/MTag-cw3cIGHX.js +0 -41
  443. package/dist/MTag-cw3cIGHX.js.map +0 -1
  444. package/dist/MText-BDI4mdw8.cjs +0 -2
  445. package/dist/MText-BDI4mdw8.cjs.map +0 -1
  446. package/dist/MText-DhbAjtUE.js +0 -45
  447. package/dist/MText-DhbAjtUE.js.map +0 -1
  448. package/dist/MTooltip-BAgHlv5I.cjs +0 -2
  449. package/dist/MTooltip-BAgHlv5I.cjs.map +0 -1
  450. package/dist/MTooltip-CJxvlkOX.js +0 -92
  451. package/dist/MTooltip-CJxvlkOX.js.map +0 -1
  452. package/dist/MTreeView-DsBnYQMT.js +0 -315
  453. package/dist/MTreeView-DsBnYQMT.js.map +0 -1
  454. package/dist/MTreeView-LiJ5o-zy.cjs +0 -2
  455. package/dist/MTreeView-LiJ5o-zy.cjs.map +0 -1
  456. package/dist/calendar-Bq6NMNnS.js +0 -193
  457. package/dist/calendar-Bq6NMNnS.js.map +0 -1
  458. package/dist/calendar-C57BH8Nd.cjs +0 -2
  459. package/dist/calendar-C57BH8Nd.cjs.map +0 -1
  460. package/dist/calendarDates-M_Dawj0j.js.map +0 -1
  461. package/dist/calendarDates-qm047RW2.cjs +0 -2
  462. package/dist/calendarDates-qm047RW2.cjs.map +0 -1
  463. package/dist/cards-D4xJVd4q.js +0 -1227
  464. package/dist/cards-D4xJVd4q.js.map +0 -1
  465. package/dist/cards-Du6dbZSQ.cjs +0 -2
  466. package/dist/cards-Du6dbZSQ.cjs.map +0 -1
  467. package/dist/controls-BKoc_yel.js +0 -475
  468. package/dist/controls-BKoc_yel.js.map +0 -1
  469. package/dist/controls-Ck-PMt__.cjs +0 -2
  470. package/dist/controls-Ck-PMt__.cjs.map +0 -1
  471. package/dist/creditCards-D_HwRUBz.cjs +0 -2
  472. package/dist/creditCards-D_HwRUBz.cjs.map +0 -1
  473. package/dist/creditCards-D_iWmtG6.js.map +0 -1
  474. package/dist/data-CdQximqm.js +0 -689
  475. package/dist/data-CdQximqm.js.map +0 -1
  476. package/dist/data-PS4ygCyj.cjs +0 -2
  477. package/dist/data-PS4ygCyj.cjs.map +0 -1
  478. package/dist/dateUtils-CUY6CRCf.js.map +0 -1
  479. package/dist/dateUtils-Dq1vaA-D.cjs +0 -2
  480. package/dist/dateUtils-Dq1vaA-D.cjs.map +0 -1
  481. package/dist/display-YC1fVpXA.js +0 -782
  482. package/dist/display-YC1fVpXA.js.map +0 -1
  483. package/dist/display-slIo1bQI.cjs +0 -3
  484. package/dist/display-slIo1bQI.cjs.map +0 -1
  485. package/dist/dropdowns-DFbUoZ8Q.cjs +0 -2
  486. package/dist/dropdowns-DFbUoZ8Q.cjs.map +0 -1
  487. package/dist/dropdowns-nW3MY5XG.js +0 -1715
  488. package/dist/dropdowns-nW3MY5XG.js.map +0 -1
  489. package/dist/feedback-6MNb2Xyk.cjs +0 -2
  490. package/dist/feedback-6MNb2Xyk.cjs.map +0 -1
  491. package/dist/feedback-CPwJaQHY.js +0 -259
  492. package/dist/feedback-CPwJaQHY.js.map +0 -1
  493. package/dist/form-CMsZo6Dm.cjs +0 -2
  494. package/dist/form-CMsZo6Dm.cjs.map +0 -1
  495. package/dist/form-WU6DcQGD.js +0 -164
  496. package/dist/form-WU6DcQGD.js.map +0 -1
  497. package/dist/frameworkTexts-BSXUtXOp.cjs +0 -2
  498. package/dist/frameworkTexts-BSXUtXOp.cjs.map +0 -1
  499. package/dist/frameworkTexts-DP5RUl19.js +0 -131
  500. package/dist/frameworkTexts-DP5RUl19.js.map +0 -1
  501. package/dist/icons-CBMl-kOM.js.map +0 -1
  502. package/dist/icons-D3n9-919.cjs +0 -2
  503. package/dist/icons-D3n9-919.cjs.map +0 -1
  504. package/dist/inputs-B7rGMLMr.js +0 -1753
  505. package/dist/inputs-B7rGMLMr.js.map +0 -1
  506. package/dist/inputs-BiN62hgH.cjs +0 -2
  507. package/dist/inputs-BiN62hgH.cjs.map +0 -1
  508. package/dist/layout-BMggJ_qO.cjs +0 -2
  509. package/dist/layout-BMggJ_qO.cjs.map +0 -1
  510. package/dist/layout-DBYHyCTr.js +0 -883
  511. package/dist/layout-DBYHyCTr.js.map +0 -1
  512. package/dist/licensing-Be3g-PJt.cjs +0 -2
  513. package/dist/licensing-Be3g-PJt.cjs.map +0 -1
  514. package/dist/licensing-f5KYVz7D.js.map +0 -1
  515. package/dist/media-BPzMgzqE.js +0 -405
  516. package/dist/media-BPzMgzqE.js.map +0 -1
  517. package/dist/media-D63hxCAJ.cjs +0 -2
  518. package/dist/media-D63hxCAJ.cjs.map +0 -1
  519. package/dist/overlays-CCeYD6hT.js +0 -555
  520. package/dist/overlays-CCeYD6hT.js.map +0 -1
  521. package/dist/overlays-CsRN5OG8.cjs +0 -2
  522. package/dist/overlays-CsRN5OG8.cjs.map +0 -1
  523. package/dist/popoverStack--0r2oJCD.js +0 -44
  524. package/dist/popoverStack--0r2oJCD.js.map +0 -1
  525. package/dist/popoverStack-BmMk-VZJ.cjs +0 -2
  526. package/dist/popoverStack-BmMk-VZJ.cjs.map +0 -1
  527. package/dist/theme-CJuqObWL.cjs +0 -2
  528. package/dist/theme-CJuqObWL.cjs.map +0 -1
  529. package/dist/theme-DAOU1aPs.js.map +0 -1
  530. package/dist/useGhostText-DG0bzcao.js +0 -68
  531. package/dist/useGhostText-DG0bzcao.js.map +0 -1
  532. package/dist/useGhostText-mibV4s1-.cjs +0 -2
  533. package/dist/useGhostText-mibV4s1-.cjs.map +0 -1
  534. package/dist/useKeyboardNav-CCUoRMgm.cjs +0 -2
  535. package/dist/useKeyboardNav-CCUoRMgm.cjs.map +0 -1
  536. package/dist/useKeyboardNav-iEXOdEMB.js +0 -43
  537. package/dist/useKeyboardNav-iEXOdEMB.js.map +0 -1
  538. package/dist/useModalLayer-Bf4TcEz-.js +0 -58
  539. package/dist/useModalLayer-Bf4TcEz-.js.map +0 -1
  540. package/dist/useModalLayer-DxYhhgRO.cjs +0 -2
  541. package/dist/useModalLayer-DxYhhgRO.cjs.map +0 -1
  542. package/dist/utils/proActivationWarning.d.ts +0 -7
  543. package/dist/validators-B6yWdsu2.cjs +0 -2
  544. package/dist/validators-B6yWdsu2.cjs.map +0 -1
  545. package/dist/validators-DVYOtFnw.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-fiasAbBv.js","names":[],"sources":["../src/components/media/MMediaLightbox/MMediaLightbox.tsx","../src/components/media/mediaPreviewRegistry.ts","../src/components/media/mediaInteraction.ts","../src/components/media/MImage/MImage.tsx","../src/components/media/MGallery/MGallery.tsx","../src/components/media/carouselA11y.ts","../src/components/media/MCarousel/MCarousel.tsx"],"sourcesContent":["import {useEffect, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../../overlays/scrollLock'\nimport './MMediaLightbox.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nexport interface MMediaLightboxItem {\n src: string\n alt?: string\n caption?: string\n}\n\ninterface MMediaLightboxProps {\n open: boolean\n items: MMediaLightboxItem[]\n activeIndex: number\n onClose: () => void\n onActiveIndexChange: (index: number) => void\n}\n\nexport function MMediaLightbox({open, items, activeIndex, onClose, onActiveIndexChange}: MMediaLightboxProps) {\n const texts = useMCommonTexts()\n const currentItem = items[activeIndex]\n const frameRef = useRef<HTMLDivElement | null>(null)\n const backdropRef = useRef<HTMLDivElement | null>(null)\n const canGoPrev = activeIndex > 0\n const canGoNext = activeIndex < items.length - 1\n\n useModalLayer({active: open && !!currentItem, containerRef: backdropRef, onEscape: onClose})\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft' && canGoPrev) {\n onActiveIndexChange(activeIndex - 1)\n }\n\n if (event.key === 'ArrowRight' && canGoNext) {\n onActiveIndexChange(activeIndex + 1)\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [activeIndex, canGoNext, canGoPrev, onActiveIndexChange, onClose, open])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n return lockBodyScroll()\n }, [open])\n\n if (!open || !currentItem) {\n return null\n }\n\n const handleBackdropMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as Node | null\n\n if (target && frameRef.current && !frameRef.current.contains(target)) {\n onClose()\n }\n }\n\n const previewLabel = currentItem.alt || currentItem.caption || texts.imagePreview\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'media-lightbox-backdrop')}\n onMouseDown={handleBackdropMouseDown}\n >\n <div className=\"media-lightbox-shell\" role=\"dialog\" aria-modal=\"true\" aria-label={previewLabel}>\n <div className=\"media-lightbox-stage\">\n <div ref={frameRef} className=\"media-lightbox-frame\">\n <div className=\"media-lightbox-topbar\">\n <MBadge color=\"dark\" size=\"md\" rounded className=\"media-lightbox-counter\">\n {items.length > 1 ? `${activeIndex + 1} / ${items.length}` : texts.preview}\n </MBadge>\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"error\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-action\"\n aria-label={texts.closePreview}\n onClick={onClose}\n >\n <MCloseIcon />\n </MButton>\n </div>\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-prev\"\n aria-label={texts.previousImage}\n disabled={items.length <= 1 || !canGoPrev}\n onClick={() => canGoPrev && onActiveIndexChange(activeIndex - 1)}\n >\n <MChevronLeftIcon />\n </MButton>\n\n <img className=\"media-lightbox-image\" src={currentItem.src} alt={currentItem.alt || ''} />\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-next\"\n aria-label={texts.nextImage}\n disabled={items.length <= 1 || !canGoNext}\n onClick={() => canGoNext && onActiveIndexChange(activeIndex + 1)}\n >\n <MChevronRightIcon />\n </MButton>\n\n {currentItem.caption || currentItem.alt ? (\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-caption\">\n {currentItem.caption || currentItem.alt}\n </MBadge>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </MPortal>\n )\n}\n","import type {MMediaLightboxItem} from './MMediaLightbox/MMediaLightbox'\n\ninterface MMediaPreviewRegistryItem extends MMediaLightboxItem {\n id: string\n}\n\nconst previewGroups = new Map<string, Map<string, MMediaPreviewRegistryItem>>()\n\nexport function registerMediaPreviewItem(group: string, id: string, item: MMediaLightboxItem) {\n let groupItems = previewGroups.get(group)\n\n if (!groupItems) {\n groupItems = new Map()\n previewGroups.set(group, groupItems)\n }\n\n groupItems.set(id, {id, ...item})\n\n return () => {\n const currentGroupItems = previewGroups.get(group)\n if (!currentGroupItems) {\n return\n }\n\n currentGroupItems.delete(id)\n\n if (currentGroupItems.size === 0) {\n previewGroups.delete(group)\n }\n }\n}\n\nexport function getMediaPreviewGroupItems(group: string) {\n return Array.from(previewGroups.get(group)?.values() ?? [])\n}\n","import type {MClickEffect} from '../../utils/useInteractionEffect'\n\nexport type MMediaInteractionEffect = MClickEffect | 'zoom' | 'dim' | 'zoom-ripple'\nexport type MMediaHoverEffect = 'none' | 'zoom' | 'dim' | 'zoom-dim'\n\nexport function usesRipple(effect: MMediaInteractionEffect): boolean {\n return effect === 'ripple' || effect === 'zoom-ripple'\n}\n\nexport function usesZoom(effect: MMediaInteractionEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-ripple'\n}\n\nexport function usesDim(effect: MMediaInteractionEffect): boolean {\n return effect === 'dim'\n}\n\nexport function usesHoverZoom(effect: MMediaHoverEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-dim'\n}\n\nexport function usesHoverDim(effect: MMediaHoverEffect): boolean {\n return effect === 'dim' || effect === 'zoom-dim'\n}\n","import {useEffect, useId, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {CSSProperties} from 'react'\nimport type {MImageProps, MImageSize} from './MImage.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSkeleton} from '../../feedback'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {getMediaPreviewGroupItems, registerMediaPreviewItem} from '../mediaPreviewRegistry'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MImage.css'\nimport {useMCommonTexts, formatMText} from '../../../i18n/frameworkTexts'\n\nconst RATIO_MAP: Record<string, string> = {\n '1:1': '1 / 1',\n '4:3': '4 / 3',\n '16:9': '16 / 9',\n '21:9': '21 / 9',\n}\n\nfunction toCssSize(value: MImageSize | undefined): string | undefined {\n if (value == null) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\n// Render a styled image with aspect ratio, fit, and optional fallback.\nexport function MImage({\n src,\n fit = 'cover',\n ratio = 'auto',\n width,\n height,\n hidden,\n hiddenAbove,\n rounded = false,\n bordered = false,\n shadow = false,\n preview = false,\n previewGroup,\n hoverEffect = 'none',\n clickEffect = 'none',\n fallback,\n skeleton = false,\n className,\n style,\n alt,\n onError,\n ...rest\n}: MImageProps) {\n const texts = useMCommonTexts()\n const [errored, setErrored] = useState(false)\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewItems, setPreviewItems] = useState<Array<{src: string; alt?: string; caption?: string}>>([])\n const [previewIndex, setPreviewIndex] = useState(0)\n const previewId = useId()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: skeleton ? 'none' : clickEffect,\n })\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n if (fallback && !errored) {\n setErrored(true)\n e.currentTarget.src = fallback\n }\n onError?.(e)\n }\n\n const widthValue = toCssSize(width)\n const heightValue = toCssSize(height)\n const hasExplicitSize = widthValue != null || heightValue != null\n const hasFixedRatio = ratio !== 'auto' && !!RATIO_MAP[ratio]\n const sizeStyle: CSSProperties = {}\n if (widthValue != null) sizeStyle.width = widthValue\n if (heightValue != null) sizeStyle.height = heightValue\n const ratioStyle: CSSProperties = {\n ...style,\n ...(hasFixedRatio ? {aspectRatio: RATIO_MAP[ratio]} : null),\n ...sizeStyle,\n }\n const resolvedSrc = errored && fallback ? fallback : src\n const previewItem = useMemo(\n () => ({\n src: resolvedSrc || '',\n alt: alt ?? '',\n caption: typeof rest.title === 'string' ? rest.title : undefined,\n }),\n [alt, resolvedSrc, rest.title]\n )\n\n useEffect(() => {\n if (!preview || !previewGroup || !resolvedSrc) {\n return\n }\n\n return registerMediaPreviewItem(previewGroup, previewId, previewItem)\n }, [preview, previewGroup, previewId, previewItem, resolvedSrc])\n\n // Skeleton placeholder\n if (skeleton) {\n return (\n <MSkeleton\n variant=\"rectangle\"\n animate=\"pulse\"\n className={cn('image-skeleton', rounded && 'rounded', bordered && 'bordered', className)}\n style={ratioStyle}\n aria-label={texts.loading}\n {...getHiddenProps(hidden, hiddenAbove)}\n />\n )\n }\n\n const openPreview = () => {\n if (!preview || !resolvedSrc) {\n return\n }\n\n if (previewGroup) {\n const groupItems = getMediaPreviewGroupItems(previewGroup)\n const currentIndex = groupItems.findIndex((item) => item.id === previewId)\n\n if (groupItems.length > 0 && currentIndex >= 0) {\n setPreviewItems(groupItems.map(({id, ...item}) => item))\n setPreviewIndex(currentIndex)\n setPreviewOpen(true)\n return\n }\n }\n\n setPreviewItems([previewItem])\n setPreviewIndex(0)\n setPreviewOpen(true)\n }\n\n const imgClassName = cn(\n 'image',\n fit,\n !effectLayer && rounded && 'rounded',\n !effectLayer && bordered && 'bordered',\n !effectLayer && shadow && 'shadow'\n )\n const usesWrapper = hasFixedRatio || hasExplicitSize || Boolean(effectLayer) || preview || hoverEffect !== 'none'\n const wrapperClassName = cn(\n 'image-wrap',\n hasFixedRatio && 'has-ratio',\n hasExplicitSize && 'has-size',\n rounded && 'rounded',\n bordered && 'bordered',\n shadow && 'shadow',\n preview && 'preview',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName,\n className\n )\n const imageNode = <img className={imgClassName} onError={handleError} src={resolvedSrc} {...rest} alt={alt ?? ''} />\n\n if (usesWrapper) {\n return (\n <>\n {preview ? (\n <button\n type=\"button\"\n className={cn(wrapperClassName, 'image-button')}\n aria-label={formatMText(texts.previewItem, {name: alt || texts.image})}\n onClick={openPreview}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n disabled={!resolvedSrc}\n {...getHiddenProps(hidden, hiddenAbove)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </button>\n ) : (\n <span\n className={wrapperClassName}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n {...getHiddenProps(hidden, hiddenAbove)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </span>\n )}\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n }\n\n return (\n <>\n <img\n className={cn(imgClassName, className)}\n style={ratioStyle}\n onError={handleError}\n src={resolvedSrc}\n {...getHiddenProps(hidden, hiddenAbove)}\n {...rest}\n alt={alt ?? ''}\n />\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n","import type {MGalleryProps} from './MGallery.types'\nimport {useState} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MGallery.css'\nimport {useMCommonTexts, formatMText} from '../../../i18n/frameworkTexts'\n\n// Render a responsive image grid gallery.\nexport function MGallery({\n items,\n columns = 3,\n rounded = true,\n preview = false,\n hoverEffect = 'zoom',\n clickEffect = 'ripple',\n className,\n ...rest\n}: MGalleryProps) {\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewIndex, setPreviewIndex] = useState(0)\n\n return (\n <>\n <div className={cn('gallery', `columns-${columns}`, className)} {...rest}>\n {items.map((item, i) => (\n <GalleryFigure\n key={i}\n item={item}\n rounded={rounded}\n preview={preview}\n hoverEffect={hoverEffect}\n clickEffect={clickEffect}\n onOpen={() => {\n setPreviewIndex(i)\n setPreviewOpen(true)\n }}\n />\n ))}\n </div>\n\n <MMediaLightbox\n open={previewOpen}\n items={items}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n\nfunction GalleryFigure({\n item,\n rounded,\n preview,\n hoverEffect,\n clickEffect,\n onOpen,\n}: {\n item: {src: string; thumbnail?: string; alt?: string; caption?: string}\n rounded: boolean\n preview: boolean\n hoverEffect: 'none' | 'zoom' | 'dim' | 'zoom-dim'\n clickEffect: 'none' | 'ripple'\n onOpen: () => void\n}) {\n const texts = useMCommonTexts()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: clickEffect,\n })\n return (\n <figure className={cn('gallery-item', rounded && 'rounded')}>\n {preview ? (\n <button\n type=\"button\"\n className={cn(\n 'gallery-trigger',\n rounded && 'rounded',\n 'gallery-button',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName\n )}\n onClick={onOpen}\n onPointerDown={handlePointerDown}\n aria-label={formatMText(texts.previewItem, {name: item.alt || texts.image})}\n >\n <img\n className=\"gallery-image\"\n src={item.thumbnail || item.src}\n alt={item.alt || ''}\n loading=\"lazy\"\n />\n {item.caption && <span className=\"gallery-caption\">{item.caption}</span>}\n {effectLayer}\n </button>\n ) : (\n <div\n className={cn(\n 'gallery-trigger',\n rounded && 'rounded',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName\n )}\n onPointerDown={handlePointerDown}\n >\n <img\n className=\"gallery-image\"\n src={item.thumbnail || item.src}\n alt={item.alt || ''}\n loading=\"lazy\"\n />\n {item.caption && <span className=\"gallery-caption\">{item.caption}</span>}\n {effectLayer}\n </div>\n )}\n </figure>\n )\n}\n","import {useEffect, useState} from 'react'\nimport type {KeyboardEvent} from 'react'\nimport {isRtlElement} from '../../utils/radioGroupKeys'\n\n/**\n * Shared carousel helpers (MCarousel, MShowcaseCarousel). Internal, not re-exported.\n */\n\nconst EDITABLE_SELECTOR =\n 'input, textarea, select, [contenteditable=\"\"], [contenteditable=\"true\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"textbox\"], [role=\"combobox\"], [role=\"listbox\"], [role=\"grid\"], [role=\"tablist\"], [role=\"menu\"]'\n\n/**\n * Slide step for an arrow key pressed inside a carousel: -1 (previous), 1 (next) or `null`\n * when the key is not a carousel key or belongs to a widget that uses arrows itself.\n * Left / Right are flipped in right-to-left layouts.\n */\nexport function getCarouselKeyStep(event: KeyboardEvent<HTMLElement>): -1 | 1 | null {\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return null\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return null\n const target = event.target as Element | null\n if (target instanceof Element && target.closest(EDITABLE_SELECTOR)) return null\n const forward = event.key === 'ArrowRight'\n const rtl = isRtlElement(event.currentTarget)\n return forward !== rtl ? 1 : -1\n}\n\nfunction readReducedMotion() {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false\n try {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches\n } catch {\n return false\n }\n}\n\n/** Live `prefers-reduced-motion: reduce` flag (false on the server). */\nexport function usePrefersReducedMotion() {\n const [reduced, setReduced] = useState(false)\n\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return\n let query: MediaQueryList\n try {\n query = window.matchMedia('(prefers-reduced-motion: reduce)')\n } catch {\n return\n }\n setReduced(readReducedMotion())\n const update = () => setReduced(query.matches)\n query.addEventListener?.('change', update)\n return () => query.removeEventListener?.('change', update)\n }, [])\n\n return reduced\n}\n","import {useState, useEffect, useCallback, useId, useRef, Children} from 'react'\nimport type * as React from 'react'\nimport type {MCarouselProps} from './MCarousel.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon, MPlayIcon, MStopIcon} from '../../../icons'\nimport {getCarouselKeyStep, usePrefersReducedMotion} from '../carouselA11y'\nimport './MCarousel.css'\nimport {useMCommonTexts, useMMediaTexts, formatMText} from '../../../i18n/frameworkTexts'\n\ntype RotationChoice = 'auto' | 'stopped' | 'running'\n\n// Render a swipeable content slider with arrows, dots and transition modes.\nexport function MCarousel({\n autoPlay = false,\n interval = 5000,\n showDots = true,\n showArrows = true,\n loop = true,\n draggable = true,\n transition = 'slide',\n className,\n children,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyDown,\n ...rest\n}: MCarouselProps) {\n const texts = useMCommonTexts()\n const mediaTexts = useMMediaTexts()\n const trackId = `${useId()}-carousel-track`\n const reducedMotion = usePrefersReducedMotion()\n // APG carousel: auto-rotation has an explicit stop / start control, pauses while the pointer\n // hovers the carousel or keyboard focus is inside it, and starts stopped under reduced motion.\n const [rotationChoice, setRotationChoice] = useState<RotationChoice>('auto')\n const [hovered, setHovered] = useState(false)\n const [focusInside, setFocusInside] = useState(false)\n const rotationButtonRef = useRef<HTMLElement | null>(null)\n const slides = Children.toArray(children)\n const count = slides.length\n const [active, setActive] = useState(0)\n const [dragOffset, setDragOffset] = useState(0)\n const [isDragging, setIsDragging] = useState(false)\n const dragStartX = useRef(0)\n const trackRef = useRef<HTMLDivElement>(null)\n\n const goTo = useCallback(\n (index: number) => {\n if (loop) {\n setActive((index + count) % count)\n } else {\n setActive(Math.max(0, Math.min(index, count - 1)))\n }\n },\n [count, loop]\n )\n\n const prev = useCallback(() => goTo(active - 1), [active, goTo])\n const next = useCallback(() => goTo(active + 1), [active, goTo])\n\n const canRotate = autoPlay && count > 1\n const rotating = canRotate && (rotationChoice === 'running' || (rotationChoice === 'auto' && !reducedMotion))\n const paused = hovered || focusInside || isDragging\n\n useEffect(() => {\n if (!rotating || paused) return\n const timer = setInterval(next, interval)\n return () => clearInterval(timer)\n }, [rotating, paused, interval, next])\n\n const handleDragStart = (clientX: number) => {\n if (!draggable) return\n setIsDragging(true)\n dragStartX.current = clientX\n setDragOffset(0)\n }\n\n const handleDragMove = (clientX: number) => {\n if (!isDragging) return\n const diff = clientX - dragStartX.current\n setDragOffset(diff)\n }\n\n const handleDragEnd = () => {\n if (!isDragging) return\n setIsDragging(false)\n const threshold = 50\n if (dragOffset < -threshold) {\n next()\n } else if (dragOffset > threshold) {\n prev()\n }\n setDragOffset(0)\n }\n\n const onPointerDown = (e: React.PointerEvent) => {\n if (!draggable) return\n e.currentTarget.setPointerCapture(e.pointerId)\n handleDragStart(e.clientX)\n }\n\n const onPointerMove = (e: React.PointerEvent) => {\n handleDragMove(e.clientX)\n }\n\n const onPointerUp = () => {\n handleDragEnd()\n }\n\n if (count === 0) return null\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n // Focus on the rotation control itself does not pause, so \"Start\" takes effect at once.\n setFocusInside(!rotationButtonRef.current?.contains(event.target as Node))\n onFocus?.(event)\n }\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null\n if (!nextTarget || !event.currentTarget.contains(nextTarget)) setFocusInside(false)\n onBlur?.(event)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event)\n if (event.defaultPrevented || count <= 1) return\n const step = getCarouselKeyStep(event)\n if (step === null) return\n event.preventDefault()\n goTo(active + step)\n }\n\n const isFade = transition === 'fade'\n const trackStyle = !isFade\n ? {transform: `translateX(calc(-${active * 100}% + ${isDragging ? dragOffset : 0}px))`}\n : undefined\n\n return (\n <div\n className={cn('carousel', isFade && 'fade', className)}\n role=\"region\"\n aria-roledescription={mediaTexts.carouselRoleDescription}\n aria-label={rest['aria-labelledby'] ? undefined : mediaTexts.carouselLabel}\n {...rest}\n onMouseEnter={(event) => {\n setHovered(true)\n onMouseEnter?.(event)\n }}\n onMouseLeave={(event) => {\n setHovered(false)\n onMouseLeave?.(event)\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n >\n {canRotate && (\n <MButton\n ref={rotationButtonRef}\n variant=\"ghost\"\n color=\"primary\"\n iconOnly\n shape=\"circle\"\n size=\"sm\"\n className=\"carousel-rotation\"\n aria-label={rotating ? mediaTexts.stopRotation : mediaTexts.startRotation}\n aria-controls={trackId}\n onClick={() => setRotationChoice(rotating ? 'stopped' : 'running')}\n >\n {rotating ? <MStopIcon /> : <MPlayIcon />}\n </MButton>\n )}\n <div\n className=\"carousel-viewport\"\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n onDragStart={(e) => {\n // A native image/link drag would end the swipe with pointercancel.\n if (draggable) e.preventDefault()\n }}\n style={{\n touchAction: draggable ? 'pan-y' : undefined,\n cursor: draggable ? (isDragging ? 'grabbing' : 'grab') : undefined,\n }}\n >\n <div\n ref={trackRef}\n id={trackId}\n className={cn('carousel-track', isDragging && 'dragging')}\n style={trackStyle}\n aria-live={rotating && !paused ? 'off' : 'polite'}\n >\n {slides.map((slide, i) => (\n <div\n key={i}\n className={cn(\n 'carousel-slide',\n isFade && i === active && 'active',\n isFade && i !== active && 'hidden'\n )}\n role=\"group\"\n aria-roledescription={mediaTexts.slideRoleDescription}\n aria-label={formatMText(mediaTexts.slideOf, {index: i + 1, count})}\n // Off-screen slides stay out of the Tab order and the accessibility tree.\n aria-hidden={i !== active || undefined}\n inert={i !== active ? true : undefined}\n >\n {slide}\n </div>\n ))}\n </div>\n </div>\n\n {showArrows && count > 1 && (\n <>\n <MButton\n variant=\"ghost\"\n color=\"primary\"\n iconOnly\n shape=\"circle\"\n onClick={prev}\n aria-label={texts.previousSlide}\n aria-controls={trackId}\n className=\"carousel-arrow carousel-arrow-prev\"\n >\n <MChevronLeftIcon />\n </MButton>\n <MButton\n variant=\"ghost\"\n color=\"primary\"\n iconOnly\n shape=\"circle\"\n onClick={next}\n aria-label={texts.nextSlide}\n aria-controls={trackId}\n className=\"carousel-arrow carousel-arrow-next\"\n >\n <MChevronRightIcon />\n </MButton>\n </>\n )}\n\n {showDots && count > 1 && (\n <div className=\"carousel-dots\" role=\"group\" aria-label={mediaTexts.chooseSlide}>\n {slides.map((_, i) => (\n <button\n key={i}\n className={cn('carousel-dot', i === active && 'active')}\n onClick={() => goTo(i)}\n aria-label={formatMText(texts.slideNumber, {index: i + 1})}\n aria-current={i === active ? 'true' : undefined}\n aria-controls={trackId}\n type=\"button\"\n />\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./theme-ByPZH0dh.cjs`),t=require(`./frameworkTexts-CaqdiKHW.cjs`),n=require(`./icons-Bp8bB9TP.cjs`),r=require(`./cn-DYFxgzi2.cjs`),i=require(`./useInteractionEffect-CtXlbjhC.cjs`),a=require(`./useModalLayer-Cyt93Prs.cjs`),o=require(`./MButton-BxEky3xQ.cjs`),s=require(`./MSkeleton-DuAN8Vcv.cjs`),c=require(`./radioGroupKeys-COL8uXbH.cjs`),l=require(`./scrollLock-C9P9o6wH.cjs`);require(`./core-w629c4ND.cjs`);let u=require(`react`),d=require(`react/jsx-runtime`);function f({open:e,items:i,activeIndex:c,onClose:f,onActiveIndexChange:p}){let m=t.s(),h=i[c],g=(0,u.useRef)(null),_=(0,u.useRef)(null),v=c>0,y=c<i.length-1;if(a.r({active:e&&!!h,containerRef:_,onEscape:f}),(0,u.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`ArrowLeft`&&v&&p(c-1),e.key===`ArrowRight`&&y&&p(c+1)};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[c,y,v,p,f,e]),(0,u.useEffect)(()=>{if(e)return l.t()},[e]),!e||!h)return null;let b=e=>{let t=e.target;t&&g.current&&!g.current.contains(t)&&f()},x=h.alt||h.caption||m.imagePreview;return(0,d.jsx)(a.c,{children:(0,d.jsx)(`div`,{ref:_,className:r.t(`mineral-backdrop`,`media-lightbox-backdrop`),onMouseDown:b,children:(0,d.jsx)(`div`,{className:`media-lightbox-shell`,role:`dialog`,"aria-modal":`true`,"aria-label":x,children:(0,d.jsx)(`div`,{className:`media-lightbox-stage`,children:(0,d.jsxs)(`div`,{ref:g,className:`media-lightbox-frame`,children:[(0,d.jsxs)(`div`,{className:`media-lightbox-topbar`,children:[(0,d.jsx)(s.n,{color:`dark`,size:`md`,rounded:!0,className:`media-lightbox-counter`,children:i.length>1?`${c+1} / ${i.length}`:m.preview}),(0,d.jsx)(o.t,{type:`button`,variant:`ghost`,color:`error`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-action`,"aria-label":m.closePreview,onClick:f,children:(0,d.jsx)(n.Xi,{})})]}),(0,d.jsx)(o.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-prev`,"aria-label":m.previousImage,disabled:i.length<=1||!v,onClick:()=>v&&p(c-1),children:(0,d.jsx)(n.Ji,{})}),(0,d.jsx)(`img`,{className:`media-lightbox-image`,src:h.src,alt:h.alt||``}),(0,d.jsx)(o.t,{type:`button`,variant:`ghost`,color:`primary`,size:`lg`,shape:`circle`,iconOnly:!0,className:`media-lightbox-nav media-lightbox-nav-next`,"aria-label":m.nextImage,disabled:i.length<=1||!y,onClick:()=>y&&p(c+1),children:(0,d.jsx)(n.qi,{})}),h.caption||h.alt?(0,d.jsx)(s.n,{color:`dark`,size:`sm`,rounded:!0,className:`media-lightbox-caption`,children:h.caption||h.alt}):null]})})})})})}var p=new Map;function m(e,t,n){let r=p.get(e);return r||(r=new Map,p.set(e,r)),r.set(t,{id:t,...n}),()=>{let n=p.get(e);n&&(n.delete(t),n.size===0&&p.delete(e))}}function h(e){return Array.from(p.get(e)?.values()??[])}function g(e){return e===`zoom`||e===`zoom-dim`}function _(e){return e===`dim`||e===`zoom-dim`}var v={"1:1":`1 / 1`,"4:3":`4 / 3`,"16:9":`16 / 9`,"21:9":`21 / 9`};function y(e){if(e!=null)return typeof e==`number`?`${e}px`:e}function b({src:n,fit:a=`cover`,ratio:o=`auto`,width:c,height:l,hidden:p,hiddenAbove:b,rounded:x=!1,bordered:S=!1,shadow:C=!1,preview:w=!1,previewGroup:T,hoverEffect:E=`none`,clickEffect:D=`none`,fallback:O,skeleton:k=!1,className:A,style:ee,alt:j,onError:te,...M}){let N=t.s(),[P,ne]=(0,u.useState)(!1),[F,I]=(0,u.useState)(!1),[L,R]=(0,u.useState)([]),[z,B]=(0,u.useState)(0),V=(0,u.useId)(),{effectClassName:H,effectLayer:U,handlePointerDown:W}=i.t({effect:k?`none`:D}),G=e=>{O&&!P&&(ne(!0),e.currentTarget.src=O),te?.(e)},K=y(c),q=y(l),re=K!=null||q!=null,J=o!==`auto`&&!!v[o],Y={};K!=null&&(Y.width=K),q!=null&&(Y.height=q);let X={...ee,...J?{aspectRatio:v[o]}:null,...Y},Z=P&&O?O:n,Q=(0,u.useMemo)(()=>({src:Z||``,alt:j??``,caption:typeof M.title==`string`?M.title:void 0}),[j,Z,M.title]);if((0,u.useEffect)(()=>{if(!(!w||!T||!Z))return m(T,V,Q)},[w,T,V,Q,Z]),k)return(0,d.jsx)(s.t,{variant:`rectangle`,animate:`pulse`,className:r.t(`image-skeleton`,x&&`rounded`,S&&`bordered`,A),style:X,"aria-label":N.loading,...e.r(p,b)});let ie=()=>{if(!(!w||!Z)){if(T){let e=h(T),t=e.findIndex(e=>e.id===V);if(e.length>0&&t>=0){R(e.map(({id:e,...t})=>t)),B(t),I(!0);return}}R([Q]),B(0),I(!0)}},ae=r.t(`image`,a,!U&&x&&`rounded`,!U&&S&&`bordered`,!U&&C&&`shadow`),$=J||re||!!U||w||E!==`none`,oe=r.t(`image-wrap`,J&&`has-ratio`,re&&`has-size`,x&&`rounded`,S&&`bordered`,C&&`shadow`,w&&`preview`,g(E)&&`effect-zoom`,_(E)&&`effect-dim`,H,A),se=(0,d.jsx)(`img`,{className:ae,onError:G,src:Z,...M,alt:j??``});return $?(0,d.jsxs)(d.Fragment,{children:[w?(0,d.jsxs)(`button`,{type:`button`,className:r.t(oe,`image-button`),"aria-label":t.t(N.previewItem,{name:j||N.image}),onClick:ie,onPointerDown:U?W:void 0,disabled:!Z,...e.r(p,b),style:X,children:[U,se]}):(0,d.jsxs)(`span`,{className:oe,onPointerDown:U?W:void 0,...e.r(p,b),style:X,children:[U,se]}),(0,d.jsx)(f,{open:F,items:L,activeIndex:z,onActiveIndexChange:B,onClose:()=>I(!1)})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`img`,{className:r.t(ae,A),style:X,onError:G,src:Z,...e.r(p,b),...M,alt:j??``}),(0,d.jsx)(f,{open:F,items:L,activeIndex:z,onActiveIndexChange:B,onClose:()=>I(!1)})]})}function x({items:e,columns:t=3,rounded:n=!0,preview:i=!1,hoverEffect:a=`zoom`,clickEffect:o=`ripple`,className:s,...c}){let[l,p]=(0,u.useState)(!1),[m,h]=(0,u.useState)(0);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`div`,{className:r.t(`gallery`,`columns-${t}`,s),...c,children:e.map((e,t)=>(0,d.jsx)(S,{item:e,rounded:n,preview:i,hoverEffect:a,clickEffect:o,onOpen:()=>{h(t),p(!0)}},t))}),(0,d.jsx)(f,{open:l,items:e,activeIndex:m,onActiveIndexChange:h,onClose:()=>p(!1)})]})}function S({item:e,rounded:n,preview:a,hoverEffect:o,clickEffect:s,onOpen:c}){let l=t.s(),{effectClassName:u,effectLayer:f,handlePointerDown:p}=i.t({effect:s});return(0,d.jsx)(`figure`,{className:r.t(`gallery-item`,n&&`rounded`),children:a?(0,d.jsxs)(`button`,{type:`button`,className:r.t(`gallery-trigger`,n&&`rounded`,`gallery-button`,g(o)&&`effect-zoom`,_(o)&&`effect-dim`,u),onClick:c,onPointerDown:p,"aria-label":t.t(l.previewItem,{name:e.alt||l.image}),children:[(0,d.jsx)(`img`,{className:`gallery-image`,src:e.thumbnail||e.src,alt:e.alt||``,loading:`lazy`}),e.caption&&(0,d.jsx)(`span`,{className:`gallery-caption`,children:e.caption}),f]}):(0,d.jsxs)(`div`,{className:r.t(`gallery-trigger`,n&&`rounded`,g(o)&&`effect-zoom`,_(o)&&`effect-dim`,u),onPointerDown:p,children:[(0,d.jsx)(`img`,{className:`gallery-image`,src:e.thumbnail||e.src,alt:e.alt||``,loading:`lazy`}),e.caption&&(0,d.jsx)(`span`,{className:`gallery-caption`,children:e.caption}),f]})})}var C=`input, textarea, select, [contenteditable=""], [contenteditable="true"], [role="slider"], [role="spinbutton"], [role="textbox"], [role="combobox"], [role="listbox"], [role="grid"], [role="tablist"], [role="menu"]`;function w(e){if(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return null;let t=e.target;return t instanceof Element&&t.closest(C)?null:e.key===`ArrowRight`===c.n(e.currentTarget)?-1:1}function T(){if(typeof window>`u`||typeof window.matchMedia!=`function`)return!1;try{return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}catch{return!1}}function E(){let[e,t]=(0,u.useState)(!1);return(0,u.useEffect)(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e;try{e=window.matchMedia(`(prefers-reduced-motion: reduce)`)}catch{return}t(T());let n=()=>t(e.matches);return e.addEventListener?.(`change`,n),()=>e.removeEventListener?.(`change`,n)},[]),e}function D({autoPlay:e=!1,interval:i=5e3,showDots:a=!0,showArrows:s=!0,loop:c=!0,draggable:l=!0,transition:f=`slide`,className:p,children:m,onMouseEnter:h,onMouseLeave:g,onFocus:_,onBlur:v,onKeyDown:y,...b}){let x=t.s(),S=t.g(),C=`${(0,u.useId)()}-carousel-track`,T=E(),[D,O]=(0,u.useState)(`auto`),[k,A]=(0,u.useState)(!1),[ee,j]=(0,u.useState)(!1),te=(0,u.useRef)(null),M=u.Children.toArray(m),N=M.length,[P,ne]=(0,u.useState)(0),[F,I]=(0,u.useState)(0),[L,R]=(0,u.useState)(!1),z=(0,u.useRef)(0),B=(0,u.useRef)(null),V=(0,u.useCallback)(e=>{ne(c?(e+N)%N:Math.max(0,Math.min(e,N-1)))},[N,c]),H=(0,u.useCallback)(()=>V(P-1),[P,V]),U=(0,u.useCallback)(()=>V(P+1),[P,V]),W=e&&N>1,G=W&&(D===`running`||D===`auto`&&!T),K=k||ee||L;(0,u.useEffect)(()=>{if(!G||K)return;let e=setInterval(U,i);return()=>clearInterval(e)},[G,K,i,U]);let q=e=>{l&&(R(!0),z.current=e,I(0))},re=e=>{L&&I(e-z.current)},J=()=>{L&&(R(!1),F<-50?U():F>50&&H(),I(0))},Y=e=>{l&&(e.currentTarget.setPointerCapture(e.pointerId),q(e.clientX))},X=e=>{re(e.clientX)},Z=()=>{J()};if(N===0)return null;let Q=e=>{j(!te.current?.contains(e.target)),_?.(e)},ie=e=>{let t=e.relatedTarget;(!t||!e.currentTarget.contains(t))&&j(!1),v?.(e)},ae=e=>{if(y?.(e),e.defaultPrevented||N<=1)return;let t=w(e);t!==null&&(e.preventDefault(),V(P+t))},$=f===`fade`,oe=$?void 0:{transform:`translateX(calc(-${P*100}% + ${L?F:0}px))`};return(0,d.jsxs)(`div`,{className:r.t(`carousel`,$&&`fade`,p),role:`region`,"aria-roledescription":S.carouselRoleDescription,"aria-label":b[`aria-labelledby`]?void 0:S.carouselLabel,...b,onMouseEnter:e=>{A(!0),h?.(e)},onMouseLeave:e=>{A(!1),g?.(e)},onFocus:Q,onBlur:ie,onKeyDown:ae,children:[W&&(0,d.jsx)(o.t,{ref:te,variant:`ghost`,color:`primary`,iconOnly:!0,shape:`circle`,size:`sm`,className:`carousel-rotation`,"aria-label":G?S.stopRotation:S.startRotation,"aria-controls":C,onClick:()=>O(G?`stopped`:`running`),children:G?(0,d.jsx)(n.br,{}):(0,d.jsx)(n.xr,{})}),(0,d.jsx)(`div`,{className:`carousel-viewport`,onPointerDown:Y,onPointerMove:X,onPointerUp:Z,onPointerCancel:Z,onDragStart:e=>{l&&e.preventDefault()},style:{touchAction:l?`pan-y`:void 0,cursor:l?L?`grabbing`:`grab`:void 0},children:(0,d.jsx)(`div`,{ref:B,id:C,className:r.t(`carousel-track`,L&&`dragging`),style:oe,"aria-live":G&&!K?`off`:`polite`,children:M.map((e,n)=>(0,d.jsx)(`div`,{className:r.t(`carousel-slide`,$&&n===P&&`active`,$&&n!==P&&`hidden`),role:`group`,"aria-roledescription":S.slideRoleDescription,"aria-label":t.t(S.slideOf,{index:n+1,count:N}),"aria-hidden":n!==P||void 0,inert:n===P?void 0:!0,children:e},n))})}),s&&N>1&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(o.t,{variant:`ghost`,color:`primary`,iconOnly:!0,shape:`circle`,onClick:H,"aria-label":x.previousSlide,"aria-controls":C,className:`carousel-arrow carousel-arrow-prev`,children:(0,d.jsx)(n.Ji,{})}),(0,d.jsx)(o.t,{variant:`ghost`,color:`primary`,iconOnly:!0,shape:`circle`,onClick:U,"aria-label":x.nextSlide,"aria-controls":C,className:`carousel-arrow carousel-arrow-next`,children:(0,d.jsx)(n.qi,{})})]}),a&&N>1&&(0,d.jsx)(`div`,{className:`carousel-dots`,role:`group`,"aria-label":S.chooseSlide,children:M.map((e,n)=>(0,d.jsx)(`button`,{className:r.t(`carousel-dot`,n===P&&`active`),onClick:()=>V(n),"aria-label":t.t(x.slideNumber,{index:n+1}),"aria-current":n===P?`true`:void 0,"aria-controls":C,type:`button`},n))})]})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return D}});
2
+ //# sourceMappingURL=media-tr1s386v.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-tr1s386v.cjs","names":[],"sources":["../src/components/media/MMediaLightbox/MMediaLightbox.tsx","../src/components/media/mediaPreviewRegistry.ts","../src/components/media/mediaInteraction.ts","../src/components/media/MImage/MImage.tsx","../src/components/media/MGallery/MGallery.tsx","../src/components/media/carouselA11y.ts","../src/components/media/MCarousel/MCarousel.tsx"],"sourcesContent":["import {useEffect, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport {MButton} from '../../controls'\nimport {MBadge} from '../../feedback'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../../overlays/scrollLock'\nimport './MMediaLightbox.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nexport interface MMediaLightboxItem {\n src: string\n alt?: string\n caption?: string\n}\n\ninterface MMediaLightboxProps {\n open: boolean\n items: MMediaLightboxItem[]\n activeIndex: number\n onClose: () => void\n onActiveIndexChange: (index: number) => void\n}\n\nexport function MMediaLightbox({open, items, activeIndex, onClose, onActiveIndexChange}: MMediaLightboxProps) {\n const texts = useMCommonTexts()\n const currentItem = items[activeIndex]\n const frameRef = useRef<HTMLDivElement | null>(null)\n const backdropRef = useRef<HTMLDivElement | null>(null)\n const canGoPrev = activeIndex > 0\n const canGoNext = activeIndex < items.length - 1\n\n useModalLayer({active: open && !!currentItem, containerRef: backdropRef, onEscape: onClose})\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft' && canGoPrev) {\n onActiveIndexChange(activeIndex - 1)\n }\n\n if (event.key === 'ArrowRight' && canGoNext) {\n onActiveIndexChange(activeIndex + 1)\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [activeIndex, canGoNext, canGoPrev, onActiveIndexChange, onClose, open])\n\n useEffect(() => {\n if (!open) {\n return\n }\n\n return lockBodyScroll()\n }, [open])\n\n if (!open || !currentItem) {\n return null\n }\n\n const handleBackdropMouseDown = (event: MouseEvent<HTMLDivElement>) => {\n const target = event.target as Node | null\n\n if (target && frameRef.current && !frameRef.current.contains(target)) {\n onClose()\n }\n }\n\n const previewLabel = currentItem.alt || currentItem.caption || texts.imagePreview\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'media-lightbox-backdrop')}\n onMouseDown={handleBackdropMouseDown}\n >\n <div className=\"media-lightbox-shell\" role=\"dialog\" aria-modal=\"true\" aria-label={previewLabel}>\n <div className=\"media-lightbox-stage\">\n <div ref={frameRef} className=\"media-lightbox-frame\">\n <div className=\"media-lightbox-topbar\">\n <MBadge color=\"dark\" size=\"md\" rounded className=\"media-lightbox-counter\">\n {items.length > 1 ? `${activeIndex + 1} / ${items.length}` : texts.preview}\n </MBadge>\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"error\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-action\"\n aria-label={texts.closePreview}\n onClick={onClose}\n >\n <MCloseIcon />\n </MButton>\n </div>\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-prev\"\n aria-label={texts.previousImage}\n disabled={items.length <= 1 || !canGoPrev}\n onClick={() => canGoPrev && onActiveIndexChange(activeIndex - 1)}\n >\n <MChevronLeftIcon />\n </MButton>\n\n <img className=\"media-lightbox-image\" src={currentItem.src} alt={currentItem.alt || ''} />\n\n <MButton\n type=\"button\"\n variant=\"ghost\"\n color=\"primary\"\n size=\"lg\"\n shape=\"circle\"\n iconOnly\n className=\"media-lightbox-nav media-lightbox-nav-next\"\n aria-label={texts.nextImage}\n disabled={items.length <= 1 || !canGoNext}\n onClick={() => canGoNext && onActiveIndexChange(activeIndex + 1)}\n >\n <MChevronRightIcon />\n </MButton>\n\n {currentItem.caption || currentItem.alt ? (\n <MBadge color=\"dark\" size=\"sm\" rounded className=\"media-lightbox-caption\">\n {currentItem.caption || currentItem.alt}\n </MBadge>\n ) : null}\n </div>\n </div>\n </div>\n </div>\n </MPortal>\n )\n}\n","import type {MMediaLightboxItem} from './MMediaLightbox/MMediaLightbox'\n\ninterface MMediaPreviewRegistryItem extends MMediaLightboxItem {\n id: string\n}\n\nconst previewGroups = new Map<string, Map<string, MMediaPreviewRegistryItem>>()\n\nexport function registerMediaPreviewItem(group: string, id: string, item: MMediaLightboxItem) {\n let groupItems = previewGroups.get(group)\n\n if (!groupItems) {\n groupItems = new Map()\n previewGroups.set(group, groupItems)\n }\n\n groupItems.set(id, {id, ...item})\n\n return () => {\n const currentGroupItems = previewGroups.get(group)\n if (!currentGroupItems) {\n return\n }\n\n currentGroupItems.delete(id)\n\n if (currentGroupItems.size === 0) {\n previewGroups.delete(group)\n }\n }\n}\n\nexport function getMediaPreviewGroupItems(group: string) {\n return Array.from(previewGroups.get(group)?.values() ?? [])\n}\n","import type {MClickEffect} from '../../utils/useInteractionEffect'\n\nexport type MMediaInteractionEffect = MClickEffect | 'zoom' | 'dim' | 'zoom-ripple'\nexport type MMediaHoverEffect = 'none' | 'zoom' | 'dim' | 'zoom-dim'\n\nexport function usesRipple(effect: MMediaInteractionEffect): boolean {\n return effect === 'ripple' || effect === 'zoom-ripple'\n}\n\nexport function usesZoom(effect: MMediaInteractionEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-ripple'\n}\n\nexport function usesDim(effect: MMediaInteractionEffect): boolean {\n return effect === 'dim'\n}\n\nexport function usesHoverZoom(effect: MMediaHoverEffect): boolean {\n return effect === 'zoom' || effect === 'zoom-dim'\n}\n\nexport function usesHoverDim(effect: MMediaHoverEffect): boolean {\n return effect === 'dim' || effect === 'zoom-dim'\n}\n","import {useEffect, useId, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {CSSProperties} from 'react'\nimport type {MImageProps, MImageSize} from './MImage.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSkeleton} from '../../feedback'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {getMediaPreviewGroupItems, registerMediaPreviewItem} from '../mediaPreviewRegistry'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MImage.css'\nimport {useMCommonTexts, formatMText} from '../../../i18n/frameworkTexts'\n\nconst RATIO_MAP: Record<string, string> = {\n '1:1': '1 / 1',\n '4:3': '4 / 3',\n '16:9': '16 / 9',\n '21:9': '21 / 9',\n}\n\nfunction toCssSize(value: MImageSize | undefined): string | undefined {\n if (value == null) return undefined\n return typeof value === 'number' ? `${value}px` : value\n}\n\n// Render a styled image with aspect ratio, fit, and optional fallback.\nexport function MImage({\n src,\n fit = 'cover',\n ratio = 'auto',\n width,\n height,\n hidden,\n hiddenAbove,\n rounded = false,\n bordered = false,\n shadow = false,\n preview = false,\n previewGroup,\n hoverEffect = 'none',\n clickEffect = 'none',\n fallback,\n skeleton = false,\n className,\n style,\n alt,\n onError,\n ...rest\n}: MImageProps) {\n const texts = useMCommonTexts()\n const [errored, setErrored] = useState(false)\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewItems, setPreviewItems] = useState<Array<{src: string; alt?: string; caption?: string}>>([])\n const [previewIndex, setPreviewIndex] = useState(0)\n const previewId = useId()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: skeleton ? 'none' : clickEffect,\n })\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n if (fallback && !errored) {\n setErrored(true)\n e.currentTarget.src = fallback\n }\n onError?.(e)\n }\n\n const widthValue = toCssSize(width)\n const heightValue = toCssSize(height)\n const hasExplicitSize = widthValue != null || heightValue != null\n const hasFixedRatio = ratio !== 'auto' && !!RATIO_MAP[ratio]\n const sizeStyle: CSSProperties = {}\n if (widthValue != null) sizeStyle.width = widthValue\n if (heightValue != null) sizeStyle.height = heightValue\n const ratioStyle: CSSProperties = {\n ...style,\n ...(hasFixedRatio ? {aspectRatio: RATIO_MAP[ratio]} : null),\n ...sizeStyle,\n }\n const resolvedSrc = errored && fallback ? fallback : src\n const previewItem = useMemo(\n () => ({\n src: resolvedSrc || '',\n alt: alt ?? '',\n caption: typeof rest.title === 'string' ? rest.title : undefined,\n }),\n [alt, resolvedSrc, rest.title]\n )\n\n useEffect(() => {\n if (!preview || !previewGroup || !resolvedSrc) {\n return\n }\n\n return registerMediaPreviewItem(previewGroup, previewId, previewItem)\n }, [preview, previewGroup, previewId, previewItem, resolvedSrc])\n\n // Skeleton placeholder\n if (skeleton) {\n return (\n <MSkeleton\n variant=\"rectangle\"\n animate=\"pulse\"\n className={cn('image-skeleton', rounded && 'rounded', bordered && 'bordered', className)}\n style={ratioStyle}\n aria-label={texts.loading}\n {...getHiddenProps(hidden, hiddenAbove)}\n />\n )\n }\n\n const openPreview = () => {\n if (!preview || !resolvedSrc) {\n return\n }\n\n if (previewGroup) {\n const groupItems = getMediaPreviewGroupItems(previewGroup)\n const currentIndex = groupItems.findIndex((item) => item.id === previewId)\n\n if (groupItems.length > 0 && currentIndex >= 0) {\n setPreviewItems(groupItems.map(({id, ...item}) => item))\n setPreviewIndex(currentIndex)\n setPreviewOpen(true)\n return\n }\n }\n\n setPreviewItems([previewItem])\n setPreviewIndex(0)\n setPreviewOpen(true)\n }\n\n const imgClassName = cn(\n 'image',\n fit,\n !effectLayer && rounded && 'rounded',\n !effectLayer && bordered && 'bordered',\n !effectLayer && shadow && 'shadow'\n )\n const usesWrapper = hasFixedRatio || hasExplicitSize || Boolean(effectLayer) || preview || hoverEffect !== 'none'\n const wrapperClassName = cn(\n 'image-wrap',\n hasFixedRatio && 'has-ratio',\n hasExplicitSize && 'has-size',\n rounded && 'rounded',\n bordered && 'bordered',\n shadow && 'shadow',\n preview && 'preview',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName,\n className\n )\n const imageNode = <img className={imgClassName} onError={handleError} src={resolvedSrc} {...rest} alt={alt ?? ''} />\n\n if (usesWrapper) {\n return (\n <>\n {preview ? (\n <button\n type=\"button\"\n className={cn(wrapperClassName, 'image-button')}\n aria-label={formatMText(texts.previewItem, {name: alt || texts.image})}\n onClick={openPreview}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n disabled={!resolvedSrc}\n {...getHiddenProps(hidden, hiddenAbove)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </button>\n ) : (\n <span\n className={wrapperClassName}\n onPointerDown={effectLayer ? handlePointerDown : undefined}\n {...getHiddenProps(hidden, hiddenAbove)}\n style={ratioStyle}\n >\n {effectLayer}\n {imageNode}\n </span>\n )}\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n }\n\n return (\n <>\n <img\n className={cn(imgClassName, className)}\n style={ratioStyle}\n onError={handleError}\n src={resolvedSrc}\n {...getHiddenProps(hidden, hiddenAbove)}\n {...rest}\n alt={alt ?? ''}\n />\n\n <MMediaLightbox\n open={previewOpen}\n items={previewItems}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n","import type {MGalleryProps} from './MGallery.types'\nimport {useState} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MMediaLightbox} from '../MMediaLightbox/MMediaLightbox'\nimport {usesHoverDim, usesHoverZoom} from '../mediaInteraction'\nimport './MGallery.css'\nimport {useMCommonTexts, formatMText} from '../../../i18n/frameworkTexts'\n\n// Render a responsive image grid gallery.\nexport function MGallery({\n items,\n columns = 3,\n rounded = true,\n preview = false,\n hoverEffect = 'zoom',\n clickEffect = 'ripple',\n className,\n ...rest\n}: MGalleryProps) {\n const [previewOpen, setPreviewOpen] = useState(false)\n const [previewIndex, setPreviewIndex] = useState(0)\n\n return (\n <>\n <div className={cn('gallery', `columns-${columns}`, className)} {...rest}>\n {items.map((item, i) => (\n <GalleryFigure\n key={i}\n item={item}\n rounded={rounded}\n preview={preview}\n hoverEffect={hoverEffect}\n clickEffect={clickEffect}\n onOpen={() => {\n setPreviewIndex(i)\n setPreviewOpen(true)\n }}\n />\n ))}\n </div>\n\n <MMediaLightbox\n open={previewOpen}\n items={items}\n activeIndex={previewIndex}\n onActiveIndexChange={setPreviewIndex}\n onClose={() => setPreviewOpen(false)}\n />\n </>\n )\n}\n\nfunction GalleryFigure({\n item,\n rounded,\n preview,\n hoverEffect,\n clickEffect,\n onOpen,\n}: {\n item: {src: string; thumbnail?: string; alt?: string; caption?: string}\n rounded: boolean\n preview: boolean\n hoverEffect: 'none' | 'zoom' | 'dim' | 'zoom-dim'\n clickEffect: 'none' | 'ripple'\n onOpen: () => void\n}) {\n const texts = useMCommonTexts()\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: clickEffect,\n })\n return (\n <figure className={cn('gallery-item', rounded && 'rounded')}>\n {preview ? (\n <button\n type=\"button\"\n className={cn(\n 'gallery-trigger',\n rounded && 'rounded',\n 'gallery-button',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName\n )}\n onClick={onOpen}\n onPointerDown={handlePointerDown}\n aria-label={formatMText(texts.previewItem, {name: item.alt || texts.image})}\n >\n <img\n className=\"gallery-image\"\n src={item.thumbnail || item.src}\n alt={item.alt || ''}\n loading=\"lazy\"\n />\n {item.caption && <span className=\"gallery-caption\">{item.caption}</span>}\n {effectLayer}\n </button>\n ) : (\n <div\n className={cn(\n 'gallery-trigger',\n rounded && 'rounded',\n usesHoverZoom(hoverEffect) && 'effect-zoom',\n usesHoverDim(hoverEffect) && 'effect-dim',\n effectClassName\n )}\n onPointerDown={handlePointerDown}\n >\n <img\n className=\"gallery-image\"\n src={item.thumbnail || item.src}\n alt={item.alt || ''}\n loading=\"lazy\"\n />\n {item.caption && <span className=\"gallery-caption\">{item.caption}</span>}\n {effectLayer}\n </div>\n )}\n </figure>\n )\n}\n","import {useEffect, useState} from 'react'\nimport type {KeyboardEvent} from 'react'\nimport {isRtlElement} from '../../utils/radioGroupKeys'\n\n/**\n * Shared carousel helpers (MCarousel, MShowcaseCarousel). Internal, not re-exported.\n */\n\nconst EDITABLE_SELECTOR =\n 'input, textarea, select, [contenteditable=\"\"], [contenteditable=\"true\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"textbox\"], [role=\"combobox\"], [role=\"listbox\"], [role=\"grid\"], [role=\"tablist\"], [role=\"menu\"]'\n\n/**\n * Slide step for an arrow key pressed inside a carousel: -1 (previous), 1 (next) or `null`\n * when the key is not a carousel key or belongs to a widget that uses arrows itself.\n * Left / Right are flipped in right-to-left layouts.\n */\nexport function getCarouselKeyStep(event: KeyboardEvent<HTMLElement>): -1 | 1 | null {\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return null\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return null\n const target = event.target as Element | null\n if (target instanceof Element && target.closest(EDITABLE_SELECTOR)) return null\n const forward = event.key === 'ArrowRight'\n const rtl = isRtlElement(event.currentTarget)\n return forward !== rtl ? 1 : -1\n}\n\nfunction readReducedMotion() {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false\n try {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches\n } catch {\n return false\n }\n}\n\n/** Live `prefers-reduced-motion: reduce` flag (false on the server). */\nexport function usePrefersReducedMotion() {\n const [reduced, setReduced] = useState(false)\n\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return\n let query: MediaQueryList\n try {\n query = window.matchMedia('(prefers-reduced-motion: reduce)')\n } catch {\n return\n }\n setReduced(readReducedMotion())\n const update = () => setReduced(query.matches)\n query.addEventListener?.('change', update)\n return () => query.removeEventListener?.('change', update)\n }, [])\n\n return reduced\n}\n","import {useState, useEffect, useCallback, useId, useRef, Children} from 'react'\nimport type * as React from 'react'\nimport type {MCarouselProps} from './MCarousel.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon, MPlayIcon, MStopIcon} from '../../../icons'\nimport {getCarouselKeyStep, usePrefersReducedMotion} from '../carouselA11y'\nimport './MCarousel.css'\nimport {useMCommonTexts, useMMediaTexts, formatMText} from '../../../i18n/frameworkTexts'\n\ntype RotationChoice = 'auto' | 'stopped' | 'running'\n\n// Render a swipeable content slider with arrows, dots and transition modes.\nexport function MCarousel({\n autoPlay = false,\n interval = 5000,\n showDots = true,\n showArrows = true,\n loop = true,\n draggable = true,\n transition = 'slide',\n className,\n children,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n onKeyDown,\n ...rest\n}: MCarouselProps) {\n const texts = useMCommonTexts()\n const mediaTexts = useMMediaTexts()\n const trackId = `${useId()}-carousel-track`\n const reducedMotion = usePrefersReducedMotion()\n // APG carousel: auto-rotation has an explicit stop / start control, pauses while the pointer\n // hovers the carousel or keyboard focus is inside it, and starts stopped under reduced motion.\n const [rotationChoice, setRotationChoice] = useState<RotationChoice>('auto')\n const [hovered, setHovered] = useState(false)\n const [focusInside, setFocusInside] = useState(false)\n const rotationButtonRef = useRef<HTMLElement | null>(null)\n const slides = Children.toArray(children)\n const count = slides.length\n const [active, setActive] = useState(0)\n const [dragOffset, setDragOffset] = useState(0)\n const [isDragging, setIsDragging] = useState(false)\n const dragStartX = useRef(0)\n const trackRef = useRef<HTMLDivElement>(null)\n\n const goTo = useCallback(\n (index: number) => {\n if (loop) {\n setActive((index + count) % count)\n } else {\n setActive(Math.max(0, Math.min(index, count - 1)))\n }\n },\n [count, loop]\n )\n\n const prev = useCallback(() => goTo(active - 1), [active, goTo])\n const next = useCallback(() => goTo(active + 1), [active, goTo])\n\n const canRotate = autoPlay && count > 1\n const rotating = canRotate && (rotationChoice === 'running' || (rotationChoice === 'auto' && !reducedMotion))\n const paused = hovered || focusInside || isDragging\n\n useEffect(() => {\n if (!rotating || paused) return\n const timer = setInterval(next, interval)\n return () => clearInterval(timer)\n }, [rotating, paused, interval, next])\n\n const handleDragStart = (clientX: number) => {\n if (!draggable) return\n setIsDragging(true)\n dragStartX.current = clientX\n setDragOffset(0)\n }\n\n const handleDragMove = (clientX: number) => {\n if (!isDragging) return\n const diff = clientX - dragStartX.current\n setDragOffset(diff)\n }\n\n const handleDragEnd = () => {\n if (!isDragging) return\n setIsDragging(false)\n const threshold = 50\n if (dragOffset < -threshold) {\n next()\n } else if (dragOffset > threshold) {\n prev()\n }\n setDragOffset(0)\n }\n\n const onPointerDown = (e: React.PointerEvent) => {\n if (!draggable) return\n e.currentTarget.setPointerCapture(e.pointerId)\n handleDragStart(e.clientX)\n }\n\n const onPointerMove = (e: React.PointerEvent) => {\n handleDragMove(e.clientX)\n }\n\n const onPointerUp = () => {\n handleDragEnd()\n }\n\n if (count === 0) return null\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n // Focus on the rotation control itself does not pause, so \"Start\" takes effect at once.\n setFocusInside(!rotationButtonRef.current?.contains(event.target as Node))\n onFocus?.(event)\n }\n\n const handleBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null\n if (!nextTarget || !event.currentTarget.contains(nextTarget)) setFocusInside(false)\n onBlur?.(event)\n }\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event)\n if (event.defaultPrevented || count <= 1) return\n const step = getCarouselKeyStep(event)\n if (step === null) return\n event.preventDefault()\n goTo(active + step)\n }\n\n const isFade = transition === 'fade'\n const trackStyle = !isFade\n ? {transform: `translateX(calc(-${active * 100}% + ${isDragging ? dragOffset : 0}px))`}\n : undefined\n\n return (\n <div\n className={cn('carousel', isFade && 'fade', className)}\n role=\"region\"\n aria-roledescription={mediaTexts.carouselRoleDescription}\n aria-label={rest['aria-labelledby'] ? undefined : mediaTexts.carouselLabel}\n {...rest}\n onMouseEnter={(event) => {\n setHovered(true)\n onMouseEnter?.(event)\n }}\n onMouseLeave={(event) => {\n setHovered(false)\n onMouseLeave?.(event)\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n >\n {canRotate && (\n <MButton\n ref={rotationButtonRef}\n variant=\"ghost\"\n color=\"primary\"\n iconOnly\n shape=\"circle\"\n size=\"sm\"\n className=\"carousel-rotation\"\n aria-label={rotating ? mediaTexts.stopRotation : mediaTexts.startRotation}\n aria-controls={trackId}\n onClick={() => setRotationChoice(rotating ? 'stopped' : 'running')}\n >\n {rotating ? <MStopIcon /> : <MPlayIcon />}\n </MButton>\n )}\n <div\n className=\"carousel-viewport\"\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n onDragStart={(e) => {\n // A native image/link drag would end the swipe with pointercancel.\n if (draggable) e.preventDefault()\n }}\n style={{\n touchAction: draggable ? 'pan-y' : undefined,\n cursor: draggable ? (isDragging ? 'grabbing' : 'grab') : undefined,\n }}\n >\n <div\n ref={trackRef}\n id={trackId}\n className={cn('carousel-track', isDragging && 'dragging')}\n style={trackStyle}\n aria-live={rotating && !paused ? 'off' : 'polite'}\n >\n {slides.map((slide, i) => (\n <div\n key={i}\n className={cn(\n 'carousel-slide',\n isFade && i === active && 'active',\n isFade && i !== active && 'hidden'\n )}\n role=\"group\"\n aria-roledescription={mediaTexts.slideRoleDescription}\n aria-label={formatMText(mediaTexts.slideOf, {index: i + 1, count})}\n // Off-screen slides stay out of the Tab order and the accessibility tree.\n aria-hidden={i !== active || undefined}\n inert={i !== active ? true : undefined}\n >\n {slide}\n </div>\n ))}\n </div>\n </div>\n\n {showArrows && count > 1 && (\n <>\n <MButton\n variant=\"ghost\"\n color=\"primary\"\n iconOnly\n shape=\"circle\"\n onClick={prev}\n aria-label={texts.previousSlide}\n aria-controls={trackId}\n className=\"carousel-arrow carousel-arrow-prev\"\n >\n <MChevronLeftIcon />\n </MButton>\n <MButton\n variant=\"ghost\"\n color=\"primary\"\n iconOnly\n shape=\"circle\"\n onClick={next}\n aria-label={texts.nextSlide}\n aria-controls={trackId}\n className=\"carousel-arrow carousel-arrow-next\"\n >\n <MChevronRightIcon />\n </MButton>\n </>\n )}\n\n {showDots && count > 1 && (\n <div className=\"carousel-dots\" role=\"group\" aria-label={mediaTexts.chooseSlide}>\n {slides.map((_, i) => (\n <button\n key={i}\n className={cn('carousel-dot', i === active && 'active')}\n onClick={() => goTo(i)}\n aria-label={formatMText(texts.slideNumber, {index: i + 1})}\n aria-current={i === active ? 'true' : undefined}\n aria-controls={trackId}\n type=\"button\"\n />\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
package/dist/media.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  const {ensureStyles}=require('./style-runtime.cjs')
2
2
  ensureStyles()
3
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./media-D63hxCAJ.cjs`),t=require(`./MAvatar-DHNB3829.cjs`);exports.MAvatar=t.t,exports.MCarousel=e.t,exports.MGallery=e.n,exports.MImage=e.r;
3
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./media-tr1s386v.cjs`),t=require(`./MAvatar-CvQuiGvT.cjs`);exports.MAvatar=t.t,exports.MCarousel=e.t,exports.MGallery=e.n,exports.MImage=e.r;
package/dist/media.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import {ensureStyles} from './style-runtime.js'
2
2
  ensureStyles()
3
- import { n as e, r as t, t as n } from "./media-BPzMgzqE.js";
4
- import { t as r } from "./MAvatar-GeRL-CNO.js";
3
+ import { n as e, r as t, t as n } from "./media-fiasAbBv.js";
4
+ import { t as r } from "./MAvatar-EkOBrEtS.js";
5
5
  export { r as MAvatar, n as MCarousel, e as MGallery, t as MImage };
@@ -0,0 +1,2 @@
1
+ const e=require(`./frameworkTexts-CaqdiKHW.cjs`),t=require(`./icons-Bp8bB9TP.cjs`),n=require(`./cn-DYFxgzi2.cjs`),r=require(`./useGhostText-DO-tfxS0.cjs`),i=require(`./useModalLayer-Cyt93Prs.cjs`),a=require(`./MPopover-ZeoU9hb5.cjs`),o=require(`./MSurface-BrFo-JMJ.cjs`),s=require(`./MText-nsvLFsSv.cjs`),c=require(`./MHeading-DiGYs1FJ.cjs`),l=require(`./MKbd-CnW3NUIu.cjs`),u=require(`./MButton-BxEky3xQ.cjs`),d=require(`./MSkeleton-DuAN8Vcv.cjs`),f=require(`./MStack-CGII4A-q.cjs`),p=require(`./MSimpleGrid-wgvjnxwM.cjs`),m=require(`./MCard-Bqm4BjK_.cjs`),h=require(`./scrollLock-C9P9o6wH.cjs`),g=require(`./MInputSearch-BSIc6m2P.cjs`),_=require(`./MTooltip-Cj2Fxmzc.cjs`);require(`./core-w629c4ND.cjs`);let v=require(`react`),y=require(`react/jsx-runtime`);var b=540;function x({open:e,onClose:t,title:r,description:a,footer:o,size:s=`md`,closeOnBackdrop:c=!0,closeOnEscape:l=!0,className:u,children:d,...f}){let p=(0,v.useId)(),[g,_]=(0,v.useState)(!1),[x,S]=(0,v.useState)(!1),C=(0,v.useRef)(null);return i.r({active:e&&g,containerRef:C,onEscape:l?t:void 0}),(0,v.useEffect)(()=>{e&&(_(!0),S(!1))},[e]),(0,v.useEffect)(()=>{if(!e&&g){S(!0);let e=setTimeout(()=>{_(!1),S(!1)},b);return()=>clearTimeout(e)}},[e,g]),(0,v.useEffect)(()=>{if(g)return h.t()},[g]),g?(0,y.jsx)(i.c,{children:(0,y.jsx)(`div`,{ref:C,className:n.t(`mineral-backdrop`,`modal-backdrop`,x&&`closing`),onMouseDown:e=>{c&&e.target===e.currentTarget&&t()},children:(0,y.jsx)(`div`,{className:`modal-shell`,children:(0,y.jsxs)(m.t,{className:n.t(`modal`,s,u),role:`dialog`,"aria-modal":`true`,"aria-labelledby":r?p:void 0,...f,children:[(r||a)&&(0,y.jsxs)(m.i,{children:[r&&(0,y.jsx)(`div`,{id:p,className:`modal-title`,children:r}),a&&(0,y.jsx)(`div`,{className:`modal-description`,children:a})]}),(0,y.jsx)(m.n,{children:d}),o&&(0,y.jsx)(m.r,{children:o})]})})})}):null}var S=540,C=72,w={sm:`32vh`,md:`52vh`,lg:`72vh`,full:`92vh`};function T({open:r,onClose:a,title:o,description:s,footer:c,size:l=`md`,closeOnBackdrop:d=!0,closeOnEscape:f=!0,className:p,children:g,style:_,...b}){let x=e.s(),T=(0,v.useId)(),[E,D]=(0,v.useState)(!1),[O,k]=(0,v.useState)(!1),[A,j]=(0,v.useState)(0),M=(0,v.useRef)(null),N=(0,v.useRef)(0),P=(0,v.useRef)(null);i.r({active:r&&E,containerRef:P,onEscape:f?a:void 0}),(0,v.useEffect)(()=>{r&&(D(!0),k(!1),j(0),N.current=0)},[r]),(0,v.useEffect)(()=>{if(!r&&E){k(!0);let e=window.setTimeout(()=>{D(!1),k(!1)},S);return()=>window.clearTimeout(e)}},[r,E]),(0,v.useEffect)(()=>{if(E)return h.t()},[E]);function F(e){d&&e.target===e.currentTarget&&a()}function I(e){e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),M.current={pointerId:e.pointerId,startY:e.clientY},j(0),N.current=0}function L(e){let t=M.current;if(!t||t.pointerId!==e.pointerId)return;let n=Math.max(e.clientY-t.startY,0);N.current=n,j(n)}function R(e){let t=M.current;if(!(!t||t.pointerId!==e)){if(M.current=null,N.current>C){j(0),N.current=0,a();return}j(0),N.current=0}}if(!E)return null;let z=w[l],B=A>0?`translateY(${A}px)`:void 0;return(0,y.jsx)(i.c,{children:(0,y.jsx)(`div`,{ref:P,className:n.t(`mineral-backdrop`,`sheet-backdrop`,O&&`closing`),onMouseDown:F,children:(0,y.jsx)(`div`,{className:`sheet-shell`,style:{transform:B},children:(0,y.jsxs)(m.t,{className:n.t(`sheet`,`size-${l}`,p),role:`dialog`,"aria-modal":`true`,"aria-labelledby":o?T:void 0,style:{..._,height:l===`full`?z:void 0,maxHeight:z},...b,children:[(0,y.jsx)(`button`,{type:`button`,className:`sheet-grabber`,onPointerDown:I,onPointerMove:L,onPointerUp:e=>R(e.pointerId),onPointerCancel:e=>R(e.pointerId),onClick:e=>{e.detail===0&&a()},"aria-label":x.dragToClose,children:(0,y.jsx)(`span`,{className:`sheet-handle`})}),(o||s)&&(0,y.jsxs)(m.i,{className:`sheet-header`,children:[(0,y.jsxs)(`div`,{className:`sheet-copy`,children:[o&&(0,y.jsx)(`div`,{id:T,className:`sheet-title`,children:o}),s&&(0,y.jsx)(`div`,{className:`sheet-description`,children:s})]}),(0,y.jsx)(u.t,{variant:`link`,color:`neutral`,iconOnly:!0,size:`sm`,onClick:a,"aria-label":x.close,className:`sheet-close`,children:(0,y.jsx)(t.Xi,{})})]}),(0,y.jsx)(m.n,{className:`sheet-body`,children:g}),c&&(0,y.jsx)(m.r,{className:`sheet-footer`,children:c})]})})})})}function E(e){return typeof e==`string`||typeof e==`number`?e.toString():``}function D(e,t){let n=t.toLowerCase().replace(/\s+/g,``).split(`+`),r=n[n.length-1];if(!r)return!1;let i=n.includes(`ctrl`),a=n.includes(`meta`)||n.includes(`cmd`),o=n.includes(`shift`),s=n.includes(`alt`)||n.includes(`option`);return e.key.toLowerCase()===r&&!!i===e.ctrlKey&&!!a===e.metaKey&&!!o===e.shiftKey&&!!s===e.altKey}function O(e,t){if(!t.trim())return e;let n=t.trim().toLowerCase();return e.filter(e=>[E(e.title),E(e.description),E(e.group),E(e.actionLabel),...e.keywords??[]].some(e=>e.toLowerCase().includes(n)))}function k(e,t){let n=new Map;return e.forEach(e=>{let r=E(e.group)||`General`,i=n.get(r)??{label:e.group??t,items:[]};i.items.push(e),n.set(r,i)}),Array.from(n.values())}function A({items:i,featuredItems:a=[],open:h,defaultOpen:b=!1,onOpenChange:x,onSelect:S,title:C,description:w,trigger:A,shortcut:j=`ctrl+k`,placeholder:M,emptyLabel:N,footer:P,size:F=`lg`,closeOnSelect:I=!0}){let L=e.o(),R=C??L.title,z=M??L.placeholder,B=N??L.empty,[ee,V]=(0,v.useState)(b),[H,U]=(0,v.useState)(``),te=h!==void 0,W=te?h:ee,G=(0,v.useRef)(null),K=`${(0,v.useId)()}-listbox`;function q(e){te||V(e),x?.(e)}let J=(0,v.useMemo)(()=>O(i,H),[i,H]),Y=(0,v.useMemo)(()=>k(J,L.generalGroup),[J,L.generalGroup]),X=(0,v.useMemo)(()=>Y.flatMap(e=>e.items),[Y]),ne=(0,v.useMemo)(()=>a.length?a:i.slice(0,6),[a,i]);function Z(e){e.onSelect?.(),S?.(e),!e.onSelect&&e.href&&window.location.assign(e.href),I&&(q(!1),U(``),Q())}let{activeIndex:re,setActiveIndex:ie,resetIndex:Q,onKeyDown:ae,activeDescendantId:oe,getItemProps:se}=r.n({itemCount:X.length,isOpen:W,mode:`activedescendant`,onClose:()=>q(!1),onSelect:e=>{let t=X[e];t&&Z(t)}});(0,v.useEffect)(()=>{let e=e=>{D(e,j)&&(e.preventDefault(),q(!0))};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[j]),(0,v.useEffect)(()=>{if(!W){Q();return}queueMicrotask(()=>G.current?.focus())},[W,Q]);let ce=X[re]?.id??null;function le(e){e.key===`Home`||e.key===`End`||ae(e)}let $=Y.length>0;return(0,y.jsxs)(y.Fragment,{children:[A??(0,y.jsx)(u.t,{variant:`filled`,size:`sm`,color:`primary`,iconOnly:!0,startIcon:(0,y.jsx)(t.Zi,{}),"aria-label":typeof R==`string`?R:L.open,onClick:()=>q(!0)}),(0,y.jsx)(T,{open:W,onClose:()=>q(!1),title:R,description:w,size:F,footer:P,children:(0,y.jsxs)(`div`,{className:`command-palette-body`,children:[(0,y.jsxs)(`div`,{className:`command-palette-search`,children:[(0,y.jsx)(g.t,{ref:G,value:H,onChange:e=>{U(e.target.value),ie(-1)},onKeyDown:le,placeholder:z,clearable:!0,fullWidth:!0,inputProps:{role:`combobox`,"aria-label":L.searchLabel,"aria-autocomplete":`list`,"aria-expanded":$,"aria-controls":$?K:void 0,"aria-activedescendant":oe}}),(0,y.jsx)(`span`,{className:`command-palette-sr-only`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:H.trim()?e.t(L.resultsAnnouncement,{count:X.length}):``})]}),(0,y.jsxs)(`div`,{className:`command-palette-grid`,children:[(0,y.jsxs)(m.t,{stretch:!1,children:[(0,y.jsxs)(m.i,{children:[(0,y.jsx)(c.t,{level:4,children:L.featured}),(0,y.jsx)(s.t,{size:`sm`,tone:`muted`,children:L.featuredDescription})]}),(0,y.jsx)(m.n,{children:(0,y.jsx)(p.t,{columns:4,children:ne.map(e=>{let n=e.actionLabel??e.title,r=typeof n==`string`?n:E(n);return(0,y.jsx)(_.t,{content:n,children:(0,y.jsx)(u.t,{variant:`ghost`,color:`primary`,component:e.component,to:e.to,href:e.href,target:e.target,rel:e.rel,startIcon:e.icon??(0,y.jsx)(t.On,{}),iconOnly:!0,"aria-label":r||void 0,onClick:()=>Z(e)})},e.id)})})})]}),(0,y.jsxs)(m.t,{stretch:!1,children:[(0,y.jsxs)(m.i,{children:[(0,y.jsx)(c.t,{level:4,children:L.results}),(0,y.jsxs)(o.n,{align:`center`,padding:`xs`,children:[(0,y.jsx)(s.t,{size:`sm`,tone:`muted`,children:e.t(L.resultsCount,{count:X.length})}),(0,y.jsx)(l.t,{children:j.toUpperCase()})]})]}),(0,y.jsx)(m.n,{children:$?(0,y.jsx)(f.t,{padding:`xs`,className:`command-palette-results`,id:K,role:`listbox`,"aria-label":L.results,children:Y.map((e,r)=>(0,y.jsxs)(f.t,{padding:`xs`,role:`group`,"aria-labelledby":`${K}-group-${r}`,children:[(0,y.jsx)(s.t,{size:`sm`,tone:`muted`,id:`${K}-group-${r}`,role:`presentation`,children:e.label}),e.items.map(e=>{let r=X.indexOf(e),{id:i,ref:a}=se(r);return(0,y.jsxs)(`button`,{id:i,ref:a,type:`button`,role:`option`,"aria-selected":ce===e.id,tabIndex:-1,className:n.t(`command-palette-item`,ce===e.id&&`active`),onMouseDown:e=>e.preventDefault(),onMouseEnter:()=>ie(r),onClick:()=>Z(e),children:[(0,y.jsx)(`span`,{className:`command-palette-item-icon`,children:e.icon??(0,y.jsx)(t.On,{})}),(0,y.jsxs)(`span`,{className:`command-palette-item-copy`,children:[(0,y.jsx)(`span`,{className:`command-palette-item-title`,children:e.title}),e.description&&(0,y.jsx)(`span`,{className:`command-palette-item-description`,children:e.description})]}),e.badge&&(0,y.jsx)(`span`,{className:`command-palette-item-badge`,children:(0,y.jsx)(d.n,{color:`primary`,size:`sm`,children:e.badge})})]},e.id)})]},E(e.label)||`general`))}):(0,y.jsx)(s.t,{tone:`muted`,children:B})})]})]})]})})]})}var j=600;function M(e){return(0,v.isValidElement)(e)&&!!e.type.__drawerHeader}function N(e){return(0,v.isValidElement)(e)&&!!e.type.__drawerBody}function P(e){return(0,v.isValidElement)(e)&&!!e.type.__drawerFooter}function F({children:e}){return(0,y.jsx)(y.Fragment,{children:e})}F.__drawerHeader=!0;function I({children:e}){return(0,y.jsx)(y.Fragment,{children:e})}I.__drawerBody=!0;function L({children:e}){return(0,y.jsx)(y.Fragment,{children:e})}L.__drawerFooter=!0;function R({open:r,onClose:a,side:o=`right`,size:s=`md`,overlay:c=!0,closeOnBackdrop:l=!0,closeOnEscape:d=!0,className:f,children:p,...m}){let g=e.s(),[_,b]=(0,v.useState)(!1),[x,S]=(0,v.useState)(!1),C=(0,v.useRef)(null),w=(0,v.useRef)(null),T=(0,v.useId)();i.r({active:r&&_,containerRef:C,onEscape:d?a:void 0}),(0,v.useEffect)(()=>{r&&(b(!0),S(!1))},[r]),(0,v.useEffect)(()=>{if(!r&&_){S(!0);let e=setTimeout(()=>{b(!1),S(!1)},j);return()=>clearTimeout(e)}},[r,_]),(0,v.useEffect)(()=>{if(!(!_||!c))return h.t()},[_,c]);let E=(0,v.useRef)(a);if((0,v.useEffect)(()=>{E.current=a},[a]),(0,v.useEffect)(()=>{if(!r||!_||c||!l)return;let e=e=>{let t=e.target;t instanceof Element&&(w.current?.contains(t)||t.closest(`.popover, .mineral-backdrop`)||E.current())};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r,_,c,l]),!_)return null;let D=e=>{l&&e.target===e.currentTarget&&a()},O=null,k=null,A=null,F=null,I=null,L=[];v.Children.forEach(p,e=>{if(M(e)){O=e.props.children,k=e.props;return}if(N(e)){A=e.props,L.push(e.props.children);return}if(P(e)){F=e.props.children,I=e.props;return}L.push(e)});let R=k??{children:void 0},z=A??{children:void 0},B=I??{children:void 0},{children:ee,className:V,bordered:H=!1,...U}=R,{children:te,className:W,...G}=z,{children:K,className:q,bordered:J=!1,...Y}=B;return(0,y.jsx)(i.c,{children:(0,y.jsx)(`div`,{ref:C,className:n.t(`mineral-backdrop`,`drawer-backdrop`,!c&&`no-overlay`,x&&`closing`),onMouseDown:D,children:(0,y.jsxs)(`div`,{ref:w,className:n.t(`drawer`,o,s,f),role:`dialog`,"aria-modal":c?`true`:void 0,"aria-labelledby":O?T:void 0,...m,children:[O&&(0,y.jsxs)(`div`,{...U,className:n.t(`drawer-header`,H&&`bordered`,V),children:[(0,y.jsx)(`div`,{id:T,className:`drawer-title`,children:O}),(0,y.jsx)(u.t,{variant:`link`,color:`neutral`,iconOnly:!0,size:`sm`,onClick:a,"aria-label":g.close,className:`close`,children:(0,y.jsx)(t.Xi,{})})]}),(0,y.jsx)(`div`,{...G,className:n.t(`drawer-body`,W),children:L}),F&&(0,y.jsx)(`div`,{...Y,className:n.t(`drawer-footer`,J&&`bordered`,q),children:F})]})})})}function z({title:t,description:r,onConfirm:o,onCancel:s,confirmText:c,cancelText:l,color:d=`warning`,icon:f,placement:p=`top-start`,open:m,onOpenChange:h,anchorRef:g,className:_}){let b=e.v(),x=c??b.confirm,S=l??b.cancel,C=(0,v.useId)(),w=`${C}-title`,T=`${C}-description`,E=(0,v.useRef)(null),D=(0,v.useCallback)(()=>{h(!1),s?.()},[h,s]),O=(0,v.useCallback)(()=>{h(!1),o()},[h,o]),k=(0,v.useCallback)(e=>{if(e.key!==`Tab`)return;let t=e.currentTarget.closest(`.popconfirm`);if(!t)return;let n=i.n(t);if(n.length===0)return;let r=n[0],a=n[n.length-1],o=document.activeElement;e.shiftKey&&(o===r||o===t)?(e.preventDefault(),a.focus()):!e.shiftKey&&o===a&&(e.preventDefault(),r.focus())},[]);return(0,y.jsxs)(a.t,{open:m,anchorRef:g,onClose:D,placement:p,className:n.t(`popconfirm`,`color-${d}`,_),role:`alertdialog`,"aria-labelledby":w,"aria-describedby":r?T:void 0,initialFocus:E,children:[(0,y.jsxs)(`div`,{className:`body`,onKeyDown:k,children:[f&&(0,y.jsx)(`div`,{className:`icon`,children:f}),(0,y.jsxs)(`div`,{className:`content`,children:[(0,y.jsx)(`div`,{id:w,className:`title`,children:t}),r&&(0,y.jsx)(`div`,{id:T,className:`description`,children:r})]})]}),(0,y.jsxs)(`div`,{className:`actions`,onKeyDown:k,children:[(0,y.jsx)(u.t,{ref:E,variant:`ghost`,size:`sm`,color:`neutral`,onClick:D,children:S}),(0,y.jsx)(u.t,{variant:`ghost`,size:`sm`,color:d,onClick:O,children:x})]})]})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return z}});
2
+ //# sourceMappingURL=overlays-Df-NpmkW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlays-Df-NpmkW.cjs","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx","../src/components/overlays/MSheet/MSheet.tsx","../src/components/overlays/MCommandPalette/MCommandPalette.tsx","../src/components/overlays/MDrawer/MDrawer.tsx","../src/components/overlays/MPopconfirm/MPopconfirm.tsx"],"sourcesContent":["import {useEffect, useId, useState, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../scrollLock'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const titleId = useId()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n useModalLayer({active: open && mounted, containerRef: backdropRef, onEscape: closeOnEscape ? onClose : undefined})\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!mounted) return\n return lockBodyScroll()\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? titleId : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={titleId} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useId, useRef, useState} from 'react'\nimport type {PointerEvent as ReactPointerEvent, MouseEvent} from 'react'\nimport type {MSheetProps, MSheetSize} from './MSheet.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MButton} from '../../controls'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../scrollLock'\nimport './MSheet.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nconst EXIT_DURATION = 540\nconst CLOSE_DRAG_THRESHOLD = 72\n\nconst SHEET_HEIGHTS: Record<MSheetSize, string> = {\n sm: '32vh',\n md: '52vh',\n lg: '72vh',\n full: '92vh',\n}\n\nexport function MSheet({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n style,\n ...rest\n}: MSheetProps) {\n const texts = useMCommonTexts()\n const titleId = useId()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const [dragOffset, setDragOffset] = useState(0)\n\n const dragStateRef = useRef<{pointerId: number; startY: number} | null>(null)\n const dragOffsetRef = useRef(0)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n useModalLayer({active: open && mounted, containerRef: backdropRef, onEscape: closeOnEscape ? onClose : undefined})\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = window.setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => window.clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!mounted) return\n return lockBodyScroll()\n }, [mounted])\n\n function handleBackdropClick(event: MouseEvent<HTMLDivElement>) {\n if (closeOnBackdrop && event.target === event.currentTarget) {\n onClose()\n }\n }\n\n function handleHandlePointerDown(event: ReactPointerEvent<HTMLButtonElement>) {\n event.preventDefault()\n event.currentTarget.setPointerCapture(event.pointerId)\n\n dragStateRef.current = {\n pointerId: event.pointerId,\n startY: event.clientY,\n }\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n function handleHandlePointerMove(event: ReactPointerEvent<HTMLButtonElement>) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== event.pointerId) {\n return\n }\n\n const nextOffset = Math.max(event.clientY - dragState.startY, 0)\n dragOffsetRef.current = nextOffset\n setDragOffset(nextOffset)\n }\n\n function finishDrag(pointerId: number) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== pointerId) {\n return\n }\n\n dragStateRef.current = null\n\n if (dragOffsetRef.current > CLOSE_DRAG_THRESHOLD) {\n setDragOffset(0)\n dragOffsetRef.current = 0\n onClose()\n return\n }\n\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n if (!mounted) return null\n\n const resolvedHeight = SHEET_HEIGHTS[size]\n const transformStyle = dragOffset > 0 ? `translateY(${dragOffset}px)` : undefined\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'sheet-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className=\"sheet-shell\" style={{transform: transformStyle}}>\n <MCard\n className={cn('sheet', `size-${size}`, className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n style={{\n ...style,\n height: size === 'full' ? resolvedHeight : undefined,\n maxHeight: resolvedHeight,\n }}\n {...rest}\n >\n <button\n type=\"button\"\n className=\"sheet-grabber\"\n onPointerDown={handleHandlePointerDown}\n onPointerMove={handleHandlePointerMove}\n onPointerUp={(event) => finishDrag(event.pointerId)}\n onPointerCancel={(event) => finishDrag(event.pointerId)}\n // Enter / Space on the grabber produce a click with `detail === 0`;\n // keyboard users get the same \"close\" the drag gesture offers.\n // Pointer clicks (detail >= 1) stay drag-only.\n onClick={(event) => {\n if (event.detail === 0) onClose()\n }}\n aria-label={texts.dragToClose}\n >\n <span className=\"sheet-handle\" />\n </button>\n\n {(title || description) && (\n <MCardHeader className=\"sheet-header\">\n <div className=\"sheet-copy\">\n {title && (\n <div id={titleId} className=\"sheet-title\">\n {title}\n </div>\n )}\n {description && <div className=\"sheet-description\">{description}</div>}\n </div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label={texts.close}\n className=\"sheet-close\"\n >\n <MCloseIcon />\n </MButton>\n </MCardHeader>\n )}\n\n <MCardBody className=\"sheet-body\">{children}</MCardBody>\n\n {footer && <MCardFooter className=\"sheet-footer\">{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useId, useMemo, useRef, useState} from 'react'\nimport type {KeyboardEvent as ReactKeyboardEvent, ReactNode} from 'react'\nimport type {MCommandPaletteItem, MCommandPaletteProps} from './MCommandPalette.types'\nimport {MButton} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MCard, MCardBody, MCardHeader} from '../../cards'\nimport {MInline, MSimpleGrid, MStack} from '../../layout'\nimport {MSheet} from '../MSheet'\nimport {MTooltip} from '../MTooltip'\nimport {MBadge} from '../../feedback'\nimport {MLinkIcon, MSearchIcon} from '../../../icons'\nimport {MKbd, MHeading, MText} from '../../typography'\nimport {cn} from '../../../utils/cn'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport {formatMText, useMCommandPaletteTexts} from '../../../i18n/frameworkTexts'\nimport './MCommandPalette.css'\n\nfunction normalizeText(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value.toString()\n }\n\n return ''\n}\n\nfunction matchesShortcut(event: KeyboardEvent, shortcut: string) {\n const normalized = shortcut.toLowerCase().replace(/\\s+/g, '')\n const parts = normalized.split('+')\n const key = parts[parts.length - 1]\n\n if (!key) {\n return false\n }\n\n const expectsCtrl = parts.includes('ctrl')\n const expectsMeta = parts.includes('meta') || parts.includes('cmd')\n const expectsShift = parts.includes('shift')\n const expectsAlt = parts.includes('alt') || parts.includes('option')\n\n return (\n event.key.toLowerCase() === key &&\n !!expectsCtrl === event.ctrlKey &&\n !!expectsMeta === event.metaKey &&\n !!expectsShift === event.shiftKey &&\n !!expectsAlt === event.altKey\n )\n}\n\nfunction filterItems(items: MCommandPaletteItem[], query: string) {\n if (!query.trim()) {\n return items\n }\n\n const normalizedQuery = query.trim().toLowerCase()\n\n return items.filter((item) =>\n [\n normalizeText(item.title),\n normalizeText(item.description),\n normalizeText(item.group),\n normalizeText(item.actionLabel),\n ...(item.keywords ?? []),\n ].some((value) => value.toLowerCase().includes(normalizedQuery))\n )\n}\n\nfunction groupItems(items: MCommandPaletteItem[], generalLabel: string) {\n const groups = new Map<string, {label: ReactNode; items: MCommandPaletteItem[]}>()\n\n items.forEach((item) => {\n const key = normalizeText(item.group) || 'General'\n const current = groups.get(key) ?? {label: item.group ?? generalLabel, items: []}\n current.items.push(item)\n groups.set(key, current)\n })\n\n return Array.from(groups.values())\n}\n\nexport function MCommandPalette({\n items,\n featuredItems = [],\n open,\n defaultOpen = false,\n onOpenChange,\n onSelect,\n title: titleProp,\n description,\n trigger,\n shortcut = 'ctrl+k',\n placeholder: placeholderProp,\n emptyLabel: emptyLabelProp,\n footer,\n size = 'lg',\n closeOnSelect = true,\n}: MCommandPaletteProps) {\n const texts = useMCommandPaletteTexts()\n const title = titleProp ?? texts.title\n const placeholder = placeholderProp ?? texts.placeholder\n const emptyLabel = emptyLabelProp ?? texts.empty\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [query, setQuery] = useState('')\n const isControlled = open !== undefined\n const isOpen = isControlled ? open : internalOpen\n const inputRef = useRef<HTMLInputElement>(null)\n const baseId = useId()\n const listboxId = `${baseId}-listbox`\n\n function setOpenState(nextOpen: boolean) {\n if (!isControlled) {\n setInternalOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n }\n\n const filteredItems = useMemo(() => filterItems(items, query), [items, query])\n const groupedItems = useMemo(\n () => groupItems(filteredItems, texts.generalGroup),\n [filteredItems, texts.generalGroup]\n )\n const flattenedItems = useMemo(() => groupedItems.flatMap((group) => group.items), [groupedItems])\n const featured = useMemo(() => (featuredItems.length ? featuredItems : items.slice(0, 6)), [featuredItems, items])\n\n function executeItem(item: MCommandPaletteItem) {\n item.onSelect?.()\n onSelect?.(item)\n\n if (!item.onSelect && item.href) {\n window.location.assign(item.href)\n }\n\n if (closeOnSelect) {\n setOpenState(false)\n setQuery('')\n resetIndex()\n }\n }\n\n // APG combobox: focus stays in the search field, the highlighted option is exposed\n // through aria-activedescendant.\n const {activeIndex, setActiveIndex, resetIndex, onKeyDown, activeDescendantId, getItemProps} = useKeyboardNav({\n itemCount: flattenedItems.length,\n isOpen,\n mode: 'activedescendant',\n onClose: () => setOpenState(false),\n onSelect: (index) => {\n const item = flattenedItems[index]\n\n if (item) {\n executeItem(item)\n }\n },\n })\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent) => {\n if (matchesShortcut(event, shortcut)) {\n event.preventDefault()\n setOpenState(true)\n }\n }\n\n window.addEventListener('keydown', handleKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleKeydown)\n }\n }, [shortcut])\n\n useEffect(() => {\n if (!isOpen) {\n resetIndex()\n return\n }\n\n queueMicrotask(() => inputRef.current?.focus())\n }, [isOpen, resetIndex])\n\n const activeItemId = flattenedItems[activeIndex]?.id ?? null\n\n function handleSearchKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n // Home / End keep moving the caret inside the text field (APG combobox).\n if (event.key === 'Home' || event.key === 'End') return\n onKeyDown(event)\n }\n\n const hasResults = groupedItems.length > 0\n\n return (\n <>\n {trigger ?? (\n <MButton\n variant={'filled'}\n size={'sm'}\n color={'primary'}\n iconOnly\n startIcon={<MSearchIcon />}\n aria-label={typeof title === 'string' ? title : texts.open}\n onClick={() => setOpenState(true)}\n />\n )}\n\n <MSheet\n open={isOpen}\n onClose={() => setOpenState(false)}\n title={title}\n description={description}\n size={size}\n footer={footer}\n >\n <div className=\"command-palette-body\">\n <div className=\"command-palette-search\">\n <MInputSearch\n ref={inputRef}\n value={query}\n onChange={(event) => {\n setQuery(event.target.value)\n setActiveIndex(-1)\n }}\n onKeyDown={handleSearchKeyDown}\n placeholder={placeholder}\n clearable\n fullWidth\n inputProps={{\n role: 'combobox',\n 'aria-label': texts.searchLabel,\n 'aria-autocomplete': 'list',\n 'aria-expanded': hasResults,\n 'aria-controls': hasResults ? listboxId : undefined,\n 'aria-activedescendant': activeDescendantId,\n }}\n />\n <span className=\"command-palette-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {query.trim() ? formatMText(texts.resultsAnnouncement, {count: flattenedItems.length}) : ''}\n </span>\n </div>\n\n <div className=\"command-palette-grid\">\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>{texts.featured}</MHeading>\n <MText size={'sm'} tone={'muted'}>\n {texts.featuredDescription}\n </MText>\n </MCardHeader>\n <MCardBody>\n <MSimpleGrid columns={4}>\n {featured.map((item) => {\n const label = item.actionLabel ?? item.title\n const ariaLabel = typeof label === 'string' ? label : normalizeText(label)\n\n return (\n <MTooltip key={item.id} content={label}>\n <MButton\n variant={'ghost'}\n color={'primary'}\n component={item.component}\n to={item.to}\n href={item.href}\n target={item.target}\n rel={item.rel}\n startIcon={item.icon ?? <MLinkIcon />}\n iconOnly\n aria-label={ariaLabel || undefined}\n onClick={() => executeItem(item)}\n />\n </MTooltip>\n )\n })}\n </MSimpleGrid>\n </MCardBody>\n </MCard>\n\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>{texts.results}</MHeading>\n <MInline align={'center'} padding={'xs'}>\n <MText size={'sm'} tone={'muted'}>\n {formatMText(texts.resultsCount, {count: flattenedItems.length})}\n </MText>\n <MKbd>{shortcut.toUpperCase()}</MKbd>\n </MInline>\n </MCardHeader>\n <MCardBody>\n {hasResults ? (\n <MStack\n padding={'xs'}\n className=\"command-palette-results\"\n id={listboxId}\n role=\"listbox\"\n aria-label={texts.results}\n >\n {groupedItems.map((group, groupIndex) => (\n <MStack\n key={normalizeText(group.label) || 'general'}\n padding={'xs'}\n role=\"group\"\n aria-labelledby={`${listboxId}-group-${groupIndex}`}\n >\n <MText\n size={'sm'}\n tone={'muted'}\n id={`${listboxId}-group-${groupIndex}`}\n role=\"presentation\"\n >\n {group.label}\n </MText>\n {group.items.map((item) => {\n const index = flattenedItems.indexOf(item)\n const {id: optionId, ref: optionRef} = getItemProps(index)\n\n return (\n <button\n key={item.id}\n id={optionId}\n ref={optionRef}\n type=\"button\"\n role=\"option\"\n aria-selected={activeItemId === item.id}\n tabIndex={-1}\n className={cn(\n 'command-palette-item',\n activeItemId === item.id && 'active'\n )}\n // Keep focus in the search field so typing and arrows keep working.\n onMouseDown={(event) => event.preventDefault()}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => executeItem(item)}\n >\n <span className=\"command-palette-item-icon\">\n {item.icon ?? <MLinkIcon />}\n </span>\n <span className=\"command-palette-item-copy\">\n <span className=\"command-palette-item-title\">\n {item.title}\n </span>\n {item.description && (\n <span className=\"command-palette-item-description\">\n {item.description}\n </span>\n )}\n </span>\n {item.badge && (\n <span className=\"command-palette-item-badge\">\n <MBadge color={'primary'} size={'sm'}>\n {item.badge}\n </MBadge>\n </span>\n )}\n </button>\n )\n })}\n </MStack>\n ))}\n </MStack>\n ) : (\n <MText tone={'muted'}>{emptyLabel}</MText>\n )}\n </MCardBody>\n </MCard>\n </div>\n </div>\n </MSheet>\n </>\n )\n}\n","import {Children, isValidElement, useEffect, useId, useState, useRef} from 'react'\nimport type {MouseEvent, ReactElement, ReactNode} from 'react'\nimport type {MDrawerProps, MDrawerSectionProps} from './MDrawer.types'\nimport {MPortal} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport {useModalLayer} from '../../../utils/useModalLayer'\nimport {lockBodyScroll} from '../scrollLock'\nimport './MDrawer.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nconst EXIT_DURATION = 600\n\ntype DrawerSlotElement = ReactElement<MDrawerSectionProps>\n\nfunction isDrawerHeader(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerHeader\n}\n\nfunction isDrawerBody(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerBody\n}\n\nfunction isDrawerFooter(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerFooter\n}\n\nexport function MDrawerHeader({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerHeader as any).__drawerHeader = true\n\nexport function MDrawerBody({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerBody as any).__drawerBody = true\n\nexport function MDrawerFooter({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerFooter as any).__drawerFooter = true\n\nexport function MDrawer({\n open,\n onClose,\n side = 'right',\n size = 'md',\n overlay = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MDrawerProps) {\n const texts = useMCommonTexts()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n const drawerRef = useRef<HTMLDivElement>(null)\n const titleId = useId()\n\n useModalLayer({active: open && mounted, containerRef: backdropRef, onEscape: closeOnEscape ? onClose : undefined})\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n // A drawer without an overlay is non-modal: the page beside it stays usable,\n // so it neither locks scrolling nor blocks clicks.\n useEffect(() => {\n if (!mounted || !overlay) return\n return lockBodyScroll()\n }, [mounted, overlay])\n\n // Without an overlay the backdrop lets clicks through (`pointer-events: none`),\n // so \"click outside closes\" is detected on the document instead.\n const onCloseRef = useRef(onClose)\n useEffect(() => {\n onCloseRef.current = onClose\n }, [onClose])\n useEffect(() => {\n if (!open || !mounted || overlay || !closeOnBackdrop) return\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target\n if (!(target instanceof Element)) return\n if (drawerRef.current?.contains(target)) return\n // Popovers, menus and other overlays opened from the drawer portal outside it.\n if (target.closest('.popover, .mineral-backdrop')) return\n onCloseRef.current()\n }\n\n document.addEventListener('mousedown', handlePointerDown)\n return () => document.removeEventListener('mousedown', handlePointerDown)\n }, [open, mounted, overlay, closeOnBackdrop])\n\n if (!mounted) return null\n\n const handleBackdropClick = (e: MouseEvent<HTMLDivElement>) => {\n if (closeOnBackdrop && e.target === e.currentTarget) onClose()\n }\n\n let header: ReactNode = null\n let headerProps: MDrawerSectionProps | null = null\n let bodyProps: MDrawerSectionProps | null = null\n let footer: ReactNode = null\n let footerProps: MDrawerSectionProps | null = null\n const body: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isDrawerHeader(child)) {\n header = child.props.children\n headerProps = child.props\n return\n }\n\n if (isDrawerBody(child)) {\n bodyProps = child.props\n body.push(child.props.children)\n return\n }\n\n if (isDrawerFooter(child)) {\n footer = child.props.children\n footerProps = child.props\n return\n }\n\n body.push(child)\n })\n\n const headerSection = headerProps ?? ({children: undefined} as MDrawerSectionProps)\n const bodySection = bodyProps ?? ({children: undefined} as MDrawerSectionProps)\n const footerSection = footerProps ?? ({children: undefined} as MDrawerSectionProps)\n const {\n children: _headerChildren,\n className: headerClassName,\n bordered: headerBordered = false,\n ...headerRest\n } = headerSection\n const {children: _bodyChildren, className: bodyClassName, ...bodyRest} = bodySection\n const {\n children: _footerChildren,\n className: footerClassName,\n bordered: footerBordered = false,\n ...footerRest\n } = footerSection\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'drawer-backdrop', !overlay && 'no-overlay', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div\n ref={drawerRef}\n className={cn('drawer', side, size, className)}\n role=\"dialog\"\n aria-modal={overlay ? 'true' : undefined}\n aria-labelledby={header ? titleId : undefined}\n {...rest}\n >\n {header && (\n <div\n {...headerRest}\n className={cn('drawer-header', headerBordered && 'bordered', headerClassName)}\n >\n <div id={titleId} className=\"drawer-title\">\n {header}\n </div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label={texts.close}\n className=\"close\"\n >\n <MCloseIcon />\n </MButton>\n </div>\n )}\n <div {...bodyRest} className={cn('drawer-body', bodyClassName)}>\n {body}\n </div>\n {footer && (\n <div\n {...footerRest}\n className={cn('drawer-footer', footerBordered && 'bordered', footerClassName)}\n >\n {footer}\n </div>\n )}\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useCallback, useId, useRef} from 'react'\nimport type {KeyboardEvent as ReactKeyboardEvent} from 'react'\nimport type {MPopconfirmProps} from './MPopconfirm.types'\nimport {MPopover} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {cn} from '../../../utils/cn'\nimport {getTabbable} from '../../../utils/useModalLayer'\nimport {useMPopconfirmTexts} from '../../../i18n/frameworkTexts'\nimport './MPopconfirm.css'\n\nexport function MPopconfirm({\n title,\n description,\n onConfirm,\n onCancel,\n confirmText: confirmTextProp,\n cancelText: cancelTextProp,\n color = 'warning',\n icon,\n placement = 'top-start',\n open,\n onOpenChange,\n anchorRef,\n className,\n}: MPopconfirmProps) {\n const texts = useMPopconfirmTexts()\n const confirmText = confirmTextProp ?? texts.confirm\n const cancelText = cancelTextProp ?? texts.cancel\n const baseId = useId()\n const titleId = `${baseId}-title`\n const descriptionId = `${baseId}-description`\n // APG alertdialog: focus starts on the least destructive action.\n const cancelRef = useRef<HTMLElement>(null)\n\n const handleCancel = useCallback(() => {\n onOpenChange(false)\n onCancel?.()\n }, [onOpenChange, onCancel])\n\n const handleConfirm = useCallback(() => {\n onOpenChange(false)\n onConfirm()\n }, [onOpenChange, onConfirm])\n\n // Keep Tab / Shift+Tab cycling inside the confirmation while it is open.\n const handleKeyDown = useCallback((e: ReactKeyboardEvent<HTMLDivElement>) => {\n if (e.key !== 'Tab') return\n const layer = e.currentTarget.closest<HTMLElement>('.popconfirm')\n if (!layer) return\n const focusable = getTabbable(layer)\n if (focusable.length === 0) return\n const first = focusable[0]\n const last = focusable[focusable.length - 1]\n const active = document.activeElement\n if (e.shiftKey && (active === first || active === layer)) {\n e.preventDefault()\n last.focus()\n } else if (!e.shiftKey && active === last) {\n e.preventDefault()\n first.focus()\n }\n }, [])\n\n return (\n <MPopover\n open={open}\n anchorRef={anchorRef}\n onClose={handleCancel}\n placement={placement}\n className={cn('popconfirm', `color-${color}`, className)}\n role=\"alertdialog\"\n aria-labelledby={titleId}\n aria-describedby={description ? descriptionId : undefined}\n initialFocus={cancelRef}\n >\n <div className=\"body\" onKeyDown={handleKeyDown}>\n {icon && <div className=\"icon\">{icon}</div>}\n <div className=\"content\">\n <div id={titleId} className=\"title\">\n {title}\n </div>\n {description && (\n <div id={descriptionId} className=\"description\">\n {description}\n </div>\n )}\n </div>\n </div>\n <div className=\"actions\" onKeyDown={handleKeyDown}>\n <MButton ref={cancelRef} variant=\"ghost\" size=\"sm\" color=\"neutral\" onClick={handleCancel}>\n {cancelText}\n </MButton>\n <MButton variant=\"ghost\" size=\"sm\" color={color} onClick={handleConfirm}>\n {confirmText}\n </MButton>\n </div>\n </MPopover>\n )\n}\n"],"mappings":"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"}