@banzamel/mineralui 2.4.2 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/README.md +1 -1
  2. package/dist/{MAvatar-Capz5Gbc.cjs → MAvatar-DHNB3829.cjs} +2 -2
  3. package/dist/{MAvatar-Capz5Gbc.cjs.map → MAvatar-DHNB3829.cjs.map} +1 -1
  4. package/dist/{MAvatar-DtJCj3dD.js → MAvatar-GeRL-CNO.js} +2 -2
  5. package/dist/{MAvatar-DtJCj3dD.js.map → MAvatar-GeRL-CNO.js.map} +1 -1
  6. package/dist/{MButton-C1pnL4_j.js → MButton-CEwo8lUB.js} +1 -1
  7. package/dist/{MButton-C1pnL4_j.js.map → MButton-CEwo8lUB.js.map} +1 -1
  8. package/dist/{MButton-sTKnano6.cjs → MButton-CnAr77Za.cjs} +2 -2
  9. package/dist/{MButton-sTKnano6.cjs.map → MButton-CnAr77Za.cjs.map} +1 -1
  10. package/dist/{MButtonGroup-BkNf7fzo.js → MButtonGroup-BEJxXZ8u.js} +2 -2
  11. package/dist/{MButtonGroup-BkNf7fzo.js.map → MButtonGroup-BEJxXZ8u.js.map} +1 -1
  12. package/dist/{MButtonGroup-iPv14c0V.cjs → MButtonGroup-DO1Tq3Za.cjs} +2 -2
  13. package/dist/{MButtonGroup-iPv14c0V.cjs.map → MButtonGroup-DO1Tq3Za.cjs.map} +1 -1
  14. package/dist/{MCard-azpp4YVD.js → MCard-BqSkGAgf.js} +3 -3
  15. package/dist/{MCard-azpp4YVD.js.map → MCard-BqSkGAgf.js.map} +1 -1
  16. package/dist/{MCard-DK-_FkpE.cjs → MCard-P8OoswWM.cjs} +2 -2
  17. package/dist/{MCard-DK-_FkpE.cjs.map → MCard-P8OoswWM.cjs.map} +1 -1
  18. package/dist/{MCheckbox-B7SpcD4H.js → MCheckbox-BxFBADcE.js} +1 -1
  19. package/dist/{MCheckbox-B7SpcD4H.js.map → MCheckbox-BxFBADcE.js.map} +1 -1
  20. package/dist/{MCheckbox-CIX7wp41.cjs → MCheckbox-DozwF2ai.cjs} +2 -2
  21. package/dist/{MCheckbox-CIX7wp41.cjs.map → MCheckbox-DozwF2ai.cjs.map} +1 -1
  22. package/dist/{MConflictIllustration-CZ3Md38Z.cjs → MConflictIllustration-2QL-BHYv.cjs} +2 -2
  23. package/dist/{MConflictIllustration-CZ3Md38Z.cjs.map → MConflictIllustration-2QL-BHYv.cjs.map} +1 -1
  24. package/dist/{MDetailList-Ce7KzUKC.cjs → MDetailList-CThQvoyf.cjs} +2 -2
  25. package/dist/{MDetailList-Ce7KzUKC.cjs.map → MDetailList-CThQvoyf.cjs.map} +1 -1
  26. package/dist/{MDetailList-fDhVyhm7.js → MDetailList-Cx9H81xT.js} +5 -5
  27. package/dist/{MDetailList-fDhVyhm7.js.map → MDetailList-Cx9H81xT.js.map} +1 -1
  28. package/dist/{MDropdownMenu-B_QWQhxy.cjs → MDropdownMenu-DnKcCyW6.cjs} +2 -2
  29. package/dist/{MDropdownMenu-B_QWQhxy.cjs.map → MDropdownMenu-DnKcCyW6.cjs.map} +1 -1
  30. package/dist/{MDropdownMenu-C4CuKMRZ.js → MDropdownMenu-DxbKN7Ui.js} +2 -2
  31. package/dist/{MDropdownMenu-C4CuKMRZ.js.map → MDropdownMenu-DxbKN7Ui.js.map} +1 -1
  32. package/dist/{MGrid-fTx6wFq_.cjs → MGrid-BkRSGN2t.cjs} +2 -2
  33. package/dist/{MGrid-fTx6wFq_.cjs.map → MGrid-BkRSGN2t.cjs.map} +1 -1
  34. package/dist/{MGrid-CYL3cbUI.js → MGrid-CIz-2i6X.js} +2 -2
  35. package/dist/{MGrid-CYL3cbUI.js.map → MGrid-CIz-2i6X.js.map} +1 -1
  36. package/dist/{MHeading-KDSpnCof.cjs → MHeading-AYQ8_GFP.cjs} +2 -2
  37. package/dist/{MHeading-KDSpnCof.cjs.map → MHeading-AYQ8_GFP.cjs.map} +1 -1
  38. package/dist/{MHeading-B7KgSP4T.js → MHeading-DcGxUMwC.js} +2 -2
  39. package/dist/{MHeading-B7KgSP4T.js.map → MHeading-DcGxUMwC.js.map} +1 -1
  40. package/dist/{MI18nProvider-DXRbB0VY.cjs → MI18nProvider-CqAwaswx.cjs} +2 -2
  41. package/dist/{MI18nProvider-DXRbB0VY.cjs.map → MI18nProvider-CqAwaswx.cjs.map} +1 -1
  42. package/dist/MInput-BYj2BdUe.cjs +2 -0
  43. package/dist/MInput-BYj2BdUe.cjs.map +1 -0
  44. package/dist/{MInput-C8ObGzQk.js → MInput-nodE-CZF.js} +37 -36
  45. package/dist/MInput-nodE-CZF.js.map +1 -0
  46. package/dist/MInputCVC-9XWryaTz.cjs +2 -0
  47. package/dist/MInputCVC-9XWryaTz.cjs.map +1 -0
  48. package/dist/MInputCVC-CrDTaUXm.js +321 -0
  49. package/dist/MInputCVC-CrDTaUXm.js.map +1 -0
  50. package/dist/{MInputSearch-BM8gLlJ1.js → MInputSearch-BMgCHjFk.js} +2 -2
  51. package/dist/{MInputSearch-BM8gLlJ1.js.map → MInputSearch-BMgCHjFk.js.map} +1 -1
  52. package/dist/{MInputSearch-BZDnbFB4.cjs → MInputSearch-BiVI1jNc.cjs} +2 -2
  53. package/dist/{MInputSearch-BZDnbFB4.cjs.map → MInputSearch-BiVI1jNc.cjs.map} +1 -1
  54. package/dist/{MKbd-DqMnZ7Iv.cjs → MKbd-BR1GX5oK.cjs} +2 -2
  55. package/dist/{MKbd-DqMnZ7Iv.cjs.map → MKbd-BR1GX5oK.cjs.map} +1 -1
  56. package/dist/{MKbd-v6-tJ9sP.js → MKbd-COb7oh_k.js} +1 -1
  57. package/dist/{MKbd-v6-tJ9sP.js.map → MKbd-COb7oh_k.js.map} +1 -1
  58. package/dist/{MLink-Bd8fLH1N.js → MLink-CAl6N6_z.js} +1 -1
  59. package/dist/{MLink-Bd8fLH1N.js.map → MLink-CAl6N6_z.js.map} +1 -1
  60. package/dist/{MLink-U24G6KJj.cjs → MLink-Dk_ReE6i.cjs} +2 -2
  61. package/dist/{MLink-U24G6KJj.cjs.map → MLink-Dk_ReE6i.cjs.map} +1 -1
  62. package/dist/{MLoader-CnvWqFtA.js → MLoader-CYp0OJU_.js} +4 -4
  63. package/dist/{MLoader-CnvWqFtA.js.map → MLoader-CYp0OJU_.js.map} +1 -1
  64. package/dist/{MLoader-CvFIvytw.cjs → MLoader-DvmFle31.cjs} +2 -2
  65. package/dist/{MLoader-CvFIvytw.cjs.map → MLoader-DvmFle31.cjs.map} +1 -1
  66. package/dist/{MPagination-BkvOEZpp.js → MPagination-E7IixIeo.js} +2 -2
  67. package/dist/{MPagination-BkvOEZpp.js.map → MPagination-E7IixIeo.js.map} +1 -1
  68. package/dist/{MPagination-DgQta29Q.cjs → MPagination-reDU9xTW.cjs} +2 -2
  69. package/dist/{MPagination-DgQta29Q.cjs.map → MPagination-reDU9xTW.cjs.map} +1 -1
  70. package/dist/{MPopover-Dd-GIBU6.js → MPopover-8gYD3Ogq.js} +37 -74
  71. package/dist/MPopover-8gYD3Ogq.js.map +1 -0
  72. package/dist/MPopover-B3npyAkL.cjs +2 -0
  73. package/dist/MPopover-B3npyAkL.cjs.map +1 -0
  74. package/dist/{MPortal-DUSIuINN.cjs → MPortal-CuBXhhl_.cjs} +2 -2
  75. package/dist/{MPortal-DUSIuINN.cjs.map → MPortal-CuBXhhl_.cjs.map} +1 -1
  76. package/dist/{MSimpleGrid-BzlIitcJ.cjs → MSimpleGrid-BchGYPMi.cjs} +2 -2
  77. package/dist/{MSimpleGrid-BzlIitcJ.cjs.map → MSimpleGrid-BchGYPMi.cjs.map} +1 -1
  78. package/dist/{MSimpleGrid-BWKurW6H.js → MSimpleGrid-Ui8cI0ho.js} +1 -1
  79. package/dist/{MSimpleGrid-BWKurW6H.js.map → MSimpleGrid-Ui8cI0ho.js.map} +1 -1
  80. package/dist/{MSkeleton-BoFpowFU.cjs → MSkeleton-DPa_G_2X.cjs} +2 -2
  81. package/dist/{MSkeleton-BoFpowFU.cjs.map → MSkeleton-DPa_G_2X.cjs.map} +1 -1
  82. package/dist/{MSkeleton-C5uD4Axo.js → MSkeleton-Dhu-loDO.js} +1 -1
  83. package/dist/{MSkeleton-C5uD4Axo.js.map → MSkeleton-Dhu-loDO.js.map} +1 -1
  84. package/dist/{MSlider-CqrusKJQ.js → MSlider-BRjhyBSc.js} +1 -1
  85. package/dist/{MSlider-CqrusKJQ.js.map → MSlider-BRjhyBSc.js.map} +1 -1
  86. package/dist/{MSlider-BTDBqF8t.cjs → MSlider-w5214a-W.cjs} +2 -2
  87. package/dist/{MSlider-BTDBqF8t.cjs.map → MSlider-w5214a-W.cjs.map} +1 -1
  88. package/dist/{MStack-CSCw6to2.js → MStack-Dt-rWvg3.js} +2 -2
  89. package/dist/{MStack-CSCw6to2.js.map → MStack-Dt-rWvg3.js.map} +1 -1
  90. package/dist/{MStack-B3Ldqsc-.cjs → MStack-nc6Y_9K3.cjs} +2 -2
  91. package/dist/{MStack-B3Ldqsc-.cjs.map → MStack-nc6Y_9K3.cjs.map} +1 -1
  92. package/dist/{MSubText-C-N15d4Z.js → MSubText-B0tXiuAp.js} +2 -2
  93. package/dist/{MSubText-C-N15d4Z.js.map → MSubText-B0tXiuAp.js.map} +1 -1
  94. package/dist/{MSubText-47PsgE8T.cjs → MSubText-C6v6Exa2.cjs} +2 -2
  95. package/dist/{MSubText-47PsgE8T.cjs.map → MSubText-C6v6Exa2.cjs.map} +1 -1
  96. package/dist/{MSurface-QYEygc_0.cjs → MSurface-BjE-mL1L.cjs} +2 -2
  97. package/dist/{MSurface-QYEygc_0.cjs.map → MSurface-BjE-mL1L.cjs.map} +1 -1
  98. package/dist/{MSurface-B-sjyczH.js → MSurface-CpDJCdb5.js} +2 -2
  99. package/dist/{MSurface-B-sjyczH.js.map → MSurface-CpDJCdb5.js.map} +1 -1
  100. package/dist/MTag-BgOxiahL.cjs +2 -0
  101. package/dist/MTag-BgOxiahL.cjs.map +1 -0
  102. package/dist/MTag-cw3cIGHX.js +41 -0
  103. package/dist/MTag-cw3cIGHX.js.map +1 -0
  104. package/dist/{MText-Dni707tS.cjs → MText-BDI4mdw8.cjs} +2 -2
  105. package/dist/{MText-Dni707tS.cjs.map → MText-BDI4mdw8.cjs.map} +1 -1
  106. package/dist/{MText-CL-LPcXi.js → MText-DhbAjtUE.js} +2 -2
  107. package/dist/{MText-CL-LPcXi.js.map → MText-DhbAjtUE.js.map} +1 -1
  108. package/dist/MTooltip-BAgHlv5I.cjs +2 -0
  109. package/dist/MTooltip-BAgHlv5I.cjs.map +1 -0
  110. package/dist/MTooltip-CJxvlkOX.js +92 -0
  111. package/dist/MTooltip-CJxvlkOX.js.map +1 -0
  112. package/dist/{MTreeView-B1J7uqd1.js → MTreeView-DsBnYQMT.js} +2 -2
  113. package/dist/{MTreeView-B1J7uqd1.js.map → MTreeView-DsBnYQMT.js.map} +1 -1
  114. package/dist/{MTreeView-VYp0eErQ.cjs → MTreeView-LiJ5o-zy.cjs} +2 -2
  115. package/dist/{MTreeView-VYp0eErQ.cjs.map → MTreeView-LiJ5o-zy.cjs.map} +1 -1
  116. package/dist/{arduino-BdpdaLwK.cjs → arduino-C1gw-z1N.cjs} +1 -1
  117. package/dist/{arduino-BdpdaLwK.cjs.map → arduino-C1gw-z1N.cjs.map} +1 -1
  118. package/dist/{arduino-DDDlP9Yt.js → arduino-CcVvzDWF.js} +1 -1
  119. package/dist/{arduino-DDDlP9Yt.js.map → arduino-CcVvzDWF.js.map} +1 -1
  120. package/dist/{bash-D8WbAmuA.js → bash-DkMiO80l.js} +1 -1
  121. package/dist/{bash-D8WbAmuA.js.map → bash-DkMiO80l.js.map} +1 -1
  122. package/dist/{bash-eOUFh3S1.cjs → bash-wzZkpJC-.cjs} +1 -1
  123. package/dist/{bash-eOUFh3S1.cjs.map → bash-wzZkpJC-.cjs.map} +1 -1
  124. package/dist/{c-Bur7Mn-u.cjs → c-BSPjDa0P.cjs} +1 -1
  125. package/dist/{c-Bur7Mn-u.cjs.map → c-BSPjDa0P.cjs.map} +1 -1
  126. package/dist/{c-CTKNfUJI.js → c-DtlFV5Pa.js} +1 -1
  127. package/dist/{c-CTKNfUJI.js.map → c-DtlFV5Pa.js.map} +1 -1
  128. package/dist/{calendar-bzeZRst9.js → calendar-Bq6NMNnS.js} +6 -6
  129. package/dist/{calendar-bzeZRst9.js.map → calendar-Bq6NMNnS.js.map} +1 -1
  130. package/dist/{calendar-P7MwKfWS.cjs → calendar-C57BH8Nd.cjs} +2 -2
  131. package/dist/{calendar-P7MwKfWS.cjs.map → calendar-C57BH8Nd.cjs.map} +1 -1
  132. package/dist/calendar.cjs +1 -1
  133. package/dist/calendar.js +1 -1
  134. package/dist/{calendarDates-CYkJqcnp.js → calendarDates-M_Dawj0j.js} +1 -1
  135. package/dist/{calendarDates-CYkJqcnp.js.map → calendarDates-M_Dawj0j.js.map} +1 -1
  136. package/dist/{calendarDates-AnlGcvZM.cjs → calendarDates-qm047RW2.cjs} +1 -1
  137. package/dist/{calendarDates-AnlGcvZM.cjs.map → calendarDates-qm047RW2.cjs.map} +1 -1
  138. package/dist/{cards-CFDJsdxR.js → cards-D4xJVd4q.js} +278 -277
  139. package/dist/cards-D4xJVd4q.js.map +1 -0
  140. package/dist/cards-Du6dbZSQ.cjs +2 -0
  141. package/dist/cards-Du6dbZSQ.cjs.map +1 -0
  142. package/dist/cards.cjs +1 -1
  143. package/dist/cards.js +2 -2
  144. package/dist/components/primitives/MPopover/popoverStack.d.ts +2 -0
  145. package/dist/{controls-BKAhqjNM.js → controls-BKoc_yel.js} +113 -112
  146. package/dist/controls-BKoc_yel.js.map +1 -0
  147. package/dist/controls-Ck-PMt__.cjs +2 -0
  148. package/dist/controls-Ck-PMt__.cjs.map +1 -0
  149. package/dist/controls.cjs +1 -1
  150. package/dist/controls.js +5 -5
  151. package/dist/{core-D5-SQcs8.js → core-B8VC-Umz.js} +1 -1
  152. package/dist/{core-D5-SQcs8.js.map → core-B8VC-Umz.js.map} +1 -1
  153. package/dist/{core-D66c1_Wo.cjs → core-w629c4ND.cjs} +1 -1
  154. package/dist/{core-D66c1_Wo.cjs.map → core-w629c4ND.cjs.map} +1 -1
  155. package/dist/{cpp-DAzz2TpY.js → cpp-BraS2arf.js} +1 -1
  156. package/dist/{cpp-DAzz2TpY.js.map → cpp-BraS2arf.js.map} +1 -1
  157. package/dist/{cpp-BMULAf-B.cjs → cpp-LIcuHkFj.cjs} +1 -1
  158. package/dist/{cpp-BMULAf-B.cjs.map → cpp-LIcuHkFj.cjs.map} +1 -1
  159. package/dist/{css-9M03GzKO.cjs → css-D6fGBtGV.cjs} +1 -1
  160. package/dist/{css-9M03GzKO.cjs.map → css-D6fGBtGV.cjs.map} +1 -1
  161. package/dist/{css-EGOXTWIl.js → css-Dy8pFAWa.js} +1 -1
  162. package/dist/{css-EGOXTWIl.js.map → css-Dy8pFAWa.js.map} +1 -1
  163. package/dist/{data-CgLutFxU.js → data-CdQximqm.js} +38 -38
  164. package/dist/{data-CgLutFxU.js.map → data-CdQximqm.js.map} +1 -1
  165. package/dist/{data-DFrkJTlF.cjs → data-PS4ygCyj.cjs} +2 -2
  166. package/dist/{data-DFrkJTlF.cjs.map → data-PS4ygCyj.cjs.map} +1 -1
  167. package/dist/data.cjs +1 -1
  168. package/dist/data.js +2 -2
  169. package/dist/{display-BnkHKW1n.js → display-YC1fVpXA.js} +19 -19
  170. package/dist/{display-BnkHKW1n.js.map → display-YC1fVpXA.js.map} +1 -1
  171. package/dist/{display--E7rI0tk.cjs → display-slIo1bQI.cjs} +2 -2
  172. package/dist/{display--E7rI0tk.cjs.map → display-slIo1bQI.cjs.map} +1 -1
  173. package/dist/display.cjs +1 -1
  174. package/dist/display.js +2 -2
  175. package/dist/dropdowns-DFbUoZ8Q.cjs +2 -0
  176. package/dist/dropdowns-DFbUoZ8Q.cjs.map +1 -0
  177. package/dist/dropdowns-nW3MY5XG.js +1715 -0
  178. package/dist/dropdowns-nW3MY5XG.js.map +1 -0
  179. package/dist/dropdowns.cjs +1 -1
  180. package/dist/dropdowns.js +1 -1
  181. package/dist/feedback-6MNb2Xyk.cjs +2 -0
  182. package/dist/feedback-6MNb2Xyk.cjs.map +1 -0
  183. package/dist/feedback-CPwJaQHY.js +259 -0
  184. package/dist/feedback-CPwJaQHY.js.map +1 -0
  185. package/dist/feedback.cjs +1 -1
  186. package/dist/feedback.js +5 -5
  187. package/dist/form-CMsZo6Dm.cjs +2 -0
  188. package/dist/form-CMsZo6Dm.cjs.map +1 -0
  189. package/dist/{form-CAFcvmUS.js → form-WU6DcQGD.js} +52 -55
  190. package/dist/form-WU6DcQGD.js.map +1 -0
  191. package/dist/form.cjs +1 -1
  192. package/dist/form.js +1 -1
  193. package/dist/frameworkTexts-BSXUtXOp.cjs +2 -0
  194. package/dist/{frameworkTexts-iDXhcW6k.cjs.map → frameworkTexts-BSXUtXOp.cjs.map} +1 -1
  195. package/dist/frameworkTexts-DP5RUl19.js +131 -0
  196. package/dist/{frameworkTexts-DH0Xp-Vx.js.map → frameworkTexts-DP5RUl19.js.map} +1 -1
  197. package/dist/i18n/frameworkTexts.d.ts +61 -0
  198. package/dist/i18n.cjs +1 -1
  199. package/dist/{icons-D_NB67he.cjs → icons-D3n9-919.cjs} +2 -2
  200. package/dist/{icons-D_NB67he.cjs.map → icons-D3n9-919.cjs.map} +1 -1
  201. package/dist/icons.cjs +1 -1
  202. package/dist/illustrations.cjs +1 -1
  203. package/dist/index.cjs +1 -1
  204. package/dist/index.js +40 -40
  205. package/dist/{inputs-B1LCddA4.js → inputs-B7rGMLMr.js} +399 -398
  206. package/dist/inputs-B7rGMLMr.js.map +1 -0
  207. package/dist/inputs-BiN62hgH.cjs +2 -0
  208. package/dist/inputs-BiN62hgH.cjs.map +1 -0
  209. package/dist/inputs.cjs +1 -1
  210. package/dist/inputs.js +4 -4
  211. package/dist/{javascript-CHSg4NGc.js → javascript-CqKLBRqa.js} +1 -1
  212. package/dist/{javascript-CHSg4NGc.js.map → javascript-CqKLBRqa.js.map} +1 -1
  213. package/dist/{javascript-CastOQF5.cjs → javascript-Oy5hkezl.cjs} +1 -1
  214. package/dist/{javascript-CastOQF5.cjs.map → javascript-Oy5hkezl.cjs.map} +1 -1
  215. package/dist/{json-DCkJ-m-p.cjs → json-BP8eqPWc.cjs} +1 -1
  216. package/dist/{json-DCkJ-m-p.cjs.map → json-BP8eqPWc.cjs.map} +1 -1
  217. package/dist/{json-Bejy9Rlg.js → json-DJkyYaPe.js} +1 -1
  218. package/dist/{json-Bejy9Rlg.js.map → json-DJkyYaPe.js.map} +1 -1
  219. package/dist/layout-BMggJ_qO.cjs +2 -0
  220. package/dist/layout-BMggJ_qO.cjs.map +1 -0
  221. package/dist/{layout-DsE4zfpg.js → layout-DBYHyCTr.js} +269 -268
  222. package/dist/layout-DBYHyCTr.js.map +1 -0
  223. package/dist/layout.cjs +1 -1
  224. package/dist/layout.js +6 -6
  225. package/dist/{layoutProps-B8y2XwHy.cjs → layoutProps-Ck4VtGm9.cjs} +1 -1
  226. package/dist/{layoutProps-B8y2XwHy.cjs.map → layoutProps-Ck4VtGm9.cjs.map} +1 -1
  227. package/dist/{layoutProps-CE5-ghKw.js → layoutProps-Cl6d1KmH.js} +1 -1
  228. package/dist/{layoutProps-CE5-ghKw.js.map → layoutProps-Cl6d1KmH.js.map} +1 -1
  229. package/dist/{licensing-DGIdtfNg.cjs → licensing-Be3g-PJt.cjs} +2 -2
  230. package/dist/{licensing-DGIdtfNg.cjs.map → licensing-Be3g-PJt.cjs.map} +1 -1
  231. package/dist/{locale-DRRl_s5-.cjs → locale-C08q7FjE.cjs} +2 -2
  232. package/dist/{locale-DRRl_s5-.cjs.map → locale-C08q7FjE.cjs.map} +1 -1
  233. package/dist/{locale-CS1-IY_I.js → locale-CjJpk9GN.js} +1 -1
  234. package/dist/{locale-CS1-IY_I.js.map → locale-CjJpk9GN.js.map} +1 -1
  235. package/dist/media-BPzMgzqE.js +405 -0
  236. package/dist/media-BPzMgzqE.js.map +1 -0
  237. package/dist/media-D63hxCAJ.cjs +2 -0
  238. package/dist/media-D63hxCAJ.cjs.map +1 -0
  239. package/dist/media.cjs +1 -1
  240. package/dist/media.js +2 -2
  241. package/dist/overlays-CCeYD6hT.js +555 -0
  242. package/dist/overlays-CCeYD6hT.js.map +1 -0
  243. package/dist/overlays-CsRN5OG8.cjs +2 -0
  244. package/dist/overlays-CsRN5OG8.cjs.map +1 -0
  245. package/dist/overlays.cjs +1 -1
  246. package/dist/overlays.js +3 -3
  247. package/dist/{php-BdVXegqn.cjs → php-Cwjc-ZYq.cjs} +1 -1
  248. package/dist/{php-BdVXegqn.cjs.map → php-Cwjc-ZYq.cjs.map} +1 -1
  249. package/dist/{php-Cb_S1hXT.js → php-Db8PWzaX.js} +1 -1
  250. package/dist/{php-Cb_S1hXT.js.map → php-Db8PWzaX.js.map} +1 -1
  251. package/dist/popoverStack--0r2oJCD.js +44 -0
  252. package/dist/popoverStack--0r2oJCD.js.map +1 -0
  253. package/dist/popoverStack-BmMk-VZJ.cjs +2 -0
  254. package/dist/popoverStack-BmMk-VZJ.cjs.map +1 -0
  255. package/dist/primitives.cjs +1 -1
  256. package/dist/primitives.js +1 -1
  257. package/dist/style-runtime.cjs +1 -1
  258. package/dist/style-runtime.js +1 -1
  259. package/dist/styles.css +1 -1
  260. package/dist/{theme-DgaM4CjM.cjs → theme-CJuqObWL.cjs} +2 -2
  261. package/dist/{theme-DgaM4CjM.cjs.map → theme-CJuqObWL.cjs.map} +1 -1
  262. package/dist/theme.cjs +1 -1
  263. package/dist/{typescript-CcGBfzlS.cjs → typescript-QKlfKtex.cjs} +1 -1
  264. package/dist/{typescript-CcGBfzlS.cjs.map → typescript-QKlfKtex.cjs.map} +1 -1
  265. package/dist/{typescript-0VHxrxf2.js → typescript-chdf_txx.js} +1 -1
  266. package/dist/{typescript-0VHxrxf2.js.map → typescript-chdf_txx.js.map} +1 -1
  267. package/dist/{typography-C4_O8len.cjs → typography-4v01oNWx.cjs} +2 -2
  268. package/dist/{typography-C4_O8len.cjs.map → typography-4v01oNWx.cjs.map} +1 -1
  269. package/dist/{typography-CAW17MDj.js → typography-C806GYT4.js} +2 -2
  270. package/dist/{typography-CAW17MDj.js.map → typography-C806GYT4.js.map} +1 -1
  271. package/dist/typography.cjs +1 -1
  272. package/dist/typography.js +6 -6
  273. package/dist/{useGhostText-Dlemg1vw.cjs → useGhostText-mibV4s1-.cjs} +2 -2
  274. package/dist/{useGhostText-Dlemg1vw.cjs.map → useGhostText-mibV4s1-.cjs.map} +1 -1
  275. package/dist/{useInteractionEffect-CFwDX5UF.cjs → useInteractionEffect-CtXlbjhC.cjs} +2 -2
  276. package/dist/{useInteractionEffect-CFwDX5UF.cjs.map → useInteractionEffect-CtXlbjhC.cjs.map} +1 -1
  277. package/dist/{useKeyboardNav-Bm-dxVq-.cjs → useKeyboardNav-CCUoRMgm.cjs} +2 -2
  278. package/dist/{useKeyboardNav-Bm-dxVq-.cjs.map → useKeyboardNav-CCUoRMgm.cjs.map} +1 -1
  279. package/dist/useModalLayer-Bf4TcEz-.js +58 -0
  280. package/dist/useModalLayer-Bf4TcEz-.js.map +1 -0
  281. package/dist/useModalLayer-DxYhhgRO.cjs +2 -0
  282. package/dist/useModalLayer-DxYhhgRO.cjs.map +1 -0
  283. package/dist/utils/useModalLayer.d.ts +10 -0
  284. package/dist/utils.cjs +1 -1
  285. package/dist/{xml-Dbm3mobK.cjs → xml-DEtyywwU.cjs} +1 -1
  286. package/dist/{xml-Dbm3mobK.cjs.map → xml-DEtyywwU.cjs.map} +1 -1
  287. package/dist/{xml-8GjNy8SM.js → xml-DnydRpfh.js} +1 -1
  288. package/dist/{xml-8GjNy8SM.js.map → xml-DnydRpfh.js.map} +1 -1
  289. package/package.json +1 -1
  290. package/dist/MInput-C8ObGzQk.js.map +0 -1
  291. package/dist/MInput-CGl2Q-rM.cjs +0 -2
  292. package/dist/MInput-CGl2Q-rM.cjs.map +0 -1
  293. package/dist/MInputCVC-Blv5PeyS.js +0 -320
  294. package/dist/MInputCVC-Blv5PeyS.js.map +0 -1
  295. package/dist/MInputCVC-lAFKTV6y.cjs +0 -2
  296. package/dist/MInputCVC-lAFKTV6y.cjs.map +0 -1
  297. package/dist/MPopover-C-e1CoV0.cjs +0 -2
  298. package/dist/MPopover-C-e1CoV0.cjs.map +0 -1
  299. package/dist/MPopover-Dd-GIBU6.js.map +0 -1
  300. package/dist/MTag-BjV-dXkk.cjs +0 -2
  301. package/dist/MTag-BjV-dXkk.cjs.map +0 -1
  302. package/dist/MTag-D9q6faIk.js +0 -39
  303. package/dist/MTag-D9q6faIk.js.map +0 -1
  304. package/dist/MTooltip-ChvuN4Ow.cjs +0 -2
  305. package/dist/MTooltip-ChvuN4Ow.cjs.map +0 -1
  306. package/dist/MTooltip-H3we0a7w.js +0 -57
  307. package/dist/MTooltip-H3we0a7w.js.map +0 -1
  308. package/dist/cards-CFDJsdxR.js.map +0 -1
  309. package/dist/cards-DeA7I2KC.cjs +0 -2
  310. package/dist/cards-DeA7I2KC.cjs.map +0 -1
  311. package/dist/controls-BKAhqjNM.js.map +0 -1
  312. package/dist/controls-KK-TyUTT.cjs +0 -2
  313. package/dist/controls-KK-TyUTT.cjs.map +0 -1
  314. package/dist/dropdowns-DGYg9zIh.cjs +0 -2
  315. package/dist/dropdowns-DGYg9zIh.cjs.map +0 -1
  316. package/dist/dropdowns-Dq-xAplH.js +0 -1698
  317. package/dist/dropdowns-Dq-xAplH.js.map +0 -1
  318. package/dist/feedback-CA77ShtB.cjs +0 -2
  319. package/dist/feedback-CA77ShtB.cjs.map +0 -1
  320. package/dist/feedback-CCwbdNZu.js +0 -255
  321. package/dist/feedback-CCwbdNZu.js.map +0 -1
  322. package/dist/form-CAFcvmUS.js.map +0 -1
  323. package/dist/form-DpfzLUOn.cjs +0 -2
  324. package/dist/form-DpfzLUOn.cjs.map +0 -1
  325. package/dist/frameworkTexts-DH0Xp-Vx.js +0 -78
  326. package/dist/frameworkTexts-iDXhcW6k.cjs +0 -2
  327. package/dist/inputs-B1LCddA4.js.map +0 -1
  328. package/dist/inputs-Clenc4Rm.cjs +0 -2
  329. package/dist/inputs-Clenc4Rm.cjs.map +0 -1
  330. package/dist/layout-CNoZdeXw.cjs +0 -2
  331. package/dist/layout-CNoZdeXw.cjs.map +0 -1
  332. package/dist/layout-DsE4zfpg.js.map +0 -1
  333. package/dist/media-DRTBXDnn.cjs +0 -2
  334. package/dist/media-DRTBXDnn.cjs.map +0 -1
  335. package/dist/media-vOQOIYFD.js +0 -402
  336. package/dist/media-vOQOIYFD.js.map +0 -1
  337. package/dist/overlays-BKk_ZXue.js +0 -568
  338. package/dist/overlays-BKk_ZXue.js.map +0 -1
  339. package/dist/overlays-Qbp4d596.cjs +0 -2
  340. package/dist/overlays-Qbp4d596.cjs.map +0 -1
