@banzamel/mineralui 2.4.2 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (582) hide show
  1. package/README.md +1 -1
  2. package/dist/MAvatar-CvQuiGvT.cjs +2 -0
  3. package/dist/MAvatar-CvQuiGvT.cjs.map +1 -0
  4. package/dist/MAvatar-EkOBrEtS.js +73 -0
  5. package/dist/MAvatar-EkOBrEtS.js.map +1 -0
  6. package/dist/MButton-BxEky3xQ.cjs +2 -0
  7. package/dist/MButton-BxEky3xQ.cjs.map +1 -0
  8. package/dist/MButton-KELyyBw1.js +123 -0
  9. package/dist/MButton-KELyyBw1.js.map +1 -0
  10. package/dist/{MButtonGroup-BkNf7fzo.js → MButtonGroup-DDnn8Wfy.js} +3 -3
  11. package/dist/{MButtonGroup-BkNf7fzo.js.map → MButtonGroup-DDnn8Wfy.js.map} +1 -1
  12. package/dist/{MButtonGroup-iPv14c0V.cjs → MButtonGroup-Dz8Fm-oA.cjs} +2 -2
  13. package/dist/{MButtonGroup-iPv14c0V.cjs.map → MButtonGroup-Dz8Fm-oA.cjs.map} +1 -1
  14. package/dist/{MCard-DK-_FkpE.cjs → MCard-Bqm4BjK_.cjs} +2 -2
  15. package/dist/MCard-Bqm4BjK_.cjs.map +1 -0
  16. package/dist/{MCard-azpp4YVD.js → MCard-CqZYGaS2.js} +4 -4
  17. package/dist/MCard-CqZYGaS2.js.map +1 -0
  18. package/dist/MCheckbox-CaWgyUn5.js +72 -0
  19. package/dist/MCheckbox-CaWgyUn5.js.map +1 -0
  20. package/dist/MCheckbox-DpKJpnFF.cjs +2 -0
  21. package/dist/MCheckbox-DpKJpnFF.cjs.map +1 -0
  22. package/dist/{MConflictIllustration-znC7ijmP.js → MConflictIllustration-dwZS44ye.js} +1517 -1515
  23. package/dist/MConflictIllustration-dwZS44ye.js.map +1 -0
  24. package/dist/MConflictIllustration-vfHs-jad.cjs +2 -0
  25. package/dist/MConflictIllustration-vfHs-jad.cjs.map +1 -0
  26. package/dist/MDetailList-C3othNs3.js +127 -0
  27. package/dist/MDetailList-C3othNs3.js.map +1 -0
  28. package/dist/MDetailList-DkDHLdJ8.cjs +2 -0
  29. package/dist/MDetailList-DkDHLdJ8.cjs.map +1 -0
  30. package/dist/MDropdownMenu-C4-r7UZM.cjs +2 -0
  31. package/dist/MDropdownMenu-C4-r7UZM.cjs.map +1 -0
  32. package/dist/MDropdownMenu-Dvg9UsHB.js +219 -0
  33. package/dist/MDropdownMenu-Dvg9UsHB.js.map +1 -0
  34. package/dist/MGrid-CQqT8nHi.js +271 -0
  35. package/dist/MGrid-CQqT8nHi.js.map +1 -0
  36. package/dist/MGrid-tBsqShLG.cjs +2 -0
  37. package/dist/MGrid-tBsqShLG.cjs.map +1 -0
  38. package/dist/MHeading-DQSQ8c7L.js +21 -0
  39. package/dist/MHeading-DQSQ8c7L.js.map +1 -0
  40. package/dist/MHeading-DiGYs1FJ.cjs +2 -0
  41. package/dist/MHeading-DiGYs1FJ.cjs.map +1 -0
  42. package/dist/MInput-BeEGufZG.cjs +2 -0
  43. package/dist/MInput-BeEGufZG.cjs.map +1 -0
  44. package/dist/MInput-QnQV9L8U.js +190 -0
  45. package/dist/MInput-QnQV9L8U.js.map +1 -0
  46. package/dist/MInputCVC-CCNRAqHw.cjs +2 -0
  47. package/dist/MInputCVC-CCNRAqHw.cjs.map +1 -0
  48. package/dist/MInputCVC-IXIYZwex.js +410 -0
  49. package/dist/MInputCVC-IXIYZwex.js.map +1 -0
  50. package/dist/MInputSearch-BSIc6m2P.cjs +2 -0
  51. package/dist/MInputSearch-BSIc6m2P.cjs.map +1 -0
  52. package/dist/MInputSearch-CNuTAbYs.js +44 -0
  53. package/dist/MInputSearch-CNuTAbYs.js.map +1 -0
  54. package/dist/{MKbd-DqMnZ7Iv.cjs → MKbd-CnW3NUIu.cjs} +2 -2
  55. package/dist/{MKbd-DqMnZ7Iv.cjs.map → MKbd-CnW3NUIu.cjs.map} +1 -1
  56. package/dist/{MKbd-v6-tJ9sP.js → MKbd-DjfGyajR.js} +2 -2
  57. package/dist/{MKbd-v6-tJ9sP.js.map → MKbd-DjfGyajR.js.map} +1 -1
  58. package/dist/MLink-C6uwA6db.cjs +2 -0
  59. package/dist/MLink-C6uwA6db.cjs.map +1 -0
  60. package/dist/MLink-ixg0xFFI.js +31 -0
  61. package/dist/MLink-ixg0xFFI.js.map +1 -0
  62. package/dist/MLoader-CViA3zBo.js +44 -0
  63. package/dist/MLoader-CViA3zBo.js.map +1 -0
  64. package/dist/MLoader-DUOoOoNE.cjs +2 -0
  65. package/dist/MLoader-DUOoOoNE.cjs.map +1 -0
  66. package/dist/MPagination-BTGenxWW.js +122 -0
  67. package/dist/MPagination-BTGenxWW.js.map +1 -0
  68. package/dist/MPagination-DitmdtCc.cjs +2 -0
  69. package/dist/MPagination-DitmdtCc.cjs.map +1 -0
  70. package/dist/MPopover-CBDbUOW6.js +183 -0
  71. package/dist/MPopover-CBDbUOW6.js.map +1 -0
  72. package/dist/MPopover-ZeoU9hb5.cjs +2 -0
  73. package/dist/MPopover-ZeoU9hb5.cjs.map +1 -0
  74. package/dist/{MSimpleGrid-BWKurW6H.js → MSimpleGrid-C_QvLmck.js} +3 -3
  75. package/dist/MSimpleGrid-C_QvLmck.js.map +1 -0
  76. package/dist/MSimpleGrid-wgvjnxwM.cjs +2 -0
  77. package/dist/MSimpleGrid-wgvjnxwM.cjs.map +1 -0
  78. package/dist/{MSkeleton-C5uD4Axo.js → MSkeleton-BpcpBBJq.js} +12 -10
  79. package/dist/MSkeleton-BpcpBBJq.js.map +1 -0
  80. package/dist/MSkeleton-DuAN8Vcv.cjs +2 -0
  81. package/dist/MSkeleton-DuAN8Vcv.cjs.map +1 -0
  82. package/dist/MSlider-CLASUc2H.js +134 -0
  83. package/dist/MSlider-CLASUc2H.js.map +1 -0
  84. package/dist/MSlider-hONQBulE.cjs +2 -0
  85. package/dist/MSlider-hONQBulE.cjs.map +1 -0
  86. package/dist/MStack-BwAFeGGg.js +39 -0
  87. package/dist/MStack-BwAFeGGg.js.map +1 -0
  88. package/dist/MStack-CGII4A-q.cjs +2 -0
  89. package/dist/MStack-CGII4A-q.cjs.map +1 -0
  90. package/dist/MSubText-BeZk-fhz.js +17 -0
  91. package/dist/MSubText-BeZk-fhz.js.map +1 -0
  92. package/dist/MSubText-Dl1PfToZ.cjs +2 -0
  93. package/dist/MSubText-Dl1PfToZ.cjs.map +1 -0
  94. package/dist/MSurface-B_QnRLr5.js +74 -0
  95. package/dist/MSurface-B_QnRLr5.js.map +1 -0
  96. package/dist/MSurface-BrFo-JMJ.cjs +2 -0
  97. package/dist/MSurface-BrFo-JMJ.cjs.map +1 -0
  98. package/dist/MTag-BZrKN_DS.js +41 -0
  99. package/dist/MTag-BZrKN_DS.js.map +1 -0
  100. package/dist/MTag-DCE1vRJM.cjs +2 -0
  101. package/dist/MTag-DCE1vRJM.cjs.map +1 -0
  102. package/dist/MText-BUWQPoBM.js +45 -0
  103. package/dist/MText-BUWQPoBM.js.map +1 -0
  104. package/dist/MText-nsvLFsSv.cjs +2 -0
  105. package/dist/MText-nsvLFsSv.cjs.map +1 -0
  106. package/dist/MTooltip-BRSPJ3RY.js +100 -0
  107. package/dist/MTooltip-BRSPJ3RY.js.map +1 -0
  108. package/dist/MTooltip-Cj2Fxmzc.cjs +2 -0
  109. package/dist/MTooltip-Cj2Fxmzc.cjs.map +1 -0
  110. package/dist/MTreeView-BWCTlsU-.cjs +2 -0
  111. package/dist/MTreeView-BWCTlsU-.cjs.map +1 -0
  112. package/dist/MTreeView-CWcMwE-Z.js +554 -0
  113. package/dist/MTreeView-CWcMwE-Z.js.map +1 -0
  114. package/dist/{arduino-BdpdaLwK.cjs → arduino-C1gw-z1N.cjs} +1 -1
  115. package/dist/{arduino-BdpdaLwK.cjs.map → arduino-C1gw-z1N.cjs.map} +1 -1
  116. package/dist/{arduino-DDDlP9Yt.js → arduino-CcVvzDWF.js} +1 -1
  117. package/dist/{arduino-DDDlP9Yt.js.map → arduino-CcVvzDWF.js.map} +1 -1
  118. package/dist/{bash-D8WbAmuA.js → bash-DkMiO80l.js} +1 -1
  119. package/dist/{bash-D8WbAmuA.js.map → bash-DkMiO80l.js.map} +1 -1
  120. package/dist/{bash-eOUFh3S1.cjs → bash-wzZkpJC-.cjs} +1 -1
  121. package/dist/{bash-eOUFh3S1.cjs.map → bash-wzZkpJC-.cjs.map} +1 -1
  122. package/dist/{c-Bur7Mn-u.cjs → c-BSPjDa0P.cjs} +1 -1
  123. package/dist/{c-Bur7Mn-u.cjs.map → c-BSPjDa0P.cjs.map} +1 -1
  124. package/dist/{c-CTKNfUJI.js → c-DtlFV5Pa.js} +1 -1
  125. package/dist/{c-CTKNfUJI.js.map → c-DtlFV5Pa.js.map} +1 -1
  126. package/dist/calendar-2yhnCkGW.cjs +2 -0
  127. package/dist/calendar-2yhnCkGW.cjs.map +1 -0
  128. package/dist/calendar-DcNYDTVb.js +195 -0
  129. package/dist/calendar-DcNYDTVb.js.map +1 -0
  130. package/dist/calendar.cjs +1 -1
  131. package/dist/calendar.js +1 -1
  132. package/dist/{calendarDates-CYkJqcnp.js → calendarDates-Bpw_G_QR.js} +30 -19
  133. package/dist/calendarDates-Bpw_G_QR.js.map +1 -0
  134. package/dist/calendarDates-Cg0nm69Y.cjs +2 -0
  135. package/dist/calendarDates-Cg0nm69Y.cjs.map +1 -0
  136. package/dist/cards-Bp886TRb.cjs +2 -0
  137. package/dist/cards-Bp886TRb.cjs.map +1 -0
  138. package/dist/cards-BvER6Gx0.js +1277 -0
  139. package/dist/cards-BvER6Gx0.js.map +1 -0
  140. package/dist/cards.cjs +1 -1
  141. package/dist/cards.js +2 -2
  142. package/dist/{cn-YER3QsV1.js → cn-CUSXNnjF.js} +1 -1
  143. package/dist/{cn-YER3QsV1.js.map → cn-CUSXNnjF.js.map} +1 -1
  144. package/dist/{cn-CU5TNITO.cjs → cn-DYFxgzi2.cjs} +1 -1
  145. package/dist/{cn-CU5TNITO.cjs.map → cn-DYFxgzi2.cjs.map} +1 -1
  146. package/dist/components/cards/MCardDaySchedule/MCardDaySchedule.d.ts +1 -1
  147. package/dist/components/cards/MCardDocumentTree/MCardDocumentTree.d.ts +1 -1
  148. package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
  149. package/dist/components/cards/MCardPayment/MCardPayment.d.ts +1 -1
  150. package/dist/components/cards/MCardPayment/MCardPayment.types.d.ts +4 -0
  151. package/dist/components/cards/MCardPaymentMethod/MCardPaymentMethod.d.ts +1 -1
  152. package/dist/components/cards/MStatCard/MStatCard.d.ts +1 -1
  153. package/dist/components/controls/MCheckbox/MCheckbox.types.d.ts +6 -0
  154. package/dist/components/controls/MLoadMore/MLoadMore.d.ts +1 -1
  155. package/dist/components/controls/MSlider/MSlider.d.ts +1 -1
  156. package/dist/components/controls/MSlider/MSlider.types.d.ts +5 -0
  157. package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
  158. package/dist/components/data/MTreeView/MTreeView.types.d.ts +6 -0
  159. package/dist/components/data/MWeekGrid/MWeekGrid.d.ts +1 -1
  160. package/dist/components/data/MWeekGrid/MWeekGrid.types.d.ts +9 -3
  161. package/dist/components/display/MCodeBlock/MCodeBlock.d.ts +1 -1
  162. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.d.ts +1 -1
  163. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.types.d.ts +8 -2
  164. package/dist/components/dropdowns/MSelect/MSelect.d.ts +1 -1
  165. package/dist/components/dropdowns/shared/TimeColumnListbox.d.ts +20 -0
  166. package/dist/components/feedback/MAlert/MAlert.d.ts +1 -1
  167. package/dist/components/feedback/MBadge/MBadge.d.ts +1 -1
  168. package/dist/components/feedback/MBanner/MBanner.d.ts +1 -1
  169. package/dist/components/feedback/MLoader/MLoader.d.ts +1 -1
  170. package/dist/components/feedback/MSpinner/MSpinner.d.ts +1 -1
  171. package/dist/components/feedback/MTag/MTag.d.ts +1 -1
  172. package/dist/components/inputs/MInput/MInput.types.d.ts +6 -1
  173. package/dist/components/inputs/MInput/useFormatCaret.d.ts +8 -0
  174. package/dist/components/layout/MCanvasGrid/MCanvasGrid.types.d.ts +5 -0
  175. package/dist/components/layout/MContainer/MContainer.d.ts +1 -1
  176. package/dist/components/layout/MDivider/MDivider.d.ts +1 -1
  177. package/dist/components/layout/MFooter/MFooter.d.ts +1 -1
  178. package/dist/components/layout/MHeader/MHeader.d.ts +1 -1
  179. package/dist/components/layout/MInline/MInline.d.ts +1 -1
  180. package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
  181. package/dist/components/layout/MNavbar/MNavbar.types.d.ts +2 -0
  182. package/dist/components/layout/MSection/MSection.d.ts +1 -1
  183. package/dist/components/layout/MStack/MStack.d.ts +1 -1
  184. package/dist/components/layout/MStickyPanel/MStickyPanel.types.d.ts +4 -0
  185. package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
  186. package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
  187. package/dist/components/media/MAvatar/MAvatar.types.d.ts +10 -0
  188. package/dist/components/media/MCarousel/MCarousel.d.ts +1 -1
  189. package/dist/components/media/MImage/MImage.d.ts +1 -1
  190. package/dist/components/media/carouselA11y.d.ts +9 -0
  191. package/dist/components/overlays/MCommandPalette/MCommandPalette.d.ts +1 -1
  192. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.d.ts +4 -2
  193. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.types.d.ts +3 -1
  194. package/dist/components/overlays/MPopconfirm/MPopconfirm.d.ts +1 -1
  195. package/dist/components/overlays/scrollLock.d.ts +14 -0
  196. package/dist/components/primitives/MPopover/MPopover.d.ts +1 -1
  197. package/dist/components/primitives/MPopover/MPopover.types.d.ts +32 -1
  198. package/dist/components/primitives/MPopover/popoverStack.d.ts +8 -0
  199. package/dist/components/typography/MHeading/MHeading.d.ts +2 -3
  200. package/dist/components/typography/MSubText/MSubText.d.ts +1 -1
  201. package/dist/components/typography/MText/MText.d.ts +1 -1
  202. package/dist/controls-B4Dxaab4.js +491 -0
  203. package/dist/controls-B4Dxaab4.js.map +1 -0
  204. package/dist/controls-CyXEIOXD.cjs +2 -0
  205. package/dist/controls-CyXEIOXD.cjs.map +1 -0
  206. package/dist/controls.cjs +1 -1
  207. package/dist/controls.js +5 -5
  208. package/dist/{core-D5-SQcs8.js → core-B8VC-Umz.js} +1 -1
  209. package/dist/{core-D5-SQcs8.js.map → core-B8VC-Umz.js.map} +1 -1
  210. package/dist/{core-D66c1_Wo.cjs → core-w629c4ND.cjs} +1 -1
  211. package/dist/{core-D66c1_Wo.cjs.map → core-w629c4ND.cjs.map} +1 -1
  212. package/dist/{cpp-DAzz2TpY.js → cpp-BraS2arf.js} +1 -1
  213. package/dist/{cpp-DAzz2TpY.js.map → cpp-BraS2arf.js.map} +1 -1
  214. package/dist/{cpp-BMULAf-B.cjs → cpp-LIcuHkFj.cjs} +1 -1
  215. package/dist/{cpp-BMULAf-B.cjs.map → cpp-LIcuHkFj.cjs.map} +1 -1
  216. package/dist/creditCards-Bo2mrc53.cjs +2 -0
  217. package/dist/creditCards-Bo2mrc53.cjs.map +1 -0
  218. package/dist/{creditCards-D_iWmtG6.js → creditCards-DmDOyvcw.js} +20 -31
  219. package/dist/creditCards-DmDOyvcw.js.map +1 -0
  220. package/dist/{css-9M03GzKO.cjs → css-D6fGBtGV.cjs} +1 -1
  221. package/dist/{css-9M03GzKO.cjs.map → css-D6fGBtGV.cjs.map} +1 -1
  222. package/dist/{css-EGOXTWIl.js → css-Dy8pFAWa.js} +1 -1
  223. package/dist/{css-EGOXTWIl.js.map → css-Dy8pFAWa.js.map} +1 -1
  224. package/dist/data-BM3KG8oN.cjs +2 -0
  225. package/dist/data-BM3KG8oN.cjs.map +1 -0
  226. package/dist/data-qnR8OBmj.js +808 -0
  227. package/dist/data-qnR8OBmj.js.map +1 -0
  228. package/dist/data.cjs +1 -1
  229. package/dist/data.js +2 -2
  230. package/dist/{dateUtils-CUY6CRCf.js → dateUtils-B-ToNZq_.js} +5 -6
  231. package/dist/dateUtils-B-ToNZq_.js.map +1 -0
  232. package/dist/dateUtils-z2L7ZaxA.cjs +2 -0
  233. package/dist/dateUtils-z2L7ZaxA.cjs.map +1 -0
  234. package/dist/display-BLMOBofj.cjs +3 -0
  235. package/dist/display-BLMOBofj.cjs.map +1 -0
  236. package/dist/display-Dlb79lkA.js +968 -0
  237. package/dist/display-Dlb79lkA.js.map +1 -0
  238. package/dist/display.cjs +1 -1
  239. package/dist/display.js +2 -2
  240. package/dist/dropdowns-2_7VMEDo.js +2009 -0
  241. package/dist/dropdowns-2_7VMEDo.js.map +1 -0
  242. package/dist/dropdowns-DN7j8J-V.cjs +2 -0
  243. package/dist/dropdowns-DN7j8J-V.cjs.map +1 -0
  244. package/dist/dropdowns.cjs +1 -1
  245. package/dist/dropdowns.js +1 -1
  246. package/dist/feedback-CECayytY.js +335 -0
  247. package/dist/feedback-CECayytY.js.map +1 -0
  248. package/dist/feedback-paV8Ls-h.cjs +2 -0
  249. package/dist/feedback-paV8Ls-h.cjs.map +1 -0
  250. package/dist/feedback.cjs +1 -1
  251. package/dist/feedback.js +5 -5
  252. package/dist/form-Br56h5EF.cjs +2 -0
  253. package/dist/form-Br56h5EF.cjs.map +1 -0
  254. package/dist/form-CJmMZgsH.js +165 -0
  255. package/dist/form-CJmMZgsH.js.map +1 -0
  256. package/dist/form.cjs +1 -1
  257. package/dist/form.js +1 -1
  258. package/dist/{formatters-CNjg_h7-.cjs → formatters-CauWlsnM.cjs} +1 -1
  259. package/dist/{formatters-CNjg_h7-.cjs.map → formatters-CauWlsnM.cjs.map} +1 -1
  260. package/dist/{formatters-T0vvjMtB.js → formatters-Doqdu_w1.js} +1 -1
  261. package/dist/{formatters-T0vvjMtB.js.map → formatters-Doqdu_w1.js.map} +1 -1
  262. package/dist/frameworkTexts-CaqdiKHW.cjs +2 -0
  263. package/dist/frameworkTexts-CaqdiKHW.cjs.map +1 -0
  264. package/dist/frameworkTexts-o43FqY1A.js +505 -0
  265. package/dist/frameworkTexts-o43FqY1A.js.map +1 -0
  266. package/dist/i18n/MI18nProvider.d.ts +6 -1
  267. package/dist/i18n/frameworkTexts.d.ts +572 -0
  268. package/dist/i18n/index.d.ts +1 -0
  269. package/dist/i18n.cjs +1 -1
  270. package/dist/i18n.js +2 -2
  271. package/dist/icons-Bp8bB9TP.cjs +2 -0
  272. package/dist/icons-Bp8bB9TP.cjs.map +1 -0
  273. package/dist/{icons-CBMl-kOM.js → icons-IqEBmGh3.js} +1223 -1220
  274. package/dist/icons-IqEBmGh3.js.map +1 -0
  275. package/dist/icons.cjs +1 -1
  276. package/dist/icons.js +1 -1
  277. package/dist/illustrations.cjs +1 -1
  278. package/dist/illustrations.js +1 -1
  279. package/dist/index.cjs +1 -1
  280. package/dist/index.d.ts +4 -2
  281. package/dist/index.js +56 -56
  282. package/dist/inputs-C0BJzlA-.js +1923 -0
  283. package/dist/inputs-C0BJzlA-.js.map +1 -0
  284. package/dist/inputs-CvNBBLFA.cjs +2 -0
  285. package/dist/inputs-CvNBBLFA.cjs.map +1 -0
  286. package/dist/inputs.cjs +1 -1
  287. package/dist/inputs.js +4 -4
  288. package/dist/{javascript-CHSg4NGc.js → javascript-CqKLBRqa.js} +1 -1
  289. package/dist/{javascript-CHSg4NGc.js.map → javascript-CqKLBRqa.js.map} +1 -1
  290. package/dist/{javascript-CastOQF5.cjs → javascript-Oy5hkezl.cjs} +1 -1
  291. package/dist/{javascript-CastOQF5.cjs.map → javascript-Oy5hkezl.cjs.map} +1 -1
  292. package/dist/{json-DCkJ-m-p.cjs → json-BP8eqPWc.cjs} +1 -1
  293. package/dist/{json-DCkJ-m-p.cjs.map → json-BP8eqPWc.cjs.map} +1 -1
  294. package/dist/{json-Bejy9Rlg.js → json-DJkyYaPe.js} +1 -1
  295. package/dist/{json-Bejy9Rlg.js.map → json-DJkyYaPe.js.map} +1 -1
  296. package/dist/layout-BSFqGXLZ.js +1101 -0
  297. package/dist/layout-BSFqGXLZ.js.map +1 -0
  298. package/dist/layout-MKqvUkPv.cjs +2 -0
  299. package/dist/layout-MKqvUkPv.cjs.map +1 -0
  300. package/dist/layout.cjs +1 -1
  301. package/dist/layout.js +6 -6
  302. package/dist/{licensing-f5KYVz7D.js → licensing-BKmoAdfr.js} +5 -4
  303. package/dist/licensing-BKmoAdfr.js.map +1 -0
  304. package/dist/licensing-DVgjkw-s.cjs +2 -0
  305. package/dist/licensing-DVgjkw-s.cjs.map +1 -0
  306. package/dist/{locale-DRRl_s5-.cjs → locale-C08q7FjE.cjs} +2 -2
  307. package/dist/{locale-DRRl_s5-.cjs.map → locale-C08q7FjE.cjs.map} +1 -1
  308. package/dist/{locale-CS1-IY_I.js → locale-CjJpk9GN.js} +1 -1
  309. package/dist/{locale-CS1-IY_I.js.map → locale-CjJpk9GN.js.map} +1 -1
  310. package/dist/media-fiasAbBv.js +485 -0
  311. package/dist/media-fiasAbBv.js.map +1 -0
  312. package/dist/media-tr1s386v.cjs +2 -0
  313. package/dist/media-tr1s386v.cjs.map +1 -0
  314. package/dist/media.cjs +1 -1
  315. package/dist/media.js +2 -2
  316. package/dist/overlays-Df-NpmkW.cjs +2 -0
  317. package/dist/overlays-Df-NpmkW.cjs.map +1 -0
  318. package/dist/overlays-W0WW3fn7.js +607 -0
  319. package/dist/overlays-W0WW3fn7.js.map +1 -0
  320. package/dist/overlays.cjs +1 -1
  321. package/dist/overlays.js +3 -3
  322. package/dist/{php-BdVXegqn.cjs → php-Cwjc-ZYq.cjs} +1 -1
  323. package/dist/{php-BdVXegqn.cjs.map → php-Cwjc-ZYq.cjs.map} +1 -1
  324. package/dist/{php-Cb_S1hXT.js → php-Db8PWzaX.js} +1 -1
  325. package/dist/{php-Cb_S1hXT.js.map → php-Db8PWzaX.js.map} +1 -1
  326. package/dist/primitives.cjs +1 -1
  327. package/dist/primitives.js +2 -2
  328. package/dist/radioGroupKeys-Bm-Qeh8G.js +28 -0
  329. package/dist/radioGroupKeys-Bm-Qeh8G.js.map +1 -0
  330. package/dist/radioGroupKeys-COL8uXbH.cjs +2 -0
  331. package/dist/radioGroupKeys-COL8uXbH.cjs.map +1 -0
  332. package/dist/{relativeTime-Cr-NVzij.js → relativeTime-BqCuaBqb.js} +1 -1
  333. package/dist/{relativeTime-Cr-NVzij.js.map → relativeTime-BqCuaBqb.js.map} +1 -1
  334. package/dist/{relativeTime-DgYBUaVm.cjs → relativeTime-DUbW4O44.cjs} +1 -1
  335. package/dist/{relativeTime-DgYBUaVm.cjs.map → relativeTime-DUbW4O44.cjs.map} +1 -1
  336. package/dist/scrollLock-C9P9o6wH.cjs +2 -0
  337. package/dist/scrollLock-C9P9o6wH.cjs.map +1 -0
  338. package/dist/scrollLock-D27VmgPV.js +14 -0
  339. package/dist/scrollLock-D27VmgPV.js.map +1 -0
  340. package/dist/style-runtime.cjs +1 -1
  341. package/dist/style-runtime.js +1 -1
  342. package/dist/styles.css +1 -1
  343. package/dist/theme/MThemeProvider.d.ts +18 -1
  344. package/dist/theme/index.d.ts +2 -2
  345. package/dist/{theme-DAOU1aPs.js → theme-B_juOenJ.js} +71 -61
  346. package/dist/theme-B_juOenJ.js.map +1 -0
  347. package/dist/theme-ByPZH0dh.cjs +2 -0
  348. package/dist/theme-ByPZH0dh.cjs.map +1 -0
  349. package/dist/theme.cjs +1 -1
  350. package/dist/theme.js +2 -2
  351. package/dist/{typescript-CcGBfzlS.cjs → typescript-QKlfKtex.cjs} +1 -1
  352. package/dist/{typescript-CcGBfzlS.cjs.map → typescript-QKlfKtex.cjs.map} +1 -1
  353. package/dist/{typescript-0VHxrxf2.js → typescript-chdf_txx.js} +1 -1
  354. package/dist/{typescript-0VHxrxf2.js.map → typescript-chdf_txx.js.map} +1 -1
  355. package/dist/{typography-CAW17MDj.js → typography-DNcB8dOy.js} +3 -3
  356. package/dist/{typography-CAW17MDj.js.map → typography-DNcB8dOy.js.map} +1 -1
  357. package/dist/{typography-C4_O8len.cjs → typography-I7aeG8pH.cjs} +2 -2
  358. package/dist/{typography-C4_O8len.cjs.map → typography-I7aeG8pH.cjs.map} +1 -1
  359. package/dist/typography.cjs +1 -1
  360. package/dist/typography.js +6 -6
  361. package/dist/useGhostText-CKsb8Ufa.js +240 -0
  362. package/dist/useGhostText-CKsb8Ufa.js.map +1 -0
  363. package/dist/useGhostText-DO-tfxS0.cjs +2 -0
  364. package/dist/useGhostText-DO-tfxS0.cjs.map +1 -0
  365. package/dist/{useInteractionEffect-CFwDX5UF.cjs → useInteractionEffect-CtXlbjhC.cjs} +2 -2
  366. package/dist/{useInteractionEffect-CFwDX5UF.cjs.map → useInteractionEffect-CtXlbjhC.cjs.map} +1 -1
  367. package/dist/useModalLayer-CpOPSDbf.js +128 -0
  368. package/dist/useModalLayer-CpOPSDbf.js.map +1 -0
  369. package/dist/useModalLayer-Cyt93Prs.cjs +2 -0
  370. package/dist/useModalLayer-Cyt93Prs.cjs.map +1 -0
  371. package/dist/utils/calendarDates.d.ts +5 -0
  372. package/dist/utils/radioGroupKeys.d.ts +9 -0
  373. package/dist/utils/useDateGridNav.d.ts +39 -0
  374. package/dist/utils/useGhostText.d.ts +2 -1
  375. package/dist/utils/useKeyboardNav.d.ts +51 -5
  376. package/dist/utils/useModalLayer.d.ts +14 -0
  377. package/dist/utils/useRovingToolbar.d.ts +26 -0
  378. package/dist/utils/validationMessages.d.ts +15 -0
  379. package/dist/utils.cjs +1 -1
  380. package/dist/utils.entry.d.ts +3 -1
  381. package/dist/utils.js +11 -11
  382. package/dist/validationMessages-BFimXxlT.js +23 -0
  383. package/dist/validationMessages-BFimXxlT.js.map +1 -0
  384. package/dist/validationMessages-iHu7apWr.cjs +2 -0
  385. package/dist/validationMessages-iHu7apWr.cjs.map +1 -0
  386. package/dist/validators-SZmLxnir.cjs +2 -0
  387. package/dist/validators-SZmLxnir.cjs.map +1 -0
  388. package/dist/{validators-DVYOtFnw.js → validators-ULebNme2.js} +107 -106
  389. package/dist/validators-ULebNme2.js.map +1 -0
  390. package/dist/{xml-Dbm3mobK.cjs → xml-DEtyywwU.cjs} +1 -1
  391. package/dist/{xml-Dbm3mobK.cjs.map → xml-DEtyywwU.cjs.map} +1 -1
  392. package/dist/{xml-8GjNy8SM.js → xml-DnydRpfh.js} +1 -1
  393. package/dist/{xml-8GjNy8SM.js.map → xml-DnydRpfh.js.map} +1 -1
  394. package/package.json +1 -1
  395. package/dist/MAvatar-Capz5Gbc.cjs +0 -2
  396. package/dist/MAvatar-Capz5Gbc.cjs.map +0 -1
  397. package/dist/MAvatar-DtJCj3dD.js +0 -63
  398. package/dist/MAvatar-DtJCj3dD.js.map +0 -1
  399. package/dist/MButton-C1pnL4_j.js +0 -115
  400. package/dist/MButton-C1pnL4_j.js.map +0 -1
  401. package/dist/MButton-sTKnano6.cjs +0 -2
  402. package/dist/MButton-sTKnano6.cjs.map +0 -1
  403. package/dist/MCard-DK-_FkpE.cjs.map +0 -1
  404. package/dist/MCard-azpp4YVD.js.map +0 -1
  405. package/dist/MCheckbox-B7SpcD4H.js +0 -59
  406. package/dist/MCheckbox-B7SpcD4H.js.map +0 -1
  407. package/dist/MCheckbox-CIX7wp41.cjs +0 -2
  408. package/dist/MCheckbox-CIX7wp41.cjs.map +0 -1
  409. package/dist/MConflictIllustration-CZ3Md38Z.cjs +0 -2
  410. package/dist/MConflictIllustration-CZ3Md38Z.cjs.map +0 -1
  411. package/dist/MConflictIllustration-znC7ijmP.js.map +0 -1
  412. package/dist/MDetailList-Ce7KzUKC.cjs +0 -2
  413. package/dist/MDetailList-Ce7KzUKC.cjs.map +0 -1
  414. package/dist/MDetailList-fDhVyhm7.js +0 -98
  415. package/dist/MDetailList-fDhVyhm7.js.map +0 -1
  416. package/dist/MDropdownMenu-B_QWQhxy.cjs +0 -2
  417. package/dist/MDropdownMenu-B_QWQhxy.cjs.map +0 -1
  418. package/dist/MDropdownMenu-C4CuKMRZ.js +0 -172
  419. package/dist/MDropdownMenu-C4CuKMRZ.js.map +0 -1
  420. package/dist/MGrid-CYL3cbUI.js +0 -265
  421. package/dist/MGrid-CYL3cbUI.js.map +0 -1
  422. package/dist/MGrid-fTx6wFq_.cjs +0 -2
  423. package/dist/MGrid-fTx6wFq_.cjs.map +0 -1
  424. package/dist/MHeading-B7KgSP4T.js +0 -21
  425. package/dist/MHeading-B7KgSP4T.js.map +0 -1
  426. package/dist/MHeading-KDSpnCof.cjs +0 -2
  427. package/dist/MHeading-KDSpnCof.cjs.map +0 -1
  428. package/dist/MI18nProvider-DXRbB0VY.cjs +0 -2
  429. package/dist/MI18nProvider-DXRbB0VY.cjs.map +0 -1
  430. package/dist/MI18nProvider-VH14CI8u.js +0 -72
  431. package/dist/MI18nProvider-VH14CI8u.js.map +0 -1
  432. package/dist/MInput-C8ObGzQk.js +0 -187
  433. package/dist/MInput-C8ObGzQk.js.map +0 -1
  434. package/dist/MInput-CGl2Q-rM.cjs +0 -2
  435. package/dist/MInput-CGl2Q-rM.cjs.map +0 -1
  436. package/dist/MInputCVC-Blv5PeyS.js +0 -320
  437. package/dist/MInputCVC-Blv5PeyS.js.map +0 -1
  438. package/dist/MInputCVC-lAFKTV6y.cjs +0 -2
  439. package/dist/MInputCVC-lAFKTV6y.cjs.map +0 -1
  440. package/dist/MInputSearch-BM8gLlJ1.js +0 -43
  441. package/dist/MInputSearch-BM8gLlJ1.js.map +0 -1
  442. package/dist/MInputSearch-BZDnbFB4.cjs +0 -2
  443. package/dist/MInputSearch-BZDnbFB4.cjs.map +0 -1
  444. package/dist/MLink-Bd8fLH1N.js +0 -31
  445. package/dist/MLink-Bd8fLH1N.js.map +0 -1
  446. package/dist/MLink-U24G6KJj.cjs +0 -2
  447. package/dist/MLink-U24G6KJj.cjs.map +0 -1
  448. package/dist/MLoader-CnvWqFtA.js +0 -41
  449. package/dist/MLoader-CnvWqFtA.js.map +0 -1
  450. package/dist/MLoader-CvFIvytw.cjs +0 -2
  451. package/dist/MLoader-CvFIvytw.cjs.map +0 -1
  452. package/dist/MPagination-BkvOEZpp.js +0 -113
  453. package/dist/MPagination-BkvOEZpp.js.map +0 -1
  454. package/dist/MPagination-DgQta29Q.cjs +0 -2
  455. package/dist/MPagination-DgQta29Q.cjs.map +0 -1
  456. package/dist/MPopover-C-e1CoV0.cjs +0 -2
  457. package/dist/MPopover-C-e1CoV0.cjs.map +0 -1
  458. package/dist/MPopover-Dd-GIBU6.js +0 -155
  459. package/dist/MPopover-Dd-GIBU6.js.map +0 -1
  460. package/dist/MPortal-Ba2Sxset.js +0 -10
  461. package/dist/MPortal-Ba2Sxset.js.map +0 -1
  462. package/dist/MPortal-DUSIuINN.cjs +0 -2
  463. package/dist/MPortal-DUSIuINN.cjs.map +0 -1
  464. package/dist/MSimpleGrid-BWKurW6H.js.map +0 -1
  465. package/dist/MSimpleGrid-BzlIitcJ.cjs +0 -2
  466. package/dist/MSimpleGrid-BzlIitcJ.cjs.map +0 -1
  467. package/dist/MSkeleton-BoFpowFU.cjs +0 -2
  468. package/dist/MSkeleton-BoFpowFU.cjs.map +0 -1
  469. package/dist/MSkeleton-C5uD4Axo.js.map +0 -1
  470. package/dist/MSlider-BTDBqF8t.cjs +0 -2
  471. package/dist/MSlider-BTDBqF8t.cjs.map +0 -1
  472. package/dist/MSlider-CqrusKJQ.js +0 -75
  473. package/dist/MSlider-CqrusKJQ.js.map +0 -1
  474. package/dist/MStack-B3Ldqsc-.cjs +0 -2
  475. package/dist/MStack-B3Ldqsc-.cjs.map +0 -1
  476. package/dist/MStack-CSCw6to2.js +0 -39
  477. package/dist/MStack-CSCw6to2.js.map +0 -1
  478. package/dist/MSubText-47PsgE8T.cjs +0 -2
  479. package/dist/MSubText-47PsgE8T.cjs.map +0 -1
  480. package/dist/MSubText-C-N15d4Z.js +0 -17
  481. package/dist/MSubText-C-N15d4Z.js.map +0 -1
  482. package/dist/MSurface-B-sjyczH.js +0 -74
  483. package/dist/MSurface-B-sjyczH.js.map +0 -1
  484. package/dist/MSurface-QYEygc_0.cjs +0 -2
  485. package/dist/MSurface-QYEygc_0.cjs.map +0 -1
  486. package/dist/MTag-BjV-dXkk.cjs +0 -2
  487. package/dist/MTag-BjV-dXkk.cjs.map +0 -1
  488. package/dist/MTag-D9q6faIk.js +0 -39
  489. package/dist/MTag-D9q6faIk.js.map +0 -1
  490. package/dist/MText-CL-LPcXi.js +0 -45
  491. package/dist/MText-CL-LPcXi.js.map +0 -1
  492. package/dist/MText-Dni707tS.cjs +0 -2
  493. package/dist/MText-Dni707tS.cjs.map +0 -1
  494. package/dist/MTooltip-ChvuN4Ow.cjs +0 -2
  495. package/dist/MTooltip-ChvuN4Ow.cjs.map +0 -1
  496. package/dist/MTooltip-H3we0a7w.js +0 -57
  497. package/dist/MTooltip-H3we0a7w.js.map +0 -1
  498. package/dist/MTreeView-B1J7uqd1.js +0 -315
  499. package/dist/MTreeView-B1J7uqd1.js.map +0 -1
  500. package/dist/MTreeView-VYp0eErQ.cjs +0 -2
  501. package/dist/MTreeView-VYp0eErQ.cjs.map +0 -1
  502. package/dist/calendar-P7MwKfWS.cjs +0 -2
  503. package/dist/calendar-P7MwKfWS.cjs.map +0 -1
  504. package/dist/calendar-bzeZRst9.js +0 -193
  505. package/dist/calendar-bzeZRst9.js.map +0 -1
  506. package/dist/calendarDates-AnlGcvZM.cjs +0 -2
  507. package/dist/calendarDates-AnlGcvZM.cjs.map +0 -1
  508. package/dist/calendarDates-CYkJqcnp.js.map +0 -1
  509. package/dist/cards-CFDJsdxR.js +0 -1226
  510. package/dist/cards-CFDJsdxR.js.map +0 -1
  511. package/dist/cards-DeA7I2KC.cjs +0 -2
  512. package/dist/cards-DeA7I2KC.cjs.map +0 -1
  513. package/dist/controls-BKAhqjNM.js +0 -474
  514. package/dist/controls-BKAhqjNM.js.map +0 -1
  515. package/dist/controls-KK-TyUTT.cjs +0 -2
  516. package/dist/controls-KK-TyUTT.cjs.map +0 -1
  517. package/dist/creditCards-D_HwRUBz.cjs +0 -2
  518. package/dist/creditCards-D_HwRUBz.cjs.map +0 -1
  519. package/dist/creditCards-D_iWmtG6.js.map +0 -1
  520. package/dist/data-CgLutFxU.js +0 -689
  521. package/dist/data-CgLutFxU.js.map +0 -1
  522. package/dist/data-DFrkJTlF.cjs +0 -2
  523. package/dist/data-DFrkJTlF.cjs.map +0 -1
  524. package/dist/dateUtils-CUY6CRCf.js.map +0 -1
  525. package/dist/dateUtils-Dq1vaA-D.cjs +0 -2
  526. package/dist/dateUtils-Dq1vaA-D.cjs.map +0 -1
  527. package/dist/display--E7rI0tk.cjs +0 -3
  528. package/dist/display--E7rI0tk.cjs.map +0 -1
  529. package/dist/display-BnkHKW1n.js +0 -782
  530. package/dist/display-BnkHKW1n.js.map +0 -1
  531. package/dist/dropdowns-DGYg9zIh.cjs +0 -2
  532. package/dist/dropdowns-DGYg9zIh.cjs.map +0 -1
  533. package/dist/dropdowns-Dq-xAplH.js +0 -1698
  534. package/dist/dropdowns-Dq-xAplH.js.map +0 -1
  535. package/dist/feedback-CA77ShtB.cjs +0 -2
  536. package/dist/feedback-CA77ShtB.cjs.map +0 -1
  537. package/dist/feedback-CCwbdNZu.js +0 -255
  538. package/dist/feedback-CCwbdNZu.js.map +0 -1
  539. package/dist/form-CAFcvmUS.js +0 -167
  540. package/dist/form-CAFcvmUS.js.map +0 -1
  541. package/dist/form-DpfzLUOn.cjs +0 -2
  542. package/dist/form-DpfzLUOn.cjs.map +0 -1
  543. package/dist/frameworkTexts-DH0Xp-Vx.js +0 -78
  544. package/dist/frameworkTexts-DH0Xp-Vx.js.map +0 -1
  545. package/dist/frameworkTexts-iDXhcW6k.cjs +0 -2
  546. package/dist/frameworkTexts-iDXhcW6k.cjs.map +0 -1
  547. package/dist/icons-CBMl-kOM.js.map +0 -1
  548. package/dist/icons-D_NB67he.cjs +0 -2
  549. package/dist/icons-D_NB67he.cjs.map +0 -1
  550. package/dist/inputs-B1LCddA4.js +0 -1752
  551. package/dist/inputs-B1LCddA4.js.map +0 -1
  552. package/dist/inputs-Clenc4Rm.cjs +0 -2
  553. package/dist/inputs-Clenc4Rm.cjs.map +0 -1
  554. package/dist/layout-CNoZdeXw.cjs +0 -2
  555. package/dist/layout-CNoZdeXw.cjs.map +0 -1
  556. package/dist/layout-DsE4zfpg.js +0 -882
  557. package/dist/layout-DsE4zfpg.js.map +0 -1
  558. package/dist/licensing-DGIdtfNg.cjs +0 -2
  559. package/dist/licensing-DGIdtfNg.cjs.map +0 -1
  560. package/dist/licensing-f5KYVz7D.js.map +0 -1
  561. package/dist/media-DRTBXDnn.cjs +0 -2
  562. package/dist/media-DRTBXDnn.cjs.map +0 -1
  563. package/dist/media-vOQOIYFD.js +0 -402
  564. package/dist/media-vOQOIYFD.js.map +0 -1
  565. package/dist/overlays-BKk_ZXue.js +0 -568
  566. package/dist/overlays-BKk_ZXue.js.map +0 -1
  567. package/dist/overlays-Qbp4d596.cjs +0 -2
  568. package/dist/overlays-Qbp4d596.cjs.map +0 -1
  569. package/dist/theme-DAOU1aPs.js.map +0 -1
  570. package/dist/theme-DgaM4CjM.cjs +0 -2
  571. package/dist/theme-DgaM4CjM.cjs.map +0 -1
  572. package/dist/useGhostText-DG0bzcao.js +0 -68
  573. package/dist/useGhostText-DG0bzcao.js.map +0 -1
  574. package/dist/useGhostText-Dlemg1vw.cjs +0 -2
  575. package/dist/useGhostText-Dlemg1vw.cjs.map +0 -1
  576. package/dist/useKeyboardNav-Bm-dxVq-.cjs +0 -2
  577. package/dist/useKeyboardNav-Bm-dxVq-.cjs.map +0 -1
  578. package/dist/useKeyboardNav-iEXOdEMB.js +0 -43
  579. package/dist/useKeyboardNav-iEXOdEMB.js.map +0 -1
  580. package/dist/validators-B6yWdsu2.cjs +0 -2
  581. package/dist/validators-B6yWdsu2.cjs.map +0 -1
  582. package/dist/validators-DVYOtFnw.js.map +0 -1
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Modern React UI framework with a sharp admin aesthetic, theming system, and production-ready components.
4
4
 
