@banzamel/mineralui 1.6.2 → 1.6.3

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 (441) hide show
  1. package/README.md +1 -1
  2. package/dist/{MAvatar-CnBVN71i.js → MAvatar-BHASnoyu.js} +5 -5
  3. package/dist/{MAvatar-CnBVN71i.js.map → MAvatar-BHASnoyu.js.map} +1 -1
  4. package/dist/MAvatar-BVJh6kgW.cjs +2 -0
  5. package/dist/{MAvatar-DGEQqUss.cjs.map → MAvatar-BVJh6kgW.cjs.map} +1 -1
  6. package/dist/MBadge-B4x-Lx7e.cjs +2 -0
  7. package/dist/{MBadge-DcIPfPH1.cjs.map → MBadge-B4x-Lx7e.cjs.map} +1 -1
  8. package/dist/{MBadge-C_vK2JdM.js → MBadge-_BggwkrM.js} +3 -3
  9. package/dist/{MBadge-C_vK2JdM.js.map → MBadge-_BggwkrM.js.map} +1 -1
  10. package/dist/MButton-DrkVdRDy.cjs +2 -0
  11. package/dist/{MButton-LUNWBBOV.cjs.map → MButton-DrkVdRDy.cjs.map} +1 -1
  12. package/dist/{MButton-BpSZUhpY.js → MButton-y9qXhhGt.js} +4 -4
  13. package/dist/{MButton-BpSZUhpY.js.map → MButton-y9qXhhGt.js.map} +1 -1
  14. package/dist/{MCheckbox-CNz73bQC.js → MCheckbox-B-nT2OBE.js} +3 -3
  15. package/dist/{MCheckbox-CNz73bQC.js.map → MCheckbox-B-nT2OBE.js.map} +1 -1
  16. package/dist/MCheckbox-C40ESQRe.cjs +2 -0
  17. package/dist/{MCheckbox-PzknJeM2.cjs.map → MCheckbox-C40ESQRe.cjs.map} +1 -1
  18. package/dist/{MCookieBootstrap-DSOT4FQo.cjs → MCookieBootstrap-3-wyz3Dk.cjs} +1 -1
  19. package/dist/{MCookieBootstrap-DSOT4FQo.cjs.map → MCookieBootstrap-3-wyz3Dk.cjs.map} +1 -1
  20. package/dist/{MCookieBootstrap-CNYLvKjW.js → MCookieBootstrap-CGvYxIK8.js} +1 -1
  21. package/dist/{MCookieBootstrap-CNYLvKjW.js.map → MCookieBootstrap-CGvYxIK8.js.map} +1 -1
  22. package/dist/MDataTable-Bx7W-Ari.cjs +2 -0
  23. package/dist/{MDataTable-Bq6UoNJX.cjs.map → MDataTable-Bx7W-Ari.cjs.map} +1 -1
  24. package/dist/{MDataTable-AH5Tnirs.js → MDataTable-ByvNQqNP.js} +6 -6
  25. package/dist/{MDataTable-AH5Tnirs.js.map → MDataTable-ByvNQqNP.js.map} +1 -1
  26. package/dist/MDrawer-DFkrFrnD.cjs +2 -0
  27. package/dist/{MDrawer-DRqMsjMt.cjs.map → MDrawer-DFkrFrnD.cjs.map} +1 -1
  28. package/dist/{MDrawer-C08QXXC4.js → MDrawer-W2WQs1sM.js} +5 -5
  29. package/dist/{MDrawer-C08QXXC4.js.map → MDrawer-W2WQs1sM.js.map} +1 -1
  30. package/dist/MDropdownMenu-BmfXSc46.cjs +2 -0
  31. package/dist/{MDropdownMenu-CymCQqyP.cjs.map → MDropdownMenu-BmfXSc46.cjs.map} +1 -1
  32. package/dist/{MDropdownMenu-CMnBt-wO.js → MDropdownMenu-D79Cm5aS.js} +4 -4
  33. package/dist/{MDropdownMenu-CMnBt-wO.js.map → MDropdownMenu-D79Cm5aS.js.map} +1 -1
  34. package/dist/MGalleryIllustration-BB3DoCl_.cjs +2 -0
  35. package/dist/{MGalleryIllustration-BHtRFizZ.cjs.map → MGalleryIllustration-BB3DoCl_.cjs.map} +1 -1
  36. package/dist/{MGalleryIllustration-DhOtXwhC.js → MGalleryIllustration-D7CVMSwO.js} +2 -2
  37. package/dist/{MGalleryIllustration-DhOtXwhC.js.map → MGalleryIllustration-D7CVMSwO.js.map} +1 -1
  38. package/dist/MHeading-BhCNoJeW.cjs +2 -0
  39. package/dist/{MHeading-DHT1gORD.cjs.map → MHeading-BhCNoJeW.cjs.map} +1 -1
  40. package/dist/{MHeading-BvpWyvjj.js → MHeading-MPh8Qm9q.js} +4 -4
  41. package/dist/{MHeading-BvpWyvjj.js.map → MHeading-MPh8Qm9q.js.map} +1 -1
  42. package/dist/MI18nProvider-B2sE0x5D.cjs +2 -0
  43. package/dist/{MI18nProvider-Bml7Vs2-.cjs.map → MI18nProvider-B2sE0x5D.cjs.map} +1 -1
  44. package/dist/{MI18nProvider-BRZxEMqL.js → MI18nProvider-VH14CI8u.js} +1 -1
  45. package/dist/{MI18nProvider-BRZxEMqL.js.map → MI18nProvider-VH14CI8u.js.map} +1 -1
  46. package/dist/MImage-L_zgfWRY.cjs +2 -0
  47. package/dist/{MImage-CxeuH-cT.cjs.map → MImage-L_zgfWRY.cjs.map} +1 -1
  48. package/dist/{MImage-BQs91GK-.js → MImage-gwFphZk2.js} +9 -9
  49. package/dist/{MImage-BQs91GK-.js.map → MImage-gwFphZk2.js.map} +1 -1
  50. package/dist/MInline-CHrh3PHH.cjs +2 -0
  51. package/dist/{MInline-D9p9Sazp.cjs.map → MInline-CHrh3PHH.cjs.map} +1 -1
  52. package/dist/{MInline-DA_ehefx.js → MInline-CoMhfX5V.js} +4 -4
  53. package/dist/{MInline-DA_ehefx.js.map → MInline-CoMhfX5V.js.map} +1 -1
  54. package/dist/MInput-DYqV3-rQ.cjs +2 -0
  55. package/dist/{MInput-DDZ71Qqn.cjs.map → MInput-DYqV3-rQ.cjs.map} +1 -1
  56. package/dist/{MInput-l3MY93Su.js → MInput-bzSwK880.js} +6 -6
  57. package/dist/{MInput-l3MY93Su.js.map → MInput-bzSwK880.js.map} +1 -1
  58. package/dist/MInputCVC-5NkYSxV8.cjs +2 -0
  59. package/dist/{MInputCVC-Sp2uZ5aO.cjs.map → MInputCVC-5NkYSxV8.cjs.map} +1 -1
  60. package/dist/{MInputCVC-CN91scmw.js → MInputCVC-BHpMHTO5.js} +5 -5
  61. package/dist/{MInputCVC-CN91scmw.js.map → MInputCVC-BHpMHTO5.js.map} +1 -1
  62. package/dist/MInputSearch-DfoenJIm.cjs +2 -0
  63. package/dist/{MInputSearch-30o4bcDC.cjs.map → MInputSearch-DfoenJIm.cjs.map} +1 -1
  64. package/dist/{MInputSearch-CdPfJ4v_.js → MInputSearch-Dh4C3Tz5.js} +4 -4
  65. package/dist/{MInputSearch-CdPfJ4v_.js.map → MInputSearch-Dh4C3Tz5.js.map} +1 -1
  66. package/dist/MLink-CY45UR_j.cjs +2 -0
  67. package/dist/{MLink-U_wAUuz1.cjs.map → MLink-CY45UR_j.cjs.map} +1 -1
  68. package/dist/{MLink-CRUWGES-.js → MLink-rFKN1mcM.js} +3 -3
  69. package/dist/{MLink-CRUWGES-.js.map → MLink-rFKN1mcM.js.map} +1 -1
  70. package/dist/{MModal-CHSo5gKE.js → MModal-BDTAgnrm.js} +4 -4
  71. package/dist/{MModal-CHSo5gKE.js.map → MModal-BDTAgnrm.js.map} +1 -1
  72. package/dist/MModal-DT5BBgNZ.cjs +2 -0
  73. package/dist/{MModal-Czy-rR--.cjs.map → MModal-DT5BBgNZ.cjs.map} +1 -1
  74. package/dist/{MPagination-DdT1uNzD.js → MPagination-CTnaW5AW.js} +4 -4
  75. package/dist/{MPagination-DdT1uNzD.js.map → MPagination-CTnaW5AW.js.map} +1 -1
  76. package/dist/MPagination-CZEJMJzZ.cjs +2 -0
  77. package/dist/{MPagination-73z0sQvf.cjs.map → MPagination-CZEJMJzZ.cjs.map} +1 -1
  78. package/dist/MPopover-B4IUb9f0.cjs +2 -0
  79. package/dist/{MPopover-BW23_1Dl.cjs.map → MPopover-B4IUb9f0.cjs.map} +1 -1
  80. package/dist/{MPopover-3tjz5lKh.js → MPopover-Cqz5TsHg.js} +3 -3
  81. package/dist/{MPopover-3tjz5lKh.js.map → MPopover-Cqz5TsHg.js.map} +1 -1
  82. package/dist/{MPortal-Dqlkh3hw.js → MPortal-Ba2Sxset.js} +1 -1
  83. package/dist/{MPortal-Dqlkh3hw.js.map → MPortal-Ba2Sxset.js.map} +1 -1
  84. package/dist/MPortal-Bi24xTGW.cjs +2 -0
  85. package/dist/{MPortal-DE3pL2Xl.cjs.map → MPortal-Bi24xTGW.cjs.map} +1 -1
  86. package/dist/MQrCode-ByfmG33y.cjs +2 -0
  87. package/dist/{MQrCode-CMoru4dD.cjs.map → MQrCode-ByfmG33y.cjs.map} +1 -1
  88. package/dist/{MQrCode-DK5-SBhN.js → MQrCode-CCtTkkv9.js} +4 -4
  89. package/dist/{MQrCode-DK5-SBhN.js.map → MQrCode-CCtTkkv9.js.map} +1 -1
  90. package/dist/MSkeleton-5j1h9s95.cjs +2 -0
  91. package/dist/{MSkeleton-B0Mxe3L7.cjs.map → MSkeleton-5j1h9s95.cjs.map} +1 -1
  92. package/dist/{MSkeleton-Bqq_XJn8.js → MSkeleton-DGhtNmpI.js} +4 -4
  93. package/dist/{MSkeleton-Bqq_XJn8.js.map → MSkeleton-DGhtNmpI.js.map} +1 -1
  94. package/dist/{MSlider-ByVuoFFc.js → MSlider-5141rKeH.js} +2 -2
  95. package/dist/{MSlider-ByVuoFFc.js.map → MSlider-5141rKeH.js.map} +1 -1
  96. package/dist/MSlider-Ch3VjAJC.cjs +2 -0
  97. package/dist/{MSlider-sH2Vt9Lw.cjs.map → MSlider-Ch3VjAJC.cjs.map} +1 -1
  98. package/dist/MSparkline-B6qpt5WM.cjs +2 -0
  99. package/dist/{MSparkline-B-ld7hJu.cjs.map → MSparkline-B6qpt5WM.cjs.map} +1 -1
  100. package/dist/{MSparkline-DbtdM0W6.js → MSparkline-voNWOLNz.js} +2 -2
  101. package/dist/{MSparkline-DbtdM0W6.js.map → MSparkline-voNWOLNz.js.map} +1 -1
  102. package/dist/MStack-Bh-R2opf.cjs +2 -0
  103. package/dist/{MStack-Cy2GplIA.cjs.map → MStack-Bh-R2opf.cjs.map} +1 -1
  104. package/dist/{MStack-BWarX5O9.js → MStack-CSaEbepM.js} +4 -4
  105. package/dist/{MStack-BWarX5O9.js.map → MStack-CSaEbepM.js.map} +1 -1
  106. package/dist/{MSubText-C9VizSn9.js → MSubText-BFdfBlpS.js} +4 -4
  107. package/dist/{MSubText-C9VizSn9.js.map → MSubText-BFdfBlpS.js.map} +1 -1
  108. package/dist/MSubText-C-70zn0m.cjs +2 -0
  109. package/dist/{MSubText-DP9WYlwz.cjs.map → MSubText-C-70zn0m.cjs.map} +1 -1
  110. package/dist/MSurface-CpiV1-7f.cjs +2 -0
  111. package/dist/{MSurface-C467dVMQ.cjs.map → MSurface-CpiV1-7f.cjs.map} +1 -1
  112. package/dist/{MSurface-DfZ1Zy1-.js → MSurface-DJYSftdM.js} +4 -4
  113. package/dist/{MSurface-DfZ1Zy1-.js.map → MSurface-DJYSftdM.js.map} +1 -1
  114. package/dist/{MTag-N-tYZ915.js → MTag-CH5nMbm7.js} +5 -5
  115. package/dist/{MTag-N-tYZ915.js.map → MTag-CH5nMbm7.js.map} +1 -1
  116. package/dist/MTag-Y4Tswmli.cjs +2 -0
  117. package/dist/{MTag-DXqkBvqx.cjs.map → MTag-Y4Tswmli.cjs.map} +1 -1
  118. package/dist/MText-DEJddMB5.cjs +2 -0
  119. package/dist/{MText-COzub3y4.cjs.map → MText-DEJddMB5.cjs.map} +1 -1
  120. package/dist/{MText-B7_HjPym.js → MText-DcB1GAt-.js} +4 -4
  121. package/dist/{MText-B7_HjPym.js.map → MText-DcB1GAt-.js.map} +1 -1
  122. package/dist/{MTimeAgo-D1G2yovw.js → MTimeAgo-C4p80NvI.js} +4 -4
  123. package/dist/{MTimeAgo-D1G2yovw.js.map → MTimeAgo-C4p80NvI.js.map} +1 -1
  124. package/dist/MTimeAgo-DxZGVo2Y.cjs +2 -0
  125. package/dist/{MTimeAgo-DWwXs48z.cjs.map → MTimeAgo-DxZGVo2Y.cjs.map} +1 -1
  126. package/dist/MToggle-C8vYRzpC.cjs +2 -0
  127. package/dist/{MToggle-Cm3f6gm4.cjs.map → MToggle-C8vYRzpC.cjs.map} +1 -1
  128. package/dist/{MToggle-D0DrQirB.js → MToggle-Dt1Ctr5e.js} +3 -3
  129. package/dist/{MToggle-D0DrQirB.js.map → MToggle-Dt1Ctr5e.js.map} +1 -1
  130. package/dist/{MTooltip-w6Aj044c.js → MTooltip-C43aUKMP.js} +3 -3
  131. package/dist/{MTooltip-w6Aj044c.js.map → MTooltip-C43aUKMP.js.map} +1 -1
  132. package/dist/MTooltip-kSTMMpvu.cjs +2 -0
  133. package/dist/{MTooltip-C3PeHgV3.cjs.map → MTooltip-kSTMMpvu.cjs.map} +1 -1
  134. package/dist/arduino-CXUo7Bjy.cjs +2 -0
  135. package/dist/arduino-CXUo7Bjy.cjs.map +1 -0
  136. package/dist/arduino-Eif5KI8O.js +261 -0
  137. package/dist/arduino-Eif5KI8O.js.map +1 -0
  138. package/dist/bash-CCF_TYbb.js +171 -0
  139. package/dist/bash-CCF_TYbb.js.map +1 -0
  140. package/dist/bash-W4h3o_nx.cjs +2 -0
  141. package/dist/bash-W4h3o_nx.cjs.map +1 -0
  142. package/dist/c-DVgkp6T3.js +178 -0
  143. package/dist/c-DVgkp6T3.js.map +1 -0
  144. package/dist/c-Dm60JY-W.cjs +2 -0
  145. package/dist/c-Dm60JY-W.cjs.map +1 -0
  146. package/dist/cards-BiYdorB0.cjs +2 -0
  147. package/dist/{cards-B75QM9JW.cjs.map → cards-BiYdorB0.cjs.map} +1 -1
  148. package/dist/{cards-BKi8MxNx.js → cards-fn61xD_5.js} +17 -17
  149. package/dist/{cards-BKi8MxNx.js.map → cards-fn61xD_5.js.map} +1 -1
  150. package/dist/cards.cjs +1 -1
  151. package/dist/cards.js +2 -2
  152. package/dist/{cn-DYFxgzi2.cjs → cn-CU5TNITO.cjs} +1 -1
  153. package/dist/{cn-DYFxgzi2.cjs.map → cn-CU5TNITO.cjs.map} +1 -1
  154. package/dist/{cn-CUSXNnjF.js → cn-YER3QsV1.js} +1 -1
  155. package/dist/{cn-CUSXNnjF.js.map → cn-YER3QsV1.js.map} +1 -1
  156. package/dist/controls-C5PtrGZf.cjs +2 -0
  157. package/dist/{controls-B7wV_kjJ.cjs.map → controls-C5PtrGZf.cjs.map} +1 -1
  158. package/dist/{controls-BEi-0mf4.js → controls-DCtMOoQe.js} +6 -6
  159. package/dist/{controls-BEi-0mf4.js.map → controls-DCtMOoQe.js.map} +1 -1
  160. package/dist/controls.cjs +1 -1
  161. package/dist/controls.js +5 -5
  162. package/dist/cookie-consent-bootstrap.cjs +1 -1
  163. package/dist/cookie-consent-bootstrap.js +1 -1
  164. package/dist/core-AKWkE8Bx.cjs +4 -0
  165. package/dist/core-AKWkE8Bx.cjs.map +1 -0
  166. package/dist/core-CB9-PTLK.js +854 -0
  167. package/dist/core-CB9-PTLK.js.map +1 -0
  168. package/dist/cpp-DyKt1H8n.cjs +2 -0
  169. package/dist/cpp-DyKt1H8n.cjs.map +1 -0
  170. package/dist/cpp-OOenfB17.js +227 -0
  171. package/dist/cpp-OOenfB17.js.map +1 -0
  172. package/dist/{creditCards-BB11bW7D.js → creditCards-CCysEwry.js} +1 -1
  173. package/dist/{creditCards-BB11bW7D.js.map → creditCards-CCysEwry.js.map} +1 -1
  174. package/dist/{creditCards-198KJN0s.cjs → creditCards-ljs044xt.cjs} +1 -1
  175. package/dist/{creditCards-198KJN0s.cjs.map → creditCards-ljs044xt.cjs.map} +1 -1
  176. package/dist/css-DxVbPJLu.cjs +2 -0
  177. package/dist/css-DxVbPJLu.cjs.map +1 -0
  178. package/dist/css-u5LSEAra.js +142 -0
  179. package/dist/css-u5LSEAra.js.map +1 -0
  180. package/dist/data-Bw9FSZ80.cjs +2 -0
  181. package/dist/{data-DHkccnSN.cjs.map → data-Bw9FSZ80.cjs.map} +1 -1
  182. package/dist/{data-DKrj_Hx6.js → data-CMSIr_Ac.js} +24 -24
  183. package/dist/{data-DKrj_Hx6.js.map → data-CMSIr_Ac.js.map} +1 -1
  184. package/dist/data.cjs +1 -1
  185. package/dist/data.js +3 -3
  186. package/dist/{dateUtils-Ben8lfvV.js → dateUtils-CUY6CRCf.js} +1 -1
  187. package/dist/{dateUtils-Ben8lfvV.js.map → dateUtils-CUY6CRCf.js.map} +1 -1
  188. package/dist/{dateUtils-vT9rOf1J.cjs → dateUtils-Dq1vaA-D.cjs} +1 -1
  189. package/dist/{dateUtils-vT9rOf1J.cjs.map → dateUtils-Dq1vaA-D.cjs.map} +1 -1
  190. package/dist/display-BafEcBK_.cjs +3 -0
  191. package/dist/display-BafEcBK_.cjs.map +1 -0
  192. package/dist/{display-rQqBLjAN.js → display-Zxj9YHu_.js} +196 -179
  193. package/dist/display-Zxj9YHu_.js.map +1 -0
  194. package/dist/display.cjs +1 -1
  195. package/dist/display.js +3 -3
  196. package/dist/{dropdowns-BKnXb1XJ.js → dropdowns-Bw8obCYl.js} +15 -15
  197. package/dist/{dropdowns-BKnXb1XJ.js.map → dropdowns-Bw8obCYl.js.map} +1 -1
  198. package/dist/dropdowns-DN7j1HhE.cjs +2 -0
  199. package/dist/{dropdowns-cRrLY8FG.cjs.map → dropdowns-DN7j1HhE.cjs.map} +1 -1
  200. package/dist/dropdowns.cjs +1 -1
  201. package/dist/dropdowns.js +1 -1
  202. package/dist/{feedback-CIXmm0XT.js → feedback-8H3bmQw5.js} +18 -18
  203. package/dist/{feedback-CIXmm0XT.js.map → feedback-8H3bmQw5.js.map} +1 -1
  204. package/dist/feedback-Di0SEpRe.cjs +2 -0
  205. package/dist/{feedback-DiMptPJy.cjs.map → feedback-Di0SEpRe.cjs.map} +1 -1
  206. package/dist/feedback.cjs +1 -1
  207. package/dist/feedback.js +6 -6
  208. package/dist/form-BYz99Py5.cjs +2 -0
  209. package/dist/{form-DABPazeN.cjs.map → form-BYz99Py5.cjs.map} +1 -1
  210. package/dist/{form-DZJxDW59.js → form-JHlvtP9r.js} +2 -2
  211. package/dist/{form-DZJxDW59.js.map → form-JHlvtP9r.js.map} +1 -1
  212. package/dist/form.cjs +1 -1
  213. package/dist/form.js +1 -1
  214. package/dist/{formatters-CauWlsnM.cjs → formatters-CNjg_h7-.cjs} +1 -1
  215. package/dist/{formatters-CauWlsnM.cjs.map → formatters-CNjg_h7-.cjs.map} +1 -1
  216. package/dist/{formatters-Doqdu_w1.js → formatters-T0vvjMtB.js} +1 -1
  217. package/dist/{formatters-Doqdu_w1.js.map → formatters-T0vvjMtB.js.map} +1 -1
  218. package/dist/{frameworkTexts-DzujbRBe.js → frameworkTexts-CvxcWRXp.js} +2 -2
  219. package/dist/{frameworkTexts-DzujbRBe.js.map → frameworkTexts-CvxcWRXp.js.map} +1 -1
  220. package/dist/frameworkTexts-abkS5XZK.cjs +2 -0
  221. package/dist/{frameworkTexts-DPX5T2x3.cjs.map → frameworkTexts-abkS5XZK.cjs.map} +1 -1
  222. package/dist/i18n.cjs +1 -1
  223. package/dist/i18n.js +1 -1
  224. package/dist/{icons-DlNO04xH.js → icons-CfpYxnfg.js} +1 -1
  225. package/dist/{icons-DlNO04xH.js.map → icons-CfpYxnfg.js.map} +1 -1
  226. package/dist/icons-DWMgDKgt.cjs +2 -0
  227. package/dist/{icons-BJCV7W0L.cjs.map → icons-DWMgDKgt.cjs.map} +1 -1
  228. package/dist/icons.cjs +1 -1
  229. package/dist/icons.js +1 -1
  230. package/dist/illustrations.cjs +1 -1
  231. package/dist/illustrations.js +1 -1
  232. package/dist/index.cjs +1 -1
  233. package/dist/index.js +57 -57
  234. package/dist/{inputs-CmpB6eyB.js → inputs-Bcwd_UTr.js} +12 -12
  235. package/dist/{inputs-CmpB6eyB.js.map → inputs-Bcwd_UTr.js.map} +1 -1
  236. package/dist/inputs-FP545Yri.cjs +2 -0
  237. package/dist/{inputs-EZBwxk7j.cjs.map → inputs-FP545Yri.cjs.map} +1 -1
  238. package/dist/inputs.cjs +1 -1
  239. package/dist/inputs.js +4 -4
  240. package/dist/javascript-CXjsxb-I.js +438 -0
  241. package/dist/javascript-CXjsxb-I.js.map +1 -0
  242. package/dist/javascript-CzjCTQxn.cjs +2 -0
  243. package/dist/javascript-CzjCTQxn.cjs.map +1 -0
  244. package/dist/json-9Qq5guN0.cjs +2 -0
  245. package/dist/json-9Qq5guN0.cjs.map +1 -0
  246. package/dist/json-CyV5VF8D.js +38 -0
  247. package/dist/json-CyV5VF8D.js.map +1 -0
  248. package/dist/{layout-D72Y7VcW.js → layout-BpEnTocp.js} +11 -11
  249. package/dist/{layout-D72Y7VcW.js.map → layout-BpEnTocp.js.map} +1 -1
  250. package/dist/layout-rtlHrjDb.cjs +2 -0
  251. package/dist/{layout-DZiWboju.cjs.map → layout-rtlHrjDb.cjs.map} +1 -1
  252. package/dist/layout.cjs +1 -1
  253. package/dist/layout.js +5 -5
  254. package/dist/{layoutProps-Ck4VtGm9.cjs → layoutProps-B8y2XwHy.cjs} +1 -1
  255. package/dist/{layoutProps-Ck4VtGm9.cjs.map → layoutProps-B8y2XwHy.cjs.map} +1 -1
  256. package/dist/{layoutProps-Cl6d1KmH.js → layoutProps-CE5-ghKw.js} +1 -1
  257. package/dist/{layoutProps-Cl6d1KmH.js.map → layoutProps-CE5-ghKw.js.map} +1 -1
  258. package/dist/{licensing-Cbpi1toF.js → licensing-CwzqhHH9.js} +1 -1
  259. package/dist/{licensing-Cbpi1toF.js.map → licensing-CwzqhHH9.js.map} +1 -1
  260. package/dist/licensing-ezfo7ZTh.cjs +2 -0
  261. package/dist/{licensing-JchPJhVY.cjs.map → licensing-ezfo7ZTh.cjs.map} +1 -1
  262. package/dist/locale-CZyqh3ON.cjs +2 -0
  263. package/dist/{locale-DIwV_GfN.cjs.map → locale-CZyqh3ON.cjs.map} +1 -1
  264. package/dist/{locale-BNyzqXAU.js → locale-JX_gX03k.js} +1 -1
  265. package/dist/{locale-BNyzqXAU.js.map → locale-JX_gX03k.js.map} +1 -1
  266. package/dist/{media-BlGY91Na.js → media-C3M0npGW.js} +9 -9
  267. package/dist/{media-BlGY91Na.js.map → media-C3M0npGW.js.map} +1 -1
  268. package/dist/media-ClgUKDca.cjs +2 -0
  269. package/dist/{media-p643cb02.cjs.map → media-ClgUKDca.cjs.map} +1 -1
  270. package/dist/media.cjs +1 -1
  271. package/dist/media.js +3 -3
  272. package/dist/{overlays-51pBvlf9.js → overlays-CGlqD3rl.js} +7 -7
  273. package/dist/{overlays-51pBvlf9.js.map → overlays-CGlqD3rl.js.map} +1 -1
  274. package/dist/overlays-DrSGzbbA.cjs +2 -0
  275. package/dist/{overlays-8htlWp07.cjs.map → overlays-DrSGzbbA.cjs.map} +1 -1
  276. package/dist/overlays.cjs +1 -1
  277. package/dist/overlays.js +5 -5
  278. package/dist/php-Br75m0HU.cjs +3 -0
  279. package/dist/php-Br75m0HU.cjs.map +1 -0
  280. package/dist/php-deNqvHeU.js +296 -0
  281. package/dist/php-deNqvHeU.js.map +1 -0
  282. package/dist/primitives.cjs +1 -1
  283. package/dist/primitives.js +2 -2
  284. package/dist/{relativeTime-BqCuaBqb.js → relativeTime-Cr-NVzij.js} +1 -1
  285. package/dist/{relativeTime-BqCuaBqb.js.map → relativeTime-Cr-NVzij.js.map} +1 -1
  286. package/dist/{relativeTime-DUbW4O44.cjs → relativeTime-DgYBUaVm.cjs} +1 -1
  287. package/dist/{relativeTime-DUbW4O44.cjs.map → relativeTime-DgYBUaVm.cjs.map} +1 -1
  288. package/dist/style-runtime.cjs +1 -1
  289. package/dist/style-runtime.js +1 -1
  290. package/dist/styles.css +1 -1
  291. package/dist/theme-CgS-bND3.cjs +2 -0
  292. package/dist/{theme-Bnwe-wvr.cjs.map → theme-CgS-bND3.cjs.map} +1 -1
  293. package/dist/{theme-KYwqDZxJ.js → theme-D_f-cmSA.js} +1 -1
  294. package/dist/{theme-KYwqDZxJ.js.map → theme-D_f-cmSA.js.map} +1 -1
  295. package/dist/theme.cjs +1 -1
  296. package/dist/theme.js +1 -1
  297. package/dist/typescript-CRgqVaw_.cjs +2 -0
  298. package/dist/typescript-CRgqVaw_.cjs.map +1 -0
  299. package/dist/typescript-jNfCpQvl.js +523 -0
  300. package/dist/typescript-jNfCpQvl.js.map +1 -0
  301. package/dist/{typography-FCWA0UOB.js → typography-BSBsn0f8.js} +3 -3
  302. package/dist/{typography-FCWA0UOB.js.map → typography-BSBsn0f8.js.map} +1 -1
  303. package/dist/typography-Zo4Usx9I.cjs +2 -0
  304. package/dist/{typography-D1s-QFlb.cjs.map → typography-Zo4Usx9I.cjs.map} +1 -1
  305. package/dist/typography.cjs +1 -1
  306. package/dist/typography.js +5 -5
  307. package/dist/{useGhostText-BJZKdZpw.js → useGhostText-DG0bzcao.js} +1 -1
  308. package/dist/{useGhostText-BJZKdZpw.js.map → useGhostText-DG0bzcao.js.map} +1 -1
  309. package/dist/useGhostText-tv1LiSPs.cjs +2 -0
  310. package/dist/{useGhostText-D1DbIs-n.cjs.map → useGhostText-tv1LiSPs.cjs.map} +1 -1
  311. package/dist/useInteractionEffect-D1ZdNbKU.cjs +2 -0
  312. package/dist/{useInteractionEffect-CYHGHV1e.cjs.map → useInteractionEffect-D1ZdNbKU.cjs.map} +1 -1
  313. package/dist/{useInteractionEffect-ClkU3aH5.js → useInteractionEffect-DtpbVd77.js} +1 -1
  314. package/dist/{useInteractionEffect-ClkU3aH5.js.map → useInteractionEffect-DtpbVd77.js.map} +1 -1
  315. package/dist/useKeyboardNav-CkIlAagq.cjs +2 -0
  316. package/dist/{useKeyboardNav-BoibrRUF.cjs.map → useKeyboardNav-CkIlAagq.cjs.map} +1 -1
  317. package/dist/{useKeyboardNav-CBOdeTFM.js → useKeyboardNav-iEXOdEMB.js} +1 -1
  318. package/dist/{useKeyboardNav-CBOdeTFM.js.map → useKeyboardNav-iEXOdEMB.js.map} +1 -1
  319. package/dist/utils.cjs +1 -1
  320. package/dist/utils.js +10 -10
  321. package/dist/{validators-D4aTeaH0.cjs → validators-BeNTD8mf.cjs} +1 -1
  322. package/dist/{validators-D4aTeaH0.cjs.map → validators-BeNTD8mf.cjs.map} +1 -1
  323. package/dist/{validators-YZyyyLvE.js → validators-H8tNxb8O.js} +1 -1
  324. package/dist/{validators-YZyyyLvE.js.map → validators-H8tNxb8O.js.map} +1 -1
  325. package/dist/xml-0Th6YIDv.js +168 -0
  326. package/dist/xml-0Th6YIDv.js.map +1 -0
  327. package/dist/xml-C_ksWBRH.cjs +2 -0
  328. package/dist/xml-C_ksWBRH.cjs.map +1 -0
  329. package/package.json +2 -2
  330. package/dist/MAvatar-DGEQqUss.cjs +0 -2
  331. package/dist/MBadge-DcIPfPH1.cjs +0 -2
  332. package/dist/MButton-LUNWBBOV.cjs +0 -2
  333. package/dist/MCheckbox-PzknJeM2.cjs +0 -2
  334. package/dist/MDataTable-Bq6UoNJX.cjs +0 -2
  335. package/dist/MDrawer-DRqMsjMt.cjs +0 -2
  336. package/dist/MDropdownMenu-CymCQqyP.cjs +0 -2
  337. package/dist/MGalleryIllustration-BHtRFizZ.cjs +0 -2
  338. package/dist/MHeading-DHT1gORD.cjs +0 -2
  339. package/dist/MI18nProvider-Bml7Vs2-.cjs +0 -2
  340. package/dist/MImage-CxeuH-cT.cjs +0 -2
  341. package/dist/MInline-D9p9Sazp.cjs +0 -2
  342. package/dist/MInput-DDZ71Qqn.cjs +0 -2
  343. package/dist/MInputCVC-Sp2uZ5aO.cjs +0 -2
  344. package/dist/MInputSearch-30o4bcDC.cjs +0 -2
  345. package/dist/MLink-U_wAUuz1.cjs +0 -2
  346. package/dist/MModal-Czy-rR--.cjs +0 -2
  347. package/dist/MPagination-73z0sQvf.cjs +0 -2
  348. package/dist/MPopover-BW23_1Dl.cjs +0 -2
  349. package/dist/MPortal-DE3pL2Xl.cjs +0 -2
  350. package/dist/MQrCode-CMoru4dD.cjs +0 -2
  351. package/dist/MSkeleton-B0Mxe3L7.cjs +0 -2
  352. package/dist/MSlider-sH2Vt9Lw.cjs +0 -2
  353. package/dist/MSparkline-B-ld7hJu.cjs +0 -2
  354. package/dist/MStack-Cy2GplIA.cjs +0 -2
  355. package/dist/MSubText-DP9WYlwz.cjs +0 -2
  356. package/dist/MSurface-C467dVMQ.cjs +0 -2
  357. package/dist/MTag-DXqkBvqx.cjs +0 -2
  358. package/dist/MText-COzub3y4.cjs +0 -2
  359. package/dist/MTimeAgo-DWwXs48z.cjs +0 -2
  360. package/dist/MToggle-Cm3f6gm4.cjs +0 -2
  361. package/dist/MTooltip-C3PeHgV3.cjs +0 -2
  362. package/dist/cards-B75QM9JW.cjs +0 -2
  363. package/dist/chunk-350yNsax.cjs +0 -1
  364. package/dist/chunk-efA98nb6.js +0 -13
  365. package/dist/controls-B7wV_kjJ.cjs +0 -2
  366. package/dist/data-DHkccnSN.cjs +0 -2
  367. package/dist/display-DKJ6Hp3A.cjs +0 -3
  368. package/dist/display-DKJ6Hp3A.cjs.map +0 -1
  369. package/dist/display-rQqBLjAN.js.map +0 -1
  370. package/dist/dropdowns-cRrLY8FG.cjs +0 -2
  371. package/dist/feedback-DiMptPJy.cjs +0 -2
  372. package/dist/form-DABPazeN.cjs +0 -2
  373. package/dist/frameworkTexts-DPX5T2x3.cjs +0 -2
  374. package/dist/icons-BJCV7W0L.cjs +0 -2
  375. package/dist/inputs-EZBwxk7j.cjs +0 -2
  376. package/dist/layout-DZiWboju.cjs +0 -2
  377. package/dist/licensing-JchPJhVY.cjs +0 -2
  378. package/dist/locale-DIwV_GfN.cjs +0 -2
  379. package/dist/media-p643cb02.cjs +0 -2
  380. package/dist/overlays-8htlWp07.cjs +0 -2
  381. package/dist/prism-bash-DSVvpDwH.cjs +0 -2
  382. package/dist/prism-bash-DSVvpDwH.cjs.map +0 -1
  383. package/dist/prism-bash-GQKgVScr.js +0 -177
  384. package/dist/prism-bash-GQKgVScr.js.map +0 -1
  385. package/dist/prism-c-DBlZetAm.js +0 -56
  386. package/dist/prism-c-DBlZetAm.js.map +0 -1
  387. package/dist/prism-c-DwJ0sL1f.cjs +0 -2
  388. package/dist/prism-c-DwJ0sL1f.cjs.map +0 -1
  389. package/dist/prism-clike-BHy7LBAZ.cjs +0 -2
  390. package/dist/prism-clike-BHy7LBAZ.cjs.map +0 -1
  391. package/dist/prism-clike-CrtZga9r.js +0 -30
  392. package/dist/prism-clike-CrtZga9r.js.map +0 -1
  393. package/dist/prism-core-DsZQ3wSm.js +0 -299
  394. package/dist/prism-core-DsZQ3wSm.js.map +0 -1
  395. package/dist/prism-core-Z2NDHfPM.cjs +0 -2
  396. package/dist/prism-core-Z2NDHfPM.cjs.map +0 -1
  397. package/dist/prism-cpp-CXyjGEks.cjs +0 -2
  398. package/dist/prism-cpp-CXyjGEks.cjs.map +0 -1
  399. package/dist/prism-cpp-DerVaWjZ.js +0 -65
  400. package/dist/prism-cpp-DerVaWjZ.js.map +0 -1
  401. package/dist/prism-css-Bx_bUmkm.js +0 -57
  402. package/dist/prism-css-Bx_bUmkm.js.map +0 -1
  403. package/dist/prism-css-q8i9Tl0Y.cjs +0 -2
  404. package/dist/prism-css-q8i9Tl0Y.cjs.map +0 -1
  405. package/dist/prism-javascript-CC_WcCH4.cjs +0 -2
  406. package/dist/prism-javascript-CC_WcCH4.cjs.map +0 -1
  407. package/dist/prism-javascript-uSHTlCK6.js +0 -103
  408. package/dist/prism-javascript-uSHTlCK6.js.map +0 -1
  409. package/dist/prism-json-CRpBxccA.js +0 -27
  410. package/dist/prism-json-CRpBxccA.js.map +0 -1
  411. package/dist/prism-json-CvwHQDim.cjs +0 -2
  412. package/dist/prism-json-CvwHQDim.cjs.map +0 -1
  413. package/dist/prism-jsx-CSsxTxi5.js +0 -48
  414. package/dist/prism-jsx-CSsxTxi5.js.map +0 -1
  415. package/dist/prism-jsx-ZJAX6mJe.cjs +0 -2
  416. package/dist/prism-jsx-ZJAX6mJe.cjs.map +0 -1
  417. package/dist/prism-markup-Cc4COxfn.js +0 -118
  418. package/dist/prism-markup-Cc4COxfn.js.map +0 -1
  419. package/dist/prism-markup-RTw80xRC.cjs +0 -2
  420. package/dist/prism-markup-RTw80xRC.cjs.map +0 -1
  421. package/dist/prism-markup-templating-CylI3Gpj.cjs +0 -2
  422. package/dist/prism-markup-templating-CylI3Gpj.cjs.map +0 -1
  423. package/dist/prism-markup-templating-D4w8OHUw.js +0 -41
  424. package/dist/prism-markup-templating-D4w8OHUw.js.map +0 -1
  425. package/dist/prism-php-CMZ7fRp0.cjs +0 -2
  426. package/dist/prism-php-CMZ7fRp0.cjs.map +0 -1
  427. package/dist/prism-php-nJ_CzHXP.js +0 -279
  428. package/dist/prism-php-nJ_CzHXP.js.map +0 -1
  429. package/dist/prism-tsx-CvHlXV3S.cjs +0 -2
  430. package/dist/prism-tsx-CvHlXV3S.cjs.map +0 -1
  431. package/dist/prism-tsx-UlwV29L3.js +0 -10
  432. package/dist/prism-tsx-UlwV29L3.js.map +0 -1
  433. package/dist/prism-typescript-BA7hsZPZ.js +0 -40
  434. package/dist/prism-typescript-BA7hsZPZ.js.map +0 -1
  435. package/dist/prism-typescript-CDAVIXup.cjs +0 -2
  436. package/dist/prism-typescript-CDAVIXup.cjs.map +0 -1
  437. package/dist/theme-Bnwe-wvr.cjs +0 -2
  438. package/dist/typography-D1s-QFlb.cjs +0 -2
  439. package/dist/useGhostText-D1DbIs-n.cjs +0 -2
  440. package/dist/useInteractionEffect-CYHGHV1e.cjs +0 -2
  441. package/dist/useKeyboardNav-BoibrRUF.cjs +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"layout-DZiWboju.cjs","names":[],"sources":["../src/components/layout/MContainer/MContainer.tsx","../src/components/layout/MHeader/MHeader.tsx","../src/components/layout/MFooter/MFooter.tsx","../src/components/layout/MNavs/MNavs.tsx","../src/components/layout/MNavbar/MNavbar.tsx","../src/components/layout/MTopbar/MTopbar.tsx","../src/components/layout/MTabs/MTabs.tsx","../src/components/layout/MSection/MSection.tsx","../src/components/layout/MSimpleGrid/MSimpleGrid.tsx","../src/components/layout/MGrid/MGrid.tsx","../src/components/layout/MDivider/MDivider.tsx","../src/components/layout/MSidebar/MSidebar.tsx","../src/components/layout/MBreadcrumb/MBreadcrumb.tsx","../src/components/layout/MAppShell/MAppShell.tsx"],"sourcesContent":["import type {MContainerProps} from './MContainer.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MContainer.css'\n\n// Constrain page content widths and apply shared spacing utilities.\nexport function MContainer({\n size = 'content',\n padded = true,\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MContainerProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n className={cn(\n 'container',\n size,\n padded && 'padded',\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </div>\n )\n}\n","import type {MHeaderProps} from './MHeader.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport './MHeader.css'\n\n// Render a reusable page header shell aligned to a shared container.\nexport function MHeader({\n container = 'wide',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n layout = 'split',\n hidden,\n className,\n children,\n ...rest\n}: MHeaderProps) {\n return (\n <header\n className={cn('header', tone, bordered && 'bordered', sticky && 'sticky', className)}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className={cn('inner', `layout-${layout}`)}>\n {children}\n </MContainer>\n </header>\n )\n}\n","import type {MFooterProps} from './MFooter.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport {MContainer} from '../MContainer'\nimport './MFooter.css'\n\n// Render a reusable page footer shell with shared spacing utilities.\nexport function MFooter({\n container = 'wide',\n padded = true,\n bordered = true,\n tone = 'surface',\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MFooterProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <footer\n className={cn(\n 'footer',\n tone,\n bordered && 'bordered',\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"inner\" fullWidth>\n {children}\n </MContainer>\n </footer>\n )\n}\n","import type {MNavsProps} from './MNavs.types'\nimport {cn} from '../../../utils/cn'\nimport {MLink} from '../../typography'\nimport './MNavs.css'\n\n// Render a lightweight navigation list from data or custom children.\nexport function MNavs({items, orientation = 'horizontal', wrap = false, className, children, ...rest}: MNavsProps) {\n return (\n <div className={cn('navs', orientation, wrap && 'wrap', className)} {...rest}>\n {items\n ? items.map((item) => {\n const Icon = item.icon\n const hideLabel = item.iconOnly === true && Icon != null\n const labelAsString = typeof item.label === 'string' ? item.label : undefined\n const ariaLabel = hideLabel ? labelAsString : undefined\n const linkTitle = item.title ?? (hideLabel ? labelAsString : undefined)\n\n return (\n <MLink\n key={item.key ?? item.href ?? item.title?.toString() ?? labelAsString ?? ''}\n component={item.component}\n href={item.href}\n to={item.to}\n target={item.target}\n rel={item.rel}\n title={linkTitle}\n current={item.current}\n disabled={item.disabled}\n className={cn('link', hideLabel && 'icon-only', item.className)}\n aria-label={ariaLabel}\n >\n {Icon ? (\n <span className=\"icon\" aria-hidden={!hideLabel || undefined}>\n <Icon size={item.iconSize} />\n </span>\n ) : null}\n {!hideLabel ? item.label : null}\n </MLink>\n )\n })\n : children}\n </div>\n )\n}\n","import {Children, cloneElement, isValidElement, useEffect, useId, useRef, useState} from 'react'\nimport type {MouseEvent as ReactMouseEvent, ReactElement} from 'react'\nimport type {MNavbarProps} from './MNavbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MInline} from '../MInline'\nimport type {MInlineProps} from '../MInline'\nimport {MNavs} from '../MNavs'\nimport type {MNavsProps} from '../MNavs'\nimport {MButton} from '../../controls/MButton'\nimport {MMenuIcon} from '../../../icons'\nimport './MNavbar.css'\n\n// Render a horizontal app or site navigation shell with container alignment.\n// Below the md breakpoint MNavs children are collapsed behind a hamburger toggle\n// that opens either a dropdown panel or a side drawer with the navigation items.\nexport function MNavbar({\n container = 'content',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'between',\n wrap = false,\n mobileMenu = 'dropdown',\n mobileMenuContent,\n mobileMenuLabel = 'Open navigation',\n mobileBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n children,\n ...rest\n}: MNavbarProps) {\n const [open, setOpen] = useState(false)\n const rootRef = useRef<HTMLElement | null>(null)\n const menuId = useId()\n const mobile = useMaxWidth(mobileBreakpoint)\n\n const childArray = Children.toArray(children)\n\n const mobileNavs = childArray\n .filter((child): child is ReactElement<MNavsProps> => isValidElement(child) && child.type === MNavs)\n .map((child, index) =>\n cloneElement(child, {\n key: `mnavbar-mobile-navs-${index}`,\n orientation: 'vertical',\n })\n )\n\n const toggleButton = (\n <MButton\n key=\"mnavbar-toggle\"\n type=\"button\"\n variant=\"ghost\"\n size=\"md\"\n iconOnly\n className=\"navbar-toggle\"\n aria-label={mobileMenuLabel}\n aria-expanded={open}\n aria-controls={menuId}\n onClick={handleToggleClick}\n >\n <MMenuIcon />\n </MButton>\n )\n\n let lastInlineIndex = -1\n for (let index = childArray.length - 1; index >= 0; index -= 1) {\n const child = childArray[index]\n if (isValidElement(child) && child.type === MInline) {\n lastInlineIndex = index\n break\n }\n }\n\n const renderedChildren =\n lastInlineIndex === -1\n ? [...childArray, toggleButton]\n : childArray.map((child, index) => {\n if (index !== lastInlineIndex) return child\n const inlineChild = child as ReactElement<MInlineProps>\n const inlineChildren = Children.toArray(inlineChild.props.children)\n return cloneElement(inlineChild, {\n key: inlineChild.key ?? `mnavbar-inline-${index}`,\n children: [...inlineChildren, toggleButton],\n })\n })\n\n useEffect(() => {\n if (!open) return\n\n function handlePointerDown(event: PointerEvent) {\n const root = rootRef.current\n if (!root) return\n if (event.target instanceof Node && root.contains(event.target)) return\n setOpen(false)\n }\n\n function handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') setOpen(false)\n }\n\n document.addEventListener('pointerdown', handlePointerDown)\n document.addEventListener('keydown', handleKeydown)\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown)\n document.removeEventListener('keydown', handleKeydown)\n }\n }, [open])\n\n useEffect(() => {\n if (!mobile) {\n setOpen(false)\n }\n }, [mobile])\n\n function handleToggleClick() {\n setOpen((previous) => !previous)\n }\n\n function handleMenuClick(event: ReactMouseEvent<HTMLDivElement>) {\n const target = event.target as HTMLElement | null\n if (!target) return\n if (target.closest('a, [role=\"menuitem\"]')) {\n setOpen(false)\n }\n }\n\n return (\n <nav\n ref={rootRef}\n className={cn(\n 'navbar',\n tone,\n bordered && 'bordered',\n sticky && 'sticky',\n mobile && 'mobile-view',\n open && 'mobile-open',\n `mobile-${mobileMenu}`,\n className\n )}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"container\">\n <div className={cn('inner', justify, wrap && 'wrap')}>{renderedChildren}</div>\n </MContainer>\n\n {mobileMenu === 'drawer' && <div className={cn('mobile-backdrop', open && 'visible')} aria-hidden />}\n\n <div\n id={menuId}\n className={cn('mobile-menu', mobileMenu, open && 'open')}\n role=\"menu\"\n aria-hidden={!open || undefined}\n onClick={handleMenuClick}\n >\n {mobileNavs}\n {mobileMenuContent}\n </div>\n </nav>\n )\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {ReactNode} from 'react'\nimport type {MTopbarItem, MTopbarProps} from './MTopbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MButton} from '../../controls'\nimport {MLink} from '../../typography'\nimport {MChevronDownIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {MDropdownGroup, MDropdownItem, MDropdownMenu} from '../../overlays/MDropdownMenu'\nimport './MTopbar.css'\n\nfunction getItemKey(item: MTopbarItem): string {\n return item.key ?? item.to ?? item.href ?? String(item.label)\n}\n\nfunction itemHasActiveDescendant(item: MTopbarItem): boolean {\n if (item.active) return true\n return (item.children ?? []).some(itemHasActiveDescendant)\n}\n\nfunction renderItemContent(item: MTopbarItem, withChevron = false, isOpen = false): ReactNode {\n return (\n <>\n {item.icon ? <span className=\"topbar-icon\">{item.icon}</span> : null}\n <span>{item.label}</span>\n {item.badge ? <span className=\"topbar-badge\">{item.badge}</span> : null}\n {withChevron ? (\n <span className={cn('topbar-chevron', isOpen && 'open')} aria-hidden=\"true\">\n <MChevronDownIcon size=\"sm\" />\n </span>\n ) : null}\n </>\n )\n}\n\nfunction renderDropdownChildren(children: MTopbarItem[]): ReactNode {\n return children.map((child) => {\n if (child.children?.length) {\n return (\n <MDropdownGroup key={getItemKey(child)} label={String(child.label)}>\n {renderDropdownChildren(child.children)}\n </MDropdownGroup>\n )\n }\n\n return (\n <MDropdownItem\n key={getItemKey(child)}\n icon={child.icon}\n label={child.label}\n href={child.href}\n to={child.to}\n onClick={child.onClick}\n color={child.color}\n disabled={child.disabled}\n active={child.active}\n component={child.component}\n className={child.className}\n />\n )\n })\n}\n\nexport function MTopbar({\n items,\n container = 'full',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'left',\n size = 'md',\n openOn = 'hover',\n dropdownPlacement = 'bottom-start',\n compactBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n style,\n ...rest\n}: MTopbarProps) {\n const hiddenOnCompact = useMaxWidth(compactBreakpoint)\n const [coarsePointer, setCoarsePointer] = useState(false)\n const [openMap, setOpenMap] = useState<Record<string, boolean>>({})\n const [hasOverflow, setHasOverflow] = useState(false)\n const [canScrollLeft, setCanScrollLeft] = useState(false)\n const [canScrollRight, setCanScrollRight] = useState(false)\n const viewportRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const media = window.matchMedia('(pointer: coarse)')\n const sync = () => setCoarsePointer(media.matches)\n\n sync()\n\n if (typeof media.addEventListener === 'function') {\n media.addEventListener('change', sync)\n return () => media.removeEventListener('change', sync)\n }\n\n media.addListener(sync)\n return () => media.removeListener(sync)\n }, [])\n\n useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const updateOverflow = () => {\n const nextHasOverflow = viewport.scrollWidth > viewport.clientWidth + 1\n setHasOverflow(nextHasOverflow)\n setCanScrollLeft(viewport.scrollLeft > 4)\n setCanScrollRight(viewport.scrollLeft + viewport.clientWidth < viewport.scrollWidth - 4)\n }\n\n updateOverflow()\n\n viewport.addEventListener('scroll', updateOverflow, {passive: true})\n\n const observer = new ResizeObserver(updateOverflow)\n observer.observe(viewport)\n Array.from(viewport.children).forEach((child) => observer.observe(child))\n\n return () => {\n viewport.removeEventListener('scroll', updateOverflow)\n observer.disconnect()\n }\n }, [items, justify, size, tone, bordered, padded, container])\n\n const resolvedOpenOn = useMemo(() => (coarsePointer ? 'click' : openOn), [coarsePointer, openOn])\n\n if (hiddenOnCompact) {\n return null\n }\n\n const scrollByAmount = (direction: 'left' | 'right') => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const amount = Math.max(180, Math.floor(viewport.clientWidth * 0.45))\n viewport.scrollBy({\n left: direction === 'left' ? -amount : amount,\n behavior: 'smooth',\n })\n }\n\n return (\n <nav\n className={cn('topbar', tone, size, bordered && 'bordered', sticky && 'sticky', className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"topbar-container\">\n <div className={cn('topbar-scroll-shell', hasOverflow && 'overflowing')}>\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'left', !canScrollLeft && 'hidden')}\n onClick={() => scrollByAmount('left')}\n aria-label=\"Scroll topbar left\"\n >\n <MChevronLeftIcon />\n </MButton>\n )}\n\n <div ref={viewportRef} className=\"topbar-viewport\">\n <div className={cn('topbar-list', `justify-${justify}`, hasOverflow && 'overflowing')}>\n {items.map((item) => {\n const itemKey = getItemKey(item)\n const isActive = itemHasActiveDescendant(item)\n const isOpen = !!openMap[itemKey]\n\n if (item.children?.length) {\n if (item.disabled) {\n return (\n <div\n key={itemKey}\n className={cn('topbar-trigger', item.color, 'disabled', item.className)}\n aria-disabled=\"true\"\n >\n {renderItemContent(item, true)}\n </div>\n )\n }\n\n return (\n <MDropdownMenu\n key={itemKey}\n trigger={\n <div\n className={cn(\n 'topbar-trigger',\n item.color,\n isActive && 'active',\n isOpen && 'open',\n item.disabled && 'disabled',\n item.className\n )}\n >\n {renderItemContent(item, true, isOpen)}\n </div>\n }\n openOn={item.openOn ?? resolvedOpenOn}\n onOpenChange={(nextOpen) =>\n setOpenMap((prev) => ({...prev, [itemKey]: nextOpen}))\n }\n placement={dropdownPlacement}\n popoverClassName=\"topbar-dropdown-popover\"\n >\n {renderDropdownChildren(item.children)}\n </MDropdownMenu>\n )\n }\n\n return (\n <MLink\n key={itemKey}\n component={item.component}\n href={item.href}\n to={item.to}\n onClick={item.onClick}\n current={item.active}\n disabled={item.disabled}\n underline=\"none\"\n tone=\"inherit\"\n className={cn(\n 'topbar-link',\n item.color,\n item.className,\n item.active && 'active'\n )}\n >\n {renderItemContent(item)}\n </MLink>\n )\n })}\n </div>\n </div>\n\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'right', !canScrollRight && 'hidden')}\n onClick={() => scrollByAmount('right')}\n aria-label=\"Scroll topbar right\"\n >\n <MChevronRightIcon />\n </MButton>\n )}\n </div>\n </MContainer>\n </nav>\n )\n}\n","import {useId, useMemo, useState} from 'react'\nimport type {KeyboardEvent} from 'react'\nimport type {MTabsItem, MTabsProps} from './MTabs.types'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MTabs.css'\n\ninterface MTabsTriggerProps {\n item: MTabsItem\n isActive: boolean\n tabId: string\n panelId: string\n clickEffect: MTabsProps['clickEffect']\n rippleColor: string | undefined\n onSelect: (value: string) => void\n}\n\n// Keep the tab trigger behavior isolated from the list and panel rendering.\nfunction MTabsTrigger({item, isActive, tabId, panelId, clickEffect, rippleColor, onSelect}: MTabsTriggerProps) {\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLButtonElement>({\n effect: clickEffect,\n disabled: item.disabled,\n centered: true,\n color: rippleColor,\n })\n\n return (\n <button\n type=\"button\"\n id={tabId}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={panelId}\n tabIndex={isActive ? 0 : -1}\n disabled={item.disabled}\n className={cn('tabs-trigger', isActive && 'active', item.disabled && 'disabled', effectClassName)}\n onPointerDown={handlePointerDown}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget)\n }\n }}\n onClick={() => onSelect(item.value)}\n >\n {effectLayer}\n {item.icon && <span className=\"tabs-icon\">{item.icon}</span>}\n <span className=\"tabs-label\">{item.label}</span>\n </button>\n )\n}\n\nexport function MTabs({\n items,\n value,\n defaultValue,\n onValueChange,\n variant = 'underline',\n orientation = 'horizontal',\n size = 'md',\n fullWidth = false,\n showPanels = true,\n panelClassName,\n clickEffect = 'ripple',\n rippleColor,\n className,\n ...rest\n}: MTabsProps) {\n // Pick the first enabled item when the caller does not control the active tab.\n const fallbackValue = useMemo(\n () => defaultValue ?? items.find((item) => !item.disabled)?.value ?? '',\n [defaultValue, items]\n )\n const [internalValue, setInternalValue] = useState(fallbackValue)\n const activeValue = value ?? internalValue\n const activeItem = items.find((item) => item.value === activeValue) ?? items[0]\n const baseId = useId()\n\n // Support both controlled and uncontrolled tab state.\n function selectTab(nextValue: string) {\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n onValueChange?.(nextValue)\n }\n\n // Re-map keyboard navigation depending on the rendered orientation.\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const enabledItems = items.filter((item) => !item.disabled)\n const currentIndex = enabledItems.findIndex((item) => item.value === activeItem?.value)\n\n if (currentIndex === -1) {\n return\n }\n\n const nextKeys = orientation === 'vertical' ? ['ArrowDown'] : ['ArrowRight', 'ArrowDown']\n const previousKeys = orientation === 'vertical' ? ['ArrowUp'] : ['ArrowLeft', 'ArrowUp']\n\n if (nextKeys.includes(event.key)) {\n event.preventDefault()\n const nextItem = enabledItems[(currentIndex + 1) % enabledItems.length]\n selectTab(nextItem.value)\n }\n\n if (previousKeys.includes(event.key)) {\n event.preventDefault()\n const nextItem = enabledItems[(currentIndex - 1 + enabledItems.length) % enabledItems.length]\n selectTab(nextItem.value)\n }\n }\n\n return (\n <div className={cn('tabs', variant, orientation, size, fullWidth && 'full-width', className)} {...rest}>\n <div className=\"tabs-list\" role=\"tablist\" aria-orientation={orientation} onKeyDown={handleKeyDown}>\n {items.map((item) => {\n const isActive = item.value === activeItem?.value\n const tabId = `${baseId}-${item.value}-tab`\n const panelId = `${baseId}-${item.value}-panel`\n\n return (\n <MTabsTrigger\n key={item.value}\n item={item}\n isActive={isActive}\n tabId={tabId}\n panelId={panelId}\n clickEffect={clickEffect}\n rippleColor={rippleColor}\n onSelect={selectTab}\n />\n )\n })}\n </div>\n\n {showPanels && activeItem?.content !== undefined && (\n <div\n key={activeItem.value}\n id={`${baseId}-${activeItem.value}-panel`}\n role=\"tabpanel\"\n aria-labelledby={`${baseId}-${activeItem.value}-tab`}\n className={cn('tabs-panel', panelClassName)}\n >\n {activeItem.content}\n </div>\n )}\n </div>\n )\n}\n","import type React from 'react'\nimport type {MSectionProps} from './MSection.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MSection.css'\n\n// Render a semantic page section with predefined spacing and tone.\nexport function MSection({\n as = 'section',\n spacing = 'lg',\n tone = 'default',\n hidden,\n className,\n style,\n children,\n ...rest\n}: MSectionProps) {\n const Component = as\n\n return (\n <Component\n className={cn('section', spacing, tone, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n}\n","import type {MSimpleGridProps} from './MSimpleGrid.types'\nimport {cn} from '../../../utils/cn'\nimport './MSimpleGrid.css'\n\n// Render a simple equal-column grid with a shared default spacing.\nexport function MSimpleGrid({columns = 2, minItemWidth, className, style, children, ...rest}: MSimpleGridProps) {\n return (\n <div\n className={cn('grid', `columns-${columns}`, className)}\n style={{\n ...(minItemWidth ? {'--grid-min-item-width': minItemWidth} : {}),\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n )\n}\n","import {Children, cloneElement, isValidElement} from 'react'\nimport type {ReactElement} from 'react'\nimport type {MGridColumns, MGridItemProps, MGridProps} from './MGrid.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MGrid.css'\n\ntype GridBreakpoint = 'base' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm'\ntype GridBreakpointSpans = Record<GridBreakpoint, MGridColumns | undefined>\ntype MGridInternalProps = MGridProps & {\n resolvedBase?: MGridColumns\n}\n\nconst gridBreakpointOrder: GridBreakpoint[] = ['base', 'xxl', 'xl', 'lg', 'md', 'sm']\n\nconst hiddenBreakpointMap: Record<string, GridBreakpoint[]> = {\n sm: ['sm'],\n md: ['md', 'sm'],\n lg: ['lg', 'md', 'sm'],\n xl: ['xl', 'lg', 'md', 'sm'],\n '2xl': ['xxl', 'xl', 'lg', 'md', 'sm'],\n}\n\nfunction isGridColumnElement(child: unknown): child is ReactElement<MGridProps | MGridItemProps> {\n if (!isValidElement(child)) {\n return false\n }\n\n if (child.type === MGridItem) {\n return true\n }\n\n return child.type === MGrid && (child.props as MGridProps).type === 'col'\n}\n\nfunction getInheritedSpans(props: Partial<MGridProps>): GridBreakpointSpans {\n const sm = props.sm\n const md = props.md ?? sm\n const lg = props.lg ?? md\n const xl = props.xl ?? lg\n const xxl = props.xxl ?? xl\n\n return {\n base: xxl,\n xxl,\n xl,\n lg,\n md,\n sm,\n }\n}\n\nfunction isHiddenAtBreakpoint(hidden: MGridProps['hidden'], breakpoint: GridBreakpoint) {\n if (hidden === true) {\n return true\n }\n\n if (hidden === undefined || hidden === false || breakpoint === 'base') {\n return false\n }\n\n return hiddenBreakpointMap[hidden]?.includes(breakpoint) ?? false\n}\n\nfunction distributeRemainingColumns(remaining: number, count: number): Array<MGridColumns | undefined> {\n if (count <= 0) {\n return []\n }\n\n if (remaining <= 0) {\n return Array.from({length: count}, () => undefined)\n }\n\n const base = Math.floor(remaining / count)\n const extra = remaining % count\n\n return Array.from({length: count}, (_, index) => {\n const value = base + (index < extra ? 1 : 0)\n return value >= 1 ? (value as MGridColumns) : undefined\n })\n}\n\nfunction resolveAutoSpans(columnProps: Array<Partial<MGridProps>>) {\n const normalized = columnProps.map((props) => getInheritedSpans(props))\n const resolved = normalized.map((spans) => ({...spans}))\n\n for (const breakpoint of gridBreakpointOrder) {\n const autoIndexes: number[] = []\n let usedColumns = 0\n\n normalized.forEach((spans, index) => {\n if (isHiddenAtBreakpoint(columnProps[index].hidden, breakpoint)) {\n resolved[index][breakpoint] = undefined\n return\n }\n\n const value = spans[breakpoint]\n\n if (value) {\n usedColumns += value\n return\n }\n\n autoIndexes.push(index)\n })\n\n const distributed = distributeRemainingColumns(Math.max(12 - usedColumns, 0), autoIndexes.length)\n\n autoIndexes.forEach((columnIndex, autoIndex) => {\n resolved[columnIndex][breakpoint] = distributed[autoIndex]\n })\n }\n\n return resolved\n}\n\n// Render either a responsive row or a responsive column using one shared grid API.\nexport function MGrid({\n type = 'row',\n sm,\n md,\n lg,\n xl,\n xxl,\n resolvedBase,\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MGridInternalProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n const inheritedSpans = getInheritedSpans({sm, md, lg, xl, xxl})\n const baseSpan = resolvedBase ?? inheritedSpans.base\n\n if (type === 'col') {\n return (\n <div\n className={cn(\n 'grid',\n 'col',\n baseSpan ? `span-${baseSpan}` : 'span-auto',\n xxl && `xxl-${xxl}`,\n xl && `xl-${xl}`,\n lg && `lg-${lg}`,\n md && `md-${md}`,\n sm && `sm-${sm}`,\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </div>\n )\n }\n\n const childArray = Children.toArray(children)\n const columnEntries = childArray.flatMap((child, index) => (isGridColumnElement(child) ? [{child, index}] : []))\n const autoColumns = Math.min(Math.max(columnEntries.length || childArray.length, 1), 12)\n const needsResponsiveResolution = columnEntries.some(({child}) => {\n const p = child.props as MGridProps\n return Boolean(p.hidden || p.xxl || p.xl || p.lg || p.md || p.sm)\n })\n const resolvedSpans = needsResponsiveResolution\n ? resolveAutoSpans(columnEntries.map(({child}) => child.props as Partial<MGridProps>))\n : null\n const resolvedChildren =\n needsResponsiveResolution && resolvedSpans\n ? childArray.map((child, childIndex) => {\n const columnIndex = columnEntries.findIndex((entry) => entry.index === childIndex)\n\n if (columnIndex === -1 || !isGridColumnElement(child)) {\n return child\n }\n\n const spans = resolvedSpans[columnIndex]\n\n return cloneElement(child as ReactElement<MGridInternalProps>, {\n resolvedBase: spans.base,\n xxl: spans.xxl,\n xl: spans.xl,\n lg: spans.lg,\n md: spans.md,\n sm: spans.sm,\n })\n })\n : childArray\n\n return (\n <div\n className={cn(\n 'grid',\n 'row',\n needsResponsiveResolution ? 'tracked' : `auto-cols-${autoColumns}`,\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth: fullWidth ?? true,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {resolvedChildren}\n </div>\n )\n}\n\n// Keep MGridItem as a compatibility alias for explicit column declarations.\nexport function MGridItem({sm, md, lg, xl, xxl, ...rest}: MGridItemProps) {\n return <MGrid type=\"col\" sm={sm} md={md} lg={lg} xl={xl} xxl={xxl} {...rest} />\n}\n","import type {MDividerProps} from './MDivider.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MDivider.css'\n\n// Render a semantic divider line between related content blocks.\nexport function MDivider({\n orientation = 'horizontal',\n variant = 'solid',\n hidden,\n className,\n style,\n ...rest\n}: MDividerProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n className={cn('divider', orientation, variant, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n />\n )\n}\n","import {createContext, useContext, useState, useEffect, useCallback, useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronRightIcon, MMenuIcon} from '../../../icons'\nimport {MDropdownMenu, MTooltip} from '../../overlays'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport type {\n MSidebarProps,\n MSidebarHeaderProps,\n MSidebarBodyProps,\n MSidebarNavProps,\n MSidebarItemProps,\n MSidebarGroupProps,\n MSidebarFooterProps,\n MSidebarDividerProps,\n MSidebarMode,\n} from './MSidebar.types'\nimport './MSidebar.css'\n\nconst STORAGE_KEY = 'mineralui-sidebar'\n\ninterface SidebarContextValue {\n mode: MSidebarMode\n mobile: boolean\n mobileOpen: boolean\n canToggle: boolean\n toggleMode: () => void\n}\n\nconst SidebarCtx = createContext<SidebarContextValue>({\n mode: 'expanded',\n mobile: false,\n mobileOpen: false,\n canToggle: false,\n toggleMode: () => {},\n})\n\n// Read shared sidebar state inside slot components.\nfunction useSidebar() {\n return useContext(SidebarCtx)\n}\n\n// Render the sidebar shell and coordinate desktop and mobile behavior.\nexport function MSidebar({\n mode: modeProp = 'auto',\n defaultMode = 'expanded',\n onModeChange,\n persist = false,\n side = 'left',\n tone = 'subtle',\n bordered = true,\n mobileBreakpoint = MShellBreakpoints.mobile,\n compactBreakpoint = MShellBreakpoints.compact,\n className,\n style,\n children,\n}: MSidebarProps) {\n const resolvedCompactBreakpoint = Math.max(compactBreakpoint, mobileBreakpoint)\n const mobile = useMaxWidth(mobileBreakpoint)\n const compactViewport = useMaxWidth(resolvedCompactBreakpoint)\n const compact = !mobile && compactViewport\n const [mobileOpen, setMobileOpen] = useState(false)\n\n const [internalMode, setInternalMode] = useState<MSidebarMode>(() => {\n if (persist) {\n try {\n const v = localStorage.getItem(STORAGE_KEY)\n if (v === 'expanded' || v === 'collapsed') return v\n } catch {\n /* noop */\n }\n }\n\n return defaultMode\n })\n\n const resolvedMode: MSidebarMode = mobile\n ? 'expanded'\n : compact\n ? 'collapsed'\n : modeProp === 'auto'\n ? internalMode\n : modeProp === 'collapsed'\n ? 'collapsed'\n : 'expanded'\n\n // MToggle only the desktop width state. Mobile uses its own overlay flow.\n const toggleMode = useCallback(() => {\n const next: MSidebarMode = resolvedMode === 'expanded' ? 'collapsed' : 'expanded'\n\n setInternalMode(next)\n onModeChange?.(next)\n\n if (persist) {\n try {\n localStorage.setItem(STORAGE_KEY, next)\n } catch {\n /* noop */\n }\n }\n }, [resolvedMode, onModeChange, persist])\n\n const closeMobile = useCallback(() => setMobileOpen(false), [])\n\n // Let Escape close the temporary mobile drawer.\n useEffect(() => {\n if (!mobileOpen) return\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setMobileOpen(false)\n }\n\n document.addEventListener('keydown', handler)\n return () => document.removeEventListener('keydown', handler)\n }, [mobileOpen])\n\n useEffect(() => {\n if (!mobile) {\n setMobileOpen(false)\n }\n }, [mobile])\n\n const canToggle = !mobile && !compact && modeProp === 'auto'\n\n const ctx = useMemo<SidebarContextValue>(\n () => ({mode: resolvedMode, mobile, mobileOpen, canToggle, toggleMode}),\n [resolvedMode, mobile, mobileOpen, canToggle, toggleMode]\n )\n\n const isCollapsed = !mobile && resolvedMode === 'collapsed'\n\n const sidebarCls = cn(\n 'sidebar',\n tone,\n side,\n isCollapsed && 'collapsed',\n compact && 'compact',\n bordered && 'bordered',\n mobile && 'mobile',\n mobile && mobileOpen && 'mobile-open',\n className\n )\n\n return (\n <SidebarCtx.Provider value={ctx}>\n {mobile && mobileOpen && <div className=\"sidebar-backdrop\" onClick={closeMobile} />}\n\n <aside className={sidebarCls} style={style}>\n {children}\n </aside>\n\n {mobile && !mobileOpen && (\n <button\n className={cn('sidebar-hamburger', side)}\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n >\n <span className=\"sidebar-hamburger-icon\" aria-hidden=\"true\">\n <MMenuIcon />\n </span>\n </button>\n )}\n </SidebarCtx.Provider>\n )\n}\n\n// Render the top area with branding and an optional collapse toggle.\nexport function MSidebarHeader({bordered = false, className, children}: MSidebarHeaderProps) {\n const {mode, mobile, canToggle, toggleMode} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n return (\n <div className={cn('sidebar-header', bordered && 'bordered', className)}>\n <div className=\"sidebar-header-content\">{children}</div>\n {canToggle && (\n <MButton\n variant=\"outlined\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={toggleMode}\n aria-label={isCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n className=\"sidebar-toggle\"\n >\n <span className={cn('sidebar-chevron', isCollapsed && 'flipped')}>\n <MChevronRightIcon />\n </span>\n </MButton>\n )}\n </div>\n )\n}\n\n// Wrap the scrollable middle area between header and footer.\nexport function MSidebarBody({className, children}: MSidebarBodyProps) {\n return <div className={cn('sidebar-body', className)}>{children}</div>\n}\n\n// Wrap sidebar links in a navigation landmark.\nexport function MSidebarNav({className, children}: MSidebarNavProps) {\n return <nav className={cn('sidebar-nav', className)}>{children}</nav>\n}\n\n// Render one clickable sidebar row as a link, button or custom component.\nexport function MSidebarItem({\n icon,\n label,\n href,\n to,\n onClick,\n active = false,\n disabled = false,\n badge,\n color,\n component,\n className,\n}: MSidebarItemProps) {\n const {mode, mobile} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n const Tag = component ?? (href || to ? 'a' : 'button')\n const linkProps = component ? (to ? {to} : href ? {href} : {}) : href ? {href} : to ? {href: to} : {}\n const cls = cn('sidebar-item', active && 'active', disabled && 'disabled', color, className)\n\n return (\n <Tag\n className={cls}\n onClick={disabled ? undefined : onClick}\n aria-disabled={disabled || undefined}\n title={isCollapsed ? label : undefined}\n {...linkProps}\n >\n {icon && <span className=\"sidebar-item-icon\">{icon}</span>}\n {!isCollapsed && (\n <MTooltip content={label} placement=\"top\" className=\"sidebar-item-label-tooltip\">\n <span className=\"sidebar-item-label\">{label}</span>\n </MTooltip>\n )}\n {!isCollapsed && badge && <span className=\"sidebar-item-badge\">{badge}</span>}\n </Tag>\n )\n}\n\n// Group related sidebar items and swap to a dropdown when collapsed.\nexport function MSidebarGroup({\n label,\n icon,\n active = false,\n defaultOpen = true,\n collapsible = true,\n children,\n className,\n}: MSidebarGroupProps) {\n const sidebarCtx = useSidebar()\n const {mode, mobile} = sidebarCtx\n const isCollapsed = !mobile && mode === 'collapsed'\n const [open, setOpen] = useState(defaultOpen)\n\n const expandedCtx = useMemo<SidebarContextValue>(() => ({...sidebarCtx, mode: 'expanded'}), [sidebarCtx])\n\n // Keep expand/collapse local to this group.\n const toggle = () => {\n if (collapsible) setOpen((o) => !o)\n }\n\n if (isCollapsed) {\n const trigger = (\n <span className={cn('sidebar-group-icon collapsed', active && 'active')} title={label}>\n {icon}\n </span>\n )\n\n return (\n <div className={cn('sidebar-group', className)}>\n <MDropdownMenu trigger={trigger} placement=\"right-start\" closeOnSelect openOn=\"hover\">\n <SidebarCtx.Provider value={expandedCtx}>{children}</SidebarCtx.Provider>\n </MDropdownMenu>\n </div>\n )\n }\n\n return (\n <div className={cn('sidebar-group', className)}>\n <button className={cn('sidebar-group-header', active && 'active')} onClick={toggle} aria-expanded={open}>\n {icon && <span className=\"sidebar-group-icon\">{icon}</span>}\n <span className=\"sidebar-group-label\">{label}</span>\n {collapsible && (\n <span className={cn('sidebar-group-arrow', open && 'open')}>\n <MChevronRightIcon />\n </span>\n )}\n </button>\n {open && <div className=\"sidebar-group-items\">{children}</div>}\n </div>\n )\n}\n\n// Render the bottom slot for version info or quick actions.\nexport function MSidebarFooter({bordered = false, className, children}: MSidebarFooterProps) {\n return <div className={cn('sidebar-footer', bordered && 'bordered', className)}>{children}</div>\n}\n\n// Render a spacing-aware divider between sidebar regions.\nexport function MSidebarDivider({className, spacing = 'md'}: MSidebarDividerProps) {\n return <hr className={cn('sidebar-divider', spacing, className)} />\n}\n","import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport type {MBreadcrumbProps} from './MBreadcrumb.types'\nimport './MBreadcrumb.css'\n\n// Render a compact path and collapse the middle when needed.\nexport function MBreadcrumb({items, separator = '/', maxItems, className, ...rest}: MBreadcrumbProps) {\n // Keep the current page visible while shortening deep paths.\n const visible = useMemo(() => {\n if (!maxItems || maxItems >= items.length) return items\n if (maxItems < 2) return [items[items.length - 1]]\n const head = items.slice(0, 1)\n const tail = items.slice(-(maxItems - 1))\n return [...head, null, ...tail]\n }, [items, maxItems])\n\n return (\n <nav aria-label=\"breadcrumb\" className={cn('breadcrumb', className)} {...rest}>\n <ol className=\"trail\">\n {visible.map((item, i) => {\n if (item === null) {\n return (\n <li key=\"ellipsis\" className=\"crumb dots\">\n <span className=\"sep\">{separator}</span>\n <span>&#8230;</span>\n </li>\n )\n }\n\n const isLast = i === visible.length - 1\n\n return (\n <li key={i} className={cn('crumb', isLast && 'active')}>\n {i > 0 && <span className=\"sep\">{separator}</span>}\n {item.href && !isLast ? (\n <a href={item.href} className=\"link\" onClick={item.onClick}>\n {item.label}\n </a>\n ) : item.onClick && !isLast ? (\n <button type=\"button\" className=\"link btn\" onClick={item.onClick}>\n {item.label}\n </button>\n ) : (\n <span className=\"current\" aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n","import {forwardRef, Children, isValidElement} from 'react'\nimport type * as React from 'react'\nimport type {MAppShellProps, MBodyProps} from './MAppShell.types'\nimport {cn} from '../../../utils/cn'\nimport {MSidebar} from '../MSidebar'\nimport './MAppShell.css'\n\nexport const MAppShell = forwardRef<HTMLDivElement, MAppShellProps>(function MAppShell(\n {className, children, ...rest},\n ref\n) {\n const sidebarElements: React.ReactNode[] = []\n const otherElements: React.ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === MSidebar) {\n sidebarElements.push(child)\n } else {\n otherElements.push(child)\n }\n })\n\n return (\n <div ref={ref} className={cn('app-shell', className)} {...rest}>\n {sidebarElements}\n <div className=\"app-main\">{otherElements}</div>\n </div>\n )\n})\n\nexport const MBody = forwardRef<HTMLDivElement, MBodyProps>(function MBody({className, children, ...rest}, ref) {\n return (\n <div ref={ref} className={cn('app-body', className)} {...rest}>\n {children}\n </div>\n )\n})\n"],"mappings":"idAOA,SAAgB,EAAW,CACvB,OAAO,UACP,SAAS,GACT,SACA,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACA,YACA,QACA,WACA,GAAG,GACa,CAChB,IAAM,EAAe,EAAA,EAAuB,CAAC,QAAM,CAAC,CAEpD,OACI,EAAA,EAAA,KAAC,MAAD,CACI,UAAW,EAAA,EACP,YACA,EACA,GAAU,SACV,GAAG,EAAA,EAA2B,CAC1B,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACH,CAAC,CACF,EACH,CACD,MAAO,CAAC,GAAG,EAAc,GAAG,EAAM,CAClC,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,EAEH,WACC,CAAA,CC1Dd,SAAgB,EAAQ,CACpB,YAAY,OACZ,SAAS,GACT,WAAW,GACX,SAAS,GACT,OAAO,UACP,SAAS,QACT,SACA,YACA,WACA,GAAG,GACU,CACb,OACI,EAAA,EAAA,KAAC,SAAD,CACI,UAAW,EAAA,EAAG,SAAU,EAAM,GAAY,WAAY,GAAU,SAAU,EAAU,CACpF,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,YAEJ,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAmB,SAAQ,UAAW,EAAA,EAAG,QAAS,UAAU,IAAS,CAClF,WACQ,CAAA,CACR,CAAA,CCpBjB,SAAgB,EAAQ,CACpB,YAAY,OACZ,SAAS,GACT,WAAW,GACX,OAAO,UACP,SACA,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACA,YACA,QACA,WACA,GAAG,GACU,CACb,IAAM,EAAe,EAAA,EAAuB,CAAC,QAAM,CAAC,CAEpD,OACI,EAAA,EAAA,KAAC,SAAD,CACI,UAAW,EAAA,EACP,SACA,EACA,GAAY,WACZ,GAAG,EAAA,EAA2B,CAC1B,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACH,CAAC,CACF,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"}