@@ -1,2 +1,2 @@
1
- require(`./core-D66c1_Wo.cjs`);let e=require(`react`),t=require(`react/jsx-runtime`);var n=`mineralui-locale`;function r(e){try{return localStorage.getItem(n)??e}catch{return e}}function i(e,t){return t.split(`.`).reduce((e,t)=>typeof e==`object`&&e?e[t]:void 0,e)}var a=(0,e.createContext)(null);function o({locales:o,defaultLocale:s,persist:c=!0,children:l}){let u=(0,e.useMemo)(()=>Object.keys(o),[o]),d=s??u[0]??`en`,[f,p]=(0,e.useState)(()=>{if(c){let e=r(d);if(e in o)return e}return d}),m=(0,e.useCallback)(e=>{if(p(e),c)try{localStorage.setItem(n,e)}catch{}},[c]),h=(0,e.useCallback)(()=>{let e=u[(u.indexOf(f)+1)%u.length];m(e)},[u,f,m]);(0,e.useEffect)(()=>{document.documentElement.lang=f},[f]);let g=o[f]??o[d]??{},_=(0,e.useCallback)((e,t)=>{let n=i(g,e);if(typeof n==`string`)return n;let r=typeof g==`object`&&g&&typeof g.docsTranslations==`object`?g.docsTranslations[e]:void 0;return typeof r==`string`?r:t??e},[g]),v=(0,e.useMemo)(()=>({locale:f,setLocale:m,toggleLocale:h,dict:g,t:_}),[f,m,h,g,_]);return(0,t.jsx)(a.Provider,{value:v,children:l})}function s(){let t=(0,e.useContext)(a);if(!t)throw Error(`useMI18n must be used within MI18nProvider`);return t}function c(){return(0,e.useContext)(a)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
2
- //# sourceMappingURL=MI18nProvider-DXRbB0VY.cjs.map
1
+ require(`./core-w629c4ND.cjs`);let e=require(`react`),t=require(`react/jsx-runtime`);var n=`mineralui-locale`;function r(e){try{return localStorage.getItem(n)??e}catch{return e}}function i(e,t){return t.split(`.`).reduce((e,t)=>typeof e==`object`&&e?e[t]:void 0,e)}var a=(0,e.createContext)(null);function o({locales:o,defaultLocale:s,persist:c=!0,children:l}){let u=(0,e.useMemo)(()=>Object.keys(o),[o]),d=s??u[0]??`en`,[f,p]=(0,e.useState)(()=>{if(c){let e=r(d);if(e in o)return e}return d}),m=(0,e.useCallback)(e=>{if(p(e),c)try{localStorage.setItem(n,e)}catch{}},[c]),h=(0,e.useCallback)(()=>{let e=u[(u.indexOf(f)+1)%u.length];m(e)},[u,f,m]);(0,e.useEffect)(()=>{document.documentElement.lang=f},[f]);let g=o[f]??o[d]??{},_=(0,e.useCallback)((e,t)=>{let n=i(g,e);if(typeof n==`string`)return n;let r=typeof g==`object`&&g&&typeof g.docsTranslations==`object`?g.docsTranslations[e]:void 0;return typeof r==`string`?r:t??e},[g]),v=(0,e.useMemo)(()=>({locale:f,setLocale:m,toggleLocale:h,dict:g,t:_}),[f,m,h,g,_]);return(0,t.jsx)(a.Provider,{value:v,children:l})}function s(){let t=(0,e.useContext)(a);if(!t)throw Error(`useMI18n must be used within MI18nProvider`);return t}function c(){return(0,e.useContext)(a)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
2
+ //# sourceMappingURL=MI18nProvider-CqAwaswx.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MI18nProvider-DXRbB0VY.cjs","names":[],"sources":["../src/i18n/MI18nProvider.tsx"],"sourcesContent":["import {createContext, useCallback, useContext, useEffect, useMemo, useState, type ReactNode} from 'react'\n\nconst STORAGE_KEY = 'mineralui-locale'\n\ntype Dict = Record<string, unknown>\n\n// Read the saved locale, but fall back cleanly in SSR or blocked storage.\nfunction readStored(fallback: string): string {\n try {\n return localStorage.getItem(STORAGE_KEY) ?? fallback\n } catch {\n return fallback\n }\n}\n\n// Resolve nested translation keys like \"ui.actions.save\".\nfunction getByPath(obj: unknown, path: string): unknown {\n return path\n .split('.')\n .reduce<unknown>((cur, key) => (cur != null && typeof cur === 'object' ? (cur as Dict)[key] : undefined), obj)\n}\n\nexport interface MI18nContextValue<T extends Dict = Dict> {\n locale: string\n setLocale: (next: string) => void\n toggleLocale: () => void\n dict: T\n t: (key: string, fallback?: string) => string\n}\n\nconst I18nContext = createContext<MI18nContextValue | null>(null)\n\nexport interface MI18nProviderProps<T extends Dict = Dict> {\n locales: Record<string, T>\n defaultLocale?: string\n persist?: boolean\n children: ReactNode\n}\n\n// Provide the active locale, dictionary and a tiny dot-path translator.\nexport function MI18nProvider<T extends Dict = Dict>({\n locales,\n defaultLocale,\n persist = true,\n children,\n}: MI18nProviderProps<T>) {\n const keys = useMemo(() => Object.keys(locales), [locales])\n const fallback = defaultLocale ?? keys[0] ?? 'en'\n\n const [locale, setLocaleState] = useState<string>(() => {\n if (persist) {\n const stored = readStored(fallback)\n if (stored in locales) return stored\n }\n return fallback\n })\n\n const setLocale = useCallback(\n (next: string) => {\n setLocaleState(next)\n if (persist) {\n try {\n localStorage.setItem(STORAGE_KEY, next)\n } catch {\n /* noop */\n }\n }\n },\n [persist]\n )\n\n const toggleLocale = useCallback(() => {\n const idx = keys.indexOf(locale)\n const next = keys[(idx + 1) % keys.length]\n setLocale(next)\n }, [keys, locale, setLocale])\n\n useEffect(() => {\n document.documentElement.lang = locale\n }, [locale])\n\n const dict = (locales[locale] ?? locales[fallback] ?? {}) as T\n\n const t = useCallback(\n (key: string, fb?: string): string => {\n const val = getByPath(dict, key)\n if (typeof val === 'string') return val\n\n const docsVal =\n dict != null && typeof dict === 'object' && typeof (dict as Dict).docsTranslations === 'object'\n ? ((dict as Dict).docsTranslations as Dict)[key]\n : undefined\n\n if (typeof docsVal === 'string') return docsVal\n\n return fb ?? key\n },\n [dict]\n )\n\n const ctx = useMemo<MI18nContextValue<T>>(\n () => ({\n locale,\n setLocale,\n toggleLocale,\n dict,\n t,\n }),\n [locale, setLocale, toggleLocale, dict, t]\n )\n\n return <I18nContext.Provider value={ctx as MI18nContextValue}>{children}</I18nContext.Provider>\n}\n\nexport function useMI18n<T extends Dict = Dict>(): MI18nContextValue<T> {\n const ctx = useContext(I18nContext)\n if (!ctx) throw new Error('useMI18n must be used within MI18nProvider')\n return ctx as MI18nContextValue<T>\n}\n\nexport function useOptionalMI18n<T extends Dict = Dict>(): MI18nContextValue<T> | null {\n const ctx = useContext(I18nContext)\n return ctx as MI18nContextValue<T> | null\n}\n"],"mappings":"qFAEA,IAAM,EAAc,mBAKpB,SAAS,EAAW,EAA0B,CAC1C,GAAI,CACA,OAAO,aAAa,QAAQ,EAAY,EAAI,OACxC,CACJ,OAAO,GAKf,SAAS,EAAU,EAAc,EAAuB,CACpD,OAAO,EACF,MAAM,IAAI,CACV,QAAiB,EAAK,IAAwB,OAAO,GAAQ,UAA9B,EAA0C,EAAa,GAAO,IAAA,GAAY,EAAI,CAWtH,IAAM,GAAA,EAAA,EAAA,eAAsD,KAAK,CAUjE,SAAgB,EAAqC,CACjD,UACA,gBACA,UAAU,GACV,YACsB,CACtB,IAAM,GAAA,EAAA,EAAA,aAAqB,OAAO,KAAK,EAAQ,CAAE,CAAC,EAAQ,CAAC,CACrD,EAAW,GAAiB,EAAK,IAAM,KAEvC,CAAC,EAAQ,IAAA,EAAA,EAAA,cAAyC,CACpD,GAAI,EAAS,CACT,IAAM,EAAS,EAAW,EAAS,CACnC,GAAI,KAAU,EAAS,OAAO,EAElC,OAAO,GACT,CAEI,GAAA,EAAA,EAAA,aACD,GAAiB,CAEd,GADA,EAAe,EAAK,CAChB,EACA,GAAI,CACA,aAAa,QAAQ,EAAa,EAAK,MACnC,IAKhB,CAAC,EAAQ,CACZ,CAEK,GAAA,EAAA,EAAA,iBAAiC,CAEnC,IAAM,EAAO,GADD,EAAK,QAAQ,EAAO,CACP,GAAK,EAAK,QACnC,EAAU,EAAK,EAChB,CAAC,EAAM,EAAQ,EAAU,CAAC,EAE7B,EAAA,EAAA,eAAgB,CACZ,SAAS,gBAAgB,KAAO,GACjC,CAAC,EAAO,CAAC,CAEZ,IAAM,EAAQ,EAAQ,IAAW,EAAQ,IAAa,EAAE,CAElD,GAAA,EAAA,EAAA,cACD,EAAa,IAAwB,CAClC,IAAM,EAAM,EAAU,EAAM,EAAI,CAChC,GAAI,OAAO,GAAQ,SAAU,OAAO,EAEpC,IAAM,EACc,OAAO,GAAS,UAAhC,GAA4C,OAAQ,EAAc,kBAAqB,SAC/E,EAAc,iBAA0B,GAC1C,IAAA,GAIV,OAFI,OAAO,GAAY,SAAiB,EAEjC,GAAM,GAEjB,CAAC,EAAK,CACT,CAEK,GAAA,EAAA,EAAA,cACK,CACH,SACA,YACA,eACA,OACA,IACH,EACD,CAAC,EAAQ,EAAW,EAAc,EAAM,EAAE,CAC7C,CAED,OAAO,EAAA,EAAA,KAAC,EAAY,SAAb,CAAsB,MAAO,EAA2B,WAAgC,CAAA,CAGnG,SAAgB,GAAwD,CACpE,IAAM,GAAA,EAAA,EAAA,YAAiB,EAAY,CACnC,GAAI,CAAC,EAAK,MAAU,MAAM,6CAA6C,CACvE,OAAO,EAGX,SAAgB,GAAuE,CAEnF,OAAA,EAAA,EAAA,YADuB,EAAY"}
1
+ {"version":3,"file":"MI18nProvider-CqAwaswx.cjs","names":[],"sources":["../src/i18n/MI18nProvider.tsx"],"sourcesContent":["import {createContext, useCallback, useContext, useEffect, useMemo, useState, type ReactNode} from 'react'\n\nconst STORAGE_KEY = 'mineralui-locale'\n\ntype Dict = Record<string, unknown>\n\n// Read the saved locale, but fall back cleanly in SSR or blocked storage.\nfunction readStored(fallback: string): string {\n try {\n return localStorage.getItem(STORAGE_KEY) ?? fallback\n } catch {\n return fallback\n }\n}\n\n// Resolve nested translation keys like \"ui.actions.save\".\nfunction getByPath(obj: unknown, path: string): unknown {\n return path\n .split('.')\n .reduce<unknown>((cur, key) => (cur != null && typeof cur === 'object' ? (cur as Dict)[key] : undefined), obj)\n}\n\nexport interface MI18nContextValue<T extends Dict = Dict> {\n locale: string\n setLocale: (next: string) => void\n toggleLocale: () => void\n dict: T\n t: (key: string, fallback?: string) => string\n}\n\nconst I18nContext = createContext<MI18nContextValue | null>(null)\n\nexport interface MI18nProviderProps<T extends Dict = Dict> {\n locales: Record<string, T>\n defaultLocale?: string\n persist?: boolean\n children: ReactNode\n}\n\n// Provide the active locale, dictionary and a tiny dot-path translator.\nexport function MI18nProvider<T extends Dict = Dict>({\n locales,\n defaultLocale,\n persist = true,\n children,\n}: MI18nProviderProps<T>) {\n const keys = useMemo(() => Object.keys(locales), [locales])\n const fallback = defaultLocale ?? keys[0] ?? 'en'\n\n const [locale, setLocaleState] = useState<string>(() => {\n if (persist) {\n const stored = readStored(fallback)\n if (stored in locales) return stored\n }\n return fallback\n })\n\n const setLocale = useCallback(\n (next: string) => {\n setLocaleState(next)\n if (persist) {\n try {\n localStorage.setItem(STORAGE_KEY, next)\n } catch {\n /* noop */\n }\n }\n },\n [persist]\n )\n\n const toggleLocale = useCallback(() => {\n const idx = keys.indexOf(locale)\n const next = keys[(idx + 1) % keys.length]\n setLocale(next)\n }, [keys, locale, setLocale])\n\n useEffect(() => {\n document.documentElement.lang = locale\n }, [locale])\n\n const dict = (locales[locale] ?? locales[fallback] ?? {}) as T\n\n const t = useCallback(\n (key: string, fb?: string): string => {\n const val = getByPath(dict, key)\n if (typeof val === 'string') return val\n\n const docsVal =\n dict != null && typeof dict === 'object' && typeof (dict as Dict).docsTranslations === 'object'\n ? ((dict as Dict).docsTranslations as Dict)[key]\n : undefined\n\n if (typeof docsVal === 'string') return docsVal\n\n return fb ?? key\n },\n [dict]\n )\n\n const ctx = useMemo<MI18nContextValue<T>>(\n () => ({\n locale,\n setLocale,\n toggleLocale,\n dict,\n t,\n }),\n [locale, setLocale, toggleLocale, dict, t]\n )\n\n return <I18nContext.Provider value={ctx as MI18nContextValue}>{children}</I18nContext.Provider>\n}\n\nexport function useMI18n<T extends Dict = Dict>(): MI18nContextValue<T> {\n const ctx = useContext(I18nContext)\n if (!ctx) throw new Error('useMI18n must be used within MI18nProvider')\n return ctx as MI18nContextValue<T>\n}\n\nexport function useOptionalMI18n<T extends Dict = Dict>(): MI18nContextValue<T> | null {\n const ctx = useContext(I18nContext)\n return ctx as MI18nContextValue<T> | null\n}\n"],"mappings":"qFAEA,IAAM,EAAc,mBAKpB,SAAS,EAAW,EAA0B,CAC1C,GAAI,CACA,OAAO,aAAa,QAAQ,EAAY,EAAI,OACxC,CACJ,OAAO,GAKf,SAAS,EAAU,EAAc,EAAuB,CACpD,OAAO,EACF,MAAM,IAAI,CACV,QAAiB,EAAK,IAAwB,OAAO,GAAQ,UAA9B,EAA0C,EAAa,GAAO,IAAA,GAAY,EAAI,CAWtH,IAAM,GAAA,EAAA,EAAA,eAAsD,KAAK,CAUjE,SAAgB,EAAqC,CACjD,UACA,gBACA,UAAU,GACV,YACsB,CACtB,IAAM,GAAA,EAAA,EAAA,aAAqB,OAAO,KAAK,EAAQ,CAAE,CAAC,EAAQ,CAAC,CACrD,EAAW,GAAiB,EAAK,IAAM,KAEvC,CAAC,EAAQ,IAAA,EAAA,EAAA,cAAyC,CACpD,GAAI,EAAS,CACT,IAAM,EAAS,EAAW,EAAS,CACnC,GAAI,KAAU,EAAS,OAAO,EAElC,OAAO,GACT,CAEI,GAAA,EAAA,EAAA,aACD,GAAiB,CAEd,GADA,EAAe,EAAK,CAChB,EACA,GAAI,CACA,aAAa,QAAQ,EAAa,EAAK,MACnC,IAKhB,CAAC,EAAQ,CACZ,CAEK,GAAA,EAAA,EAAA,iBAAiC,CAEnC,IAAM,EAAO,GADD,EAAK,QAAQ,EAAO,CACP,GAAK,EAAK,QACnC,EAAU,EAAK,EAChB,CAAC,EAAM,EAAQ,EAAU,CAAC,EAE7B,EAAA,EAAA,eAAgB,CACZ,SAAS,gBAAgB,KAAO,GACjC,CAAC,EAAO,CAAC,CAEZ,IAAM,EAAQ,EAAQ,IAAW,EAAQ,IAAa,EAAE,CAElD,GAAA,EAAA,EAAA,cACD,EAAa,IAAwB,CAClC,IAAM,EAAM,EAAU,EAAM,EAAI,CAChC,GAAI,OAAO,GAAQ,SAAU,OAAO,EAEpC,IAAM,EACc,OAAO,GAAS,UAAhC,GAA4C,OAAQ,EAAc,kBAAqB,SAC/E,EAAc,iBAA0B,GAC1C,IAAA,GAIV,OAFI,OAAO,GAAY,SAAiB,EAEjC,GAAM,GAEjB,CAAC,EAAK,CACT,CAEK,GAAA,EAAA,EAAA,cACK,CACH,SACA,YACA,eACA,OACA,IACH,EACD,CAAC,EAAQ,EAAW,EAAc,EAAM,EAAE,CAC7C,CAED,OAAO,EAAA,EAAA,KAAC,EAAY,SAAb,CAAsB,MAAO,EAA2B,WAAgC,CAAA,CAGnG,SAAgB,GAAwD,CACpE,IAAM,GAAA,EAAA,EAAA,YAAiB,EAAY,CACnC,GAAI,CAAC,EAAK,MAAU,MAAM,6CAA6C,CACvE,OAAO,EAGX,SAAgB,GAAuE,CAEnF,OAAA,EAAA,EAAA,YADuB,EAAY"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./icons-D3n9-919.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./useGhostText-mibV4s1-.cjs`),r=require(`./useInteractionEffect-CtXlbjhC.cjs`),i=require(`./MButton-CnAr77Za.cjs`),ee=require(`./frameworkTexts-BSXUtXOp.cjs`);require(`./core-w629c4ND.cjs`);let a=require(`react`),o=require(`react/jsx-runtime`);function s(e){return e==null?``:e.toString()}function c(e,t){let[n,r]=(0,a.useState)(()=>s(t)),i=e!==void 0;return{isControlled:i,currentValue:i?s(e):n,setCurrentValue:(0,a.useCallback)(e=>{i||r(e)},[i])}}var l=(0,a.forwardRef)(function({type:s=`text`,value:l,defaultValue:te,name:u,id:d,placeholder:f,disabled:p=!1,readOnly:m=!1,required:h=!1,autoFocus:g=!1,autoComplete:_,inputMode:v,variant:ne=`outlined`,size:re=`md`,color:y,fullWidth:ie=!1,rounded:ae=!1,label:b,helperText:x,errorText:S,startIcon:C,endIcon:w,clearable:oe=!1,error:T=!1,success:E=!1,maxLength:D,showCharCount:O=!1,onChange:k,onFocus:A,onBlur:j,onKeyDown:M,onClear:N,ghostOptions:P,ghostMinChars:F=2,onGhostAccept:I,loading:L=!1,clickEffect:R=`ripple`,rippleColor:se,className:ce,style:le,inputClassName:z,labelClassName:B},V){let H=ee.n(),[U,W]=(0,a.useState)(!1),G=(0,a.useRef)(null),{effectClassName:ue,effectLayer:de,handlePointerDown:fe}=r.t({effect:R,disabled:p||m,color:se}),{isControlled:pe,currentValue:K,setCurrentValue:q}=c(l,te),J=n.t({options:P??[],value:K,minChars:F}),Y=T||!!S,me=K.length>0,X=Y?`color-error`:y?`color-${y}`:void 0,Z=(0,a.useCallback)(e=>{W(!0),A?.(e)},[A]),Q=(0,a.useCallback)(e=>{W(!1),j?.(e)},[j]),$=(0,a.useCallback)(e=>{q(e.target.value),k?.(e),J.reset()},[k,q,J.reset]),he=(0,a.useCallback)(e=>{if(P&&J.hint&&J.onKeyDown(e)){let e=J.accept();q(e.value),I?.(e.value);let t=V?.current??G.current;t&&((Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`)?.set)?.call(t,e.value),t.dispatchEvent(new Event(`input`,{bubbles:!0})));return}M?.(e)},[P,J,q,I,M,V]),ge=(0,a.useCallback)(()=>{q(``);let e=V?.current??G.current;e&&((Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`)?.set)?.call(e,``),e.dispatchEvent(new Event(`input`,{bubbles:!0}))),N?.(),e?.focus()},[N,V,q]),_e=t.t(`container`,`field-${ne}`,`field-${re}`,U&&`focused`,Y&&`input-error`,E&&!Y&&`input-success`,X,p&&`disabled`,ae&&`rounded`,ue);return(0,o.jsxs)(`div`,{className:t.t(`input`,X,ie&&`full-width`,ce),style:le,children:[b&&(0,o.jsx)(`label`,{htmlFor:d,className:t.t(`field-label`,U&&`focused`,Y&&`error`,E&&!Y&&`success`,h&&`required`,B),children:b}),(0,o.jsxs)(`div`,{className:_e,onPointerDown:fe,children:[de,C&&(0,o.jsx)(`span`,{className:`start-icon`,children:C}),P?(0,o.jsxs)(`div`,{className:`ghost-text-field`,children:[(0,o.jsx)(`input`,{ref:V??G,type:s,value:K,name:u,id:d,placeholder:f,disabled:p,readOnly:m,required:h,autoFocus:g,autoComplete:_??`off`,inputMode:v,maxLength:D,className:t.t(`field`,z),onChange:$,onFocus:Z,onBlur:Q,onKeyDown:he,"aria-invalid":Y||void 0,"aria-describedby":S?`${d}-error`:x?`${d}-helper`:void 0}),U&&J.hint&&(0,o.jsxs)(`span`,{className:`ghost-text-overlay`,"aria-hidden":`true`,children:[(0,o.jsx)(`span`,{className:`ghost-text-typed`,children:K}),(0,o.jsx)(`span`,{className:`ghost-text-hint`,children:J.hint})]})]}):(0,o.jsx)(`input`,{ref:V??G,type:s,value:K,name:u,id:d,placeholder:f,disabled:p,readOnly:m,required:h,autoFocus:g,autoComplete:_,inputMode:v,maxLength:D,className:t.t(`field`,z),onChange:$,onFocus:Z,onBlur:Q,onKeyDown:M,"aria-invalid":Y||void 0,"aria-describedby":S?`${d}-error`:x?`${d}-helper`:void 0}),L&&(0,o.jsx)(i.r,{size:`sm`,color:y}),oe&&me&&!L&&!p&&(0,o.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onMouseDown:e=>e.preventDefault(),onClick:ge,tabIndex:-1,"aria-label":H.clearInput,children:(0,o.jsx)(e.Xi,{})}),w&&!L&&(0,o.jsx)(`span`,{className:`end-icon`,children:w})]}),(S||x||O)&&(0,o.jsxs)(`div`,{className:`bottom-row`,children:[(0,o.jsxs)(`span`,{children:[S&&(0,o.jsx)(`span`,{id:d?`${d}-error`:void 0,className:`field-error`,role:`alert`,children:S}),!S&&x&&(0,o.jsx)(`span`,{id:d?`${d}-helper`:void 0,className:`field-helper`,children:x})]}),O&&D&&(0,o.jsxs)(`span`,{className:t.t(`char-count`,K.length>D&&`over`),children:[K.length,`/`,D]})]})]})});Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
2
+ //# sourceMappingURL=MInput-BYj2BdUe.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MInput-BYj2BdUe.cjs","names":[],"sources":["../src/utils/useControllableString.ts","../src/components/inputs/MInput/MInput.tsx"],"sourcesContent":["import {useCallback, useState} from 'react'\n\ntype ControllableStringLike = string | number | readonly string[] | null | undefined\n\n// Normalize mixed input values so text-like controls always work with strings.\nfunction normalizeStringValue(value: ControllableStringLike) {\n if (value === null || value === undefined) {\n return ''\n }\n\n return value.toString()\n}\n\n// Share controlled and uncontrolled string state logic between text-like primitives.\nexport function useControllableString(value: ControllableStringLike, defaultValue?: ControllableStringLike) {\n const [internalValue, setInternalValue] = useState(() => normalizeStringValue(defaultValue))\n const isControlled = value !== undefined\n const currentValue = isControlled ? normalizeStringValue(value) : internalValue\n\n const setCurrentValue = useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n },\n [isControlled]\n )\n\n return {\n isControlled,\n currentValue,\n setCurrentValue,\n }\n}\n","import {forwardRef, useCallback, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputProps} from './MInput.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {useGhostText} from '../../../utils/useGhostText'\nimport {MSpinner} from '../../feedback'\nimport {MCloseIcon} from '../../../icons'\nimport './MInput.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\n// Render the base text input used by all specialized input wrappers.\nexport const MInput = forwardRef<HTMLInputElement, MInputProps>(function MInput(\n {\n type = 'text',\n value,\n defaultValue,\n name,\n id,\n placeholder,\n disabled = false,\n readOnly = false,\n required = false,\n autoFocus = false,\n autoComplete,\n inputMode,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n rounded = false,\n label,\n helperText,\n errorText,\n startIcon,\n endIcon,\n clearable = false,\n error = false,\n success = false,\n maxLength,\n showCharCount = false,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n onClear,\n ghostOptions,\n ghostMinChars = 2,\n onGhostAccept,\n loading = false,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n inputClassName,\n labelClassName,\n },\n ref\n) {\n const texts = useMCommonTexts()\n const [focused, setFocused] = useState(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLDivElement>({\n effect: clickEffect,\n disabled: disabled || readOnly,\n color: rippleColor,\n })\n\n const {isControlled, currentValue, setCurrentValue} = useControllableString(value, defaultValue)\n const ghost = useGhostText({\n options: ghostOptions ?? [],\n value: currentValue,\n minChars: ghostMinChars,\n })\n const hasError = error || !!errorText\n const hasContent = currentValue.length > 0\n const resolvedColorClass = hasError ? 'color-error' : color ? `color-${color}` : undefined\n\n // Mirror focus state so the wrapper can style the input consistently.\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true)\n onFocus?.(event)\n },\n [onFocus]\n )\n\n // Clear focus styles before delegating to the caller.\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n onBlur?.(event)\n },\n [onBlur]\n )\n\n // Keep uncontrolled usage working without blocking controlled integrations.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value)\n onChange?.(event)\n ghost.reset()\n },\n [onChange, setCurrentValue, ghost.reset]\n )\n\n // Intercept keyboard events for ghost text acceptance before delegating.\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (ghostOptions && ghost.hint) {\n const accepted = ghost.onKeyDown(event)\n if (accepted) {\n const result = ghost.accept()\n setCurrentValue(result.value)\n onGhostAccept?.(result.value)\n // Fire synthetic change so controlled parents stay in sync.\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, result.value)\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n return\n }\n }\n onKeyDown?.(event)\n },\n [ghostOptions, ghost, setCurrentValue, onGhostAccept, onKeyDown, ref]\n )\n\n // Reset the visible value while preserving focus for quick repeated input.\n const handleClear = useCallback(() => {\n setCurrentValue('')\n\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, '')\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n\n onClear?.()\n input?.focus()\n }, [onClear, ref, setCurrentValue])\n\n const containerClasses = cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'input-error',\n success && !hasError && 'input-success',\n resolvedColorClass,\n disabled && 'disabled',\n rounded && 'rounded',\n effectClassName\n )\n\n return (\n <div className={cn('input', resolvedColorClass, fullWidth && 'full-width', className)} style={style}>\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'field-label',\n focused && 'focused',\n hasError && 'error',\n success && !hasError && 'success',\n required && 'required',\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n\n <div className={containerClasses} onPointerDown={handlePointerDown}>\n {effectLayer}\n {startIcon && <span className=\"start-icon\">{startIcon}</span>}\n\n {ghostOptions ? (\n <div className=\"ghost-text-field\">\n <input\n ref={ref ?? inputRef}\n type={type}\n value={currentValue}\n name={name}\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n autoComplete={autoComplete ?? 'off'}\n inputMode={inputMode}\n maxLength={maxLength}\n className={cn('field', inputClassName)}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n aria-invalid={hasError || undefined}\n aria-describedby={errorText ? `${id}-error` : helperText ? `${id}-helper` : undefined}\n />\n {focused && ghost.hint && (\n <span className=\"ghost-text-overlay\" aria-hidden=\"true\">\n <span className=\"ghost-text-typed\">{currentValue}</span>\n <span className=\"ghost-text-hint\">{ghost.hint}</span>\n </span>\n )}\n </div>\n ) : (\n <input\n ref={ref ?? inputRef}\n type={type}\n value={currentValue}\n name={name}\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n inputMode={inputMode}\n maxLength={maxLength}\n className={cn('field', inputClassName)}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={onKeyDown}\n aria-invalid={hasError || undefined}\n aria-describedby={errorText ? `${id}-error` : helperText ? `${id}-helper` : undefined}\n />\n )}\n\n {loading && <MSpinner size=\"sm\" color={color} />}\n\n {clearable && hasContent && !loading && !disabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n tabIndex={-1}\n aria-label={texts.clearInput}\n >\n <MCloseIcon />\n </button>\n )}\n\n {endIcon && !loading && <span className=\"end-icon\">{endIcon}</span>}\n </div>\n\n {(errorText || helperText || showCharCount) && (\n <div className=\"bottom-row\">\n <span>\n {errorText && (\n <span id={id ? `${id}-error` : undefined} className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n {!errorText && helperText && (\n <span id={id ? `${id}-helper` : undefined} className=\"field-helper\">\n {helperText}\n </span>\n )}\n </span>\n {showCharCount && maxLength && (\n <span className={cn('char-count', currentValue.length > maxLength && 'over')}>\n {currentValue.length}/{maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n )\n})\n"],"mappings":"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"}
@@ -2,8 +2,9 @@ import { Xi as e } from "./icons-CBMl-kOM.js";
2
2
  import { t } from "./cn-YER3QsV1.js";
3
3
  import { t as n } from "./useGhostText-DG0bzcao.js";
4
4
  import { t as r } from "./useInteractionEffect-DtpbVd77.js";
5
- import { r as i } from "./MButton-C1pnL4_j.js";
6
- import { forwardRef as a, useCallback as o, useRef as ee, useState as s } from "react";
5
+ import { r as i } from "./MButton-CEwo8lUB.js";
6
+ import { n as ee } from "./frameworkTexts-DP5RUl19.js";
7
+ import { forwardRef as a, useCallback as o, useRef as te, useState as s } from "react";
7
8
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
9
  //#region src/utils/useControllableString.ts
9
10
  function u(e) {
@@ -21,16 +22,16 @@ function d(e, t) {
21
22
  }
22
23
  //#endregion
23
24
  //#region src/components/inputs/MInput/MInput.tsx
24
- var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m, placeholder: h, disabled: g = !1, readOnly: _ = !1, required: v = !1, autoFocus: y = !1, autoComplete: b, inputMode: x, variant: te = "outlined", size: ne = "md", color: S, fullWidth: re = !1, rounded: ie = !1, label: C, helperText: w, errorText: T, startIcon: E, endIcon: D, clearable: ae = !1, error: O = !1, success: k = !1, maxLength: A, showCharCount: j = !1, onChange: M, onFocus: N, onBlur: P, onKeyDown: F, onClear: I, ghostOptions: L, ghostMinChars: oe = 2, onGhostAccept: R, loading: z = !1, clickEffect: B = "ripple", rippleColor: se, className: ce, style: le, inputClassName: V, labelClassName: ue }, H) {
25
- let [U, W] = s(!1), G = ee(null), { effectClassName: de, effectLayer: fe, handlePointerDown: pe } = r({
26
- effect: B,
25
+ var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m, placeholder: h, disabled: g = !1, readOnly: _ = !1, required: v = !1, autoFocus: y = !1, autoComplete: b, inputMode: x, variant: ne = "outlined", size: re = "md", color: S, fullWidth: ie = !1, rounded: C = !1, label: w, helperText: T, errorText: E, startIcon: D, endIcon: O, clearable: ae = !1, error: oe = !1, success: k = !1, maxLength: A, showCharCount: j = !1, onChange: M, onFocus: N, onBlur: P, onKeyDown: F, onClear: I, ghostOptions: L, ghostMinChars: se = 2, onGhostAccept: R, loading: z = !1, clickEffect: ce = "ripple", rippleColor: le, className: ue, style: B, inputClassName: V, labelClassName: de }, H) {
26
+ let fe = ee(), [U, W] = s(!1), G = te(null), { effectClassName: pe, effectLayer: me, handlePointerDown: he } = r({
27
+ effect: ce,
27
28
  disabled: g || _,
28
- color: se
29
- }), { isControlled: me, currentValue: K, setCurrentValue: q } = d(u, f), J = n({
29
+ color: le
30
+ }), { isControlled: ge, currentValue: K, setCurrentValue: q } = d(u, f), J = n({
30
31
  options: L ?? [],
31
32
  value: K,
32
- minChars: oe
33
- }), Y = O || !!T, he = K.length > 0, X = Y ? "color-error" : S ? `color-${S}` : void 0, Z = o((e) => {
33
+ minChars: se
34
+ }), Y = oe || !!E, _e = K.length > 0, X = Y ? "color-error" : S ? `color-${S}` : void 0, Z = o((e) => {
34
35
  W(!0), N?.(e);
35
36
  }, [N]), Q = o((e) => {
36
37
  W(!1), P?.(e);
@@ -40,7 +41,7 @@ var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m
40
41
  M,
41
42
  q,
42
43
  J.reset
43
- ]), ge = o((e) => {
44
+ ]), ve = o((e) => {
44
45
  if (L && J.hint && J.onKeyDown(e)) {
45
46
  let e = J.accept();
46
47
  q(e.value), R?.(e.value);
@@ -56,7 +57,7 @@ var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m
56
57
  R,
57
58
  F,
58
59
  H
59
- ]), _e = o(() => {
60
+ ]), ye = o(() => {
60
61
  q("");
61
62
  let e = H?.current ?? G.current;
62
63
  e && ((Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value")?.set)?.call(e, ""), e.dispatchEvent(new Event("input", { bubbles: !0 }))), I?.(), e?.focus();
@@ -64,24 +65,24 @@ var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m
64
65
  I,
65
66
  H,
66
67
  q
67
- ]), ve = t("container", `field-${te}`, `field-${ne}`, U && "focused", Y && "input-error", k && !Y && "input-success", X, g && "disabled", ie && "rounded", de);
68
+ ]), be = t("container", `field-${ne}`, `field-${re}`, U && "focused", Y && "input-error", k && !Y && "input-success", X, g && "disabled", C && "rounded", pe);
68
69
  return /* @__PURE__ */ l("div", {
69
- className: t("input", X, re && "full-width", ce),
70
- style: le,
70
+ className: t("input", X, ie && "full-width", ue),
71
+ style: B,
71
72
  children: [
72
- C && /* @__PURE__ */ c("label", {
73
+ w && /* @__PURE__ */ c("label", {
73
74
  htmlFor: m,
74
- className: t("field-label", U && "focused", Y && "error", k && !Y && "success", v && "required", ue),
75
- children: C
75
+ className: t("field-label", U && "focused", Y && "error", k && !Y && "success", v && "required", de),
76
+ children: w
76
77
  }),
77
78
  /* @__PURE__ */ l("div", {
78
- className: ve,
79
- onPointerDown: pe,
79
+ className: be,
80
+ onPointerDown: he,
80
81
  children: [
81
- fe,
82
- E && /* @__PURE__ */ c("span", {
82
+ me,
83
+ D && /* @__PURE__ */ c("span", {
83
84
  className: "start-icon",
84
- children: E
85
+ children: D
85
86
  }),
86
87
  L ? /* @__PURE__ */ l("div", {
87
88
  className: "ghost-text-field",
@@ -103,9 +104,9 @@ var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m
103
104
  onChange: $,
104
105
  onFocus: Z,
105
106
  onBlur: Q,
106
- onKeyDown: ge,
107
+ onKeyDown: ve,
107
108
  "aria-invalid": Y || void 0,
108
- "aria-describedby": T ? `${m}-error` : w ? `${m}-helper` : void 0
109
+ "aria-describedby": E ? `${m}-error` : T ? `${m}-helper` : void 0
109
110
  }), U && J.hint && /* @__PURE__ */ l("span", {
110
111
  className: "ghost-text-overlay",
111
112
  "aria-hidden": "true",
@@ -137,38 +138,38 @@ var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m
137
138
  onBlur: Q,
138
139
  onKeyDown: F,
139
140
  "aria-invalid": Y || void 0,
140
- "aria-describedby": T ? `${m}-error` : w ? `${m}-helper` : void 0
141
+ "aria-describedby": E ? `${m}-error` : T ? `${m}-helper` : void 0
141
142
  }),
142
143
  z && /* @__PURE__ */ c(i, {
143
144
  size: "sm",
144
145
  color: S
145
146
  }),
146
- ae && he && !z && !g && /* @__PURE__ */ c("button", {
147
+ ae && _e && !z && !g && /* @__PURE__ */ c("button", {
147
148
  type: "button",
148
149
  className: "clear-btn clear-btn-base",
149
150
  onMouseDown: (e) => e.preventDefault(),
150
- onClick: _e,
151
+ onClick: ye,
151
152
  tabIndex: -1,
152
- "aria-label": "Clear input",
153
+ "aria-label": fe.clearInput,
153
154
  children: /* @__PURE__ */ c(e, {})
154
155
  }),
155
- D && !z && /* @__PURE__ */ c("span", {
156
+ O && !z && /* @__PURE__ */ c("span", {
156
157
  className: "end-icon",
157
- children: D
158
+ children: O
158
159
  })
159
160
  ]
160
161
  }),
161
- (T || w || j) && /* @__PURE__ */ l("div", {
162
+ (E || T || j) && /* @__PURE__ */ l("div", {
162
163
  className: "bottom-row",
163
- children: [/* @__PURE__ */ l("span", { children: [T && /* @__PURE__ */ c("span", {
164
+ children: [/* @__PURE__ */ l("span", { children: [E && /* @__PURE__ */ c("span", {
164
165
  id: m ? `${m}-error` : void 0,
165
166
  className: "field-error",
166
167
  role: "alert",
167
- children: T
168
- }), !T && w && /* @__PURE__ */ c("span", {
168
+ children: E
169
+ }), !E && T && /* @__PURE__ */ c("span", {
169
170
  id: m ? `${m}-helper` : void 0,
170
171
  className: "field-helper",
171
- children: w
172
+ children: T
172
173
  })] }), j && A && /* @__PURE__ */ l("span", {
173
174
  className: t("char-count", K.length > A && "over"),
174
175
  children: [
@@ -184,4 +185,4 @@ var f = a(function({ type: a = "text", value: u, defaultValue: f, name: p, id: m
184
185
  //#endregion
185
186
  export { d as n, f as t };
186
187
 
187
- //# sourceMappingURL=MInput-C8ObGzQk.js.map
188
+ //# sourceMappingURL=MInput-nodE-CZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MInput-nodE-CZF.js","names":[],"sources":["../src/utils/useControllableString.ts","../src/components/inputs/MInput/MInput.tsx"],"sourcesContent":["import {useCallback, useState} from 'react'\n\ntype ControllableStringLike = string | number | readonly string[] | null | undefined\n\n// Normalize mixed input values so text-like controls always work with strings.\nfunction normalizeStringValue(value: ControllableStringLike) {\n if (value === null || value === undefined) {\n return ''\n }\n\n return value.toString()\n}\n\n// Share controlled and uncontrolled string state logic between text-like primitives.\nexport function useControllableString(value: ControllableStringLike, defaultValue?: ControllableStringLike) {\n const [internalValue, setInternalValue] = useState(() => normalizeStringValue(defaultValue))\n const isControlled = value !== undefined\n const currentValue = isControlled ? normalizeStringValue(value) : internalValue\n\n const setCurrentValue = useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n },\n [isControlled]\n )\n\n return {\n isControlled,\n currentValue,\n setCurrentValue,\n }\n}\n","import {forwardRef, useCallback, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputProps} from './MInput.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {useGhostText} from '../../../utils/useGhostText'\nimport {MSpinner} from '../../feedback'\nimport {MCloseIcon} from '../../../icons'\nimport './MInput.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\n// Render the base text input used by all specialized input wrappers.\nexport const MInput = forwardRef<HTMLInputElement, MInputProps>(function MInput(\n {\n type = 'text',\n value,\n defaultValue,\n name,\n id,\n placeholder,\n disabled = false,\n readOnly = false,\n required = false,\n autoFocus = false,\n autoComplete,\n inputMode,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n rounded = false,\n label,\n helperText,\n errorText,\n startIcon,\n endIcon,\n clearable = false,\n error = false,\n success = false,\n maxLength,\n showCharCount = false,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n onClear,\n ghostOptions,\n ghostMinChars = 2,\n onGhostAccept,\n loading = false,\n clickEffect = 'ripple',\n rippleColor,\n className,\n style,\n inputClassName,\n labelClassName,\n },\n ref\n) {\n const texts = useMCommonTexts()\n const [focused, setFocused] = useState(false)\n const inputRef = useRef<HTMLInputElement>(null)\n const {effectClassName, effectLayer, handlePointerDown} = useInteractionEffect<HTMLDivElement>({\n effect: clickEffect,\n disabled: disabled || readOnly,\n color: rippleColor,\n })\n\n const {isControlled, currentValue, setCurrentValue} = useControllableString(value, defaultValue)\n const ghost = useGhostText({\n options: ghostOptions ?? [],\n value: currentValue,\n minChars: ghostMinChars,\n })\n const hasError = error || !!errorText\n const hasContent = currentValue.length > 0\n const resolvedColorClass = hasError ? 'color-error' : color ? `color-${color}` : undefined\n\n // Mirror focus state so the wrapper can style the input consistently.\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true)\n onFocus?.(event)\n },\n [onFocus]\n )\n\n // Clear focus styles before delegating to the caller.\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n onBlur?.(event)\n },\n [onBlur]\n )\n\n // Keep uncontrolled usage working without blocking controlled integrations.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value)\n onChange?.(event)\n ghost.reset()\n },\n [onChange, setCurrentValue, ghost.reset]\n )\n\n // Intercept keyboard events for ghost text acceptance before delegating.\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (ghostOptions && ghost.hint) {\n const accepted = ghost.onKeyDown(event)\n if (accepted) {\n const result = ghost.accept()\n setCurrentValue(result.value)\n onGhostAccept?.(result.value)\n // Fire synthetic change so controlled parents stay in sync.\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, result.value)\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n return\n }\n }\n onKeyDown?.(event)\n },\n [ghostOptions, ghost, setCurrentValue, onGhostAccept, onKeyDown, ref]\n )\n\n // Reset the visible value while preserving focus for quick repeated input.\n const handleClear = useCallback(() => {\n setCurrentValue('')\n\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, '')\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n\n onClear?.()\n input?.focus()\n }, [onClear, ref, setCurrentValue])\n\n const containerClasses = cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'input-error',\n success && !hasError && 'input-success',\n resolvedColorClass,\n disabled && 'disabled',\n rounded && 'rounded',\n effectClassName\n )\n\n return (\n <div className={cn('input', resolvedColorClass, fullWidth && 'full-width', className)} style={style}>\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'field-label',\n focused && 'focused',\n hasError && 'error',\n success && !hasError && 'success',\n required && 'required',\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n\n <div className={containerClasses} onPointerDown={handlePointerDown}>\n {effectLayer}\n {startIcon && <span className=\"start-icon\">{startIcon}</span>}\n\n {ghostOptions ? (\n <div className=\"ghost-text-field\">\n <input\n ref={ref ?? inputRef}\n type={type}\n value={currentValue}\n name={name}\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n autoComplete={autoComplete ?? 'off'}\n inputMode={inputMode}\n maxLength={maxLength}\n className={cn('field', inputClassName)}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n aria-invalid={hasError || undefined}\n aria-describedby={errorText ? `${id}-error` : helperText ? `${id}-helper` : undefined}\n />\n {focused && ghost.hint && (\n <span className=\"ghost-text-overlay\" aria-hidden=\"true\">\n <span className=\"ghost-text-typed\">{currentValue}</span>\n <span className=\"ghost-text-hint\">{ghost.hint}</span>\n </span>\n )}\n </div>\n ) : (\n <input\n ref={ref ?? inputRef}\n type={type}\n value={currentValue}\n name={name}\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n autoComplete={autoComplete}\n inputMode={inputMode}\n maxLength={maxLength}\n className={cn('field', inputClassName)}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={onKeyDown}\n aria-invalid={hasError || undefined}\n aria-describedby={errorText ? `${id}-error` : helperText ? `${id}-helper` : undefined}\n />\n )}\n\n {loading && <MSpinner size=\"sm\" color={color} />}\n\n {clearable && hasContent && !loading && !disabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n tabIndex={-1}\n aria-label={texts.clearInput}\n >\n <MCloseIcon />\n </button>\n )}\n\n {endIcon && !loading && <span className=\"end-icon\">{endIcon}</span>}\n </div>\n\n {(errorText || helperText || showCharCount) && (\n <div className=\"bottom-row\">\n <span>\n {errorText && (\n <span id={id ? `${id}-error` : undefined} className=\"field-error\" role=\"alert\">\n {errorText}\n </span>\n )}\n {!errorText && helperText && (\n <span id={id ? `${id}-helper` : undefined} className=\"field-helper\">\n {helperText}\n </span>\n )}\n </span>\n {showCharCount && maxLength && (\n <span className={cn('char-count', currentValue.length > maxLength && 'over')}>\n {currentValue.length}/{maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n )\n})\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./icons-D3n9-919.cjs`),t=require(`./cn-CU5TNITO.cjs`),n=require(`./frameworkTexts-BSXUtXOp.cjs`),r=require(`./MInput-BYj2BdUe.cjs`),i=require(`./MDropdownMenu-DnKcCyW6.cjs`);require(`./core-w629c4ND.cjs`);let a=require(`react`),o=require(`react/jsx-runtime`);var s={valid:!0};function c(e){return e.replace(/\D/g,``)}function l(e){return e?e.padStart(2,`0`).slice(0,2):``}function u(e,t){let n=l(e),r=t?.slice(0,4)??``;return!n&&!r?``:r?`${n}/${r}`:n}function d(e){let t=c(e).slice(0,6);return{month:t.slice(0,2),year:t.slice(2,6)}}function f(e,t){let n=new Date().getFullYear(),r=Math.max(e??n,n);return{resolvedMinYear:r,resolvedMaxYear:Math.max(t??n+20,r)}}function p(e,{minYear:t,maxYear:n}){if(!e)return s;let{month:r,year:i}=d(e);if(r.length!==2||i.length!==4)return{valid:!1,error:`Expiration date is incomplete`};let a=parseInt(r,10),o=parseInt(i,10),{resolvedMinYear:c,resolvedMaxYear:l}=f(t,n);if(Number.isNaN(a)||a<1||a>12)return{valid:!1,error:`Use a valid month`};if(Number.isNaN(o))return{valid:!1,error:`Use a valid year`};if(o<c)return{valid:!1,error:`Year must be ${c} or later`};if(o>l)return{valid:!1,error:`Year must be ${l} or earlier`};let u=new Date,p=u.getMonth()+1,m=u.getFullYear();return o<m||o===m&&a<p?{valid:!1,error:`Card has expired`}:s}var m=(0,a.forwardRef)(function({validateOnBlur:l=!0,validateOnChange:m=!1,minYear:h,maxYear:g,onValidationChange:_,onValueChange:v,value:ee,defaultValue:y,name:te,id:b,disabled:x=!1,readOnly:ne=!1,required:S=!1,autoFocus:re=!1,variant:ie=`outlined`,size:C=`md`,color:w,fullWidth:T=!1,rounded:ae=!1,label:E,helperText:D,errorText:oe,startIcon:O,endIcon:k,clearable:A=!1,error:j=!1,success:M,onChange:N,onFocus:P,onBlur:F,onClear:se,className:ce,style:le,labelClassName:ue},I){let de=n.n(),L=(0,a.useRef)(null),fe=(0,a.useRef)(null),{currentValue:R,setCurrentValue:z}=r.n(ee,y),[B,V]=(0,a.useState)(s),[H,pe]=(0,a.useState)(!1),[U,me]=(0,a.useState)(!1),[he,ge]=(0,a.useState)(!1),[_e,ve]=(0,a.useState)(!1),{month:W,year:G}=d(R),ye=!!(W||G),K=x||ne,{resolvedMinYear:q,resolvedMaxYear:be}=f(h,g),xe=(0,a.useMemo)(()=>Array.from({length:be-q+1},(e,t)=>q+t),[be,q]),J=(0,a.useCallback)(e=>{let t=p(e,{minYear:h,maxYear:g});return V(t),_?.(t),t},[g,h,_]),Y=(0,a.useCallback)(e=>{z(e),v?.(c(e),e);let t=I?.current??L.current;t&&((Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`)?.set)?.call(t,e),t.dispatchEvent(new Event(`input`,{bubbles:!0})))},[v,I,z]),X=(0,a.useCallback)((e,t)=>{let n=u(e,t);Y(n),m&&H&&J(n)},[J,Y,H,m]),Z=(0,a.useCallback)(()=>{(I?.current??L.current)?.focus()},[I]),Se=(0,a.useCallback)(e=>{if(U)return;me(!0);let t=I?.current??L.current;t&&e.target!==t&&P?.(e)},[U,P,I]),Ce=(0,a.useCallback)(e=>{let t=e.relatedTarget;t&&fe.current?.contains(t)||(me(!1),pe(!0),l&&R&&J(R),F?.(e))},[R,F,J,l]),we=(0,a.useCallback)(e=>{Z(),X(e,G)},[Z,X,G]),Te=(0,a.useCallback)(e=>{Z(),X(W,e)},[Z,W,X]),Ee=(0,a.useCallback)(()=>{Y(``),pe(!1),V(s),_?.(s),se?.(),Z()},[Z,se,_,Y]),Q=j||H&&!B.valid,$=oe||(H&&!B.valid?B.error:void 0),De=!Q&&(M===void 0?H&&B.valid&&!!(W&&G):M),Oe=Q?`color-error`:w?`color-${w}`:void 0,ke=t.t(`container`,`field-${ie}`,`field-${C}`,U&&`focused`,Q&&`input-error`,De&&!Q&&`input-success`,Oe,x&&`disabled`,ae&&`rounded`),Ae=W||`MM`,je=G||`YYYY`;return(0,o.jsxs)(`div`,{ref:fe,className:t.t(`input`,`input-exp-date`,Oe,T&&`full-width`,ce),style:le,onFocusCapture:Se,onBlurCapture:Ce,children:[E&&(0,o.jsx)(`label`,{htmlFor:b,className:t.t(`field-label`,U&&`focused`,Q&&`error`,De&&!Q&&`success`,S&&`required`,ue),children:E}),(0,o.jsxs)(`div`,{className:ke,onClick:Z,children:[O&&(0,o.jsx)(`span`,{className:`start-icon`,children:O}),(0,o.jsx)(`input`,{ref:I??L,type:`text`,value:R,name:te,id:b,readOnly:!0,required:S,autoFocus:re,className:`input-exp-date-native`,tabIndex:-1,"aria-hidden":`true`,onChange:N,onFocus:P,onBlur:F}),(0,o.jsxs)(`div`,{className:`input-exp-date-segments`,"aria-label":de.expirationDate,children:[K?(0,o.jsx)(`span`,{className:t.t(`input-exp-date-trigger`,!W&&`placeholder`,`static`),children:(0,o.jsx)(`span`,{children:Ae})}):(0,o.jsx)(i.i,{trigger:(0,o.jsxs)(`span`,{className:t.t(`input-exp-date-trigger`,he&&`open`,!W&&`placeholder`),onMouseDown:Z,children:[(0,o.jsx)(`span`,{children:Ae}),(0,o.jsx)(e.Ki,{size:16})]}),openOn:`click`,closeOnSelect:!0,onOpenChange:ge,popoverClassName:`input-exp-date-popover`,children:Array.from({length:12},(e,t)=>{let n=String(t+1).padStart(2,`0`);return(0,o.jsx)(i.r,{label:n,active:W===n,onClick:()=>we(n)},n)})}),(0,o.jsx)(`span`,{className:`input-exp-date-separator`,children:`/`}),K?(0,o.jsx)(`span`,{className:t.t(`input-exp-date-trigger`,!G&&`placeholder`,`static`),children:(0,o.jsx)(`span`,{children:je})}):(0,o.jsx)(i.i,{trigger:(0,o.jsxs)(`span`,{className:t.t(`input-exp-date-trigger`,_e&&`open`,!G&&`placeholder`),onMouseDown:Z,children:[(0,o.jsx)(`span`,{children:je}),(0,o.jsx)(e.Ki,{size:16})]}),openOn:`click`,closeOnSelect:!0,onOpenChange:ve,popoverClassName:`input-exp-date-popover`,children:xe.map(e=>(0,o.jsx)(i.r,{label:String(e),active:G===String(e),onClick:()=>Te(String(e))},e))})]}),A&&ye&&!K&&(0,o.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onClick:e=>{e.stopPropagation(),Ee()},tabIndex:-1,"aria-label":de.clearInput,children:(0,o.jsx)(e.Xi,{})}),k&&(0,o.jsx)(`span`,{className:`end-icon`,children:k})]}),($||D)&&(0,o.jsx)(`div`,{className:`bottom-row`,children:(0,o.jsxs)(`span`,{children:[$&&(0,o.jsx)(`span`,{id:b?`${b}-error`:void 0,className:`field-error`,role:`alert`,children:$}),!$&&D&&(0,o.jsx)(`span`,{id:b?`${b}-helper`:void 0,className:`field-helper`,children:D})]})})]})}),h={valid:!0};function g(e){return e.replace(/\D/g,``)}function _(e,t){return e?g(e).length===t?h:{valid:!1,error:`Security code must have ${t} digits`}:h}var v=(0,a.forwardRef)(function({length:n=3,validateOnBlur:i=!0,validateOnChange:s=!1,onValidationChange:c,onValueChange:l,value:u,defaultValue:d,onChange:f,onBlur:p,onKeyDown:m,error:v,errorText:ee,success:y,placeholder:te,className:b,inputClassName:x,...ne},S){let[re,ie]=(0,a.useState)(()=>g(d?.toString()??``).slice(0,n)),[C,w]=(0,a.useState)(h),[T,ae]=(0,a.useState)(!1),E=u===void 0?re:g(u.toString()).slice(0,n),D=(0,a.useCallback)(e=>{let t=_(e,n);return w(t),c?.(t),t},[n,c]),oe=(0,a.useCallback)(e=>{let t=g(e.target.value).slice(0,n);u===void 0&&ie(t),l?.(t),s&&T&&D(t),f?.(e)},[n,f,l,D,T,s,u]),O=(0,a.useCallback)(e=>{ae(!0),i&&E&&D(E),p?.(e)},[E,p,D,i]),k=(0,a.useCallback)(e=>{if([`Backspace`,`Delete`,`Tab`,`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key)){m?.(e);return}if(e.ctrlKey||e.metaKey){m?.(e);return}/^\d$/.test(e.key)||e.preventDefault(),m?.(e)},[m]),A=v||T&&!C.valid,j=ee||(T&&!C.valid?C.error:void 0),M=!A&&(y===void 0?T&&E.length===n:y),N=M?(0,o.jsx)(e.Yi,{}):void 0;return(0,o.jsx)(r.t,{...ne,ref:S,type:`text`,inputMode:`numeric`,value:E,onChange:oe,onBlur:O,onKeyDown:k,error:A,errorText:j,success:M,placeholder:te??``.padEnd(n,`0`),maxLength:n,endIcon:N,inputClassName:t.t(`input-cvc-field`,x),className:b})});Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return v}});
2
+ //# sourceMappingURL=MInputCVC-9XWryaTz.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MInputCVC-9XWryaTz.cjs","names":[],"sources":["../src/components/inputs/MInputExpDate/MInputExpDate.tsx","../src/components/inputs/MInputCVC/MInputCVC.tsx"],"sourcesContent":["import {forwardRef, useCallback, useMemo, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputExpDateProps} from './MInputExpDate.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCloseIcon, MChevronDownIcon} from '../../../icons'\nimport {MDropdownItem, MDropdownMenu} from '../../overlays'\nimport '../MInput/MInput.css'\nimport './MInputExpDate.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction padMonth(value?: string) {\n if (!value) {\n return ''\n }\n\n return value.padStart(2, '0').slice(0, 2)\n}\n\nfunction formatValue(month?: string, year?: string) {\n const resolvedMonth = padMonth(month)\n const resolvedYear = year?.slice(0, 4) ?? ''\n\n if (!resolvedMonth && !resolvedYear) {\n return ''\n }\n\n if (!resolvedYear) {\n return resolvedMonth\n }\n\n return `${resolvedMonth}/${resolvedYear}`\n}\n\nfunction parseValue(value: string) {\n const digits = stripDigits(value).slice(0, 6)\n\n return {\n month: digits.slice(0, 2),\n year: digits.slice(2, 6),\n }\n}\n\nfunction resolveYearBounds(minYear?: number, maxYear?: number) {\n const currentYear = new Date().getFullYear()\n const resolvedMinYear = Math.max(minYear ?? currentYear, currentYear)\n const resolvedMaxYear = Math.max(maxYear ?? currentYear + 20, resolvedMinYear)\n\n return {\n resolvedMinYear,\n resolvedMaxYear,\n }\n}\n\nfunction validateExpDate(\n value: string,\n {minYear, maxYear}: Pick<MInputExpDateProps, 'minYear' | 'maxYear'>\n): ValidationResult {\n if (!value) {\n return OK\n }\n\n const {month: monthValue, year: yearValue} = parseValue(value)\n\n if (monthValue.length !== 2 || yearValue.length !== 4) {\n return {valid: false, error: 'Expiration date is incomplete'}\n }\n\n const month = parseInt(monthValue, 10)\n const year = parseInt(yearValue, 10)\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n\n if (Number.isNaN(month) || month < 1 || month > 12) {\n return {valid: false, error: 'Use a valid month'}\n }\n\n if (Number.isNaN(year)) {\n return {valid: false, error: 'Use a valid year'}\n }\n\n if (year < resolvedMinYear) {\n return {valid: false, error: `Year must be ${resolvedMinYear} or later`}\n }\n\n if (year > resolvedMaxYear) {\n return {valid: false, error: `Year must be ${resolvedMaxYear} or earlier`}\n }\n\n const now = new Date()\n const currentMonth = now.getMonth() + 1\n const currentYear = now.getFullYear()\n\n if (year < currentYear || (year === currentYear && month < currentMonth)) {\n return {valid: false, error: 'Card has expired'}\n }\n\n return OK\n}\n\nexport const MInputExpDate = forwardRef<HTMLInputElement, MInputExpDateProps>(function MInputExpDate(\n {\n validateOnBlur = true,\n validateOnChange = false,\n minYear,\n maxYear,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n name,\n id,\n disabled = false,\n readOnly = false,\n required = false,\n autoFocus = false,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n rounded = false,\n label,\n helperText,\n errorText,\n startIcon,\n endIcon,\n clearable = false,\n error = false,\n success,\n onChange,\n onFocus,\n onBlur,\n onClear,\n className,\n style,\n labelClassName,\n },\n ref\n) {\n const texts = useMCommonTexts()\n const inputRef = useRef<HTMLInputElement>(null)\n const rootRef = useRef<HTMLDivElement>(null)\n const {currentValue, setCurrentValue} = useControllableString(value, defaultValue)\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n const [focused, setFocused] = useState(false)\n const [monthMenuOpen, setMonthMenuOpen] = useState(false)\n const [yearMenuOpen, setYearMenuOpen] = useState(false)\n\n const {month, year} = parseValue(currentValue)\n const hasContent = Boolean(month || year)\n const segmentDisabled = disabled || readOnly\n const {resolvedMinYear, resolvedMaxYear} = resolveYearBounds(minYear, maxYear)\n const yearOptions = useMemo(\n () => Array.from({length: resolvedMaxYear - resolvedMinYear + 1}, (_, index) => resolvedMinYear + index),\n [resolvedMaxYear, resolvedMinYear]\n )\n\n const runValidation = useCallback(\n (formattedValue: string) => {\n const result = validateExpDate(formattedValue, {minYear, maxYear})\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [maxYear, minYear, onValidationChange]\n )\n\n const syncValue = useCallback(\n (formattedValue: string) => {\n setCurrentValue(formattedValue)\n onValueChange?.(stripDigits(formattedValue), formattedValue)\n\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set\n nativeSet?.call(input, formattedValue)\n input.dispatchEvent(new Event('input', {bubbles: true}))\n }\n },\n [onValueChange, ref, setCurrentValue]\n )\n\n const updateValue = useCallback(\n (nextMonth?: string, nextYear?: string) => {\n const formattedValue = formatValue(nextMonth, nextYear)\n syncValue(formattedValue)\n\n if (validateOnChange && touched) {\n runValidation(formattedValue)\n }\n },\n [runValidation, syncValue, touched, validateOnChange]\n )\n\n const focusHiddenInput = useCallback(() => {\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n input?.focus()\n }, [ref])\n\n const handleRootFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n if (focused) {\n return\n }\n\n setFocused(true)\n const input = (ref as React.RefObject<HTMLInputElement>)?.current ?? inputRef.current\n if (input && event.target !== input) {\n onFocus?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n }\n },\n [focused, onFocus, ref]\n )\n\n const handleRootBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n const nextTarget = event.relatedTarget as Node | null\n\n if (nextTarget && rootRef.current?.contains(nextTarget)) {\n return\n }\n\n setFocused(false)\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event as unknown as React.FocusEvent<HTMLInputElement>)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleSelectMonth = useCallback(\n (nextMonth: string) => {\n focusHiddenInput()\n updateValue(nextMonth, year)\n },\n [focusHiddenInput, updateValue, year]\n )\n\n const handleSelectYear = useCallback(\n (nextYear: string) => {\n focusHiddenInput()\n updateValue(month, nextYear)\n },\n [focusHiddenInput, month, updateValue]\n )\n\n const handleClear = useCallback(() => {\n syncValue('')\n setTouched(false)\n setValidation(OK)\n onValidationChange?.(OK)\n onClear?.()\n focusHiddenInput()\n }, [focusHiddenInput, onClear, onValidationChange, syncValue])\n\n const hasError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !hasError && (success !== undefined ? success : touched && validation.valid && Boolean(month && year))\n const resolvedColorClass = hasError ? 'color-error' : color ? `color-${color}` : undefined\n\n const containerClasses = cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'input-error',\n isSuccess && !hasError && 'input-success',\n resolvedColorClass,\n disabled && 'disabled',\n rounded && 'rounded'\n )\n\n const monthLabel = month || 'MM'\n const yearLabel = year || 'YYYY'\n\n return (\n <div\n ref={rootRef}\n className={cn('input', 'input-exp-date', resolvedColorClass, fullWidth && 'full-width', className)}\n style={style}\n onFocusCapture={handleRootFocus}\n onBlurCapture={handleRootBlur}\n >\n {label && (\n <label\n htmlFor={id}\n className={cn(\n 'field-label',\n focused && 'focused',\n hasError && 'error',\n isSuccess && !hasError && 'success',\n required && 'required',\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n\n <div className={containerClasses} onClick={focusHiddenInput}>\n {startIcon && <span className=\"start-icon\">{startIcon}</span>}\n\n <input\n ref={ref ?? inputRef}\n type=\"text\"\n value={currentValue}\n name={name}\n id={id}\n readOnly\n required={required}\n autoFocus={autoFocus}\n className=\"input-exp-date-native\"\n tabIndex={-1}\n aria-hidden=\"true\"\n onChange={onChange}\n onFocus={onFocus}\n onBlur={onBlur}\n />\n\n <div className=\"input-exp-date-segments\" aria-label={texts.expirationDate}>\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !month && 'placeholder', 'static')}>\n <span>{monthLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n monthMenuOpen && 'open',\n !month && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{monthLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setMonthMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {Array.from({length: 12}, (_, index) => {\n const option = String(index + 1).padStart(2, '0')\n\n return (\n <MDropdownItem\n key={option}\n label={option}\n active={month === option}\n onClick={() => handleSelectMonth(option)}\n />\n )\n })}\n </MDropdownMenu>\n )}\n\n <span className=\"input-exp-date-separator\">/</span>\n\n {segmentDisabled ? (\n <span className={cn('input-exp-date-trigger', !year && 'placeholder', 'static')}>\n <span>{yearLabel}</span>\n </span>\n ) : (\n <MDropdownMenu\n trigger={\n <span\n className={cn(\n 'input-exp-date-trigger',\n yearMenuOpen && 'open',\n !year && 'placeholder'\n )}\n onMouseDown={focusHiddenInput}\n >\n <span>{yearLabel}</span>\n <MChevronDownIcon size={16} />\n </span>\n }\n openOn=\"click\"\n closeOnSelect\n onOpenChange={setYearMenuOpen}\n popoverClassName=\"input-exp-date-popover\"\n >\n {yearOptions.map((option) => (\n <MDropdownItem\n key={option}\n label={String(option)}\n active={year === String(option)}\n onClick={() => handleSelectYear(String(option))}\n />\n ))}\n </MDropdownMenu>\n )}\n </div>\n\n {clearable && hasContent && !segmentDisabled && (\n <button\n type=\"button\"\n className=\"clear-btn clear-btn-base\"\n onClick={(event) => {\n event.stopPropagation()\n handleClear()\n }}\n tabIndex={-1}\n aria-label={texts.clearInput}\n >\n <MCloseIcon />\n </button>\n )}\n\n {endIcon && <span className=\"end-icon\">{endIcon}</span>}\n </div>\n\n {(resolvedErrorText || helperText) && (\n <div className=\"bottom-row\">\n <span>\n {resolvedErrorText && (\n <span id={id ? `${id}-error` : undefined} className=\"field-error\" role=\"alert\">\n {resolvedErrorText}\n </span>\n )}\n {!resolvedErrorText && helperText && (\n <span id={id ? `${id}-helper` : undefined} className=\"field-helper\">\n {helperText}\n </span>\n )}\n </span>\n </div>\n )}\n </div>\n )\n})\n","import {forwardRef, useCallback, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputCVCProps} from './MInputCVC.types'\nimport {MInput} from '../MInput'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MInputCVC.css'\n\nconst OK: ValidationResult = {valid: true}\n\nfunction stripDigits(value: string) {\n return value.replace(/\\D/g, '')\n}\n\nfunction validateCvc(value: string, length: 3 | 4): ValidationResult {\n if (!value) {\n return OK\n }\n\n const digits = stripDigits(value)\n\n if (digits.length !== length) {\n return {valid: false, error: `Security code must have ${length} digits`}\n }\n\n return OK\n}\n\nexport const MInputCVC = forwardRef<HTMLInputElement, MInputCVCProps>(function MInputCVC(\n {\n length = 3,\n validateOnBlur = true,\n validateOnChange = false,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n onKeyDown,\n error,\n errorText,\n success,\n placeholder,\n className,\n inputClassName,\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(() =>\n stripDigits(defaultValue?.toString() ?? '').slice(0, length)\n )\n const [validation, setValidation] = useState<ValidationResult>(OK)\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? stripDigits(value.toString()).slice(0, length) : internalValue\n\n const runValidation = useCallback(\n (nextValue: string) => {\n const result = validateCvc(nextValue, length)\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [length, onValidationChange]\n )\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextValue = stripDigits(event.target.value).slice(0, length)\n\n if (value === undefined) {\n setInternalValue(nextValue)\n }\n\n onValueChange?.(nextValue)\n\n if (validateOnChange && touched) {\n runValidation(nextValue)\n }\n\n onChange?.(event)\n },\n [length, onChange, onValueChange, runValidation, touched, validateOnChange, value]\n )\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n\n onBlur?.(event)\n },\n [currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) {\n onKeyDown?.(event)\n return\n }\n\n if (event.ctrlKey || event.metaKey) {\n onKeyDown?.(event)\n return\n }\n\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault()\n }\n\n onKeyDown?.(event)\n },\n [onKeyDown]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess = !isError && (success !== undefined ? success : touched && currentValue.length === length)\n const endIcon = isSuccess ? <MCheckIcon /> : undefined\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder ?? ''.padEnd(length, '0')}\n maxLength={length}\n endIcon={endIcon}\n inputClassName={cn('input-cvc-field', inputClassName)}\n className={className}\n />\n )\n})\n"],"mappings":"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"}