5
5
  - npm: `@banzamel/mineralui`
6
- - version: `2.4.2`
6
+ - version: `2.5.1`
7
7
  - peer dependencies: `react >= 19`, `react-dom >= 19`
8
8
  - repository: `https://github.com/Banzamel/mineralui-react`
9
9
  - homepage: `https://mineralui.io`
@@ -0,0 +1,2 @@
1
+ const e=require(`./theme-ByPZH0dh.cjs`),t=require(`./frameworkTexts-CaqdiKHW.cjs`),n=require(`./cn-DYFxgzi2.cjs`),r=require(`./useInteractionEffect-CtXlbjhC.cjs`),i=require(`./MButton-BxEky3xQ.cjs`);require(`./core-w629c4ND.cjs`);let a=require(`react/jsx-runtime`);function o(e,t){if(t)return t.slice(0,2).toUpperCase();if(!e)return`?`;let n=e.trim().split(/\s+/).filter(Boolean);return n.length===0?`?`:n.length===1?n[0].slice(0,2).toUpperCase():`${n[0][0]}${n[1][0]}`.toUpperCase()}var s={online:`success`,offline:`neutral`,away:`warning`,busy:`error`};function c({src:c,alt:l,name:u,initials:d,size:f=`md`,shape:p=`circle`,hidden:m,hiddenAbove:h,color:g,badge:_,badgeColor:v,badgePulsing:y,presence:b,backgroundColor:x,clickEffect:S,rippleColor:C,skeleton:w=!1,className:T,style:E,onPointerDown:D,href:O,target:k,rel:A,...j}){let M=t.s(),N=t.g(),P=o(u,d),F=j.role!==void 0||j.tabIndex!==void 0,I=O!==void 0&&!w?`a`:typeof j.onClick==`function`&&!F&&!w?`button`:`span`,L=I!==`span`||typeof j.onClick==`function`||j.role===`button`||j.tabIndex!==void 0,R=_===void 0?b===void 0?void 0:!0:_,z=v??(b===void 0?void 0:s[b]),B=y??b!==void 0,{effectClassName:V,effectLayer:H,handlePointerDown:U}=r.t({effect:S??(L?`ripple`:`none`),disabled:!L||w,color:C}),W=l??u??N.avatar,G=w?M.loading:b===void 0?W:t.t(N.avatarPresence,{name:W,presence:N.presence[b]}),K=typeof f==`number`?{width:`${f}px`,height:`${f}px`,...E,...x&&!w?{backgroundColor:x}:{}}:{...E,...x&&!w?{backgroundColor:x}:{}};return(0,a.jsxs)(I,{...I===`a`?{href:O,target:k,rel:A??(k===`_blank`?`noopener noreferrer`:void 0)}:I===`button`?{type:`button`}:{},className:n.t(`avatar`,typeof f==`string`&&f,p,w&&`skeleton animate`,L&&!w&&`interactive`,V,!w&&g&&`color-${g}`,T),style:K,role:L?void 0:`img`,"aria-label":G,onPointerDown:e=>{U(e),D?.(e)},...e.r(m,h),...j,children:[H,i.n({badge:R,badgeColor:z,badgePulsing:B}),w?null:c?(0,a.jsx)(`img`,{src:c,alt:l??u??``,className:`image`}):(0,a.jsx)(`span`,{className:`fallback`,children:P})]})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return c}});
2
+ //# sourceMappingURL=MAvatar-CvQuiGvT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MAvatar-CvQuiGvT.cjs","names":[],"sources":["../src/components/media/MAvatar/MAvatar.tsx"],"sourcesContent":["import type {CSSProperties} from 'react'\nimport type {MAvatarPresence, MAvatarProps} from './MAvatar.types'\nimport type {MColor} from '../../../theme'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MAvatar.css'\nimport {formatMText, useMCommonTexts, useMMediaTexts} from '../../../i18n/frameworkTexts'\n\nfunction getFallbackInitials(name?: string, initials?: string) {\n if (initials) return initials.slice(0, 2).toUpperCase()\n if (!name) return '?'\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n if (parts.length === 0) return '?'\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase()\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase()\n}\n\nconst PRESENCE_BADGE_COLOR: Record<MAvatarPresence, MColor> = {\n online: 'success',\n offline: 'neutral',\n away: 'warning',\n busy: 'error',\n}\n\n// Render user or entity identity as an image with initials fallback.\nexport function MAvatar({\n src,\n alt,\n name,\n initials,\n size = 'md',\n shape = 'circle',\n hidden,\n hiddenAbove,\n color,\n badge,\n badgeColor,\n badgePulsing,\n presence,\n backgroundColor,\n clickEffect,\n rippleColor,\n skeleton = false,\n className,\n style,\n onPointerDown,\n href,\n target,\n rel,\n ...rest\n}: MAvatarProps) {\n const commonTexts = useMCommonTexts()\n const mediaTexts = useMMediaTexts()\n const fallbackInitials = getFallbackInitials(name, initials)\n // A clickable avatar is a real control: a link with `href`, otherwise a native button. A hand-made\n // `role` / `tabIndex` keeps the legacy span so callers' own key handling is not doubled.\n const manualControl = rest.role !== undefined || rest.tabIndex !== undefined\n const element: 'a' | 'button' | 'span' =\n href !== undefined && !skeleton\n ? 'a'\n : typeof rest.onClick === 'function' && !manualControl && !skeleton\n ? 'button'\n : 'span'\n const isInteractive =\n element !== 'span' ||\n typeof rest.onClick === 'function' ||\n rest.role === 'button' ||\n rest.tabIndex !== undefined\n const resolvedBadge = badge !== undefined ? badge : presence !== undefined ? true : undefined\n const resolvedBadgeColor = badgeColor ?? (presence !== undefined ? PRESENCE_BADGE_COLOR[presence] : undefined)\n const resolvedBadgePulsing = badgePulsing ?? (presence !== undefined ? true : false)\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: clickEffect ?? (isInteractive ? 'ripple' : 'none'),\n disabled: !isInteractive || skeleton,\n color: rippleColor,\n })\n const baseLabel = alt ?? name ?? mediaTexts.avatar\n // Presence must not rely on the dot colour alone (WCAG 1.4.1), so it joins the accessible name.\n const accessibleLabel = skeleton\n ? commonTexts.loading\n : presence !== undefined\n ? formatMText(mediaTexts.avatarPresence, {name: baseLabel, presence: mediaTexts.presence[presence]})\n : baseLabel\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n : {\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n\n const Component = element as 'span'\n const elementProps =\n element === 'a'\n ? {href, target, rel: rel ?? (target === '_blank' ? 'noopener noreferrer' : undefined)}\n : element === 'button'\n ? {type: 'button' as const}\n : {}\n\n return (\n <Component\n {...elementProps}\n className={cn(\n 'avatar',\n typeof size === 'string' && size,\n shape,\n skeleton && 'skeleton animate',\n isInteractive && !skeleton && 'interactive',\n effectClassName,\n !skeleton && color && `color-${color}`,\n className\n )}\n style={inlineStyle}\n role={isInteractive ? undefined : 'img'}\n aria-label={accessibleLabel}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n {...getHiddenProps(hidden, hiddenAbove)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({\n badge: resolvedBadge,\n badgeColor: resolvedBadgeColor,\n badgePulsing: resolvedBadgePulsing,\n })}\n {skeleton ? null : src ? (\n <img src={src} alt={alt ?? name ?? ''} className={'image'} />\n ) : (\n <span className={'fallback'}>{fallbackInitials}</span>\n )}\n </Component>\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { r as e } from "./theme-B_juOenJ.js";
2
+ import { g as t, s as n, t as r } from "./frameworkTexts-o43FqY1A.js";
3
+ import { t as i } from "./cn-CUSXNnjF.js";
4
+ import { t as a } from "./useInteractionEffect-DtpbVd77.js";
5
+ import { n as o } from "./MButton-KELyyBw1.js";
6
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
7
+ //#region src/components/media/MAvatar/MAvatar.tsx
8
+ function l(e, t) {
9
+ if (t) return t.slice(0, 2).toUpperCase();
10
+ if (!e) return "?";
11
+ let n = e.trim().split(/\s+/).filter(Boolean);
12
+ return n.length === 0 ? "?" : n.length === 1 ? n[0].slice(0, 2).toUpperCase() : `${n[0][0]}${n[1][0]}`.toUpperCase();
13
+ }
14
+ var u = {
15
+ online: "success",
16
+ offline: "neutral",
17
+ away: "warning",
18
+ busy: "error"
19
+ };
20
+ function d({ src: d, alt: f, name: p, initials: m, size: h = "md", shape: g = "circle", hidden: _, hiddenAbove: v, color: y, badge: b, badgeColor: x, badgePulsing: S, presence: C, backgroundColor: w, clickEffect: T, rippleColor: E, skeleton: D = !1, className: O, style: k, onPointerDown: A, href: j, target: M, rel: N, ...P }) {
21
+ let F = n(), I = t(), L = l(p, m), R = P.role !== void 0 || P.tabIndex !== void 0, z = j !== void 0 && !D ? "a" : typeof P.onClick == "function" && !R && !D ? "button" : "span", B = z !== "span" || typeof P.onClick == "function" || P.role === "button" || P.tabIndex !== void 0, V = b === void 0 ? C === void 0 ? void 0 : !0 : b, H = x ?? (C === void 0 ? void 0 : u[C]), U = S ?? C !== void 0, { effectClassName: W, effectLayer: G, handlePointerDown: K } = a({
22
+ effect: T ?? (B ? "ripple" : "none"),
23
+ disabled: !B || D,
24
+ color: E
25
+ }), q = f ?? p ?? I.avatar, J = D ? F.loading : C === void 0 ? q : r(I.avatarPresence, {
26
+ name: q,
27
+ presence: I.presence[C]
28
+ }), Y = typeof h == "number" ? {
29
+ width: `${h}px`,
30
+ height: `${h}px`,
31
+ ...k,
32
+ ...w && !D ? { backgroundColor: w } : {}
33
+ } : {
34
+ ...k,
35
+ ...w && !D ? { backgroundColor: w } : {}
36
+ };
37
+ return /* @__PURE__ */ c(z, {
38
+ ...z === "a" ? {
39
+ href: j,
40
+ target: M,
41
+ rel: N ?? (M === "_blank" ? "noopener noreferrer" : void 0)
42
+ } : z === "button" ? { type: "button" } : {},
43
+ className: i("avatar", typeof h == "string" && h, g, D && "skeleton animate", B && !D && "interactive", W, !D && y && `color-${y}`, O),
44
+ style: Y,
45
+ role: B ? void 0 : "img",
46
+ "aria-label": J,
47
+ onPointerDown: (e) => {
48
+ K(e), A?.(e);
49
+ },
50
+ ...e(_, v),
51
+ ...P,
52
+ children: [
53
+ G,
54
+ o({
55
+ badge: V,
56
+ badgeColor: H,
57
+ badgePulsing: U
58
+ }),
59
+ D ? null : d ? /* @__PURE__ */ s("img", {
60
+ src: d,
61
+ alt: f ?? p ?? "",
62
+ className: "image"
63
+ }) : /* @__PURE__ */ s("span", {
64
+ className: "fallback",
65
+ children: L
66
+ })
67
+ ]
68
+ });
69
+ }
70
+ //#endregion
71
+ export { d as t };
72
+
73
+ //# sourceMappingURL=MAvatar-EkOBrEtS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MAvatar-EkOBrEtS.js","names":[],"sources":["../src/components/media/MAvatar/MAvatar.tsx"],"sourcesContent":["import type {CSSProperties} from 'react'\nimport type {MAvatarPresence, MAvatarProps} from './MAvatar.types'\nimport type {MColor} from '../../../theme'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MAvatar.css'\nimport {formatMText, useMCommonTexts, useMMediaTexts} from '../../../i18n/frameworkTexts'\n\nfunction getFallbackInitials(name?: string, initials?: string) {\n if (initials) return initials.slice(0, 2).toUpperCase()\n if (!name) return '?'\n const parts = name.trim().split(/\\s+/).filter(Boolean)\n if (parts.length === 0) return '?'\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase()\n return `${parts[0][0]}${parts[1][0]}`.toUpperCase()\n}\n\nconst PRESENCE_BADGE_COLOR: Record<MAvatarPresence, MColor> = {\n online: 'success',\n offline: 'neutral',\n away: 'warning',\n busy: 'error',\n}\n\n// Render user or entity identity as an image with initials fallback.\nexport function MAvatar({\n src,\n alt,\n name,\n initials,\n size = 'md',\n shape = 'circle',\n hidden,\n hiddenAbove,\n color,\n badge,\n badgeColor,\n badgePulsing,\n presence,\n backgroundColor,\n clickEffect,\n rippleColor,\n skeleton = false,\n className,\n style,\n onPointerDown,\n href,\n target,\n rel,\n ...rest\n}: MAvatarProps) {\n const commonTexts = useMCommonTexts()\n const mediaTexts = useMMediaTexts()\n const fallbackInitials = getFallbackInitials(name, initials)\n // A clickable avatar is a real control: a link with `href`, otherwise a native button. A hand-made\n // `role` / `tabIndex` keeps the legacy span so callers' own key handling is not doubled.\n const manualControl = rest.role !== undefined || rest.tabIndex !== undefined\n const element: 'a' | 'button' | 'span' =\n href !== undefined && !skeleton\n ? 'a'\n : typeof rest.onClick === 'function' && !manualControl && !skeleton\n ? 'button'\n : 'span'\n const isInteractive =\n element !== 'span' ||\n typeof rest.onClick === 'function' ||\n rest.role === 'button' ||\n rest.tabIndex !== undefined\n const resolvedBadge = badge !== undefined ? badge : presence !== undefined ? true : undefined\n const resolvedBadgeColor = badgeColor ?? (presence !== undefined ? PRESENCE_BADGE_COLOR[presence] : undefined)\n const resolvedBadgePulsing = badgePulsing ?? (presence !== undefined ? true : false)\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLElement>({\n effect: clickEffect ?? (isInteractive ? 'ripple' : 'none'),\n disabled: !isInteractive || skeleton,\n color: rippleColor,\n })\n const baseLabel = alt ?? name ?? mediaTexts.avatar\n // Presence must not rely on the dot colour alone (WCAG 1.4.1), so it joins the accessible name.\n const accessibleLabel = skeleton\n ? commonTexts.loading\n : presence !== undefined\n ? formatMText(mediaTexts.avatarPresence, {name: baseLabel, presence: mediaTexts.presence[presence]})\n : baseLabel\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n : {\n ...style,\n ...(backgroundColor && !skeleton ? {backgroundColor} : {}),\n }\n\n const Component = element as 'span'\n const elementProps =\n element === 'a'\n ? {href, target, rel: rel ?? (target === '_blank' ? 'noopener noreferrer' : undefined)}\n : element === 'button'\n ? {type: 'button' as const}\n : {}\n\n return (\n <Component\n {...elementProps}\n className={cn(\n 'avatar',\n typeof size === 'string' && size,\n shape,\n skeleton && 'skeleton animate',\n isInteractive && !skeleton && 'interactive',\n effectClassName,\n !skeleton && color && `color-${color}`,\n className\n )}\n style={inlineStyle}\n role={isInteractive ? undefined : 'img'}\n aria-label={accessibleLabel}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n {...getHiddenProps(hidden, hiddenAbove)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({\n badge: resolvedBadge,\n badgeColor: resolvedBadgeColor,\n badgePulsing: resolvedBadgePulsing,\n })}\n {skeleton ? null : src ? (\n <img src={src} alt={alt ?? name ?? ''} className={'image'} />\n ) : (\n <span className={'fallback'}>{fallbackInitials}</span>\n )}\n </Component>\n )\n}\n"],"mappings":";;;;;;;AAUA,SAAS,EAAoB,GAAe,GAAmB;AAC3D,KAAI,EAAU,QAAO,EAAS,MAAM,GAAG,EAAE,CAAC,aAAa;AACvD,KAAI,CAAC,EAAM,QAAO;CAClB,IAAM,IAAQ,EAAK,MAAM,CAAC,MAAM,MAAM,CAAC,OAAO,QAAQ;AAGtD,QAFI,EAAM,WAAW,IAAU,MAC3B,EAAM,WAAW,IAAU,EAAM,GAAG,MAAM,GAAG,EAAE,CAAC,aAAa,GAC1D,GAAG,EAAM,GAAG,KAAK,EAAM,GAAG,KAAK,aAAa;;AAGvD,IAAM,IAAwD;CAC1D,QAAQ;CACR,SAAS;CACT,MAAM;CACN,MAAM;CACT;AAGD,SAAgB,EAAQ,EACpB,QACA,QACA,SACA,aACA,UAAO,MACP,WAAQ,UACR,WACA,gBACA,UACA,UACA,eACA,iBACA,aACA,oBACA,gBACA,gBACA,cAAW,IACX,cACA,UACA,kBACA,SACA,WACA,QACA,GAAG,KACU;CACb,IAAM,IAAc,GAAiB,EAC/B,IAAa,GAAgB,EAC7B,IAAmB,EAAoB,GAAM,EAAS,EAGtD,IAAgB,EAAK,SAAS,KAAA,KAAa,EAAK,aAAa,KAAA,GAC7D,IACF,MAAS,KAAA,KAAa,CAAC,IACjB,MACA,OAAO,EAAK,WAAY,cAAc,CAAC,KAAiB,CAAC,IACvD,WACA,QACN,IACF,MAAY,UACZ,OAAO,EAAK,WAAY,cACxB,EAAK,SAAS,YACd,EAAK,aAAa,KAAA,GAChB,IAAgB,MAAU,KAAA,IAAoB,MAAa,KAAA,IAAmB,KAAA,IAAP,KAAjC,GACtC,IAAqB,MAAe,MAAa,KAAA,IAA6C,KAAA,IAAjC,EAAqB,KAClF,IAAuB,KAAiB,MAAa,KAAA,GACrD,EAAC,oBAAiB,gBAAa,yBAAqB,EAAkC;EACxF,QAAQ,MAAgB,IAAgB,WAAW;EACnD,UAAU,CAAC,KAAiB;EAC5B,OAAO;EACV,CAAC,EACI,IAAY,KAAO,KAAQ,EAAW,QAEtC,IAAkB,IAClB,EAAY,UACZ,MAAa,KAAA,IAEX,IADA,EAAY,EAAW,gBAAgB;EAAC,MAAM;EAAW,UAAU,EAAW,SAAS;EAAU,CAAC,EAEpG,IACF,OAAO,KAAS,WACV;EACI,OAAO,GAAG,EAAK;EACf,QAAQ,GAAG,EAAK;EAChB,GAAG;EACH,GAAI,KAAmB,CAAC,IAAW,EAAC,oBAAgB,GAAG,EAAE;EAC5D,GACD;EACI,GAAG;EACH,GAAI,KAAmB,CAAC,IAAW,EAAC,oBAAgB,GAAG,EAAE;EAC5D;AAUX,QACI,kBATc,GASd;EACI,GARJ,MAAY,MACN;GAAC;GAAM;GAAQ,KAAK,MAAQ,MAAW,WAAW,wBAAwB,KAAA;GAAW,GACrF,MAAY,WACV,EAAC,MAAM,UAAkB,GACzB,EAAE;EAKN,WAAW,EACP,UACA,OAAO,KAAS,YAAY,GAC5B,GACA,KAAY,oBACZ,KAAiB,CAAC,KAAY,eAC9B,GACA,CAAC,KAAY,KAAS,SAAS,KAC/B,EACH;EACD,OAAO;EACP,MAAM,IAAgB,KAAA,IAAY;EAClC,cAAY;EACZ,gBAAgB,MAAU;AAEtB,GADA,EAAkB,EAAM,EACxB,IAAgB,EAAM;;EAE1B,GAAI,EAAe,GAAQ,EAAY;EACvC,GAAI;YApBR;GAsBK;GACA,EAAmB;IAChB,OAAO;IACP,YAAY;IACZ,cAAc;IACjB,CAAC;GACD,IAAW,OAAO,IACf,kBAAC,OAAD;IAAU;IAAK,KAAK,KAAO,KAAQ;IAAI,WAAW;IAAW,CAAA,GAE7D,kBAAC,QAAD;IAAM,WAAW;cAAa;IAAwB,CAAA;GAElD"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./theme-ByPZH0dh.cjs`),t=require(`./frameworkTexts-CaqdiKHW.cjs`),n=require(`./cn-DYFxgzi2.cjs`),r=require(`./useInteractionEffect-CtXlbjhC.cjs`);require(`./core-w629c4ND.cjs`);let i=require(`react`),a=require(`react/jsx-runtime`);var o=(0,i.createContext)(null);function s(){return(0,i.useContext)(o)}function c({color:e=`primary`,size:r=`md`,label:i,className:o,style:s,...c}){let l=t.C(),u=i??l.label,d=typeof r==`number`?{width:`${r}px`,height:`${r}px`,...s}:s||{};return(0,a.jsx)(`span`,{className:n.t(`spinner`,typeof r==`string`&&r,e&&`color-${e}`,o),style:d,role:`status`,"aria-label":u,...c})}function l(e){return e!=null&&e!==!1}function u({badge:e,badgeColor:t,badgePulsing:n}){return l(e)}function d({badge:e,badgeColor:t=`primary`,badgePulsing:r=!1,className:i}){if(!u({badge:e,badgeColor:t,badgePulsing:r}))return null;let o=e===!0;return(0,a.jsx)(`span`,{className:n.t(`overlay-badge`,`color-${t}`,o&&`dot`,r&&`pulsing`,i),"aria-hidden":`true`,children:o?null:e})}var f=(0,i.forwardRef)(function({component:t,to:i,href:o,target:l,rel:u,variant:f,size:p,color:m,hidden:h,hiddenAbove:g,fullWidth:_=!1,rounded:v=!1,shape:y,iconOnly:b=!1,loading:x=!1,active:S=!1,pulsing:C=!1,badge:w,badgeColor:T,badgePulsing:E=!1,startIcon:D,endIcon:O,clickEffect:k=`ripple`,rippleColor:A,className:j,style:M,children:N,disabled:P=!1,type:F=`button`,onClick:I,onClickCapture:L,onPointerDown:R,onKeyDown:z,...B},V){let H=t??`button`,U=!t||H===`button`,W=s(),G=f??W?.variant??`filled`,K=p??W?.size??`md`,q=m??W?.color??`primary`,J=P||x,{effectClassName:Y,effectLayer:X,handlePointerDown:Z,triggerEffect:Q}=r.t({effect:k,disabled:J,centered:b,color:A});function $(e){if(J&&!U){e.preventDefault();return}I?.(e)}return(0,a.jsxs)(H,{ref:V,type:U?F:void 0,to:t?i:void 0,href:t?o:void 0,target:t?l:void 0,rel:t?u:void 0,className:n.t(`button`,G,K,`color-${q}`,_&&`full-width`,v&&`rounded`,y===`circle`&&`circle`,b&&`icon-only`,x&&`loading`,S&&`active`,C&&`pulsing`,J&&`disabled`,Y,j),style:M,disabled:U?J:void 0,"aria-busy":x||void 0,"aria-disabled":!U&&J?!0:void 0,onClick:$,onClickCapture:e=>{if(J&&!U){e.preventDefault(),e.stopPropagation();return}L?.(e)},onPointerDown:e=>{Z(e),R?.(e)},onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&Q(e.currentTarget),z?.(e)},...e.r(h,g),...B,children:[X,d({badge:w,badgeColor:T,badgePulsing:E}),x&&(0,a.jsx)(c,{size:`sm`,color:`inherit`,"aria-hidden":`true`}),D&&(0,a.jsx)(`span`,{className:`icon start`,children:D}),N&&(0,a.jsx)(`span`,{className:`content`,children:N}),O&&(0,a.jsx)(`span`,{className:`icon end`,children:O})]})});Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
2
+ //# sourceMappingURL=MButton-BxEky3xQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MButton-BxEky3xQ.cjs","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroupContext.ts","../src/components/feedback/MSpinner/MSpinner.tsx","../src/utils/overlayBadge.tsx","../src/components/controls/MButton/MButton.tsx"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {MButtonVariant} from '../MButton/MButton.types'\nimport type {MColor, MSize} from '../../../theme'\n\nexport interface MButtonGroupContextValue {\n variant?: MButtonVariant\n size?: MSize\n color?: MColor\n}\n\nexport const ButtonGroupContext = createContext<MButtonGroupContextValue | null>(null)\n\nexport function useButtonGroup(): MButtonGroupContextValue | null {\n return useContext(ButtonGroupContext)\n}\n","import type {CSSProperties} from 'react'\nimport type {MSpinnerProps} from './MSpinner.types'\nimport {cn} from '../../../utils/cn'\nimport './MSpinner.css'\nimport {useMSpinnerTexts} from '../../../i18n/frameworkTexts'\n\n// Render a minimal semantic loading indicator with token-aware sizing and color.\nexport function MSpinner({color = 'primary', size = 'md', label: labelProp, className, style, ...rest}: MSpinnerProps) {\n const texts = useMSpinnerTexts()\n const label = labelProp ?? texts.label\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n }\n : style || {}\n\n return (\n <span\n className={cn('spinner', typeof size === 'string' && size, color && `color-${color}`, className)}\n style={inlineStyle}\n role=\"status\"\n aria-label={label}\n {...rest}\n />\n )\n}\n","import type {ReactNode} from 'react'\nimport type {MColor} from '../theme'\nimport {cn} from './cn'\n\nexport interface MOverlayBadgeProps {\n badge?: ReactNode | number | boolean\n badgeColor?: MColor\n badgePulsing?: boolean\n className?: string\n}\n\nfunction hasBadgeContent(badge: MOverlayBadgeProps['badge']) {\n return badge !== undefined && badge !== null && badge !== false\n}\n\nexport function shouldRenderOverlayBadge({badge, badgeColor, badgePulsing}: MOverlayBadgeProps) {\n return hasBadgeContent(badge)\n}\n\nexport function renderOverlayBadge({\n badge,\n badgeColor = 'primary',\n badgePulsing = false,\n className,\n}: MOverlayBadgeProps) {\n if (!shouldRenderOverlayBadge({badge, badgeColor, badgePulsing})) {\n return null\n }\n\n const dotOnly = badge === true\n\n return (\n <span\n className={cn(\n 'overlay-badge',\n `color-${badgeColor}`,\n dotOnly && 'dot',\n badgePulsing && 'pulsing',\n className\n )}\n aria-hidden=\"true\"\n >\n {dotOnly ? null : badge}\n </span>\n )\n}\n","import {forwardRef} from 'react'\nimport type {KeyboardEvent, MouseEvent, PointerEvent} from 'react'\nimport type {MButtonProps} from './MButton.types'\nimport {getHiddenProps} from '../../../theme'\nimport {useButtonGroup} from '../MButtonGroup/MButtonGroupContext'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MButton.css'\n\n// Render the main action primitive with semantic variants and built-in click feedback.\nexport const MButton = forwardRef<HTMLElement, MButtonProps>(function MButton(\n {\n component,\n to,\n href,\n target,\n rel,\n variant: variantProp,\n size: sizeProp,\n color: colorProp,\n hidden,\n hiddenAbove,\n fullWidth = false,\n rounded = false,\n shape,\n iconOnly = false,\n loading = false,\n active = false,\n pulsing = false,\n badge,\n badgeColor,\n badgePulsing = false,\n startIcon,\n endIcon,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onClick,\n onClickCapture,\n onPointerDown,\n onKeyDown,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'button'\n const isNativeButton = !component || Component === 'button'\n const group = useButtonGroup()\n const variant = variantProp ?? group?.variant ?? 'filled'\n const size = sizeProp ?? group?.size ?? 'md'\n const color = colorProp ?? group?.color ?? 'primary'\n\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n function handleClick(event: MouseEvent<HTMLElement>) {\n if (isDisabled && !isNativeButton) {\n event.preventDefault()\n return\n }\n\n onClick?.(event as never)\n }\n\n return (\n <Component\n ref={ref}\n type={isNativeButton ? type : undefined}\n // A disabled link keeps its href so it stays in the accessibility tree and is\n // announced as disabled (aria-disabled); activation is blocked in the capture phase.\n to={component ? to : undefined}\n href={component ? href : undefined}\n target={component ? target : undefined}\n rel={component ? rel : undefined}\n className={cn(\n 'button',\n variant,\n size,\n `color-${color}`,\n fullWidth && 'full-width',\n rounded && 'rounded',\n shape === 'circle' && 'circle',\n iconOnly && 'icon-only',\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isNativeButton ? isDisabled : undefined}\n aria-busy={loading || undefined}\n aria-disabled={!isNativeButton && isDisabled ? true : undefined}\n onClick={handleClick}\n onClickCapture={(event: MouseEvent<HTMLElement>) => {\n if (isDisabled && !isNativeButton) {\n event.preventDefault()\n event.stopPropagation()\n return\n }\n\n onClickCapture?.(event as never)\n }}\n onPointerDown={(event: PointerEvent<HTMLElement>) => {\n handlePointerDown(event as never)\n onPointerDown?.(event as never)\n }}\n onKeyDown={(event: KeyboardEvent<HTMLElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget as HTMLElement)\n }\n\n onKeyDown?.(event as never)\n }}\n {...getHiddenProps(hidden, hiddenAbove)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({badge, badgeColor, badgePulsing})}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" aria-hidden=\"true\" />}\n {startIcon && <span className=\"icon start\">{startIcon}</span>}\n {children && <span className=\"content\">{children}</span>}\n {endIcon && <span className=\"icon end\">{endIcon}</span>}\n </Component>\n )\n})\n"],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { r as e } from "./theme-B_juOenJ.js";
2
+ import { C as t } from "./frameworkTexts-o43FqY1A.js";
3
+ import { t as n } from "./cn-CUSXNnjF.js";
4
+ import { t as r } from "./useInteractionEffect-DtpbVd77.js";
5
+ import { createContext as i, forwardRef as a, useContext as o } from "react";
6
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
7
+ //#region src/components/controls/MButtonGroup/MButtonGroupContext.ts
8
+ var l = i(null);
9
+ function u() {
10
+ return o(l);
11
+ }
12
+ //#endregion
13
+ //#region src/components/feedback/MSpinner/MSpinner.tsx
14
+ function d({ color: e = "primary", size: r = "md", label: i, className: a, style: o, ...c }) {
15
+ let l = t(), u = i ?? l.label, d = typeof r == "number" ? {
16
+ width: `${r}px`,
17
+ height: `${r}px`,
18
+ ...o
19
+ } : o || {};
20
+ return /* @__PURE__ */ s("span", {
21
+ className: n("spinner", typeof r == "string" && r, e && `color-${e}`, a),
22
+ style: d,
23
+ role: "status",
24
+ "aria-label": u,
25
+ ...c
26
+ });
27
+ }
28
+ //#endregion
29
+ //#region src/utils/overlayBadge.tsx
30
+ function f(e) {
31
+ return e != null && e !== !1;
32
+ }
33
+ function p({ badge: e, badgeColor: t, badgePulsing: n }) {
34
+ return f(e);
35
+ }
36
+ function m({ badge: e, badgeColor: t = "primary", badgePulsing: r = !1, className: i }) {
37
+ if (!p({
38
+ badge: e,
39
+ badgeColor: t,
40
+ badgePulsing: r
41
+ })) return null;
42
+ let a = e === !0;
43
+ return /* @__PURE__ */ s("span", {
44
+ className: n("overlay-badge", `color-${t}`, a && "dot", r && "pulsing", i),
45
+ "aria-hidden": "true",
46
+ children: a ? null : e
47
+ });
48
+ }
49
+ //#endregion
50
+ //#region src/components/controls/MButton/MButton.tsx
51
+ var h = a(function({ component: t, to: i, href: a, target: o, rel: l, variant: f, size: p, color: h, hidden: g, hiddenAbove: _, fullWidth: v = !1, rounded: y = !1, shape: b, iconOnly: x = !1, loading: S = !1, active: C = !1, pulsing: w = !1, badge: T, badgeColor: E, badgePulsing: D = !1, startIcon: O, endIcon: k, clickEffect: A = "ripple", rippleColor: j, className: M, style: N, children: P, disabled: F = !1, type: I = "button", onClick: L, onClickCapture: R, onPointerDown: z, onKeyDown: B, ...V }, H) {
52
+ let U = t ?? "button", W = !t || U === "button", G = u(), K = f ?? G?.variant ?? "filled", q = p ?? G?.size ?? "md", J = h ?? G?.color ?? "primary", Y = F || S, { effectClassName: X, effectLayer: Z, handlePointerDown: Q, triggerEffect: $ } = r({
53
+ effect: A,
54
+ disabled: Y,
55
+ centered: x,
56
+ color: j
57
+ });
58
+ function ee(e) {
59
+ if (Y && !W) {
60
+ e.preventDefault();
61
+ return;
62
+ }
63
+ L?.(e);
64
+ }
65
+ return /* @__PURE__ */ c(U, {
66
+ ref: H,
67
+ type: W ? I : void 0,
68
+ to: t ? i : void 0,
69
+ href: t ? a : void 0,
70
+ target: t ? o : void 0,
71
+ rel: t ? l : void 0,
72
+ className: n("button", K, q, `color-${J}`, v && "full-width", y && "rounded", b === "circle" && "circle", x && "icon-only", S && "loading", C && "active", w && "pulsing", Y && "disabled", X, M),
73
+ style: N,
74
+ disabled: W ? Y : void 0,
75
+ "aria-busy": S || void 0,
76
+ "aria-disabled": !W && Y ? !0 : void 0,
77
+ onClick: ee,
78
+ onClickCapture: (e) => {
79
+ if (Y && !W) {
80
+ e.preventDefault(), e.stopPropagation();
81
+ return;
82
+ }
83
+ R?.(e);
84
+ },
85
+ onPointerDown: (e) => {
86
+ Q(e), z?.(e);
87
+ },
88
+ onKeyDown: (e) => {
89
+ (e.key === " " || e.key === "Enter") && $(e.currentTarget), B?.(e);
90
+ },
91
+ ...e(g, _),
92
+ ...V,
93
+ children: [
94
+ Z,
95
+ m({
96
+ badge: T,
97
+ badgeColor: E,
98
+ badgePulsing: D
99
+ }),
100
+ S && /* @__PURE__ */ s(d, {
101
+ size: "sm",
102
+ color: "inherit",
103
+ "aria-hidden": "true"
104
+ }),
105
+ O && /* @__PURE__ */ s("span", {
106
+ className: "icon start",
107
+ children: O
108
+ }),
109
+ P && /* @__PURE__ */ s("span", {
110
+ className: "content",
111
+ children: P
112
+ }),
113
+ k && /* @__PURE__ */ s("span", {
114
+ className: "icon end",
115
+ children: k
116
+ })
117
+ ]
118
+ });
119
+ });
120
+ //#endregion
121
+ export { l as i, m as n, d as r, h as t };
122
+
123
+ //# sourceMappingURL=MButton-KELyyBw1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MButton-KELyyBw1.js","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroupContext.ts","../src/components/feedback/MSpinner/MSpinner.tsx","../src/utils/overlayBadge.tsx","../src/components/controls/MButton/MButton.tsx"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {MButtonVariant} from '../MButton/MButton.types'\nimport type {MColor, MSize} from '../../../theme'\n\nexport interface MButtonGroupContextValue {\n variant?: MButtonVariant\n size?: MSize\n color?: MColor\n}\n\nexport const ButtonGroupContext = createContext<MButtonGroupContextValue | null>(null)\n\nexport function useButtonGroup(): MButtonGroupContextValue | null {\n return useContext(ButtonGroupContext)\n}\n","import type {CSSProperties} from 'react'\nimport type {MSpinnerProps} from './MSpinner.types'\nimport {cn} from '../../../utils/cn'\nimport './MSpinner.css'\nimport {useMSpinnerTexts} from '../../../i18n/frameworkTexts'\n\n// Render a minimal semantic loading indicator with token-aware sizing and color.\nexport function MSpinner({color = 'primary', size = 'md', label: labelProp, className, style, ...rest}: MSpinnerProps) {\n const texts = useMSpinnerTexts()\n const label = labelProp ?? texts.label\n const inlineStyle: CSSProperties =\n typeof size === 'number'\n ? {\n width: `${size}px`,\n height: `${size}px`,\n ...style,\n }\n : style || {}\n\n return (\n <span\n className={cn('spinner', typeof size === 'string' && size, color && `color-${color}`, className)}\n style={inlineStyle}\n role=\"status\"\n aria-label={label}\n {...rest}\n />\n )\n}\n","import type {ReactNode} from 'react'\nimport type {MColor} from '../theme'\nimport {cn} from './cn'\n\nexport interface MOverlayBadgeProps {\n badge?: ReactNode | number | boolean\n badgeColor?: MColor\n badgePulsing?: boolean\n className?: string\n}\n\nfunction hasBadgeContent(badge: MOverlayBadgeProps['badge']) {\n return badge !== undefined && badge !== null && badge !== false\n}\n\nexport function shouldRenderOverlayBadge({badge, badgeColor, badgePulsing}: MOverlayBadgeProps) {\n return hasBadgeContent(badge)\n}\n\nexport function renderOverlayBadge({\n badge,\n badgeColor = 'primary',\n badgePulsing = false,\n className,\n}: MOverlayBadgeProps) {\n if (!shouldRenderOverlayBadge({badge, badgeColor, badgePulsing})) {\n return null\n }\n\n const dotOnly = badge === true\n\n return (\n <span\n className={cn(\n 'overlay-badge',\n `color-${badgeColor}`,\n dotOnly && 'dot',\n badgePulsing && 'pulsing',\n className\n )}\n aria-hidden=\"true\"\n >\n {dotOnly ? null : badge}\n </span>\n )\n}\n","import {forwardRef} from 'react'\nimport type {KeyboardEvent, MouseEvent, PointerEvent} from 'react'\nimport type {MButtonProps} from './MButton.types'\nimport {getHiddenProps} from '../../../theme'\nimport {useButtonGroup} from '../MButtonGroup/MButtonGroupContext'\nimport {MSpinner} from '../../feedback'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {renderOverlayBadge} from '../../../utils/overlayBadge'\nimport './MButton.css'\n\n// Render the main action primitive with semantic variants and built-in click feedback.\nexport const MButton = forwardRef<HTMLElement, MButtonProps>(function MButton(\n {\n component,\n to,\n href,\n target,\n rel,\n variant: variantProp,\n size: sizeProp,\n color: colorProp,\n hidden,\n hiddenAbove,\n fullWidth = false,\n rounded = false,\n shape,\n iconOnly = false,\n loading = false,\n active = false,\n pulsing = false,\n badge,\n badgeColor,\n badgePulsing = false,\n startIcon,\n endIcon,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n children,\n disabled = false,\n type = 'button',\n onClick,\n onClickCapture,\n onPointerDown,\n onKeyDown,\n ...rest\n },\n ref\n) {\n const Component = component ?? 'button'\n const isNativeButton = !component || Component === 'button'\n const group = useButtonGroup()\n const variant = variantProp ?? group?.variant ?? 'filled'\n const size = sizeProp ?? group?.size ?? 'md'\n const color = colorProp ?? group?.color ?? 'primary'\n\n const isDisabled = disabled || loading\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLElement>({\n effect: clickEffect,\n disabled: isDisabled,\n centered: iconOnly,\n color: rippleColor,\n })\n\n function handleClick(event: MouseEvent<HTMLElement>) {\n if (isDisabled && !isNativeButton) {\n event.preventDefault()\n return\n }\n\n onClick?.(event as never)\n }\n\n return (\n <Component\n ref={ref}\n type={isNativeButton ? type : undefined}\n // A disabled link keeps its href so it stays in the accessibility tree and is\n // announced as disabled (aria-disabled); activation is blocked in the capture phase.\n to={component ? to : undefined}\n href={component ? href : undefined}\n target={component ? target : undefined}\n rel={component ? rel : undefined}\n className={cn(\n 'button',\n variant,\n size,\n `color-${color}`,\n fullWidth && 'full-width',\n rounded && 'rounded',\n shape === 'circle' && 'circle',\n iconOnly && 'icon-only',\n loading && 'loading',\n active && 'active',\n pulsing && 'pulsing',\n isDisabled && 'disabled',\n effectClassName,\n className\n )}\n style={style}\n disabled={isNativeButton ? isDisabled : undefined}\n aria-busy={loading || undefined}\n aria-disabled={!isNativeButton && isDisabled ? true : undefined}\n onClick={handleClick}\n onClickCapture={(event: MouseEvent<HTMLElement>) => {\n if (isDisabled && !isNativeButton) {\n event.preventDefault()\n event.stopPropagation()\n return\n }\n\n onClickCapture?.(event as never)\n }}\n onPointerDown={(event: PointerEvent<HTMLElement>) => {\n handlePointerDown(event as never)\n onPointerDown?.(event as never)\n }}\n onKeyDown={(event: KeyboardEvent<HTMLElement>) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget as HTMLElement)\n }\n\n onKeyDown?.(event as never)\n }}\n {...getHiddenProps(hidden, hiddenAbove)}\n {...rest}\n >\n {effectLayer}\n {renderOverlayBadge({badge, badgeColor, badgePulsing})}\n {loading && <MSpinner size=\"sm\" color=\"inherit\" aria-hidden=\"true\" />}\n {startIcon && <span className=\"icon start\">{startIcon}</span>}\n {children && <span className=\"content\">{children}</span>}\n {endIcon && <span className=\"icon end\">{endIcon}</span>}\n </Component>\n )\n})\n"],"mappings":";;;;;;;AAUA,IAAa,IAAqB,EAA+C,KAAK;AAEtF,SAAgB,IAAkD;AAC9D,QAAO,EAAW,EAAmB;;;;ACNzC,SAAgB,EAAS,EAAC,WAAQ,WAAW,UAAO,MAAM,OAAO,GAAW,cAAW,UAAO,GAAG,KAAsB;CACnH,IAAM,IAAQ,GAAkB,EAC1B,IAAQ,KAAa,EAAM,OAC3B,IACF,OAAO,KAAS,WACV;EACI,OAAO,GAAG,EAAK;EACf,QAAQ,GAAG,EAAK;EAChB,GAAG;EACN,GACD,KAAS,EAAE;AAErB,QACI,kBAAC,QAAD;EACI,WAAW,EAAG,WAAW,OAAO,KAAS,YAAY,GAAM,KAAS,SAAS,KAAS,EAAU;EAChG,OAAO;EACP,MAAK;EACL,cAAY;EACZ,GAAI;EACN,CAAA;;;;ACfV,SAAS,EAAgB,GAAoC;AACzD,QAAO,KAAiC,QAAQ,MAAU;;AAG9D,SAAgB,EAAyB,EAAC,UAAO,eAAY,mBAAmC;AAC5F,QAAO,EAAgB,EAAM;;AAGjC,SAAgB,EAAmB,EAC/B,UACA,gBAAa,WACb,kBAAe,IACf,gBACmB;AACnB,KAAI,CAAC,EAAyB;EAAC;EAAO;EAAY;EAAa,CAAC,CAC5D,QAAO;CAGX,IAAM,IAAU,MAAU;AAE1B,QACI,kBAAC,QAAD;EACI,WAAW,EACP,iBACA,SAAS,KACT,KAAW,OACX,KAAgB,WAChB,EACH;EACD,eAAY;YAEX,IAAU,OAAO;EACf,CAAA;;;;AC/Bf,IAAa,IAAU,EAAsC,SACzD,EACI,cACA,OACA,SACA,WACA,QACA,SAAS,GACT,MAAM,GACN,OAAO,GACP,WACA,gBACA,eAAY,IACZ,aAAU,IACV,UACA,cAAW,IACX,aAAU,IACV,YAAS,IACT,aAAU,IACV,UACA,eACA,kBAAe,IACf,cACA,YACA,iBAAc,UACd,gBACA,cACA,UACA,aACA,cAAW,IACX,UAAO,UACP,YACA,mBACA,kBACA,cACA,GAAG,KAEP,GACF;CACE,IAAM,IAAY,KAAa,UACzB,IAAiB,CAAC,KAAa,MAAc,UAC7C,IAAQ,GAAgB,EACxB,IAAU,KAAe,GAAO,WAAW,UAC3C,IAAO,KAAY,GAAO,QAAQ,MAClC,IAAQ,KAAa,GAAO,SAAS,WAErC,IAAa,KAAY,GACzB,EAAC,oBAAiB,gBAAa,sBAAmB,qBAAiB,EAAkC;EACvG,QAAQ;EACR,UAAU;EACV,UAAU;EACV,OAAO;EACV,CAAC;CAEF,SAAS,GAAY,GAAgC;AACjD,MAAI,KAAc,CAAC,GAAgB;AAC/B,KAAM,gBAAgB;AACtB;;AAGJ,MAAU,EAAe;;AAG7B,QACI,kBAAC,GAAD;EACS;EACL,MAAM,IAAiB,IAAO,KAAA;EAG9B,IAAI,IAAY,IAAK,KAAA;EACrB,MAAM,IAAY,IAAO,KAAA;EACzB,QAAQ,IAAY,IAAS,KAAA;EAC7B,KAAK,IAAY,IAAM,KAAA;EACvB,WAAW,EACP,UACA,GACA,GACA,SAAS,KACT,KAAa,cACb,KAAW,WACX,MAAU,YAAY,UACtB,KAAY,aACZ,KAAW,WACX,KAAU,UACV,KAAW,WACX,KAAc,YACd,GACA,EACH;EACM;EACP,UAAU,IAAiB,IAAa,KAAA;EACxC,aAAW,KAAW,KAAA;EACtB,iBAAe,CAAC,KAAkB,IAAa,KAAO,KAAA;EACtD,SAAS;EACT,iBAAiB,MAAmC;AAChD,OAAI,KAAc,CAAC,GAAgB;AAE/B,IADA,EAAM,gBAAgB,EACtB,EAAM,iBAAiB;AACvB;;AAGJ,OAAiB,EAAe;;EAEpC,gBAAgB,MAAqC;AAEjD,GADA,EAAkB,EAAe,EACjC,IAAgB,EAAe;;EAEnC,YAAY,MAAsC;AAK9C,IAJI,EAAM,QAAQ,OAAO,EAAM,QAAQ,YACnC,EAAc,EAAM,cAA6B,EAGrD,IAAY,EAAe;;EAE/B,GAAI,EAAe,GAAQ,EAAY;EACvC,GAAI;YAnDR;GAqDK;GACA,EAAmB;IAAC;IAAO;IAAY;IAAa,CAAC;GACrD,KAAW,kBAAC,GAAD;IAAU,MAAK;IAAK,OAAM;IAAU,eAAY;IAAS,CAAA;GACpE,KAAa,kBAAC,QAAD;IAAM,WAAU;cAAc;IAAiB,CAAA;GAC5D,KAAY,kBAAC,QAAD;IAAM,WAAU;IAAW;IAAgB,CAAA;GACvD,KAAW,kBAAC,QAAD;IAAM,WAAU;cAAY;IAAe,CAAA;GAC/C;;EAElB"}
@@ -1,5 +1,5 @@
1
- import { t as e } from "./cn-YER3QsV1.js";
2
- import { i as t } from "./MButton-C1pnL4_j.js";
1
+ import { t as e } from "./cn-CUSXNnjF.js";
2
+ import { i as t } from "./MButton-KELyyBw1.js";
3
3
  import { forwardRef as n, useMemo as r } from "react";
