@banzamel/mineralui 2.1.1 → 2.1.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 (263) hide show
  1. package/README.md +1 -1
  2. package/dist/{MAvatar-BcO8hMnU.js → MAvatar-DtJCj3dD.js} +1 -1
  3. package/dist/{MAvatar-BcO8hMnU.js.map → MAvatar-DtJCj3dD.js.map} +1 -1
  4. package/dist/{MAvatar-C4N2ztLf.cjs → MAvatar-bUWENcq-.cjs} +2 -2
  5. package/dist/{MAvatar-C4N2ztLf.cjs.map → MAvatar-bUWENcq-.cjs.map} +1 -1
  6. package/dist/{MButton-B8kFTOPJ.cjs → MButton-R08y1HCT.cjs} +2 -2
  7. package/dist/{MButton-B8kFTOPJ.cjs.map → MButton-R08y1HCT.cjs.map} +1 -1
  8. package/dist/{MButtonGroup-C3Ar0gfk.cjs → MButtonGroup-C-LiXWRC.cjs} +2 -2
  9. package/dist/{MButtonGroup-C3Ar0gfk.cjs.map → MButtonGroup-C-LiXWRC.cjs.map} +1 -1
  10. package/dist/{MCard-szs5kIek.cjs → MCard-1OVOl4Ql.cjs} +2 -2
  11. package/dist/{MCard-szs5kIek.cjs.map → MCard-1OVOl4Ql.cjs.map} +1 -1
  12. package/dist/{MCard-dLMQQ97e.js → MCard-azpp4YVD.js} +1 -1
  13. package/dist/{MCard-dLMQQ97e.js.map → MCard-azpp4YVD.js.map} +1 -1
  14. package/dist/{MCheckbox-CATWU11D.cjs → MCheckbox-CM5HJQWW.cjs} +2 -2
  15. package/dist/{MCheckbox-CATWU11D.cjs.map → MCheckbox-CM5HJQWW.cjs.map} +1 -1
  16. package/dist/{MConflictIllustration-Mnz1q7Ey.cjs → MConflictIllustration-B2AtfpYO.cjs} +2 -2
  17. package/dist/{MConflictIllustration-Mnz1q7Ey.cjs.map → MConflictIllustration-B2AtfpYO.cjs.map} +1 -1
  18. package/dist/{MDetailList-BBgUaSDJ.cjs → MDetailList-DTLU7HQZ.cjs} +2 -2
  19. package/dist/{MDetailList-BBgUaSDJ.cjs.map → MDetailList-DTLU7HQZ.cjs.map} +1 -1
  20. package/dist/{MDetailList-zlwdeA-r.js → MDetailList-fDhVyhm7.js} +4 -4
  21. package/dist/{MDetailList-zlwdeA-r.js.map → MDetailList-fDhVyhm7.js.map} +1 -1
  22. package/dist/{MDropdownMenu-omTEUh4V.js → MDropdownMenu-BeD_DxPr.js} +2 -2
  23. package/dist/{MDropdownMenu-omTEUh4V.js.map → MDropdownMenu-BeD_DxPr.js.map} +1 -1
  24. package/dist/{MDropdownMenu-1RqWjxHp.cjs → MDropdownMenu-C2lftqSx.cjs} +2 -2
  25. package/dist/{MDropdownMenu-1RqWjxHp.cjs.map → MDropdownMenu-C2lftqSx.cjs.map} +1 -1
  26. package/dist/{MGrid-B2qzYD6S.cjs → MGrid-B_0kFUws.cjs} +2 -2
  27. package/dist/{MGrid-B2qzYD6S.cjs.map → MGrid-B_0kFUws.cjs.map} +1 -1
  28. package/dist/{MGrid-Cy44dWyC.js → MGrid-CYL3cbUI.js} +1 -1
  29. package/dist/{MGrid-Cy44dWyC.js.map → MGrid-CYL3cbUI.js.map} +1 -1
  30. package/dist/{MHeading-CyuxSnhl.cjs → MHeading-BLnb3dNv.cjs} +2 -2
  31. package/dist/{MHeading-CyuxSnhl.cjs.map → MHeading-BLnb3dNv.cjs.map} +1 -1
  32. package/dist/{MI18nProvider-C90EVyFz.cjs → MI18nProvider-Cg-vxV6j.cjs} +2 -2
  33. package/dist/{MI18nProvider-C90EVyFz.cjs.map → MI18nProvider-Cg-vxV6j.cjs.map} +1 -1
  34. package/dist/{MInput-Cw9ZVcNO.cjs → MInput-BpTlP8GE.cjs} +2 -2
  35. package/dist/{MInput-Cw9ZVcNO.cjs.map → MInput-BpTlP8GE.cjs.map} +1 -1
  36. package/dist/{MInput-Baokf17V.js → MInput-C8ObGzQk.js} +2 -2
  37. package/dist/{MInput-Baokf17V.js.map → MInput-C8ObGzQk.js.map} +1 -1
  38. package/dist/{MInputCVC-DNzDAbfU.js → MInputCVC-DvUOzpYp.js} +24 -24
  39. package/dist/{MInputCVC-DNzDAbfU.js.map → MInputCVC-DvUOzpYp.js.map} +1 -1
  40. package/dist/{MInputCVC-Bqcp5Uu3.cjs → MInputCVC-_2ALihF1.cjs} +2 -2
  41. package/dist/{MInputCVC-Bqcp5Uu3.cjs.map → MInputCVC-_2ALihF1.cjs.map} +1 -1
  42. package/dist/{MInputSearch-D9bp1QAz.cjs → MInputSearch-9wcXlY8-.cjs} +2 -2
  43. package/dist/{MInputSearch-D9bp1QAz.cjs.map → MInputSearch-9wcXlY8-.cjs.map} +1 -1
  44. package/dist/{MInputSearch-Bswi-Kj0.js → MInputSearch-BM8gLlJ1.js} +3 -3
  45. package/dist/{MInputSearch-Bswi-Kj0.js.map → MInputSearch-BM8gLlJ1.js.map} +1 -1
  46. package/dist/{MKbd-CiwDwFwA.cjs → MKbd-n4fhKIxb.cjs} +2 -2
  47. package/dist/{MKbd-CiwDwFwA.cjs.map → MKbd-n4fhKIxb.cjs.map} +1 -1
  48. package/dist/{MLink-B7gXA8qY.cjs → MLink-Biipj7xz.cjs} +2 -2
  49. package/dist/{MLink-B7gXA8qY.cjs.map → MLink-Biipj7xz.cjs.map} +1 -1
  50. package/dist/MLoader-CnvWqFtA.js +41 -0
  51. package/dist/MLoader-CnvWqFtA.js.map +1 -0
  52. package/dist/MLoader-XcpKlLrd.cjs +2 -0
  53. package/dist/MLoader-XcpKlLrd.cjs.map +1 -0
  54. package/dist/{MPagination-C2GmGkVA.cjs → MPagination-C6QQdEj_.cjs} +2 -2
  55. package/dist/{MPagination-C2GmGkVA.cjs.map → MPagination-C6QQdEj_.cjs.map} +1 -1
  56. package/dist/{MPagination-DpUtB6t6.js → MPagination-CgmNEAZX.js} +6 -6
  57. package/dist/{MPagination-DpUtB6t6.js.map → MPagination-CgmNEAZX.js.map} +1 -1
  58. package/dist/{MPopover-BVBN5SJi.cjs → MPopover-Cweomcj2.cjs} +2 -2
  59. package/dist/MPopover-Cweomcj2.cjs.map +1 -0
  60. package/dist/{MPopover-BRuwva-c.js → MPopover-DT3vclV1.js} +6 -3
  61. package/dist/MPopover-DT3vclV1.js.map +1 -0
  62. package/dist/{MPortal-Djrw2WhD.cjs → MPortal-BciZHNDC.cjs} +2 -2
  63. package/dist/{MPortal-Djrw2WhD.cjs.map → MPortal-BciZHNDC.cjs.map} +1 -1
  64. package/dist/{MSimpleGrid-BVeCK9Ci.js → MSimpleGrid-BWKurW6H.js} +1 -1
  65. package/dist/{MSimpleGrid-BVeCK9Ci.js.map → MSimpleGrid-BWKurW6H.js.map} +1 -1
  66. package/dist/{MSimpleGrid-BR352NiK.cjs → MSimpleGrid-BwNfaxQP.cjs} +2 -2
  67. package/dist/{MSimpleGrid-BR352NiK.cjs.map → MSimpleGrid-BwNfaxQP.cjs.map} +1 -1
  68. package/dist/{MSkeleton-DyQBeuVT.cjs → MSkeleton-CLSU5pL6.cjs} +2 -2
  69. package/dist/{MSkeleton-DyQBeuVT.cjs.map → MSkeleton-CLSU5pL6.cjs.map} +1 -1
  70. package/dist/{MSlider-Ds2Fls86.cjs → MSlider-DZnMB49q.cjs} +2 -2
  71. package/dist/{MSlider-Ds2Fls86.cjs.map → MSlider-DZnMB49q.cjs.map} +1 -1
  72. package/dist/{MStack-BdVvJN5S.cjs → MStack-BP_BUeCc.cjs} +2 -2
  73. package/dist/{MStack-BdVvJN5S.cjs.map → MStack-BP_BUeCc.cjs.map} +1 -1
  74. package/dist/{MStack-h11pHEmc.js → MStack-CSCw6to2.js} +1 -1
  75. package/dist/{MStack-h11pHEmc.js.map → MStack-CSCw6to2.js.map} +1 -1
  76. package/dist/{MSubText-DWNMJupD.cjs → MSubText-VHsgFsv2.cjs} +2 -2
  77. package/dist/{MSubText-DWNMJupD.cjs.map → MSubText-VHsgFsv2.cjs.map} +1 -1
  78. package/dist/{MSurface-BS9l7GDH.cjs → MSurface-CYeVFOw_.cjs} +2 -2
  79. package/dist/{MSurface-BS9l7GDH.cjs.map → MSurface-CYeVFOw_.cjs.map} +1 -1
  80. package/dist/{MTag-BwQbycZO.cjs → MTag-BzTp1crT.cjs} +2 -2
  81. package/dist/{MTag-BwQbycZO.cjs.map → MTag-BzTp1crT.cjs.map} +1 -1
  82. package/dist/{MTag-BF6htPr-.js → MTag-D9q6faIk.js} +2 -2
  83. package/dist/{MTag-BF6htPr-.js.map → MTag-D9q6faIk.js.map} +1 -1
  84. package/dist/{MText-Cjt1oTPr.cjs → MText-j6Zbbj5Y.cjs} +2 -2
  85. package/dist/{MText-Cjt1oTPr.cjs.map → MText-j6Zbbj5Y.cjs.map} +1 -1
  86. package/dist/{MTooltip-gpvKWQzD.cjs → MTooltip-BEfO9jTe.cjs} +2 -2
  87. package/dist/{MTooltip-gpvKWQzD.cjs.map → MTooltip-BEfO9jTe.cjs.map} +1 -1
  88. package/dist/{MTooltip-Ctyjwxv-.js → MTooltip-BTJkzOah.js} +1 -1
  89. package/dist/{MTooltip-Ctyjwxv-.js.map → MTooltip-BTJkzOah.js.map} +1 -1
  90. package/dist/{MTreeView-DTsi4bye.js → MTreeView-B1J7uqd1.js} +63 -63
  91. package/dist/{MTreeView-DTsi4bye.js.map → MTreeView-B1J7uqd1.js.map} +1 -1
  92. package/dist/{MTreeView-BS60bIj7.cjs → MTreeView-DuQkm0ZV.cjs} +2 -2
  93. package/dist/{MTreeView-BS60bIj7.cjs.map → MTreeView-DuQkm0ZV.cjs.map} +1 -1
  94. package/dist/{arduino-CA8n1Qq3.cjs → arduino-DdDHMIWB.cjs} +1 -1
  95. package/dist/{arduino-CA8n1Qq3.cjs.map → arduino-DdDHMIWB.cjs.map} +1 -1
  96. package/dist/{arduino-WKgN2ikT.js → arduino-UeOrXakL.js} +1 -1
  97. package/dist/{arduino-WKgN2ikT.js.map → arduino-UeOrXakL.js.map} +1 -1
  98. package/dist/{bash-DObE5DDq.cjs → bash-B17_F5Sw.cjs} +1 -1
  99. package/dist/{bash-DObE5DDq.cjs.map → bash-B17_F5Sw.cjs.map} +1 -1
  100. package/dist/{bash-vBtVVub9.js → bash-CrHemXky.js} +1 -1
  101. package/dist/{bash-vBtVVub9.js.map → bash-CrHemXky.js.map} +1 -1
  102. package/dist/{c-7RiNX--m.js → c-D9302r2r.js} +1 -1
  103. package/dist/{c-7RiNX--m.js.map → c-D9302r2r.js.map} +1 -1
  104. package/dist/{c-Bb-MtVny.cjs → c-ODLxeMV_.cjs} +1 -1
  105. package/dist/{c-Bb-MtVny.cjs.map → c-ODLxeMV_.cjs.map} +1 -1
  106. package/dist/{cards-BkRqUJ2V.js → cards-DYmK8TpL.js} +407 -389
  107. package/dist/{cards-BkRqUJ2V.js.map → cards-DYmK8TpL.js.map} +1 -1
  108. package/dist/cards-fRWZkts9.cjs +2 -0
  109. package/dist/cards-fRWZkts9.cjs.map +1 -0
  110. package/dist/cards.cjs +1 -1
  111. package/dist/cards.js +2 -2
  112. package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
  113. package/dist/components/cards/MCardGrid/MCardGrid.types.d.ts +16 -0
  114. package/dist/components/data/MDataTable/MDataTable.d.ts +1 -1
  115. package/dist/components/data/MDataTable/MDataTable.types.d.ts +16 -0
  116. package/dist/components/data/useMCardGrid.d.ts +2 -0
  117. package/dist/components/data/useMTable.d.ts +2 -0
  118. package/dist/{controls-CSTIosnc.js → controls-BKAhqjNM.js} +3 -3
  119. package/dist/{controls-CSTIosnc.js.map → controls-BKAhqjNM.js.map} +1 -1
  120. package/dist/{controls-BopaNWb_.cjs → controls-CT_0lIPr.cjs} +2 -2
  121. package/dist/{controls-BopaNWb_.cjs.map → controls-CT_0lIPr.cjs.map} +1 -1
  122. package/dist/controls.cjs +1 -1
  123. package/dist/controls.js +1 -1
  124. package/dist/{core-o3cw16Db.cjs → core-DBpQf3uY.cjs} +1 -1
  125. package/dist/{core-o3cw16Db.cjs.map → core-DBpQf3uY.cjs.map} +1 -1
  126. package/dist/{core-DC6zSfZo.js → core-yRqh2XLu.js} +1 -1
  127. package/dist/{core-DC6zSfZo.js.map → core-yRqh2XLu.js.map} +1 -1
  128. package/dist/{cpp-CaNnFjgy.js → cpp-CLYSpJBB.js} +1 -1
  129. package/dist/{cpp-CaNnFjgy.js.map → cpp-CLYSpJBB.js.map} +1 -1
  130. package/dist/{cpp-BVKrJvso.cjs → cpp-DuTgLZC1.cjs} +1 -1
  131. package/dist/{cpp-BVKrJvso.cjs.map → cpp-DuTgLZC1.cjs.map} +1 -1
  132. package/dist/{css-NqBDP7ZC.js → css-BgGh0eG1.js} +1 -1
  133. package/dist/{css-NqBDP7ZC.js.map → css-BgGh0eG1.js.map} +1 -1
  134. package/dist/{css-C2sjPfLl.cjs → css-D0f-qByc.cjs} +1 -1
  135. package/dist/{css-C2sjPfLl.cjs.map → css-D0f-qByc.cjs.map} +1 -1
  136. package/dist/data-CuynADWM.cjs +2 -0
  137. package/dist/data-CuynADWM.cjs.map +1 -0
  138. package/dist/data-D8WFA3Et.js +674 -0
  139. package/dist/data-D8WFA3Et.js.map +1 -0
  140. package/dist/data.cjs +1 -1
  141. package/dist/data.js +2 -2
  142. package/dist/{display-B7Wh5nnM.js → display-BF4jASt9.js} +30 -30
  143. package/dist/{display-B7Wh5nnM.js.map → display-BF4jASt9.js.map} +1 -1
  144. package/dist/{display-BgZbdTDd.cjs → display-DMix8BmD.cjs} +3 -3
  145. package/dist/{display-BgZbdTDd.cjs.map → display-DMix8BmD.cjs.map} +1 -1
  146. package/dist/display.cjs +1 -1
  147. package/dist/display.js +2 -2
  148. package/dist/{dropdowns-DGvRs-VE.js → dropdowns-5cJf-6UG.js} +92 -92
  149. package/dist/{dropdowns-DGvRs-VE.js.map → dropdowns-5cJf-6UG.js.map} +1 -1
  150. package/dist/{dropdowns-Befc3lmC.cjs → dropdowns-C-ASvu7P.cjs} +2 -2
  151. package/dist/{dropdowns-Befc3lmC.cjs.map → dropdowns-C-ASvu7P.cjs.map} +1 -1
  152. package/dist/dropdowns.cjs +1 -1
  153. package/dist/dropdowns.js +1 -1
  154. package/dist/feedback-4TjD57rX.cjs +2 -0
  155. package/dist/{feedback-C8RfsfYJ.cjs.map → feedback-4TjD57rX.cjs.map} +1 -1
  156. package/dist/feedback-DW-cehnb.js +255 -0
  157. package/dist/feedback-DW-cehnb.js.map +1 -0
  158. package/dist/feedback.cjs +1 -1
  159. package/dist/feedback.js +5 -4
  160. package/dist/{form-DSlAmTT1.cjs → form-BWGLrCPi.cjs} +2 -2
  161. package/dist/{form-DSlAmTT1.cjs.map → form-BWGLrCPi.cjs.map} +1 -1
  162. package/dist/{form-BWWLNji0.js → form-CgH1hioG.js} +1 -1
  163. package/dist/{form-BWWLNji0.js.map → form-CgH1hioG.js.map} +1 -1
  164. package/dist/form.cjs +1 -1
  165. package/dist/form.js +1 -1
  166. package/dist/i18n.cjs +1 -1
  167. package/dist/icons/glyphs/MCoinIcon.d.ts +2 -0
  168. package/dist/icons/glyphs/MMoneyIcon.d.ts +2 -0
  169. package/dist/icons/glyphs/MReceiptIcon.d.ts +2 -0
  170. package/dist/icons/glyphs/MWalletIcon.d.ts +2 -0
  171. package/dist/icons/index.d.ts +4 -0
  172. package/dist/{icons-DLP-Rs6z.js → icons-CBMl-kOM.js} +221 -166
  173. package/dist/icons-CBMl-kOM.js.map +1 -0
  174. package/dist/icons-D675Im0B.cjs +2 -0
  175. package/dist/icons-D675Im0B.cjs.map +1 -0
  176. package/dist/icons.cjs +1 -1
  177. package/dist/icons.js +2 -2
  178. package/dist/illustrations.cjs +1 -1
  179. package/dist/index.cjs +1 -1
  180. package/dist/index.js +53 -52
  181. package/dist/{inputs-BZxorlLv.js → inputs-CQoi402V.js} +180 -180
  182. package/dist/{inputs-BZxorlLv.js.map → inputs-CQoi402V.js.map} +1 -1
  183. package/dist/{inputs-BiZXyZSE.cjs → inputs-yaaTPTsY.cjs} +2 -2
  184. package/dist/{inputs-BiZXyZSE.cjs.map → inputs-yaaTPTsY.cjs.map} +1 -1
  185. package/dist/inputs.cjs +1 -1
  186. package/dist/inputs.js +4 -4
  187. package/dist/{javascript-BgwyrBZi.cjs → javascript-CGjvHPZ1.cjs} +1 -1
  188. package/dist/{javascript-BgwyrBZi.cjs.map → javascript-CGjvHPZ1.cjs.map} +1 -1
  189. package/dist/{javascript-BltQGQAn.js → javascript-CX3JhsYu.js} +1 -1
  190. package/dist/{javascript-BltQGQAn.js.map → javascript-CX3JhsYu.js.map} +1 -1
  191. package/dist/{json-DWmLrT_r.cjs → json-B8svQsK0.cjs} +1 -1
  192. package/dist/{json-DWmLrT_r.cjs.map → json-B8svQsK0.cjs.map} +1 -1
  193. package/dist/{json-DbCISZXi.js → json-BPIcVdlp.js} +1 -1
  194. package/dist/{json-DbCISZXi.js.map → json-BPIcVdlp.js.map} +1 -1
  195. package/dist/{layout-Ct6ViwDQ.cjs → layout-CfolwT8L.cjs} +2 -2
  196. package/dist/{layout-Ct6ViwDQ.cjs.map → layout-CfolwT8L.cjs.map} +1 -1
  197. package/dist/{layout-CnEOTJnJ.js → layout-i8H5tIbO.js} +34 -34
  198. package/dist/{layout-CnEOTJnJ.js.map → layout-i8H5tIbO.js.map} +1 -1
  199. package/dist/layout.cjs +1 -1
  200. package/dist/layout.js +5 -5
  201. package/dist/{licensing-hMT26Vnv.cjs → licensing-DysMClel.cjs} +2 -2
  202. package/dist/{licensing-hMT26Vnv.cjs.map → licensing-DysMClel.cjs.map} +1 -1
  203. package/dist/{locale-BNyzqXAU.js → locale-CS1-IY_I.js} +1 -1
  204. package/dist/{locale-BNyzqXAU.js.map → locale-CS1-IY_I.js.map} +1 -1
  205. package/dist/{locale-C5ik0c3d.cjs → locale-CbnstsMH.cjs} +2 -2
  206. package/dist/{locale-C5ik0c3d.cjs.map → locale-CbnstsMH.cjs.map} +1 -1
  207. package/dist/{media-DZaGKh5V.cjs → media-DRz3JZfr.cjs} +2 -2
  208. package/dist/{media-DZaGKh5V.cjs.map → media-DRz3JZfr.cjs.map} +1 -1
  209. package/dist/{media-DxnELIZO.js → media-vOQOIYFD.js} +11 -11
  210. package/dist/{media-DxnELIZO.js.map → media-vOQOIYFD.js.map} +1 -1
  211. package/dist/media.cjs +1 -1
  212. package/dist/media.js +2 -2
  213. package/dist/{overlays-BfIrSHDo.js → overlays-CAcGmqNv.js} +54 -54
  214. package/dist/{overlays-BfIrSHDo.js.map → overlays-CAcGmqNv.js.map} +1 -1
  215. package/dist/{overlays-WsQqxqk1.cjs → overlays-zPzbHW5P.cjs} +2 -2
  216. package/dist/{overlays-WsQqxqk1.cjs.map → overlays-zPzbHW5P.cjs.map} +1 -1
  217. package/dist/overlays.cjs +1 -1
  218. package/dist/overlays.js +3 -3
  219. package/dist/{php-dSXzrC_Z.js → php-CBRzjinf.js} +1 -1
  220. package/dist/{php-dSXzrC_Z.js.map → php-CBRzjinf.js.map} +1 -1
  221. package/dist/{php-CssmZWrI.cjs → php-CKyelegh.cjs} +1 -1
  222. package/dist/{php-CssmZWrI.cjs.map → php-CKyelegh.cjs.map} +1 -1
  223. package/dist/primitives.cjs +1 -1
  224. package/dist/primitives.js +1 -1
  225. package/dist/style-runtime.cjs +1 -1
  226. package/dist/style-runtime.js +1 -1
  227. package/dist/styles.css +1 -1
  228. package/dist/{theme-DltOEniv.cjs → theme-BfNZicWk.cjs} +2 -2
  229. package/dist/{theme-DltOEniv.cjs.map → theme-BfNZicWk.cjs.map} +1 -1
  230. package/dist/theme.cjs +1 -1
  231. package/dist/{typescript-DeaMWtYF.cjs → typescript-D6PDzwkM.cjs} +1 -1
  232. package/dist/{typescript-DeaMWtYF.cjs.map → typescript-D6PDzwkM.cjs.map} +1 -1
  233. package/dist/{typescript-CxKdKTKz.js → typescript-Xt3Sotw5.js} +1 -1
  234. package/dist/{typescript-CxKdKTKz.js.map → typescript-Xt3Sotw5.js.map} +1 -1
  235. package/dist/{typography-vZwd5E5h.cjs → typography-Dk9kIORI.cjs} +2 -2
  236. package/dist/{typography-vZwd5E5h.cjs.map → typography-Dk9kIORI.cjs.map} +1 -1
  237. package/dist/typography.cjs +1 -1
  238. package/dist/{useGhostText-Nw9XCpWS.cjs → useGhostText-Dmkw3Am8.cjs} +2 -2
  239. package/dist/{useGhostText-Nw9XCpWS.cjs.map → useGhostText-Dmkw3Am8.cjs.map} +1 -1
  240. package/dist/{useInteractionEffect-Gs9HBi2T.cjs → useInteractionEffect-DFTdcWHl.cjs} +2 -2
  241. package/dist/{useInteractionEffect-Gs9HBi2T.cjs.map → useInteractionEffect-DFTdcWHl.cjs.map} +1 -1
  242. package/dist/{useKeyboardNav-DDN-oeqd.cjs → useKeyboardNav-HVG9JFD2.cjs} +2 -2
  243. package/dist/{useKeyboardNav-DDN-oeqd.cjs.map → useKeyboardNav-HVG9JFD2.cjs.map} +1 -1
  244. package/dist/utils.cjs +1 -1
  245. package/dist/{xml-BUuYcpx2.cjs → xml-4YlaGgjP.cjs} +1 -1
  246. package/dist/{xml-BUuYcpx2.cjs.map → xml-4YlaGgjP.cjs.map} +1 -1
  247. package/dist/{xml-BPoVPJlJ.js → xml-CrpWqcDk.js} +1 -1
  248. package/dist/{xml-BPoVPJlJ.js.map → xml-CrpWqcDk.js.map} +1 -1
  249. package/package.json +1 -1
  250. package/dist/MPopover-BRuwva-c.js.map +0 -1
  251. package/dist/MPopover-BVBN5SJi.cjs.map +0 -1
  252. package/dist/cards-DK7j03NN.cjs +0 -2
  253. package/dist/cards-DK7j03NN.cjs.map +0 -1
  254. package/dist/data-CjVcevdT.js +0 -654
  255. package/dist/data-CjVcevdT.js.map +0 -1
  256. package/dist/data-D8qUIvWv.cjs +0 -2
  257. package/dist/data-D8qUIvWv.cjs.map +0 -1
  258. package/dist/feedback-C445FEHb.js +0 -290
  259. package/dist/feedback-C445FEHb.js.map +0 -1
  260. package/dist/feedback-C8RfsfYJ.cjs +0 -2
  261. package/dist/icons-DLP-Rs6z.js.map +0 -1
  262. package/dist/icons-DX_cScBq.cjs +0 -2
  263. package/dist/icons-DX_cScBq.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"layout-Ct6ViwDQ.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/MSection/MSection.tsx","../src/components/layout/MStatGrid/MStatGrid.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","../src/components/layout/MCanvasGrid/ScaleToFit.tsx","../src/components/layout/MCanvasGrid/MCanvasGrid.tsx","../src/components/layout/MStickyPanel/MStickyPanel.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, ReactNode} 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 {MButton} from '../../controls/MButton'\nimport {MMenuIcon} from '../../../icons'\nimport './MNavbar.css'\n\ntype NavLikeElement = ReactElement<{children?: ReactNode; orientation?: 'horizontal' | 'vertical'}>\n\n// Walks the children tree (any depth) looking for MNavs instances so the navbar\n// can pull them into the mobile menu even when wrapped in MInline / MStack.\nfunction findNavLikeChildren(children: ReactNode, found: NavLikeElement[] = []): NavLikeElement[] {\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) {\n return\n }\n if (child.type === MNavs) {\n found.push(child as NavLikeElement)\n return\n }\n const nestedChildren = (child.props as {children?: ReactNode} | null)?.children\n if (nestedChildren !== undefined) {\n findNavLikeChildren(nestedChildren, found)\n }\n })\n return found\n}\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 mobileMenuFooter,\n collapseActions = false,\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 = findNavLikeChildren(children).map((element, index) =>\n cloneElement(element, {\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 shape=\"circle\"\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 // When collapseActions is on and we're below the breakpoint, the last inline\n // (usually theme / lang / search) is pulled out of the bar and rendered in\n // the mobile menu footer. The burger toggle then attaches to the previous\n // inline (typically primary actions) — or sits on its own when none exists.\n const shouldCollapseLastInline = collapseActions && mobile && lastInlineIndex !== -1\n let collapsedActionsInline: ReactElement<MInlineProps> | null = null\n let workingChildren = childArray\n let toggleHostIndex = lastInlineIndex\n if (shouldCollapseLastInline) {\n collapsedActionsInline = childArray[lastInlineIndex] as ReactElement<MInlineProps>\n workingChildren = childArray.filter((_, index) => index !== lastInlineIndex)\n toggleHostIndex = -1\n for (let index = workingChildren.length - 1; index >= 0; index -= 1) {\n const child = workingChildren[index]\n if (isValidElement(child) && child.type === MInline) {\n toggleHostIndex = index\n break\n }\n }\n }\n\n const renderedChildren =\n toggleHostIndex === -1\n ? [...workingChildren, toggleButton]\n : workingChildren.map((child, index) => {\n if (index !== toggleHostIndex) 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 {collapsedActionsInline ? (\n <div className=\"mobile-menu-footer\">\n {cloneElement(collapsedActionsInline, {\n key: 'mnavbar-collapsed-actions',\n })}\n </div>\n ) : null}\n {mobileMenuFooter ? <div className=\"mobile-menu-footer\">{mobileMenuFooter}</div> : null}\n </div>\n </nav>\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 {MStatGridProps} from './MStatGrid.types'\nimport {MSimpleGrid} from '../MSimpleGrid'\n\nexport function MStatGrid<T>({\n items,\n renderItem,\n children,\n columns = 4,\n minItemWidth = '15rem',\n ...rest\n}: MStatGridProps<T>) {\n return (\n <MSimpleGrid columns={columns} minItemWidth={minItemWidth} {...rest}>\n {items && renderItem ? items.map((item, index) => renderItem(item, index)) : children}\n </MSimpleGrid>\n )\n}\n","import type {MDividerProps} from './MDivider.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\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 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 ...rest\n}: MDividerProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n 'divider',\n orientation,\n variant,\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 )\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 description,\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 // ONE tooltip per row: prefer description, fall back to label. The HTML\n // title attribute used in collapsed mode mirrors the same priority but is\n // limited to strings (browsers can't render ReactNodes).\n const tooltipContent = description ?? label\n const titleAttr = typeof description === 'string'\n ? description\n : typeof label === 'string'\n ? label\n : undefined\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 ? titleAttr : undefined}\n {...linkProps}\n >\n {icon && <span className=\"sidebar-item-icon\">{icon}</span>}\n {!isCollapsed && (\n <MTooltip content={tooltipContent} 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","import {useEffect, useRef, useState, type ReactNode} from 'react'\n\ninterface ScaleToFitProps {\n /**\n * Minimum render width (in CSS px). When the parent is narrower, content\n * is rendered at this width and scaled down. When the parent is wider,\n * content is rendered at the parent's width (no scale-up, no padding).\n */\n baseWidth?: number\n children: ReactNode\n}\n\n/**\n * Renders `children` at `max(baseWidth, parentWidth)`, then applies\n * `transform: scale(...)` so the rendered block fits the parent box without\n * scrollbars. Scale never exceeds 1 (no blurry up-scaling). When the parent\n * is wider than baseWidth, render width tracks the parent so content fills\n * the available space natively (no horizontal padding).\n */\nexport function ScaleToFit({baseWidth = 480, children}: ScaleToFitProps) {\n const wrapperRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const [scale, setScale] = useState(1)\n const [renderWidth, setRenderWidth] = useState<number>(baseWidth)\n\n useEffect(() => {\n const wrap = wrapperRef.current\n const content = contentRef.current\n if (!wrap || !content) return\n\n let frame = 0\n const recompute = () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n const wW = wrap.clientWidth\n const wH = wrap.clientHeight\n if (wW === 0 || wH === 0) return\n const cW = Math.max(baseWidth, wW)\n const cH = content.offsetHeight\n if (cW === 0 || cH === 0) return\n const sW = wW / cW\n const sH = wH / cH\n const next = Math.min(sW, sH, 1)\n if (next > 0 && Number.isFinite(next)) {\n setRenderWidth(cW)\n setScale(next)\n }\n })\n }\n\n const ro = new ResizeObserver(recompute)\n ro.observe(wrap)\n ro.observe(content)\n recompute()\n return () => {\n cancelAnimationFrame(frame)\n ro.disconnect()\n }\n }, [baseWidth])\n\n return (\n <div ref={wrapperRef} className=\"canvas-grid-scale-wrapper\">\n <div\n ref={contentRef}\n className=\"canvas-grid-scale-content\"\n style={{width: `${renderWidth}px`, transform: `scale(${scale})`}}\n >\n {children}\n </div>\n </div>\n )\n}\n","import {forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport type {CSSProperties, ForwardedRef, PointerEvent as ReactPointerEvent, ReactElement, Ref} from 'react'\nimport type {MCanvasGridItem, MCanvasGridPosition, MCanvasGridProps} from './MCanvasGrid.types'\nimport {cn} from '../../../utils/cn'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {MEditIcon, MMoveIcon, MTrashIcon, MZoomInIcon} from '../../../icons'\nimport {MButton} from '../../controls/MButton'\nimport {MButtonGroup} from '../../controls/MButtonGroup'\nimport {ScaleToFit} from './ScaleToFit'\nimport './MCanvasGrid.css'\n\ninterface DragState {\n itemId: string\n mode: 'drag' | 'resize'\n startClientX: number\n startClientY: number\n original: MCanvasGridPosition\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction MCanvasGridInner<T extends MCanvasGridItem>(\n {\n columns = 24,\n rows = 24,\n snap = 4,\n items,\n renderItem,\n minItemSize,\n maxItemSize: _maxItemSize,\n editable = false,\n onItemMove,\n onItemResize,\n onItemRemove,\n onItemEdit,\n onItemExpand,\n guides = 'always',\n compactBreakpoint = MShellBreakpoints.compact,\n mobileBreakpoint = MShellBreakpoints.mobile,\n height,\n fitContent = 'scroll',\n fitContentBaseWidth = 480,\n className,\n style,\n }: MCanvasGridProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const innerRef = useRef<HTMLDivElement | null>(null)\n const [size, setSize] = useState({width: 0, height: 0})\n const [drag, setDrag] = useState<DragState | null>(null)\n const [preview, setPreview] = useState<MCanvasGridPosition | null>(null)\n const [touchOrder, setTouchOrder] = useState<Record<string, number>>({})\n const touchCounterRef = useRef(0)\n\n function bringToFront(itemId: string) {\n touchCounterRef.current += 1\n setTouchOrder((prev) => ({...prev, [itemId]: touchCounterRef.current}))\n }\n\n function suppressNextClick() {\n let armed = true\n const stopper = (ev: MouseEvent) => {\n if (!armed) return\n armed = false\n ev.stopPropagation()\n ev.preventDefault()\n window.removeEventListener('click', stopper, true)\n }\n window.addEventListener('click', stopper, true)\n window.setTimeout(() => {\n if (!armed) return\n armed = false\n window.removeEventListener('click', stopper, true)\n }, 60)\n }\n\n const isMobile = useMaxWidth(mobileBreakpoint)\n const isCompact = useMaxWidth(compactBreakpoint) && !isMobile\n\n const totalCols = columns * snap\n const totalRows = rows * snap\n const effectiveCols = isCompact ? Math.max(1, Math.round(totalCols / 2)) : totalCols\n const effectiveRows = isCompact ? Math.max(1, Math.round(totalRows / 2)) : totalRows\n const effectiveCells = isCompact ? Math.max(1, Math.round(columns / 2)) : columns\n const effectiveRowCells = isCompact ? Math.max(1, Math.round(rows / 2)) : rows\n\n const interactive = editable && !isMobile\n\n useEffect(() => {\n const node = innerRef.current\n if (!node || typeof ResizeObserver === 'undefined') return\n const update = () => setSize({width: node.clientWidth, height: node.clientHeight})\n update()\n const observer = new ResizeObserver(update)\n observer.observe(node)\n return () => observer.disconnect()\n }, [])\n\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n innerRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as {current: HTMLDivElement | null}).current = node\n },\n [ref]\n )\n\n function getMin(item: T) {\n const m = minItemSize?.(item)\n if (!m) return {w: snap, h: snap}\n return {w: Math.max(snap, m.w * snap), h: Math.max(snap, m.h * snap)}\n }\n\n function startResize(e: ReactPointerEvent<HTMLDivElement>, item: T) {\n if (!interactive) return\n e.stopPropagation()\n e.preventDefault()\n ;(e.currentTarget as Element).setPointerCapture(e.pointerId)\n bringToFront(item.id)\n setDrag({\n itemId: item.id,\n mode: 'resize',\n startClientX: e.clientX,\n startClientY: e.clientY,\n original: {...item.position},\n })\n setPreview({...item.position})\n }\n\n function startDragFromHeader(e: ReactPointerEvent<HTMLDivElement>, item: T) {\n if (!interactive) return\n if ((e.target as Element).closest('button, [role=\"button\"]')) return\n e.stopPropagation()\n e.preventDefault()\n ;(e.currentTarget as Element).setPointerCapture(e.pointerId)\n bringToFront(item.id)\n setDrag({\n itemId: item.id,\n mode: 'drag',\n startClientX: e.clientX,\n startClientY: e.clientY,\n original: {...item.position},\n })\n setPreview({...item.position})\n }\n\n function handlePointerMove(e: ReactPointerEvent<HTMLDivElement>) {\n if (!drag || size.width === 0 || size.height === 0) return\n const cellPxX = size.width / effectiveCols\n const cellPxY = size.height / effectiveRows\n const dx = Math.round((e.clientX - drag.startClientX) / cellPxX)\n const dy = Math.round((e.clientY - drag.startClientY) / cellPxY)\n const original = drag.original\n\n const targetItem = items.find((it) => it.id === drag.itemId)\n const min = targetItem ? getMin(targetItem) : {w: snap, h: snap}\n\n if (drag.mode === 'drag') {\n const x = clamp(original.x + dx, 0, effectiveCols - original.w)\n const y = clamp(original.y + dy, 0, effectiveRows - original.h)\n setPreview({x, y, w: original.w, h: original.h})\n } else {\n const w = clamp(original.w + dx, min.w, effectiveCols - original.x)\n const h = clamp(original.h + dy, min.h, effectiveRows - original.y)\n setPreview({x: original.x, y: original.y, w, h})\n }\n }\n\n function handlePointerUp(e: ReactPointerEvent<HTMLDivElement>) {\n if (!drag) return\n try {\n ;(e.currentTarget as Element).releasePointerCapture(e.pointerId)\n } catch {\n // pointer may have already been released\n }\n if (preview) {\n if (drag.mode === 'drag') onItemMove?.(drag.itemId, preview)\n else onItemResize?.(drag.itemId, preview)\n }\n setDrag(null)\n setPreview(null)\n }\n\n function handleHeaderPointerUp(e: ReactPointerEvent<HTMLDivElement>) {\n if (drag) {\n suppressNextClick()\n handlePointerUp(e)\n }\n }\n\n const guidesOn =\n guides === 'always' ||\n (guides === 'on-edit' && interactive) ||\n (guides === 'on-drag' && drag !== null)\n\n const heightStyle: CSSProperties | undefined =\n height !== undefined ? {height: typeof height === 'number' ? `${height}px` : height} : undefined\n\n if (isMobile) {\n const ordered = [...items].sort((a, b) => a.position.y - b.position.y)\n return (\n <div\n ref={setRefs}\n className={cn('canvas-grid', 'mobile', className)}\n data-guides=\"off\"\n style={{...heightStyle, ...style}}\n >\n {ordered.map((item) => (\n <div key={item.id} className=\"canvas-grid-item\">\n {renderItem(item)}\n </div>\n ))}\n </div>\n )\n }\n\n const gridStyle: CSSProperties = {\n ...heightStyle,\n ...style,\n gridTemplateColumns: `repeat(${effectiveCols}, 1fr)`,\n gridTemplateRows: `repeat(${effectiveRows}, 1fr)`,\n ['--canvas-grid-cells' as string]: String(effectiveCells),\n ['--canvas-grid-row-cells' as string]: String(effectiveRowCells),\n }\n\n const overlayCells = effectiveCells * effectiveRowCells\n\n return (\n <div\n ref={setRefs}\n className={cn('canvas-grid', isCompact && 'compact', interactive && 'editable', className)}\n data-guides={guidesOn ? 'on' : 'off'}\n style={gridStyle}\n >\n <div className=\"canvas-grid-overlay\" aria-hidden>\n {Array.from({length: overlayCells}, (_, idx) => {\n const isLastCol = (idx + 1) % effectiveCells === 0\n const isLastRow = idx >= overlayCells - effectiveCells\n return (\n <div\n key={idx}\n className={cn('canvas-grid-cell', isLastCol && 'no-right', isLastRow && 'no-bottom')}\n />\n )\n })}\n </div>\n\n {items.map((item) => {\n const isDragging = drag?.itemId === item.id\n const live = isDragging && preview ? preview : item.position\n // half-precision math for compact viewport\n const x = isCompact ? Math.round(live.x / 2) : live.x\n const y = isCompact ? Math.round(live.y / 2) : live.y\n const w = Math.max(1, isCompact ? Math.round(live.w / 2) : live.w)\n const h = Math.max(1, isCompact ? Math.round(live.h / 2) : live.h)\n\n const baseZ = 1 + (touchOrder[item.id] ?? 0)\n const itemStyle: CSSProperties = {\n gridColumn: `${x + 1} / span ${w}`,\n gridRow: `${y + 1} / span ${h}`,\n zIndex: isDragging ? baseZ + 100 : baseZ,\n }\n\n return (\n <div\n key={item.id}\n className={cn('canvas-grid-item', isDragging && 'dragging')}\n style={itemStyle}\n >\n <div\n className=\"canvas-grid-item-header\"\n onPointerDown={(e) => startDragFromHeader(e, item)}\n onPointerMove={handlePointerMove}\n onPointerUp={handleHeaderPointerUp}\n onPointerCancel={handlePointerUp}\n >\n <MButtonGroup variant=\"ghost\" size=\"xs\">\n {interactive && onItemEdit && (\n <MButton\n color=\"primary\"\n iconOnly\n aria-label=\"Edit tile\"\n startIcon={<MEditIcon />}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={(e) => {\n e.stopPropagation()\n onItemEdit(item.id)\n }}\n />\n )}\n {onItemExpand && (\n <MButton\n color=\"primary\"\n iconOnly\n aria-label=\"Expand tile\"\n startIcon={<MZoomInIcon />}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={(e) => {\n e.stopPropagation()\n onItemExpand(item.id)\n }}\n />\n )}\n {interactive && onItemRemove && (\n <MButton\n color=\"error\"\n iconOnly\n aria-label=\"Remove tile\"\n startIcon={<MTrashIcon />}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={(e) => {\n e.stopPropagation()\n onItemRemove(item.id)\n }}\n />\n )}\n </MButtonGroup>\n </div>\n <div className=\"canvas-grid-item-body\">\n {fitContent === 'scale' ? (\n <ScaleToFit baseWidth={fitContentBaseWidth}>{renderItem(item)}</ScaleToFit>\n ) : (\n renderItem(item)\n )}\n </div>\n {!interactive && onItemExpand && (\n <MButton\n className=\"canvas-grid-view-expand-handle\"\n variant=\"filled\"\n shape=\"circle\"\n size=\"sm\"\n color=\"primary\"\n iconOnly\n aria-label=\"Expand tile\"\n startIcon={<MZoomInIcon />}\n onClick={(e) => {\n e.stopPropagation()\n onItemExpand(item.id)\n }}\n />\n )}\n {interactive && isDragging && (\n <div className=\"canvas-grid-item-glass\" aria-hidden>\n <MMoveIcon size={28} />\n </div>\n )}\n {interactive && (\n <div\n className=\"canvas-grid-resize-handle\"\n aria-hidden\n onPointerDown={(e) => startResize(e, item)}\n onPointerMove={handlePointerMove}\n onPointerUp={(e) => {\n if (drag) suppressNextClick()\n handlePointerUp(e)\n }}\n onPointerCancel={handlePointerUp}\n />\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport const MCanvasGrid = forwardRef(MCanvasGridInner) as <T extends MCanvasGridItem>(\n props: MCanvasGridProps<T> & {ref?: Ref<HTMLDivElement>}\n) => ReactElement | null\n","import {forwardRef, useEffect, useImperativeHandle, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MStickyPanelProps} from './MStickyPanel.types'\nimport {cn} from '../../../utils/cn'\nimport './MStickyPanel.css'\n\nconst INTERACTIVE_SELECTOR = 'button, a, [role=\"button\"]'\n\n// Sticky side-rail panel: sticks to the viewport at `top`, fills viewport-relative height,\n// scrolls internally with an optional hidden scrollbar and click-and-drag scrolling.\nexport const MStickyPanel = forwardRef<HTMLDivElement, MStickyPanelProps>(function MStickyPanel(\n {\n children,\n top = 16,\n bottomGap = 16,\n hideScrollbar = true,\n draggable = true,\n className,\n style,\n ...rest\n },\n forwardedRef\n) {\n const panelRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(forwardedRef, () => panelRef.current as HTMLDivElement)\n const dragState = useRef<{startY: number; startScrollTop: number} | null>(null)\n const [dragging, setDragging] = useState(false)\n\n useEffect(() => {\n if (!draggable) return\n\n const handleMouseMove = (event: MouseEvent) => {\n const drag = dragState.current\n const panel = panelRef.current\n if (!drag || !panel) return\n panel.scrollTop = drag.startScrollTop - (event.clientY - drag.startY)\n }\n\n const handleMouseUp = () => {\n if (!dragState.current) return\n dragState.current = null\n setDragging(false)\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n return () => {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n }\n }, [draggable])\n\n const handleMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!draggable) return\n // Skip drag start when the click originated on an interactive descendant\n // (button, link, role=button) so triggers like MDropdownMenu, MButton or\n // <Link> stay clickable inside the panel.\n const target = event.target as HTMLElement | null\n if (target && target.closest(INTERACTIVE_SELECTOR)) return\n\n const panel = panelRef.current\n if (!panel) return\n\n dragState.current = {startY: event.clientY, startScrollTop: panel.scrollTop}\n setDragging(true)\n event.preventDefault()\n }\n\n const mergedStyle: React.CSSProperties = {\n top,\n height: `calc(100vh - ${top + bottomGap}px)`,\n ...style,\n }\n\n return (\n <div\n ref={panelRef}\n className={cn(\n 'm-sticky-panel',\n draggable && 'draggable',\n dragging && 'is-dragging',\n hideScrollbar && 'hide-scrollbar',\n className\n )}\n style={mergedStyle}\n onMouseDown={handleMouseDown}\n {...rest}\n >\n {children}\n </div>\n )\n})\n"],"mappings":"ifAOA,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-CfolwT8L.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/MSection/MSection.tsx","../src/components/layout/MStatGrid/MStatGrid.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","../src/components/layout/MCanvasGrid/ScaleToFit.tsx","../src/components/layout/MCanvasGrid/MCanvasGrid.tsx","../src/components/layout/MStickyPanel/MStickyPanel.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, ReactNode} 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 {MButton} from '../../controls/MButton'\nimport {MMenuIcon} from '../../../icons'\nimport './MNavbar.css'\n\ntype NavLikeElement = ReactElement<{children?: ReactNode; orientation?: 'horizontal' | 'vertical'}>\n\n// Walks the children tree (any depth) looking for MNavs instances so the navbar\n// can pull them into the mobile menu even when wrapped in MInline / MStack.\nfunction findNavLikeChildren(children: ReactNode, found: NavLikeElement[] = []): NavLikeElement[] {\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) {\n return\n }\n if (child.type === MNavs) {\n found.push(child as NavLikeElement)\n return\n }\n const nestedChildren = (child.props as {children?: ReactNode} | null)?.children\n if (nestedChildren !== undefined) {\n findNavLikeChildren(nestedChildren, found)\n }\n })\n return found\n}\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 mobileMenuFooter,\n collapseActions = false,\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 = findNavLikeChildren(children).map((element, index) =>\n cloneElement(element, {\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 shape=\"circle\"\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 // When collapseActions is on and we're below the breakpoint, the last inline\n // (usually theme / lang / search) is pulled out of the bar and rendered in\n // the mobile menu footer. The burger toggle then attaches to the previous\n // inline (typically primary actions) — or sits on its own when none exists.\n const shouldCollapseLastInline = collapseActions && mobile && lastInlineIndex !== -1\n let collapsedActionsInline: ReactElement<MInlineProps> | null = null\n let workingChildren = childArray\n let toggleHostIndex = lastInlineIndex\n if (shouldCollapseLastInline) {\n collapsedActionsInline = childArray[lastInlineIndex] as ReactElement<MInlineProps>\n workingChildren = childArray.filter((_, index) => index !== lastInlineIndex)\n toggleHostIndex = -1\n for (let index = workingChildren.length - 1; index >= 0; index -= 1) {\n const child = workingChildren[index]\n if (isValidElement(child) && child.type === MInline) {\n toggleHostIndex = index\n break\n }\n }\n }\n\n const renderedChildren =\n toggleHostIndex === -1\n ? [...workingChildren, toggleButton]\n : workingChildren.map((child, index) => {\n if (index !== toggleHostIndex) 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 {collapsedActionsInline ? (\n <div className=\"mobile-menu-footer\">\n {cloneElement(collapsedActionsInline, {\n key: 'mnavbar-collapsed-actions',\n })}\n </div>\n ) : null}\n {mobileMenuFooter ? <div className=\"mobile-menu-footer\">{mobileMenuFooter}</div> : null}\n </div>\n </nav>\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 {MStatGridProps} from './MStatGrid.types'\nimport {MSimpleGrid} from '../MSimpleGrid'\n\nexport function MStatGrid<T>({\n items,\n renderItem,\n children,\n columns = 4,\n minItemWidth = '15rem',\n ...rest\n}: MStatGridProps<T>) {\n return (\n <MSimpleGrid columns={columns} minItemWidth={minItemWidth} {...rest}>\n {items && renderItem ? items.map((item, index) => renderItem(item, index)) : children}\n </MSimpleGrid>\n )\n}\n","import type {MDividerProps} from './MDivider.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getLayoutUtilityClassNames, getLayoutUtilityStyles} from '../../../utils/layoutProps'\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 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 ...rest\n}: MDividerProps) {\n const utilityStyle = getLayoutUtilityStyles({fsize})\n\n return (\n <div\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n 'divider',\n orientation,\n variant,\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 )\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 description,\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 // ONE tooltip per row: prefer description, fall back to label. The HTML\n // title attribute used in collapsed mode mirrors the same priority but is\n // limited to strings (browsers can't render ReactNodes).\n const tooltipContent = description ?? label\n const titleAttr = typeof description === 'string'\n ? description\n : typeof label === 'string'\n ? label\n : undefined\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 ? titleAttr : undefined}\n {...linkProps}\n >\n {icon && <span className=\"sidebar-item-icon\">{icon}</span>}\n {!isCollapsed && (\n <MTooltip content={tooltipContent} 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","import {useEffect, useRef, useState, type ReactNode} from 'react'\n\ninterface ScaleToFitProps {\n /**\n * Minimum render width (in CSS px). When the parent is narrower, content\n * is rendered at this width and scaled down. When the parent is wider,\n * content is rendered at the parent's width (no scale-up, no padding).\n */\n baseWidth?: number\n children: ReactNode\n}\n\n/**\n * Renders `children` at `max(baseWidth, parentWidth)`, then applies\n * `transform: scale(...)` so the rendered block fits the parent box without\n * scrollbars. Scale never exceeds 1 (no blurry up-scaling). When the parent\n * is wider than baseWidth, render width tracks the parent so content fills\n * the available space natively (no horizontal padding).\n */\nexport function ScaleToFit({baseWidth = 480, children}: ScaleToFitProps) {\n const wrapperRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const [scale, setScale] = useState(1)\n const [renderWidth, setRenderWidth] = useState<number>(baseWidth)\n\n useEffect(() => {\n const wrap = wrapperRef.current\n const content = contentRef.current\n if (!wrap || !content) return\n\n let frame = 0\n const recompute = () => {\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n const wW = wrap.clientWidth\n const wH = wrap.clientHeight\n if (wW === 0 || wH === 0) return\n const cW = Math.max(baseWidth, wW)\n const cH = content.offsetHeight\n if (cW === 0 || cH === 0) return\n const sW = wW / cW\n const sH = wH / cH\n const next = Math.min(sW, sH, 1)\n if (next > 0 && Number.isFinite(next)) {\n setRenderWidth(cW)\n setScale(next)\n }\n })\n }\n\n const ro = new ResizeObserver(recompute)\n ro.observe(wrap)\n ro.observe(content)\n recompute()\n return () => {\n cancelAnimationFrame(frame)\n ro.disconnect()\n }\n }, [baseWidth])\n\n return (\n <div ref={wrapperRef} className=\"canvas-grid-scale-wrapper\">\n <div\n ref={contentRef}\n className=\"canvas-grid-scale-content\"\n style={{width: `${renderWidth}px`, transform: `scale(${scale})`}}\n >\n {children}\n </div>\n </div>\n )\n}\n","import {forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport type {CSSProperties, ForwardedRef, PointerEvent as ReactPointerEvent, ReactElement, Ref} from 'react'\nimport type {MCanvasGridItem, MCanvasGridPosition, MCanvasGridProps} from './MCanvasGrid.types'\nimport {cn} from '../../../utils/cn'\nimport {MShellBreakpoints, useMaxWidth} from '../../../theme'\nimport {MEditIcon, MMoveIcon, MTrashIcon, MZoomInIcon} from '../../../icons'\nimport {MButton} from '../../controls/MButton'\nimport {MButtonGroup} from '../../controls/MButtonGroup'\nimport {ScaleToFit} from './ScaleToFit'\nimport './MCanvasGrid.css'\n\ninterface DragState {\n itemId: string\n mode: 'drag' | 'resize'\n startClientX: number\n startClientY: number\n original: MCanvasGridPosition\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction MCanvasGridInner<T extends MCanvasGridItem>(\n {\n columns = 24,\n rows = 24,\n snap = 4,\n items,\n renderItem,\n minItemSize,\n maxItemSize: _maxItemSize,\n editable = false,\n onItemMove,\n onItemResize,\n onItemRemove,\n onItemEdit,\n onItemExpand,\n guides = 'always',\n compactBreakpoint = MShellBreakpoints.compact,\n mobileBreakpoint = MShellBreakpoints.mobile,\n height,\n fitContent = 'scroll',\n fitContentBaseWidth = 480,\n className,\n style,\n }: MCanvasGridProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n) {\n const innerRef = useRef<HTMLDivElement | null>(null)\n const [size, setSize] = useState({width: 0, height: 0})\n const [drag, setDrag] = useState<DragState | null>(null)\n const [preview, setPreview] = useState<MCanvasGridPosition | null>(null)\n const [touchOrder, setTouchOrder] = useState<Record<string, number>>({})\n const touchCounterRef = useRef(0)\n\n function bringToFront(itemId: string) {\n touchCounterRef.current += 1\n setTouchOrder((prev) => ({...prev, [itemId]: touchCounterRef.current}))\n }\n\n function suppressNextClick() {\n let armed = true\n const stopper = (ev: MouseEvent) => {\n if (!armed) return\n armed = false\n ev.stopPropagation()\n ev.preventDefault()\n window.removeEventListener('click', stopper, true)\n }\n window.addEventListener('click', stopper, true)\n window.setTimeout(() => {\n if (!armed) return\n armed = false\n window.removeEventListener('click', stopper, true)\n }, 60)\n }\n\n const isMobile = useMaxWidth(mobileBreakpoint)\n const isCompact = useMaxWidth(compactBreakpoint) && !isMobile\n\n const totalCols = columns * snap\n const totalRows = rows * snap\n const effectiveCols = isCompact ? Math.max(1, Math.round(totalCols / 2)) : totalCols\n const effectiveRows = isCompact ? Math.max(1, Math.round(totalRows / 2)) : totalRows\n const effectiveCells = isCompact ? Math.max(1, Math.round(columns / 2)) : columns\n const effectiveRowCells = isCompact ? Math.max(1, Math.round(rows / 2)) : rows\n\n const interactive = editable && !isMobile\n\n useEffect(() => {\n const node = innerRef.current\n if (!node || typeof ResizeObserver === 'undefined') return\n const update = () => setSize({width: node.clientWidth, height: node.clientHeight})\n update()\n const observer = new ResizeObserver(update)\n observer.observe(node)\n return () => observer.disconnect()\n }, [])\n\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n innerRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as {current: HTMLDivElement | null}).current = node\n },\n [ref]\n )\n\n function getMin(item: T) {\n const m = minItemSize?.(item)\n if (!m) return {w: snap, h: snap}\n return {w: Math.max(snap, m.w * snap), h: Math.max(snap, m.h * snap)}\n }\n\n function startResize(e: ReactPointerEvent<HTMLDivElement>, item: T) {\n if (!interactive) return\n e.stopPropagation()\n e.preventDefault()\n ;(e.currentTarget as Element).setPointerCapture(e.pointerId)\n bringToFront(item.id)\n setDrag({\n itemId: item.id,\n mode: 'resize',\n startClientX: e.clientX,\n startClientY: e.clientY,\n original: {...item.position},\n })\n setPreview({...item.position})\n }\n\n function startDragFromHeader(e: ReactPointerEvent<HTMLDivElement>, item: T) {\n if (!interactive) return\n if ((e.target as Element).closest('button, [role=\"button\"]')) return\n e.stopPropagation()\n e.preventDefault()\n ;(e.currentTarget as Element).setPointerCapture(e.pointerId)\n bringToFront(item.id)\n setDrag({\n itemId: item.id,\n mode: 'drag',\n startClientX: e.clientX,\n startClientY: e.clientY,\n original: {...item.position},\n })\n setPreview({...item.position})\n }\n\n function handlePointerMove(e: ReactPointerEvent<HTMLDivElement>) {\n if (!drag || size.width === 0 || size.height === 0) return\n const cellPxX = size.width / effectiveCols\n const cellPxY = size.height / effectiveRows\n const dx = Math.round((e.clientX - drag.startClientX) / cellPxX)\n const dy = Math.round((e.clientY - drag.startClientY) / cellPxY)\n const original = drag.original\n\n const targetItem = items.find((it) => it.id === drag.itemId)\n const min = targetItem ? getMin(targetItem) : {w: snap, h: snap}\n\n if (drag.mode === 'drag') {\n const x = clamp(original.x + dx, 0, effectiveCols - original.w)\n const y = clamp(original.y + dy, 0, effectiveRows - original.h)\n setPreview({x, y, w: original.w, h: original.h})\n } else {\n const w = clamp(original.w + dx, min.w, effectiveCols - original.x)\n const h = clamp(original.h + dy, min.h, effectiveRows - original.y)\n setPreview({x: original.x, y: original.y, w, h})\n }\n }\n\n function handlePointerUp(e: ReactPointerEvent<HTMLDivElement>) {\n if (!drag) return\n try {\n ;(e.currentTarget as Element).releasePointerCapture(e.pointerId)\n } catch {\n // pointer may have already been released\n }\n if (preview) {\n if (drag.mode === 'drag') onItemMove?.(drag.itemId, preview)\n else onItemResize?.(drag.itemId, preview)\n }\n setDrag(null)\n setPreview(null)\n }\n\n function handleHeaderPointerUp(e: ReactPointerEvent<HTMLDivElement>) {\n if (drag) {\n suppressNextClick()\n handlePointerUp(e)\n }\n }\n\n const guidesOn =\n guides === 'always' ||\n (guides === 'on-edit' && interactive) ||\n (guides === 'on-drag' && drag !== null)\n\n const heightStyle: CSSProperties | undefined =\n height !== undefined ? {height: typeof height === 'number' ? `${height}px` : height} : undefined\n\n if (isMobile) {\n const ordered = [...items].sort((a, b) => a.position.y - b.position.y)\n return (\n <div\n ref={setRefs}\n className={cn('canvas-grid', 'mobile', className)}\n data-guides=\"off\"\n style={{...heightStyle, ...style}}\n >\n {ordered.map((item) => (\n <div key={item.id} className=\"canvas-grid-item\">\n {renderItem(item)}\n </div>\n ))}\n </div>\n )\n }\n\n const gridStyle: CSSProperties = {\n ...heightStyle,\n ...style,\n gridTemplateColumns: `repeat(${effectiveCols}, 1fr)`,\n gridTemplateRows: `repeat(${effectiveRows}, 1fr)`,\n ['--canvas-grid-cells' as string]: String(effectiveCells),\n ['--canvas-grid-row-cells' as string]: String(effectiveRowCells),\n }\n\n const overlayCells = effectiveCells * effectiveRowCells\n\n return (\n <div\n ref={setRefs}\n className={cn('canvas-grid', isCompact && 'compact', interactive && 'editable', className)}\n data-guides={guidesOn ? 'on' : 'off'}\n style={gridStyle}\n >\n <div className=\"canvas-grid-overlay\" aria-hidden>\n {Array.from({length: overlayCells}, (_, idx) => {\n const isLastCol = (idx + 1) % effectiveCells === 0\n const isLastRow = idx >= overlayCells - effectiveCells\n return (\n <div\n key={idx}\n className={cn('canvas-grid-cell', isLastCol && 'no-right', isLastRow && 'no-bottom')}\n />\n )\n })}\n </div>\n\n {items.map((item) => {\n const isDragging = drag?.itemId === item.id\n const live = isDragging && preview ? preview : item.position\n // half-precision math for compact viewport\n const x = isCompact ? Math.round(live.x / 2) : live.x\n const y = isCompact ? Math.round(live.y / 2) : live.y\n const w = Math.max(1, isCompact ? Math.round(live.w / 2) : live.w)\n const h = Math.max(1, isCompact ? Math.round(live.h / 2) : live.h)\n\n const baseZ = 1 + (touchOrder[item.id] ?? 0)\n const itemStyle: CSSProperties = {\n gridColumn: `${x + 1} / span ${w}`,\n gridRow: `${y + 1} / span ${h}`,\n zIndex: isDragging ? baseZ + 100 : baseZ,\n }\n\n return (\n <div\n key={item.id}\n className={cn('canvas-grid-item', isDragging && 'dragging')}\n style={itemStyle}\n >\n <div\n className=\"canvas-grid-item-header\"\n onPointerDown={(e) => startDragFromHeader(e, item)}\n onPointerMove={handlePointerMove}\n onPointerUp={handleHeaderPointerUp}\n onPointerCancel={handlePointerUp}\n >\n <MButtonGroup variant=\"ghost\" size=\"xs\">\n {interactive && onItemEdit && (\n <MButton\n color=\"primary\"\n iconOnly\n aria-label=\"Edit tile\"\n startIcon={<MEditIcon />}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={(e) => {\n e.stopPropagation()\n onItemEdit(item.id)\n }}\n />\n )}\n {onItemExpand && (\n <MButton\n color=\"primary\"\n iconOnly\n aria-label=\"Expand tile\"\n startIcon={<MZoomInIcon />}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={(e) => {\n e.stopPropagation()\n onItemExpand(item.id)\n }}\n />\n )}\n {interactive && onItemRemove && (\n <MButton\n color=\"error\"\n iconOnly\n aria-label=\"Remove tile\"\n startIcon={<MTrashIcon />}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={(e) => {\n e.stopPropagation()\n onItemRemove(item.id)\n }}\n />\n )}\n </MButtonGroup>\n </div>\n <div className=\"canvas-grid-item-body\">\n {fitContent === 'scale' ? (\n <ScaleToFit baseWidth={fitContentBaseWidth}>{renderItem(item)}</ScaleToFit>\n ) : (\n renderItem(item)\n )}\n </div>\n {!interactive && onItemExpand && (\n <MButton\n className=\"canvas-grid-view-expand-handle\"\n variant=\"filled\"\n shape=\"circle\"\n size=\"sm\"\n color=\"primary\"\n iconOnly\n aria-label=\"Expand tile\"\n startIcon={<MZoomInIcon />}\n onClick={(e) => {\n e.stopPropagation()\n onItemExpand(item.id)\n }}\n />\n )}\n {interactive && isDragging && (\n <div className=\"canvas-grid-item-glass\" aria-hidden>\n <MMoveIcon size={28} />\n </div>\n )}\n {interactive && (\n <div\n className=\"canvas-grid-resize-handle\"\n aria-hidden\n onPointerDown={(e) => startResize(e, item)}\n onPointerMove={handlePointerMove}\n onPointerUp={(e) => {\n if (drag) suppressNextClick()\n handlePointerUp(e)\n }}\n onPointerCancel={handlePointerUp}\n />\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport const MCanvasGrid = forwardRef(MCanvasGridInner) as <T extends MCanvasGridItem>(\n props: MCanvasGridProps<T> & {ref?: Ref<HTMLDivElement>}\n) => ReactElement | null\n","import {forwardRef, useEffect, useImperativeHandle, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MStickyPanelProps} from './MStickyPanel.types'\nimport {cn} from '../../../utils/cn'\nimport './MStickyPanel.css'\n\nconst INTERACTIVE_SELECTOR = 'button, a, [role=\"button\"]'\n\n// Sticky side-rail panel: sticks to the viewport at `top`, fills viewport-relative height,\n// scrolls internally with an optional hidden scrollbar and click-and-drag scrolling.\nexport const MStickyPanel = forwardRef<HTMLDivElement, MStickyPanelProps>(function MStickyPanel(\n {\n children,\n top = 16,\n bottomGap = 16,\n hideScrollbar = true,\n draggable = true,\n className,\n style,\n ...rest\n },\n forwardedRef\n) {\n const panelRef = useRef<HTMLDivElement>(null)\n useImperativeHandle(forwardedRef, () => panelRef.current as HTMLDivElement)\n const dragState = useRef<{startY: number; startScrollTop: number} | null>(null)\n const [dragging, setDragging] = useState(false)\n\n useEffect(() => {\n if (!draggable) return\n\n const handleMouseMove = (event: MouseEvent) => {\n const drag = dragState.current\n const panel = panelRef.current\n if (!drag || !panel) return\n panel.scrollTop = drag.startScrollTop - (event.clientY - drag.startY)\n }\n\n const handleMouseUp = () => {\n if (!dragState.current) return\n dragState.current = null\n setDragging(false)\n }\n\n window.addEventListener('mousemove', handleMouseMove)\n window.addEventListener('mouseup', handleMouseUp)\n return () => {\n window.removeEventListener('mousemove', handleMouseMove)\n window.removeEventListener('mouseup', handleMouseUp)\n }\n }, [draggable])\n\n const handleMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!draggable) return\n // Skip drag start when the click originated on an interactive descendant\n // (button, link, role=button) so triggers like MDropdownMenu, MButton or\n // <Link> stay clickable inside the panel.\n const target = event.target as HTMLElement | null\n if (target && target.closest(INTERACTIVE_SELECTOR)) return\n\n const panel = panelRef.current\n if (!panel) return\n\n dragState.current = {startY: event.clientY, startScrollTop: panel.scrollTop}\n setDragging(true)\n event.preventDefault()\n }\n\n const mergedStyle: React.CSSProperties = {\n top,\n height: `calc(100vh - ${top + bottomGap}px)`,\n ...style,\n }\n\n return (\n <div\n ref={panelRef}\n className={cn(\n 'm-sticky-panel',\n draggable && 'draggable',\n dragging && 'is-dragging',\n hideScrollbar && 'hide-scrollbar',\n className\n )}\n style={mergedStyle}\n onMouseDown={handleMouseDown}\n {...rest}\n >\n {children}\n </div>\n )\n})\n"],"mappings":"ifAOA,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,14 +1,14 @@