1
+ {"version":3,"file":"layout-rtlHrjDb.cjs","names":[],"sources":["../src/components/layout/MContainer/MContainer.tsx","../src/components/layout/MHeader/MHeader.tsx","../src/components/layout/MFooter/MFooter.tsx","../src/components/layout/MNavs/MNavs.tsx","../src/components/layout/MNavbar/MNavbar.tsx","../src/components/layout/MTopbar/MTopbar.tsx","../src/components/layout/MTabs/MTabs.tsx","../src/components/layout/MSection/MSection.tsx","../src/components/layout/MSimpleGrid/MSimpleGrid.tsx","../src/components/layout/MGrid/MGrid.tsx","../src/components/layout/MDivider/MDivider.tsx","../src/components/layout/MSidebar/MSidebar.tsx","../src/components/layout/MBreadcrumb/MBreadcrumb.tsx","../src/components/layout/MAppShell/MAppShell.tsx"],"sourcesContent":["import type {MContainerProps} from './MContainer.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MContainer.css'\n\n// Constrain page content widths and apply shared spacing utilities.\nexport function MContainer({\n size = 'content',\n padded = true,\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MContainerProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n className={cn(\n 'container',\n size,\n padded && 'padded',\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </div>\n )\n}\n","import type {MHeaderProps} from './MHeader.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport './MHeader.css'\n\n// Render a reusable page header shell aligned to a shared container.\nexport function MHeader({\n container = 'wide',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n layout = 'split',\n hidden,\n className,\n children,\n ...rest\n}: MHeaderProps) {\n return (\n <header\n className={cn('header', tone, bordered && 'bordered', sticky && 'sticky', className)}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className={cn('inner', `layout-${layout}`)}>\n {children}\n </MContainer>\n </header>\n )\n}\n","import type {MFooterProps} from './MFooter.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport {MContainer} from '../MContainer'\nimport './MFooter.css'\n\n// Render a reusable page footer shell with shared spacing utilities.\nexport function MFooter({\n container = 'wide',\n padded = true,\n bordered = true,\n tone = 'surface',\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MFooterProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <footer\n className={cn(\n 'footer',\n tone,\n bordered && 'bordered',\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"inner\" fullWidth>\n {children}\n </MContainer>\n </footer>\n )\n}\n","import type {MNavsProps} from './MNavs.types'\nimport {cn} from '../../../utils/cn'\nimport {MLink} from '../../typography'\nimport './MNavs.css'\n\n// Render a lightweight navigation list from data or custom children.\nexport function MNavs({items, orientation = 'horizontal', wrap = false, className, children, ...rest}: MNavsProps) {\n return (\n <div className={cn('navs', orientation, wrap && 'wrap', className)} {...rest}>\n {items\n ? items.map((item) => {\n const Icon = item.icon\n const hideLabel = item.iconOnly === true && Icon != null\n const labelAsString = typeof item.label === 'string' ? item.label : undefined\n const ariaLabel = hideLabel ? labelAsString : undefined\n const linkTitle = item.title ?? (hideLabel ? labelAsString : undefined)\n\n return (\n <MLink\n key={item.key ?? item.href ?? item.title?.toString() ?? labelAsString ?? ''}\n component={item.component}\n href={item.href}\n to={item.to}\n target={item.target}\n rel={item.rel}\n title={linkTitle}\n current={item.current}\n disabled={item.disabled}\n className={cn('link', hideLabel && 'icon-only', item.className)}\n aria-label={ariaLabel}\n >\n {Icon ? (\n <span className=\"icon\" aria-hidden={!hideLabel || undefined}>\n <Icon size={item.iconSize} />\n </span>\n ) : null}\n {!hideLabel ? item.label : null}\n </MLink>\n )\n })\n : children}\n </div>\n )\n}\n","import {Children, cloneElement, isValidElement, useEffect, useId, useRef, useState} from 'react'\nimport type {MouseEvent as ReactMouseEvent, ReactElement} from 'react'\nimport type {MNavbarProps} from './MNavbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MInline} from '../MInline'\nimport type {MInlineProps} from '../MInline'\nimport {MNavs} from '../MNavs'\nimport type {MNavsProps} from '../MNavs'\nimport {MButton} from '../../controls/MButton'\nimport {MMenuIcon} from '../../../icons'\nimport './MNavbar.css'\n\n// Render a horizontal app or site navigation shell with container alignment.\n// Below the md breakpoint MNavs children are collapsed behind a hamburger toggle\n// that opens either a dropdown panel or a side drawer with the navigation items.\nexport function MNavbar({\n container = 'content',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'between',\n wrap = false,\n mobileMenu = 'dropdown',\n mobileMenuContent,\n mobileMenuLabel = 'Open navigation',\n mobileBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n children,\n ...rest\n}: MNavbarProps) {\n const [open, setOpen] = useState(false)\n const rootRef = useRef<HTMLElement | null>(null)\n const menuId = useId()\n const mobile = useMaxWidth(mobileBreakpoint)\n\n const childArray = Children.toArray(children)\n\n const mobileNavs = childArray\n .filter((child): child is ReactElement<MNavsProps> => isValidElement(child) && child.type === MNavs)\n .map((child, index) =>\n cloneElement(child, {\n key: `mnavbar-mobile-navs-${index}`,\n orientation: 'vertical',\n })\n )\n\n const toggleButton = (\n <MButton\n key=\"mnavbar-toggle\"\n type=\"button\"\n variant=\"ghost\"\n size=\"md\"\n iconOnly\n className=\"navbar-toggle\"\n aria-label={mobileMenuLabel}\n aria-expanded={open}\n aria-controls={menuId}\n onClick={handleToggleClick}\n >\n <MMenuIcon />\n </MButton>\n )\n\n let lastInlineIndex = -1\n for (let index = childArray.length - 1; index >= 0; index -= 1) {\n const child = childArray[index]\n if (isValidElement(child) && child.type === MInline) {\n lastInlineIndex = index\n break\n }\n }\n\n const renderedChildren =\n lastInlineIndex === -1\n ? [...childArray, toggleButton]\n : childArray.map((child, index) => {\n if (index !== lastInlineIndex) return child\n const inlineChild = child as ReactElement<MInlineProps>\n const inlineChildren = Children.toArray(inlineChild.props.children)\n return cloneElement(inlineChild, {\n key: inlineChild.key ?? `mnavbar-inline-${index}`,\n children: [...inlineChildren, toggleButton],\n })\n })\n\n useEffect(() => {\n if (!open) return\n\n function handlePointerDown(event: PointerEvent) {\n const root = rootRef.current\n if (!root) return\n if (event.target instanceof Node && root.contains(event.target)) return\n setOpen(false)\n }\n\n function handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') setOpen(false)\n }\n\n document.addEventListener('pointerdown', handlePointerDown)\n document.addEventListener('keydown', handleKeydown)\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown)\n document.removeEventListener('keydown', handleKeydown)\n }\n }, [open])\n\n useEffect(() => {\n if (!mobile) {\n setOpen(false)\n }\n }, [mobile])\n\n function handleToggleClick() {\n setOpen((previous) => !previous)\n }\n\n function handleMenuClick(event: ReactMouseEvent<HTMLDivElement>) {\n const target = event.target as HTMLElement | null\n if (!target) return\n if (target.closest('a, [role=\"menuitem\"]')) {\n setOpen(false)\n }\n }\n\n return (\n <nav\n ref={rootRef}\n className={cn(\n 'navbar',\n tone,\n bordered && 'bordered',\n sticky && 'sticky',\n mobile && 'mobile-view',\n open && 'mobile-open',\n `mobile-${mobileMenu}`,\n className\n )}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"container\">\n <div className={cn('inner', justify, wrap && 'wrap')}>{renderedChildren}</div>\n </MContainer>\n\n {mobileMenu === 'drawer' && <div className={cn('mobile-backdrop', open && 'visible')} aria-hidden />}\n\n <div\n id={menuId}\n className={cn('mobile-menu', mobileMenu, open && 'open')}\n role=\"menu\"\n aria-hidden={!open || undefined}\n onClick={handleMenuClick}\n >\n {mobileNavs}\n {mobileMenuContent}\n </div>\n </nav>\n )\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {ReactNode} from 'react'\nimport type {MTopbarItem, MTopbarProps} from './MTopbar.types'\nimport {getHiddenProps, MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MContainer} from '../MContainer'\nimport {MButton} from '../../controls'\nimport {MLink} from '../../typography'\nimport {MChevronDownIcon, MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport {MDropdownGroup, MDropdownItem, MDropdownMenu} from '../../overlays/MDropdownMenu'\nimport './MTopbar.css'\n\nfunction getItemKey(item: MTopbarItem): string {\n return item.key ?? item.to ?? item.href ?? String(item.label)\n}\n\nfunction itemHasActiveDescendant(item: MTopbarItem): boolean {\n if (item.active) return true\n return (item.children ?? []).some(itemHasActiveDescendant)\n}\n\nfunction renderItemContent(item: MTopbarItem, withChevron = false, isOpen = false): ReactNode {\n return (\n <>\n {item.icon ? <span className=\"topbar-icon\">{item.icon}</span> : null}\n <span>{item.label}</span>\n {item.badge ? <span className=\"topbar-badge\">{item.badge}</span> : null}\n {withChevron ? (\n <span className={cn('topbar-chevron', isOpen && 'open')} aria-hidden=\"true\">\n <MChevronDownIcon size=\"sm\" />\n </span>\n ) : null}\n </>\n )\n}\n\nfunction renderDropdownChildren(children: MTopbarItem[]): ReactNode {\n return children.map((child) => {\n if (child.children?.length) {\n return (\n <MDropdownGroup key={getItemKey(child)} label={String(child.label)}>\n {renderDropdownChildren(child.children)}\n </MDropdownGroup>\n )\n }\n\n return (\n <MDropdownItem\n key={getItemKey(child)}\n icon={child.icon}\n label={child.label}\n href={child.href}\n to={child.to}\n onClick={child.onClick}\n color={child.color}\n disabled={child.disabled}\n active={child.active}\n component={child.component}\n className={child.className}\n />\n )\n })\n}\n\nexport function MTopbar({\n items,\n container = 'full',\n padded = true,\n bordered = true,\n sticky = false,\n tone = 'surface',\n justify = 'left',\n size = 'md',\n openOn = 'hover',\n dropdownPlacement = 'bottom-start',\n compactBreakpoint = MShellBreakpoints.compact,\n hidden,\n className,\n style,\n ...rest\n}: MTopbarProps) {\n const hiddenOnCompact = useMaxWidth(compactBreakpoint)\n const [coarsePointer, setCoarsePointer] = useState(false)\n const [openMap, setOpenMap] = useState<Record<string, boolean>>({})\n const [hasOverflow, setHasOverflow] = useState(false)\n const [canScrollLeft, setCanScrollLeft] = useState(false)\n const [canScrollRight, setCanScrollRight] = useState(false)\n const viewportRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const media = window.matchMedia('(pointer: coarse)')\n const sync = () => setCoarsePointer(media.matches)\n\n sync()\n\n if (typeof media.addEventListener === 'function') {\n media.addEventListener('change', sync)\n return () => media.removeEventListener('change', sync)\n }\n\n media.addListener(sync)\n return () => media.removeListener(sync)\n }, [])\n\n useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const updateOverflow = () => {\n const nextHasOverflow = viewport.scrollWidth > viewport.clientWidth + 1\n setHasOverflow(nextHasOverflow)\n setCanScrollLeft(viewport.scrollLeft > 4)\n setCanScrollRight(viewport.scrollLeft + viewport.clientWidth < viewport.scrollWidth - 4)\n }\n\n updateOverflow()\n\n viewport.addEventListener('scroll', updateOverflow, {passive: true})\n\n const observer = new ResizeObserver(updateOverflow)\n observer.observe(viewport)\n Array.from(viewport.children).forEach((child) => observer.observe(child))\n\n return () => {\n viewport.removeEventListener('scroll', updateOverflow)\n observer.disconnect()\n }\n }, [items, justify, size, tone, bordered, padded, container])\n\n const resolvedOpenOn = useMemo(() => (coarsePointer ? 'click' : openOn), [coarsePointer, openOn])\n\n if (hiddenOnCompact) {\n return null\n }\n\n const scrollByAmount = (direction: 'left' | 'right') => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n const amount = Math.max(180, Math.floor(viewport.clientWidth * 0.45))\n viewport.scrollBy({\n left: direction === 'left' ? -amount : amount,\n behavior: 'smooth',\n })\n }\n\n return (\n <nav\n className={cn('topbar', tone, size, bordered && 'bordered', sticky && 'sticky', className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n <MContainer size={container} padded={padded} className=\"topbar-container\">\n <div className={cn('topbar-scroll-shell', hasOverflow && 'overflowing')}>\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'left', !canScrollLeft && 'hidden')}\n onClick={() => scrollByAmount('left')}\n aria-label=\"Scroll topbar left\"\n >\n <MChevronLeftIcon />\n </MButton>\n )}\n\n <div ref={viewportRef} className=\"topbar-viewport\">\n <div className={cn('topbar-list', `justify-${justify}`, hasOverflow && 'overflowing')}>\n {items.map((item) => {\n const itemKey = getItemKey(item)\n const isActive = itemHasActiveDescendant(item)\n const isOpen = !!openMap[itemKey]\n\n if (item.children?.length) {\n if (item.disabled) {\n return (\n <div\n key={itemKey}\n className={cn('topbar-trigger', item.color, 'disabled', item.className)}\n aria-disabled=\"true\"\n >\n {renderItemContent(item, true)}\n </div>\n )\n }\n\n return (\n <MDropdownMenu\n key={itemKey}\n trigger={\n <div\n className={cn(\n 'topbar-trigger',\n item.color,\n isActive && 'active',\n isOpen && 'open',\n item.disabled && 'disabled',\n item.className\n )}\n >\n {renderItemContent(item, true, isOpen)}\n </div>\n }\n openOn={item.openOn ?? resolvedOpenOn}\n onOpenChange={(nextOpen) =>\n setOpenMap((prev) => ({...prev, [itemKey]: nextOpen}))\n }\n placement={dropdownPlacement}\n popoverClassName=\"topbar-dropdown-popover\"\n >\n {renderDropdownChildren(item.children)}\n </MDropdownMenu>\n )\n }\n\n return (\n <MLink\n key={itemKey}\n component={item.component}\n href={item.href}\n to={item.to}\n onClick={item.onClick}\n current={item.active}\n disabled={item.disabled}\n underline=\"none\"\n tone=\"inherit\"\n className={cn(\n 'topbar-link',\n item.color,\n item.className,\n item.active && 'active'\n )}\n >\n {renderItemContent(item)}\n </MLink>\n )\n })}\n </div>\n </div>\n\n {hasOverflow && (\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n shape=\"circle\"\n className={cn('topbar-scroll-button', 'right', !canScrollRight && 'hidden')}\n onClick={() => scrollByAmount('right')}\n aria-label=\"Scroll topbar right\"\n >\n <MChevronRightIcon />\n </MButton>\n )}\n </div>\n </MContainer>\n </nav>\n )\n}\n","import {useId, useMemo, useState} from 'react'\nimport type {KeyboardEvent} from 'react'\nimport type {MTabsItem, MTabsProps} from './MTabs.types'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MTabs.css'\n\ninterface MTabsTriggerProps {\n item: MTabsItem\n isActive: boolean\n tabId: string\n panelId: string\n clickEffect: MTabsProps['clickEffect']\n rippleColor: string | undefined\n onSelect: (value: string) => void\n}\n\n// Keep the tab trigger behavior isolated from the list and panel rendering.\nfunction MTabsTrigger({item, isActive, tabId, panelId, clickEffect, rippleColor, onSelect}: MTabsTriggerProps) {\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLButtonElement>({\n effect: clickEffect,\n disabled: item.disabled,\n centered: true,\n color: rippleColor,\n })\n\n return (\n <button\n type=\"button\"\n id={tabId}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={panelId}\n tabIndex={isActive ? 0 : -1}\n disabled={item.disabled}\n className={cn('tabs-trigger', isActive && 'active', item.disabled && 'disabled', effectClassName)}\n onPointerDown={handlePointerDown}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget)\n }\n }}\n onClick={() => onSelect(item.value)}\n >\n {effectLayer}\n {item.icon && <span className=\"tabs-icon\">{item.icon}</span>}\n <span className=\"tabs-label\">{item.label}</span>\n </button>\n )\n}\n\nexport function MTabs({\n items,\n value,\n defaultValue,\n onValueChange,\n variant = 'underline',\n orientation = 'horizontal',\n size = 'md',\n fullWidth = false,\n showPanels = true,\n panelClassName,\n clickEffect = 'ripple',\n rippleColor,\n className,\n ...rest\n}: MTabsProps) {\n // Pick the first enabled item when the caller does not control the active tab.\n const fallbackValue = useMemo(\n () => defaultValue ?? items.find((item) => !item.disabled)?.value ?? '',\n [defaultValue, items]\n )\n const [internalValue, setInternalValue] = useState(fallbackValue)\n const activeValue = value ?? internalValue\n const activeItem = items.find((item) => item.value === activeValue) ?? items[0]\n const baseId = useId()\n\n // Support both controlled and uncontrolled tab state.\n function selectTab(nextValue: string) {\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n onValueChange?.(nextValue)\n }\n\n // Re-map keyboard navigation depending on the rendered orientation.\n function handleKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const enabledItems = items.filter((item) => !item.disabled)\n const currentIndex = enabledItems.findIndex((item) => item.value === activeItem?.value)\n\n if (currentIndex === -1) {\n return\n }\n\n const nextKeys = orientation === 'vertical' ? ['ArrowDown'] : ['ArrowRight', 'ArrowDown']\n const previousKeys = orientation === 'vertical' ? ['ArrowUp'] : ['ArrowLeft', 'ArrowUp']\n\n if (nextKeys.includes(event.key)) {\n event.preventDefault()\n const nextItem = enabledItems[(currentIndex + 1) % enabledItems.length]\n selectTab(nextItem.value)\n }\n\n if (previousKeys.includes(event.key)) {\n event.preventDefault()\n const nextItem = enabledItems[(currentIndex - 1 + enabledItems.length) % enabledItems.length]\n selectTab(nextItem.value)\n }\n }\n\n return (\n <div className={cn('tabs', variant, orientation, size, fullWidth && 'full-width', className)} {...rest}>\n <div className=\"tabs-list\" role=\"tablist\" aria-orientation={orientation} onKeyDown={handleKeyDown}>\n {items.map((item) => {\n const isActive = item.value === activeItem?.value\n const tabId = `${baseId}-${item.value}-tab`\n const panelId = `${baseId}-${item.value}-panel`\n\n return (\n <MTabsTrigger\n key={item.value}\n item={item}\n isActive={isActive}\n tabId={tabId}\n panelId={panelId}\n clickEffect={clickEffect}\n rippleColor={rippleColor}\n onSelect={selectTab}\n />\n )\n })}\n </div>\n\n {showPanels && activeItem?.content !== undefined && (\n <div\n key={activeItem.value}\n id={`${baseId}-${activeItem.value}-panel`}\n role=\"tabpanel\"\n aria-labelledby={`${baseId}-${activeItem.value}-tab`}\n className={cn('tabs-panel', panelClassName)}\n >\n {activeItem.content}\n </div>\n )}\n </div>\n )\n}\n","import type React from 'react'\nimport type {MSectionProps} from './MSection.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MSection.css'\n\n// Render a semantic page section with predefined spacing and tone.\nexport function MSection({\n as = 'section',\n spacing = 'lg',\n tone = 'default',\n hidden,\n className,\n style,\n children,\n ...rest\n}: MSectionProps) {\n const Component = as\n\n return (\n <Component\n className={cn('section', spacing, tone, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n}\n","import type {MSimpleGridProps} from './MSimpleGrid.types'\nimport {cn} from '../../../utils/cn'\nimport './MSimpleGrid.css'\n\n// Render a simple equal-column grid with a shared default spacing.\nexport function MSimpleGrid({columns = 2, minItemWidth, className, style, children, ...rest}: MSimpleGridProps) {\n return (\n <div\n className={cn('grid', `columns-${columns}`, className)}\n style={{\n ...(minItemWidth ? {'--grid-min-item-width': minItemWidth} : {}),\n ...style,\n }}\n {...rest}\n >\n {children}\n </div>\n )\n}\n","import {Children, cloneElement, isValidElement} from 'react'\nimport type {ReactElement} from 'react'\nimport type {MGridColumns, MGridItemProps, MGridProps} from './MGrid.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\nimport './MGrid.css'\n\ntype GridBreakpoint = 'base' | 'xxl' | 'xl' | 'lg' | 'md' | 'sm'\ntype GridBreakpointSpans = Record<GridBreakpoint, MGridColumns | undefined>\ntype MGridInternalProps = MGridProps & {\n resolvedBase?: MGridColumns\n}\n\nconst gridBreakpointOrder: GridBreakpoint[] = ['base', 'xxl', 'xl', 'lg', 'md', 'sm']\n\nconst hiddenBreakpointMap: Record<string, GridBreakpoint[]> = {\n sm: ['sm'],\n md: ['md', 'sm'],\n lg: ['lg', 'md', 'sm'],\n xl: ['xl', 'lg', 'md', 'sm'],\n '2xl': ['xxl', 'xl', 'lg', 'md', 'sm'],\n}\n\nfunction isGridColumnElement(child: unknown): child is ReactElement<MGridProps | MGridItemProps> {\n if (!isValidElement(child)) {\n return false\n }\n\n if (child.type === MGridItem) {\n return true\n }\n\n return child.type === MGrid && (child.props as MGridProps).type === 'col'\n}\n\nfunction getInheritedSpans(props: Partial<MGridProps>): GridBreakpointSpans {\n const sm = props.sm\n const md = props.md ?? sm\n const lg = props.lg ?? md\n const xl = props.xl ?? lg\n const xxl = props.xxl ?? xl\n\n return {\n base: xxl,\n xxl,\n xl,\n lg,\n md,\n sm,\n }\n}\n\nfunction isHiddenAtBreakpoint(hidden: MGridProps['hidden'], breakpoint: GridBreakpoint) {\n if (hidden === true) {\n return true\n }\n\n if (hidden === undefined || hidden === false || breakpoint === 'base') {\n return false\n }\n\n return hiddenBreakpointMap[hidden]?.includes(breakpoint) ?? false\n}\n\nfunction distributeRemainingColumns(remaining: number, count: number): Array<MGridColumns | undefined> {\n if (count <= 0) {\n return []\n }\n\n if (remaining <= 0) {\n return Array.from({length: count}, () => undefined)\n }\n\n const base = Math.floor(remaining / count)\n const extra = remaining % count\n\n return Array.from({length: count}, (_, index) => {\n const value = base + (index < extra ? 1 : 0)\n return value >= 1 ? (value as MGridColumns) : undefined\n })\n}\n\nfunction resolveAutoSpans(columnProps: Array<Partial<MGridProps>>) {\n const normalized = columnProps.map((props) => getInheritedSpans(props))\n const resolved = normalized.map((spans) => ({...spans}))\n\n for (const breakpoint of gridBreakpointOrder) {\n const autoIndexes: number[] = []\n let usedColumns = 0\n\n normalized.forEach((spans, index) => {\n if (isHiddenAtBreakpoint(columnProps[index].hidden, breakpoint)) {\n resolved[index][breakpoint] = undefined\n return\n }\n\n const value = spans[breakpoint]\n\n if (value) {\n usedColumns += value\n return\n }\n\n autoIndexes.push(index)\n })\n\n const distributed = distributeRemainingColumns(Math.max(12 - usedColumns, 0), autoIndexes.length)\n\n autoIndexes.forEach((columnIndex, autoIndex) => {\n resolved[columnIndex][breakpoint] = distributed[autoIndex]\n })\n }\n\n return resolved\n}\n\n// Render either a responsive row or a responsive column using one shared grid API.\nexport function MGrid({\n type = 'row',\n sm,\n md,\n lg,\n xl,\n xxl,\n resolvedBase,\n hidden,\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n className,\n style,\n children,\n ...rest\n}: MGridInternalProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n const inheritedSpans = getInheritedSpans({sm, md, lg, xl, xxl})\n const baseSpan = resolvedBase ?? inheritedSpans.base\n\n if (type === 'col') {\n return (\n <div\n className={cn(\n 'grid',\n 'col',\n baseSpan ? `span-${baseSpan}` : 'span-auto',\n xxl && `xxl-${xxl}`,\n xl && `xl-${xl}`,\n lg && `lg-${lg}`,\n md && `md-${md}`,\n sm && `sm-${sm}`,\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </div>\n )\n }\n\n const childArray = Children.toArray(children)\n const columnEntries = childArray.flatMap((child, index) => (isGridColumnElement(child) ? [{child, index}] : []))\n const autoColumns = Math.min(Math.max(columnEntries.length || childArray.length, 1), 12)\n const needsResponsiveResolution = columnEntries.some(({child}) => {\n const p = child.props as MGridProps\n return Boolean(p.hidden || p.xxl || p.xl || p.lg || p.md || p.sm)\n })\n const resolvedSpans = needsResponsiveResolution\n ? resolveAutoSpans(columnEntries.map(({child}) => child.props as Partial<MGridProps>))\n : null\n const resolvedChildren =\n needsResponsiveResolution && resolvedSpans\n ? childArray.map((child, childIndex) => {\n const columnIndex = columnEntries.findIndex((entry) => entry.index === childIndex)\n\n if (columnIndex === -1 || !isGridColumnElement(child)) {\n return child\n }\n\n const spans = resolvedSpans[columnIndex]\n\n return cloneElement(child as ReactElement<MGridInternalProps>, {\n resolvedBase: spans.base,\n xxl: spans.xxl,\n xl: spans.xl,\n lg: spans.lg,\n md: spans.md,\n sm: spans.sm,\n })\n })\n : childArray\n\n return (\n <div\n className={cn(\n 'grid',\n 'row',\n needsResponsiveResolution ? 'tracked' : `auto-cols-${autoColumns}`,\n ...getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth: fullWidth ?? true,\n }),\n className\n )}\n style={{...utilityStyle, ...style}}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {resolvedChildren}\n </div>\n )\n}\n\n// Keep MGridItem as a compatibility alias for explicit column declarations.\nexport function MGridItem({sm, md, lg, xl, xxl, ...rest}: MGridItemProps) {\n return <MGrid type=\"col\" sm={sm} md={md} lg={lg} xl={xl} xxl={xxl} {...rest} />\n}\n","import type {MDividerProps} from './MDivider.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MDivider.css'\n\n// Render a semantic divider line between related content blocks.\nexport function MDivider({\n orientation = 'horizontal',\n variant = 'solid',\n hidden,\n className,\n style,\n ...rest\n}: MDividerProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n className={cn('divider', orientation, variant, className)}\n style={style}\n {...getHiddenProps(hidden)}\n {...rest}\n />\n )\n}\n","import {createContext, useContext, useState, useEffect, useCallback, useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronRightIcon, MMenuIcon} from '../../../icons'\nimport {MDropdownMenu, MTooltip} from '../../overlays'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport type {\n MSidebarProps,\n MSidebarHeaderProps,\n MSidebarBodyProps,\n MSidebarNavProps,\n MSidebarItemProps,\n MSidebarGroupProps,\n MSidebarFooterProps,\n MSidebarDividerProps,\n MSidebarMode,\n} from './MSidebar.types'\nimport './MSidebar.css'\n\nconst STORAGE_KEY = 'mineralui-sidebar'\n\ninterface SidebarContextValue {\n mode: MSidebarMode\n mobile: boolean\n mobileOpen: boolean\n canToggle: boolean\n toggleMode: () => void\n}\n\nconst SidebarCtx = createContext<SidebarContextValue>({\n mode: 'expanded',\n mobile: false,\n mobileOpen: false,\n canToggle: false,\n toggleMode: () => {},\n})\n\n// Read shared sidebar state inside slot components.\nfunction useSidebar() {\n return useContext(SidebarCtx)\n}\n\n// Render the sidebar shell and coordinate desktop and mobile behavior.\nexport function MSidebar({\n mode: modeProp = 'auto',\n defaultMode = 'expanded',\n onModeChange,\n persist = false,\n side = 'left',\n tone = 'subtle',\n bordered = true,\n mobileBreakpoint = MShellBreakpoints.mobile,\n compactBreakpoint = MShellBreakpoints.compact,\n className,\n style,\n children,\n}: MSidebarProps) {\n const resolvedCompactBreakpoint = Math.max(compactBreakpoint, mobileBreakpoint)\n const mobile = useMaxWidth(mobileBreakpoint)\n const compactViewport = useMaxWidth(resolvedCompactBreakpoint)\n const compact = !mobile && compactViewport\n const [mobileOpen, setMobileOpen] = useState(false)\n\n const [internalMode, setInternalMode] = useState<MSidebarMode>(() => {\n if (persist) {\n try {\n const v = localStorage.getItem(STORAGE_KEY)\n if (v === 'expanded' || v === 'collapsed') return v\n } catch {\n /* noop */\n }\n }\n\n return defaultMode\n })\n\n const resolvedMode: MSidebarMode = mobile\n ? 'expanded'\n : compact\n ? 'collapsed'\n : modeProp === 'auto'\n ? internalMode\n : modeProp === 'collapsed'\n ? 'collapsed'\n : 'expanded'\n\n // MToggle only the desktop width state. Mobile uses its own overlay flow.\n const toggleMode = useCallback(() => {\n const next: MSidebarMode = resolvedMode === 'expanded' ? 'collapsed' : 'expanded'\n\n setInternalMode(next)\n onModeChange?.(next)\n\n if (persist) {\n try {\n localStorage.setItem(STORAGE_KEY, next)\n } catch {\n /* noop */\n }\n }\n }, [resolvedMode, onModeChange, persist])\n\n const closeMobile = useCallback(() => setMobileOpen(false), [])\n\n // Let Escape close the temporary mobile drawer.\n useEffect(() => {\n if (!mobileOpen) return\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setMobileOpen(false)\n }\n\n document.addEventListener('keydown', handler)\n return () => document.removeEventListener('keydown', handler)\n }, [mobileOpen])\n\n useEffect(() => {\n if (!mobile) {\n setMobileOpen(false)\n }\n }, [mobile])\n\n const canToggle = !mobile && !compact && modeProp === 'auto'\n\n const ctx = useMemo<SidebarContextValue>(\n () => ({mode: resolvedMode, mobile, mobileOpen, canToggle, toggleMode}),\n [resolvedMode, mobile, mobileOpen, canToggle, toggleMode]\n )\n\n const isCollapsed = !mobile && resolvedMode === 'collapsed'\n\n const sidebarCls = cn(\n 'sidebar',\n tone,\n side,\n isCollapsed && 'collapsed',\n compact && 'compact',\n bordered && 'bordered',\n mobile && 'mobile',\n mobile && mobileOpen && 'mobile-open',\n className\n )\n\n return (\n <SidebarCtx.Provider value={ctx}>\n {mobile && mobileOpen && <div className=\"sidebar-backdrop\" onClick={closeMobile} />}\n\n <aside className={sidebarCls} style={style}>\n {children}\n </aside>\n\n {mobile && !mobileOpen && (\n <button\n className={cn('sidebar-hamburger', side)}\n onClick={() => setMobileOpen(true)}\n aria-label=\"Open menu\"\n >\n <span className=\"sidebar-hamburger-icon\" aria-hidden=\"true\">\n <MMenuIcon />\n </span>\n </button>\n )}\n </SidebarCtx.Provider>\n )\n}\n\n// Render the top area with branding and an optional collapse toggle.\nexport function MSidebarHeader({bordered = false, className, children}: MSidebarHeaderProps) {\n const {mode, mobile, canToggle, toggleMode} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n return (\n <div className={cn('sidebar-header', bordered && 'bordered', className)}>\n <div className=\"sidebar-header-content\">{children}</div>\n {canToggle && (\n <MButton\n variant=\"outlined\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={toggleMode}\n aria-label={isCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n className=\"sidebar-toggle\"\n >\n <span className={cn('sidebar-chevron', isCollapsed && 'flipped')}>\n <MChevronRightIcon />\n </span>\n </MButton>\n )}\n </div>\n )\n}\n\n// Wrap the scrollable middle area between header and footer.\nexport function MSidebarBody({className, children}: MSidebarBodyProps) {\n return <div className={cn('sidebar-body', className)}>{children}</div>\n}\n\n// Wrap sidebar links in a navigation landmark.\nexport function MSidebarNav({className, children}: MSidebarNavProps) {\n return <nav className={cn('sidebar-nav', className)}>{children}</nav>\n}\n\n// Render one clickable sidebar row as a link, button or custom component.\nexport function MSidebarItem({\n icon,\n label,\n href,\n to,\n onClick,\n active = false,\n disabled = false,\n badge,\n color,\n component,\n className,\n}: MSidebarItemProps) {\n const {mode, mobile} = useSidebar()\n const isCollapsed = !mobile && mode === 'collapsed'\n\n const Tag = component ?? (href || to ? 'a' : 'button')\n const linkProps = component ? (to ? {to} : href ? {href} : {}) : href ? {href} : to ? {href: to} : {}\n const cls = cn('sidebar-item', active && 'active', disabled && 'disabled', color, className)\n\n return (\n <Tag\n className={cls}\n onClick={disabled ? undefined : onClick}\n aria-disabled={disabled || undefined}\n title={isCollapsed ? label : undefined}\n {...linkProps}\n >\n {icon && <span className=\"sidebar-item-icon\">{icon}</span>}\n {!isCollapsed && (\n <MTooltip content={label} placement=\"top\" className=\"sidebar-item-label-tooltip\">\n <span className=\"sidebar-item-label\">{label}</span>\n </MTooltip>\n )}\n {!isCollapsed && badge && <span className=\"sidebar-item-badge\">{badge}</span>}\n </Tag>\n )\n}\n\n// Group related sidebar items and swap to a dropdown when collapsed.\nexport function MSidebarGroup({\n label,\n icon,\n active = false,\n defaultOpen = true,\n collapsible = true,\n children,\n className,\n}: MSidebarGroupProps) {\n const sidebarCtx = useSidebar()\n const {mode, mobile} = sidebarCtx\n const isCollapsed = !mobile && mode === 'collapsed'\n const [open, setOpen] = useState(defaultOpen)\n\n const expandedCtx = useMemo<SidebarContextValue>(() => ({...sidebarCtx, mode: 'expanded'}), [sidebarCtx])\n\n // Keep expand/collapse local to this group.\n const toggle = () => {\n if (collapsible) setOpen((o) => !o)\n }\n\n if (isCollapsed) {\n const trigger = (\n <span className={cn('sidebar-group-icon collapsed', active && 'active')} title={label}>\n {icon}\n </span>\n )\n\n return (\n <div className={cn('sidebar-group', className)}>\n <MDropdownMenu trigger={trigger} placement=\"right-start\" closeOnSelect openOn=\"hover\">\n <SidebarCtx.Provider value={expandedCtx}>{children}</SidebarCtx.Provider>\n </MDropdownMenu>\n </div>\n )\n }\n\n return (\n <div className={cn('sidebar-group', className)}>\n <button className={cn('sidebar-group-header', active && 'active')} onClick={toggle} aria-expanded={open}>\n {icon && <span className=\"sidebar-group-icon\">{icon}</span>}\n <span className=\"sidebar-group-label\">{label}</span>\n {collapsible && (\n <span className={cn('sidebar-group-arrow', open && 'open')}>\n <MChevronRightIcon />\n </span>\n )}\n </button>\n {open && <div className=\"sidebar-group-items\">{children}</div>}\n </div>\n )\n}\n\n// Render the bottom slot for version info or quick actions.\nexport function MSidebarFooter({bordered = false, className, children}: MSidebarFooterProps) {\n return <div className={cn('sidebar-footer', bordered && 'bordered', className)}>{children}</div>\n}\n\n// Render a spacing-aware divider between sidebar regions.\nexport function MSidebarDivider({className, spacing = 'md'}: MSidebarDividerProps) {\n return <hr className={cn('sidebar-divider', spacing, className)} />\n}\n","import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport type {MBreadcrumbProps} from './MBreadcrumb.types'\nimport './MBreadcrumb.css'\n\n// Render a compact path and collapse the middle when needed.\nexport function MBreadcrumb({items, separator = '/', maxItems, className, ...rest}: MBreadcrumbProps) {\n // Keep the current page visible while shortening deep paths.\n const visible = useMemo(() => {\n if (!maxItems || maxItems >= items.length) return items\n if (maxItems < 2) return [items[items.length - 1]]\n const head = items.slice(0, 1)\n const tail = items.slice(-(maxItems - 1))\n return [...head, null, ...tail]\n }, [items, maxItems])\n\n return (\n <nav aria-label=\"breadcrumb\" className={cn('breadcrumb', className)} {...rest}>\n <ol className=\"trail\">\n {visible.map((item, i) => {\n if (item === null) {\n return (\n <li key=\"ellipsis\" className=\"crumb dots\">\n <span className=\"sep\">{separator}</span>\n <span>&#8230;</span>\n </li>\n )\n }\n\n const isLast = i === visible.length - 1\n\n return (\n <li key={i} className={cn('crumb', isLast && 'active')}>\n {i > 0 && <span className=\"sep\">{separator}</span>}\n {item.href && !isLast ? (\n <a href={item.href} className=\"link\" onClick={item.onClick}>\n {item.label}\n </a>\n ) : item.onClick && !isLast ? (\n <button type=\"button\" className=\"link btn\" onClick={item.onClick}>\n {item.label}\n </button>\n ) : (\n <span className=\"current\" aria-current={isLast ? 'page' : undefined}>\n {item.label}\n </span>\n )}\n </li>\n )\n })}\n </ol>\n </nav>\n )\n}\n","import {forwardRef, Children, isValidElement} from 'react'\nimport type * as React from 'react'\nimport type {MAppShellProps, MBodyProps} from './MAppShell.types'\nimport {cn} from '../../../utils/cn'\nimport {MSidebar} from '../MSidebar'\nimport './MAppShell.css'\n\nexport const MAppShell = forwardRef<HTMLDivElement, MAppShellProps>(function MAppShell(\n {className, children, ...rest},\n ref\n) {\n const sidebarElements: React.ReactNode[] = []\n const otherElements: React.ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && child.type === MSidebar) {\n sidebarElements.push(child)\n } else {\n otherElements.push(child)\n }\n })\n\n return (\n <div ref={ref} className={cn('app-shell', className)} {...rest}>\n {sidebarElements}\n <div className=\"app-main\">{otherElements}</div>\n </div>\n )\n})\n\nexport const MBody = forwardRef<HTMLDivElement, MBodyProps>(function MBody({className, children, ...rest}, ref) {\n return (\n <div ref={ref} className={cn('app-body', className)} {...rest}>\n {children}\n </div>\n )\n})\n"],"mappings":"gdAOA,SAAgB,EAAW,CACvB,OAAO,UACP,SAAS,GACT,SACA,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACA,YACA,QACA,WACA,GAAG,GACa,CAChB,IAAM,EAAe,EAAA,EAAuB,CAAC,QAAM,CAAC,CAEpD,OACI,EAAA,EAAA,KAAC,MAAD,CACI,UAAW,EAAA,EACP,YACA,EACA,GAAU,SACV,GAAG,EAAA,EAA2B,CAC1B,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACH,CAAC,CACF,EACH,CACD,MAAO,CAAC,GAAG,EAAc,GAAG,EAAM,CAClC,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,EAEH,WACC,CAAA,CC1Dd,SAAgB,EAAQ,CACpB,YAAY,OACZ,SAAS,GACT,WAAW,GACX,SAAS,GACT,OAAO,UACP,SAAS,QACT,SACA,YACA,WACA,GAAG,GACU,CACb,OACI,EAAA,EAAA,KAAC,SAAD,CACI,UAAW,EAAA,EAAG,SAAU,EAAM,GAAY,WAAY,GAAU,SAAU,EAAU,CACpF,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,YAEJ,EAAA,EAAA,KAAC,EAAD,CAAY,KAAM,EAAmB,SAAQ,UAAW,EAAA,EAAG,QAAS,UAAU,IAAS,CAClF,WACQ,CAAA,CACR,CAAA,CCpBjB,SAAgB,EAAQ,CACpB,YAAY,OACZ,SAAS,GACT,WAAW,GACX,OAAO,UACP,SACA,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACA,YACA,QACA,WACA,GAAG,GACU,CACb,IAAM,EAAe,EAAA,EAAuB,CAAC,QAAM,CAAC,CAEpD,OACI,EAAA,EAAA,KAAC,SAAD,CACI,UAAW,EAAA,EACP,SACA,EACA,GAAY,WACZ,GAAG,EAAA,EAA2B,CAC1B,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,YACH,CAAC,CACF,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"}
package/dist/layout.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(`./layout-DZiWboju.cjs`),t=require(`./MInline-D9p9Sazp.cjs`),n=require(`./MStack-Cy2GplIA.cjs`),r=require(`./MSurface-C467dVMQ.cjs`),i=require(`./MPagination-73z0sQvf.cjs`);exports.MAppShell=e.t,exports.MBody=e.n,exports.MBreadcrumb=e.r,exports.MContainer=e.C,exports.MDivider=e.f,exports.MFooter=e.x,exports.MGrid=e.p,exports.MGridItem=e.m,exports.MHeader=e.S,exports.MInline=t.t,exports.MNavbar=e.y,exports.MNavs=e.b,exports.MPagination=i.t,exports.MSection=e.g,exports.MSidebar=e.i,exports.MSidebarBody=e.a,exports.MSidebarDivider=e.o,exports.MSidebarFooter=e.s,exports.MSidebarGroup=e.c,exports.MSidebarHeader=e.l,exports.MSidebarItem=e.u,exports.MSidebarNav=e.d,exports.MSimpleGrid=e.h,exports.MStack=n.t,exports.MSurface=r.t,exports.MTabs=e._,exports.MTopbar=e.v;
3
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./layout-rtlHrjDb.cjs`),t=require(`./MInline-CHrh3PHH.cjs`),n=require(`./MStack-Bh-R2opf.cjs`),r=require(`./MSurface-CpiV1-7f.cjs`),i=require(`./MPagination-CZEJMJzZ.cjs`);exports.MAppShell=e.t,exports.MBody=e.n,exports.MBreadcrumb=e.r,exports.MContainer=e.C,exports.MDivider=e.f,exports.MFooter=e.x,exports.MGrid=e.p,exports.MGridItem=e.m,exports.MHeader=e.S,exports.MInline=t.t,exports.MNavbar=e.y,exports.MNavs=e.b,exports.MPagination=i.t,exports.MSection=e.g,exports.MSidebar=e.i,exports.MSidebarBody=e.a,exports.MSidebarDivider=e.o,exports.MSidebarFooter=e.s,exports.MSidebarGroup=e.c,exports.MSidebarHeader=e.l,exports.MSidebarItem=e.u,exports.MSidebarNav=e.d,exports.MSimpleGrid=e.h,exports.MStack=n.t,exports.MSurface=r.t,exports.MTabs=e._,exports.MTopbar=e.v;
package/dist/layout.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {ensureStyles} from './style-runtime.js'
2
2
  ensureStyles()
3
- import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y, v as b, x, y as S } from "./layout-D72Y7VcW.js";
4
- import { t as C } from "./MInline-DA_ehefx.js";
5
- import { t as w } from "./MStack-BWarX5O9.js";
6
- import { t as T } from "./MSurface-DfZ1Zy1-.js";
7
- import { t as E } from "./MPagination-DdT1uNzD.js";
3
+ import { C as e, S as t, _ as n, a as r, b as i, c as a, d as o, f as s, g as c, h as l, i as u, l as d, m as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y, v as b, x, y as S } from "./layout-BpEnTocp.js";
4
+ import { t as C } from "./MInline-CoMhfX5V.js";
5
+ import { t as w } from "./MStack-CSaEbepM.js";
6
+ import { t as T } from "./MSurface-DJYSftdM.js";
7
+ import { t as E } from "./MPagination-CTnaW5AW.js";
8
8
  export { v as MAppShell, p as MBody, g as MBreadcrumb, e as MContainer, s as MDivider, x as MFooter, h as MGrid, f as MGridItem, t as MHeader, C as MInline, S as MNavbar, i as MNavs, E as MPagination, c as MSection, u as MSidebar, r as MSidebarBody, m as MSidebarDivider, _ as MSidebarFooter, a as MSidebarGroup, d as MSidebarHeader, y as MSidebarItem, o as MSidebarNav, l as MSimpleGrid, w as MStack, T as MSurface, n as MTabs, b as MTopbar };
@@ -1,2 +1,2 @@
1
1
  function e({spacing:e,padding:t,fsize:n,mt:r,mb:i,ml:a,mr:o,mx:s,my:c,pt:l,pb:u,pl:d,pr:f,px:p,py:m,fullWidth:h}){return[e!==void 0&&`spacing-${e}`,t!==void 0&&`padding-${t}`,n!==void 0&&`has-fsize`,r!==void 0&&`mt-${r}`,i!==void 0&&`mb-${i}`,a!==void 0&&`ml-${a}`,o!==void 0&&`mr-${o}`,s!==void 0&&`mx-${s}`,c!==void 0&&`my-${c}`,l!==void 0&&`pt-${l}`,u!==void 0&&`pb-${u}`,d!==void 0&&`pl-${d}`,f!==void 0&&`pr-${f}`,p!==void 0&&`px-${p}`,m!==void 0&&`py-${m}`,h&&`full-width`]}function t({fsize:e}){if(!(e==null||e===``))return{"--mineral-layout-fsize":typeof e==`number`?`${e}px`:e}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
2
- //# sourceMappingURL=layoutProps-Ck4VtGm9.cjs.map
2
+ //# sourceMappingURL=layoutProps-B8y2XwHy.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"layoutProps-Ck4VtGm9.cjs","names":[],"sources":["../src/utils/layoutProps.ts"],"sourcesContent":["import type {CSSProperties} from 'react'\n\n// Keep the utility scale in one place so props and CSS stay in sync.\nexport const mineralUtilityScaleValues = ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'] as const\n\nexport type MUtilityScale = (typeof mineralUtilityScaleValues)[number]\n\nexport interface LayoutUtilityProps {\n spacing?: MUtilityScale\n padding?: MUtilityScale\n fsize?: string | number\n mt?: MUtilityScale\n mb?: MUtilityScale\n ml?: MUtilityScale\n mr?: MUtilityScale\n mx?: MUtilityScale\n my?: MUtilityScale\n pt?: MUtilityScale\n pb?: MUtilityScale\n pl?: MUtilityScale\n pr?: MUtilityScale\n px?: MUtilityScale\n py?: MUtilityScale\n fullWidth?: boolean\n}\n\n// Translate spacing and typography utility props into deterministic class names.\nexport function getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n}: LayoutUtilityProps): Array<string | false | undefined> {\n return [\n spacing !== undefined && `spacing-${spacing}`,\n padding !== undefined && `padding-${padding}`,\n fsize !== undefined && 'has-fsize',\n mt !== undefined && `mt-${mt}`,\n mb !== undefined && `mb-${mb}`,\n ml !== undefined && `ml-${ml}`,\n mr !== undefined && `mr-${mr}`,\n mx !== undefined && `mx-${mx}`,\n my !== undefined && `my-${my}`,\n pt !== undefined && `pt-${pt}`,\n pb !== undefined && `pb-${pb}`,\n pl !== undefined && `pl-${pl}`,\n pr !== undefined && `pr-${pr}`,\n px !== undefined && `px-${px}`,\n py !== undefined && `py-${py}`,\n fullWidth && 'full-width',\n ]\n}\n\n// Keep dynamic font sizes in CSS variables so layout helpers can accept any valid CSS length.\nexport function getLayoutUtilityStyles({fsize}: Pick<LayoutUtilityProps, 'fsize'>): CSSProperties | undefined {\n if (fsize === undefined || fsize === null || fsize === '') {\n return undefined\n }\n\n return {\n '--mineral-layout-fsize': typeof fsize === 'number' ? `${fsize}px` : fsize,\n } as CSSProperties\n}\n"],"mappings":"AA2BA,SAAgB,EAA2B,CACvC,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,aACsD,CACtD,MAAO,CACH,IAAY,IAAA,IAAa,WAAW,IACpC,IAAY,IAAA,IAAa,WAAW,IACpC,IAAU,IAAA,IAAa,YACvB,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,GAAa,aAChB,CAIL,SAAgB,EAAuB,CAAC,SAAsE,CACtG,QAAiC,MAAQ,IAAU,IAIvD,MAAO,CACH,yBAA0B,OAAO,GAAU,SAAW,GAAG,EAAM,IAAM,EACxE"}
1
+ {"version":3,"file":"layoutProps-B8y2XwHy.cjs","names":[],"sources":["../src/utils/layoutProps.ts"],"sourcesContent":["import type {CSSProperties} from 'react'\n\n// Keep the utility scale in one place so props and CSS stay in sync.\nexport const mineralUtilityScaleValues = ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'] as const\n\nexport type MUtilityScale = (typeof mineralUtilityScaleValues)[number]\n\nexport interface LayoutUtilityProps {\n spacing?: MUtilityScale\n padding?: MUtilityScale\n fsize?: string | number\n mt?: MUtilityScale\n mb?: MUtilityScale\n ml?: MUtilityScale\n mr?: MUtilityScale\n mx?: MUtilityScale\n my?: MUtilityScale\n pt?: MUtilityScale\n pb?: MUtilityScale\n pl?: MUtilityScale\n pr?: MUtilityScale\n px?: MUtilityScale\n py?: MUtilityScale\n fullWidth?: boolean\n}\n\n// Translate spacing and typography utility props into deterministic class names.\nexport function getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n}: LayoutUtilityProps): Array<string | false | undefined> {\n return [\n spacing !== undefined && `spacing-${spacing}`,\n padding !== undefined && `padding-${padding}`,\n fsize !== undefined && 'has-fsize',\n mt !== undefined && `mt-${mt}`,\n mb !== undefined && `mb-${mb}`,\n ml !== undefined && `ml-${ml}`,\n mr !== undefined && `mr-${mr}`,\n mx !== undefined && `mx-${mx}`,\n my !== undefined && `my-${my}`,\n pt !== undefined && `pt-${pt}`,\n pb !== undefined && `pb-${pb}`,\n pl !== undefined && `pl-${pl}`,\n pr !== undefined && `pr-${pr}`,\n px !== undefined && `px-${px}`,\n py !== undefined && `py-${py}`,\n fullWidth && 'full-width',\n ]\n}\n\n// Keep dynamic font sizes in CSS variables so layout helpers can accept any valid CSS length.\nexport function getLayoutUtilityStyles({fsize}: Pick<LayoutUtilityProps, 'fsize'>): CSSProperties | undefined {\n if (fsize === undefined || fsize === null || fsize === '') {\n return undefined\n }\n\n return {\n '--mineral-layout-fsize': typeof fsize === 'number' ? `${fsize}px` : fsize,\n } as CSSProperties\n}\n"],"mappings":"AA2BA,SAAgB,EAA2B,CACvC,UACA,UACA,QACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,aACsD,CACtD,MAAO,CACH,IAAY,IAAA,IAAa,WAAW,IACpC,IAAY,IAAA,IAAa,WAAW,IACpC,IAAU,IAAA,IAAa,YACvB,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,IAAO,IAAA,IAAa,MAAM,IAC1B,GAAa,aAChB,CAIL,SAAgB,EAAuB,CAAC,SAAsE,CACtG,QAAiC,MAAQ,IAAU,IAIvD,MAAO,CACH,yBAA0B,OAAO,GAAU,SAAW,GAAG,EAAM,IAAM,EACxE"}
@@ -25,4 +25,4 @@ function t({ fsize: e }) {
25
25
  //#endregion
26
26
  export { t as n, e as t };
27
27
 
28
- //# sourceMappingURL=layoutProps-Cl6d1KmH.js.map
28
+ //# sourceMappingURL=layoutProps-CE5-ghKw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layoutProps-Cl6d1KmH.js","names":[],"sources":["../src/utils/layoutProps.ts"],"sourcesContent":["import type {CSSProperties} from 'react'\n\n// Keep the utility scale in one place so props and CSS stay in sync.\nexport const mineralUtilityScaleValues = ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'] as const\n\nexport type MUtilityScale = (typeof mineralUtilityScaleValues)[number]\n\nexport interface LayoutUtilityProps {\n spacing?: MUtilityScale\n padding?: MUtilityScale\n fsize?: string | number\n mt?: MUtilityScale\n mb?: MUtilityScale\n ml?: MUtilityScale\n mr?: MUtilityScale\n mx?: MUtilityScale\n my?: MUtilityScale\n pt?: MUtilityScale\n pb?: MUtilityScale\n pl?: MUtilityScale\n pr?: MUtilityScale\n px?: MUtilityScale\n py?: MUtilityScale\n fullWidth?: boolean\n}\n\n// Translate spacing and typography utility props into deterministic class names.\nexport function getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n}: LayoutUtilityProps): Array<string | false | undefined> {\n return [\n spacing !== undefined && `spacing-${spacing}`,\n padding !== undefined && `padding-${padding}`,\n fsize !== undefined && 'has-fsize',\n mt !== undefined && `mt-${mt}`,\n mb !== undefined && `mb-${mb}`,\n ml !== undefined && `ml-${ml}`,\n mr !== undefined && `mr-${mr}`,\n mx !== undefined && `mx-${mx}`,\n my !== undefined && `my-${my}`,\n pt !== undefined && `pt-${pt}`,\n pb !== undefined && `pb-${pb}`,\n pl !== undefined && `pl-${pl}`,\n pr !== undefined && `pr-${pr}`,\n px !== undefined && `px-${px}`,\n py !== undefined && `py-${py}`,\n fullWidth && 'full-width',\n ]\n}\n\n// Keep dynamic font sizes in CSS variables so layout helpers can accept any valid CSS length.\nexport function getLayoutUtilityStyles({fsize}: Pick<LayoutUtilityProps, 'fsize'>): CSSProperties | undefined {\n if (fsize === undefined || fsize === null || fsize === '') {\n return undefined\n }\n\n return {\n '--mineral-layout-fsize': typeof fsize === 'number' ? `${fsize}px` : fsize,\n } as CSSProperties\n}\n"],"mappings":";AA2BA,SAAgB,EAA2B,EACvC,YACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,gBACsD;AACtD,QAAO;EACH,MAAY,KAAA,KAAa,WAAW;EACpC,MAAY,KAAA,KAAa,WAAW;EACpC,MAAU,KAAA,KAAa;EACvB,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,KAAa;EAChB;;AAIL,SAAgB,EAAuB,EAAC,YAAsE;AACtG,YAAiC,QAAQ,MAAU,IAIvD,QAAO,EACH,0BAA0B,OAAO,KAAU,WAAW,GAAG,EAAM,MAAM,GACxE"}
1
+ {"version":3,"file":"layoutProps-CE5-ghKw.js","names":[],"sources":["../src/utils/layoutProps.ts"],"sourcesContent":["import type {CSSProperties} from 'react'\n\n// Keep the utility scale in one place so props and CSS stay in sync.\nexport const mineralUtilityScaleValues = ['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl'] as const\n\nexport type MUtilityScale = (typeof mineralUtilityScaleValues)[number]\n\nexport interface LayoutUtilityProps {\n spacing?: MUtilityScale\n padding?: MUtilityScale\n fsize?: string | number\n mt?: MUtilityScale\n mb?: MUtilityScale\n ml?: MUtilityScale\n mr?: MUtilityScale\n mx?: MUtilityScale\n my?: MUtilityScale\n pt?: MUtilityScale\n pb?: MUtilityScale\n pl?: MUtilityScale\n pr?: MUtilityScale\n px?: MUtilityScale\n py?: MUtilityScale\n fullWidth?: boolean\n}\n\n// Translate spacing and typography utility props into deterministic class names.\nexport function getLayoutUtilityClassNames({\n spacing,\n padding,\n fsize,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n pt,\n pb,\n pl,\n pr,\n px,\n py,\n fullWidth,\n}: LayoutUtilityProps): Array<string | false | undefined> {\n return [\n spacing !== undefined && `spacing-${spacing}`,\n padding !== undefined && `padding-${padding}`,\n fsize !== undefined && 'has-fsize',\n mt !== undefined && `mt-${mt}`,\n mb !== undefined && `mb-${mb}`,\n ml !== undefined && `ml-${ml}`,\n mr !== undefined && `mr-${mr}`,\n mx !== undefined && `mx-${mx}`,\n my !== undefined && `my-${my}`,\n pt !== undefined && `pt-${pt}`,\n pb !== undefined && `pb-${pb}`,\n pl !== undefined && `pl-${pl}`,\n pr !== undefined && `pr-${pr}`,\n px !== undefined && `px-${px}`,\n py !== undefined && `py-${py}`,\n fullWidth && 'full-width',\n ]\n}\n\n// Keep dynamic font sizes in CSS variables so layout helpers can accept any valid CSS length.\nexport function getLayoutUtilityStyles({fsize}: Pick<LayoutUtilityProps, 'fsize'>): CSSProperties | undefined {\n if (fsize === undefined || fsize === null || fsize === '') {\n return undefined\n }\n\n return {\n '--mineral-layout-fsize': typeof fsize === 'number' ? `${fsize}px` : fsize,\n } as CSSProperties\n}\n"],"mappings":";AA2BA,SAAgB,EAA2B,EACvC,YACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,gBACsD;AACtD,QAAO;EACH,MAAY,KAAA,KAAa,WAAW;EACpC,MAAY,KAAA,KAAa,WAAW;EACpC,MAAU,KAAA,KAAa;EACvB,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,MAAO,KAAA,KAAa,MAAM;EAC1B,KAAa;EAChB;;AAIL,SAAgB,EAAuB,EAAC,YAAsE;AACtG,YAAiC,QAAQ,MAAU,IAIvD,QAAO,EACH,0BAA0B,OAAO,KAAU,WAAW,GAAG,EAAM,MAAM,GACxE"}
@@ -102,4 +102,4 @@ function o(e) {
102
102
  //#endregion
103
103
  export { r as a, n as i, o as n, t as o, i as r, a as t };
104
104
 
105
- //# sourceMappingURL=licensing-Cbpi1toF.js.map
105
+ //# sourceMappingURL=licensing-CwzqhHH9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"licensing-Cbpi1toF.js","names":[],"sources":["../src/utils/useClickOutside.ts","../src/utils/licensing.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n","export type MineralPlan = 'free' | 'pro'\n\nexport interface MineralComponentLicense {\n group: 'cards' | 'charts' | 'data' | 'display' | 'media' | 'icons' | 'layout' | 'feedback'\n plan: MineralPlan\n}\n\nexport const mineralComponentLicenses = {\n MFileManager: {group: 'data', plan: 'pro'},\n MCalendarBoard: {group: 'data', plan: 'pro'},\n MChat: {group: 'data', plan: 'pro'},\n MStepper: {group: 'display', plan: 'pro'},\n MTimeline: {group: 'display', plan: 'pro'},\n MAvatarStack: {group: 'media', plan: 'pro'},\n MIconV2: {group: 'icons', plan: 'pro'},\n MTopbar: {group: 'layout', plan: 'pro'},\n MMasonry: {group: 'media', plan: 'pro'},\n MShowcaseCarousel: {group: 'media', plan: 'pro'},\n MCookieConsent: {group: 'feedback', plan: 'pro'},\n MQrCode: {group: 'display', plan: 'pro'},\n MCardBusiness: {group: 'cards', plan: 'pro'},\n MCardFinance: {group: 'cards', plan: 'pro'},\n MLineChart: {group: 'charts', plan: 'pro'},\n MBarChart: {group: 'charts', plan: 'pro'},\n MAreaChart: {group: 'charts', plan: 'pro'},\n MPieChart: {group: 'charts', plan: 'pro'},\n MSparkline: {group: 'charts', plan: 'pro'},\n} as const satisfies Record<string, MineralComponentLicense>\n\nexport type MineralProComponentName = keyof typeof mineralComponentLicenses\n\nexport const mineralProComponents = Object.keys(mineralComponentLicenses) as MineralProComponentName[]\n\nexport function isMineralProComponent(componentName: string): componentName is MineralProComponentName {\n return Object.prototype.hasOwnProperty.call(mineralComponentLicenses, componentName)\n}\n\nexport function getMineralComponentLicense(componentName: string): MineralComponentLicense | undefined {\n if (!isMineralProComponent(componentName)) {\n return undefined\n }\n\n return mineralComponentLicenses[componentName]\n}\n\nexport function getMineralComponentPlan(componentName: string): MineralPlan {\n return getMineralComponentLicense(componentName)?.plan ?? 'free'\n}\n"],"mappings":";;AAGA,SAAgB,EAAgB,GAAoC,GAA2B;AAC3F,SAAgB;EACZ,IAAM,KAAY,MAA+B;AACzC,IAAC,EAAI,WAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,IAC1D,GAAS;;AAKb,SAFA,SAAS,iBAAiB,aAAa,EAAS,EAChD,SAAS,iBAAiB,cAAc,EAAS,QACpC;AAET,GADA,SAAS,oBAAoB,aAAa,EAAS,EACnD,SAAS,oBAAoB,cAAc,EAAS;;IAEzD,CAAC,GAAK,EAAQ,CAAC;;;;ACTtB,IAAa,IAA2B;CACpC,cAAc;EAAC,OAAO;EAAQ,MAAM;EAAM;CAC1C,gBAAgB;EAAC,OAAO;EAAQ,MAAM;EAAM;CAC5C,OAAO;EAAC,OAAO;EAAQ,MAAM;EAAM;CACnC,UAAU;EAAC,OAAO;EAAW,MAAM;EAAM;CACzC,WAAW;EAAC,OAAO;EAAW,MAAM;EAAM;CAC1C,cAAc;EAAC,OAAO;EAAS,MAAM;EAAM;CAC3C,SAAS;EAAC,OAAO;EAAS,MAAM;EAAM;CACtC,SAAS;EAAC,OAAO;EAAU,MAAM;EAAM;CACvC,UAAU;EAAC,OAAO;EAAS,MAAM;EAAM;CACvC,mBAAmB;EAAC,OAAO;EAAS,MAAM;EAAM;CAChD,gBAAgB;EAAC,OAAO;EAAY,MAAM;EAAM;CAChD,SAAS;EAAC,OAAO;EAAW,MAAM;EAAM;CACxC,eAAe;EAAC,OAAO;EAAS,MAAM;EAAM;CAC5C,cAAc;EAAC,OAAO;EAAS,MAAM;EAAM;CAC3C,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC1C,WAAW;EAAC,OAAO;EAAU,MAAM;EAAM;CACzC,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC1C,WAAW;EAAC,OAAO;EAAU,MAAM;EAAM;CACzC,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC7C,EAIY,IAAuB,OAAO,KAAK,EAAyB;AAEzE,SAAgB,EAAsB,GAAiE;AACnG,QAAO,OAAO,UAAU,eAAe,KAAK,GAA0B,EAAc;;AAGxF,SAAgB,EAA2B,GAA4D;AAC9F,OAAsB,EAAc,CAIzC,QAAO,EAAyB;;AAGpC,SAAgB,EAAwB,GAAoC;AACxE,QAAO,EAA2B,EAAc,EAAE,QAAQ"}
1
+ {"version":3,"file":"licensing-CwzqhHH9.js","names":[],"sources":["../src/utils/useClickOutside.ts","../src/utils/licensing.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n","export type MineralPlan = 'free' | 'pro'\n\nexport interface MineralComponentLicense {\n group: 'cards' | 'charts' | 'data' | 'display' | 'media' | 'icons' | 'layout' | 'feedback'\n plan: MineralPlan\n}\n\nexport const mineralComponentLicenses = {\n MFileManager: {group: 'data', plan: 'pro'},\n MCalendarBoard: {group: 'data', plan: 'pro'},\n MChat: {group: 'data', plan: 'pro'},\n MStepper: {group: 'display', plan: 'pro'},\n MTimeline: {group: 'display', plan: 'pro'},\n MAvatarStack: {group: 'media', plan: 'pro'},\n MIconV2: {group: 'icons', plan: 'pro'},\n MTopbar: {group: 'layout', plan: 'pro'},\n MMasonry: {group: 'media', plan: 'pro'},\n MShowcaseCarousel: {group: 'media', plan: 'pro'},\n MCookieConsent: {group: 'feedback', plan: 'pro'},\n MQrCode: {group: 'display', plan: 'pro'},\n MCardBusiness: {group: 'cards', plan: 'pro'},\n MCardFinance: {group: 'cards', plan: 'pro'},\n MLineChart: {group: 'charts', plan: 'pro'},\n MBarChart: {group: 'charts', plan: 'pro'},\n MAreaChart: {group: 'charts', plan: 'pro'},\n MPieChart: {group: 'charts', plan: 'pro'},\n MSparkline: {group: 'charts', plan: 'pro'},\n} as const satisfies Record<string, MineralComponentLicense>\n\nexport type MineralProComponentName = keyof typeof mineralComponentLicenses\n\nexport const mineralProComponents = Object.keys(mineralComponentLicenses) as MineralProComponentName[]\n\nexport function isMineralProComponent(componentName: string): componentName is MineralProComponentName {\n return Object.prototype.hasOwnProperty.call(mineralComponentLicenses, componentName)\n}\n\nexport function getMineralComponentLicense(componentName: string): MineralComponentLicense | undefined {\n if (!isMineralProComponent(componentName)) {\n return undefined\n }\n\n return mineralComponentLicenses[componentName]\n}\n\nexport function getMineralComponentPlan(componentName: string): MineralPlan {\n return getMineralComponentLicense(componentName)?.plan ?? 'free'\n}\n"],"mappings":";;AAGA,SAAgB,EAAgB,GAAoC,GAA2B;AAC3F,SAAgB;EACZ,IAAM,KAAY,MAA+B;AACzC,IAAC,EAAI,WAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,IAC1D,GAAS;;AAKb,SAFA,SAAS,iBAAiB,aAAa,EAAS,EAChD,SAAS,iBAAiB,cAAc,EAAS,QACpC;AAET,GADA,SAAS,oBAAoB,aAAa,EAAS,EACnD,SAAS,oBAAoB,cAAc,EAAS;;IAEzD,CAAC,GAAK,EAAQ,CAAC;;;;ACTtB,IAAa,IAA2B;CACpC,cAAc;EAAC,OAAO;EAAQ,MAAM;EAAM;CAC1C,gBAAgB;EAAC,OAAO;EAAQ,MAAM;EAAM;CAC5C,OAAO;EAAC,OAAO;EAAQ,MAAM;EAAM;CACnC,UAAU;EAAC,OAAO;EAAW,MAAM;EAAM;CACzC,WAAW;EAAC,OAAO;EAAW,MAAM;EAAM;CAC1C,cAAc;EAAC,OAAO;EAAS,MAAM;EAAM;CAC3C,SAAS;EAAC,OAAO;EAAS,MAAM;EAAM;CACtC,SAAS;EAAC,OAAO;EAAU,MAAM;EAAM;CACvC,UAAU;EAAC,OAAO;EAAS,MAAM;EAAM;CACvC,mBAAmB;EAAC,OAAO;EAAS,MAAM;EAAM;CAChD,gBAAgB;EAAC,OAAO;EAAY,MAAM;EAAM;CAChD,SAAS;EAAC,OAAO;EAAW,MAAM;EAAM;CACxC,eAAe;EAAC,OAAO;EAAS,MAAM;EAAM;CAC5C,cAAc;EAAC,OAAO;EAAS,MAAM;EAAM;CAC3C,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC1C,WAAW;EAAC,OAAO;EAAU,MAAM;EAAM;CACzC,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC1C,WAAW;EAAC,OAAO;EAAU,MAAM;EAAM;CACzC,YAAY;EAAC,OAAO;EAAU,MAAM;EAAM;CAC7C,EAIY,IAAuB,OAAO,KAAK,EAAyB;AAEzE,SAAgB,EAAsB,GAAiE;AACnG,QAAO,OAAO,UAAU,eAAe,KAAK,GAA0B,EAAc;;AAGxF,SAAgB,EAA2B,GAA4D;AAC9F,OAAsB,EAAc,CAIzC,QAAO,EAAyB;;AAGpC,SAAgB,EAAwB,GAAoC;AACxE,QAAO,EAA2B,EAAc,EAAE,QAAQ"}
@@ -0,0 +1,2 @@
1
+ require(`./core-AKWkE8Bx.cjs`);let e=require(`react`);function t(t,n){(0,e.useEffect)(()=>{let e=e=>{!t.current||t.current.contains(e.target)||n()};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[t,n])}var n={MFileManager:{group:`data`,plan:`pro`},MCalendarBoard:{group:`data`,plan:`pro`},MChat:{group:`data`,plan:`pro`},MStepper:{group:`display`,plan:`pro`},MTimeline:{group:`display`,plan:`pro`},MAvatarStack:{group:`media`,plan:`pro`},MIconV2:{group:`icons`,plan:`pro`},MTopbar:{group:`layout`,plan:`pro`},MMasonry:{group:`media`,plan:`pro`},MShowcaseCarousel:{group:`media`,plan:`pro`},MCookieConsent:{group:`feedback`,plan:`pro`},MQrCode:{group:`display`,plan:`pro`},MCardBusiness:{group:`cards`,plan:`pro`},MCardFinance:{group:`cards`,plan:`pro`},MLineChart:{group:`charts`,plan:`pro`},MBarChart:{group:`charts`,plan:`pro`},MAreaChart:{group:`charts`,plan:`pro`},MPieChart:{group:`charts`,plan:`pro`},MSparkline:{group:`charts`,plan:`pro`}},r=Object.keys(n);function i(e){return Object.prototype.hasOwnProperty.call(n,e)}function a(e){if(i(e))return n[e]}function o(e){return a(e)?.plan??`free`}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
2
+ //# sourceMappingURL=licensing-ezfo7ZTh.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"licensing-JchPJhVY.cjs","names":[],"sources":["../src/utils/useClickOutside.ts","../src/utils/licensing.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n","export type MineralPlan = 'free' | 'pro'\n\nexport interface MineralComponentLicense {\n group: 'cards' | 'charts' | 'data' | 'display' | 'media' | 'icons' | 'layout' | 'feedback'\n plan: MineralPlan\n}\n\nexport const mineralComponentLicenses = {\n MFileManager: {group: 'data', plan: 'pro'},\n MCalendarBoard: {group: 'data', plan: 'pro'},\n MChat: {group: 'data', plan: 'pro'},\n MStepper: {group: 'display', plan: 'pro'},\n MTimeline: {group: 'display', plan: 'pro'},\n MAvatarStack: {group: 'media', plan: 'pro'},\n MIconV2: {group: 'icons', plan: 'pro'},\n MTopbar: {group: 'layout', plan: 'pro'},\n MMasonry: {group: 'media', plan: 'pro'},\n MShowcaseCarousel: {group: 'media', plan: 'pro'},\n MCookieConsent: {group: 'feedback', plan: 'pro'},\n MQrCode: {group: 'display', plan: 'pro'},\n MCardBusiness: {group: 'cards', plan: 'pro'},\n MCardFinance: {group: 'cards', plan: 'pro'},\n MLineChart: {group: 'charts', plan: 'pro'},\n MBarChart: {group: 'charts', plan: 'pro'},\n MAreaChart: {group: 'charts', plan: 'pro'},\n MPieChart: {group: 'charts', plan: 'pro'},\n MSparkline: {group: 'charts', plan: 'pro'},\n} as const satisfies Record<string, MineralComponentLicense>\n\nexport type MineralProComponentName = keyof typeof mineralComponentLicenses\n\nexport const mineralProComponents = Object.keys(mineralComponentLicenses) as MineralProComponentName[]\n\nexport function isMineralProComponent(componentName: string): componentName is MineralProComponentName {\n return Object.prototype.hasOwnProperty.call(mineralComponentLicenses, componentName)\n}\n\nexport function getMineralComponentLicense(componentName: string): MineralComponentLicense | undefined {\n if (!isMineralProComponent(componentName)) {\n return undefined\n }\n\n return mineralComponentLicenses[componentName]\n}\n\nexport function getMineralComponentPlan(componentName: string): MineralPlan {\n return getMineralComponentLicense(componentName)?.plan ?? 'free'\n}\n"],"mappings":"uDAGA,SAAgB,EAAgB,EAAoC,EAA2B,EAC3F,EAAA,EAAA,eAAgB,CACZ,IAAM,EAAY,GAA+B,CACzC,CAAC,EAAI,SAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,EAC1D,GAAS,EAKb,OAFA,SAAS,iBAAiB,YAAa,EAAS,CAChD,SAAS,iBAAiB,aAAc,EAAS,KACpC,CACT,SAAS,oBAAoB,YAAa,EAAS,CACnD,SAAS,oBAAoB,aAAc,EAAS,GAEzD,CAAC,EAAK,EAAQ,CAAC,CCTtB,IAAa,EAA2B,CACpC,aAAc,CAAC,MAAO,OAAQ,KAAM,MAAM,CAC1C,eAAgB,CAAC,MAAO,OAAQ,KAAM,MAAM,CAC5C,MAAO,CAAC,MAAO,OAAQ,KAAM,MAAM,CACnC,SAAU,CAAC,MAAO,UAAW,KAAM,MAAM,CACzC,UAAW,CAAC,MAAO,UAAW,KAAM,MAAM,CAC1C,aAAc,CAAC,MAAO,QAAS,KAAM,MAAM,CAC3C,QAAS,CAAC,MAAO,QAAS,KAAM,MAAM,CACtC,QAAS,CAAC,MAAO,SAAU,KAAM,MAAM,CACvC,SAAU,CAAC,MAAO,QAAS,KAAM,MAAM,CACvC,kBAAmB,CAAC,MAAO,QAAS,KAAM,MAAM,CAChD,eAAgB,CAAC,MAAO,WAAY,KAAM,MAAM,CAChD,QAAS,CAAC,MAAO,UAAW,KAAM,MAAM,CACxC,cAAe,CAAC,MAAO,QAAS,KAAM,MAAM,CAC5C,aAAc,CAAC,MAAO,QAAS,KAAM,MAAM,CAC3C,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC1C,UAAW,CAAC,MAAO,SAAU,KAAM,MAAM,CACzC,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC1C,UAAW,CAAC,MAAO,SAAU,KAAM,MAAM,CACzC,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC7C,CAIY,EAAuB,OAAO,KAAK,EAAyB,CAEzE,SAAgB,EAAsB,EAAiE,CACnG,OAAO,OAAO,UAAU,eAAe,KAAK,EAA0B,EAAc,CAGxF,SAAgB,EAA2B,EAA4D,CAC9F,KAAsB,EAAc,CAIzC,OAAO,EAAyB,GAGpC,SAAgB,EAAwB,EAAoC,CACxE,OAAO,EAA2B,EAAc,EAAE,MAAQ"}
1
+ {"version":3,"file":"licensing-ezfo7ZTh.cjs","names":[],"sources":["../src/utils/useClickOutside.ts","../src/utils/licensing.ts"],"sourcesContent":["import {useEffect, type RefObject} from 'react'\n\n// Trigger a callback when pointer interaction happens outside the referenced element.\nexport function useClickOutside(ref: RefObject<HTMLElement | null>, handler: () => void): void {\n useEffect(() => {\n const listener = (e: MouseEvent | TouchEvent) => {\n if (!ref.current || ref.current.contains(e.target as Node)) return\n handler()\n }\n\n document.addEventListener('mousedown', listener)\n document.addEventListener('touchstart', listener)\n return () => {\n document.removeEventListener('mousedown', listener)\n document.removeEventListener('touchstart', listener)\n }\n }, [ref, handler])\n}\n","export type MineralPlan = 'free' | 'pro'\n\nexport interface MineralComponentLicense {\n group: 'cards' | 'charts' | 'data' | 'display' | 'media' | 'icons' | 'layout' | 'feedback'\n plan: MineralPlan\n}\n\nexport const mineralComponentLicenses = {\n MFileManager: {group: 'data', plan: 'pro'},\n MCalendarBoard: {group: 'data', plan: 'pro'},\n MChat: {group: 'data', plan: 'pro'},\n MStepper: {group: 'display', plan: 'pro'},\n MTimeline: {group: 'display', plan: 'pro'},\n MAvatarStack: {group: 'media', plan: 'pro'},\n MIconV2: {group: 'icons', plan: 'pro'},\n MTopbar: {group: 'layout', plan: 'pro'},\n MMasonry: {group: 'media', plan: 'pro'},\n MShowcaseCarousel: {group: 'media', plan: 'pro'},\n MCookieConsent: {group: 'feedback', plan: 'pro'},\n MQrCode: {group: 'display', plan: 'pro'},\n MCardBusiness: {group: 'cards', plan: 'pro'},\n MCardFinance: {group: 'cards', plan: 'pro'},\n MLineChart: {group: 'charts', plan: 'pro'},\n MBarChart: {group: 'charts', plan: 'pro'},\n MAreaChart: {group: 'charts', plan: 'pro'},\n MPieChart: {group: 'charts', plan: 'pro'},\n MSparkline: {group: 'charts', plan: 'pro'},\n} as const satisfies Record<string, MineralComponentLicense>\n\nexport type MineralProComponentName = keyof typeof mineralComponentLicenses\n\nexport const mineralProComponents = Object.keys(mineralComponentLicenses) as MineralProComponentName[]\n\nexport function isMineralProComponent(componentName: string): componentName is MineralProComponentName {\n return Object.prototype.hasOwnProperty.call(mineralComponentLicenses, componentName)\n}\n\nexport function getMineralComponentLicense(componentName: string): MineralComponentLicense | undefined {\n if (!isMineralProComponent(componentName)) {\n return undefined\n }\n\n return mineralComponentLicenses[componentName]\n}\n\nexport function getMineralComponentPlan(componentName: string): MineralPlan {\n return getMineralComponentLicense(componentName)?.plan ?? 'free'\n}\n"],"mappings":"sDAGA,SAAgB,EAAgB,EAAoC,EAA2B,EAC3F,EAAA,EAAA,eAAgB,CACZ,IAAM,EAAY,GAA+B,CACzC,CAAC,EAAI,SAAW,EAAI,QAAQ,SAAS,EAAE,OAAe,EAC1D,GAAS,EAKb,OAFA,SAAS,iBAAiB,YAAa,EAAS,CAChD,SAAS,iBAAiB,aAAc,EAAS,KACpC,CACT,SAAS,oBAAoB,YAAa,EAAS,CACnD,SAAS,oBAAoB,aAAc,EAAS,GAEzD,CAAC,EAAK,EAAQ,CAAC,CCTtB,IAAa,EAA2B,CACpC,aAAc,CAAC,MAAO,OAAQ,KAAM,MAAM,CAC1C,eAAgB,CAAC,MAAO,OAAQ,KAAM,MAAM,CAC5C,MAAO,CAAC,MAAO,OAAQ,KAAM,MAAM,CACnC,SAAU,CAAC,MAAO,UAAW,KAAM,MAAM,CACzC,UAAW,CAAC,MAAO,UAAW,KAAM,MAAM,CAC1C,aAAc,CAAC,MAAO,QAAS,KAAM,MAAM,CAC3C,QAAS,CAAC,MAAO,QAAS,KAAM,MAAM,CACtC,QAAS,CAAC,MAAO,SAAU,KAAM,MAAM,CACvC,SAAU,CAAC,MAAO,QAAS,KAAM,MAAM,CACvC,kBAAmB,CAAC,MAAO,QAAS,KAAM,MAAM,CAChD,eAAgB,CAAC,MAAO,WAAY,KAAM,MAAM,CAChD,QAAS,CAAC,MAAO,UAAW,KAAM,MAAM,CACxC,cAAe,CAAC,MAAO,QAAS,KAAM,MAAM,CAC5C,aAAc,CAAC,MAAO,QAAS,KAAM,MAAM,CAC3C,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC1C,UAAW,CAAC,MAAO,SAAU,KAAM,MAAM,CACzC,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC1C,UAAW,CAAC,MAAO,SAAU,KAAM,MAAM,CACzC,WAAY,CAAC,MAAO,SAAU,KAAM,MAAM,CAC7C,CAIY,EAAuB,OAAO,KAAK,EAAyB,CAEzE,SAAgB,EAAsB,EAAiE,CACnG,OAAO,OAAO,UAAU,eAAe,KAAK,EAA0B,EAAc,CAGxF,SAAgB,EAA2B,EAA4D,CAC9F,KAAsB,EAAc,CAIzC,OAAO,EAAyB,GAGpC,SAAgB,EAAwB,EAAoC,CACxE,OAAO,EAA2B,EAAc,EAAE,MAAQ"}
@@ -0,0 +1,2 @@
1
+ require(`./core-AKWkE8Bx.cjs`);let e=require(`react`);function t(){if(typeof document<`u`){let e=document.documentElement.lang?.trim();if(e)return e}return typeof navigator<`u`&&(navigator.language||navigator.languages?.[0])||`en`}function n(n){let[r,i]=(0,e.useState)(()=>n||t());return(0,e.useEffect)(()=>{if(n){i(n);return}if(typeof document>`u`)return;let e=()=>i(t());e();let r=new MutationObserver(e);return r.observe(document.documentElement,{attributes:!0,attributeFilter:[`lang`]}),window.addEventListener(`languagechange`,e),()=>{r.disconnect(),window.removeEventListener(`languagechange`,e)}},[n]),r}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
2
+ //# sourceMappingURL=locale-CZyqh3ON.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"locale-DIwV_GfN.cjs","names":[],"sources":["../src/utils/locale.ts"],"sourcesContent":["import {useEffect, useState} from 'react'\n\nexport function resolveRuntimeLocale(): string {\n if (typeof document !== 'undefined') {\n const lang = document.documentElement.lang?.trim()\n if (lang) return lang\n }\n\n if (typeof navigator !== 'undefined') {\n return navigator.language || navigator.languages?.[0] || 'en'\n }\n\n return 'en'\n}\n\n// React to MI18nProvider lang updates without requiring direct provider access.\nexport function useDocumentLocale(explicitLocale?: string): string {\n const [locale, setLocale] = useState(() => explicitLocale || resolveRuntimeLocale())\n\n useEffect(() => {\n if (explicitLocale) {\n setLocale(explicitLocale)\n return\n }\n\n if (typeof document === 'undefined') return\n\n const update = () => setLocale(resolveRuntimeLocale())\n update()\n\n const observer = new MutationObserver(update)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n\n window.addEventListener('languagechange', update)\n\n return () => {\n observer.disconnect()\n window.removeEventListener('languagechange', update)\n }\n }, [explicitLocale])\n\n return locale\n}\n"],"mappings":"uDAEA,SAAgB,GAA+B,CAC3C,GAAI,OAAO,SAAa,IAAa,CACjC,IAAM,EAAO,SAAS,gBAAgB,MAAM,MAAM,CAClD,GAAI,EAAM,OAAO,EAOrB,OAJI,OAAO,UAAc,MACd,UAAU,UAAY,UAAU,YAAY,KAGhD,KAIX,SAAgB,EAAkB,EAAiC,CAC/D,GAAM,CAAC,EAAQ,IAAA,EAAA,EAAA,cAA4B,GAAkB,GAAsB,CAAC,CA2BpF,OAzBA,EAAA,EAAA,eAAgB,CACZ,GAAI,EAAgB,CAChB,EAAU,EAAe,CACzB,OAGJ,GAAI,OAAO,SAAa,IAAa,OAErC,IAAM,MAAe,EAAU,GAAsB,CAAC,CACtD,GAAQ,CAER,IAAM,EAAW,IAAI,iBAAiB,EAAO,CAQ7C,OAPA,EAAS,QAAQ,SAAS,gBAAiB,CACvC,WAAY,GACZ,gBAAiB,CAAC,OAAO,CAC5B,CAAC,CAEF,OAAO,iBAAiB,iBAAkB,EAAO,KAEpC,CACT,EAAS,YAAY,CACrB,OAAO,oBAAoB,iBAAkB,EAAO,GAEzD,CAAC,EAAe,CAAC,CAEb"}
1
+ {"version":3,"file":"locale-CZyqh3ON.cjs","names":[],"sources":["../src/utils/locale.ts"],"sourcesContent":["import {useEffect, useState} from 'react'\n\nexport function resolveRuntimeLocale(): string {\n if (typeof document !== 'undefined') {\n const lang = document.documentElement.lang?.trim()\n if (lang) return lang\n }\n\n if (typeof navigator !== 'undefined') {\n return navigator.language || navigator.languages?.[0] || 'en'\n }\n\n return 'en'\n}\n\n// React to MI18nProvider lang updates without requiring direct provider access.\nexport function useDocumentLocale(explicitLocale?: string): string {\n const [locale, setLocale] = useState(() => explicitLocale || resolveRuntimeLocale())\n\n useEffect(() => {\n if (explicitLocale) {\n setLocale(explicitLocale)\n return\n }\n\n if (typeof document === 'undefined') return\n\n const update = () => setLocale(resolveRuntimeLocale())\n update()\n\n const observer = new MutationObserver(update)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n\n window.addEventListener('languagechange', update)\n\n return () => {\n observer.disconnect()\n window.removeEventListener('languagechange', update)\n }\n }, [explicitLocale])\n\n return locale\n}\n"],"mappings":"sDAEA,SAAgB,GAA+B,CAC3C,GAAI,OAAO,SAAa,IAAa,CACjC,IAAM,EAAO,SAAS,gBAAgB,MAAM,MAAM,CAClD,GAAI,EAAM,OAAO,EAOrB,OAJI,OAAO,UAAc,MACd,UAAU,UAAY,UAAU,YAAY,KAGhD,KAIX,SAAgB,EAAkB,EAAiC,CAC/D,GAAM,CAAC,EAAQ,IAAA,EAAA,EAAA,cAA4B,GAAkB,GAAsB,CAAC,CA2BpF,OAzBA,EAAA,EAAA,eAAgB,CACZ,GAAI,EAAgB,CAChB,EAAU,EAAe,CACzB,OAGJ,GAAI,OAAO,SAAa,IAAa,OAErC,IAAM,MAAe,EAAU,GAAsB,CAAC,CACtD,GAAQ,CAER,IAAM,EAAW,IAAI,iBAAiB,EAAO,CAQ7C,OAPA,EAAS,QAAQ,SAAS,gBAAiB,CACvC,WAAY,GACZ,gBAAiB,CAAC,OAAO,CAC5B,CAAC,CAEF,OAAO,iBAAiB,iBAAkB,EAAO,KAEpC,CACT,EAAS,YAAY,CACrB,OAAO,oBAAoB,iBAAkB,EAAO,GAEzD,CAAC,EAAe,CAAC,CAEb"}
@@ -29,4 +29,4 @@ function r(r) {
29
29
  //#endregion
30
30
  export { r as t };
31
31
 
32
- //# sourceMappingURL=locale-BNyzqXAU.js.map
32
+ //# sourceMappingURL=locale-JX_gX03k.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locale-BNyzqXAU.js","names":[],"sources":["../src/utils/locale.ts"],"sourcesContent":["import {useEffect, useState} from 'react'\n\nexport function resolveRuntimeLocale(): string {\n if (typeof document !== 'undefined') {\n const lang = document.documentElement.lang?.trim()\n if (lang) return lang\n }\n\n if (typeof navigator !== 'undefined') {\n return navigator.language || navigator.languages?.[0] || 'en'\n }\n\n return 'en'\n}\n\n// React to MI18nProvider lang updates without requiring direct provider access.\nexport function useDocumentLocale(explicitLocale?: string): string {\n const [locale, setLocale] = useState(() => explicitLocale || resolveRuntimeLocale())\n\n useEffect(() => {\n if (explicitLocale) {\n setLocale(explicitLocale)\n return\n }\n\n if (typeof document === 'undefined') return\n\n const update = () => setLocale(resolveRuntimeLocale())\n update()\n\n const observer = new MutationObserver(update)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n\n window.addEventListener('languagechange', update)\n\n return () => {\n observer.disconnect()\n window.removeEventListener('languagechange', update)\n }\n }, [explicitLocale])\n\n return locale\n}\n"],"mappings":";;AAEA,SAAgB,IAA+B;AAC3C,KAAI,OAAO,WAAa,KAAa;EACjC,IAAM,IAAO,SAAS,gBAAgB,MAAM,MAAM;AAClD,MAAI,EAAM,QAAO;;AAOrB,QAJI,OAAO,YAAc,QACd,UAAU,YAAY,UAAU,YAAY,OAGhD;;AAIX,SAAgB,EAAkB,GAAiC;CAC/D,IAAM,CAAC,GAAQ,KAAa,QAAe,KAAkB,GAAsB,CAAC;AA2BpF,QAzBA,QAAgB;AACZ,MAAI,GAAgB;AAChB,KAAU,EAAe;AACzB;;AAGJ,MAAI,OAAO,WAAa,IAAa;EAErC,IAAM,UAAe,EAAU,GAAsB,CAAC;AACtD,KAAQ;EAER,IAAM,IAAW,IAAI,iBAAiB,EAAO;AAQ7C,SAPA,EAAS,QAAQ,SAAS,iBAAiB;GACvC,YAAY;GACZ,iBAAiB,CAAC,OAAO;GAC5B,CAAC,EAEF,OAAO,iBAAiB,kBAAkB,EAAO,QAEpC;AAET,GADA,EAAS,YAAY,EACrB,OAAO,oBAAoB,kBAAkB,EAAO;;IAEzD,CAAC,EAAe,CAAC,EAEb"}
1
+ {"version":3,"file":"locale-JX_gX03k.js","names":[],"sources":["../src/utils/locale.ts"],"sourcesContent":["import {useEffect, useState} from 'react'\n\nexport function resolveRuntimeLocale(): string {\n if (typeof document !== 'undefined') {\n const lang = document.documentElement.lang?.trim()\n if (lang) return lang\n }\n\n if (typeof navigator !== 'undefined') {\n return navigator.language || navigator.languages?.[0] || 'en'\n }\n\n return 'en'\n}\n\n// React to MI18nProvider lang updates without requiring direct provider access.\nexport function useDocumentLocale(explicitLocale?: string): string {\n const [locale, setLocale] = useState(() => explicitLocale || resolveRuntimeLocale())\n\n useEffect(() => {\n if (explicitLocale) {\n setLocale(explicitLocale)\n return\n }\n\n if (typeof document === 'undefined') return\n\n const update = () => setLocale(resolveRuntimeLocale())\n update()\n\n const observer = new MutationObserver(update)\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['lang'],\n })\n\n window.addEventListener('languagechange', update)\n\n return () => {\n observer.disconnect()\n window.removeEventListener('languagechange', update)\n }\n }, [explicitLocale])\n\n return locale\n}\n"],"mappings":";;AAEA,SAAgB,IAA+B;AAC3C,KAAI,OAAO,WAAa,KAAa;EACjC,IAAM,IAAO,SAAS,gBAAgB,MAAM,MAAM;AAClD,MAAI,EAAM,QAAO;;AAOrB,QAJI,OAAO,YAAc,QACd,UAAU,YAAY,UAAU,YAAY,OAGhD;;AAIX,SAAgB,EAAkB,GAAiC;CAC/D,IAAM,CAAC,GAAQ,KAAa,QAAe,KAAkB,GAAsB,CAAC;AA2BpF,QAzBA,QAAgB;AACZ,MAAI,GAAgB;AAChB,KAAU,EAAe;AACzB;;AAGJ,MAAI,OAAO,WAAa,IAAa;EAErC,IAAM,UAAe,EAAU,GAAsB,CAAC;AACtD,KAAQ;EAER,IAAM,IAAW,IAAI,iBAAiB,EAAO;AAQ7C,SAPA,EAAS,QAAQ,SAAS,iBAAiB;GACvC,YAAY;GACZ,iBAAiB,CAAC,OAAO;GAC5B,CAAC,EAEF,OAAO,iBAAiB,kBAAkB,EAAO,QAEpC;AAET,GADA,EAAS,YAAY,EACrB,OAAO,oBAAoB,kBAAkB,EAAO;;IAEzD,CAAC,EAAe,CAAC,EAEb"}
@@ -1,11 +1,11 @@
1
- import { r as e } from "./theme-KYwqDZxJ.js";
2
- import { Fi as t, Pi as n } from "./icons-DlNO04xH.js";
3
- import { t as r } from "./cn-CUSXNnjF.js";
4
- import { t as i } from "./useInteractionEffect-ClkU3aH5.js";
5
- import { t as a } from "./MButton-BpSZUhpY.js";
6
- import { i as o, n as s, r as c } from "./MSkeleton-Bqq_XJn8.js";
7
- import { a as l, i as u, n as d, o as f, r as p, s as m, t as h } from "./MImage-BQs91GK-.js";
8
- import { t as g } from "./MAvatar-CnBVN71i.js";
1
+ import { r as e } from "./theme-D_f-cmSA.js";
2
+ import { Fi as t, Pi as n } from "./icons-CfpYxnfg.js";
3
+ import { t as r } from "./cn-YER3QsV1.js";
4
+ import { t as i } from "./useInteractionEffect-DtpbVd77.js";
5
+ import { t as a } from "./MButton-y9qXhhGt.js";
6
+ import { i as o, n as s, r as c } from "./MSkeleton-DGhtNmpI.js";
7
+ import { a as l, i as u, n as d, o as f, r as p, s as m, t as h } from "./MImage-gwFphZk2.js";
8
+ import { t as g } from "./MAvatar-BHASnoyu.js";
9
9
  import { Children as _, useCallback as v, useEffect as y, useMemo as b, useRef as x, useState as S } from "react";
10
10
  import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
11
11
  //#region src/components/media/MGallery/MGallery.tsx
@@ -428,4 +428,4 @@ function z({ items: t, max: n = 5, size: i = "sm", color: a = "primary", hidden:
428
428
  //#endregion
429
429
  export { k as a, F as i, R as n, O as o, L as r, E as s, z as t };
430
430
 
431
- //# sourceMappingURL=media-BlGY91Na.js.map
431
+ //# sourceMappingURL=media-C3M0npGW.js.map