4
4
  import { jsx as i } from "react/jsx-runtime";
5
5
  //#region src/components/controls/MButtonGroup/MButtonGroup.tsx
@@ -27,4 +27,4 @@ var a = n(function({ orientation: n = "horizontal", variant: a, size: o, color:
27
27
  //#endregion
28
28
  export { a as t };
29
29
 
30
- //# sourceMappingURL=MButtonGroup-BkNf7fzo.js.map
30
+ //# sourceMappingURL=MButtonGroup-DDnn8Wfy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MButtonGroup-BkNf7fzo.js","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n"],"mappings":";;;;;AAOA,IAAa,IAAe,EAA8C,SACtE,EAAC,iBAAc,cAAc,YAAS,SAAM,UAAO,cAAW,IAAM,cAAW,aAAU,GAAG,KAC5F,GACF;CACE,IAAM,IAAM,SAAyC;EAAC;EAAS;EAAM;EAAM,GAAG;EAAC;EAAS;EAAM;EAAM,CAAC;AAErG,QACI,kBAAC,EAAmB,UAApB;EAA6B,OAAO;YAChC,kBAAC,OAAD;GACS;GACL,MAAK;GACL,WAAW,EAAG,gBAAgB,GAAa,KAAY,YAAY,EAAU;GAC7E,GAAI;GAEH;GACC,CAAA;EACoB,CAAA;EAEpC"}
1
+ {"version":3,"file":"MButtonGroup-DDnn8Wfy.js","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n"],"mappings":";;;;;AAOA,IAAa,IAAe,EAA8C,SACtE,EAAC,iBAAc,cAAc,YAAS,SAAM,UAAO,cAAW,IAAM,cAAW,aAAU,GAAG,KAC5F,GACF;CACE,IAAM,IAAM,SAAyC;EAAC;EAAS;EAAM;EAAM,GAAG;EAAC;EAAS;EAAM;EAAM,CAAC;AAErG,QACI,kBAAC,EAAmB,UAApB;EAA6B,OAAO;YAChC,kBAAC,OAAD;GACS;GACL,MAAK;GACL,WAAW,EAAG,gBAAgB,GAAa,KAAY,YAAY,EAAU;GAC7E,GAAI;GAEH;GACC,CAAA;EACoB,CAAA;EAEpC"}
@@ -1,2 +1,2 @@
1
- const e=require(`./cn-CU5TNITO.cjs`),t=require(`./MButton-sTKnano6.cjs`);require(`./core-D66c1_Wo.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);var i=(0,n.forwardRef)(function({orientation:i=`horizontal`,variant:a,size:o,color:s,attached:c=!0,className:l,children:u,...d},f){let p=(0,n.useMemo)(()=>({variant:a,size:o,color:s}),[a,o,s]);return(0,r.jsx)(t.i.Provider,{value:p,children:(0,r.jsx)(`div`,{ref:f,role:`group`,className:e.t(`button-group`,i,c&&`attached`,l),...d,children:u})})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
2
- //# sourceMappingURL=MButtonGroup-iPv14c0V.cjs.map
1
+ const e=require(`./cn-DYFxgzi2.cjs`),t=require(`./MButton-BxEky3xQ.cjs`);require(`./core-w629c4ND.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);var i=(0,n.forwardRef)(function({orientation:i=`horizontal`,variant:a,size:o,color:s,attached:c=!0,className:l,children:u,...d},f){let p=(0,n.useMemo)(()=>({variant:a,size:o,color:s}),[a,o,s]);return(0,r.jsx)(t.i.Provider,{value:p,children:(0,r.jsx)(`div`,{ref:f,role:`group`,className:e.t(`button-group`,i,c&&`attached`,l),...d,children:u})})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
2
+ //# sourceMappingURL=MButtonGroup-Dz8Fm-oA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MButtonGroup-iPv14c0V.cjs","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n"],"mappings":"8JAOA,IAAa,GAAA,EAAA,EAAA,YAA6D,SACtE,CAAC,cAAc,aAAc,UAAS,OAAM,QAAO,WAAW,GAAM,YAAW,WAAU,GAAG,GAC5F,EACF,CACE,IAAM,GAAA,EAAA,EAAA,cAA+C,CAAC,UAAS,OAAM,QAAM,EAAG,CAAC,EAAS,EAAM,EAAM,CAAC,CAErG,OACI,EAAA,EAAA,KAAC,EAAA,EAAmB,SAApB,CAA6B,MAAO,YAChC,EAAA,EAAA,KAAC,MAAD,CACS,MACL,KAAK,QACL,UAAW,EAAA,EAAG,eAAgB,EAAa,GAAY,WAAY,EAAU,CAC7E,GAAI,EAEH,WACC,CAAA,CACoB,CAAA,EAEpC"}
1
+ {"version":3,"file":"MButtonGroup-Dz8Fm-oA.cjs","names":[],"sources":["../src/components/controls/MButtonGroup/MButtonGroup.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react'\nimport type {MButtonGroupProps} from './MButtonGroup.types'\nimport {ButtonGroupContext} from './MButtonGroupContext'\nimport type {MButtonGroupContextValue} from './MButtonGroupContext'\nimport {cn} from '../../../utils/cn'\nimport './MButtonGroup.css'\n\nexport const MButtonGroup = forwardRef<HTMLDivElement, MButtonGroupProps>(function MButtonGroup(\n {orientation = 'horizontal', variant, size, color, attached = true, className, children, ...rest},\n ref\n) {\n const ctx = useMemo<MButtonGroupContextValue>(() => ({variant, size, color}), [variant, size, color])\n\n return (\n <ButtonGroupContext.Provider value={ctx}>\n <div\n ref={ref}\n role=\"group\"\n className={cn('button-group', orientation, attached && 'attached', className)}\n {...rest}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n )\n})\n"],"mappings":"8JAOA,IAAa,GAAA,EAAA,EAAA,YAA6D,SACtE,CAAC,cAAc,aAAc,UAAS,OAAM,QAAO,WAAW,GAAM,YAAW,WAAU,GAAG,GAC5F,EACF,CACE,IAAM,GAAA,EAAA,EAAA,cAA+C,CAAC,UAAS,OAAM,QAAM,EAAG,CAAC,EAAS,EAAM,EAAM,CAAC,CAErG,OACI,EAAA,EAAA,KAAC,EAAA,EAAmB,SAApB,CAA6B,MAAO,YAChC,EAAA,EAAA,KAAC,MAAD,CACS,MACL,KAAK,QACL,UAAW,EAAA,EAAG,eAAgB,EAAa,GAAY,WAAY,EAAU,CAC7E,GAAI,EAEH,WACC,CAAA,CACoB,CAAA,EAEpC"}
@@ -1,2 +1,2 @@
1
- const e=require(`./cn-CU5TNITO.cjs`),t=require(`./useInteractionEffect-CFwDX5UF.cjs`),n=require(`./MSurface-QYEygc_0.cjs`),r=require(`./MSkeleton-BoFpowFU.cjs`);require(`./core-D66c1_Wo.cjs`);let i=require(`react/jsx-runtime`);function a({component:e,to:t,href:n,interactive:r,hasClickHandler:i=!1,hasPointerHandler:a=!1,fallbackComponent:o=`div`}){let s=!!(e||n||t),c=e??(s?`a`:o);return{component:c,href:n??(c===`a`?t:void 0),to:c===`a`?void 0:t,isInteractive:!!(r||i||a||n||t),isLink:s}}function o({component:o,to:s,href:c,target:l,rel:u,interactive:d=!1,stretch:f=!0,tone:p=`raised`,padded:m=!1,color:h,clickEffect:g,rippleColor:_,skeleton:v=!1,spacing:y,mt:b,mb:x,ml:S,mr:C,mx:w,my:T,className:E,children:D,onPointerDown:O,...k}){let{component:A,href:j,to:M,isInteractive:N}=a({component:o,href:c,to:s,interactive:d,hasClickHandler:!!k.onClick,hasPointerHandler:!!O}),{effectClassName:P,effectLayer:F,handlePointerDown:I}=t.t({effect:g??(N?`ripple`:`none`),disabled:!N||v,color:_});return(0,i.jsxs)(n.t,{component:A,href:j,to:M,target:l,rel:u,tone:p,padded:m,spacing:y,mt:b,mb:x,ml:S,mr:C,mx:w,my:T,className:e.t(`card`,!f&&`no-stretch`,h&&`color-${h}`,N&&!v&&`interactive`,v&&`skeleton`,P,E),onPointerDown:e=>{I(e),O?.(e)},...k,children:[F,v?(0,i.jsxs)(`div`,{className:`card-skeleton-content`,children:[(0,i.jsx)(r.t,{variant:`rectangle`,height:`8rem`}),(0,i.jsx)(r.t,{variant:`text`,lines:3,className:`card-skeleton-lines`})]}):D]})}function s({className:t,children:n,...r}){return(0,i.jsx)(`div`,{className:e.t(`header`,t),...r,children:n})}function c({className:t,children:n,...r}){return(0,i.jsx)(`div`,{className:e.t(`body`,t),...r,children:n})}function l({className:t,children:n,...r}){return(0,i.jsx)(`div`,{className:e.t(`footer`,t),...r,children:n})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=MCard-DK-_FkpE.cjs.map
1
+ const e=require(`./cn-DYFxgzi2.cjs`),t=require(`./useInteractionEffect-CtXlbjhC.cjs`),n=require(`./MSurface-BrFo-JMJ.cjs`),r=require(`./MSkeleton-DuAN8Vcv.cjs`);require(`./core-w629c4ND.cjs`);let i=require(`react/jsx-runtime`);function a({component:e,to:t,href:n,interactive:r,hasClickHandler:i=!1,hasPointerHandler:a=!1,fallbackComponent:o=`div`}){let s=!!(e||n||t),c=e??(s?`a`:o);return{component:c,href:n??(c===`a`?t:void 0),to:c===`a`?void 0:t,isInteractive:!!(r||i||a||n||t),isLink:s}}function o({component:o,to:s,href:c,target:l,rel:u,interactive:d=!1,stretch:f=!0,tone:p=`raised`,padded:m=!1,color:h,clickEffect:g,rippleColor:_,skeleton:v=!1,spacing:y,mt:b,mb:x,ml:S,mr:C,mx:w,my:T,className:E,children:D,onPointerDown:O,...k}){let{component:A,href:j,to:M,isInteractive:N}=a({component:o,href:c,to:s,interactive:d,hasClickHandler:!!k.onClick,hasPointerHandler:!!O}),{effectClassName:P,effectLayer:F,handlePointerDown:I}=t.t({effect:g??(N?`ripple`:`none`),disabled:!N||v,color:_});return(0,i.jsxs)(n.t,{component:A,href:j,to:M,target:l,rel:u,tone:p,padded:m,spacing:y,mt:b,mb:x,ml:S,mr:C,mx:w,my:T,className:e.t(`card`,!f&&`no-stretch`,h&&`color-${h}`,N&&!v&&`interactive`,v&&`skeleton`,P,E),onPointerDown:e=>{I(e),O?.(e)},...k,children:[F,v?(0,i.jsxs)(`div`,{className:`card-skeleton-content`,children:[(0,i.jsx)(r.t,{variant:`rectangle`,height:`8rem`}),(0,i.jsx)(r.t,{variant:`text`,lines:3,className:`card-skeleton-lines`})]}):D]})}function s({className:t,children:n,...r}){return(0,i.jsx)(`div`,{className:e.t(`header`,t),...r,children:n})}function c({className:t,children:n,...r}){return(0,i.jsx)(`div`,{className:e.t(`body`,t),...r,children:n})}function l({className:t,children:n,...r}){return(0,i.jsx)(`div`,{className:e.t(`footer`,t),...r,children:n})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
2
+ //# sourceMappingURL=MCard-Bqm4BjK_.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCard-Bqm4BjK_.cjs","names":[],"sources":["../src/components/cards/shared/MCardAction.utils.ts","../src/components/cards/MCard/MCard.tsx"],"sourcesContent":["import type {ElementType} from 'react'\nimport type {MCardActionProps} from './MCardAction.types'\n\ninterface ResolveMCardActionOptions extends Pick<MCardActionProps, 'component' | 'to' | 'href' | 'interactive'> {\n hasClickHandler?: boolean\n hasPointerHandler?: boolean\n fallbackComponent?: ElementType\n}\n\nexport interface ResolvedMCardAction {\n component: ElementType\n href?: string\n to?: string\n isInteractive: boolean\n isLink: boolean\n}\n\nexport function resolveMCardAction({\n component,\n to,\n href,\n interactive,\n hasClickHandler = false,\n hasPointerHandler = false,\n fallbackComponent = 'div',\n}: ResolveMCardActionOptions): ResolvedMCardAction {\n const isLink = Boolean(component || href || to)\n const resolvedComponent = component ?? (isLink ? 'a' : fallbackComponent)\n const resolvedHref = href ?? (resolvedComponent === 'a' ? to : undefined)\n const resolvedTo = resolvedComponent === 'a' ? undefined : to\n\n return {\n component: resolvedComponent,\n href: resolvedHref,\n to: resolvedTo,\n isInteractive: Boolean(interactive || hasClickHandler || hasPointerHandler || href || to),\n isLink,\n }\n}\n","import type {MCardProps, MCardSectionProps} from './MCard.types'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSurface} from '../../layout'\nimport {MSkeleton} from '../../feedback'\nimport {resolveMCardAction} from '../shared'\nimport './MCard.css'\nimport '../shared/MCardShared.css'\n\n// Compose elevated content blocks that can optionally behave like an interactive surface.\nexport function MCard({\n component,\n to,\n href,\n target,\n rel,\n interactive = false,\n stretch = true,\n tone = 'raised',\n padded = false,\n color,\n clickEffect,\n rippleColor,\n skeleton = false,\n spacing,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n className,\n children,\n onPointerDown,\n ...rest\n}: MCardProps) {\n const {\n component: surfaceComponent,\n href: resolvedHref,\n to: resolvedTo,\n isInteractive,\n } = resolveMCardAction({\n component,\n href,\n to,\n interactive,\n hasClickHandler: Boolean(rest.onClick),\n hasPointerHandler: Boolean(onPointerDown),\n })\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLDivElement>({\n effect: clickEffect ?? (isInteractive ? 'ripple' : 'none'),\n disabled: !isInteractive || skeleton,\n color: rippleColor,\n })\n\n return (\n <MSurface\n component={surfaceComponent}\n href={resolvedHref}\n to={resolvedTo}\n target={target}\n rel={rel}\n tone={tone}\n padded={padded}\n spacing={spacing}\n mt={mt}\n mb={mb}\n ml={ml}\n mr={mr}\n mx={mx}\n my={my}\n className={cn(\n 'card',\n !stretch && 'no-stretch',\n color && `color-${color}`,\n isInteractive && !skeleton && 'interactive',\n skeleton && 'skeleton',\n effectClassName,\n className\n )}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n {...rest}\n >\n {effectLayer}\n {skeleton ? (\n <div className=\"card-skeleton-content\">\n <MSkeleton variant=\"rectangle\" height=\"8rem\" />\n <MSkeleton variant=\"text\" lines={3} className=\"card-skeleton-lines\" />\n </div>\n ) : (\n children\n )}\n </MSurface>\n )\n}\n\n// Render the top section of a card.\nexport function MCardHeader({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('header', className)} {...rest}>\n {children}\n </div>\n )\n}\n\n// Render the main content section of a card.\nexport function MCardBody({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('body', className)} {...rest}>\n {children}\n </div>\n )\n}\n\n// Render the bottom section of a card.\nexport function MCardFooter({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('footer', className)} {...rest}>\n {children}\n </div>\n )\n}\n"],"mappings":"mOAiBA,SAAgB,EAAmB,CAC/B,YACA,KACA,OACA,cACA,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,OAC2B,CAC/C,IAAM,EAAS,GAAQ,GAAa,GAAQ,GACtC,EAAoB,IAAc,EAAS,IAAM,GAIvD,MAAO,CACH,UAAW,EACX,KALiB,IAAS,IAAsB,IAAM,EAAK,IAAA,IAM3D,GALe,IAAsB,IAAM,IAAA,GAAY,EAMvD,cAAe,GAAQ,GAAe,GAAmB,GAAqB,GAAQ,GACtF,SACH,CC3BL,SAAgB,EAAM,CAClB,YACA,KACA,OACA,SACA,MACA,cAAc,GACd,UAAU,GACV,OAAO,SACP,SAAS,GACT,QACA,cACA,cACA,WAAW,GACX,UACA,KACA,KACA,KACA,KACA,KACA,KACA,YACA,WACA,gBACA,GAAG,GACQ,CACX,GAAM,CACF,UAAW,EACX,KAAM,EACN,GAAI,EACJ,iBACA,EAAmB,CACnB,YACA,OACA,KACA,cACA,gBAAiB,EAAQ,EAAK,QAC9B,kBAAmB,EAAQ,EAC9B,CAAC,CACI,CAAC,kBAAiB,cAAa,qBAAqB,EAAA,EAAqC,CAC3F,OAAQ,IAAgB,EAAgB,SAAW,QACnD,SAAU,CAAC,GAAiB,EAC5B,MAAO,EACV,CAAC,CAEF,OACI,EAAA,EAAA,MAAC,EAAA,EAAD,CACI,UAAW,EACX,KAAM,EACN,GAAI,EACI,SACH,MACC,OACE,SACC,UACL,KACA,KACA,KACA,KACA,KACA,KACJ,UAAW,EAAA,EACP,OACA,CAAC,GAAW,aACZ,GAAS,SAAS,IAClB,GAAiB,CAAC,GAAY,cAC9B,GAAY,WACZ,EACA,EACH,CACD,cAAgB,GAAU,CACtB,EAAkB,EAAM,CACxB,IAAgB,EAAM,EAE1B,GAAI,WA5BR,CA8BK,EACA,GACG,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iCAAf,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAW,QAAQ,YAAY,OAAO,OAAS,CAAA,EAC/C,EAAA,EAAA,KAAC,EAAA,EAAD,CAAW,QAAQ,OAAO,MAAO,EAAG,UAAU,sBAAwB,CAAA,CACpE,GAEN,EAEG,GAKnB,SAAgB,EAAY,CAAC,YAAW,WAAU,GAAG,GAA0B,CAC3E,OACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,EAAG,SAAU,EAAU,CAAE,GAAI,EACxC,WACC,CAAA,CAKd,SAAgB,EAAU,CAAC,YAAW,WAAU,GAAG,GAA0B,CACzE,OACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,EAAG,OAAQ,EAAU,CAAE,GAAI,EACtC,WACC,CAAA,CAKd,SAAgB,EAAY,CAAC,YAAW,WAAU,GAAG,GAA0B,CAC3E,OACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,EAAG,SAAU,EAAU,CAAE,GAAI,EACxC,WACC,CAAA"}
@@ -1,7 +1,7 @@
1
- import { t as e } from "./cn-YER3QsV1.js";
1
+ import { t as e } from "./cn-CUSXNnjF.js";
2
2
  import { t } from "./useInteractionEffect-DtpbVd77.js";
3
- import { t as n } from "./MSurface-B-sjyczH.js";
4
- import { t as r } from "./MSkeleton-C5uD4Axo.js";
3
+ import { t as n } from "./MSurface-B_QnRLr5.js";
4
+ import { t as r } from "./MSkeleton-BpcpBBJq.js";
5
5
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
6
  //#region src/components/cards/shared/MCardAction.utils.ts
7
7
  function o({ component: e, to: t, href: n, interactive: r, hasClickHandler: i = !1, hasPointerHandler: a = !1, fallbackComponent: o = "div" }) {
@@ -86,4 +86,4 @@ function u({ className: t, children: n, ...r }) {
86
86
  //#endregion
87
87
  export { o as a, c as i, l as n, u as r, s as t };
88
88
 
89
- //# sourceMappingURL=MCard-azpp4YVD.js.map
89
+ //# sourceMappingURL=MCard-CqZYGaS2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCard-CqZYGaS2.js","names":[],"sources":["../src/components/cards/shared/MCardAction.utils.ts","../src/components/cards/MCard/MCard.tsx"],"sourcesContent":["import type {ElementType} from 'react'\nimport type {MCardActionProps} from './MCardAction.types'\n\ninterface ResolveMCardActionOptions extends Pick<MCardActionProps, 'component' | 'to' | 'href' | 'interactive'> {\n hasClickHandler?: boolean\n hasPointerHandler?: boolean\n fallbackComponent?: ElementType\n}\n\nexport interface ResolvedMCardAction {\n component: ElementType\n href?: string\n to?: string\n isInteractive: boolean\n isLink: boolean\n}\n\nexport function resolveMCardAction({\n component,\n to,\n href,\n interactive,\n hasClickHandler = false,\n hasPointerHandler = false,\n fallbackComponent = 'div',\n}: ResolveMCardActionOptions): ResolvedMCardAction {\n const isLink = Boolean(component || href || to)\n const resolvedComponent = component ?? (isLink ? 'a' : fallbackComponent)\n const resolvedHref = href ?? (resolvedComponent === 'a' ? to : undefined)\n const resolvedTo = resolvedComponent === 'a' ? undefined : to\n\n return {\n component: resolvedComponent,\n href: resolvedHref,\n to: resolvedTo,\n isInteractive: Boolean(interactive || hasClickHandler || hasPointerHandler || href || to),\n isLink,\n }\n}\n","import type {MCardProps, MCardSectionProps} from './MCard.types'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MSurface} from '../../layout'\nimport {MSkeleton} from '../../feedback'\nimport {resolveMCardAction} from '../shared'\nimport './MCard.css'\nimport '../shared/MCardShared.css'\n\n// Compose elevated content blocks that can optionally behave like an interactive surface.\nexport function MCard({\n component,\n to,\n href,\n target,\n rel,\n interactive = false,\n stretch = true,\n tone = 'raised',\n padded = false,\n color,\n clickEffect,\n rippleColor,\n skeleton = false,\n spacing,\n mt,\n mb,\n ml,\n mr,\n mx,\n my,\n className,\n children,\n onPointerDown,\n ...rest\n}: MCardProps) {\n const {\n component: surfaceComponent,\n href: resolvedHref,\n to: resolvedTo,\n isInteractive,\n } = resolveMCardAction({\n component,\n href,\n to,\n interactive,\n hasClickHandler: Boolean(rest.onClick),\n hasPointerHandler: Boolean(onPointerDown),\n })\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLDivElement>({\n effect: clickEffect ?? (isInteractive ? 'ripple' : 'none'),\n disabled: !isInteractive || skeleton,\n color: rippleColor,\n })\n\n return (\n <MSurface\n component={surfaceComponent}\n href={resolvedHref}\n to={resolvedTo}\n target={target}\n rel={rel}\n tone={tone}\n padded={padded}\n spacing={spacing}\n mt={mt}\n mb={mb}\n ml={ml}\n mr={mr}\n mx={mx}\n my={my}\n className={cn(\n 'card',\n !stretch && 'no-stretch',\n color && `color-${color}`,\n isInteractive && !skeleton && 'interactive',\n skeleton && 'skeleton',\n effectClassName,\n className\n )}\n onPointerDown={(event) => {\n handlePointerDown(event)\n onPointerDown?.(event)\n }}\n {...rest}\n >\n {effectLayer}\n {skeleton ? (\n <div className=\"card-skeleton-content\">\n <MSkeleton variant=\"rectangle\" height=\"8rem\" />\n <MSkeleton variant=\"text\" lines={3} className=\"card-skeleton-lines\" />\n </div>\n ) : (\n children\n )}\n </MSurface>\n )\n}\n\n// Render the top section of a card.\nexport function MCardHeader({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('header', className)} {...rest}>\n {children}\n </div>\n )\n}\n\n// Render the main content section of a card.\nexport function MCardBody({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('body', className)} {...rest}>\n {children}\n </div>\n )\n}\n\n// Render the bottom section of a card.\nexport function MCardFooter({className, children, ...rest}: MCardSectionProps) {\n return (\n <div className={cn('footer', className)} {...rest}>\n {children}\n </div>\n )\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,EAAmB,EAC/B,cACA,OACA,SACA,gBACA,qBAAkB,IAClB,uBAAoB,IACpB,uBAAoB,SAC2B;CAC/C,IAAM,IAAS,GAAQ,KAAa,KAAQ,IACtC,IAAoB,MAAc,IAAS,MAAM;AAIvD,QAAO;EACH,WAAW;EACX,MALiB,MAAS,MAAsB,MAAM,IAAK,KAAA;EAM3D,IALe,MAAsB,MAAM,KAAA,IAAY;EAMvD,eAAe,GAAQ,KAAe,KAAmB,KAAqB,KAAQ;EACtF;EACH;;;;AC3BL,SAAgB,EAAM,EAClB,cACA,OACA,SACA,WACA,QACA,iBAAc,IACd,aAAU,IACV,UAAO,UACP,YAAS,IACT,UACA,gBACA,gBACA,cAAW,IACX,YACA,OACA,OACA,OACA,OACA,OACA,OACA,cACA,aACA,kBACA,GAAG,KACQ;CACX,IAAM,EACF,WAAW,GACX,MAAM,GACN,IAAI,GACJ,qBACA,EAAmB;EACnB;EACA;EACA;EACA;EACA,iBAAiB,EAAQ,EAAK;EAC9B,mBAAmB,EAAQ;EAC9B,CAAC,EACI,EAAC,oBAAiB,gBAAa,yBAAqB,EAAqC;EAC3F,QAAQ,MAAgB,IAAgB,WAAW;EACnD,UAAU,CAAC,KAAiB;EAC5B,OAAO;EACV,CAAC;AAEF,QACI,kBAAC,GAAD;EACI,WAAW;EACX,MAAM;EACN,IAAI;EACI;EACH;EACC;EACE;EACC;EACL;EACA;EACA;EACA;EACA;EACA;EACJ,WAAW,EACP,QACA,CAAC,KAAW,cACZ,KAAS,SAAS,KAClB,KAAiB,CAAC,KAAY,eAC9B,KAAY,YACZ,GACA,EACH;EACD,gBAAgB,MAAU;AAEtB,GADA,EAAkB,EAAM,EACxB,IAAgB,EAAM;;EAE1B,GAAI;YA5BR,CA8BK,GACA,IACG,kBAAC,OAAD;GAAK,WAAU;aAAf,CACI,kBAAC,GAAD;IAAW,SAAQ;IAAY,QAAO;IAAS,CAAA,EAC/C,kBAAC,GAAD;IAAW,SAAQ;IAAO,OAAO;IAAG,WAAU;IAAwB,CAAA,CACpE;OAEN,EAEG;;;AAKnB,SAAgB,EAAY,EAAC,cAAW,aAAU,GAAG,KAA0B;AAC3E,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,EAAU;EAAE,GAAI;EACxC;EACC,CAAA;;AAKd,SAAgB,EAAU,EAAC,cAAW,aAAU,GAAG,KAA0B;AACzE,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,QAAQ,EAAU;EAAE,GAAI;EACtC;EACC,CAAA;;AAKd,SAAgB,EAAY,EAAC,cAAW,aAAU,GAAG,KAA0B;AAC3E,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,UAAU,EAAU;EAAE,GAAI;EACxC;EACC,CAAA"}
@@ -0,0 +1,72 @@
1
+ import { t as e } from "./cn-CUSXNnjF.js";
2
+ import { t } from "./useInteractionEffect-DtpbVd77.js";
3
+ import { forwardRef as n, useCallback as r, useEffect as i, useId as a, useRef as o } from "react";
4
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
5
+ //#region src/components/controls/MCheckbox/MCheckbox.tsx
6
+ var l = n(function({ checked: n, defaultChecked: l, indeterminate: u = !1, name: d, id: f, value: p, disabled: m = !1, size: h = "md", color: g = "primary", label: _, labelPosition: v = "right", error: y = !1, errorText: b, onChange: x, onIndeterminateChange: S, clickEffect: C = "ripple", rippleColor: w, "aria-label": T, "aria-labelledby": E, className: D, style: O }, k) {
7
+ let A = o(null), j = a(), M = r((e) => {
8
+ A.current = e, typeof k == "function" ? k(e) : k && (k.current = e);
9
+ }, [k]), { effectClassName: N, effectLayer: P, handlePointerDown: F, triggerEffect: I } = t({
10
+ effect: C,
11
+ disabled: m,
12
+ centered: !0,
13
+ color: w
14
+ });
15
+ i(() => {
16
+ A.current && A.current.indeterminate !== u && (A.current.indeterminate = u);
17
+ });
18
+ function L(e) {
19
+ x?.(e), u && S?.(!1);
20
+ }
21
+ let R = y || !!b;
22
+ return /* @__PURE__ */ c("div", {
23
+ className: e("checkbox", D),
24
+ style: O,
25
+ children: [/* @__PURE__ */ c("label", {
26
+ className: e("label", h, v === "left" && "label-left", m && "disabled"),
27
+ children: [/* @__PURE__ */ c("span", {
28
+ className: e("box", `color-${g}`, R && "error", N),
29
+ onPointerDown: F,
30
+ children: [
31
+ P,
32
+ /* @__PURE__ */ s("input", {
33
+ ref: M,
34
+ type: "checkbox",
35
+ checked: n,
36
+ defaultChecked: l,
37
+ name: d,
38
+ id: f,
39
+ value: p,
40
+ disabled: m,
41
+ onChange: L,
42
+ onKeyDown: (e) => {
43
+ (e.key === " " || e.key === "Enter") && I(e.currentTarget.parentElement);
44
+ },
45
+ className: "input",
46
+ "aria-label": T,
47
+ "aria-labelledby": E,
48
+ "aria-invalid": R || void 0,
49
+ "aria-describedby": b ? j : void 0
50
+ }),
51
+ /* @__PURE__ */ s("span", {
52
+ className: "check-mark",
53
+ "aria-hidden": "true"
54
+ }),
55
+ /* @__PURE__ */ s("span", { className: "indeterminate-mark" })
56
+ ]
57
+ }), _ && /* @__PURE__ */ s("span", {
58
+ className: e("label-text", R && "error"),
59
+ children: _
60
+ })]
61
+ }), b && /* @__PURE__ */ s("span", {
62
+ id: j,
63
+ className: "field-error",
64
+ role: "alert",
65
+ children: b
66
+ })]
67
+ });
68
+ });
69
+ //#endregion
70
+ export { l as t };
71
+
72
+ //# sourceMappingURL=MCheckbox-CaWgyUn5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCheckbox-CaWgyUn5.js","names":[],"sources":["../src/components/controls/MCheckbox/MCheckbox.tsx"],"sourcesContent":["import {forwardRef, useCallback, useEffect, useId, useRef} from 'react'\nimport type * as React from 'react'\nimport type {MCheckboxProps} from './MCheckbox.types'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MCheckbox.css'\n\n// Render a styled checkbox while keeping the native input for accessibility.\nexport const MCheckbox = forwardRef<HTMLInputElement, MCheckboxProps>(function MCheckbox(\n {\n checked,\n defaultChecked,\n indeterminate = false,\n name,\n id,\n value,\n disabled = false,\n size = 'md',\n color = 'primary',\n label,\n labelPosition = 'right',\n error = false,\n errorText,\n onChange,\n onIndeterminateChange,\n clickEffect = 'ripple',\n rippleColor,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n className,\n style,\n },\n ref\n) {\n const inputRef = useRef<HTMLInputElement | null>(null)\n const errorId = useId()\n // Keep a local handle for the indeterminate sync and still forward object or callback refs.\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref]\n )\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect,\n disabled,\n centered: true,\n color: rippleColor,\n })\n\n // Keep the browser indeterminate flag in sync with the prop on every render: a click\n // clears the DOM flag, so re-applying only on prop changes let the two drift apart.\n useEffect(() => {\n if (inputRef.current && inputRef.current.indeterminate !== indeterminate) {\n inputRef.current.indeterminate = indeterminate\n }\n })\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n onChange?.(event)\n // The click already cleared the native flag; tell a controlled parent to drop it too.\n if (indeterminate) {\n onIndeterminateChange?.(false)\n }\n }\n\n const hasError = error || !!errorText\n\n return (\n <div className={cn('checkbox', className)} style={style}>\n <label className={cn('label', size, labelPosition === 'left' && 'label-left', disabled && 'disabled')}>\n <span\n className={cn('box', `color-${color}`, hasError && 'error', effectClassName)}\n onPointerDown={handlePointerDown}\n >\n {effectLayer}\n <input\n ref={setInputRef}\n type=\"checkbox\"\n checked={checked}\n defaultChecked={defaultChecked}\n name={name}\n id={id}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget.parentElement as HTMLSpanElement | null)\n }\n }}\n className=\"input\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-invalid={hasError || undefined}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span className=\"check-mark\" aria-hidden=\"true\" />\n <span className=\"indeterminate-mark\" />\n </span>\n {label && <span className={cn('label-text', hasError && 'error')}>{label}</span>}\n </label>\n {errorText && (\n <span id={errorId} className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n </div>\n )\n})\n"],"mappings":";;;;;AAQA,IAAa,IAAY,EAA6C,SAClE,EACI,YACA,mBACA,mBAAgB,IAChB,SACA,OACA,UACA,cAAW,IACX,UAAO,MACP,WAAQ,WACR,UACA,mBAAgB,SAChB,WAAQ,IACR,cACA,aACA,0BACA,iBAAc,UACd,gBACA,cAAc,GACd,mBAAmB,GACnB,cACA,YAEJ,GACF;CACE,IAAM,IAAW,EAAgC,KAAK,EAChD,IAAU,GAAO,EAEjB,IAAc,GACf,MAAkC;AAE/B,EADA,EAAS,UAAU,GACf,OAAO,KAAQ,aACf,EAAI,EAAK,GACF,MACP,EAAI,UAAU;IAGtB,CAAC,EAAI,CACR,EACK,EAAC,oBAAiB,gBAAa,sBAAmB,qBAAiB,EAAsC;EAC3G,QAAQ;EACR;EACA,UAAU;EACV,OAAO;EACV,CAAC;AAIF,SAAgB;AACZ,EAAI,EAAS,WAAW,EAAS,QAAQ,kBAAkB,MACvD,EAAS,QAAQ,gBAAgB;GAEvC;CAEF,SAAS,EAAa,GAA4C;AAG9D,EAFA,IAAW,EAAM,EAEb,KACA,IAAwB,GAAM;;CAItC,IAAM,IAAW,KAAS,CAAC,CAAC;AAE5B,QACI,kBAAC,OAAD;EAAK,WAAW,EAAG,YAAY,EAAU;EAAS;YAAlD,CACI,kBAAC,SAAD;GAAO,WAAW,EAAG,SAAS,GAAM,MAAkB,UAAU,cAAc,KAAY,WAAW;aAArG,CACI,kBAAC,QAAD;IACI,WAAW,EAAG,OAAO,SAAS,KAAS,KAAY,SAAS,EAAgB;IAC5E,eAAe;cAFnB;KAIK;KACD,kBAAC,SAAD;MACI,KAAK;MACL,MAAK;MACI;MACO;MACV;MACF;MACG;MACG;MACV,UAAU;MACV,YAAY,MAAU;AAClB,QAAI,EAAM,QAAQ,OAAO,EAAM,QAAQ,YACnC,EAAc,EAAM,cAAc,cAAwC;;MAGlF,WAAU;MACV,cAAY;MACZ,mBAAiB;MACjB,gBAAc,KAAY,KAAA;MAC1B,oBAAkB,IAAY,IAAU,KAAA;MAC1C,CAAA;KACF,kBAAC,QAAD;MAAM,WAAU;MAAa,eAAY;MAAS,CAAA;KAClD,kBAAC,QAAD,EAAM,WAAU,sBAAuB,CAAA;KACpC;OACN,KAAS,kBAAC,QAAD;IAAM,WAAW,EAAG,cAAc,KAAY,QAAQ;cAAG;IAAa,CAAA,CAC5E;MACP,KACG,kBAAC,QAAD;GAAM,IAAI;GAAS,WAAU;GAAc,MAAK;aAC3C;GACE,CAAA,CAET;;EAEZ"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./cn-DYFxgzi2.cjs`),t=require(`./useInteractionEffect-CtXlbjhC.cjs`);require(`./core-w629c4ND.cjs`);let n=require(`react`),r=require(`react/jsx-runtime`);var i=(0,n.forwardRef)(function({checked:i,defaultChecked:a,indeterminate:o=!1,name:s,id:c,value:l,disabled:u=!1,size:d=`md`,color:f=`primary`,label:p,labelPosition:m=`right`,error:h=!1,errorText:g,onChange:_,onIndeterminateChange:v,clickEffect:y=`ripple`,rippleColor:b,"aria-label":x,"aria-labelledby":S,className:C,style:w},T){let E=(0,n.useRef)(null),D=(0,n.useId)(),O=(0,n.useCallback)(e=>{E.current=e,typeof T==`function`?T(e):T&&(T.current=e)},[T]),{effectClassName:k,effectLayer:A,handlePointerDown:j,triggerEffect:M}=t.t({effect:y,disabled:u,centered:!0,color:b});(0,n.useEffect)(()=>{E.current&&E.current.indeterminate!==o&&(E.current.indeterminate=o)});function N(e){_?.(e),o&&v?.(!1)}let P=h||!!g;return(0,r.jsxs)(`div`,{className:e.t(`checkbox`,C),style:w,children:[(0,r.jsxs)(`label`,{className:e.t(`label`,d,m===`left`&&`label-left`,u&&`disabled`),children:[(0,r.jsxs)(`span`,{className:e.t(`box`,`color-${f}`,P&&`error`,k),onPointerDown:j,children:[A,(0,r.jsx)(`input`,{ref:O,type:`checkbox`,checked:i,defaultChecked:a,name:s,id:c,value:l,disabled:u,onChange:N,onKeyDown:e=>{(e.key===` `||e.key===`Enter`)&&M(e.currentTarget.parentElement)},className:`input`,"aria-label":x,"aria-labelledby":S,"aria-invalid":P||void 0,"aria-describedby":g?D:void 0}),(0,r.jsx)(`span`,{className:`check-mark`,"aria-hidden":`true`}),(0,r.jsx)(`span`,{className:`indeterminate-mark`})]}),p&&(0,r.jsx)(`span`,{className:e.t(`label-text`,P&&`error`),children:p})]}),g&&(0,r.jsx)(`span`,{id:D,className:`field-error`,role:`alert`,children:g})]})});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
2
+ //# sourceMappingURL=MCheckbox-DpKJpnFF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCheckbox-DpKJpnFF.cjs","names":[],"sources":["../src/components/controls/MCheckbox/MCheckbox.tsx"],"sourcesContent":["import {forwardRef, useCallback, useEffect, useId, useRef} from 'react'\nimport type * as React from 'react'\nimport type {MCheckboxProps} from './MCheckbox.types'\nimport {cn} from '../../../utils/cn'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport './MCheckbox.css'\n\n// Render a styled checkbox while keeping the native input for accessibility.\nexport const MCheckbox = forwardRef<HTMLInputElement, MCheckboxProps>(function MCheckbox(\n {\n checked,\n defaultChecked,\n indeterminate = false,\n name,\n id,\n value,\n disabled = false,\n size = 'md',\n color = 'primary',\n label,\n labelPosition = 'right',\n error = false,\n errorText,\n onChange,\n onIndeterminateChange,\n clickEffect = 'ripple',\n rippleColor,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n className,\n style,\n },\n ref\n) {\n const inputRef = useRef<HTMLInputElement | null>(null)\n const errorId = useId()\n // Keep a local handle for the indeterminate sync and still forward object or callback refs.\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n },\n [ref]\n )\n const {effectClassName, effectLayer, handlePointerDown, triggerEffect} = useInteractionEffect<HTMLSpanElement>({\n effect: clickEffect,\n disabled,\n centered: true,\n color: rippleColor,\n })\n\n // Keep the browser indeterminate flag in sync with the prop on every render: a click\n // clears the DOM flag, so re-applying only on prop changes let the two drift apart.\n useEffect(() => {\n if (inputRef.current && inputRef.current.indeterminate !== indeterminate) {\n inputRef.current.indeterminate = indeterminate\n }\n })\n\n function handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n onChange?.(event)\n // The click already cleared the native flag; tell a controlled parent to drop it too.\n if (indeterminate) {\n onIndeterminateChange?.(false)\n }\n }\n\n const hasError = error || !!errorText\n\n return (\n <div className={cn('checkbox', className)} style={style}>\n <label className={cn('label', size, labelPosition === 'left' && 'label-left', disabled && 'disabled')}>\n <span\n className={cn('box', `color-${color}`, hasError && 'error', effectClassName)}\n onPointerDown={handlePointerDown}\n >\n {effectLayer}\n <input\n ref={setInputRef}\n type=\"checkbox\"\n checked={checked}\n defaultChecked={defaultChecked}\n name={name}\n id={id}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n onKeyDown={(event) => {\n if (event.key === ' ' || event.key === 'Enter') {\n triggerEffect(event.currentTarget.parentElement as HTMLSpanElement | null)\n }\n }}\n className=\"input\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-invalid={hasError || undefined}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span className=\"check-mark\" aria-hidden=\"true\" />\n <span className=\"indeterminate-mark\" />\n </span>\n {label && <span className={cn('label-text', hasError && 'error')}>{label}</span>}\n </label>\n {errorText && (\n <span id={errorId} className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n </div>\n )\n})\n"],"mappings":"2KAQA,IAAa,GAAA,EAAA,EAAA,YAAyD,SAClE,CACI,UACA,iBACA,gBAAgB,GAChB,OACA,KACA,QACA,WAAW,GACX,OAAO,KACP,QAAQ,UACR,QACA,gBAAgB,QAChB,QAAQ,GACR,YACA,WACA,wBACA,cAAc,SACd,cACA,aAAc,EACd,kBAAmB,EACnB,YACA,SAEJ,EACF,CACE,IAAM,GAAA,EAAA,EAAA,QAA2C,KAAK,CAChD,GAAA,EAAA,EAAA,QAAiB,CAEjB,GAAA,EAAA,EAAA,aACD,GAAkC,CAC/B,EAAS,QAAU,EACf,OAAO,GAAQ,WACf,EAAI,EAAK,CACF,IACP,EAAI,QAAU,IAGtB,CAAC,EAAI,CACR,CACK,CAAC,kBAAiB,cAAa,oBAAmB,iBAAiB,EAAA,EAAsC,CAC3G,OAAQ,EACR,WACA,SAAU,GACV,MAAO,EACV,CAAC,EAIF,EAAA,EAAA,eAAgB,CACR,EAAS,SAAW,EAAS,QAAQ,gBAAkB,IACvD,EAAS,QAAQ,cAAgB,IAEvC,CAEF,SAAS,EAAa,EAA4C,CAC9D,IAAW,EAAM,CAEb,GACA,IAAwB,GAAM,CAItC,IAAM,EAAW,GAAS,CAAC,CAAC,EAE5B,OACI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,EAAG,WAAY,EAAU,CAAS,iBAAlD,EACI,EAAA,EAAA,MAAC,QAAD,CAAO,UAAW,EAAA,EAAG,QAAS,EAAM,IAAkB,QAAU,aAAc,GAAY,WAAW,UAArG,EACI,EAAA,EAAA,MAAC,OAAD,CACI,UAAW,EAAA,EAAG,MAAO,SAAS,IAAS,GAAY,QAAS,EAAgB,CAC5E,cAAe,WAFnB,CAIK,GACD,EAAA,EAAA,KAAC,QAAD,CACI,IAAK,EACL,KAAK,WACI,UACO,iBACV,OACF,KACG,QACG,WACV,SAAU,EACV,UAAY,GAAU,EACd,EAAM,MAAQ,KAAO,EAAM,MAAQ,UACnC,EAAc,EAAM,cAAc,cAAwC,EAGlF,UAAU,QACV,aAAY,EACZ,kBAAiB,EACjB,eAAc,GAAY,IAAA,GAC1B,mBAAkB,EAAY,EAAU,IAAA,GAC1C,CAAA,EACF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,aAAa,cAAY,OAAS,CAAA,EAClD,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qBAAuB,CAAA,CACpC,GACN,IAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,EAAG,aAAc,GAAY,QAAQ,UAAG,EAAa,CAAA,CAC5E,GACP,IACG,EAAA,EAAA,KAAC,OAAD,CAAM,GAAI,EAAS,UAAU,cAAc,KAAK,iBAC3C,EACE,CAAA,CAET,IAEZ"}