1
1
  import { i as e, n as t, r as n } from "./theme-DAOU1aPs.js";
2
- import { $n as r, Gn as i, Ui as a, Zn as o, er as s, vr as c } from "./icons-DLP-Rs6z.js";
2
+ import { $n as r, Gn as i, Sr as a, Zn as o, er as s, qi as c } from "./icons-CBMl-kOM.js";
3
3
  import { t as l } from "./cn-YER3QsV1.js";
4
4
  import { n as u, t as d } from "./layoutProps-CE5-ghKw.js";
5
5
  import { n as f } from "./MSurface-B-sjyczH.js";
6
6
  import { t as p } from "./MLink-Bd8fLH1N.js";
7
7
  import { t as m } from "./MButton-C1pnL4_j.js";
8
8
  import { t as h } from "./MButtonGroup-BkNf7fzo.js";
9
- import { t as g } from "./MSimpleGrid-BVeCK9Ci.js";
10
- import { t as _ } from "./MTooltip-Ctyjwxv-.js";
11
- import { i as v } from "./MDropdownMenu-omTEUh4V.js";
9
+ import { t as g } from "./MSimpleGrid-BWKurW6H.js";
10
+ import { t as _ } from "./MTooltip-BTJkzOah.js";
11
+ import { i as v } from "./MDropdownMenu-BeD_DxPr.js";
12
12
  import { Children as y, cloneElement as b, createContext as x, forwardRef as S, isValidElement as C, useCallback as w, useContext as T, useEffect as E, useId as D, useImperativeHandle as O, useMemo as k, useRef as A, useState as j } from "react";
