@banzamel/mineralui 1.1.1 → 1.3.0

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 (317) hide show
  1. package/README.md +1 -1
  2. package/dist/MAvatar-B4Y9P5ua.js +57 -0
  3. package/dist/MAvatar-B4Y9P5ua.js.map +1 -0
  4. package/dist/MAvatar-D4ZC9wml.cjs +2 -0
  5. package/dist/MAvatar-D4ZC9wml.cjs.map +1 -0
  6. package/dist/MBadge-BaeeIRhu.js +19 -0
  7. package/dist/MBadge-BaeeIRhu.js.map +1 -0
  8. package/dist/MBadge-DJuqtMP7.cjs +2 -0
  9. package/dist/MBadge-DJuqtMP7.cjs.map +1 -0
  10. package/dist/MButton-Rg85cgO1.cjs +2 -0
  11. package/dist/{MButton-CX8SV1m0.cjs.map → MButton-Rg85cgO1.cjs.map} +1 -1
  12. package/dist/MButton-pSNx-6UK.js +113 -0
  13. package/dist/{MButton-BJdrNg2I.js.map → MButton-pSNx-6UK.js.map} +1 -1
  14. package/dist/{MCheckbox-DfCD0EtS.js → MCheckbox-B7SpcD4H.js} +1 -1
  15. package/dist/{MCheckbox-DfCD0EtS.js.map → MCheckbox-B7SpcD4H.js.map} +1 -1
  16. package/dist/{MCheckbox-CAZA97h7.cjs → MCheckbox-Bea3orrs.cjs} +1 -1
  17. package/dist/{MCheckbox-CAZA97h7.cjs.map → MCheckbox-Bea3orrs.cjs.map} +1 -1
  18. package/dist/{MCookieBootstrap-BhTMPs8T.js → MCookieBootstrap-CNYLvKjW.js} +1 -1
  19. package/dist/{MCookieBootstrap-BhTMPs8T.js.map → MCookieBootstrap-CNYLvKjW.js.map} +1 -1
  20. package/dist/{MCookieBootstrap-Fxpem-gF.cjs → MCookieBootstrap-DSOT4FQo.cjs} +1 -1
  21. package/dist/{MCookieBootstrap-Fxpem-gF.cjs.map → MCookieBootstrap-DSOT4FQo.cjs.map} +1 -1
  22. package/dist/{MDataTable-D-ASD4g3.js → MDataTable-D5SnGm3D.js} +10 -10
  23. package/dist/{MDataTable-D-ASD4g3.js.map → MDataTable-D5SnGm3D.js.map} +1 -1
  24. package/dist/{MDataTable-BZs6Cn9e.cjs → MDataTable-_afEvx2S.cjs} +2 -2
  25. package/dist/{MDataTable-BZs6Cn9e.cjs.map → MDataTable-_afEvx2S.cjs.map} +1 -1
  26. package/dist/{MDrawer-CTVEF34p.cjs → MDrawer-2NDNRU77.cjs} +2 -2
  27. package/dist/{MDrawer-CTVEF34p.cjs.map → MDrawer-2NDNRU77.cjs.map} +1 -1
  28. package/dist/{MDrawer-CscOMXBg.js → MDrawer-CHvOVWPw.js} +2 -2
  29. package/dist/{MDrawer-CscOMXBg.js.map → MDrawer-CHvOVWPw.js.map} +1 -1
  30. package/dist/{MDropdownMenu-B1eOmM7u.js → MDropdownMenu-CxBhYxQb.js} +1 -1
  31. package/dist/{MDropdownMenu-B1eOmM7u.js.map → MDropdownMenu-CxBhYxQb.js.map} +1 -1
  32. package/dist/{MDropdownMenu-CiJ_7DQ2.cjs → MDropdownMenu-X7ywPqth.cjs} +1 -1
  33. package/dist/{MDropdownMenu-CiJ_7DQ2.cjs.map → MDropdownMenu-X7ywPqth.cjs.map} +1 -1
  34. package/dist/MHeading-C5s-kb2D.js +21 -0
  35. package/dist/MHeading-C5s-kb2D.js.map +1 -0
  36. package/dist/MHeading-CvAYmqMN.cjs +2 -0
  37. package/dist/MHeading-CvAYmqMN.cjs.map +1 -0
  38. package/dist/MImage-DqAx0_B0.cjs +2 -0
  39. package/dist/MImage-DqAx0_B0.cjs.map +1 -0
  40. package/dist/MImage-F34N1nhB.js +53 -0
  41. package/dist/MImage-F34N1nhB.js.map +1 -0
  42. package/dist/MInline-BKY7arDg.js +41 -0
  43. package/dist/MInline-BKY7arDg.js.map +1 -0
  44. package/dist/MInline-FgdIt6kv.cjs +2 -0
  45. package/dist/MInline-FgdIt6kv.cjs.map +1 -0
  46. package/dist/{MInput-BZ1ZPuk3.cjs → MInput-C_Prnehc.cjs} +2 -2
  47. package/dist/{MInput-BZ1ZPuk3.cjs.map → MInput-C_Prnehc.cjs.map} +1 -1
  48. package/dist/{MInput-B8RPS-wr.js → MInput-DI066RK9.js} +2 -2
  49. package/dist/{MInput-B8RPS-wr.js.map → MInput-DI066RK9.js.map} +1 -1
  50. package/dist/{MInputCVC-DOBmGhJL.cjs → MInputCVC-B75iBIRt.cjs} +2 -2
  51. package/dist/{MInputCVC-DOBmGhJL.cjs.map → MInputCVC-B75iBIRt.cjs.map} +1 -1
  52. package/dist/{MInputCVC-BJQWuuwR.js → MInputCVC-BlBZjRft.js} +3 -3
  53. package/dist/{MInputCVC-BJQWuuwR.js.map → MInputCVC-BlBZjRft.js.map} +1 -1
  54. package/dist/{MInputSearch-DAAg9FXv.cjs → MInputSearch-BKQnKS-9.cjs} +2 -2
  55. package/dist/{MInputSearch-DAAg9FXv.cjs.map → MInputSearch-BKQnKS-9.cjs.map} +1 -1
  56. package/dist/{MInputSearch-PMHykVrc.js → MInputSearch-CBsBsuqu.js} +2 -2
  57. package/dist/{MInputSearch-PMHykVrc.js.map → MInputSearch-CBsBsuqu.js.map} +1 -1
  58. package/dist/MLink-BgYBHhce.js +31 -0
  59. package/dist/{MLink-CBmT8zaD.js.map → MLink-BgYBHhce.js.map} +1 -1
  60. package/dist/MLink-DmB3rcWB.cjs +2 -0
  61. package/dist/{MLink-D10DD8oX.cjs.map → MLink-DmB3rcWB.cjs.map} +1 -1
  62. package/dist/{MModal-CfzduXaI.cjs → MModal-BaA098nr.cjs} +2 -2
  63. package/dist/{MModal-CfzduXaI.cjs.map → MModal-BaA098nr.cjs.map} +1 -1
  64. package/dist/{MModal-BogYYyZE.js → MModal-DXZ2SrJt.js} +2 -2
  65. package/dist/{MModal-BogYYyZE.js.map → MModal-DXZ2SrJt.js.map} +1 -1
  66. package/dist/{MPagination-CgvjKhLN.js → MPagination-BFI_z3y6.js} +2 -2
  67. package/dist/{MPagination-CgvjKhLN.js.map → MPagination-BFI_z3y6.js.map} +1 -1
  68. package/dist/{MPagination-vg2EqB8z.cjs → MPagination-C6hnhbTp.cjs} +2 -2
  69. package/dist/{MPagination-vg2EqB8z.cjs.map → MPagination-C6hnhbTp.cjs.map} +1 -1
  70. package/dist/{MQrCode-l0FzrNCq.js → MQrCode-DfZwkhZV.js} +2 -2
  71. package/dist/{MQrCode-l0FzrNCq.js.map → MQrCode-DfZwkhZV.js.map} +1 -1
  72. package/dist/{MQrCode-DB9vELHq.cjs → MQrCode-L0trT6n3.cjs} +2 -2
  73. package/dist/{MQrCode-DB9vELHq.cjs.map → MQrCode-L0trT6n3.cjs.map} +1 -1
  74. package/dist/{MSkeleton-D7wnoEE8.cjs → MSkeleton-BEdflu0F.cjs} +2 -2
  75. package/dist/{MSkeleton-D7wnoEE8.cjs.map → MSkeleton-BEdflu0F.cjs.map} +1 -1
  76. package/dist/{MSkeleton-Bh9cCe49.js → MSkeleton-DX9gJ311.js} +2 -2
  77. package/dist/{MSkeleton-Bh9cCe49.js.map → MSkeleton-DX9gJ311.js.map} +1 -1
  78. package/dist/{MSlider-YDSrVUQ8.cjs → MSlider-BCMJkvcA.cjs} +1 -1
  79. package/dist/{MSlider-YDSrVUQ8.cjs.map → MSlider-BCMJkvcA.cjs.map} +1 -1
  80. package/dist/{MSlider-BlgzLtHa.js → MSlider-CqrusKJQ.js} +1 -1
  81. package/dist/{MSlider-BlgzLtHa.js.map → MSlider-CqrusKJQ.js.map} +1 -1
  82. package/dist/{MSparkline-Bl5-EHJr.cjs → MSparkline-BOaNmbeB.cjs} +1 -1
  83. package/dist/{MSparkline-Bl5-EHJr.cjs.map → MSparkline-BOaNmbeB.cjs.map} +1 -1
  84. package/dist/{MSparkline-C8tnqhJm.js → MSparkline-Cb_EwR-E.js} +1 -1
  85. package/dist/{MSparkline-C8tnqhJm.js.map → MSparkline-Cb_EwR-E.js.map} +1 -1
  86. package/dist/MStack-BgwBqm-V.cjs +2 -0
  87. package/dist/MStack-BgwBqm-V.cjs.map +1 -0
  88. package/dist/MStack-Dk0GNVBT.js +41 -0
  89. package/dist/MStack-Dk0GNVBT.js.map +1 -0
  90. package/dist/MSubText-D8VxE877.cjs +2 -0
  91. package/dist/MSubText-D8VxE877.cjs.map +1 -0
  92. package/dist/MSubText-DwNeDGYg.js +17 -0
  93. package/dist/MSubText-DwNeDGYg.js.map +1 -0
  94. package/dist/MSurface-CFbX5C63.cjs +2 -0
  95. package/dist/MSurface-CFbX5C63.cjs.map +1 -0
  96. package/dist/MSurface-COlEjDyo.js +41 -0
  97. package/dist/MSurface-COlEjDyo.js.map +1 -0
  98. package/dist/MTag-DZjcHYn0.cjs +2 -0
  99. package/dist/MTag-DZjcHYn0.cjs.map +1 -0
  100. package/dist/MTag-wsCYRndK.js +39 -0
  101. package/dist/MTag-wsCYRndK.js.map +1 -0
  102. package/dist/MText-CexZuJgV.js +45 -0
  103. package/dist/MText-CexZuJgV.js.map +1 -0
  104. package/dist/MText-YIBipYLh.cjs +2 -0
  105. package/dist/MText-YIBipYLh.cjs.map +1 -0
  106. package/dist/{MTimeAgo-LWntwbKg.cjs → MTimeAgo-91_ndjxU.cjs} +2 -2
  107. package/dist/{MTimeAgo-LWntwbKg.cjs.map → MTimeAgo-91_ndjxU.cjs.map} +1 -1
  108. package/dist/{MTimeAgo-irsvTFAY.js → MTimeAgo-xxl53mct.js} +2 -2
  109. package/dist/{MTimeAgo-irsvTFAY.js.map → MTimeAgo-xxl53mct.js.map} +1 -1
  110. package/dist/{MToggle-BbSDIAJq.js → MToggle-B6emKoKq.js} +1 -1
  111. package/dist/{MToggle-BbSDIAJq.js.map → MToggle-B6emKoKq.js.map} +1 -1
  112. package/dist/{MToggle-GhhAJgUa.cjs → MToggle-CsGS_W3X.cjs} +1 -1
  113. package/dist/{MToggle-GhhAJgUa.cjs.map → MToggle-CsGS_W3X.cjs.map} +1 -1
  114. package/dist/{MTooltip-eTM5DKtM.cjs → MTooltip-CNXoyQEN.cjs} +1 -1
  115. package/dist/{MTooltip-eTM5DKtM.cjs.map → MTooltip-CNXoyQEN.cjs.map} +1 -1
  116. package/dist/{MTooltip-BVQ7wBrO.js → MTooltip-UYOjDBOu.js} +1 -1
  117. package/dist/{MTooltip-BVQ7wBrO.js.map → MTooltip-UYOjDBOu.js.map} +1 -1
  118. package/dist/{cards-JqA2VWit.js → cards-BguCbFp7.js} +64 -64
  119. package/dist/{cards-JqA2VWit.js.map → cards-BguCbFp7.js.map} +1 -1
  120. package/dist/{cards-QoMhQlao.cjs → cards-DgOG2sWk.cjs} +2 -2
  121. package/dist/{cards-QoMhQlao.cjs.map → cards-DgOG2sWk.cjs.map} +1 -1
  122. package/dist/cards.cjs +1 -1
  123. package/dist/cards.js +2 -2
  124. package/dist/components/controls/MButton/MButton.types.d.ts +2 -2
  125. package/dist/components/feedback/MAlert/MAlert.d.ts +1 -1
  126. package/dist/components/feedback/MAlert/MAlert.types.d.ts +2 -2
  127. package/dist/components/feedback/MBadge/MBadge.d.ts +1 -1
  128. package/dist/components/feedback/MBadge/MBadge.types.d.ts +2 -2
  129. package/dist/components/feedback/MBanner/MBanner.d.ts +1 -1
  130. package/dist/components/feedback/MBanner/MBanner.types.d.ts +2 -2
  131. package/dist/components/feedback/MCookie/MCookieBootstrap/MCookieBootstrap.script.d.ts +4 -0
  132. package/dist/components/feedback/MTag/MTag.d.ts +1 -1
  133. package/dist/components/feedback/MTag/MTag.types.d.ts +2 -2
  134. package/dist/components/layout/MContainer/MContainer.d.ts +1 -1
  135. package/dist/components/layout/MContainer/MContainer.types.d.ts +2 -1
  136. package/dist/components/layout/MDivider/MDivider.d.ts +1 -1
  137. package/dist/components/layout/MDivider/MDivider.types.d.ts +2 -1
  138. package/dist/components/layout/MFooter/MFooter.d.ts +1 -1
  139. package/dist/components/layout/MFooter/MFooter.types.d.ts +2 -1
  140. package/dist/components/layout/MGrid/MGrid.d.ts +2 -2
  141. package/dist/components/layout/MGrid/MGrid.types.d.ts +4 -2
  142. package/dist/components/layout/MHeader/MHeader.d.ts +1 -1
  143. package/dist/components/layout/MHeader/MHeader.types.d.ts +2 -1
  144. package/dist/components/layout/MInline/MInline.d.ts +1 -1
  145. package/dist/components/layout/MInline/MInline.types.d.ts +2 -1
  146. package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
  147. package/dist/components/layout/MNavbar/MNavbar.types.d.ts +6 -1
  148. package/dist/components/layout/MNavbar/index.d.ts +1 -1
  149. package/dist/components/layout/MNavs/MNavs.types.d.ts +12 -2
  150. package/dist/components/layout/MNavs/index.d.ts +1 -1
  151. package/dist/components/layout/MSection/MSection.d.ts +1 -1
  152. package/dist/components/layout/MSection/MSection.types.d.ts +2 -1
  153. package/dist/components/layout/MStack/MStack.d.ts +1 -1
  154. package/dist/components/layout/MStack/MStack.types.d.ts +2 -1
  155. package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
  156. package/dist/components/layout/MSurface/MSurface.types.d.ts +2 -1
  157. package/dist/components/layout/MTopbar/MTopbar.d.ts +1 -1
  158. package/dist/components/layout/MTopbar/MTopbar.types.d.ts +2 -2
  159. package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
  160. package/dist/components/media/MAvatar/MAvatar.types.d.ts +2 -2
  161. package/dist/components/media/MAvatarStack/MAvatarStack.d.ts +1 -1
  162. package/dist/components/media/MAvatarStack/MAvatarStack.types.d.ts +2 -2
  163. package/dist/components/media/MImage/MImage.d.ts +1 -1
  164. package/dist/components/media/MImage/MImage.types.d.ts +2 -1
  165. package/dist/components/typography/MHeading/MHeading.d.ts +563 -2
  166. package/dist/components/typography/MHeading/MHeading.types.d.ts +2 -2
  167. package/dist/components/typography/MLink/MLink.types.d.ts +2 -1
  168. package/dist/components/typography/MSubText/MSubText.d.ts +1 -1
  169. package/dist/components/typography/MSubText/MSubText.types.d.ts +2 -2
  170. package/dist/components/typography/MText/MText.d.ts +1 -1
  171. package/dist/components/typography/MText/MText.types.d.ts +2 -2
  172. package/dist/controls-CN5d1q6e.cjs +2 -0
  173. package/dist/{controls-BFmZuejK.cjs.map → controls-CN5d1q6e.cjs.map} +1 -1
  174. package/dist/{controls-Dbev0qSy.js → controls-CVdInuMI.js} +145 -143
  175. package/dist/{controls-Dbev0qSy.js.map → controls-CVdInuMI.js.map} +1 -1
  176. package/dist/controls.cjs +1 -1
  177. package/dist/controls.js +6 -6
  178. package/dist/cookie-consent-bootstrap.cjs +1 -1
  179. package/dist/cookie-consent-bootstrap.cjs.map +1 -1
  180. package/dist/cookie-consent-bootstrap.js +45 -32
  181. package/dist/cookie-consent-bootstrap.js.map +1 -1
  182. package/dist/data-BZ3Uio4Z.cjs +2 -0
  183. package/dist/data-BZ3Uio4Z.cjs.map +1 -0
  184. package/dist/{data-B1hbWMzU.js → data-BpGAUxCL.js} +554 -553
  185. package/dist/data-BpGAUxCL.js.map +1 -0
  186. package/dist/data.cjs +1 -1
  187. package/dist/data.js +3 -3
  188. package/dist/{display-B-zP1BEz.cjs → display-CCG1eb0m.cjs} +2 -2
  189. package/dist/{display-B-zP1BEz.cjs.map → display-CCG1eb0m.cjs.map} +1 -1
  190. package/dist/{display-DC0d-nPm.js → display-gwrOWH2c.js} +3 -3
  191. package/dist/{display-DC0d-nPm.js.map → display-gwrOWH2c.js.map} +1 -1
  192. package/dist/display.cjs +1 -1
  193. package/dist/display.js +3 -3
  194. package/dist/{dropdowns-Vo7Oo_ii.js → dropdowns-CNKEy6vf.js} +43 -43
  195. package/dist/{dropdowns-Vo7Oo_ii.js.map → dropdowns-CNKEy6vf.js.map} +1 -1
  196. package/dist/dropdowns-HY56LZkp.cjs +2 -0
  197. package/dist/{dropdowns-CMt9-Jpa.cjs.map → dropdowns-HY56LZkp.cjs.map} +1 -1
  198. package/dist/dropdowns.cjs +1 -1
  199. package/dist/dropdowns.js +1 -1
  200. package/dist/{feedback-D29Er-TD.js → feedback-BfSdnvUS.js} +315 -312
  201. package/dist/feedback-BfSdnvUS.js.map +1 -0
  202. package/dist/feedback-DkQNQVdK.cjs +2 -0
  203. package/dist/feedback-DkQNQVdK.cjs.map +1 -0
  204. package/dist/feedback.cjs +1 -1
  205. package/dist/feedback.js +6 -6
  206. package/dist/{frameworkTexts-BgzNvcs2.js → frameworkTexts-B6oE8pMk.js} +1 -1
  207. package/dist/{frameworkTexts-BgzNvcs2.js.map → frameworkTexts-B6oE8pMk.js.map} +1 -1
  208. package/dist/{frameworkTexts-r4jSfpMt.cjs → frameworkTexts-C_9KZK_A.cjs} +1 -1
  209. package/dist/{frameworkTexts-r4jSfpMt.cjs.map → frameworkTexts-C_9KZK_A.cjs.map} +1 -1
  210. package/dist/index.cjs +1 -1
  211. package/dist/index.js +59 -59
  212. package/dist/{inputs-Bl7ssV3Q.js → inputs-BO7bjvyf.js} +115 -115
  213. package/dist/{inputs-Bl7ssV3Q.js.map → inputs-BO7bjvyf.js.map} +1 -1
  214. package/dist/{inputs-Dw9Uv8f4.cjs → inputs-vov7Kj6q.cjs} +2 -2
  215. package/dist/{inputs-Dw9Uv8f4.cjs.map → inputs-vov7Kj6q.cjs.map} +1 -1
  216. package/dist/inputs.cjs +1 -1
  217. package/dist/inputs.js +4 -4
  218. package/dist/layout-BvKpFxol.js +905 -0
  219. package/dist/layout-BvKpFxol.js.map +1 -0
  220. package/dist/layout-TFV-1uoQ.cjs +2 -0
  221. package/dist/layout-TFV-1uoQ.cjs.map +1 -0
  222. package/dist/layout.cjs +1 -1
  223. package/dist/layout.js +6 -6
  224. package/dist/{locale-uMMj57KX.js → locale-BNyzqXAU.js} +1 -1
  225. package/dist/{locale-uMMj57KX.js.map → locale-BNyzqXAU.js.map} +1 -1
  226. package/dist/{locale-LCAQDJCd.cjs → locale-BltrWJtd.cjs} +1 -1
  227. package/dist/{locale-LCAQDJCd.cjs.map → locale-BltrWJtd.cjs.map} +1 -1
  228. package/dist/media-BhRjHzpA.cjs +2 -0
  229. package/dist/{media-C4WtzWxU.cjs.map → media-BhRjHzpA.cjs.map} +1 -1
  230. package/dist/{media-D5zF3vH6.js → media-BuIEAgV-.js} +145 -143
  231. package/dist/{media-D5zF3vH6.js.map → media-BuIEAgV-.js.map} +1 -1
  232. package/dist/media.cjs +1 -1
  233. package/dist/media.js +3 -3
  234. package/dist/{overlays-D9_8GEse.cjs → overlays-CjEh_HWn.cjs} +2 -2
  235. package/dist/{overlays-D9_8GEse.cjs.map → overlays-CjEh_HWn.cjs.map} +1 -1
  236. package/dist/{overlays-BahWPCPW.js → overlays-D1SAF1F_.js} +3 -3
  237. package/dist/{overlays-BahWPCPW.js.map → overlays-D1SAF1F_.js.map} +1 -1
  238. package/dist/overlays.cjs +1 -1
  239. package/dist/overlays.js +5 -5
  240. package/dist/style-runtime.cjs +1 -1
  241. package/dist/style-runtime.js +1 -1
  242. package/dist/styles.css +1 -1
  243. package/dist/theme/MTheme.types.d.ts +5 -0
  244. package/dist/theme/index.d.ts +2 -1
  245. package/dist/theme/responsive.d.ts +18 -0
  246. package/dist/{theme-DLorpkJc.cjs → theme-CyIOdO9W.cjs} +2 -2
  247. package/dist/theme-CyIOdO9W.cjs.map +1 -0
  248. package/dist/{theme-BV4qkzZU.js → theme-Dl4EpdnW.js} +14 -2
  249. package/dist/theme-Dl4EpdnW.js.map +1 -0
  250. package/dist/theme.cjs +1 -1
  251. package/dist/theme.js +2 -2
  252. package/dist/{typography-BR2o3w3X.js → typography-BrIbvz08.js} +2 -2
  253. package/dist/{typography-BR2o3w3X.js.map → typography-BrIbvz08.js.map} +1 -1
  254. package/dist/{typography-BobOsDbn.cjs → typography-DHjL4YTH.cjs} +2 -2
  255. package/dist/{typography-BobOsDbn.cjs.map → typography-DHjL4YTH.cjs.map} +1 -1
  256. package/dist/typography.cjs +1 -1
  257. package/dist/typography.js +5 -5
  258. package/package.json +1 -1
  259. package/dist/MAvatar-nLlGAprq.cjs +0 -2
  260. package/dist/MAvatar-nLlGAprq.cjs.map +0 -1
  261. package/dist/MAvatar-tpFpLFPO.js +0 -55
  262. package/dist/MAvatar-tpFpLFPO.js.map +0 -1
  263. package/dist/MBadge-UTUlEAik.js +0 -17
  264. package/dist/MBadge-UTUlEAik.js.map +0 -1
  265. package/dist/MBadge-imAk1gYn.cjs +0 -2
  266. package/dist/MBadge-imAk1gYn.cjs.map +0 -1
  267. package/dist/MButton-BJdrNg2I.js +0 -111
  268. package/dist/MButton-CX8SV1m0.cjs +0 -2
  269. package/dist/MHeading-CMGPJwul.js +0 -19
  270. package/dist/MHeading-CMGPJwul.js.map +0 -1
  271. package/dist/MHeading-sW0j7ssI.cjs +0 -2
  272. package/dist/MHeading-sW0j7ssI.cjs.map +0 -1
  273. package/dist/MImage-3UVzZIgA.js +0 -49
  274. package/dist/MImage-3UVzZIgA.js.map +0 -1
  275. package/dist/MImage-BHgzEHMO.cjs +0 -2
  276. package/dist/MImage-BHgzEHMO.cjs.map +0 -1
  277. package/dist/MInline-DUzpnZoB.cjs +0 -2
  278. package/dist/MInline-DUzpnZoB.cjs.map +0 -1
  279. package/dist/MInline-cTj903A4.js +0 -39
  280. package/dist/MInline-cTj903A4.js.map +0 -1
  281. package/dist/MLink-CBmT8zaD.js +0 -29
  282. package/dist/MLink-D10DD8oX.cjs +0 -2
  283. package/dist/MStack-BKDsNitR.cjs +0 -2
  284. package/dist/MStack-BKDsNitR.cjs.map +0 -1
  285. package/dist/MStack-XTsT_kLJ.js +0 -39
  286. package/dist/MStack-XTsT_kLJ.js.map +0 -1
  287. package/dist/MSubText-BIaYgtU4.cjs +0 -2
  288. package/dist/MSubText-BIaYgtU4.cjs.map +0 -1
  289. package/dist/MSubText-uoh7Qx7S.js +0 -15
  290. package/dist/MSubText-uoh7Qx7S.js.map +0 -1
  291. package/dist/MSurface-B1LXFczo.js +0 -39
  292. package/dist/MSurface-B1LXFczo.js.map +0 -1
  293. package/dist/MSurface-BgZ86iYn.cjs +0 -2
  294. package/dist/MSurface-BgZ86iYn.cjs.map +0 -1
  295. package/dist/MTag-BVo9zFIj.cjs +0 -2
  296. package/dist/MTag-BVo9zFIj.cjs.map +0 -1
  297. package/dist/MTag-Bq9b51kE.js +0 -37
  298. package/dist/MTag-Bq9b51kE.js.map +0 -1
  299. package/dist/MText-B4koGfYi.cjs +0 -2
  300. package/dist/MText-B4koGfYi.cjs.map +0 -1
  301. package/dist/MText-CKyns1SE.js +0 -43
  302. package/dist/MText-CKyns1SE.js.map +0 -1
  303. package/dist/controls-BFmZuejK.cjs +0 -2
  304. package/dist/data-B1hbWMzU.js.map +0 -1
  305. package/dist/data-BooVW8q_.cjs +0 -2
  306. package/dist/data-BooVW8q_.cjs.map +0 -1
  307. package/dist/dropdowns-CMt9-Jpa.cjs +0 -2
  308. package/dist/feedback-B-PVXL68.cjs +0 -2
  309. package/dist/feedback-B-PVXL68.cjs.map +0 -1
  310. package/dist/feedback-D29Er-TD.js.map +0 -1
  311. package/dist/layout-C1QKiv2J.cjs +0 -2
  312. package/dist/layout-C1QKiv2J.cjs.map +0 -1
  313. package/dist/layout-UP_12LRD.js +0 -817
  314. package/dist/layout-UP_12LRD.js.map +0 -1
  315. package/dist/media-C4WtzWxU.cjs +0 -2
  316. package/dist/theme-BV4qkzZU.js.map +0 -1
  317. package/dist/theme-DLorpkJc.cjs.map +0 -1