13
13
  import { jsx as M, jsxs as N } from "react/jsx-runtime";
14
14
  //#region src/components/layout/MContainer/MContainer.tsx
@@ -373,23 +373,23 @@ function K({ mode: n = "auto", defaultMode: r = "expanded", onModeChange: i, per
373
373
  });
374
374
  }
375
375
  function q({ bordered: e = !1, className: t, children: n }) {
376
- let { mode: r, mobile: i, canToggle: o, toggleMode: s } = G(), c = !i && r === "collapsed";
376
+ let { mode: r, mobile: i, canToggle: a, toggleMode: o } = G(), s = !i && r === "collapsed";
377
377
  return /* @__PURE__ */ N("div", {
378
378
  className: l("sidebar-header", e && "bordered", t),
379
379
  children: [/* @__PURE__ */ M("div", {
380
380
  className: "sidebar-header-content",
381
381
  children: n
382
- }), o && /* @__PURE__ */ M(m, {
382
+ }), a && /* @__PURE__ */ M(m, {
383
383
  variant: "outlined",
384
384
  color: "neutral",
385
385
  iconOnly: !0,
386
386
  size: "sm",
387
- onClick: s,
388
- "aria-label": c ? "Expand sidebar" : "Collapse sidebar",
387
+ onClick: o,
388
+ "aria-label": s ? "Expand sidebar" : "Collapse sidebar",
389
389
  className: "sidebar-toggle",
390
390
  children: /* @__PURE__ */ M("span", {
391
- className: l("sidebar-chevron", c && "flipped"),
392
- children: /* @__PURE__ */ M(a, {})
391
+ className: l("sidebar-chevron", s && "flipped"),
392
+ children: /* @__PURE__ */ M(c, {})
393
393
  })
394
394
  })]
395
395
  });
@@ -435,11 +435,11 @@ function Y({ icon: e, label: t, description: n, href: r, to: i, onClick: a, acti
435
435
  ]
436
436
  });
437
437
  }
438
- function te({ label: e, icon: t, active: n = !1, defaultOpen: r = !0, collapsible: i = !0, children: o, className: s }) {
439
- let c = G(), { mode: u, mobile: d } = c, f = !d && u === "collapsed", [p, m] = j(r), h = k(() => ({
440
- ...c,
438
+ function te({ label: e, icon: t, active: n = !1, defaultOpen: r = !0, collapsible: i = !0, children: a, className: o }) {
439
+ let s = G(), { mode: u, mobile: d } = s, f = !d && u === "collapsed", [p, m] = j(r), h = k(() => ({
440
+ ...s,
441
441
  mode: "expanded"
442
- }), [c]), g = () => {
442
+ }), [s]), g = () => {
443
443
  i && m((e) => !e);
444
444
  };
445
445
  if (f) {
@@ -449,7 +449,7 @@ function te({ label: e, icon: t, active: n = !1, defaultOpen: r = !0, collapsibl
449
449
  children: t
450
450
  });
451
451
  return /* @__PURE__ */ M("div", {
452
- className: l("sidebar-group", s),
452
+ className: l("sidebar-group", o),
453
453
  children: /* @__PURE__ */ M(v, {
454
454
  trigger: r,
455
455
  placement: "right-start",
@@ -457,13 +457,13 @@ function te({ label: e, icon: t, active: n = !1, defaultOpen: r = !0, collapsibl
457
457
  openOn: "hover",
458
458
  children: /* @__PURE__ */ M(W.Provider, {
459
459
  value: h,
460
- children: o
460
+ children: a
461
461
  })
462
462
  })
463
463
  });
464
464
  }
465
465
  return /* @__PURE__ */ N("div", {
466
- className: l("sidebar-group", s),
466
+ className: l("sidebar-group", o),
467
467
  children: [/* @__PURE__ */ N("button", {
468
468
  className: l("sidebar-group-header", n && "active"),
469
469
  onClick: g,
@@ -479,12 +479,12 @@ function te({ label: e, icon: t, active: n = !1, defaultOpen: r = !0, collapsibl
479
479
  }),
480
480
  i && /* @__PURE__ */ M("span", {
481
481
  className: l("sidebar-group-arrow", p && "open"),
482
- children: /* @__PURE__ */ M(a, {})
482
+ children: /* @__PURE__ */ M(c, {})
483
483
  })
484
484
  ]
485
485
  }), p && /* @__PURE__ */ M("div", {
486
486
  className: "sidebar-group-items",
487
- children: o
487
+ children: a
488
488
  })]
489
489
  });
490
490
  }
@@ -612,7 +612,7 @@ function ie({ baseWidth: e = 480, children: t }) {
612
612
  function ae(e, t, n) {
613
613
  return Math.max(t, Math.min(n, e));
614
614
  }
615
- function $({ columns: n = 24, rows: a = 24, snap: o = 4, items: u, renderItem: d, minItemSize: f, maxItemSize: p, editable: g = !1, onItemMove: _, onItemResize: v, onItemRemove: y, onItemEdit: b, onItemExpand: x, guides: S = "always", compactBreakpoint: C = t.compact, mobileBreakpoint: T = t.mobile, height: D, fitContent: O = "scroll", fitContentBaseWidth: k = 480, className: P, style: F }, I) {
615
+ function $({ columns: n = 24, rows: o = 24, snap: c = 4, items: u, renderItem: d, minItemSize: f, maxItemSize: p, editable: g = !1, onItemMove: _, onItemResize: v, onItemRemove: y, onItemEdit: b, onItemExpand: x, guides: S = "always", compactBreakpoint: C = t.compact, mobileBreakpoint: T = t.mobile, height: D, fitContent: O = "scroll", fitContentBaseWidth: k = 480, className: P, style: F }, I) {
616
616
  let L = A(null), [R, z] = j({
617
617
  width: 0,
618
618
  height: 0
@@ -631,7 +631,7 @@ function $({ columns: n = 24, rows: a = 24, snap: o = 4, items: u, renderItem: d
631
631
  e && (e = !1, window.removeEventListener("click", t, !0));
632
632
  }, 60);
633
633
  }
634
- let J = e(T), Y = e(C) && !J, te = n * o, ne = a * o, X = Y ? Math.max(1, Math.round(te / 2)) : te, Z = Y ? Math.max(1, Math.round(ne / 2)) : ne, Q = Y ? Math.max(1, Math.round(n / 2)) : n, re = Y ? Math.max(1, Math.round(a / 2)) : a, $ = g && !J;
634
+ let J = e(T), Y = e(C) && !J, te = n * c, ne = o * c, X = Y ? Math.max(1, Math.round(te / 2)) : te, Z = Y ? Math.max(1, Math.round(ne / 2)) : ne, Q = Y ? Math.max(1, Math.round(n / 2)) : n, re = Y ? Math.max(1, Math.round(o / 2)) : o, $ = g && !J;
635
635
  E(() => {
636
636
  let e = L.current;
637
637
  if (!e || typeof ResizeObserver > "u") return;
@@ -649,11 +649,11 @@ function $({ columns: n = 24, rows: a = 24, snap: o = 4, items: u, renderItem: d
649
649
  function se(e) {
650
650
  let t = f?.(e);
651
651
  return t ? {
652
- w: Math.max(o, t.w * o),
653
- h: Math.max(o, t.h * o)
652
+ w: Math.max(c, t.w * c),
653
+ h: Math.max(c, t.h * c)
654
654
  } : {
655
- w: o,
656
- h: o
655
+ w: c,
656
+ h: c
657
657
  };
658
658
  }
659
659
  function ce(e, t) {
@@ -676,9 +676,9 @@ function $({ columns: n = 24, rows: a = 24, snap: o = 4, items: u, renderItem: d
676
676
  }
677
677
  function ue(e) {
678
678
  if (!B || R.width === 0 || R.height === 0) return;
679
- let t = R.width / X, n = R.height / Z, r = Math.round((e.clientX - B.startClientX) / t), i = Math.round((e.clientY - B.startClientY) / n), a = B.original, s = u.find((e) => e.id === B.itemId), c = s ? se(s) : {
680
- w: o,
681
- h: o
679
+ let t = R.width / X, n = R.height / Z, r = Math.round((e.clientX - B.startClientX) / t), i = Math.round((e.clientY - B.startClientY) / n), a = B.original, o = u.find((e) => e.id === B.itemId), s = o ? se(o) : {
680
+ w: c,
681
+ h: c
682
682
  };
683
683
  if (B.mode === "drag") U({
684
684
  x: ae(a.x + r, 0, X - a.w),
@@ -687,7 +687,7 @@ function $({ columns: n = 24, rows: a = 24, snap: o = 4, items: u, renderItem: d
687
687
  h: a.h
688
688
  });
689
689
  else {
690
- let e = ae(a.w + r, c.w, X - a.x), t = ae(a.h + i, c.h, Z - a.y);
690
+ let e = ae(a.w + r, s.w, X - a.x), t = ae(a.h + i, s.h, Z - a.y);
691
691
  U({
692
692
  x: a.x,
693
693
  y: a.y,
@@ -745,9 +745,9 @@ function $({ columns: n = 24, rows: a = 24, snap: o = 4, items: u, renderItem: d
745
745
  return /* @__PURE__ */ M("div", { className: l("canvas-grid-cell", n && "no-right", r && "no-bottom") }, t);
746
746
  })
747
747
  }), u.map((e) => {
748
- let t = B?.itemId === e.id, n = t && H ? H : e.position, a = Y ? Math.round(n.x / 2) : n.x, o = Y ? Math.round(n.y / 2) : n.y, u = Math.max(1, Y ? Math.round(n.w / 2) : n.w), f = Math.max(1, Y ? Math.round(n.h / 2) : n.h), p = 1 + (W[e.id] ?? 0), g = {
749
- gridColumn: `${a + 1} / span ${u}`,
750
- gridRow: `${o + 1} / span ${f}`,
748
+ let t = B?.itemId === e.id, n = t && H ? H : e.position, o = Y ? Math.round(n.x / 2) : n.x, c = Y ? Math.round(n.y / 2) : n.y, u = Math.max(1, Y ? Math.round(n.w / 2) : n.w), f = Math.max(1, Y ? Math.round(n.h / 2) : n.h), p = 1 + (W[e.id] ?? 0), g = {
749
+ gridColumn: `${o + 1} / span ${u}`,
750
+ gridRow: `${c + 1} / span ${f}`,
751
751
  zIndex: t ? p + 100 : p
752
752
  };
753
753
  return /* @__PURE__ */ N("div", {
@@ -820,7 +820,7 @@ function $({ columns: n = 24, rows: a = 24, snap: o = 4, items: u, renderItem: d
820
820
  $ && t && /* @__PURE__ */ M("div", {
821
821
  className: "canvas-grid-item-glass",
822
822
  "aria-hidden": !0,
823
- children: /* @__PURE__ */ M(c, { size: 28 })
823
+ children: /* @__PURE__ */ M(a, { size: 28 })
824
824
  }),
825
825
  $ && /* @__PURE__ */ M("div", {
826
826
  className: "canvas-grid-resize-handle",
@@ -879,4 +879,4 @@ var oe = S($), se = "button, a, [role=\"button\"]", ce = S(function({ children:
879
879
  //#endregion
880
880
  export { z as _, Z as a, F as b, X as c, q as d, Y as f, B as g, V as h, re as i, ne as l, H as m, oe as n, K as o, J as p, Q as r, ee as s, ce as t, te as u, L as v, P as x, I as y };
881
881
 
882
- //# sourceMappingURL=layout-CnEOTJnJ.js.map
882
+ //# sourceMappingURL=layout-i8H5tIbO.js.map