@@ -0,0 +1,31 @@
1
+ import { n as e } from "./theme-Dl4EpdnW.js";
2
+ import { t } from "./cn-YER3QsV1.js";
3
+ import { forwardRef as n } from "react";
4
+ import { jsx as r } from "react/jsx-runtime";
5
+ //#region src/components/typography/MLink/MLink.tsx
6
+ var i = n(function({ component: n, to: i, tone: a = "default", underline: o = "hover", hidden: s, current: c = !1, block: l = !1, disabled: u = !1, className: d, children: f, href: p, onClick: m, ...h }, g) {
7
+ let _ = n ?? "a";
8
+ function v(e) {
9
+ if (u) {
10
+ e.preventDefault();
11
+ return;
12
+ }
13
+ m?.(e);
14
+ }
15
+ return /* @__PURE__ */ r(_, {
16
+ ref: g,
17
+ href: n || u ? void 0 : p,
18
+ to: n ? i : void 0,
19
+ className: t("link", a, o, c && "current", l && "block", u && "disabled", d),
20
+ "aria-current": c ? "page" : void 0,
21
+ "aria-disabled": u || void 0,
22
+ onClick: v,
23
+ ...e(s),
24
+ ...h,
25
+ children: f
26
+ });
27
+ });
28
+ //#endregion
29
+ export { i as t };
30
+
31
+ //# sourceMappingURL=MLink-BgYBHhce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MLink-CBmT8zaD.js","names":[],"sources":["../src/components/typography/MLink/MLink.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MLinkProps} from './MLink.types'\nimport {cn} from '../../../utils/cn'\nimport './MLink.css'\n\n// Render a semantic link that can target anchors or router link components.\nexport const MLink = forwardRef<HTMLElement, MLinkProps>(function MLink(\n {\n component,\n to,\n tone = 'default',\n underline = 'hover',\n current = false,\n block = false,\n disabled = false,\n className,\n children,\n href,\n onClick,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'a'\n\n // Prevent disabled links from navigating while still exposing their content.\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n onClick?.(event)\n }\n\n return (\n <Component\n ref={ref}\n href={component ? undefined : disabled ? undefined : href}\n to={component ? to : undefined}\n className={cn(\n 'link',\n tone,\n underline,\n current && 'current',\n block && 'block',\n disabled && 'disabled',\n className\n )}\n aria-current={current ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n {...rest}\n >\n {children}\n </Component>\n )\n})\n"],"mappings":";;;;AAOA,IAAa,IAAQ,EAAoC,SACrD,EACI,cACA,OACA,UAAO,WACP,eAAY,SACZ,aAAU,IACV,WAAQ,IACR,cAAW,IACX,cACA,aACA,SACA,YACA,GAAG,KAEP,GACF;CACE,IAAM,IAAY,KAAa;CAG/B,SAAS,EAAY,GAAsC;AACvD,MAAI,GAAU;AACV,KAAM,gBAAgB;AACtB;;AAGJ,MAAU,EAAM;;AAGpB,QACI,kBAAC,GAAD;EACS;EACL,MAAM,KAAwB,IAAZ,KAAA,IAAmC;EACrD,IAAI,IAAY,IAAK,KAAA;EACrB,WAAW,EACP,QACA,GACA,GACA,KAAW,WACX,KAAS,SACT,KAAY,YACZ,EACH;EACD,gBAAc,IAAU,SAAS,KAAA;EACjC,iBAAe,KAAY,KAAA;EAC3B,SAAS;EACT,GAAI;EAEH;EACO,CAAA;EAElB"}
1
+ {"version":3,"file":"MLink-BgYBHhce.js","names":[],"sources":["../src/components/typography/MLink/MLink.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MLinkProps} from './MLink.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MLink.css'\n\n// Render a semantic link that can target anchors or router link components.\nexport const MLink = forwardRef<HTMLElement, MLinkProps>(function MLink(\n {\n component,\n to,\n tone = 'default',\n underline = 'hover',\n hidden,\n current = false,\n block = false,\n disabled = false,\n className,\n children,\n href,\n onClick,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'a'\n\n // Prevent disabled links from navigating while still exposing their content.\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n onClick?.(event)\n }\n\n return (\n <Component\n ref={ref}\n href={component ? undefined : disabled ? undefined : href}\n to={component ? to : undefined}\n className={cn(\n 'link',\n tone,\n underline,\n current && 'current',\n block && 'block',\n disabled && 'disabled',\n className\n )}\n aria-current={current ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n})\n"],"mappings":";;;;;AAQA,IAAa,IAAQ,EAAoC,SACrD,EACI,cACA,OACA,UAAO,WACP,eAAY,SACZ,WACA,aAAU,IACV,WAAQ,IACR,cAAW,IACX,cACA,aACA,SACA,YACA,GAAG,KAEP,GACF;CACE,IAAM,IAAY,KAAa;CAG/B,SAAS,EAAY,GAAsC;AACvD,MAAI,GAAU;AACV,KAAM,gBAAgB;AACtB;;AAGJ,MAAU,EAAM;;AAGpB,QACI,kBAAC,GAAD;EACS;EACL,MAAM,KAAwB,IAAZ,KAAA,IAAmC;EACrD,IAAI,IAAY,IAAK,KAAA;EACrB,WAAW,EACP,QACA,GACA,GACA,KAAW,WACX,KAAS,SACT,KAAY,YACZ,EACH;EACD,gBAAc,IAAU,SAAS,KAAA;EACjC,iBAAe,KAAY,KAAA;EAC3B,SAAS;EACT,GAAI,EAAe,EAAO;EAC1B,GAAI;EAEH;EACO,CAAA;EAElB"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./theme-CyIOdO9W.cjs`),t=require(`./cn-CU5TNITO.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);var i=(0,n.forwardRef)(function({component:n,to:i,tone:a=`default`,underline:o=`hover`,hidden:s,current:c=!1,block:l=!1,disabled:u=!1,className:d,children:f,href:p,onClick:m,...h},g){let _=n??`a`;function v(e){if(u){e.preventDefault();return}m?.(e)}return(0,r.jsx)(_,{ref:g,href:n||u?void 0:p,to:n?i:void 0,className:t.t(`link`,a,o,c&&`current`,l&&`block`,u&&`disabled`,d),"aria-current":c?`page`:void 0,"aria-disabled":u||void 0,onClick:v,...e.n(s),...h,children:f})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
2
+ //# sourceMappingURL=MLink-DmB3rcWB.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MLink-D10DD8oX.cjs","names":[],"sources":["../src/components/typography/MLink/MLink.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MLinkProps} from './MLink.types'\nimport {cn} from '../../../utils/cn'\nimport './MLink.css'\n\n// Render a semantic link that can target anchors or router link components.\nexport const MLink = forwardRef<HTMLElement, MLinkProps>(function MLink(\n {\n component,\n to,\n tone = 'default',\n underline = 'hover',\n current = false,\n block = false,\n disabled = false,\n className,\n children,\n href,\n onClick,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'a'\n\n // Prevent disabled links from navigating while still exposing their content.\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n onClick?.(event)\n }\n\n return (\n <Component\n ref={ref}\n href={component ? undefined : disabled ? undefined : href}\n to={component ? to : undefined}\n className={cn(\n 'link',\n tone,\n underline,\n current && 'current',\n block && 'block',\n disabled && 'disabled',\n className\n )}\n aria-current={current ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n {...rest}\n >\n {children}\n </Component>\n )\n})\n"],"mappings":"2FAOA,IAAa,GAAA,EAAA,EAAA,YAA4C,SACrD,CACI,YACA,KACA,OAAO,UACP,YAAY,QACZ,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YACA,WACA,OACA,UACA,GAAG,GAEP,EACF,CACE,IAAM,EAAY,GAAa,IAG/B,SAAS,EAAY,EAAsC,CACvD,GAAI,EAAU,CACV,EAAM,gBAAgB,CACtB,OAGJ,IAAU,EAAM,CAGpB,OACI,EAAA,EAAA,KAAC,EAAD,CACS,MACL,KAAM,GAAwB,EAAZ,IAAA,GAAmC,EACrD,GAAI,EAAY,EAAK,IAAA,GACrB,UAAW,EAAA,EACP,OACA,EACA,EACA,GAAW,UACX,GAAS,QACT,GAAY,WACZ,EACH,CACD,eAAc,EAAU,OAAS,IAAA,GACjC,gBAAe,GAAY,IAAA,GAC3B,QAAS,EACT,GAAI,EAEH,WACO,CAAA,EAElB"}
1
+ {"version":3,"file":"MLink-DmB3rcWB.cjs","names":[],"sources":["../src/components/typography/MLink/MLink.tsx"],"sourcesContent":["import {forwardRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MLinkProps} from './MLink.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport './MLink.css'\n\n// Render a semantic link that can target anchors or router link components.\nexport const MLink = forwardRef<HTMLElement, MLinkProps>(function MLink(\n {\n component,\n to,\n tone = 'default',\n underline = 'hover',\n hidden,\n current = false,\n block = false,\n disabled = false,\n className,\n children,\n href,\n onClick,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'a'\n\n // Prevent disabled links from navigating while still exposing their content.\n function handleClick(event: MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n onClick?.(event)\n }\n\n return (\n <Component\n ref={ref}\n href={component ? undefined : disabled ? undefined : href}\n to={component ? to : undefined}\n className={cn(\n 'link',\n tone,\n underline,\n current && 'current',\n block && 'block',\n disabled && 'disabled',\n className\n )}\n aria-current={current ? 'page' : undefined}\n aria-disabled={disabled || undefined}\n onClick={handleClick}\n {...getHiddenProps(hidden)}\n {...rest}\n >\n {children}\n </Component>\n )\n})\n"],"mappings":"6HAQA,IAAa,GAAA,EAAA,EAAA,YAA4C,SACrD,CACI,YACA,KACA,OAAO,UACP,YAAY,QACZ,SACA,UAAU,GACV,QAAQ,GACR,WAAW,GACX,YACA,WACA,OACA,UACA,GAAG,GAEP,EACF,CACE,IAAM,EAAY,GAAa,IAG/B,SAAS,EAAY,EAAsC,CACvD,GAAI,EAAU,CACV,EAAM,gBAAgB,CACtB,OAGJ,IAAU,EAAM,CAGpB,OACI,EAAA,EAAA,KAAC,EAAD,CACS,MACL,KAAM,GAAwB,EAAZ,IAAA,GAAmC,EACrD,GAAI,EAAY,EAAK,IAAA,GACrB,UAAW,EAAA,EACP,OACA,EACA,EACA,GAAW,UACX,GAAS,QACT,GAAY,WACZ,EACH,CACD,eAAc,EAAU,OAAS,IAAA,GACjC,gBAAe,GAAY,IAAA,GAC3B,QAAS,EACT,GAAI,EAAA,EAAe,EAAO,CAC1B,GAAI,EAEH,WACO,CAAA,EAElB"}
@@ -1,2 +1,2 @@
1
- const e=require(`./cn-CU5TNITO.cjs`),t=require(`./MPortal-PyRKsZxc.cjs`),n=require(`./MSkeleton-D7wnoEE8.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);var a=540;function o({open:o,onClose:s,title:c,description:l,footer:u,size:d=`md`,closeOnBackdrop:f=!0,closeOnEscape:p=!0,className:m,children:h,...g}){let[_,v]=(0,r.useState)(!1),[y,b]=(0,r.useState)(!1),x=(0,r.useRef)(null);return(0,r.useEffect)(()=>{o&&(v(!0),b(!1))},[o]),(0,r.useEffect)(()=>{if(!o&&_){b(!0);let e=setTimeout(()=>{v(!1),b(!1)},a);return()=>clearTimeout(e)}},[o,_]),(0,r.useEffect)(()=>{if(!o||!p)return;let e=e=>{e.key===`Escape`&&s()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[p,s,o]),(0,r.useEffect)(()=>{if(!_)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[_]),_?(0,i.jsx)(t.t,{children:(0,i.jsx)(`div`,{ref:x,className:e.t(`mineral-backdrop`,`modal-backdrop`,y&&`closing`),onMouseDown:e=>{f&&e.target===e.currentTarget&&s()},children:(0,i.jsx)(`div`,{className:`modal-shell`,children:(0,i.jsxs)(n.n,{className:e.t(`modal`,d,m),role:`dialog`,"aria-modal":`true`,"aria-labelledby":c?`mineral-modal-title`:void 0,...g,children:[(c||l)&&(0,i.jsxs)(n.a,{children:[c&&(0,i.jsx)(`div`,{id:`mineral-modal-title`,className:`modal-title`,children:c}),l&&(0,i.jsx)(`div`,{className:`modal-description`,children:l})]}),(0,i.jsx)(n.r,{children:h}),u&&(0,i.jsx)(n.i,{children:u})]})})})}):null}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=MModal-CfzduXaI.cjs.map
1
+ const e=require(`./cn-CU5TNITO.cjs`),t=require(`./MPortal-PyRKsZxc.cjs`),n=require(`./MSkeleton-BEdflu0F.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);var a=540;function o({open:o,onClose:s,title:c,description:l,footer:u,size:d=`md`,closeOnBackdrop:f=!0,closeOnEscape:p=!0,className:m,children:h,...g}){let[_,v]=(0,r.useState)(!1),[y,b]=(0,r.useState)(!1),x=(0,r.useRef)(null);return(0,r.useEffect)(()=>{o&&(v(!0),b(!1))},[o]),(0,r.useEffect)(()=>{if(!o&&_){b(!0);let e=setTimeout(()=>{v(!1),b(!1)},a);return()=>clearTimeout(e)}},[o,_]),(0,r.useEffect)(()=>{if(!o||!p)return;let e=e=>{e.key===`Escape`&&s()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[p,s,o]),(0,r.useEffect)(()=>{if(!_)return;let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[_]),_?(0,i.jsx)(t.t,{children:(0,i.jsx)(`div`,{ref:x,className:e.t(`mineral-backdrop`,`modal-backdrop`,y&&`closing`),onMouseDown:e=>{f&&e.target===e.currentTarget&&s()},children:(0,i.jsx)(`div`,{className:`modal-shell`,children:(0,i.jsxs)(n.n,{className:e.t(`modal`,d,m),role:`dialog`,"aria-modal":`true`,"aria-labelledby":c?`mineral-modal-title`:void 0,...g,children:[(c||l)&&(0,i.jsxs)(n.a,{children:[c&&(0,i.jsx)(`div`,{id:`mineral-modal-title`,className:`modal-title`,children:c}),l&&(0,i.jsx)(`div`,{className:`modal-description`,children:l})]}),(0,i.jsx)(n.r,{children:h}),u&&(0,i.jsx)(n.i,{children:u})]})})})}):null}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
2
+ //# sourceMappingURL=MModal-BaA098nr.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MModal-CfzduXaI.cjs","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx"],"sourcesContent":["import {useEffect, useState, useCallback, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? 'mineral-modal-title' : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={'mineral-modal-title'} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n"],"mappings":"qKAQA,IAAM,EAAgB,IAGtB,SAAgB,EAAO,CACnB,OACA,UACA,QACA,cACA,SACA,OAAO,KACP,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,GAAG,GACS,CACZ,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,GAAA,EAAA,EAAA,QAAqC,KAAK,CAmDhD,OAhDA,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,GAEtB,CAAC,EAAK,CAAC,EAGV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,eAAiB,CAC3B,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,aAAa,EAAM,GAErC,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAyB,CACxC,EAAM,MAAQ,UAAU,GAAS,EAIzC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAe,EAAS,EAAK,CAAC,EAElC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAmB,SAAS,KAAK,MAAM,SAG7C,MAFA,UAAS,KAAK,MAAM,SAAW,aAElB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,CAER,GAQD,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,IAAK,EACL,UAAW,EAAA,EAAG,mBAAoB,iBAAkB,GAAW,UAAU,CACzE,YAViB,GAAsC,CAC1D,GACD,EAAM,SAAW,EAAM,eAAe,GAAS,YAU3C,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,wBACZ,EAAA,EAAA,MAAC,EAAA,EAAD,CACI,UAAW,EAAA,EAAG,QAAS,EAAM,EAAU,CACvC,KAAM,SACN,aAAY,OACZ,kBAAiB,EAAQ,sBAAwB,IAAA,GACjD,GAAI,WALR,EAOM,GAAS,KACP,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,CACK,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,sBAAuB,UAAW,uBACtC,EACC,CAAA,CAET,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,6BAAsB,EAAkB,CAAA,CAC9D,CAAA,CAAA,EAElB,EAAA,EAAA,KAAC,EAAA,EAAD,CAAY,WAAqB,CAAA,CAChC,IAAU,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SAAc,EAAqB,CAAA,CAC1C,GACN,CAAA,CACJ,CAAA,CACA,CAAA,CArCO"}
1
+ {"version":3,"file":"MModal-BaA098nr.cjs","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx"],"sourcesContent":["import {useEffect, useState, useCallback, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? 'mineral-modal-title' : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={'mineral-modal-title'} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n"],"mappings":"qKAQA,IAAM,EAAgB,IAGtB,SAAgB,EAAO,CACnB,OACA,UACA,QACA,cACA,SACA,OAAO,KACP,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,GAAG,GACS,CACZ,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,GAAA,EAAA,EAAA,QAAqC,KAAK,CAmDhD,OAhDA,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,GAEtB,CAAC,EAAK,CAAC,EAGV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,eAAiB,CAC3B,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,aAAa,EAAM,GAErC,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAyB,CACxC,EAAM,MAAQ,UAAU,GAAS,EAIzC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAe,EAAS,EAAK,CAAC,EAElC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAmB,SAAS,KAAK,MAAM,SAG7C,MAFA,UAAS,KAAK,MAAM,SAAW,aAElB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,CAER,GAQD,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,IAAK,EACL,UAAW,EAAA,EAAG,mBAAoB,iBAAkB,GAAW,UAAU,CACzE,YAViB,GAAsC,CAC1D,GACD,EAAM,SAAW,EAAM,eAAe,GAAS,YAU3C,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,wBACZ,EAAA,EAAA,MAAC,EAAA,EAAD,CACI,UAAW,EAAA,EAAG,QAAS,EAAM,EAAU,CACvC,KAAM,SACN,aAAY,OACZ,kBAAiB,EAAQ,sBAAwB,IAAA,GACjD,GAAI,WALR,EAOM,GAAS,KACP,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,CACK,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,sBAAuB,UAAW,uBACtC,EACC,CAAA,CAET,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,6BAAsB,EAAkB,CAAA,CAC9D,CAAA,CAAA,EAElB,EAAA,EAAA,KAAC,EAAA,EAAD,CAAY,WAAqB,CAAA,CAChC,IAAU,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SAAc,EAAqB,CAAA,CAC1C,GACN,CAAA,CACJ,CAAA,CACA,CAAA,CArCO"}
@@ -1,6 +1,6 @@
1
1
  import { t as e } from "./cn-YER3QsV1.js";
2
2
  import { t } from "./MPortal-Dqlkh3hw.js";
3
- import { a as n, i as r, n as i, r as a } from "./MSkeleton-Bh9cCe49.js";
3
+ import { a as n, i as r, n as i, r as a } from "./MSkeleton-DX9gJ311.js";
4
4
  import { useEffect as o, useRef as s, useState as c } from "react";
5
5
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
6
6
  //#region src/components/overlays/MModal/MModal.tsx
@@ -66,4 +66,4 @@ function f({ open: f, onClose: p, title: m, description: h, footer: g, size: _ =
66
66
  //#endregion
67
67
  export { f as t };
68
68
 
69
- //# sourceMappingURL=MModal-BogYYyZE.js.map
69
+ //# sourceMappingURL=MModal-DXZ2SrJt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MModal-BogYYyZE.js","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx"],"sourcesContent":["import {useEffect, useState, useCallback, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? 'mineral-modal-title' : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={'mineral-modal-title'} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n"],"mappings":";;;;;;AAQA,IAAM,IAAgB;AAGtB,SAAgB,EAAO,EACnB,SACA,YACA,UACA,gBACA,WACA,UAAO,MACP,qBAAkB,IAClB,mBAAgB,IAChB,cACA,aACA,GAAG,KACS;CACZ,IAAM,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,IAAc,EAAuB,KAAK;AAmDhD,QAhDA,QAAgB;AACZ,EAAI,MACA,EAAW,GAAK,EAChB,EAAW,GAAM;IAEtB,CAAC,EAAK,CAAC,EAGV,QAAgB;AACZ,MAAI,CAAC,KAAQ,GAAS;AAClB,KAAW,GAAK;GAChB,IAAM,IAAQ,iBAAiB;AAE3B,IADA,EAAW,GAAM,EACjB,EAAW,GAAM;MAClB,EAAc;AACjB,gBAAa,aAAa,EAAM;;IAErC,CAAC,GAAM,EAAQ,CAAC,EAEnB,QAAgB;AACZ,MAAI,CAAC,KAAQ,CAAC,EAAe;EAE7B,IAAM,KAAiB,MAAyB;AAC5C,GAAI,EAAM,QAAQ,YAAU,GAAS;;AAIzC,SADA,SAAS,iBAAiB,WAAW,EAAc,QACtC,SAAS,oBAAoB,WAAW,EAAc;IACpE;EAAC;EAAe;EAAS;EAAK,CAAC,EAElC,QAAgB;AACZ,MAAI,CAAC,EAAS;EAEd,IAAM,IAAmB,SAAS,KAAK,MAAM;AAG7C,SAFA,SAAS,KAAK,MAAM,WAAW,gBAElB;AACT,YAAS,KAAK,MAAM,WAAW;;IAEpC,CAAC,EAAQ,CAAC,EAER,IAQD,kBAAC,GAAD,EAAA,UACI,kBAAC,OAAD;EACI,KAAK;EACL,WAAW,EAAG,oBAAoB,kBAAkB,KAAW,UAAU;EACzE,cAViB,MAAsC;AAC1D,QACD,EAAM,WAAW,EAAM,iBAAe,GAAS;;YAU3C,kBAAC,OAAD;GAAK,WAAW;aACZ,kBAAC,GAAD;IACI,WAAW,EAAG,SAAS,GAAM,EAAU;IACvC,MAAM;IACN,cAAY;IACZ,mBAAiB,IAAQ,wBAAwB,KAAA;IACjD,GAAI;cALR;MAOM,KAAS,MACP,kBAAC,GAAD,EAAA,UAAA,CACK,KACG,kBAAC,OAAD;MAAK,IAAI;MAAuB,WAAW;gBACtC;MACC,CAAA,EAET,KAAe,kBAAC,OAAD;MAAK,WAAW;gBAAsB;MAAkB,CAAA,CAC9D,EAAA,CAAA;KAElB,kBAAC,GAAD,EAAY,aAAqB,CAAA;KAChC,KAAU,kBAAC,GAAD,EAAA,UAAc,GAAqB,CAAA;KAC1C;;GACN,CAAA;EACJ,CAAA,EACA,CAAA,GArCO"}
1
+ {"version":3,"file":"MModal-DXZ2SrJt.js","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx"],"sourcesContent":["import {useEffect, useState, useCallback, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? 'mineral-modal-title' : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={'mineral-modal-title'} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n"],"mappings":";;;;;;AAQA,IAAM,IAAgB;AAGtB,SAAgB,EAAO,EACnB,SACA,YACA,UACA,gBACA,WACA,UAAO,MACP,qBAAkB,IAClB,mBAAgB,IAChB,cACA,aACA,GAAG,KACS;CACZ,IAAM,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,CAAC,GAAS,KAAc,EAAS,GAAM,EACvC,IAAc,EAAuB,KAAK;AAmDhD,QAhDA,QAAgB;AACZ,EAAI,MACA,EAAW,GAAK,EAChB,EAAW,GAAM;IAEtB,CAAC,EAAK,CAAC,EAGV,QAAgB;AACZ,MAAI,CAAC,KAAQ,GAAS;AAClB,KAAW,GAAK;GAChB,IAAM,IAAQ,iBAAiB;AAE3B,IADA,EAAW,GAAM,EACjB,EAAW,GAAM;MAClB,EAAc;AACjB,gBAAa,aAAa,EAAM;;IAErC,CAAC,GAAM,EAAQ,CAAC,EAEnB,QAAgB;AACZ,MAAI,CAAC,KAAQ,CAAC,EAAe;EAE7B,IAAM,KAAiB,MAAyB;AAC5C,GAAI,EAAM,QAAQ,YAAU,GAAS;;AAIzC,SADA,SAAS,iBAAiB,WAAW,EAAc,QACtC,SAAS,oBAAoB,WAAW,EAAc;IACpE;EAAC;EAAe;EAAS;EAAK,CAAC,EAElC,QAAgB;AACZ,MAAI,CAAC,EAAS;EAEd,IAAM,IAAmB,SAAS,KAAK,MAAM;AAG7C,SAFA,SAAS,KAAK,MAAM,WAAW,gBAElB;AACT,YAAS,KAAK,MAAM,WAAW;;IAEpC,CAAC,EAAQ,CAAC,EAER,IAQD,kBAAC,GAAD,EAAA,UACI,kBAAC,OAAD;EACI,KAAK;EACL,WAAW,EAAG,oBAAoB,kBAAkB,KAAW,UAAU;EACzE,cAViB,MAAsC;AAC1D,QACD,EAAM,WAAW,EAAM,iBAAe,GAAS;;YAU3C,kBAAC,OAAD;GAAK,WAAW;aACZ,kBAAC,GAAD;IACI,WAAW,EAAG,SAAS,GAAM,EAAU;IACvC,MAAM;IACN,cAAY;IACZ,mBAAiB,IAAQ,wBAAwB,KAAA;IACjD,GAAI;cALR;MAOM,KAAS,MACP,kBAAC,GAAD,EAAA,UAAA,CACK,KACG,kBAAC,OAAD;MAAK,IAAI;MAAuB,WAAW;gBACtC;MACC,CAAA,EAET,KAAe,kBAAC,OAAD;MAAK,WAAW;gBAAsB;MAAkB,CAAA,CAC9D,EAAA,CAAA;KAElB,kBAAC,GAAD,EAAY,aAAqB,CAAA;KAChC,KAAU,kBAAC,GAAD,EAAA,UAAc,GAAqB,CAAA;KAC1C;;GACN,CAAA;EACJ,CAAA,EACA,CAAA,GArCO"}
@@ -1,6 +1,6 @@
1
1
  import { Ni as e, Pi as t } from "./icons-D5DK-J2C.js";
2
2
  import { t as n } from "./cn-YER3QsV1.js";
3
- import { t as r } from "./MButton-BJdrNg2I.js";
3
+ import { t as r } from "./MButton-pSNx-6UK.js";
4
4
  import { useMemo as i } from "react";
5
5
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
6
  //#region src/components/layout/MPagination/MPagination.tsx
@@ -110,4 +110,4 @@ function l({ total: s, page: l, pageSize: u = 10, onChange: d, siblings: f = 1,
110
110
  //#endregion
111
111
  export { l as t };
112
112
 
113
- //# sourceMappingURL=MPagination-CgvjKhLN.js.map
113
+ //# sourceMappingURL=MPagination-BFI_z3y6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MPagination-CgvjKhLN.js","names":[],"sources":["../src/components/layout/MPagination/MPagination.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MPaginationProps} from './MPagination.types'\nimport './MPagination.css'\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nfunction buildPages(totalPages: number, page: number, siblings: number, boundaries: number): (number | 'dots')[] {\n if (totalPages <= boundaries * 2 + siblings * 2 + 3) {\n return range(1, totalPages)\n }\n\n const leftBound = Math.max(page - siblings, boundaries + 2)\n const rightBound = Math.min(page + siblings, totalPages - boundaries - 1)\n\n const showLeftDots = leftBound > boundaries + 2\n const showRightDots = rightBound < totalPages - boundaries - 1\n\n const leftEdge = range(1, boundaries)\n const rightEdge = range(totalPages - boundaries + 1, totalPages)\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n return [...range(1, leftCount), 'dots', ...rightEdge]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n return [...leftEdge, 'dots', ...range(totalPages - rightCount + 1, totalPages)]\n }\n\n return [...leftEdge, 'dots', ...range(leftBound, rightBound), 'dots', ...rightEdge]\n}\n\nexport function MPagination({\n total,\n page,\n pageSize = 10,\n onChange,\n siblings = 1,\n boundaries = 1,\n variant = 'numbered',\n className,\n ...rest\n}: MPaginationProps) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\n const currentPage = Math.min(Math.max(1, page), totalPages)\n\n const pages = useMemo(\n () => buildPages(totalPages, currentPage, siblings, boundaries),\n [totalPages, currentPage, siblings, boundaries]\n )\n\n if (variant === 'simple') {\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n <span className=\"info\">\n {currentPage} / {totalPages}\n </span>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n }\n\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n {pages.map((p, i) =>\n p === 'dots' ? (\n <span key={`dots-${i}`} className=\"dots\">\n &#8230;\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={cn('btn', p === currentPage && 'active')}\n onClick={() => onChange(p)}\n >\n {p}\n </button>\n )\n )}\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n}\n"],"mappings":";;;;;;AAOA,SAAS,EAAM,GAAe,GAAuB;CACjD,IAAM,IAAmB,EAAE;AAC3B,MAAK,IAAI,IAAI,GAAO,KAAK,GAAK,IAAK,GAAO,KAAK,EAAE;AACjD,QAAO;;AAGX,SAAS,EAAW,GAAoB,GAAc,GAAkB,GAAyC;AAC7G,KAAI,KAAc,IAAa,IAAI,IAAW,IAAI,EAC9C,QAAO,EAAM,GAAG,EAAW;CAG/B,IAAM,IAAY,KAAK,IAAI,IAAO,GAAU,IAAa,EAAE,EACrD,IAAa,KAAK,IAAI,IAAO,GAAU,IAAa,IAAa,EAAE,EAEnE,IAAe,IAAY,IAAa,GACxC,IAAgB,IAAa,IAAa,IAAa,GAEvD,IAAW,EAAM,GAAG,EAAW,EAC/B,IAAY,EAAM,IAAa,IAAa,GAAG,EAAW;AAEhE,KAAI,CAAC,KAAgB,EAEjB,QAAO;EAAC,GAAG,EAAM,GADC,IAAW,IAAI,IAAa,EAChB;EAAE;EAAQ,GAAG;EAAU;AAGzD,KAAI,KAAgB,CAAC,GAAe;EAChC,IAAM,IAAa,IAAW,IAAI,IAAa;AAC/C,SAAO;GAAC,GAAG;GAAU;GAAQ,GAAG,EAAM,IAAa,IAAa,GAAG,EAAW;GAAC;;AAGnF,QAAO;EAAC,GAAG;EAAU;EAAQ,GAAG,EAAM,GAAW,EAAW;EAAE;EAAQ,GAAG;EAAU;;AAGvF,SAAgB,EAAY,EACxB,UACA,SACA,cAAW,IACX,aACA,cAAW,GACX,gBAAa,GACb,aAAU,YACV,cACA,GAAG,KACc;CACjB,IAAM,IAAa,KAAK,IAAI,GAAG,KAAK,KAAK,IAAQ,EAAS,CAAC,EACrD,IAAc,KAAK,IAAI,KAAK,IAAI,GAAG,EAAK,EAAE,EAAW,EAErD,IAAQ,QACJ,EAAW,GAAY,GAAa,GAAU,EAAW,EAC/D;EAAC;EAAY;EAAa;EAAU;EAAW,CAClD;AAgCD,QA9BI,MAAY,WAER,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAW,EAAG,cAAc,EAAU;EAAE,GAAI;YAAzE;GACI,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAoB,CAAA;IACd,CAAA;GACV,kBAAC,QAAD;IAAM,WAAU;cAAhB;KACK;KAAY;KAAI;KACd;;GACP,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAqB,CAAA;IACf,CAAA;GACR;MAKV,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAW,EAAG,cAAc,EAAU;EAAE,GAAI;YAAzE;GACI,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAoB,CAAA;IACd,CAAA;GACT,EAAM,KAAK,GAAG,MACX,MAAM,SACF,kBAAC,QAAD;IAAwB,WAAU;cAAO;IAElC,EAFI,QAAQ,IAEZ,GAEP,kBAAC,UAAD;IAEI,MAAK;IACL,WAAW,EAAG,OAAO,MAAM,KAAe,SAAS;IACnD,eAAe,EAAS,EAAE;cAEzB;IACI,EANA,EAMA,CAEhB;GACD,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAqB,CAAA;IACf,CAAA;GACR"}
1
+ {"version":3,"file":"MPagination-BFI_z3y6.js","names":[],"sources":["../src/components/layout/MPagination/MPagination.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MPaginationProps} from './MPagination.types'\nimport './MPagination.css'\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nfunction buildPages(totalPages: number, page: number, siblings: number, boundaries: number): (number | 'dots')[] {\n if (totalPages <= boundaries * 2 + siblings * 2 + 3) {\n return range(1, totalPages)\n }\n\n const leftBound = Math.max(page - siblings, boundaries + 2)\n const rightBound = Math.min(page + siblings, totalPages - boundaries - 1)\n\n const showLeftDots = leftBound > boundaries + 2\n const showRightDots = rightBound < totalPages - boundaries - 1\n\n const leftEdge = range(1, boundaries)\n const rightEdge = range(totalPages - boundaries + 1, totalPages)\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n return [...range(1, leftCount), 'dots', ...rightEdge]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n return [...leftEdge, 'dots', ...range(totalPages - rightCount + 1, totalPages)]\n }\n\n return [...leftEdge, 'dots', ...range(leftBound, rightBound), 'dots', ...rightEdge]\n}\n\nexport function MPagination({\n total,\n page,\n pageSize = 10,\n onChange,\n siblings = 1,\n boundaries = 1,\n variant = 'numbered',\n className,\n ...rest\n}: MPaginationProps) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\n const currentPage = Math.min(Math.max(1, page), totalPages)\n\n const pages = useMemo(\n () => buildPages(totalPages, currentPage, siblings, boundaries),\n [totalPages, currentPage, siblings, boundaries]\n )\n\n if (variant === 'simple') {\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n <span className=\"info\">\n {currentPage} / {totalPages}\n </span>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n }\n\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n {pages.map((p, i) =>\n p === 'dots' ? (\n <span key={`dots-${i}`} className=\"dots\">\n &#8230;\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={cn('btn', p === currentPage && 'active')}\n onClick={() => onChange(p)}\n >\n {p}\n </button>\n )\n )}\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n}\n"],"mappings":";;;;;;AAOA,SAAS,EAAM,GAAe,GAAuB;CACjD,IAAM,IAAmB,EAAE;AAC3B,MAAK,IAAI,IAAI,GAAO,KAAK,GAAK,IAAK,GAAO,KAAK,EAAE;AACjD,QAAO;;AAGX,SAAS,EAAW,GAAoB,GAAc,GAAkB,GAAyC;AAC7G,KAAI,KAAc,IAAa,IAAI,IAAW,IAAI,EAC9C,QAAO,EAAM,GAAG,EAAW;CAG/B,IAAM,IAAY,KAAK,IAAI,IAAO,GAAU,IAAa,EAAE,EACrD,IAAa,KAAK,IAAI,IAAO,GAAU,IAAa,IAAa,EAAE,EAEnE,IAAe,IAAY,IAAa,GACxC,IAAgB,IAAa,IAAa,IAAa,GAEvD,IAAW,EAAM,GAAG,EAAW,EAC/B,IAAY,EAAM,IAAa,IAAa,GAAG,EAAW;AAEhE,KAAI,CAAC,KAAgB,EAEjB,QAAO;EAAC,GAAG,EAAM,GADC,IAAW,IAAI,IAAa,EAChB;EAAE;EAAQ,GAAG;EAAU;AAGzD,KAAI,KAAgB,CAAC,GAAe;EAChC,IAAM,IAAa,IAAW,IAAI,IAAa;AAC/C,SAAO;GAAC,GAAG;GAAU;GAAQ,GAAG,EAAM,IAAa,IAAa,GAAG,EAAW;GAAC;;AAGnF,QAAO;EAAC,GAAG;EAAU;EAAQ,GAAG,EAAM,GAAW,EAAW;EAAE;EAAQ,GAAG;EAAU;;AAGvF,SAAgB,EAAY,EACxB,UACA,SACA,cAAW,IACX,aACA,cAAW,GACX,gBAAa,GACb,aAAU,YACV,cACA,GAAG,KACc;CACjB,IAAM,IAAa,KAAK,IAAI,GAAG,KAAK,KAAK,IAAQ,EAAS,CAAC,EACrD,IAAc,KAAK,IAAI,KAAK,IAAI,GAAG,EAAK,EAAE,EAAW,EAErD,IAAQ,QACJ,EAAW,GAAY,GAAa,GAAU,EAAW,EAC/D;EAAC;EAAY;EAAa;EAAU;EAAW,CAClD;AAgCD,QA9BI,MAAY,WAER,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAW,EAAG,cAAc,EAAU;EAAE,GAAI;YAAzE;GACI,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAoB,CAAA;IACd,CAAA;GACV,kBAAC,QAAD;IAAM,WAAU;cAAhB;KACK;KAAY;KAAI;KACd;;GACP,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAqB,CAAA;IACf,CAAA;GACR;MAKV,kBAAC,OAAD;EAAK,cAAW;EAAa,WAAW,EAAG,cAAc,EAAU;EAAE,GAAI;YAAzE;GACI,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAoB,CAAA;IACd,CAAA;GACT,EAAM,KAAK,GAAG,MACX,MAAM,SACF,kBAAC,QAAD;IAAwB,WAAU;cAAO;IAElC,EAFI,QAAQ,IAEZ,GAEP,kBAAC,UAAD;IAEI,MAAK;IACL,WAAW,EAAG,OAAO,MAAM,KAAe,SAAS;IACnD,eAAe,EAAS,EAAE;cAEzB;IACI,EANA,EAMA,CAEhB;GACD,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,UAAA;IACA,UAAU,KAAe;IACzB,eAAe,EAAS,IAAc,EAAE;IACxC,WAAU;cAEV,kBAAC,GAAD,EAAqB,CAAA;IACf,CAAA;GACR"}
@@ -1,2 +1,2 @@
1
- const e=require(`./icons-Dv1T-cF4.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MButton-CX8SV1m0.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a(e,t){let n=[];for(let r=e;r<=t;r++)n.push(r);return n}function o(e,t,n,r){if(e<=r*2+n*2+3)return a(1,e);let i=Math.max(t-n,r+2),o=Math.min(t+n,e-r-1),s=i>r+2,c=o<e-r-1,l=a(1,r),u=a(e-r+1,e);if(!s&&c)return[...a(1,n*2+r+2),`dots`,...u];if(s&&!c){let t=n*2+r+2;return[...l,`dots`,...a(e-t+1,e)]}return[...l,`dots`,...a(i,o),`dots`,...u]}function s({total:a,page:s,pageSize:c=10,onChange:l,siblings:u=1,boundaries:d=1,variant:f=`numbered`,className:p,...m}){let h=Math.max(1,Math.ceil(a/c)),g=Math.min(Math.max(1,s),h),_=(0,r.useMemo)(()=>o(h,g,u,d),[h,g,u,d]);return f===`simple`?(0,i.jsxs)(`nav`,{"aria-label":`pagination`,className:t.t(`pagination`,p),...m,children:[(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g<=1,onClick:()=>l(g-1),className:`nav`,children:(0,i.jsx)(e.Pi,{})}),(0,i.jsxs)(`span`,{className:`info`,children:[g,` / `,h]}),(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g>=h,onClick:()=>l(g+1),className:`nav`,children:(0,i.jsx)(e.Ni,{})})]}):(0,i.jsxs)(`nav`,{"aria-label":`pagination`,className:t.t(`pagination`,p),...m,children:[(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g<=1,onClick:()=>l(g-1),className:`nav`,children:(0,i.jsx)(e.Pi,{})}),_.map((e,n)=>e===`dots`?(0,i.jsx)(`span`,{className:`dots`,children:`…`},`dots-${n}`):(0,i.jsx)(`button`,{type:`button`,className:t.t(`btn`,e===g&&`active`),onClick:()=>l(e),children:e},e)),(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g>=h,onClick:()=>l(g+1),className:`nav`,children:(0,i.jsx)(e.Ni,{})})]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
2
- //# sourceMappingURL=MPagination-vg2EqB8z.cjs.map
1
+ const e=require(`./icons-Dv1T-cF4.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MButton-Rg85cgO1.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a(e,t){let n=[];for(let r=e;r<=t;r++)n.push(r);return n}function o(e,t,n,r){if(e<=r*2+n*2+3)return a(1,e);let i=Math.max(t-n,r+2),o=Math.min(t+n,e-r-1),s=i>r+2,c=o<e-r-1,l=a(1,r),u=a(e-r+1,e);if(!s&&c)return[...a(1,n*2+r+2),`dots`,...u];if(s&&!c){let t=n*2+r+2;return[...l,`dots`,...a(e-t+1,e)]}return[...l,`dots`,...a(i,o),`dots`,...u]}function s({total:a,page:s,pageSize:c=10,onChange:l,siblings:u=1,boundaries:d=1,variant:f=`numbered`,className:p,...m}){let h=Math.max(1,Math.ceil(a/c)),g=Math.min(Math.max(1,s),h),_=(0,r.useMemo)(()=>o(h,g,u,d),[h,g,u,d]);return f===`simple`?(0,i.jsxs)(`nav`,{"aria-label":`pagination`,className:t.t(`pagination`,p),...m,children:[(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g<=1,onClick:()=>l(g-1),className:`nav`,children:(0,i.jsx)(e.Pi,{})}),(0,i.jsxs)(`span`,{className:`info`,children:[g,` / `,h]}),(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g>=h,onClick:()=>l(g+1),className:`nav`,children:(0,i.jsx)(e.Ni,{})})]}):(0,i.jsxs)(`nav`,{"aria-label":`pagination`,className:t.t(`pagination`,p),...m,children:[(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g<=1,onClick:()=>l(g-1),className:`nav`,children:(0,i.jsx)(e.Pi,{})}),_.map((e,n)=>e===`dots`?(0,i.jsx)(`span`,{className:`dots`,children:`…`},`dots-${n}`):(0,i.jsx)(`button`,{type:`button`,className:t.t(`btn`,e===g&&`active`),onClick:()=>l(e),children:e},e)),(0,i.jsx)(n.t,{variant:`outlined`,size:`sm`,iconOnly:!0,disabled:g>=h,onClick:()=>l(g+1),className:`nav`,children:(0,i.jsx)(e.Ni,{})})]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
2
+ //# sourceMappingURL=MPagination-C6hnhbTp.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MPagination-vg2EqB8z.cjs","names":[],"sources":["../src/components/layout/MPagination/MPagination.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MPaginationProps} from './MPagination.types'\nimport './MPagination.css'\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nfunction buildPages(totalPages: number, page: number, siblings: number, boundaries: number): (number | 'dots')[] {\n if (totalPages <= boundaries * 2 + siblings * 2 + 3) {\n return range(1, totalPages)\n }\n\n const leftBound = Math.max(page - siblings, boundaries + 2)\n const rightBound = Math.min(page + siblings, totalPages - boundaries - 1)\n\n const showLeftDots = leftBound > boundaries + 2\n const showRightDots = rightBound < totalPages - boundaries - 1\n\n const leftEdge = range(1, boundaries)\n const rightEdge = range(totalPages - boundaries + 1, totalPages)\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n return [...range(1, leftCount), 'dots', ...rightEdge]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n return [...leftEdge, 'dots', ...range(totalPages - rightCount + 1, totalPages)]\n }\n\n return [...leftEdge, 'dots', ...range(leftBound, rightBound), 'dots', ...rightEdge]\n}\n\nexport function MPagination({\n total,\n page,\n pageSize = 10,\n onChange,\n siblings = 1,\n boundaries = 1,\n variant = 'numbered',\n className,\n ...rest\n}: MPaginationProps) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\n const currentPage = Math.min(Math.max(1, page), totalPages)\n\n const pages = useMemo(\n () => buildPages(totalPages, currentPage, siblings, boundaries),\n [totalPages, currentPage, siblings, boundaries]\n )\n\n if (variant === 'simple') {\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n <span className=\"info\">\n {currentPage} / {totalPages}\n </span>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n }\n\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n {pages.map((p, i) =>\n p === 'dots' ? (\n <span key={`dots-${i}`} className=\"dots\">\n &#8230;\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={cn('btn', p === currentPage && 'active')}\n onClick={() => onChange(p)}\n >\n {p}\n </button>\n )\n )}\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MPagination-C6hnhbTp.cjs","names":[],"sources":["../src/components/layout/MPagination/MPagination.tsx"],"sourcesContent":["import {useMemo} from 'react'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MChevronLeftIcon, MChevronRightIcon} from '../../../icons'\nimport type {MPaginationProps} from './MPagination.types'\nimport './MPagination.css'\n\nfunction range(start: number, end: number): number[] {\n const result: number[] = []\n for (let i = start; i <= end; i++) result.push(i)\n return result\n}\n\nfunction buildPages(totalPages: number, page: number, siblings: number, boundaries: number): (number | 'dots')[] {\n if (totalPages <= boundaries * 2 + siblings * 2 + 3) {\n return range(1, totalPages)\n }\n\n const leftBound = Math.max(page - siblings, boundaries + 2)\n const rightBound = Math.min(page + siblings, totalPages - boundaries - 1)\n\n const showLeftDots = leftBound > boundaries + 2\n const showRightDots = rightBound < totalPages - boundaries - 1\n\n const leftEdge = range(1, boundaries)\n const rightEdge = range(totalPages - boundaries + 1, totalPages)\n\n if (!showLeftDots && showRightDots) {\n const leftCount = siblings * 2 + boundaries + 2\n return [...range(1, leftCount), 'dots', ...rightEdge]\n }\n\n if (showLeftDots && !showRightDots) {\n const rightCount = siblings * 2 + boundaries + 2\n return [...leftEdge, 'dots', ...range(totalPages - rightCount + 1, totalPages)]\n }\n\n return [...leftEdge, 'dots', ...range(leftBound, rightBound), 'dots', ...rightEdge]\n}\n\nexport function MPagination({\n total,\n page,\n pageSize = 10,\n onChange,\n siblings = 1,\n boundaries = 1,\n variant = 'numbered',\n className,\n ...rest\n}: MPaginationProps) {\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\n const currentPage = Math.min(Math.max(1, page), totalPages)\n\n const pages = useMemo(\n () => buildPages(totalPages, currentPage, siblings, boundaries),\n [totalPages, currentPage, siblings, boundaries]\n )\n\n if (variant === 'simple') {\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n <span className=\"info\">\n {currentPage} / {totalPages}\n </span>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n }\n\n return (\n <nav aria-label=\"pagination\" className={cn('pagination', className)} {...rest}>\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage <= 1}\n onClick={() => onChange(currentPage - 1)}\n className=\"nav\"\n >\n <MChevronLeftIcon />\n </MButton>\n {pages.map((p, i) =>\n p === 'dots' ? (\n <span key={`dots-${i}`} className=\"dots\">\n &#8230;\n </span>\n ) : (\n <button\n key={p}\n type=\"button\"\n className={cn('btn', p === currentPage && 'active')}\n onClick={() => onChange(p)}\n >\n {p}\n </button>\n )\n )}\n <MButton\n variant=\"outlined\"\n size=\"sm\"\n iconOnly\n disabled={currentPage >= totalPages}\n onClick={() => onChange(currentPage + 1)}\n className=\"nav\"\n >\n <MChevronRightIcon />\n </MButton>\n </nav>\n )\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ai as e, ii as t, li as n, ui as r } from "./icons-D5DK-J2C.js";
2
2
  import { t as i } from "./cn-YER3QsV1.js";
3
- import { t as a } from "./MButton-BJdrNg2I.js";
3
+ import { t as a } from "./MButton-pSNx-6UK.js";
4
4
  import { useState as o } from "react";
5
5
  import { jsx as s, jsxs as c } from "react/jsx-runtime";
6
6
  //#region src/components/display/MRating/MRating.tsx
@@ -412,4 +412,4 @@ function V({ value: e, size: t = 144, padding: o = 4, fg: l = "#111827", bg: u =
412
412
  //#endregion
413
413
  export { l as n, V as t };
414
414
 
415
- //# sourceMappingURL=MQrCode-l0FzrNCq.js.map
415
+ //# sourceMappingURL=MQrCode-DfZwkhZV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MQrCode-l0FzrNCq.js","names":[],"sources":["../src/components/display/MRating/MRating.tsx","../src/components/display/MQrCode/MQrCode.tsx"],"sourcesContent":["import {useState} from 'react'\nimport type {MRatingProps} from './MRating.types'\nimport {MStarFillIcon, MStarIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MRating.css'\n\n// Render an interactive star-based rating control.\nexport function MRating({\n value = 0,\n max = 5,\n color = 'warning',\n size = 'md',\n readOnly = false,\n onChange,\n className,\n ...rest\n}: MRatingProps) {\n const [hovered, setHovered] = useState<number | null>(null)\n const displayValue = hovered ?? value\n\n const handleClick = (index: number) => {\n if (readOnly) return\n onChange?.(index)\n }\n\n return (\n <div\n className={cn('rating', `color-${color}`, size, readOnly && 'read-only', className)}\n role=\"radiogroup\"\n aria-label=\"MRating\"\n onMouseLeave={() => setHovered(null)}\n {...rest}\n >\n {Array.from({length: max}, (_, i) => {\n const starIndex = i + 1\n const filled = displayValue >= starIndex\n return (\n <button\n key={i}\n type=\"button\"\n className=\"rating-star\"\n onClick={() => handleClick(starIndex)}\n onMouseEnter={() => !readOnly && setHovered(starIndex)}\n aria-label={`${starIndex} star${starIndex > 1 ? 's' : ''}`}\n tabIndex={readOnly ? -1 : 0}\n disabled={readOnly}\n >\n <span className=\"star-icon\" aria-hidden=\"true\">\n {filled ? <MStarFillIcon /> : <MStarIcon />}\n </span>\n </button>\n )\n })}\n </div>\n )\n}\n","import type {CSSProperties} from 'react'\nimport type {MQrCodeProps} from './MQrCode.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls/MButton'\nimport {MErrorIcon, MSuccessIcon} from '../../../icons'\nimport './MQrCode.css'\n\ntype VersionInfo = {\n version: number\n size: number\n dataWords: number\n ecWords: number\n byteLimit: number\n align: number[]\n}\n\nconst versions: VersionInfo[] = [\n {version: 1, size: 21, dataWords: 19, ecWords: 7, byteLimit: 17, align: []},\n {version: 2, size: 25, dataWords: 34, ecWords: 10, byteLimit: 32, align: [6, 18]},\n {version: 3, size: 29, dataWords: 55, ecWords: 15, byteLimit: 53, align: [6, 22]},\n {version: 4, size: 33, dataWords: 80, ecWords: 20, byteLimit: 78, align: [6, 26]},\n {version: 5, size: 37, dataWords: 108, ecWords: 26, byteLimit: 106, align: [6, 30]},\n]\n\nconst formatBits = [\n '111011111000100',\n '111001011110011',\n '111110110101010',\n '111100010011101',\n '110011000101111',\n '110001100011000',\n '110110001000001',\n '110100101110110',\n]\n\nconst expTable = new Array<number>(512).fill(0)\nconst logTable = new Array<number>(256).fill(0)\nconst encoder = new TextEncoder()\n\nlet fieldReady = false\n\n// Prepare log/exp lookup tables for QR Reed-Solomon math.\nfunction ensureField() {\n if (fieldReady) return\n\n let value = 1\n\n for (let i = 0; i < 255; i += 1) {\n expTable[i] = value\n logTable[value] = i\n value <<= 1\n\n if (value & 0x100) {\n value ^= 0x11d\n }\n }\n\n for (let i = 255; i < 512; i += 1) {\n expTable[i] = expTable[i - 255]\n }\n\n fieldReady = true\n}\n\n// Multiply two values inside the QR Galois field.\nfunction gfMul(a: number, b: number) {\n if (!a || !b) return 0\n ensureField()\n return expTable[logTable[a] + logTable[b]]\n}\n\n// Multiply generator polynomials used for error correction.\nfunction polyMul(left: number[], right: number[]) {\n const next = new Array(left.length + right.length - 1).fill(0)\n\n for (let row = 0; row < left.length; row += 1) {\n for (let col = 0; col < right.length; col += 1) {\n next[row + col] ^= gfMul(left[row], right[col])\n }\n }\n\n return next\n}\n\n// Build the generator polynomial for the chosen correction size.\nfunction makeGenerator(ecWords: number) {\n ensureField()\n\n let poly = [1]\n\n for (let i = 0; i < ecWords; i += 1) {\n poly = polyMul(poly, [1, expTable[i]])\n }\n\n return poly\n}\n\n// Compute Reed-Solomon error words for the current payload.\nfunction makeErrorWords(data: number[], ecWords: number) {\n const poly = makeGenerator(ecWords)\n const work = [...data, ...new Array(ecWords).fill(0)]\n\n for (let i = 0; i < data.length; i += 1) {\n const factor = work[i]\n\n if (!factor) continue\n\n for (let j = 0; j < poly.length; j += 1) {\n work[i + j] ^= gfMul(poly[j], factor)\n }\n }\n\n return work.slice(-ecWords)\n}\n\n// Push bits in MSB order so QR payload building stays explicit.\nfunction pushBits(target: number[], value: number, size: number) {\n for (let bit = size - 1; bit >= 0; bit -= 1) {\n target.push((value >> bit) & 1)\n }\n}\n\n// Repack a flat bit list into QR codewords.\nfunction bitsToBytes(bits: number[]) {\n const bytes: number[] = []\n\n for (let i = 0; i < bits.length; i += 8) {\n let byte = 0\n\n for (let bit = 0; bit < 8; bit += 1) {\n byte = (byte << 1) | (bits[i + bit] ?? 0)\n }\n\n bytes.push(byte)\n }\n\n return bytes\n}\n\n// Pick the smallest supported QR version for the payload.\nfunction pickVersion(length: number) {\n return versions.find((item) => length <= item.byteLimit) ?? null\n}\n\n// Encode a string as byte mode payload plus correction words.\nfunction encodeData(value: string, info: VersionInfo) {\n const data = Array.from(encoder.encode(value))\n const bits: number[] = []\n const capacity = info.dataWords * 8\n\n pushBits(bits, 0b0100, 4)\n pushBits(bits, data.length, 8)\n\n data.forEach((byte) => pushBits(bits, byte, 8))\n\n pushBits(bits, 0, Math.min(4, capacity - bits.length))\n\n while (bits.length % 8 !== 0) {\n bits.push(0)\n }\n\n const pads = [0xec, 0x11]\n\n for (let i = 0; bits.length < capacity; i += 1) {\n pushBits(bits, pads[i % 2], 8)\n }\n\n const dataWords = bitsToBytes(bits)\n return [...dataWords, ...makeErrorWords(dataWords, info.ecWords)]\n}\n\n// Create an empty matrix before function patterns are placed.\nfunction makeGrid(size: number) {\n return Array.from({length: size}, () => Array<boolean | null>(size).fill(null))\n}\n\n// Write a module and mark it as reserved.\nfunction setCell(grid: (boolean | null)[][], marks: boolean[][], row: number, col: number, dark: boolean) {\n if (row < 0 || col < 0 || row >= grid.length || col >= grid.length) return\n grid[row][col] = dark\n marks[row][col] = true\n}\n\n// Place one finder pattern with its quiet white border.\nfunction placeFinder(grid: (boolean | null)[][], marks: boolean[][], top: number, left: number) {\n for (let row = -1; row <= 7; row += 1) {\n for (let col = -1; col <= 7; col += 1) {\n const edge = row === -1 || row === 7 || col === -1 || col === 7\n const outer = row === 0 || row === 6 || col === 0 || col === 6\n const inner = row >= 2 && row <= 4 && col >= 2 && col <= 4\n setCell(grid, marks, top + row, left + col, !edge && (outer || inner))\n }\n }\n}\n\n// Place one alignment pattern unless another function block already owns it.\nfunction placeAlign(grid: (boolean | null)[][], marks: boolean[][], center: number, middle: number) {\n if (marks[center][middle]) return\n\n for (let row = -2; row <= 2; row += 1) {\n for (let col = -2; col <= 2; col += 1) {\n const edge = Math.max(Math.abs(row), Math.abs(col)) === 2\n const dot = row === 0 && col === 0\n setCell(grid, marks, center + row, middle + col, edge || dot)\n }\n }\n}\n\n// Reserve format info cells before data placement starts.\nfunction markFormat(marks: boolean[][]) {\n const size = marks.length\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n\n ;[...left, ...right].forEach(([row, col]) => {\n marks[row][col] = true\n })\n}\n\n// Build the static QR scaffolding: finders, timing and align blocks.\nfunction makeBase(info: VersionInfo) {\n const grid = makeGrid(info.size)\n const marks = Array.from({length: info.size}, () => Array<boolean>(info.size).fill(false))\n\n placeFinder(grid, marks, 0, 0)\n placeFinder(grid, marks, 0, info.size - 7)\n placeFinder(grid, marks, info.size - 7, 0)\n\n for (let i = 8; i < info.size - 8; i += 1) {\n setCell(grid, marks, 6, i, i % 2 === 0)\n setCell(grid, marks, i, 6, i % 2 === 0)\n }\n\n info.align.forEach((row) => {\n info.align.forEach((col) => {\n placeAlign(grid, marks, row, col)\n })\n })\n\n markFormat(marks)\n setCell(grid, marks, info.version * 4 + 9, 8, true)\n\n return {grid, marks}\n}\n\n// Fill open cells with payload bits using the QR zig-zag path.\nfunction placeData(grid: (boolean | null)[][], marks: boolean[][], words: number[]) {\n const size = grid.length\n const bits: number[] = []\n\n words.forEach((word) => pushBits(bits, word, 8))\n\n let index = 0\n let up = true\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) {\n col -= 1\n }\n\n let row = up ? size - 1 : 0\n\n while (row >= 0 && row < size) {\n for (let offset = 0; offset < 2; offset += 1) {\n const x = col - offset\n\n if (marks[row][x]) continue\n\n grid[row][x] = bits[index] === 1\n index += 1\n }\n\n row += up ? -1 : 1\n }\n\n up = !up\n }\n\n for (let row = 0; row < size; row += 1) {\n for (let col = 0; col < size; col += 1) {\n if (!marks[row][col] && grid[row][col] == null) {\n grid[row][col] = false\n }\n }\n }\n}\n\n// Check whether the current mask flips this module.\nfunction shouldFlip(mask: number, row: number, col: number) {\n switch (mask) {\n case 0:\n return (row + col) % 2 === 0\n case 1:\n return row % 2 === 0\n case 2:\n return col % 3 === 0\n case 3:\n return (row + col) % 3 === 0\n case 4:\n return (Math.floor(row / 2) + Math.floor(col / 3)) % 2 === 0\n case 5:\n return ((row * col) % 2) + ((row * col) % 3) === 0\n case 6:\n return (((row * col) % 2) + ((row * col) % 3)) % 2 === 0\n case 7:\n return (((row + col) % 2) + ((row * col) % 3)) % 2 === 0\n default:\n return false\n }\n}\n\n// Apply one mask while leaving reserved cells untouched.\nfunction applyMask(grid: (boolean | null)[][], marks: boolean[][], mask: number) {\n return grid.map((line, row) =>\n line.map((cell, col) => {\n if (marks[row][col]) return Boolean(cell)\n return shouldFlip(mask, row, col) ? !cell : Boolean(cell)\n })\n )\n}\n\n// Write format bits into both reserved format strips.\nfunction withFormat(grid: boolean[][], mask: number) {\n const size = grid.length\n const bits = formatBits[mask]\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n const next = grid.map((line) => [...line])\n\n bits.split('').forEach((bit, index) => {\n const dark = bit === '1'\n const [leftRow, leftCol] = left[index]\n const [rightRow, rightCol] = right[index]\n\n next[leftRow][leftCol] = dark\n next[rightRow][rightCol] = dark\n })\n\n return next\n}\n\n// Penalize long runs of the same color.\nfunction runPenalty(values: boolean[]) {\n let score = 0\n let run = 1\n\n for (let i = 1; i <= values.length; i += 1) {\n if (values[i] === values[i - 1]) {\n run += 1\n continue\n }\n\n if (run >= 5) {\n score += run - 2\n }\n\n run = 1\n }\n\n return score\n}\n\n// Penalize large flat blocks that scan poorly.\nfunction blockPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length - 1; row += 1) {\n for (let col = 0; col < grid.length - 1; col += 1) {\n const cell = grid[row][col]\n\n if (cell === grid[row][col + 1] && cell === grid[row + 1][col] && cell === grid[row + 1][col + 1]) {\n score += 3\n }\n }\n }\n\n return score\n}\n\n// Penalize patterns that look too similar to finder markers.\nfunction finderPenalty(values: boolean[]) {\n const matchA = '10111010000'\n const matchB = '00001011101'\n let score = 0\n\n for (let i = 0; i <= values.length - 11; i += 1) {\n const slice = values\n .slice(i, i + 11)\n .map((cell) => (cell ? '1' : '0'))\n .join('')\n\n if (slice === matchA || slice === matchB) {\n score += 40\n }\n }\n\n return score\n}\n\n// Keep the dark/light balance near the QR target.\nfunction ratioPenalty(grid: boolean[][]) {\n const total = grid.length * grid.length\n const dark = grid.flat().filter(Boolean).length\n const ratio = (dark * 100) / total\n return Math.floor(Math.abs(ratio - 50) / 5) * 10\n}\n\n// Sum the standard QR penalties for one candidate matrix.\nfunction getPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length; row += 1) {\n score += runPenalty(grid[row])\n score += finderPenalty(grid[row])\n }\n\n for (let col = 0; col < grid.length; col += 1) {\n const line = grid.map((row) => row[col])\n score += runPenalty(line)\n score += finderPenalty(line)\n }\n\n score += blockPenalty(grid)\n score += ratioPenalty(grid)\n\n return score\n}\n\n// Build the final matrix and pick the mask with the lowest penalty.\nfunction makeMatrix(value: string) {\n const data = Array.from(encoder.encode(value))\n const info = pickVersion(data.length)\n\n if (!info) {\n return null\n }\n\n const {grid, marks} = makeBase(info)\n placeData(grid, marks, encodeData(value, info))\n\n let bestMask = 0\n let bestGrid = withFormat(applyMask(grid, marks, 0), 0)\n let bestScore = getPenalty(bestGrid)\n\n for (let mask = 1; mask < 8; mask += 1) {\n const masked = withFormat(applyMask(grid, marks, mask), mask)\n const score = getPenalty(masked)\n\n if (score < bestScore) {\n bestMask = mask\n bestGrid = masked\n bestScore = score\n }\n }\n\n return {grid: bestGrid, mask: bestMask}\n}\n\n// Render a local SVG QR code without adding a runtime dependency.\nexport function MQrCode({\n value,\n size = 144,\n padding = 4,\n fg = '#111827',\n bg = '#ffffff',\n status = 'idle',\n statusLabel,\n className,\n style,\n ...rest\n}: MQrCodeProps) {\n const qr = makeMatrix(value)\n\n if (!qr) {\n return null\n }\n\n const dimension = qr.grid.length + padding * 2\n const nextStyle = {\n '--qr-size': `${size}px`,\n ...style,\n } as CSSProperties\n const statusColor = status === 'success' ? 'success' : status === 'error' ? 'error' : 'primary'\n\n return (\n <div\n className={cn('qr-code', status !== 'idle' && `status-${status}`, className)}\n style={nextStyle}\n aria-busy={status === 'loading' || undefined}\n {...rest}\n >\n <svg\n className={cn(status !== 'idle' && 'dimmed')}\n viewBox={`0 0 ${dimension} ${dimension}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"QR code\"\n >\n <rect width={dimension} height={dimension} fill={bg} />\n {qr.grid.map((line, row) =>\n line.map((cell, col) =>\n cell ? (\n <rect\n key={`${row}-${col}`}\n x={col + padding}\n y={row + padding}\n width=\"1\"\n height=\"1\"\n fill={fg}\n />\n ) : null\n )\n )}\n </svg>\n {status !== 'idle' && (\n <div className=\"qr-status-center\" aria-label={statusLabel ?? `QR code ${status}`} role=\"status\">\n {status === 'loading' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n loading\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n />\n ) : status === 'success' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MSuccessIcon />\n </MButton>\n ) : (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MErrorIcon />\n </MButton>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"MQrCode-DfZwkhZV.js","names":[],"sources":["../src/components/display/MRating/MRating.tsx","../src/components/display/MQrCode/MQrCode.tsx"],"sourcesContent":["import {useState} from 'react'\nimport type {MRatingProps} from './MRating.types'\nimport {MStarFillIcon, MStarIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MRating.css'\n\n// Render an interactive star-based rating control.\nexport function MRating({\n value = 0,\n max = 5,\n color = 'warning',\n size = 'md',\n readOnly = false,\n onChange,\n className,\n ...rest\n}: MRatingProps) {\n const [hovered, setHovered] = useState<number | null>(null)\n const displayValue = hovered ?? value\n\n const handleClick = (index: number) => {\n if (readOnly) return\n onChange?.(index)\n }\n\n return (\n <div\n className={cn('rating', `color-${color}`, size, readOnly && 'read-only', className)}\n role=\"radiogroup\"\n aria-label=\"MRating\"\n onMouseLeave={() => setHovered(null)}\n {...rest}\n >\n {Array.from({length: max}, (_, i) => {\n const starIndex = i + 1\n const filled = displayValue >= starIndex\n return (\n <button\n key={i}\n type=\"button\"\n className=\"rating-star\"\n onClick={() => handleClick(starIndex)}\n onMouseEnter={() => !readOnly && setHovered(starIndex)}\n aria-label={`${starIndex} star${starIndex > 1 ? 's' : ''}`}\n tabIndex={readOnly ? -1 : 0}\n disabled={readOnly}\n >\n <span className=\"star-icon\" aria-hidden=\"true\">\n {filled ? <MStarFillIcon /> : <MStarIcon />}\n </span>\n </button>\n )\n })}\n </div>\n )\n}\n","import type {CSSProperties} from 'react'\nimport type {MQrCodeProps} from './MQrCode.types'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls/MButton'\nimport {MErrorIcon, MSuccessIcon} from '../../../icons'\nimport './MQrCode.css'\n\ntype VersionInfo = {\n version: number\n size: number\n dataWords: number\n ecWords: number\n byteLimit: number\n align: number[]\n}\n\nconst versions: VersionInfo[] = [\n {version: 1, size: 21, dataWords: 19, ecWords: 7, byteLimit: 17, align: []},\n {version: 2, size: 25, dataWords: 34, ecWords: 10, byteLimit: 32, align: [6, 18]},\n {version: 3, size: 29, dataWords: 55, ecWords: 15, byteLimit: 53, align: [6, 22]},\n {version: 4, size: 33, dataWords: 80, ecWords: 20, byteLimit: 78, align: [6, 26]},\n {version: 5, size: 37, dataWords: 108, ecWords: 26, byteLimit: 106, align: [6, 30]},\n]\n\nconst formatBits = [\n '111011111000100',\n '111001011110011',\n '111110110101010',\n '111100010011101',\n '110011000101111',\n '110001100011000',\n '110110001000001',\n '110100101110110',\n]\n\nconst expTable = new Array<number>(512).fill(0)\nconst logTable = new Array<number>(256).fill(0)\nconst encoder = new TextEncoder()\n\nlet fieldReady = false\n\n// Prepare log/exp lookup tables for QR Reed-Solomon math.\nfunction ensureField() {\n if (fieldReady) return\n\n let value = 1\n\n for (let i = 0; i < 255; i += 1) {\n expTable[i] = value\n logTable[value] = i\n value <<= 1\n\n if (value & 0x100) {\n value ^= 0x11d\n }\n }\n\n for (let i = 255; i < 512; i += 1) {\n expTable[i] = expTable[i - 255]\n }\n\n fieldReady = true\n}\n\n// Multiply two values inside the QR Galois field.\nfunction gfMul(a: number, b: number) {\n if (!a || !b) return 0\n ensureField()\n return expTable[logTable[a] + logTable[b]]\n}\n\n// Multiply generator polynomials used for error correction.\nfunction polyMul(left: number[], right: number[]) {\n const next = new Array(left.length + right.length - 1).fill(0)\n\n for (let row = 0; row < left.length; row += 1) {\n for (let col = 0; col < right.length; col += 1) {\n next[row + col] ^= gfMul(left[row], right[col])\n }\n }\n\n return next\n}\n\n// Build the generator polynomial for the chosen correction size.\nfunction makeGenerator(ecWords: number) {\n ensureField()\n\n let poly = [1]\n\n for (let i = 0; i < ecWords; i += 1) {\n poly = polyMul(poly, [1, expTable[i]])\n }\n\n return poly\n}\n\n// Compute Reed-Solomon error words for the current payload.\nfunction makeErrorWords(data: number[], ecWords: number) {\n const poly = makeGenerator(ecWords)\n const work = [...data, ...new Array(ecWords).fill(0)]\n\n for (let i = 0; i < data.length; i += 1) {\n const factor = work[i]\n\n if (!factor) continue\n\n for (let j = 0; j < poly.length; j += 1) {\n work[i + j] ^= gfMul(poly[j], factor)\n }\n }\n\n return work.slice(-ecWords)\n}\n\n// Push bits in MSB order so QR payload building stays explicit.\nfunction pushBits(target: number[], value: number, size: number) {\n for (let bit = size - 1; bit >= 0; bit -= 1) {\n target.push((value >> bit) & 1)\n }\n}\n\n// Repack a flat bit list into QR codewords.\nfunction bitsToBytes(bits: number[]) {\n const bytes: number[] = []\n\n for (let i = 0; i < bits.length; i += 8) {\n let byte = 0\n\n for (let bit = 0; bit < 8; bit += 1) {\n byte = (byte << 1) | (bits[i + bit] ?? 0)\n }\n\n bytes.push(byte)\n }\n\n return bytes\n}\n\n// Pick the smallest supported QR version for the payload.\nfunction pickVersion(length: number) {\n return versions.find((item) => length <= item.byteLimit) ?? null\n}\n\n// Encode a string as byte mode payload plus correction words.\nfunction encodeData(value: string, info: VersionInfo) {\n const data = Array.from(encoder.encode(value))\n const bits: number[] = []\n const capacity = info.dataWords * 8\n\n pushBits(bits, 0b0100, 4)\n pushBits(bits, data.length, 8)\n\n data.forEach((byte) => pushBits(bits, byte, 8))\n\n pushBits(bits, 0, Math.min(4, capacity - bits.length))\n\n while (bits.length % 8 !== 0) {\n bits.push(0)\n }\n\n const pads = [0xec, 0x11]\n\n for (let i = 0; bits.length < capacity; i += 1) {\n pushBits(bits, pads[i % 2], 8)\n }\n\n const dataWords = bitsToBytes(bits)\n return [...dataWords, ...makeErrorWords(dataWords, info.ecWords)]\n}\n\n// Create an empty matrix before function patterns are placed.\nfunction makeGrid(size: number) {\n return Array.from({length: size}, () => Array<boolean | null>(size).fill(null))\n}\n\n// Write a module and mark it as reserved.\nfunction setCell(grid: (boolean | null)[][], marks: boolean[][], row: number, col: number, dark: boolean) {\n if (row < 0 || col < 0 || row >= grid.length || col >= grid.length) return\n grid[row][col] = dark\n marks[row][col] = true\n}\n\n// Place one finder pattern with its quiet white border.\nfunction placeFinder(grid: (boolean | null)[][], marks: boolean[][], top: number, left: number) {\n for (let row = -1; row <= 7; row += 1) {\n for (let col = -1; col <= 7; col += 1) {\n const edge = row === -1 || row === 7 || col === -1 || col === 7\n const outer = row === 0 || row === 6 || col === 0 || col === 6\n const inner = row >= 2 && row <= 4 && col >= 2 && col <= 4\n setCell(grid, marks, top + row, left + col, !edge && (outer || inner))\n }\n }\n}\n\n// Place one alignment pattern unless another function block already owns it.\nfunction placeAlign(grid: (boolean | null)[][], marks: boolean[][], center: number, middle: number) {\n if (marks[center][middle]) return\n\n for (let row = -2; row <= 2; row += 1) {\n for (let col = -2; col <= 2; col += 1) {\n const edge = Math.max(Math.abs(row), Math.abs(col)) === 2\n const dot = row === 0 && col === 0\n setCell(grid, marks, center + row, middle + col, edge || dot)\n }\n }\n}\n\n// Reserve format info cells before data placement starts.\nfunction markFormat(marks: boolean[][]) {\n const size = marks.length\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n\n ;[...left, ...right].forEach(([row, col]) => {\n marks[row][col] = true\n })\n}\n\n// Build the static QR scaffolding: finders, timing and align blocks.\nfunction makeBase(info: VersionInfo) {\n const grid = makeGrid(info.size)\n const marks = Array.from({length: info.size}, () => Array<boolean>(info.size).fill(false))\n\n placeFinder(grid, marks, 0, 0)\n placeFinder(grid, marks, 0, info.size - 7)\n placeFinder(grid, marks, info.size - 7, 0)\n\n for (let i = 8; i < info.size - 8; i += 1) {\n setCell(grid, marks, 6, i, i % 2 === 0)\n setCell(grid, marks, i, 6, i % 2 === 0)\n }\n\n info.align.forEach((row) => {\n info.align.forEach((col) => {\n placeAlign(grid, marks, row, col)\n })\n })\n\n markFormat(marks)\n setCell(grid, marks, info.version * 4 + 9, 8, true)\n\n return {grid, marks}\n}\n\n// Fill open cells with payload bits using the QR zig-zag path.\nfunction placeData(grid: (boolean | null)[][], marks: boolean[][], words: number[]) {\n const size = grid.length\n const bits: number[] = []\n\n words.forEach((word) => pushBits(bits, word, 8))\n\n let index = 0\n let up = true\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) {\n col -= 1\n }\n\n let row = up ? size - 1 : 0\n\n while (row >= 0 && row < size) {\n for (let offset = 0; offset < 2; offset += 1) {\n const x = col - offset\n\n if (marks[row][x]) continue\n\n grid[row][x] = bits[index] === 1\n index += 1\n }\n\n row += up ? -1 : 1\n }\n\n up = !up\n }\n\n for (let row = 0; row < size; row += 1) {\n for (let col = 0; col < size; col += 1) {\n if (!marks[row][col] && grid[row][col] == null) {\n grid[row][col] = false\n }\n }\n }\n}\n\n// Check whether the current mask flips this module.\nfunction shouldFlip(mask: number, row: number, col: number) {\n switch (mask) {\n case 0:\n return (row + col) % 2 === 0\n case 1:\n return row % 2 === 0\n case 2:\n return col % 3 === 0\n case 3:\n return (row + col) % 3 === 0\n case 4:\n return (Math.floor(row / 2) + Math.floor(col / 3)) % 2 === 0\n case 5:\n return ((row * col) % 2) + ((row * col) % 3) === 0\n case 6:\n return (((row * col) % 2) + ((row * col) % 3)) % 2 === 0\n case 7:\n return (((row + col) % 2) + ((row * col) % 3)) % 2 === 0\n default:\n return false\n }\n}\n\n// Apply one mask while leaving reserved cells untouched.\nfunction applyMask(grid: (boolean | null)[][], marks: boolean[][], mask: number) {\n return grid.map((line, row) =>\n line.map((cell, col) => {\n if (marks[row][col]) return Boolean(cell)\n return shouldFlip(mask, row, col) ? !cell : Boolean(cell)\n })\n )\n}\n\n// Write format bits into both reserved format strips.\nfunction withFormat(grid: boolean[][], mask: number) {\n const size = grid.length\n const bits = formatBits[mask]\n const left = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n ]\n const right = [\n [size - 1, 8],\n [size - 2, 8],\n [size - 3, 8],\n [size - 4, 8],\n [size - 5, 8],\n [size - 6, 8],\n [size - 7, 8],\n [8, size - 8],\n [8, size - 7],\n [8, size - 6],\n [8, size - 5],\n [8, size - 4],\n [8, size - 3],\n [8, size - 2],\n [8, size - 1],\n ]\n const next = grid.map((line) => [...line])\n\n bits.split('').forEach((bit, index) => {\n const dark = bit === '1'\n const [leftRow, leftCol] = left[index]\n const [rightRow, rightCol] = right[index]\n\n next[leftRow][leftCol] = dark\n next[rightRow][rightCol] = dark\n })\n\n return next\n}\n\n// Penalize long runs of the same color.\nfunction runPenalty(values: boolean[]) {\n let score = 0\n let run = 1\n\n for (let i = 1; i <= values.length; i += 1) {\n if (values[i] === values[i - 1]) {\n run += 1\n continue\n }\n\n if (run >= 5) {\n score += run - 2\n }\n\n run = 1\n }\n\n return score\n}\n\n// Penalize large flat blocks that scan poorly.\nfunction blockPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length - 1; row += 1) {\n for (let col = 0; col < grid.length - 1; col += 1) {\n const cell = grid[row][col]\n\n if (cell === grid[row][col + 1] && cell === grid[row + 1][col] && cell === grid[row + 1][col + 1]) {\n score += 3\n }\n }\n }\n\n return score\n}\n\n// Penalize patterns that look too similar to finder markers.\nfunction finderPenalty(values: boolean[]) {\n const matchA = '10111010000'\n const matchB = '00001011101'\n let score = 0\n\n for (let i = 0; i <= values.length - 11; i += 1) {\n const slice = values\n .slice(i, i + 11)\n .map((cell) => (cell ? '1' : '0'))\n .join('')\n\n if (slice === matchA || slice === matchB) {\n score += 40\n }\n }\n\n return score\n}\n\n// Keep the dark/light balance near the QR target.\nfunction ratioPenalty(grid: boolean[][]) {\n const total = grid.length * grid.length\n const dark = grid.flat().filter(Boolean).length\n const ratio = (dark * 100) / total\n return Math.floor(Math.abs(ratio - 50) / 5) * 10\n}\n\n// Sum the standard QR penalties for one candidate matrix.\nfunction getPenalty(grid: boolean[][]) {\n let score = 0\n\n for (let row = 0; row < grid.length; row += 1) {\n score += runPenalty(grid[row])\n score += finderPenalty(grid[row])\n }\n\n for (let col = 0; col < grid.length; col += 1) {\n const line = grid.map((row) => row[col])\n score += runPenalty(line)\n score += finderPenalty(line)\n }\n\n score += blockPenalty(grid)\n score += ratioPenalty(grid)\n\n return score\n}\n\n// Build the final matrix and pick the mask with the lowest penalty.\nfunction makeMatrix(value: string) {\n const data = Array.from(encoder.encode(value))\n const info = pickVersion(data.length)\n\n if (!info) {\n return null\n }\n\n const {grid, marks} = makeBase(info)\n placeData(grid, marks, encodeData(value, info))\n\n let bestMask = 0\n let bestGrid = withFormat(applyMask(grid, marks, 0), 0)\n let bestScore = getPenalty(bestGrid)\n\n for (let mask = 1; mask < 8; mask += 1) {\n const masked = withFormat(applyMask(grid, marks, mask), mask)\n const score = getPenalty(masked)\n\n if (score < bestScore) {\n bestMask = mask\n bestGrid = masked\n bestScore = score\n }\n }\n\n return {grid: bestGrid, mask: bestMask}\n}\n\n// Render a local SVG QR code without adding a runtime dependency.\nexport function MQrCode({\n value,\n size = 144,\n padding = 4,\n fg = '#111827',\n bg = '#ffffff',\n status = 'idle',\n statusLabel,\n className,\n style,\n ...rest\n}: MQrCodeProps) {\n const qr = makeMatrix(value)\n\n if (!qr) {\n return null\n }\n\n const dimension = qr.grid.length + padding * 2\n const nextStyle = {\n '--qr-size': `${size}px`,\n ...style,\n } as CSSProperties\n const statusColor = status === 'success' ? 'success' : status === 'error' ? 'error' : 'primary'\n\n return (\n <div\n className={cn('qr-code', status !== 'idle' && `status-${status}`, className)}\n style={nextStyle}\n aria-busy={status === 'loading' || undefined}\n {...rest}\n >\n <svg\n className={cn(status !== 'idle' && 'dimmed')}\n viewBox={`0 0 ${dimension} ${dimension}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"QR code\"\n >\n <rect width={dimension} height={dimension} fill={bg} />\n {qr.grid.map((line, row) =>\n line.map((cell, col) =>\n cell ? (\n <rect\n key={`${row}-${col}`}\n x={col + padding}\n y={row + padding}\n width=\"1\"\n height=\"1\"\n fill={fg}\n />\n ) : null\n )\n )}\n </svg>\n {status !== 'idle' && (\n <div className=\"qr-status-center\" aria-label={statusLabel ?? `QR code ${status}`} role=\"status\">\n {status === 'loading' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n loading\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n />\n ) : status === 'success' ? (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MSuccessIcon />\n </MButton>\n ) : (\n <MButton\n variant=\"ghost\"\n size=\"lg\"\n color={statusColor}\n shape=\"circle\"\n iconOnly\n pulsing\n disabled\n tabIndex={-1}\n className=\"qr-status-chip\"\n aria-hidden=\"true\"\n >\n <MErrorIcon />\n </MButton>\n )}\n </div>\n )}\n </div>\n )\n}\n"],"mappings":";;;;;;AAOA,SAAgB,EAAQ,EACpB,WAAQ,GACR,SAAM,GACN,WAAQ,WACR,UAAO,MACP,cAAW,IACX,aACA,cACA,GAAG,KACU;CACb,IAAM,CAAC,GAAS,KAAc,EAAwB,KAAK,EACrD,IAAe,KAAW,GAE1B,KAAe,MAAkB;AAC/B,OACJ,IAAW,EAAM;;AAGrB,QACI,kBAAC,OAAD;EACI,WAAW,EAAG,UAAU,SAAS,KAAS,GAAM,KAAY,aAAa,EAAU;EACnF,MAAK;EACL,cAAW;EACX,oBAAoB,EAAW,KAAK;EACpC,GAAI;YAEH,MAAM,KAAK,EAAC,QAAQ,GAAI,GAAG,GAAG,MAAM;GACjC,IAAM,IAAY,IAAI,GAChB,IAAS,KAAgB;AAC/B,UACI,kBAAC,UAAD;IAEI,MAAK;IACL,WAAU;IACV,eAAe,EAAY,EAAU;IACrC,oBAAoB,CAAC,KAAY,EAAW,EAAU;IACtD,cAAY,GAAG,EAAU,OAAO,IAAY,IAAI,MAAM;IACtD,UAAU,IAAW,KAAK;IAC1B,UAAU;cAEV,kBAAC,QAAD;KAAM,WAAU;KAAY,eAAY;eAC1B,EAAT,IAAU,IAAoB,GAArB,EAAiB,CAAgB;KACxC,CAAA;IACF,EAZA,EAYA;IAEf;EACA,CAAA;;;;ACrCd,IAAM,IAA0B;CAC5B;EAAC,SAAS;EAAG,MAAM;EAAI,WAAW;EAAI,SAAS;EAAG,WAAW;EAAI,OAAO,EAAE;EAAC;CAC3E;EAAC,SAAS;EAAG,MAAM;EAAI,WAAW;EAAI,SAAS;EAAI,WAAW;EAAI,OAAO,CAAC,GAAG,GAAG;EAAC;CACjF;EAAC,SAAS;EAAG,MAAM;EAAI,WAAW;EAAI,SAAS;EAAI,WAAW;EAAI,OAAO,CAAC,GAAG,GAAG;EAAC;CACjF;EAAC,SAAS;EAAG,MAAM;EAAI,WAAW;EAAI,SAAS;EAAI,WAAW;EAAI,OAAO,CAAC,GAAG,GAAG;EAAC;CACjF;EAAC,SAAS;EAAG,MAAM;EAAI,WAAW;EAAK,SAAS;EAAI,WAAW;EAAK,OAAO,CAAC,GAAG,GAAG;EAAC;CACtF,EAEK,IAAa;CACf;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACH,EAEK,IAAe,MAAc,IAAI,CAAC,KAAK,EAAE,EACzC,IAAe,MAAc,IAAI,CAAC,KAAK,EAAE,EACzC,IAAU,IAAI,aAAa,EAE7B,IAAa;AAGjB,SAAS,IAAc;AACnB,KAAI,EAAY;CAEhB,IAAI,IAAQ;AAEZ,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK,EAK1B,CAJA,EAAS,KAAK,GACd,EAAS,KAAS,GAClB,MAAU,GAEN,IAAQ,QACR,KAAS;AAIjB,MAAK,IAAI,IAAI,KAAK,IAAI,KAAK,KAAK,EAC5B,GAAS,KAAK,EAAS,IAAI;AAG/B,KAAa;;AAIjB,SAAS,EAAM,GAAW,GAAW;AAGjC,QAFI,CAAC,KAAK,CAAC,IAAU,KACrB,GAAa,EACN,EAAS,EAAS,KAAK,EAAS;;AAI3C,SAAS,EAAQ,GAAgB,GAAiB;CAC9C,IAAM,IAAW,MAAM,EAAK,SAAS,EAAM,SAAS,EAAE,CAAC,KAAK,EAAE;AAE9D,MAAK,IAAI,IAAM,GAAG,IAAM,EAAK,QAAQ,KAAO,EACxC,MAAK,IAAI,IAAM,GAAG,IAAM,EAAM,QAAQ,KAAO,EACzC,GAAK,IAAM,MAAQ,EAAM,EAAK,IAAM,EAAM,GAAK;AAIvD,QAAO;;AAIX,SAAS,EAAc,GAAiB;AACpC,IAAa;CAEb,IAAI,IAAO,CAAC,EAAE;AAEd,MAAK,IAAI,IAAI,GAAG,IAAI,GAAS,KAAK,EAC9B,KAAO,EAAQ,GAAM,CAAC,GAAG,EAAS,GAAG,CAAC;AAG1C,QAAO;;AAIX,SAAS,EAAe,GAAgB,GAAiB;CACrD,IAAM,IAAO,EAAc,EAAQ,EAC7B,IAAO,CAAC,GAAG,GAAM,GAAO,MAAM,EAAQ,CAAC,KAAK,EAAE,CAAC;AAErD,MAAK,IAAI,IAAI,GAAG,IAAI,EAAK,QAAQ,KAAK,GAAG;EACrC,IAAM,IAAS,EAAK;AAEf,QAEL,MAAK,IAAI,IAAI,GAAG,IAAI,EAAK,QAAQ,KAAK,EAClC,GAAK,IAAI,MAAM,EAAM,EAAK,IAAI,EAAO;;AAI7C,QAAO,EAAK,MAAM,CAAC,EAAQ;;AAI/B,SAAS,EAAS,GAAkB,GAAe,GAAc;AAC7D,MAAK,IAAI,IAAM,IAAO,GAAG,KAAO,GAAG,IAC/B,GAAO,KAAM,KAAS,IAAO,EAAE;;AAKvC,SAAS,EAAY,GAAgB;CACjC,IAAM,IAAkB,EAAE;AAE1B,MAAK,IAAI,IAAI,GAAG,IAAI,EAAK,QAAQ,KAAK,GAAG;EACrC,IAAI,IAAO;AAEX,OAAK,IAAI,IAAM,GAAG,IAAM,GAAG,KAAO,EAC9B,KAAQ,KAAQ,KAAM,EAAK,IAAI,MAAQ;AAG3C,IAAM,KAAK,EAAK;;AAGpB,QAAO;;AAIX,SAAS,EAAY,GAAgB;AACjC,QAAO,EAAS,MAAM,MAAS,KAAU,EAAK,UAAU,IAAI;;AAIhE,SAAS,EAAW,GAAe,GAAmB;CAClD,IAAM,IAAO,MAAM,KAAK,EAAQ,OAAO,EAAM,CAAC,EACxC,IAAiB,EAAE,EACnB,IAAW,EAAK,YAAY;AASlC,MAPA,EAAS,GAAM,GAAQ,EAAE,EACzB,EAAS,GAAM,EAAK,QAAQ,EAAE,EAE9B,EAAK,SAAS,MAAS,EAAS,GAAM,GAAM,EAAE,CAAC,EAE/C,EAAS,GAAM,GAAG,KAAK,IAAI,GAAG,IAAW,EAAK,OAAO,CAAC,EAE/C,EAAK,SAAS,KAAM,GACvB,GAAK,KAAK,EAAE;CAGhB,IAAM,IAAO,CAAC,KAAM,GAAK;AAEzB,MAAK,IAAI,IAAI,GAAG,EAAK,SAAS,GAAU,KAAK,EACzC,GAAS,GAAM,EAAK,IAAI,IAAI,EAAE;CAGlC,IAAM,IAAY,EAAY,EAAK;AACnC,QAAO,CAAC,GAAG,GAAW,GAAG,EAAe,GAAW,EAAK,QAAQ,CAAC;;AAIrE,SAAS,EAAS,GAAc;AAC5B,QAAO,MAAM,KAAK,EAAC,QAAQ,GAAK,QAAQ,MAAsB,EAAK,CAAC,KAAK,KAAK,CAAC;;AAInF,SAAS,EAAQ,GAA4B,GAAoB,GAAa,GAAa,GAAe;AAClG,KAAM,KAAK,IAAM,KAAK,KAAO,EAAK,UAAU,KAAO,EAAK,WAC5D,EAAK,GAAK,KAAO,GACjB,EAAM,GAAK,KAAO;;AAItB,SAAS,EAAY,GAA4B,GAAoB,GAAa,GAAc;AAC5F,MAAK,IAAI,IAAM,IAAI,KAAO,GAAG,KAAO,EAChC,MAAK,IAAI,IAAM,IAAI,KAAO,GAAG,KAAO,GAAG;EACnC,IAAM,IAAO,MAAQ,MAAM,MAAQ,KAAK,MAAQ,MAAM,MAAQ,GACxD,IAAQ,MAAQ,KAAK,MAAQ,KAAK,MAAQ,KAAK,MAAQ,GACvD,IAAQ,KAAO,KAAK,KAAO,KAAK,KAAO,KAAK,KAAO;AACzD,IAAQ,GAAM,GAAO,IAAM,GAAK,IAAO,GAAK,CAAC,MAAS,KAAS,GAAO;;;AAMlF,SAAS,EAAW,GAA4B,GAAoB,GAAgB,GAAgB;AAC5F,QAAM,GAAQ,GAElB,MAAK,IAAI,IAAM,IAAI,KAAO,GAAG,KAAO,EAChC,MAAK,IAAI,IAAM,IAAI,KAAO,GAAG,KAAO,GAAG;EACnC,IAAM,IAAO,KAAK,IAAI,KAAK,IAAI,EAAI,EAAE,KAAK,IAAI,EAAI,CAAC,KAAK,GAClD,IAAM,MAAQ,KAAK,MAAQ;AACjC,IAAQ,GAAM,GAAO,IAAS,GAAK,IAAS,GAAK,KAAQ,EAAI;;;AAMzE,SAAS,EAAW,GAAoB;CACpC,IAAM,IAAO,EAAM,QACb,IAAO;EACT,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACT,EACK,IAAQ;EACV,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EAChB;AAEA,EAAC,GAAG,GAAM,GAAG,EAAM,CAAC,SAAS,CAAC,GAAK,OAAS;AACzC,IAAM,GAAK,KAAO;GACpB;;AAIN,SAAS,EAAS,GAAmB;CACjC,IAAM,IAAO,EAAS,EAAK,KAAK,EAC1B,IAAQ,MAAM,KAAK,EAAC,QAAQ,EAAK,MAAK,QAAQ,MAAe,EAAK,KAAK,CAAC,KAAK,GAAM,CAAC;AAI1F,CAFA,EAAY,GAAM,GAAO,GAAG,EAAE,EAC9B,EAAY,GAAM,GAAO,GAAG,EAAK,OAAO,EAAE,EAC1C,EAAY,GAAM,GAAO,EAAK,OAAO,GAAG,EAAE;AAE1C,MAAK,IAAI,IAAI,GAAG,IAAI,EAAK,OAAO,GAAG,KAAK,EAEpC,CADA,EAAQ,GAAM,GAAO,GAAG,GAAG,IAAI,KAAM,EAAE,EACvC,EAAQ,GAAM,GAAO,GAAG,GAAG,IAAI,KAAM,EAAE;AAY3C,QATA,EAAK,MAAM,SAAS,MAAQ;AACxB,IAAK,MAAM,SAAS,MAAQ;AACxB,KAAW,GAAM,GAAO,GAAK,EAAI;IACnC;GACJ,EAEF,EAAW,EAAM,EACjB,EAAQ,GAAM,GAAO,EAAK,UAAU,IAAI,GAAG,GAAG,GAAK,EAE5C;EAAC;EAAM;EAAM;;AAIxB,SAAS,EAAU,GAA4B,GAAoB,GAAiB;CAChF,IAAM,IAAO,EAAK,QACZ,IAAiB,EAAE;AAEzB,GAAM,SAAS,MAAS,EAAS,GAAM,GAAM,EAAE,CAAC;CAEhD,IAAI,IAAQ,GACR,IAAK;AAET,MAAK,IAAI,IAAM,IAAO,GAAG,IAAM,GAAG,KAAO,GAAG;AACxC,EAAI,MAAQ,KACR;EAGJ,IAAI,IAAM,IAAK,IAAO,IAAI;AAE1B,SAAO,KAAO,KAAK,IAAM,IAAM;AAC3B,QAAK,IAAI,IAAS,GAAG,IAAS,GAAG,KAAU,GAAG;IAC1C,IAAM,IAAI,IAAM;AAEZ,MAAM,GAAK,OAEf,EAAK,GAAK,KAAK,EAAK,OAAW,GAC/B,KAAS;;AAGb,QAAO,IAAK,KAAK;;AAGrB,MAAK,CAAC;;AAGV,MAAK,IAAI,IAAM,GAAG,IAAM,GAAM,KAAO,EACjC,MAAK,IAAI,IAAM,GAAG,IAAM,GAAM,KAAO,EACjC,CAAI,CAAC,EAAM,GAAK,MAAQ,EAAK,GAAK,MAAQ,SACtC,EAAK,GAAK,KAAO;;AAOjC,SAAS,EAAW,GAAc,GAAa,GAAa;AACxD,SAAQ,GAAR;EACI,KAAK,EACD,SAAQ,IAAM,KAAO,KAAM;EAC/B,KAAK,EACD,QAAO,IAAM,KAAM;EACvB,KAAK,EACD,QAAO,IAAM,KAAM;EACvB,KAAK,EACD,SAAQ,IAAM,KAAO,KAAM;EAC/B,KAAK,EACD,SAAQ,KAAK,MAAM,IAAM,EAAE,GAAG,KAAK,MAAM,IAAM,EAAE,IAAI,KAAM;EAC/D,KAAK,EACD,QAAS,IAAM,IAAO,IAAO,IAAM,IAAO,KAAO;EACrD,KAAK,EACD,SAAU,IAAM,IAAO,IAAO,IAAM,IAAO,KAAM,KAAM;EAC3D,KAAK,EACD,UAAU,IAAM,KAAO,IAAO,IAAM,IAAO,KAAM,KAAM;EAC3D,QACI,QAAO;;;AAKnB,SAAS,EAAU,GAA4B,GAAoB,GAAc;AAC7E,QAAO,EAAK,KAAK,GAAM,MACnB,EAAK,KAAK,GAAM,MACR,EAAM,GAAK,KAAa,EAAQ,IAC7B,EAAW,GAAM,GAAK,EAAI,GAAG,CAAC,IAAO,EAAQ,EACtD,CACL;;AAIL,SAAS,EAAW,GAAmB,GAAc;CACjD,IAAM,IAAO,EAAK,QACZ,IAAO,EAAW,IAClB,IAAO;EACT,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACN,CAAC,GAAG,EAAE;EACT,EACK,IAAQ;EACV,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,IAAO,GAAG,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EACb,CAAC,GAAG,IAAO,EAAE;EAChB,EACK,IAAO,EAAK,KAAK,MAAS,CAAC,GAAG,EAAK,CAAC;AAW1C,QATA,EAAK,MAAM,GAAG,CAAC,SAAS,GAAK,MAAU;EACnC,IAAM,IAAO,MAAQ,KACf,CAAC,GAAS,KAAW,EAAK,IAC1B,CAAC,GAAU,KAAY,EAAM;AAGnC,EADA,EAAK,GAAS,KAAW,GACzB,EAAK,GAAU,KAAY;GAC7B,EAEK;;AAIX,SAAS,EAAW,GAAmB;CACnC,IAAI,IAAQ,GACR,IAAM;AAEV,MAAK,IAAI,IAAI,GAAG,KAAK,EAAO,QAAQ,KAAK,GAAG;AACxC,MAAI,EAAO,OAAO,EAAO,IAAI,IAAI;AAC7B,QAAO;AACP;;AAOJ,EAJI,KAAO,MACP,KAAS,IAAM,IAGnB,IAAM;;AAGV,QAAO;;AAIX,SAAS,EAAa,GAAmB;CACrC,IAAI,IAAQ;AAEZ,MAAK,IAAI,IAAM,GAAG,IAAM,EAAK,SAAS,GAAG,KAAO,EAC5C,MAAK,IAAI,IAAM,GAAG,IAAM,EAAK,SAAS,GAAG,KAAO,GAAG;EAC/C,IAAM,IAAO,EAAK,GAAK;AAEvB,EAAI,MAAS,EAAK,GAAK,IAAM,MAAM,MAAS,EAAK,IAAM,GAAG,MAAQ,MAAS,EAAK,IAAM,GAAG,IAAM,OAC3F,KAAS;;AAKrB,QAAO;;AAIX,SAAS,EAAc,GAAmB;CACtC,IAEI,IAAQ;AAEZ,MAAK,IAAI,IAAI,GAAG,KAAK,EAAO,SAAS,IAAI,KAAK,GAAG;EAC7C,IAAM,IAAQ,EACT,MAAM,GAAG,IAAI,GAAG,CAChB,KAAK,MAAU,IAAO,MAAM,IAAK,CACjC,KAAK,GAAG;AAEb,GAAI,MAAU,iBAAU,MAAU,mBAC9B,KAAS;;AAIjB,QAAO;;AAIX,SAAS,EAAa,GAAmB;CACrC,IAAM,IAAQ,EAAK,SAAS,EAAK,QAE3B,IADO,EAAK,MAAM,CAAC,OAAO,QAAQ,CAAC,SACnB,MAAO;AAC7B,QAAO,KAAK,MAAM,KAAK,IAAI,IAAQ,GAAG,GAAG,EAAE,GAAG;;AAIlD,SAAS,EAAW,GAAmB;CACnC,IAAI,IAAQ;AAEZ,MAAK,IAAI,IAAM,GAAG,IAAM,EAAK,QAAQ,KAAO,EAExC,CADA,KAAS,EAAW,EAAK,GAAK,EAC9B,KAAS,EAAc,EAAK,GAAK;AAGrC,MAAK,IAAI,IAAM,GAAG,IAAM,EAAK,QAAQ,KAAO,GAAG;EAC3C,IAAM,IAAO,EAAK,KAAK,MAAQ,EAAI,GAAK;AAExC,EADA,KAAS,EAAW,EAAK,EACzB,KAAS,EAAc,EAAK;;AAMhC,QAHA,KAAS,EAAa,EAAK,EAC3B,KAAS,EAAa,EAAK,EAEpB;;AAIX,SAAS,EAAW,GAAe;CAE/B,IAAM,IAAO,EADA,MAAM,KAAK,EAAQ,OAAO,EAAM,CAAC,CAChB,OAAO;AAErC,KAAI,CAAC,EACD,QAAO;CAGX,IAAM,EAAC,SAAM,aAAS,EAAS,EAAK;AACpC,GAAU,GAAM,GAAO,EAAW,GAAO,EAAK,CAAC;CAE/C,IAAI,IAAW,GACX,IAAW,EAAW,EAAU,GAAM,GAAO,EAAE,EAAE,EAAE,EACnD,IAAY,EAAW,EAAS;AAEpC,MAAK,IAAI,IAAO,GAAG,IAAO,GAAG,KAAQ,GAAG;EACpC,IAAM,IAAS,EAAW,EAAU,GAAM,GAAO,EAAK,EAAE,EAAK,EACvD,IAAQ,EAAW,EAAO;AAEhC,EAAI,IAAQ,MACR,IAAW,GACX,IAAW,GACX,IAAY;;AAIpB,QAAO;EAAC,MAAM;EAAU,MAAM;EAAS;;AAI3C,SAAgB,EAAQ,EACpB,UACA,UAAO,KACP,aAAU,GACV,QAAK,WACL,QAAK,WACL,YAAS,QACT,gBACA,cACA,UACA,GAAG,KACU;CACb,IAAM,IAAK,EAAW,EAAM;AAE5B,KAAI,CAAC,EACD,QAAO;CAGX,IAAM,IAAY,EAAG,KAAK,SAAS,IAAU,GACvC,IAAY;EACd,aAAa,GAAG,EAAK;EACrB,GAAG;EACN,EACK,IAAc,MAAW,YAAY,YAAY,MAAW,UAAU,UAAU;AAEtF,QACI,kBAAC,OAAD;EACI,WAAW,EAAG,WAAW,MAAW,UAAU,UAAU,KAAU,EAAU;EAC5E,OAAO;EACP,aAAW,MAAW,aAAa,KAAA;EACnC,GAAI;YAJR,CAMI,kBAAC,OAAD;GACI,WAAW,EAAG,MAAW,UAAU,SAAS;GAC5C,SAAS,OAAO,EAAU,GAAG;GAC7B,MAAK;GACL,OAAM;GACN,MAAK;GACL,cAAW;aANf,CAQI,kBAAC,QAAD;IAAM,OAAO;IAAW,QAAQ;IAAW,MAAM;IAAM,CAAA,EACtD,EAAG,KAAK,KAAK,GAAM,MAChB,EAAK,KAAK,GAAM,MACZ,IACI,kBAAC,QAAD;IAEI,GAAG,IAAM;IACT,GAAG,IAAM;IACT,OAAM;IACN,QAAO;IACP,MAAM;IACR,EANO,GAAG,EAAI,GAAG,IAMjB,GACF,KACP,CACJ,CACC;MACL,MAAW,UACR,kBAAC,OAAD;GAAK,WAAU;GAAmB,cAAY,KAAe,WAAW;GAAU,MAAK;aAClF,MAAW,YACR,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,OAAO;IACP,OAAM;IACN,UAAA;IACA,SAAA;IACA,SAAA;IACA,UAAA;IACA,UAAU;IACV,WAAU;IACV,eAAY;IACd,CAAA,GACF,MAAW,YACX,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,OAAO;IACP,OAAM;IACN,UAAA;IACA,SAAA;IACA,UAAA;IACA,UAAU;IACV,WAAU;IACV,eAAY;cAEZ,kBAAC,GAAD,EAAgB,CAAA;IACV,CAAA,GAEV,kBAAC,GAAD;IACI,SAAQ;IACR,MAAK;IACL,OAAO;IACP,OAAM;IACN,UAAA;IACA,SAAA;IACA,UAAA;IACA,UAAU;IACV,WAAU;IACV,eAAY;cAEZ,kBAAC,GAAD,EAAc,CAAA;IACR,CAAA;GAEZ,CAAA,CAER"}
@@ -1,2 +1,2 @@
1
- const e=require(`./icons-Dv1T-cF4.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MButton-CX8SV1m0.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a({value:n=0,max:a=5,color:o=`warning`,size:s=`md`,readOnly:c=!1,onChange:l,className:u,...d}){let[f,p]=(0,r.useState)(null),m=f??n,h=e=>{c||l?.(e)};return(0,i.jsx)(`div`,{className:t.t(`rating`,`color-${o}`,s,c&&`read-only`,u),role:`radiogroup`,"aria-label":`MRating`,onMouseLeave:()=>p(null),...d,children:Array.from({length:a},(t,n)=>{let r=n+1,a=m>=r;return(0,i.jsx)(`button`,{type:`button`,className:`rating-star`,onClick:()=>h(r),onMouseEnter:()=>!c&&p(r),"aria-label":`${r} star${r>1?`s`:``}`,tabIndex:c?-1:0,disabled:c,children:(0,i.jsx)(`span`,{className:`star-icon`,"aria-hidden":`true`,children:a?(0,i.jsx)(e.ii,{}):(0,i.jsx)(e.ai,{})})},n)})})}var o=[{version:1,size:21,dataWords:19,ecWords:7,byteLimit:17,align:[]},{version:2,size:25,dataWords:34,ecWords:10,byteLimit:32,align:[6,18]},{version:3,size:29,dataWords:55,ecWords:15,byteLimit:53,align:[6,22]},{version:4,size:33,dataWords:80,ecWords:20,byteLimit:78,align:[6,26]},{version:5,size:37,dataWords:108,ecWords:26,byteLimit:106,align:[6,30]}],s=[`111011111000100`,`111001011110011`,`111110110101010`,`111100010011101`,`110011000101111`,`110001100011000`,`110110001000001`,`110100101110110`],c=Array(512).fill(0),l=Array(256).fill(0),u=new TextEncoder,d=!1;function f(){if(d)return;let e=1;for(let t=0;t<255;t+=1)c[t]=e,l[e]=t,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e+=1)c[e]=c[e-255];d=!0}function p(e,t){return!e||!t?0:(f(),c[l[e]+l[t]])}function m(e,t){let n=Array(e.length+t.length-1).fill(0);for(let r=0;r<e.length;r+=1)for(let i=0;i<t.length;i+=1)n[r+i]^=p(e[r],t[i]);return n}function h(e){f();let t=[1];for(let n=0;n<e;n+=1)t=m(t,[1,c[n]]);return t}function g(e,t){let n=h(t),r=[...e,...Array(t).fill(0)];for(let t=0;t<e.length;t+=1){let e=r[t];if(e)for(let i=0;i<n.length;i+=1)r[t+i]^=p(n[i],e)}return r.slice(-t)}function _(e,t,n){for(let r=n-1;r>=0;--r)e.push(t>>r&1)}function v(e){let t=[];for(let n=0;n<e.length;n+=8){let r=0;for(let t=0;t<8;t+=1)r=r<<1|(e[n+t]??0);t.push(r)}return t}function y(e){return o.find(t=>e<=t.byteLimit)??null}function b(e,t){let n=Array.from(u.encode(e)),r=[],i=t.dataWords*8;for(_(r,4,4),_(r,n.length,8),n.forEach(e=>_(r,e,8)),_(r,0,Math.min(4,i-r.length));r.length%8!=0;)r.push(0);let a=[236,17];for(let e=0;r.length<i;e+=1)_(r,a[e%2],8);let o=v(r);return[...o,...g(o,t.ecWords)]}function x(e){return Array.from({length:e},()=>Array(e).fill(null))}function S(e,t,n,r,i){n<0||r<0||n>=e.length||r>=e.length||(e[n][r]=i,t[n][r]=!0)}function C(e,t,n,r){for(let i=-1;i<=7;i+=1)for(let a=-1;a<=7;a+=1){let o=i===-1||i===7||a===-1||a===7,s=i===0||i===6||a===0||a===6,c=i>=2&&i<=4&&a>=2&&a<=4;S(e,t,n+i,r+a,!o&&(s||c))}}function w(e,t,n,r){if(!t[n][r])for(let i=-2;i<=2;i+=1)for(let a=-2;a<=2;a+=1){let o=Math.max(Math.abs(i),Math.abs(a))===2,s=i===0&&a===0;S(e,t,n+i,r+a,o||s)}}function T(e){let t=e.length,n=[[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,7],[8,8],[7,8],[5,8],[4,8],[3,8],[2,8],[1,8],[0,8]],r=[[t-1,8],[t-2,8],[t-3,8],[t-4,8],[t-5,8],[t-6,8],[t-7,8],[8,t-8],[8,t-7],[8,t-6],[8,t-5],[8,t-4],[8,t-3],[8,t-2],[8,t-1]];[...n,...r].forEach(([t,n])=>{e[t][n]=!0})}function E(e){let t=x(e.size),n=Array.from({length:e.size},()=>Array(e.size).fill(!1));C(t,n,0,0),C(t,n,0,e.size-7),C(t,n,e.size-7,0);for(let r=8;r<e.size-8;r+=1)S(t,n,6,r,r%2==0),S(t,n,r,6,r%2==0);return e.align.forEach(r=>{e.align.forEach(e=>{w(t,n,r,e)})}),T(n),S(t,n,e.version*4+9,8,!0),{grid:t,marks:n}}function D(e,t,n){let r=e.length,i=[];n.forEach(e=>_(i,e,8));let a=0,o=!0;for(let n=r-1;n>0;n-=2){n===6&&--n;let s=o?r-1:0;for(;s>=0&&s<r;){for(let r=0;r<2;r+=1){let o=n-r;t[s][o]||(e[s][o]=i[a]===1,a+=1)}s+=o?-1:1}o=!o}for(let n=0;n<r;n+=1)for(let i=0;i<r;i+=1)!t[n][i]&&e[n][i]==null&&(e[n][i]=!1)}function O(e,t,n){switch(e){case 0:return(t+n)%2==0;case 1:return t%2==0;case 2:return n%3==0;case 3:return(t+n)%3==0;case 4:return(Math.floor(t/2)+Math.floor(n/3))%2==0;case 5:return t*n%2+t*n%3==0;case 6:return(t*n%2+t*n%3)%2==0;case 7:return((t+n)%2+t*n%3)%2==0;default:return!1}}function k(e,t,n){return e.map((e,r)=>e.map((e,i)=>t[r][i]?!!e:O(n,r,i)?!e:!!e))}function A(e,t){let n=e.length,r=s[t],i=[[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,7],[8,8],[7,8],[5,8],[4,8],[3,8],[2,8],[1,8],[0,8]],a=[[n-1,8],[n-2,8],[n-3,8],[n-4,8],[n-5,8],[n-6,8],[n-7,8],[8,n-8],[8,n-7],[8,n-6],[8,n-5],[8,n-4],[8,n-3],[8,n-2],[8,n-1]],o=e.map(e=>[...e]);return r.split(``).forEach((e,t)=>{let n=e===`1`,[r,s]=i[t],[c,l]=a[t];o[r][s]=n,o[c][l]=n}),o}function j(e){let t=0,n=1;for(let r=1;r<=e.length;r+=1){if(e[r]===e[r-1]){n+=1;continue}n>=5&&(t+=n-2),n=1}return t}function M(e){let t=0;for(let n=0;n<e.length-1;n+=1)for(let r=0;r<e.length-1;r+=1){let i=e[n][r];i===e[n][r+1]&&i===e[n+1][r]&&i===e[n+1][r+1]&&(t+=3)}return t}function N(e){let t=0;for(let n=0;n<=e.length-11;n+=1){let r=e.slice(n,n+11).map(e=>e?`1`:`0`).join(``);(r===`10111010000`||r===`00001011101`)&&(t+=40)}return t}function P(e){let t=e.length*e.length,n=e.flat().filter(Boolean).length*100/t;return Math.floor(Math.abs(n-50)/5)*10}function F(e){let t=0;for(let n=0;n<e.length;n+=1)t+=j(e[n]),t+=N(e[n]);for(let n=0;n<e.length;n+=1){let r=e.map(e=>e[n]);t+=j(r),t+=N(r)}return t+=M(e),t+=P(e),t}function I(e){let t=y(Array.from(u.encode(e)).length);if(!t)return null;let{grid:n,marks:r}=E(t);D(n,r,b(e,t));let i=0,a=A(k(n,r,0),0),o=F(a);for(let e=1;e<8;e+=1){let t=A(k(n,r,e),e),s=F(t);s<o&&(i=e,a=t,o=s)}return{grid:a,mask:i}}function L({value:r,size:a=144,padding:o=4,fg:s=`#111827`,bg:c=`#ffffff`,status:l=`idle`,statusLabel:u,className:d,style:f,...p}){let m=I(r);if(!m)return null;let h=m.grid.length+o*2,g={"--qr-size":`${a}px`,...f},_=l===`success`?`success`:l===`error`?`error`:`primary`;return(0,i.jsxs)(`div`,{className:t.t(`qr-code`,l!==`idle`&&`status-${l}`,d),style:g,"aria-busy":l===`loading`||void 0,...p,children:[(0,i.jsxs)(`svg`,{className:t.t(l!==`idle`&&`dimmed`),viewBox:`0 0 ${h} ${h}`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,role:`img`,"aria-label":`QR code`,children:[(0,i.jsx)(`rect`,{width:h,height:h,fill:c}),m.grid.map((e,t)=>e.map((e,n)=>e?(0,i.jsx)(`rect`,{x:n+o,y:t+o,width:`1`,height:`1`,fill:s},`${t}-${n}`):null))]}),l!==`idle`&&(0,i.jsx)(`div`,{className:`qr-status-center`,"aria-label":u??`QR code ${l}`,role:`status`,children:l===`loading`?(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,loading:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`}):l===`success`?(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`,children:(0,i.jsx)(e.li,{})}):(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`,children:(0,i.jsx)(e.ui,{})})})]})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return L}});
2
- //# sourceMappingURL=MQrCode-DB9vELHq.cjs.map
1
+ const e=require(`./icons-Dv1T-cF4.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./MButton-Rg85cgO1.cjs`);let r=require(`react`),i=require(`react/jsx-runtime`);function a({value:n=0,max:a=5,color:o=`warning`,size:s=`md`,readOnly:c=!1,onChange:l,className:u,...d}){let[f,p]=(0,r.useState)(null),m=f??n,h=e=>{c||l?.(e)};return(0,i.jsx)(`div`,{className:t.t(`rating`,`color-${o}`,s,c&&`read-only`,u),role:`radiogroup`,"aria-label":`MRating`,onMouseLeave:()=>p(null),...d,children:Array.from({length:a},(t,n)=>{let r=n+1,a=m>=r;return(0,i.jsx)(`button`,{type:`button`,className:`rating-star`,onClick:()=>h(r),onMouseEnter:()=>!c&&p(r),"aria-label":`${r} star${r>1?`s`:``}`,tabIndex:c?-1:0,disabled:c,children:(0,i.jsx)(`span`,{className:`star-icon`,"aria-hidden":`true`,children:a?(0,i.jsx)(e.ii,{}):(0,i.jsx)(e.ai,{})})},n)})})}var o=[{version:1,size:21,dataWords:19,ecWords:7,byteLimit:17,align:[]},{version:2,size:25,dataWords:34,ecWords:10,byteLimit:32,align:[6,18]},{version:3,size:29,dataWords:55,ecWords:15,byteLimit:53,align:[6,22]},{version:4,size:33,dataWords:80,ecWords:20,byteLimit:78,align:[6,26]},{version:5,size:37,dataWords:108,ecWords:26,byteLimit:106,align:[6,30]}],s=[`111011111000100`,`111001011110011`,`111110110101010`,`111100010011101`,`110011000101111`,`110001100011000`,`110110001000001`,`110100101110110`],c=Array(512).fill(0),l=Array(256).fill(0),u=new TextEncoder,d=!1;function f(){if(d)return;let e=1;for(let t=0;t<255;t+=1)c[t]=e,l[e]=t,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e+=1)c[e]=c[e-255];d=!0}function p(e,t){return!e||!t?0:(f(),c[l[e]+l[t]])}function m(e,t){let n=Array(e.length+t.length-1).fill(0);for(let r=0;r<e.length;r+=1)for(let i=0;i<t.length;i+=1)n[r+i]^=p(e[r],t[i]);return n}function h(e){f();let t=[1];for(let n=0;n<e;n+=1)t=m(t,[1,c[n]]);return t}function g(e,t){let n=h(t),r=[...e,...Array(t).fill(0)];for(let t=0;t<e.length;t+=1){let e=r[t];if(e)for(let i=0;i<n.length;i+=1)r[t+i]^=p(n[i],e)}return r.slice(-t)}function _(e,t,n){for(let r=n-1;r>=0;--r)e.push(t>>r&1)}function v(e){let t=[];for(let n=0;n<e.length;n+=8){let r=0;for(let t=0;t<8;t+=1)r=r<<1|(e[n+t]??0);t.push(r)}return t}function y(e){return o.find(t=>e<=t.byteLimit)??null}function b(e,t){let n=Array.from(u.encode(e)),r=[],i=t.dataWords*8;for(_(r,4,4),_(r,n.length,8),n.forEach(e=>_(r,e,8)),_(r,0,Math.min(4,i-r.length));r.length%8!=0;)r.push(0);let a=[236,17];for(let e=0;r.length<i;e+=1)_(r,a[e%2],8);let o=v(r);return[...o,...g(o,t.ecWords)]}function x(e){return Array.from({length:e},()=>Array(e).fill(null))}function S(e,t,n,r,i){n<0||r<0||n>=e.length||r>=e.length||(e[n][r]=i,t[n][r]=!0)}function C(e,t,n,r){for(let i=-1;i<=7;i+=1)for(let a=-1;a<=7;a+=1){let o=i===-1||i===7||a===-1||a===7,s=i===0||i===6||a===0||a===6,c=i>=2&&i<=4&&a>=2&&a<=4;S(e,t,n+i,r+a,!o&&(s||c))}}function w(e,t,n,r){if(!t[n][r])for(let i=-2;i<=2;i+=1)for(let a=-2;a<=2;a+=1){let o=Math.max(Math.abs(i),Math.abs(a))===2,s=i===0&&a===0;S(e,t,n+i,r+a,o||s)}}function T(e){let t=e.length,n=[[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,7],[8,8],[7,8],[5,8],[4,8],[3,8],[2,8],[1,8],[0,8]],r=[[t-1,8],[t-2,8],[t-3,8],[t-4,8],[t-5,8],[t-6,8],[t-7,8],[8,t-8],[8,t-7],[8,t-6],[8,t-5],[8,t-4],[8,t-3],[8,t-2],[8,t-1]];[...n,...r].forEach(([t,n])=>{e[t][n]=!0})}function E(e){let t=x(e.size),n=Array.from({length:e.size},()=>Array(e.size).fill(!1));C(t,n,0,0),C(t,n,0,e.size-7),C(t,n,e.size-7,0);for(let r=8;r<e.size-8;r+=1)S(t,n,6,r,r%2==0),S(t,n,r,6,r%2==0);return e.align.forEach(r=>{e.align.forEach(e=>{w(t,n,r,e)})}),T(n),S(t,n,e.version*4+9,8,!0),{grid:t,marks:n}}function D(e,t,n){let r=e.length,i=[];n.forEach(e=>_(i,e,8));let a=0,o=!0;for(let n=r-1;n>0;n-=2){n===6&&--n;let s=o?r-1:0;for(;s>=0&&s<r;){for(let r=0;r<2;r+=1){let o=n-r;t[s][o]||(e[s][o]=i[a]===1,a+=1)}s+=o?-1:1}o=!o}for(let n=0;n<r;n+=1)for(let i=0;i<r;i+=1)!t[n][i]&&e[n][i]==null&&(e[n][i]=!1)}function O(e,t,n){switch(e){case 0:return(t+n)%2==0;case 1:return t%2==0;case 2:return n%3==0;case 3:return(t+n)%3==0;case 4:return(Math.floor(t/2)+Math.floor(n/3))%2==0;case 5:return t*n%2+t*n%3==0;case 6:return(t*n%2+t*n%3)%2==0;case 7:return((t+n)%2+t*n%3)%2==0;default:return!1}}function k(e,t,n){return e.map((e,r)=>e.map((e,i)=>t[r][i]?!!e:O(n,r,i)?!e:!!e))}function A(e,t){let n=e.length,r=s[t],i=[[8,0],[8,1],[8,2],[8,3],[8,4],[8,5],[8,7],[8,8],[7,8],[5,8],[4,8],[3,8],[2,8],[1,8],[0,8]],a=[[n-1,8],[n-2,8],[n-3,8],[n-4,8],[n-5,8],[n-6,8],[n-7,8],[8,n-8],[8,n-7],[8,n-6],[8,n-5],[8,n-4],[8,n-3],[8,n-2],[8,n-1]],o=e.map(e=>[...e]);return r.split(``).forEach((e,t)=>{let n=e===`1`,[r,s]=i[t],[c,l]=a[t];o[r][s]=n,o[c][l]=n}),o}function j(e){let t=0,n=1;for(let r=1;r<=e.length;r+=1){if(e[r]===e[r-1]){n+=1;continue}n>=5&&(t+=n-2),n=1}return t}function M(e){let t=0;for(let n=0;n<e.length-1;n+=1)for(let r=0;r<e.length-1;r+=1){let i=e[n][r];i===e[n][r+1]&&i===e[n+1][r]&&i===e[n+1][r+1]&&(t+=3)}return t}function N(e){let t=0;for(let n=0;n<=e.length-11;n+=1){let r=e.slice(n,n+11).map(e=>e?`1`:`0`).join(``);(r===`10111010000`||r===`00001011101`)&&(t+=40)}return t}function P(e){let t=e.length*e.length,n=e.flat().filter(Boolean).length*100/t;return Math.floor(Math.abs(n-50)/5)*10}function F(e){let t=0;for(let n=0;n<e.length;n+=1)t+=j(e[n]),t+=N(e[n]);for(let n=0;n<e.length;n+=1){let r=e.map(e=>e[n]);t+=j(r),t+=N(r)}return t+=M(e),t+=P(e),t}function I(e){let t=y(Array.from(u.encode(e)).length);if(!t)return null;let{grid:n,marks:r}=E(t);D(n,r,b(e,t));let i=0,a=A(k(n,r,0),0),o=F(a);for(let e=1;e<8;e+=1){let t=A(k(n,r,e),e),s=F(t);s<o&&(i=e,a=t,o=s)}return{grid:a,mask:i}}function L({value:r,size:a=144,padding:o=4,fg:s=`#111827`,bg:c=`#ffffff`,status:l=`idle`,statusLabel:u,className:d,style:f,...p}){let m=I(r);if(!m)return null;let h=m.grid.length+o*2,g={"--qr-size":`${a}px`,...f},_=l===`success`?`success`:l===`error`?`error`:`primary`;return(0,i.jsxs)(`div`,{className:t.t(`qr-code`,l!==`idle`&&`status-${l}`,d),style:g,"aria-busy":l===`loading`||void 0,...p,children:[(0,i.jsxs)(`svg`,{className:t.t(l!==`idle`&&`dimmed`),viewBox:`0 0 ${h} ${h}`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,role:`img`,"aria-label":`QR code`,children:[(0,i.jsx)(`rect`,{width:h,height:h,fill:c}),m.grid.map((e,t)=>e.map((e,n)=>e?(0,i.jsx)(`rect`,{x:n+o,y:t+o,width:`1`,height:`1`,fill:s},`${t}-${n}`):null))]}),l!==`idle`&&(0,i.jsx)(`div`,{className:`qr-status-center`,"aria-label":u??`QR code ${l}`,role:`status`,children:l===`loading`?(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,loading:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`}):l===`success`?(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`,children:(0,i.jsx)(e.li,{})}):(0,i.jsx)(n.t,{variant:`ghost`,size:`lg`,color:_,shape:`circle`,iconOnly:!0,pulsing:!0,disabled:!0,tabIndex:-1,className:`qr-status-chip`,"aria-hidden":`true`,children:(0,i.jsx)(e.ui,{})})})]})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return L}});
2
+ //# sourceMappingURL=MQrCode-L0trT6n3.cjs.map