@banzamel/mineralui 2.4.3 → 2.5.2

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 (545) 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-BEJxXZ8u.js → MButtonGroup-DDnn8Wfy.js} +3 -3
  11. package/dist/{MButtonGroup-BEJxXZ8u.js.map → MButtonGroup-DDnn8Wfy.js.map} +1 -1
  12. package/dist/{MButtonGroup-DO1Tq3Za.cjs → MButtonGroup-Dz8Fm-oA.cjs} +2 -2
  13. package/dist/{MButtonGroup-DO1Tq3Za.cjs.map → MButtonGroup-Dz8Fm-oA.cjs.map} +1 -1
  14. package/dist/{MCard-P8OoswWM.cjs → MCard-Bqm4BjK_.cjs} +2 -2
  15. package/dist/MCard-Bqm4BjK_.cjs.map +1 -0
  16. package/dist/{MCard-BqSkGAgf.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-BR1GX5oK.cjs → MKbd-CnW3NUIu.cjs} +2 -2
  55. package/dist/{MKbd-BR1GX5oK.cjs.map → MKbd-CnW3NUIu.cjs.map} +1 -1
  56. package/dist/{MKbd-COb7oh_k.js → MKbd-DjfGyajR.js} +2 -2
  57. package/dist/{MKbd-COb7oh_k.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-Ui8cI0ho.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-Dhu-loDO.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/calendar-2yhnCkGW.cjs +2 -0
  115. package/dist/calendar-2yhnCkGW.cjs.map +1 -0
  116. package/dist/calendar-DcNYDTVb.js +195 -0
  117. package/dist/calendar-DcNYDTVb.js.map +1 -0
  118. package/dist/calendar.cjs +1 -1
  119. package/dist/calendar.js +1 -1
  120. package/dist/{calendarDates-M_Dawj0j.js → calendarDates-Bpw_G_QR.js} +30 -19
  121. package/dist/calendarDates-Bpw_G_QR.js.map +1 -0
  122. package/dist/calendarDates-Cg0nm69Y.cjs +2 -0
  123. package/dist/calendarDates-Cg0nm69Y.cjs.map +1 -0
  124. package/dist/cards-Bp886TRb.cjs +2 -0
  125. package/dist/cards-Bp886TRb.cjs.map +1 -0
  126. package/dist/cards-BvER6Gx0.js +1277 -0
  127. package/dist/cards-BvER6Gx0.js.map +1 -0
  128. package/dist/cards.cjs +1 -1
  129. package/dist/cards.js +2 -2
  130. package/dist/{cn-YER3QsV1.js → cn-CUSXNnjF.js} +1 -1
  131. package/dist/{cn-YER3QsV1.js.map → cn-CUSXNnjF.js.map} +1 -1
  132. package/dist/{cn-CU5TNITO.cjs → cn-DYFxgzi2.cjs} +1 -1
  133. package/dist/{cn-CU5TNITO.cjs.map → cn-DYFxgzi2.cjs.map} +1 -1
  134. package/dist/components/cards/MCardDaySchedule/MCardDaySchedule.d.ts +1 -1
  135. package/dist/components/cards/MCardDocumentTree/MCardDocumentTree.d.ts +1 -1
  136. package/dist/components/cards/MCardGrid/MCardGrid.d.ts +1 -1
  137. package/dist/components/cards/MCardPayment/MCardPayment.d.ts +1 -1
  138. package/dist/components/cards/MCardPayment/MCardPayment.types.d.ts +4 -0
  139. package/dist/components/cards/MCardPaymentMethod/MCardPaymentMethod.d.ts +1 -1
  140. package/dist/components/cards/MStatCard/MStatCard.d.ts +1 -1
  141. package/dist/components/controls/MCheckbox/MCheckbox.types.d.ts +6 -0
  142. package/dist/components/controls/MLoadMore/MLoadMore.d.ts +1 -1
  143. package/dist/components/controls/MSlider/MSlider.d.ts +1 -1
  144. package/dist/components/controls/MSlider/MSlider.types.d.ts +5 -0
  145. package/dist/components/data/MTreeView/MTreeView.d.ts +1 -1
  146. package/dist/components/data/MTreeView/MTreeView.types.d.ts +6 -0
  147. package/dist/components/data/MWeekGrid/MWeekGrid.d.ts +1 -1
  148. package/dist/components/data/MWeekGrid/MWeekGrid.types.d.ts +9 -3
  149. package/dist/components/display/MCodeBlock/MCodeBlock.d.ts +1 -1
  150. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.d.ts +1 -1
  151. package/dist/components/dropdowns/MAutocomplete/MAutocomplete.types.d.ts +8 -2
  152. package/dist/components/dropdowns/MSelect/MSelect.d.ts +1 -1
  153. package/dist/components/dropdowns/shared/TimeColumnListbox.d.ts +20 -0
  154. package/dist/components/feedback/MAlert/MAlert.d.ts +1 -1
  155. package/dist/components/feedback/MBadge/MBadge.d.ts +1 -1
  156. package/dist/components/feedback/MBanner/MBanner.d.ts +1 -1
  157. package/dist/components/feedback/MLoader/MLoader.d.ts +1 -1
  158. package/dist/components/feedback/MSpinner/MSpinner.d.ts +1 -1
  159. package/dist/components/feedback/MTag/MTag.d.ts +1 -1
  160. package/dist/components/inputs/MInput/MInput.types.d.ts +6 -1
  161. package/dist/components/inputs/MInput/useFormatCaret.d.ts +8 -0
  162. package/dist/components/layout/MCanvasGrid/MCanvasGrid.types.d.ts +5 -0
  163. package/dist/components/layout/MContainer/MContainer.d.ts +1 -1
  164. package/dist/components/layout/MDivider/MDivider.d.ts +1 -1
  165. package/dist/components/layout/MFooter/MFooter.d.ts +1 -1
  166. package/dist/components/layout/MHeader/MHeader.d.ts +1 -1
  167. package/dist/components/layout/MInline/MInline.d.ts +1 -1
  168. package/dist/components/layout/MNavbar/MNavbar.d.ts +1 -1
  169. package/dist/components/layout/MNavbar/MNavbar.types.d.ts +2 -0
  170. package/dist/components/layout/MSection/MSection.d.ts +1 -1
  171. package/dist/components/layout/MStack/MStack.d.ts +1 -1
  172. package/dist/components/layout/MStickyPanel/MStickyPanel.types.d.ts +4 -0
  173. package/dist/components/layout/MSurface/MSurface.d.ts +1 -1
  174. package/dist/components/media/MAvatar/MAvatar.d.ts +1 -1
  175. package/dist/components/media/MAvatar/MAvatar.types.d.ts +10 -0
  176. package/dist/components/media/MCarousel/MCarousel.d.ts +1 -1
  177. package/dist/components/media/MImage/MImage.d.ts +1 -1
  178. package/dist/components/media/carouselA11y.d.ts +9 -0
  179. package/dist/components/overlays/MCommandPalette/MCommandPalette.d.ts +1 -1
  180. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.d.ts +4 -2
  181. package/dist/components/overlays/MDropdownMenu/MDropdownMenu.types.d.ts +3 -1
  182. package/dist/components/overlays/MPopconfirm/MPopconfirm.d.ts +1 -1
  183. package/dist/components/overlays/scrollLock.d.ts +14 -0
  184. package/dist/components/primitives/MPopover/MPopover.d.ts +1 -1
  185. package/dist/components/primitives/MPopover/MPopover.types.d.ts +32 -1
  186. package/dist/components/primitives/MPopover/popoverStack.d.ts +6 -0
  187. package/dist/components/typography/MHeading/MHeading.d.ts +2 -3
  188. package/dist/components/typography/MSubText/MSubText.d.ts +1 -1
  189. package/dist/components/typography/MText/MText.d.ts +1 -1
  190. package/dist/controls-B4Dxaab4.js +491 -0
  191. package/dist/controls-B4Dxaab4.js.map +1 -0
  192. package/dist/controls-CyXEIOXD.cjs +2 -0
  193. package/dist/controls-CyXEIOXD.cjs.map +1 -0
  194. package/dist/controls.cjs +1 -1
  195. package/dist/controls.js +5 -5
  196. package/dist/creditCards-Bo2mrc53.cjs +2 -0
  197. package/dist/creditCards-Bo2mrc53.cjs.map +1 -0
  198. package/dist/{creditCards-D_iWmtG6.js → creditCards-DmDOyvcw.js} +20 -31
  199. package/dist/creditCards-DmDOyvcw.js.map +1 -0
  200. package/dist/data-BM3KG8oN.cjs +2 -0
  201. package/dist/data-BM3KG8oN.cjs.map +1 -0
  202. package/dist/data-qnR8OBmj.js +808 -0
  203. package/dist/data-qnR8OBmj.js.map +1 -0
  204. package/dist/data.cjs +1 -1
  205. package/dist/data.js +2 -2
  206. package/dist/{dateUtils-CUY6CRCf.js → dateUtils-B-ToNZq_.js} +5 -6
  207. package/dist/dateUtils-B-ToNZq_.js.map +1 -0
  208. package/dist/dateUtils-z2L7ZaxA.cjs +2 -0
  209. package/dist/dateUtils-z2L7ZaxA.cjs.map +1 -0
  210. package/dist/display-BLMOBofj.cjs +3 -0
  211. package/dist/display-BLMOBofj.cjs.map +1 -0
  212. package/dist/display-Dlb79lkA.js +968 -0
  213. package/dist/display-Dlb79lkA.js.map +1 -0
  214. package/dist/display.cjs +1 -1
  215. package/dist/display.js +2 -2
  216. package/dist/dropdowns-2_7VMEDo.js +2009 -0
  217. package/dist/dropdowns-2_7VMEDo.js.map +1 -0
  218. package/dist/dropdowns-DN7j8J-V.cjs +2 -0
  219. package/dist/dropdowns-DN7j8J-V.cjs.map +1 -0
  220. package/dist/dropdowns.cjs +1 -1
  221. package/dist/dropdowns.js +1 -1
  222. package/dist/feedback-CECayytY.js +335 -0
  223. package/dist/feedback-CECayytY.js.map +1 -0
  224. package/dist/feedback-paV8Ls-h.cjs +2 -0
  225. package/dist/feedback-paV8Ls-h.cjs.map +1 -0
  226. package/dist/feedback.cjs +1 -1
  227. package/dist/feedback.js +5 -5
  228. package/dist/form-Br56h5EF.cjs +2 -0
  229. package/dist/form-Br56h5EF.cjs.map +1 -0
  230. package/dist/form-CJmMZgsH.js +165 -0
  231. package/dist/form-CJmMZgsH.js.map +1 -0
  232. package/dist/form.cjs +1 -1
  233. package/dist/form.js +1 -1
  234. package/dist/{formatters-CNjg_h7-.cjs → formatters-CauWlsnM.cjs} +1 -1
  235. package/dist/{formatters-CNjg_h7-.cjs.map → formatters-CauWlsnM.cjs.map} +1 -1
  236. package/dist/{formatters-T0vvjMtB.js → formatters-Doqdu_w1.js} +1 -1
  237. package/dist/{formatters-T0vvjMtB.js.map → formatters-Doqdu_w1.js.map} +1 -1
  238. package/dist/frameworkTexts-CaqdiKHW.cjs +2 -0
  239. package/dist/frameworkTexts-CaqdiKHW.cjs.map +1 -0
  240. package/dist/frameworkTexts-o43FqY1A.js +505 -0
  241. package/dist/frameworkTexts-o43FqY1A.js.map +1 -0
  242. package/dist/i18n/MI18nProvider.d.ts +6 -1
  243. package/dist/i18n/frameworkTexts.d.ts +511 -0
  244. package/dist/i18n/index.d.ts +1 -0
  245. package/dist/i18n.cjs +1 -1
  246. package/dist/i18n.js +2 -2
  247. package/dist/icons-Bp8bB9TP.cjs +2 -0
  248. package/dist/icons-Bp8bB9TP.cjs.map +1 -0
  249. package/dist/{icons-CBMl-kOM.js → icons-IqEBmGh3.js} +1223 -1220
  250. package/dist/icons-IqEBmGh3.js.map +1 -0
  251. package/dist/icons.cjs +1 -1
  252. package/dist/icons.js +1 -1
  253. package/dist/illustrations.cjs +1 -1
  254. package/dist/illustrations.js +1 -1
  255. package/dist/index.cjs +1 -1
  256. package/dist/index.d.ts +4 -2
  257. package/dist/index.js +56 -56
  258. package/dist/inputs-C0BJzlA-.js +1923 -0
  259. package/dist/inputs-C0BJzlA-.js.map +1 -0
  260. package/dist/inputs-CvNBBLFA.cjs +2 -0
  261. package/dist/inputs-CvNBBLFA.cjs.map +1 -0
  262. package/dist/inputs.cjs +1 -1
  263. package/dist/inputs.js +4 -4
  264. package/dist/layout-BSFqGXLZ.js +1101 -0
  265. package/dist/layout-BSFqGXLZ.js.map +1 -0
  266. package/dist/layout-MKqvUkPv.cjs +2 -0
  267. package/dist/layout-MKqvUkPv.cjs.map +1 -0
  268. package/dist/layout.cjs +1 -1
  269. package/dist/layout.js +6 -6
  270. package/dist/{layoutProps-Ck4VtGm9.cjs → layoutProps-B8y2XwHy.cjs} +1 -1
  271. package/dist/{layoutProps-Ck4VtGm9.cjs.map → layoutProps-B8y2XwHy.cjs.map} +1 -1
  272. package/dist/{layoutProps-Cl6d1KmH.js → layoutProps-CE5-ghKw.js} +1 -1
  273. package/dist/{layoutProps-Cl6d1KmH.js.map → layoutProps-CE5-ghKw.js.map} +1 -1
  274. package/dist/{licensing-f5KYVz7D.js → licensing-BKmoAdfr.js} +5 -4
  275. package/dist/licensing-BKmoAdfr.js.map +1 -0
  276. package/dist/licensing-DVgjkw-s.cjs +2 -0
  277. package/dist/licensing-DVgjkw-s.cjs.map +1 -0
  278. package/dist/media-fiasAbBv.js +485 -0
  279. package/dist/media-fiasAbBv.js.map +1 -0
  280. package/dist/media-tr1s386v.cjs +2 -0
  281. package/dist/media-tr1s386v.cjs.map +1 -0
  282. package/dist/media.cjs +1 -1
  283. package/dist/media.js +2 -2
  284. package/dist/overlays-Df-NpmkW.cjs +2 -0
  285. package/dist/overlays-Df-NpmkW.cjs.map +1 -0
  286. package/dist/overlays-W0WW3fn7.js +607 -0
  287. package/dist/overlays-W0WW3fn7.js.map +1 -0
  288. package/dist/overlays.cjs +1 -1
  289. package/dist/overlays.js +3 -3
  290. package/dist/primitives.cjs +1 -1
  291. package/dist/primitives.js +2 -2
  292. package/dist/radioGroupKeys-Bm-Qeh8G.js +28 -0
  293. package/dist/radioGroupKeys-Bm-Qeh8G.js.map +1 -0
  294. package/dist/radioGroupKeys-COL8uXbH.cjs +2 -0
  295. package/dist/radioGroupKeys-COL8uXbH.cjs.map +1 -0
  296. package/dist/{relativeTime-Cr-NVzij.js → relativeTime-BqCuaBqb.js} +1 -1
  297. package/dist/{relativeTime-Cr-NVzij.js.map → relativeTime-BqCuaBqb.js.map} +1 -1
  298. package/dist/{relativeTime-DgYBUaVm.cjs → relativeTime-DUbW4O44.cjs} +1 -1
  299. package/dist/{relativeTime-DgYBUaVm.cjs.map → relativeTime-DUbW4O44.cjs.map} +1 -1
  300. package/dist/scrollLock-C9P9o6wH.cjs +2 -0
  301. package/dist/scrollLock-C9P9o6wH.cjs.map +1 -0
  302. package/dist/scrollLock-D27VmgPV.js +14 -0
  303. package/dist/scrollLock-D27VmgPV.js.map +1 -0
  304. package/dist/style-runtime.cjs +1 -1
  305. package/dist/style-runtime.js +1 -1
  306. package/dist/styles.css +1 -1
  307. package/dist/theme/MThemeProvider.d.ts +18 -1
  308. package/dist/theme/index.d.ts +2 -2
  309. package/dist/{theme-DAOU1aPs.js → theme-B_juOenJ.js} +71 -61
  310. package/dist/theme-B_juOenJ.js.map +1 -0
  311. package/dist/theme-ByPZH0dh.cjs +2 -0
  312. package/dist/theme-ByPZH0dh.cjs.map +1 -0
  313. package/dist/theme.cjs +1 -1
  314. package/dist/theme.js +2 -2
  315. package/dist/{typography-C806GYT4.js → typography-DNcB8dOy.js} +3 -3
  316. package/dist/{typography-C806GYT4.js.map → typography-DNcB8dOy.js.map} +1 -1
  317. package/dist/{typography-4v01oNWx.cjs → typography-I7aeG8pH.cjs} +2 -2
  318. package/dist/{typography-4v01oNWx.cjs.map → typography-I7aeG8pH.cjs.map} +1 -1
  319. package/dist/typography.cjs +1 -1
  320. package/dist/typography.js +6 -6
  321. package/dist/useGhostText-CKsb8Ufa.js +240 -0
  322. package/dist/useGhostText-CKsb8Ufa.js.map +1 -0
  323. package/dist/useGhostText-DO-tfxS0.cjs +2 -0
  324. package/dist/useGhostText-DO-tfxS0.cjs.map +1 -0
  325. package/dist/useModalLayer-CpOPSDbf.js +128 -0
  326. package/dist/useModalLayer-CpOPSDbf.js.map +1 -0
  327. package/dist/useModalLayer-Cyt93Prs.cjs +2 -0
  328. package/dist/useModalLayer-Cyt93Prs.cjs.map +1 -0
  329. package/dist/utils/calendarDates.d.ts +5 -0
  330. package/dist/utils/radioGroupKeys.d.ts +9 -0
  331. package/dist/utils/useDateGridNav.d.ts +39 -0
  332. package/dist/utils/useGhostText.d.ts +2 -1
  333. package/dist/utils/useKeyboardNav.d.ts +51 -5
  334. package/dist/utils/useModalLayer.d.ts +4 -0
  335. package/dist/utils/useRovingToolbar.d.ts +26 -0
  336. package/dist/utils/validationMessages.d.ts +15 -0
  337. package/dist/utils.cjs +1 -1
  338. package/dist/utils.entry.d.ts +3 -1
  339. package/dist/utils.js +11 -11
  340. package/dist/validationMessages-BFimXxlT.js +23 -0
  341. package/dist/validationMessages-BFimXxlT.js.map +1 -0
  342. package/dist/validationMessages-iHu7apWr.cjs +2 -0
  343. package/dist/validationMessages-iHu7apWr.cjs.map +1 -0
  344. package/dist/validators-SZmLxnir.cjs +2 -0
  345. package/dist/validators-SZmLxnir.cjs.map +1 -0
  346. package/dist/{validators-DVYOtFnw.js → validators-ULebNme2.js} +107 -106
  347. package/dist/validators-ULebNme2.js.map +1 -0
  348. package/package.json +1 -1
  349. package/dist/MAvatar-DHNB3829.cjs +0 -2
  350. package/dist/MAvatar-DHNB3829.cjs.map +0 -1
  351. package/dist/MAvatar-GeRL-CNO.js +0 -63
  352. package/dist/MAvatar-GeRL-CNO.js.map +0 -1
  353. package/dist/MButton-CEwo8lUB.js +0 -115
  354. package/dist/MButton-CEwo8lUB.js.map +0 -1
  355. package/dist/MButton-CnAr77Za.cjs +0 -2
  356. package/dist/MButton-CnAr77Za.cjs.map +0 -1
  357. package/dist/MCard-BqSkGAgf.js.map +0 -1
  358. package/dist/MCard-P8OoswWM.cjs.map +0 -1
  359. package/dist/MCheckbox-BxFBADcE.js +0 -59
  360. package/dist/MCheckbox-BxFBADcE.js.map +0 -1
  361. package/dist/MCheckbox-DozwF2ai.cjs +0 -2
  362. package/dist/MCheckbox-DozwF2ai.cjs.map +0 -1
  363. package/dist/MConflictIllustration-2QL-BHYv.cjs +0 -2
  364. package/dist/MConflictIllustration-2QL-BHYv.cjs.map +0 -1
  365. package/dist/MConflictIllustration-znC7ijmP.js.map +0 -1
  366. package/dist/MDetailList-CThQvoyf.cjs +0 -2
  367. package/dist/MDetailList-CThQvoyf.cjs.map +0 -1
  368. package/dist/MDetailList-Cx9H81xT.js +0 -98
  369. package/dist/MDetailList-Cx9H81xT.js.map +0 -1
  370. package/dist/MDropdownMenu-DnKcCyW6.cjs +0 -2
  371. package/dist/MDropdownMenu-DnKcCyW6.cjs.map +0 -1
  372. package/dist/MDropdownMenu-DxbKN7Ui.js +0 -172
  373. package/dist/MDropdownMenu-DxbKN7Ui.js.map +0 -1
  374. package/dist/MGrid-BkRSGN2t.cjs +0 -2
  375. package/dist/MGrid-BkRSGN2t.cjs.map +0 -1
  376. package/dist/MGrid-CIz-2i6X.js +0 -265
  377. package/dist/MGrid-CIz-2i6X.js.map +0 -1
  378. package/dist/MHeading-AYQ8_GFP.cjs +0 -2
  379. package/dist/MHeading-AYQ8_GFP.cjs.map +0 -1
  380. package/dist/MHeading-DcGxUMwC.js +0 -21
  381. package/dist/MHeading-DcGxUMwC.js.map +0 -1
  382. package/dist/MI18nProvider-CqAwaswx.cjs +0 -2
  383. package/dist/MI18nProvider-CqAwaswx.cjs.map +0 -1
  384. package/dist/MI18nProvider-VH14CI8u.js +0 -72
  385. package/dist/MI18nProvider-VH14CI8u.js.map +0 -1
  386. package/dist/MInput-BYj2BdUe.cjs +0 -2
  387. package/dist/MInput-BYj2BdUe.cjs.map +0 -1
  388. package/dist/MInput-nodE-CZF.js +0 -188
  389. package/dist/MInput-nodE-CZF.js.map +0 -1
  390. package/dist/MInputCVC-9XWryaTz.cjs +0 -2
  391. package/dist/MInputCVC-9XWryaTz.cjs.map +0 -1
  392. package/dist/MInputCVC-CrDTaUXm.js +0 -321
  393. package/dist/MInputCVC-CrDTaUXm.js.map +0 -1
  394. package/dist/MInputSearch-BMgCHjFk.js +0 -43
  395. package/dist/MInputSearch-BMgCHjFk.js.map +0 -1
  396. package/dist/MInputSearch-BiVI1jNc.cjs +0 -2
  397. package/dist/MInputSearch-BiVI1jNc.cjs.map +0 -1
  398. package/dist/MLink-CAl6N6_z.js +0 -31
  399. package/dist/MLink-CAl6N6_z.js.map +0 -1
  400. package/dist/MLink-Dk_ReE6i.cjs +0 -2
  401. package/dist/MLink-Dk_ReE6i.cjs.map +0 -1
  402. package/dist/MLoader-CYp0OJU_.js +0 -41
  403. package/dist/MLoader-CYp0OJU_.js.map +0 -1
  404. package/dist/MLoader-DvmFle31.cjs +0 -2
  405. package/dist/MLoader-DvmFle31.cjs.map +0 -1
  406. package/dist/MPagination-E7IixIeo.js +0 -113
  407. package/dist/MPagination-E7IixIeo.js.map +0 -1
  408. package/dist/MPagination-reDU9xTW.cjs +0 -2
  409. package/dist/MPagination-reDU9xTW.cjs.map +0 -1
  410. package/dist/MPopover-8gYD3Ogq.js +0 -118
  411. package/dist/MPopover-8gYD3Ogq.js.map +0 -1
  412. package/dist/MPopover-B3npyAkL.cjs +0 -2
  413. package/dist/MPopover-B3npyAkL.cjs.map +0 -1
  414. package/dist/MPortal-Ba2Sxset.js +0 -10
  415. package/dist/MPortal-Ba2Sxset.js.map +0 -1
  416. package/dist/MPortal-CuBXhhl_.cjs +0 -2
  417. package/dist/MPortal-CuBXhhl_.cjs.map +0 -1
  418. package/dist/MSimpleGrid-BchGYPMi.cjs +0 -2
  419. package/dist/MSimpleGrid-BchGYPMi.cjs.map +0 -1
  420. package/dist/MSimpleGrid-Ui8cI0ho.js.map +0 -1
  421. package/dist/MSkeleton-DPa_G_2X.cjs +0 -2
  422. package/dist/MSkeleton-DPa_G_2X.cjs.map +0 -1
  423. package/dist/MSkeleton-Dhu-loDO.js.map +0 -1
  424. package/dist/MSlider-BRjhyBSc.js +0 -75
  425. package/dist/MSlider-BRjhyBSc.js.map +0 -1
  426. package/dist/MSlider-w5214a-W.cjs +0 -2
  427. package/dist/MSlider-w5214a-W.cjs.map +0 -1
  428. package/dist/MStack-Dt-rWvg3.js +0 -39
  429. package/dist/MStack-Dt-rWvg3.js.map +0 -1
  430. package/dist/MStack-nc6Y_9K3.cjs +0 -2
  431. package/dist/MStack-nc6Y_9K3.cjs.map +0 -1
  432. package/dist/MSubText-B0tXiuAp.js +0 -17
  433. package/dist/MSubText-B0tXiuAp.js.map +0 -1
  434. package/dist/MSubText-C6v6Exa2.cjs +0 -2
  435. package/dist/MSubText-C6v6Exa2.cjs.map +0 -1
  436. package/dist/MSurface-BjE-mL1L.cjs +0 -2
  437. package/dist/MSurface-BjE-mL1L.cjs.map +0 -1
  438. package/dist/MSurface-CpDJCdb5.js +0 -74
  439. package/dist/MSurface-CpDJCdb5.js.map +0 -1
  440. package/dist/MTag-BgOxiahL.cjs +0 -2
  441. package/dist/MTag-BgOxiahL.cjs.map +0 -1
  442. package/dist/MTag-cw3cIGHX.js +0 -41
  443. package/dist/MTag-cw3cIGHX.js.map +0 -1
  444. package/dist/MText-BDI4mdw8.cjs +0 -2
  445. package/dist/MText-BDI4mdw8.cjs.map +0 -1
  446. package/dist/MText-DhbAjtUE.js +0 -45
  447. package/dist/MText-DhbAjtUE.js.map +0 -1
  448. package/dist/MTooltip-BAgHlv5I.cjs +0 -2
  449. package/dist/MTooltip-BAgHlv5I.cjs.map +0 -1
  450. package/dist/MTooltip-CJxvlkOX.js +0 -92
  451. package/dist/MTooltip-CJxvlkOX.js.map +0 -1
  452. package/dist/MTreeView-DsBnYQMT.js +0 -315
  453. package/dist/MTreeView-DsBnYQMT.js.map +0 -1
  454. package/dist/MTreeView-LiJ5o-zy.cjs +0 -2
  455. package/dist/MTreeView-LiJ5o-zy.cjs.map +0 -1
  456. package/dist/calendar-Bq6NMNnS.js +0 -193
  457. package/dist/calendar-Bq6NMNnS.js.map +0 -1
  458. package/dist/calendar-C57BH8Nd.cjs +0 -2
  459. package/dist/calendar-C57BH8Nd.cjs.map +0 -1
  460. package/dist/calendarDates-M_Dawj0j.js.map +0 -1
  461. package/dist/calendarDates-qm047RW2.cjs +0 -2
  462. package/dist/calendarDates-qm047RW2.cjs.map +0 -1
  463. package/dist/cards-D4xJVd4q.js +0 -1227
  464. package/dist/cards-D4xJVd4q.js.map +0 -1
  465. package/dist/cards-Du6dbZSQ.cjs +0 -2
  466. package/dist/cards-Du6dbZSQ.cjs.map +0 -1
  467. package/dist/controls-BKoc_yel.js +0 -475
  468. package/dist/controls-BKoc_yel.js.map +0 -1
  469. package/dist/controls-Ck-PMt__.cjs +0 -2
  470. package/dist/controls-Ck-PMt__.cjs.map +0 -1
  471. package/dist/creditCards-D_HwRUBz.cjs +0 -2
  472. package/dist/creditCards-D_HwRUBz.cjs.map +0 -1
  473. package/dist/creditCards-D_iWmtG6.js.map +0 -1
  474. package/dist/data-CdQximqm.js +0 -689
  475. package/dist/data-CdQximqm.js.map +0 -1
  476. package/dist/data-PS4ygCyj.cjs +0 -2
  477. package/dist/data-PS4ygCyj.cjs.map +0 -1
  478. package/dist/dateUtils-CUY6CRCf.js.map +0 -1
  479. package/dist/dateUtils-Dq1vaA-D.cjs +0 -2
  480. package/dist/dateUtils-Dq1vaA-D.cjs.map +0 -1
  481. package/dist/display-YC1fVpXA.js +0 -782
  482. package/dist/display-YC1fVpXA.js.map +0 -1
  483. package/dist/display-slIo1bQI.cjs +0 -3
  484. package/dist/display-slIo1bQI.cjs.map +0 -1
  485. package/dist/dropdowns-DFbUoZ8Q.cjs +0 -2
  486. package/dist/dropdowns-DFbUoZ8Q.cjs.map +0 -1
  487. package/dist/dropdowns-nW3MY5XG.js +0 -1715
  488. package/dist/dropdowns-nW3MY5XG.js.map +0 -1
  489. package/dist/feedback-6MNb2Xyk.cjs +0 -2
  490. package/dist/feedback-6MNb2Xyk.cjs.map +0 -1
  491. package/dist/feedback-CPwJaQHY.js +0 -259
  492. package/dist/feedback-CPwJaQHY.js.map +0 -1
  493. package/dist/form-CMsZo6Dm.cjs +0 -2
  494. package/dist/form-CMsZo6Dm.cjs.map +0 -1
  495. package/dist/form-WU6DcQGD.js +0 -164
  496. package/dist/form-WU6DcQGD.js.map +0 -1
  497. package/dist/frameworkTexts-BSXUtXOp.cjs +0 -2
  498. package/dist/frameworkTexts-BSXUtXOp.cjs.map +0 -1
  499. package/dist/frameworkTexts-DP5RUl19.js +0 -131
  500. package/dist/frameworkTexts-DP5RUl19.js.map +0 -1
  501. package/dist/icons-CBMl-kOM.js.map +0 -1
  502. package/dist/icons-D3n9-919.cjs +0 -2
  503. package/dist/icons-D3n9-919.cjs.map +0 -1
  504. package/dist/inputs-B7rGMLMr.js +0 -1753
  505. package/dist/inputs-B7rGMLMr.js.map +0 -1
  506. package/dist/inputs-BiN62hgH.cjs +0 -2
  507. package/dist/inputs-BiN62hgH.cjs.map +0 -1
  508. package/dist/layout-BMggJ_qO.cjs +0 -2
  509. package/dist/layout-BMggJ_qO.cjs.map +0 -1
  510. package/dist/layout-DBYHyCTr.js +0 -883
  511. package/dist/layout-DBYHyCTr.js.map +0 -1
  512. package/dist/licensing-Be3g-PJt.cjs +0 -2
  513. package/dist/licensing-Be3g-PJt.cjs.map +0 -1
  514. package/dist/licensing-f5KYVz7D.js.map +0 -1
  515. package/dist/media-BPzMgzqE.js +0 -405
  516. package/dist/media-BPzMgzqE.js.map +0 -1
  517. package/dist/media-D63hxCAJ.cjs +0 -2
  518. package/dist/media-D63hxCAJ.cjs.map +0 -1
  519. package/dist/overlays-CCeYD6hT.js +0 -555
  520. package/dist/overlays-CCeYD6hT.js.map +0 -1
  521. package/dist/overlays-CsRN5OG8.cjs +0 -2
  522. package/dist/overlays-CsRN5OG8.cjs.map +0 -1
  523. package/dist/popoverStack--0r2oJCD.js +0 -44
  524. package/dist/popoverStack--0r2oJCD.js.map +0 -1
  525. package/dist/popoverStack-BmMk-VZJ.cjs +0 -2
  526. package/dist/popoverStack-BmMk-VZJ.cjs.map +0 -1
  527. package/dist/theme-CJuqObWL.cjs +0 -2
  528. package/dist/theme-CJuqObWL.cjs.map +0 -1
  529. package/dist/theme-DAOU1aPs.js.map +0 -1
  530. package/dist/useGhostText-DG0bzcao.js +0 -68
  531. package/dist/useGhostText-DG0bzcao.js.map +0 -1
  532. package/dist/useGhostText-mibV4s1-.cjs +0 -2
  533. package/dist/useGhostText-mibV4s1-.cjs.map +0 -1
  534. package/dist/useKeyboardNav-CCUoRMgm.cjs +0 -2
  535. package/dist/useKeyboardNav-CCUoRMgm.cjs.map +0 -1
  536. package/dist/useKeyboardNav-iEXOdEMB.js +0 -43
  537. package/dist/useKeyboardNav-iEXOdEMB.js.map +0 -1
  538. package/dist/useModalLayer-Bf4TcEz-.js +0 -58
  539. package/dist/useModalLayer-Bf4TcEz-.js.map +0 -1
  540. package/dist/useModalLayer-DxYhhgRO.cjs +0 -2
  541. package/dist/useModalLayer-DxYhhgRO.cjs.map +0 -1
  542. package/dist/utils/proActivationWarning.d.ts +0 -7
  543. package/dist/validators-B6yWdsu2.cjs +0 -2
  544. package/dist/validators-B6yWdsu2.cjs.map +0 -1
  545. package/dist/validators-DVYOtFnw.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs-C0BJzlA-.js","names":[],"sources":["../src/components/inputs/MTextarea/MTextarea.tsx","../src/components/inputs/MInputPassword/MInputPassword.tsx","../src/components/inputs/MInputNumber/MInputNumber.tsx","../src/components/inputs/MInputEmail/MInputEmail.tsx","../src/components/inputs/MInputUrl/MInputUrl.tsx","../src/components/inputs/MInput/useFormatCaret.ts","../src/components/inputs/MInputPhone/MInputPhone.tsx","../src/components/inputs/MInputName/MInputName.tsx","../src/components/inputs/MInputGroup/MInputGroup.tsx","../src/components/inputs/MInputIBAN/MInputIBAN.tsx","../src/components/inputs/MInputTaxId/MInputTaxId.tsx","../src/components/inputs/MInputCurrency/MInputCurrency.tsx","../src/components/inputs/MInputDate/MInputDate.tsx","../src/components/inputs/MInputCreditCard/MInputCreditCard.tsx","../src/components/inputs/MInputPostCode/MInputPostCode.tsx","../src/components/inputs/MInputOTP/MInputOTP.tsx","../src/components/inputs/MInputSlider/MInputSlider.tsx","../src/components/inputs/MInputFile/MCropEditor.tsx","../src/components/inputs/MInputFile/MInputFile.tsx"],"sourcesContent":["import {useState, useRef, useCallback, useEffect, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MTextareaProps} from './MTextarea.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport {useGhostText} from '../../../utils/useGhostText'\nimport {MSpinner} from '../../feedback'\nimport './MTextarea.css'\n\n// Render the multiline text input with optional auto-resize behavior.\nexport const MTextarea = forwardRef<HTMLTextAreaElement, MTextareaProps>(function MTextarea(\n {\n value,\n defaultValue,\n name,\n id,\n placeholder,\n disabled = false,\n readOnly = false,\n required = false,\n autoFocus = false,\n rows = 3,\n autoResize = false,\n minRows,\n maxRows,\n variant = 'outlined',\n size = 'md',\n color,\n fullWidth = false,\n label,\n helperText,\n errorText,\n error = false,\n success = false,\n maxLength,\n showCharCount = false,\n ghostOptions,\n ghostMinChars = 2,\n onGhostAccept,\n loading = false,\n onChange,\n onFocus,\n onBlur,\n className,\n style,\n textareaClassName,\n labelClassName,\n },\n ref\n) {\n const [focused, setFocused] = useState(false)\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n\n const {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 resolvedColorClass = hasError ? 'color-error' : color ? `color-${color}` : undefined\n const resolvedRef = ref ?? textareaRef\n\n // Resize the textarea to fit content while respecting min and max row limits.\n const adjustHeight = useCallback(() => {\n const el = typeof resolvedRef === 'function' ? null : resolvedRef?.current\n if (!el || !autoResize) return\n\n el.style.height = 'auto'\n const computed = getComputedStyle(el)\n const lineHeight = parseFloat(computed.lineHeight) || 20\n // Row limits apply to the text area only — padding (and border for\n // border-box) sit on top so `maxRows` really shows that many lines.\n const padding = (parseFloat(computed.paddingTop) || 0) + (parseFloat(computed.paddingBottom) || 0)\n const border =\n computed.boxSizing === 'border-box'\n ? (parseFloat(computed.borderTopWidth) || 0) + (parseFloat(computed.borderBottomWidth) || 0)\n : 0\n const contentHeight = Math.max(el.scrollHeight - padding, 0)\n const minContent = minRows ? minRows * lineHeight : 0\n const maxContent = maxRows ? maxRows * lineHeight : Infinity\n const nextContent = Math.min(Math.max(contentHeight, minContent), maxContent)\n const extra = computed.boxSizing === 'border-box' ? padding + border : 0\n el.style.height = `${nextContent + extra}px`\n el.style.overflowY = contentHeight - nextContent > 1 ? 'auto' : 'hidden'\n }, [autoResize, minRows, maxRows, resolvedRef])\n\n useEffect(() => {\n adjustHeight()\n }, [currentValue, adjustHeight])\n\n // Mirror focus state so wrapper styling stays consistent with MInput.\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setFocused(true)\n onFocus?.(e)\n },\n [onFocus]\n )\n\n // Clear focus styling before delegating blur handling.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setFocused(false)\n onBlur?.(e)\n },\n [onBlur]\n )\n\n // Keep uncontrolled usage working without blocking controlled integrations.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setCurrentValue(e.target.value)\n onChange?.(e)\n ghost.reset()\n },\n [onChange, setCurrentValue, ghost.reset]\n )\n\n // Intercept keyboard events for ghost text acceptance.\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (ghostOptions && ghost.hint) {\n const accepted = ghost.onKeyDown(e)\n if (accepted) {\n const result = ghost.accept()\n setCurrentValue(result.value)\n onGhostAccept?.(result.value)\n const el = typeof resolvedRef === 'function' ? null : resolvedRef?.current\n if (el) {\n const nativeSet = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value')?.set\n nativeSet?.call(el, result.value)\n el.dispatchEvent(new Event('input', {bubbles: true}))\n }\n return\n }\n }\n },\n [ghostOptions, ghost, setCurrentValue, onGhostAccept, resolvedRef]\n )\n\n const containerClasses = cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'error',\n success && !hasError && 'success',\n disabled && 'disabled'\n )\n\n return (\n <div className={cn('textarea', 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}>\n {ghostOptions ? (\n <div className=\"ghost-text-field ghost-text-field-multi\">\n <textarea\n ref={resolvedRef as React.Ref<HTMLTextAreaElement>}\n name={name}\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n rows={autoResize ? (minRows ?? rows) : rows}\n maxLength={maxLength}\n value={currentValue}\n className={cn('field', textareaClassName)}\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 <textarea\n ref={resolvedRef as React.Ref<HTMLTextAreaElement>}\n name={name}\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n autoFocus={autoFocus}\n rows={autoResize ? (minRows ?? rows) : rows}\n maxLength={maxLength}\n value={currentValue}\n className={cn('field', textareaClassName)}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n aria-invalid={hasError || undefined}\n aria-describedby={errorText ? `${id}-error` : helperText ? `${id}-helper` : undefined}\n />\n )}\n {loading && <MSpinner size=\"sm\" color={color} className=\"textarea-spinner\" />}\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","import {useState, useCallback, useEffect, useId, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputPasswordProps, MPasswordStrength} from './MInputPassword.types'\nimport {MInput} from '../MInput'\nimport {MEyeIcon, MEyeOffIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MInputPassword.css'\nimport {formatMText, useMInputTexts} from '../../../i18n/frameworkTexts'\n\n// Approximate password strength with simple UI-focused heuristics.\nfunction calcStrength(value: string): MPasswordStrength {\n let score = 0\n if (value.length >= 8) score++\n if (value.length >= 12) score++\n if (/[a-z]/.test(value) && /[A-Z]/.test(value)) score++\n if (/\\d/.test(value)) score++\n if (/[^a-zA-Z0-9]/.test(value)) score++\n\n if (score <= 1) return 'weak'\n if (score <= 2) return 'fair'\n if (score <= 3) return 'good'\n return 'strong'\n}\n\n// Extend the base input with password visibility and optional strength feedback.\nexport const MInputPassword = forwardRef<HTMLInputElement, MInputPasswordProps>(function MInputPassword(\n {showToggle = true, showStrength = false, onStrengthChange, value, defaultValue, onChange, className, id, ...rest},\n ref\n) {\n const texts = useMInputTexts()\n const generatedId = useId()\n const inputId = id ?? generatedId\n const [visible, setVisible] = useState(false)\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const currentValue = value !== undefined ? value.toString() : internalValue\n const strength = calcStrength(currentValue)\n\n useEffect(() => {\n onStrengthChange?.(strength)\n }, [strength, onStrengthChange])\n\n // Keep uncontrolled usage working while reporting changes to the caller.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n },\n [onChange, value]\n )\n\n // APG toggle button: reachable with Tab, constant name, state carried by `aria-pressed`.\n const toggleIcon = showToggle ? (\n <button\n type=\"button\"\n className=\"password toggle\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setVisible((v) => !v)}\n aria-label={texts.showPassword}\n aria-pressed={visible}\n aria-controls={inputId}\n disabled={rest.disabled}\n >\n {visible ? <MEyeOffIcon /> : <MEyeIcon />}\n </button>\n ) : undefined\n\n return (\n <div className={cn('password input', className)}>\n <MInput\n {...rest}\n ref={ref}\n id={inputId}\n type={visible ? 'text' : 'password'}\n value={currentValue}\n onChange={handleChange}\n endIcon={toggleIcon}\n />\n {showStrength && currentValue.length > 0 && (\n <div className=\"password strength row\">\n <div className=\"password strength bar\" aria-hidden=\"true\">\n {[0, 1, 2, 3].map((i) => (\n <div\n key={i}\n className={cn(\n 'password strength segment',\n i < ['weak', 'fair', 'good', 'strong'].indexOf(strength) + 1 &&\n `strength-${strength}`\n )}\n />\n ))}\n </div>\n <span className={cn('password strength label', `strength-${strength}`)} aria-hidden=\"true\">\n {texts.strength[strength]}\n </span>\n </div>\n )}\n {showStrength && (\n // Kept mounted so screen readers pick up every change of the live region.\n <span className=\"password strength announcement\" role=\"status\" aria-live=\"polite\">\n {currentValue.length > 0\n ? formatMText(texts.passwordStrength, {strength: texts.strength[strength]})\n : ''}\n </span>\n )}\n </div>\n )\n})\n","import {useState, useCallback, useRef, useEffect, useId, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputNumberProps} from './MInputNumber.types'\nimport {MInput} from '../MInput'\nimport {cn} from '../../../utils/cn'\nimport {MChevronDownIcon, MChevronUpIcon} from '../../../icons'\nimport './MInputNumber.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\n// Keep numeric values inside optional min and max bounds.\nfunction clampValue(val: number, min?: number, max?: number): number {\n if (min !== undefined && val < min) return min\n if (max !== undefined && val > max) return max\n return val\n}\n\n// Prevent floating-point drift when step values use decimal precision.\nfunction roundToPrecision(val: number, precision: number): number {\n const factor = Math.pow(10, precision)\n return Math.round(val * factor) / factor\n}\n\n// Parse user input, accepting a comma as the decimal separator (`1,5` → 1.5).\nfunction parseNumber(val: string): number {\n return parseFloat(val.replace(',', '.'))\n}\n\n// Extend the base input with stepping, clamping and keyboard increment support.\nexport const MInputNumber = forwardRef<HTMLInputElement, MInputNumberProps>(function MInputNumber(\n {\n min,\n max,\n step = 1,\n showStepper = true,\n precision = 0,\n allowNegative = true,\n onValueChange,\n value,\n defaultValue,\n onChange,\n onKeyDown,\n onBlur,\n disabled = false,\n className,\n id: idProp,\n inputProps,\n ...rest\n },\n ref\n) {\n const texts = useMCommonTexts()\n // The steppers point at the input through `aria-controls`, so the id must always exist.\n const generatedId = useId()\n const inputId = idProp ?? generatedId\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const currentValue = value !== undefined ? value.toString() : internalValue\n const intervalRef = useRef<ReturnType<typeof setInterval>>(null)\n const currentValueRef = useRef(currentValue)\n\n useEffect(() => {\n currentValueRef.current = currentValue\n }, [currentValue])\n\n // Keep the displayed string and numeric callback in sync.\n const updateValue = useCallback(\n (newVal: string) => {\n if (value === undefined) {\n setInternalValue(newVal)\n }\n const num = parseNumber(newVal)\n onValueChange?.(isNaN(num) ? null : num)\n },\n [value, onValueChange]\n )\n\n // Commit an already computed numeric value (clamped and rounded).\n const commitNumber = useCallback(\n (next: number) => {\n const newVal = roundToPrecision(clampValue(next, min, max), precision)\n currentValueRef.current = newVal.toString()\n updateValue(newVal.toString())\n },\n [min, max, precision, updateValue]\n )\n\n // Move the current value by `multiplier` steps in the requested direction.\n const increment = useCallback(\n (direction: 1 | -1, multiplier = 1) => {\n const current = parseNumber(currentValueRef.current) || 0\n commitNumber(current + step * multiplier * direction)\n },\n [step, commitNumber]\n )\n\n // Repeat stepping while the pointer is held on a stepper button.\n const startHold = useCallback(\n (direction: 1 | -1) => {\n increment(direction)\n intervalRef.current = setInterval(() => increment(direction), 150)\n },\n [increment]\n )\n\n // Clear the hold timer when the pointer is released.\n const stopHold = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current)\n intervalRef.current = null\n }\n }, [])\n\n useEffect(() => stopHold, [stopHold])\n\n // Filter user input down to numeric characters before storing it.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n const filtered = raw.replace(allowNegative ? /[^\\d.,-]/g : /[^\\d.,]/g, '')\n currentValueRef.current = filtered\n updateValue(filtered)\n onChange?.(e)\n },\n [onChange, allowNegative, updateValue]\n )\n\n // Snap the entered value back into range when the field loses focus.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n const num = parseNumber(currentValueRef.current)\n if (!isNaN(num)) {\n const clamped = roundToPrecision(clampValue(num, min, max), precision)\n currentValueRef.current = clamped.toString()\n updateValue(clamped.toString())\n }\n onBlur?.(e)\n },\n [min, max, precision, updateValue, onBlur]\n )\n\n // WAI-ARIA spinbutton keys: arrows step, PageUp / PageDown step by ten, Home / End jump to the\n // bounds (only when they exist, otherwise the keys keep moving the caret).\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n increment(1)\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n increment(-1)\n } else if (e.key === 'PageUp') {\n e.preventDefault()\n increment(1, 10)\n } else if (e.key === 'PageDown') {\n e.preventDefault()\n increment(-1, 10)\n } else if (e.key === 'Home' && min !== undefined) {\n e.preventDefault()\n commitNumber(min)\n } else if (e.key === 'End' && max !== undefined) {\n e.preventDefault()\n commitNumber(max)\n }\n onKeyDown?.(e)\n },\n [increment, commitNumber, min, max, onKeyDown]\n )\n\n // Screen readers and keyboard activation fire a click without a preceding pointerdown\n // (`detail === 0`); pointer clicks were already handled by the hold-to-repeat logic.\n const handleStepClick = (direction: 1 | -1) => (event: React.MouseEvent<HTMLButtonElement>) => {\n if (event.detail === 0) increment(direction)\n }\n\n const numericValue = parseNumber(currentValue)\n\n const stepper =\n showStepper && !disabled ? (\n <div className=\"number stepper\">\n <button\n type=\"button\"\n className=\"number step button\"\n onPointerDown={(event) => {\n event.preventDefault()\n startHold(1)\n }}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n onPointerCancel={stopHold}\n onClick={handleStepClick(1)}\n tabIndex={-1}\n aria-label={texts.increment}\n aria-controls={inputId}\n >\n <MChevronUpIcon />\n </button>\n <button\n type=\"button\"\n className=\"number step button\"\n onPointerDown={(event) => {\n event.preventDefault()\n startHold(-1)\n }}\n onPointerUp={stopHold}\n onPointerLeave={stopHold}\n onPointerCancel={stopHold}\n onClick={handleStepClick(-1)}\n tabIndex={-1}\n aria-label={texts.decrement}\n aria-controls={inputId}\n >\n <MChevronDownIcon />\n </button>\n </div>\n ) : undefined\n\n return (\n <MInput\n {...rest}\n ref={ref}\n id={inputId}\n inputProps={{\n role: 'spinbutton',\n 'aria-valuenow': isNaN(numericValue) ? undefined : numericValue,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n ...inputProps,\n }}\n type=\"text\"\n inputMode=\"decimal\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n endIcon={stepper}\n disabled={disabled}\n className={cn('number input', className)}\n />\n )\n})\n","import {useState, useCallback, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputEmailProps} from './MInputEmail.types'\nimport {MInput} from '../MInput'\nimport {validateEmail} from '../../../utils/validators'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon, MMailIcon} from '../../../icons'\nimport {useMValidationMessage} from '../../../i18n/frameworkTexts'\n\n// Extend the base input with email validation and optional success feedback.\nexport const MInputEmail = forwardRef<HTMLInputElement, MInputEmailProps>(function MInputEmail(\n {\n validateOnBlur = true,\n validateOnChange = false,\n showValidIcon = true,\n onValidationChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n success,\n placeholder = 'email@example.com',\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? value.toString() : internalValue\n\n // Reuse the shared email validator and surface the latest result upstream.\n const runValidation = useCallback(\n (val: string) => {\n const result = translateValidation(validateEmail(val))\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [onValidationChange, translateValidation]\n )\n\n // Validate while typing only when the component is configured to do so.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n if (validateOnChange && touched) {\n runValidation(e.target.value)\n }\n onChange?.(e)\n },\n [onChange, value, validateOnChange, touched, runValidation]\n )\n\n // Validate optional email input on blur once the user has interacted with it.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n if (validateOnBlur && e.target.value) {\n runValidation(e.target.value)\n }\n onBlur?.(e)\n },\n [onBlur, validateOnBlur, runValidation]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !isError && success !== undefined ? success : touched && validation.valid && currentValue.length > 0\n\n const validIcon =\n showValidIcon && isSuccess ? (\n <span className=\"validation-icon\">\n <MCheckIcon />\n </span>\n ) : undefined\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"email\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder}\n startIcon={<MMailIcon />}\n endIcon={validIcon}\n />\n )\n})\n","import {useState, useCallback, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputUrlProps} from './MInputUrl.types'\nimport {MInput} from '../MInput'\nimport {validateUrl} from '../../../utils/validators'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon, MLinkIcon} from '../../../icons'\nimport {useMValidationMessage} from '../../../i18n/frameworkTexts'\n\nconst DEFAULT_PROTOCOLS = ['http', 'https']\n\n// Extend the base input with URL validation, optional protocol whitelisting\n// and an optional autoformatter that prepends the first allowed protocol on\n// blur (so users can type `example.com` and walk away with `https://example.com`).\nexport const MInputUrl = forwardRef<HTMLInputElement, MInputUrlProps>(function MInputUrl(\n {\n protocols = DEFAULT_PROTOCOLS,\n requireProtocol = true,\n formatOnBlur = false,\n validateOnBlur = true,\n validateOnChange = false,\n showValidIcon = true,\n onValidationChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n success,\n placeholder = 'https://example.com',\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? value.toString() : internalValue\n\n const runValidation = useCallback(\n (val: string) => {\n const result = translateValidation(validateUrl(val, {protocols, requireProtocol}))\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [protocols, requireProtocol, onValidationChange, translateValidation]\n )\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (value === undefined) {\n setInternalValue(e.target.value)\n }\n if (validateOnChange && touched) {\n runValidation(e.target.value)\n }\n onChange?.(e)\n },\n [onChange, value, validateOnChange, touched, runValidation]\n )\n\n // On blur: optionally prepend the first allowed protocol when the value\n // has no scheme yet, then run validation against the (possibly rewritten)\n // value. The rewritten value is surfaced to consumers through a\n // synthesised `onChange` so controlled inputs stay in sync.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n\n let next = e.target.value\n const hasScheme = /^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(next)\n if (formatOnBlur && next && !hasScheme && protocols.length > 0) {\n next = `${protocols[0]}://${next}`\n if (value === undefined) {\n setInternalValue(next)\n }\n // Re-use the same native input element so refs, names and\n // ids on the synthetic event still resolve to the real DOM.\n e.target.value = next\n onChange?.(e as unknown as React.ChangeEvent<HTMLInputElement>)\n }\n\n if (validateOnBlur && next) {\n runValidation(next)\n }\n onBlur?.(e)\n },\n [onBlur, validateOnBlur, runValidation, formatOnBlur, protocols, value, onChange]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !isError && success !== undefined ? success : touched && validation.valid && currentValue.length > 0\n\n const validIcon =\n showValidIcon && isSuccess ? (\n <span className=\"validation-icon\">\n <MCheckIcon />\n </span>\n ) : undefined\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"url\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder}\n startIcon={<MLinkIcon />}\n endIcon={validIcon}\n />\n )\n})\n","import {useCallback, useLayoutEffect, useRef} from 'react'\nimport type * as React from 'react'\n\nconst SIGNIFICANT = /[0-9A-Za-z]/\n\n// Count the characters that carry meaning, ignoring separators a formatter inserts.\nfunction countSignificant(text: string): number {\n let count = 0\n for (const ch of text) {\n if (SIGNIFICANT.test(ch)) count++\n }\n return count\n}\n\n// Find the caret position right after the `count`-th significant character.\nfunction caretAfterSignificant(text: string, count: number): number {\n if (count <= 0) return 0\n let seen = 0\n for (let i = 0; i < text.length; i++) {\n if (SIGNIFICANT.test(text[i])) {\n seen++\n if (seen === count) return i + 1\n }\n }\n return text.length\n}\n\n/**\n * Keeps the caret where the user left it when a formatted input rewrites its value\n * (inserting spaces or dashes). Call the returned function from `onChange` before the\n * formatted value is stored; the caret is restored after the next commit. Edits at the\n * end of the field are left alone — the browser already puts the caret there.\n */\nexport function useFormatCaret() {\n const pendingRef = useRef<{input: HTMLInputElement; count: number} | null>(null)\n\n useLayoutEffect(() => {\n const pending = pendingRef.current\n if (!pending) return\n pendingRef.current = null\n const {input, count} = pending\n if (input.ownerDocument.activeElement !== input) return\n const position = caretAfterSignificant(input.value, count)\n if (input.selectionStart !== position || input.selectionEnd !== position) {\n input.setSelectionRange(position, position)\n }\n })\n\n return useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const input = event.target\n const caret = input.selectionStart\n if (caret === null || caret >= input.value.length) {\n pendingRef.current = null\n return\n }\n pendingRef.current = {input, count: countSignificant(input.value.slice(0, caret))}\n }, [])\n}\n","import {useState, useCallback, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputPhoneProps} from './MInputPhone.types'\nimport {MInput} from '../MInput'\nimport {useFormatCaret} from '../MInput/useFormatCaret'\nimport {cn} from '../../../utils/cn'\nimport {validatePhone} from '../../../utils/validators'\nimport {formatPhone, stripNonDigits} from '../../../utils/formatters'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MPhoneIcon} from '../../../icons'\nimport './MInputPhone.css'\nimport {useMValidationMessage} from '../../../i18n/frameworkTexts'\n\nconst COUNTRY_PREFIXES: Record<string, string> = {\n PL: '+48',\n DE: '+49',\n US: '+1',\n GB: '+44',\n FR: '+33',\n CZ: '+420',\n SK: '+421',\n}\n\n// Sort longest prefix first so '+421' is matched before '+4'.\nconst PREFIX_ENTRIES = Object.entries(COUNTRY_PREFIXES).sort(([, a], [, b]) => b.length - a.length)\n\n// Match a leading +XX prefix back to its country code so the user can type the country in.\nfunction detectCountryFromValue(value: string): {country: string; rest: string} | null {\n const trimmed = value.trim().replace(/^00/, '+')\n\n if (!trimmed.startsWith('+')) {\n return null\n }\n\n const digitsAfterPlus = '+' + stripNonDigits(trimmed)\n\n for (const [country, prefix] of PREFIX_ENTRIES) {\n if (digitsAfterPlus.startsWith(prefix)) {\n return {country, rest: digitsAfterPlus.slice(prefix.length)}\n }\n }\n\n return null\n}\n\n// Detect a partial prefix the user is in the middle of typing (e.g. \"+4\" before they finish \"+49\").\nfunction looksLikePartialPrefix(value: string): boolean {\n const trimmed = value.trim()\n if (!trimmed.startsWith('+') && !trimmed.startsWith('00')) return false\n const normalized = trimmed.startsWith('00') ? '+' + trimmed.slice(2) : trimmed\n const digits = stripNonDigits(normalized)\n // Longest prefix in COUNTRY_PREFIXES is 3 digits (\"+421\"), so accept up to 3 digits as \"still typing\".\n return digits.length <= 3\n}\n\n// Normalize a partial prefix to canonical \"+digits\" form, so 00420 → +420 while typing.\nfunction normalizePartialPrefix(value: string): string {\n const trimmed = value.trim()\n const body = trimmed.startsWith('00') ? trimmed.slice(2) : trimmed.slice(1)\n return '+' + stripNonDigits(body).slice(0, 3)\n}\n\n// Extend the base input with country-aware phone formatting and validation.\nexport const MInputPhone = forwardRef<HTMLInputElement, MInputPhoneProps>(function MInputPhone(\n {\n countryCode,\n defaultCountryCode = 'PL',\n showCountryCode = true,\n formatOnChange = true,\n validateOnBlur = true,\n onValidationChange,\n onValueChange,\n onCountryChange,\n onClear,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n placeholder = '123 456 789',\n className,\n ...rest\n },\n ref\n) {\n const [internalCountry, setInternalCountry] = useState((countryCode ?? defaultCountryCode).toUpperCase())\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n\n const currentCountry = (countryCode ?? internalCountry).toUpperCase()\n const captureCaret = useFormatCaret()\n const currentValue = value !== undefined ? value.toString() : internalValue\n\n // Keep the emitted raw digits and the displayed formatted value aligned.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n\n // Empty input — short-circuit so clear/backspace doesn't loop through the formatter.\n if (raw === '') {\n if (value === undefined) setInternalValue('')\n onValueChange?.('', '')\n onChange?.(e)\n return\n }\n\n const detected = detectCountryFromValue(raw)\n\n if (detected) {\n const nextCountry = detected.country\n if (countryCode === undefined && nextCountry !== currentCountry) {\n setInternalCountry(nextCountry)\n onCountryChange?.(nextCountry)\n }\n const digits = stripNonDigits(detected.rest)\n const formatted = formatOnChange ? formatPhone(digits, {countryCode: nextCountry}) : digits\n if (value === undefined) setInternalValue(formatted)\n onValueChange?.(digits, formatted)\n onChange?.(e)\n return\n }\n\n // User is mid-prefix (e.g. \"+\", \"+4\", \"+42\") — preserve so they can finish typing.\n if (looksLikePartialPrefix(raw)) {\n const preserved = normalizePartialPrefix(raw)\n if (value === undefined) setInternalValue(preserved)\n // A half-typed country prefix is not a phone number yet — the raw value stays empty.\n onValueChange?.('', preserved)\n onChange?.(e)\n return\n }\n\n captureCaret(e)\n const digits = stripNonDigits(raw)\n const formatted = formatOnChange ? formatPhone(digits, {countryCode: currentCountry}) : digits\n\n if (value === undefined) {\n setInternalValue(formatted)\n }\n onValueChange?.(digits, formatted)\n onChange?.(e)\n },\n [captureCaret, onChange, value, formatOnChange, currentCountry, countryCode, onValueChange, onCountryChange]\n )\n\n // Validate the raw number on blur using country-specific length rules.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n if (validateOnBlur && currentValue) {\n const result = translateValidation(validatePhone(stripNonDigits(currentValue), currentCountry))\n setValidation(result)\n onValidationChange?.(result)\n }\n onBlur?.(e)\n },\n [onBlur, validateOnBlur, currentValue, currentCountry, onValidationChange, translateValidation]\n )\n\n // Reset validation state alongside the value when the clear button fires.\n const handleClear = useCallback(() => {\n if (value === undefined) setInternalValue('')\n setValidation({valid: true})\n setTouched(false)\n onValidationChange?.({valid: true})\n onValueChange?.('', '')\n onClear?.()\n }, [onClear, onValueChange, onValidationChange, value])\n\n // Hide the static prefix while the user is typing a partial +XX so the field doesn't show two prefixes at once.\n const isTypingPrefix = currentValue.startsWith('+')\n const prefix =\n showCountryCode && !isTypingPrefix ? (\n <span className=\"phone prefix\">{COUNTRY_PREFIXES[currentCountry] ?? `+${currentCountry}`}</span>\n ) : undefined\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"tel\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onClear={handleClear}\n error={isError}\n errorText={resolvedErrorText}\n placeholder={placeholder}\n startIcon={showCountryCode ? prefix : <MPhoneIcon />}\n className={cn('phone input', className)}\n />\n )\n})\n","import {useState, useCallback, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputNameProps} from './MInputName.types'\nimport {MInput} from '../MInput'\nimport {capitalizeWords} from '../../../utils/formatters'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MUserIcon} from '../../../icons'\n\n// Extend the base input with name-friendly filtering and optional word-count validation.\nexport const MInputName = forwardRef<HTMLInputElement, MInputNameProps>(function MInputName(\n {\n autoCapitalize = true,\n allowNumbers = false,\n allowSpecialChars = false,\n minWords,\n validateOnBlur = true,\n onValidationChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n placeholder = 'Jan Kowalski',\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? value.toString() : internalValue\n\n // Normalize user input according to the configured name rules.\n const filterValue = useCallback(\n (raw: string): string => {\n let filtered = raw\n if (!allowNumbers) {\n filtered = filtered.replace(/\\d/g, '')\n }\n if (!allowSpecialChars) {\n // Digits are governed by `allowNumbers` alone, so keep them here when allowed.\n filtered = allowNumbers\n ? filtered.replace(/[^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻ\\s'-]/g, '')\n : filtered.replace(/[^a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ\\s'-]/g, '')\n }\n if (autoCapitalize) {\n filtered = capitalizeWords(filtered)\n }\n return filtered\n },\n [allowNumbers, allowSpecialChars, autoCapitalize]\n )\n\n // Store the filtered value while still delegating the original change event.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const filtered = filterValue(e.target.value)\n if (value === undefined) {\n setInternalValue(filtered)\n }\n onChange?.(e)\n },\n [onChange, value, filterValue]\n )\n\n // Validate the minimum word count after the user leaves the field.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n if (validateOnBlur && currentValue) {\n const words = currentValue.trim().split(/\\s+/).filter(Boolean)\n if (minWords && words.length < minWords) {\n const result: ValidationResult = {\n valid: false,\n error: `Enter at least ${minWords} word${minWords > 1 ? 's' : ''}`,\n }\n setValidation(result)\n onValidationChange?.(result)\n } else {\n const result: ValidationResult = {valid: true}\n setValidation(result)\n onValidationChange?.(result)\n }\n }\n onBlur?.(e)\n },\n [onBlur, validateOnBlur, currentValue, minWords, onValidationChange]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n\n return (\n <MInput\n {...rest}\n ref={ref}\n type=\"text\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n error={isError}\n errorText={resolvedErrorText}\n placeholder={placeholder}\n startIcon={<MUserIcon />}\n />\n )\n})\n","import {useState, useRef, useCallback, forwardRef, isValidElement} from 'react'\nimport type * as React from 'react'\nimport type {MInputGroupProps, MInputGroupAddon, MInputGroupSlot} from './MInputGroup.types'\nimport {cn} from '../../../utils/cn'\nimport {useControllableString} from '../../../utils/useControllableString'\nimport {useInteractionEffect} from '../../../utils/useInteractionEffect'\nimport {MButton, MCheckbox} from '../../controls'\nimport {MSpinner} from '../../feedback'\nimport {MCloseIcon} from '../../../icons'\nimport './MInputGroup.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\n// Detect structured addon configs while leaving raw React nodes untouched.\nfunction isAddonObject(slot: MInputGroupSlot): slot is MInputGroupAddon {\n return typeof slot === 'object' && slot !== null && !isValidElement(slot) && 'type' in slot\n}\n\n// Render one prepend or append slot based on its declared addon type.\nfunction renderSlot(slot: MInputGroupSlot, position: 'prepend' | 'append', index: number, color: string) {\n if (!isAddonObject(slot)) {\n return (\n <div key={`${position}-${index}`} className={cn('addon', 'custom', position)}>\n {slot}\n </div>\n )\n }\n\n const addon = slot\n\n if (addon.type === 'button') {\n return (\n <MButton\n key={`${position}-${index}`}\n variant=\"ghost\"\n color={color as any}\n size=\"sm\"\n className={cn('addon', position, 'addon-button')}\n onClick={addon.onClick}\n clickEffect=\"none\"\n >\n {addon.content}\n </MButton>\n )\n }\n\n if (addon.type === 'checkbox') {\n return (\n <div key={`${position}-${index}`} className={cn('addon', position, 'checkbox')}>\n <MCheckbox\n size=\"sm\"\n clickEffect=\"none\"\n checked={addon.checked}\n onChange={(e) => addon.onCheckedChange?.(e.target.checked)}\n className=\"addon-checkbox\"\n />\n </div>\n )\n }\n\n // text or icon\n return (\n <span key={`${position}-${index}`} className={cn('addon', position)}>\n {addon.content}\n </span>\n )\n}\n\n// Normalize the public slot API to a flat array for predictable rendering.\nfunction normalizeSlots(slots?: MInputGroupSlot | MInputGroupSlot[]): MInputGroupSlot[] {\n if (slots === undefined || slots === null) return []\n if (Array.isArray(slots)) return slots\n return [slots]\n}\n\n// Render a grouped input with prepend and append content around a shared field.\nexport const MInputGroup = forwardRef<HTMLInputElement, MInputGroupProps>(function MInputGroup(\n {\n prepend,\n append,\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 fullWidth = false,\n label,\n helperText,\n errorText,\n color = 'primary',\n error = false,\n maxLength,\n clearable = false,\n onChange,\n onFocus,\n onBlur,\n onKeyDown,\n onClear,\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 hasError = error || !!errorText\n const resolvedColorClass = hasError ? 'color-error' : `color-${color}`\n const {currentValue, setCurrentValue} = useControllableString(value, defaultValue)\n const hasContent = currentValue.length > 0\n\n // Mirror focus state so the wrapper can style the group consistently.\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true)\n onFocus?.(e)\n },\n [onFocus]\n )\n\n // Clear wrapper focus styling before delegating blur handling.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n onBlur?.(e)\n },\n [onBlur]\n )\n\n // Keep uncontrolled usage working without blocking controlled integrations.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(e.target.value)\n onChange?.(e)\n },\n [onChange, setCurrentValue]\n )\n\n // Reset the field value while preserving focus and controlled integrations.\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 prependSlots = normalizeSlots(prepend)\n const appendSlots = normalizeSlots(append)\n\n return (\n <div className={cn('input-group', 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 required && 'required',\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n\n <div\n className={cn(\n 'container',\n `field-${variant}`,\n `field-${size}`,\n focused && 'focused',\n hasError && 'has-error',\n disabled && 'disabled',\n effectClassName\n )}\n onPointerDown={handlePointerDown}\n >\n {effectLayer}\n {prependSlots.map((slot, i) => renderSlot(slot, 'prepend', i, color))}\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 {loading && (\n <span className={'spinner-addon'}>\n <MSpinner size=\"sm\" color={color} />\n </span>\n )}\n\n {clearable && hasContent && !loading && !disabled && !readOnly && (\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 {appendSlots.map((slot, i) => renderSlot(slot, 'append', i, color))}\n </div>\n\n {(errorText || helperText) && (\n <div className={'bottom'}>\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 </div>\n )}\n </div>\n )\n})\n","import {forwardRef, useCallback, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputIBANProps} from './MInputIBAN.types'\nimport {MInputGroup} from '../MInputGroup'\nimport {useFormatCaret} from '../MInput/useFormatCaret'\nimport {cn} from '../../../utils/cn'\nimport {ibanCountries, getIbanCountryLength, validateIBAN} from '../../../utils/validators'\nimport {formatIBAN, unformatIBAN} from '../../../utils/formatters'\nimport type {ValidationResult} from '../../../utils/validators'\nimport './MInputIBAN.css'\nimport {formatMText, useMInputTexts, useMValidationMessage} from '../../../i18n/frameworkTexts'\n\nfunction normalizeCountryCode(countryCode?: string): string {\n return (\n countryCode\n ?.replace(/[^a-zA-Z]/g, '')\n .toUpperCase()\n .slice(0, 2) || ''\n )\n}\n\nfunction getAccountDigitsCap(countryCode: string): number {\n const length = getIbanCountryLength(countryCode) ?? 28\n return Math.max(length - 2, 0)\n}\n\nfunction buildIbanPlaceholder(countryCode: string): string {\n const accountChars = getAccountDigitsCap(countryCode)\n const groups: string[] = []\n let remaining = accountChars\n\n while (remaining > 0) {\n const take = Math.min(4, remaining)\n groups.push('0'.repeat(take))\n remaining -= take\n }\n\n return groups.join(' ')\n}\n\n// Browser-level cap: account digits plus the spaces that formatIBAN inserts between 4-char groups.\nfunction getFormattedMaxLength(countryCode: string): number {\n const accountChars = getAccountDigitsCap(countryCode)\n if (accountChars === 0) return 0\n const spaces = Math.max(0, Math.ceil(accountChars / 4) - 1)\n return accountChars + spaces\n}\n\n// Extend the grouped input with country-aware IBAN formatting and checksum validation.\nexport const MInputIBAN = forwardRef<HTMLInputElement, MInputIBANProps>(function MInputIBAN(\n {\n countryCode,\n formatOnChange = true,\n validateOnBlur = true,\n onValidationChange,\n onValueChange,\n onCountryChange,\n onClear,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n helperText,\n placeholder,\n className,\n disabled = false,\n ...rest\n },\n ref\n) {\n const texts = useMInputTexts()\n const captureCaret = useFormatCaret()\n const [internalCountry, setInternalCountry] = useState(normalizeCountryCode(countryCode) || 'PL')\n const currentCountry = normalizeCountryCode(countryCode) || internalCountry\n\n const buildDisplayValue = useCallback(\n (raw: string, country: string): string => {\n // Letters stay — BBAN parts of e.g. GB, NL or IE IBANs carry a bank code.\n const cleaned = unformatIBAN(raw)\n .replace(/[^0-9A-Z]/g, '')\n .slice(0, getAccountDigitsCap(country))\n if (!cleaned) return ''\n return formatOnChange ? formatIBAN(cleaned) : cleaned\n },\n [formatOnChange]\n )\n\n const [internalValue, setInternalValue] = useState(() =>\n buildDisplayValue(defaultValue?.toString() ?? '', normalizeCountryCode(countryCode) || 'PL')\n )\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? buildDisplayValue(value.toString(), currentCountry) : internalValue\n\n const resetValidation = useCallback(() => {\n setValidation({valid: true})\n setTouched(false)\n onValidationChange?.({valid: true})\n }, [onValidationChange])\n\n // Keep raw and formatted IBAN values aligned for consumers and display.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n captureCaret(e)\n const formatted = buildDisplayValue(e.target.value, currentCountry)\n\n if (value === undefined) {\n setInternalValue(formatted)\n }\n\n if (!formatted && (touched || !validation.valid)) {\n resetValidation()\n }\n\n onValueChange?.(unformatIBAN(formatted), formatted)\n onChange?.(e)\n },\n [\n buildDisplayValue,\n captureCaret,\n currentCountry,\n onChange,\n onValueChange,\n resetValidation,\n touched,\n validation.valid,\n value,\n ]\n )\n\n // Validate the normalized IBAN once the user leaves the field.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n const fullIban = `${currentCountry}${unformatIBAN(currentValue)}`\n const result = translateValidation(validateIBAN(fullIban))\n setValidation(result)\n onValidationChange?.(result)\n }\n\n onBlur?.(e)\n },\n [currentCountry, currentValue, onBlur, onValidationChange, validateOnBlur, translateValidation]\n )\n\n // Reset both the displayed value and any error state when the clear button fires.\n const handleClear = useCallback(() => {\n if (value === undefined) setInternalValue('')\n resetValidation()\n onValueChange?.('', '')\n onClear?.()\n }, [onClear, onValueChange, resetValidation, value])\n\n // Switch the country code via the inline select.\n const handleCountrySelect = useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n const next = normalizeCountryCode(e.target.value)\n if (!next) return\n\n if (countryCode === undefined) {\n setInternalCountry(next)\n }\n\n const reformatted = buildDisplayValue(currentValue, next)\n if (value === undefined) {\n setInternalValue(reformatted)\n }\n onValueChange?.(unformatIBAN(reformatted), reformatted)\n\n onCountryChange?.(next)\n\n if (touched && reformatted) {\n const fullIban = `${next}${unformatIBAN(reformatted)}`\n const result = translateValidation(validateIBAN(fullIban))\n setValidation(result)\n onValidationChange?.(result)\n }\n },\n [\n buildDisplayValue,\n countryCode,\n currentValue,\n onCountryChange,\n onValidationChange,\n onValueChange,\n touched,\n value,\n translateValidation,\n ]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n\n const countryOptions = useMemo(() => ibanCountries, [])\n const resolvedHelperText = resolvedErrorText\n ? undefined\n : (helperText ??\n formatMText(texts.formatHint, {example: `${currentCountry} ${buildIbanPlaceholder(currentCountry)}`}))\n\n return (\n <MInputGroup\n {...rest}\n ref={ref}\n type=\"text\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onClear={handleClear}\n error={isError}\n errorText={resolvedErrorText}\n placeholder={placeholder ?? buildIbanPlaceholder(currentCountry)}\n helperText={resolvedHelperText}\n disabled={disabled}\n maxLength={getFormattedMaxLength(currentCountry)}\n prepend={\n <div className=\"country-select-wrap\">\n <select\n className=\"country-select\"\n value={currentCountry}\n onChange={handleCountrySelect}\n disabled={disabled}\n aria-label={texts.ibanCountry}\n >\n {countryOptions.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </div>\n }\n className={cn('input-iban', className)}\n />\n )\n})\n","import {useState, useCallback, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputTaxIdProps, MTaxIdType} from './MInputTaxId.types'\nimport {MInput} from '../MInput'\nimport {useFormatCaret} from '../MInput/useFormatCaret'\nimport {validateNIP, validatePESEL, validateREGON} from '../../../utils/validators'\nimport {formatNIP, stripNonDigits} from '../../../utils/formatters'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon, MIdCardIcon} from '../../../icons'\nimport {useMValidationMessage} from '../../../i18n/frameworkTexts'\n\nconst VALIDATORS: Record<MTaxIdType, (v: string) => ValidationResult> = {\n NIP: validateNIP,\n PESEL: validatePESEL,\n REGON: validateREGON,\n}\n\nconst MAX_LENGTHS: Record<MTaxIdType, number> = {\n NIP: 13,\n PESEL: 11,\n REGON: 14,\n}\n\n// Number of digits each identifier carries — anything beyond (e.g. pasted) is dropped.\nconst DIGIT_LENGTHS: Record<MTaxIdType, number> = {\n NIP: 10,\n PESEL: 11,\n REGON: 14,\n}\n\nconst PLACEHOLDERS: Record<MTaxIdType, string> = {\n NIP: '123-456-78-19',\n PESEL: '00000000000',\n REGON: '000000000',\n}\n\n// Extend the base input with NIP, PESEL and REGON formatting and validation.\nexport const MInputTaxId = forwardRef<HTMLInputElement, MInputTaxIdProps>(function MInputTaxId(\n {\n taxIdType,\n formatOnChange = true,\n validateOnBlur = true,\n showValidIcon = true,\n onValidationChange,\n onValueChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n success,\n placeholder,\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? value.toString() : internalValue\n const captureCaret = useFormatCaret()\n\n // Normalize the visible value based on the selected identifier type.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n captureCaret(e)\n const digits = stripNonDigits(e.target.value).slice(0, DIGIT_LENGTHS[taxIdType])\n const formatted = formatOnChange && taxIdType === 'NIP' ? formatNIP(digits) : digits\n\n if (value === undefined) {\n setInternalValue(formatted)\n }\n onValueChange?.(digits)\n onChange?.(e)\n },\n [captureCaret, onChange, value, formatOnChange, taxIdType, onValueChange]\n )\n\n // Validate the stripped numeric value against the active identifier rules.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n if (validateOnBlur && currentValue) {\n const validator = VALIDATORS[taxIdType]\n const result = translateValidation(validator(stripNonDigits(currentValue)))\n setValidation(result)\n onValidationChange?.(result)\n }\n onBlur?.(e)\n },\n [onBlur, validateOnBlur, currentValue, taxIdType, onValidationChange, translateValidation]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !isError && (success !== undefined ? success : touched && validation.valid && currentValue.length > 0)\n\n const validIcon =\n showValidIcon && isSuccess ? (\n <span className=\"validation-icon\">\n <MCheckIcon />\n </span>\n ) : 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 error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder ?? PLACEHOLDERS[taxIdType]}\n startIcon={<MIdCardIcon />}\n endIcon={validIcon}\n maxLength={MAX_LENGTHS[taxIdType]}\n />\n )\n})\n","import {useState, useCallback, useEffect, useLayoutEffect, useRef, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputCurrencyProps} from './MInputCurrency.types'\nimport {MInput} from '../MInput'\nimport {cn} from '../../../utils/cn'\nimport {formatCurrency, parseCurrencyToNumber} from '../../../utils/formatters'\nimport './MInputCurrency.css'\n\n// Extend the base input with currency formatting and numeric callbacks.\nexport const MInputCurrency = forwardRef<HTMLInputElement, MInputCurrencyProps>(function MInputCurrency(\n {\n currency,\n currencySymbol,\n currencyPosition = 'end',\n decimalSeparator = ',',\n thousandSeparator = ' ',\n precision = 2,\n min,\n max,\n allowNegative = false,\n onValueChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n placeholder = '0,00',\n startIcon,\n endIcon,\n className,\n ...rest\n },\n ref\n) {\n const symbol = currencySymbol ?? currency ?? ''\n\n // Turn anything the consumer may pass — a number, a machine string (`45.5`)\n // or an already formatted one (`1 234,50`) — into the display string.\n const toDisplay = useCallback(\n (input: string | number | null | undefined): string => {\n if (input === undefined || input === null || input === '') return ''\n const raw = typeof input === 'number' ? input.toFixed(precision) : String(input)\n const stripped = thousandSeparator ? raw.split(thousandSeparator).join('') : raw\n const num = parseCurrencyToNumber(stripped, '', decimalSeparator)\n if (num === null) return ''\n return formatCurrency(num.toFixed(precision), {decimalSeparator, thousandSeparator, precision})\n },\n [decimalSeparator, thousandSeparator, precision]\n )\n\n const toNumber = useCallback(\n (input: string | number | null | undefined): number | null => {\n if (input === undefined || input === null || input === '') return null\n if (typeof input === 'number') return Number.isNaN(input) ? null : input\n return parseCurrencyToNumber(input, thousandSeparator, decimalSeparator)\n },\n [thousandSeparator, decimalSeparator]\n )\n\n // The field keeps its own display buffer even when `value` is controlled.\n // Without it a half-typed amount (`45,`) round-trips through the consumer's\n // number state and comes back as `45`, which makes the decimals impossible\n // to type at all.\n const [display, setDisplay] = useState<string>(() => toDisplay(value !== undefined ? value : defaultValue))\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n const caretRef = useRef<number | null>(null)\n\n const setRefs = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) (ref as React.RefObject<HTMLInputElement | null>).current = node\n },\n [ref]\n )\n\n // Re-sync from a controlled `value` only when it disagrees numerically with\n // what is on screen, so typing is never interrupted by the round-trip.\n useEffect(() => {\n if (value === undefined) return\n if (toNumber(value) === toNumber(display)) return\n setDisplay(toDisplay(value))\n }, [value, display, toDisplay, toNumber])\n\n // Count the characters that carry meaning, ignoring the grouping separators\n // this component inserts — used to keep the caret where the user left it.\n const countSignificant = useCallback(\n (text: string, upTo: number): number => {\n let count = 0\n for (let i = 0; i < upTo && i < text.length; i++) {\n const ch = text[i]\n if ((ch >= '0' && ch <= '9') || ch === decimalSeparator || ch === '-') count++\n }\n return count\n },\n [decimalSeparator]\n )\n\n const caretForSignificant = useCallback(\n (text: string, significant: number): number => {\n if (significant <= 0) return 0\n let count = 0\n for (let i = 0; i < text.length; i++) {\n const ch = text[i]\n if ((ch >= '0' && ch <= '9') || ch === decimalSeparator || ch === '-') count++\n if (count === significant) return i + 1\n }\n return text.length\n },\n [decimalSeparator]\n )\n\n useLayoutEffect(() => {\n const caret = caretRef.current\n caretRef.current = null\n if (caret === null) return\n const node = inputRef.current\n if (!node || document.activeElement !== node) return\n node.setSelectionRange(caret, caret)\n }, [display])\n\n // Filter user input down to digits, one decimal separator and an optional\n // minus sign, then re-group it without swallowing what is still being typed.\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n const rawCaret = e.target.selectionStart ?? raw.length\n let filtered = ''\n let hasDecimal = false\n // A thousands separator that is also a decimal candidate (`.` or `,`) is\n // grouping — skip it so `1.234` + `5` stays `12.345`, not `1,2345`.\n const groupingChar = thousandSeparator && thousandSeparator !== decimalSeparator ? thousandSeparator : ''\n for (const ch of raw) {\n if (groupingChar && ch === groupingChar) {\n continue\n }\n if (ch >= '0' && ch <= '9') {\n filtered += ch\n } else if ((ch === ',' || ch === '.') && !hasDecimal && precision > 0) {\n filtered += decimalSeparator\n hasDecimal = true\n } else if (ch === '-' && allowNegative && filtered.length === 0) {\n filtered += '-'\n }\n }\n\n const hasDigits = /\\d/.test(filtered)\n let next: string\n if (!hasDigits) {\n // Keep the transient states the user needs to pass through\n // (empty field, a lone minus) instead of snapping them to `0`.\n next = filtered.startsWith('-') ? '-' : ''\n } else {\n next = formatCurrency(filtered, {decimalSeparator, thousandSeparator, precision})\n // `formatCurrency` drops an empty fractional part, which would\n // eat the separator on the keystroke that opens the decimals.\n if (filtered.endsWith(decimalSeparator) && !next.includes(decimalSeparator)) {\n next += decimalSeparator\n }\n }\n\n caretRef.current = caretForSignificant(next, countSignificant(raw, rawCaret))\n setDisplay(next)\n onValueChange?.(parseCurrencyToNumber(next, thousandSeparator, decimalSeparator))\n onChange?.(e)\n },\n [\n onChange,\n decimalSeparator,\n thousandSeparator,\n precision,\n allowNegative,\n onValueChange,\n countSignificant,\n caretForSignificant,\n ]\n )\n\n // Clamp the numeric value on blur and snap it to the configured precision.\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n let num = parseCurrencyToNumber(display, thousandSeparator, decimalSeparator)\n if (num !== null) {\n if (min !== undefined && num < min) num = min\n if (max !== undefined && num > max) num = max\n const formatted = toDisplay(num)\n if (formatted !== display) {\n setDisplay(formatted)\n }\n onValueChange?.(num)\n } else if (display !== '') {\n setDisplay('')\n onValueChange?.(null)\n }\n onBlur?.(e)\n },\n [display, min, max, decimalSeparator, thousandSeparator, toDisplay, onValueChange, onBlur]\n )\n\n const symbolEl = symbol ? <span className=\"currency symbol\">{symbol}</span> : undefined\n\n return (\n <MInput\n {...rest}\n ref={setRefs}\n type=\"text\"\n inputMode=\"decimal\"\n value={display}\n onChange={handleChange}\n onBlur={handleBlur}\n placeholder={placeholder}\n startIcon={currencyPosition === 'start' ? symbolEl : startIcon}\n endIcon={currencyPosition === 'end' ? symbolEl : endIcon}\n className={cn('currency input', className)}\n />\n )\n})\n","import {useState, useCallback, useEffect, useRef, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputDateProps} from './MInputDate.types'\nimport {MInput} from '../MInput'\nimport {stripNonDigits, formatDateInput} from '../../../utils/formatters'\nimport {validateDate, parseDateString} from '../../../utils/validators'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCalendarIcon} from '../../../icons'\nimport {useMValidationMessage} from '../../../i18n/frameworkTexts'\n\nconst FORMAT_PLACEHOLDER: Record<string, string> = {\n 'DD/MM/YYYY': 'DD{s}MM{s}YYYY',\n 'MM/DD/YYYY': 'MM{s}DD{s}YYYY',\n 'YYYY/MM/DD': 'YYYY{s}MM{s}DD',\n}\n\n// Specialized date input with auto-formatting, parsing and validation.\n// Displays in DD/MM/YYYY (or other format) and emits a Date object.\nexport const MInputDate = forwardRef<HTMLInputElement, MInputDateProps>(function MInputDate(\n {\n format = 'DD/MM/YYYY',\n separator = '/',\n minDate,\n maxDate,\n validateOnBlur = true,\n validateOnChange = false,\n onDateChange,\n onValidationChange,\n value,\n defaultValue,\n onChange,\n onBlur,\n onKeyDown,\n onClear,\n error,\n errorText,\n placeholder,\n className,\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(defaultValue?.toString() ?? '')\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n const internalChangeRef = useRef(false)\n\n const currentValue = value !== undefined ? value.toString() : internalValue\n\n useEffect(() => {\n if (internalChangeRef.current) {\n internalChangeRef.current = false\n return\n }\n\n if (!currentValue) {\n setValidation({valid: true})\n setTouched(false)\n return\n }\n\n setValidation(translateValidation(validateDate(currentValue, {format, minDate, maxDate})))\n }, [currentValue, format, maxDate, minDate, translateValidation])\n\n const runValidation = useCallback(\n (val: string) => {\n const result = translateValidation(validateDate(val, {format, minDate, maxDate}))\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [format, minDate, maxDate, onValidationChange, translateValidation]\n )\n\n const emitDate = useCallback(\n (formatted: string) => {\n const digits = stripNonDigits(formatted)\n if (digits.length === 8) {\n onDateChange?.(parseDateString(formatted, format), formatted)\n } else {\n onDateChange?.(null, formatted)\n }\n },\n [format, onDateChange]\n )\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const digits = stripNonDigits(e.target.value)\n if (digits.length > 8) return\n\n const formatted = formatDateInput(digits, format, separator)\n internalChangeRef.current = true\n\n if (value === undefined) {\n setInternalValue(formatted)\n }\n\n emitDate(formatted)\n\n if (validateOnChange && touched) {\n runValidation(formatted)\n }\n\n onChange?.(e)\n },\n [onChange, value, format, separator, validateOnChange, touched, runValidation, emitDate]\n )\n\n const handleClear = useCallback(() => {\n internalChangeRef.current = true\n if (value === undefined) {\n setInternalValue('')\n }\n setValidation({valid: true})\n setTouched(false)\n onDateChange?.(null, '')\n onClear?.()\n }, [value, onDateChange, onClear])\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n if (validateOnBlur && currentValue) {\n runValidation(currentValue)\n }\n onBlur?.(e)\n },\n [onBlur, validateOnBlur, currentValue, runValidation]\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (['Backspace', 'Delete', 'Tab', 'ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(e.key)) {\n onKeyDown?.(e)\n return\n }\n if (e.ctrlKey || e.metaKey) {\n onKeyDown?.(e)\n return\n }\n // Only printable characters are filtered — Enter, Escape and other\n // named keys keep working (e.g. submitting the surrounding form).\n if (e.key.length === 1 && !/^\\d$/.test(e.key)) {\n e.preventDefault()\n }\n onKeyDown?.(e)\n },\n [onKeyDown]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : 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 onClear={handleClear}\n error={isError}\n errorText={resolvedErrorText}\n placeholder={placeholder ?? FORMAT_PLACEHOLDER[format].replace(/\\{s\\}/g, separator)}\n startIcon={<MCalendarIcon />}\n maxLength={10}\n className={className}\n />\n )\n})\n","import {forwardRef, useCallback, useRef, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputCreditCardProps} from './MInputCreditCard.types'\nimport {MInput} from '../MInput'\nimport {useFormatCaret} from '../MInput/useFormatCaret'\nimport {cn} from '../../../utils/cn'\nimport {detectCardBrand, formatCardNumber, stripCardNumber, validateCardNumber} from '../../../utils/creditCards'\nimport type {ValidationResult} from '../../../utils/validators'\nimport {MCheckIcon} from '../../../icons'\nimport './MInputCreditCard.css'\nimport {useMValidationMessage} from '../../../i18n/frameworkTexts'\n\nfunction CardBrandBadge({value}: {value: string}) {\n const brand = detectCardBrand(value)\n\n return <span className={cn('credit-card-brand-badge', 'credit-brand', brand.brand)}>{brand.iconLabel}</span>\n}\n\n// Extend the base input with payment card detection, formatting and checksum validation.\nexport const MInputCreditCard = forwardRef<HTMLInputElement, MInputCreditCardProps>(function MInputCreditCard(\n {\n validateOnBlur = true,\n validateOnChange = false,\n showBrandIcon = true,\n showValidIcon = true,\n onValidationChange,\n onCardBrandChange,\n onValueChange,\n onClear,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n success,\n placeholder = '4242 4242 4242 4242',\n className,\n ...rest\n },\n ref\n) {\n const [internalValue, setInternalValue] = useState(() => formatCardNumber(defaultValue?.toString() ?? ''))\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n\n const currentValue = value !== undefined ? formatCardNumber(value.toString()) : internalValue\n // Last brand reported to the consumer, so `onCardBrandChange` fires only on a change.\n const brandRef = useRef(detectCardBrand(currentValue).brand)\n const captureCaret = useFormatCaret()\n const runValidation = useCallback(\n (formattedValue: string) => {\n const result = translateValidation(validateCardNumber(formattedValue))\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [onValidationChange, translateValidation]\n )\n\n // Keep the visible card number grouped while exposing raw digits to the caller.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n captureCaret(event)\n const formattedValue = formatCardNumber(event.target.value)\n const nextBrand = detectCardBrand(formattedValue)\n\n if (value === undefined) {\n setInternalValue(formattedValue)\n }\n\n if (nextBrand.brand !== brandRef.current) {\n brandRef.current = nextBrand.brand\n onCardBrandChange?.(nextBrand.brand)\n }\n onValueChange?.(stripCardNumber(formattedValue), formattedValue, nextBrand.brand)\n\n if (validateOnChange && touched) {\n runValidation(formattedValue)\n }\n\n onChange?.(event)\n },\n [captureCaret, onCardBrandChange, onChange, onValueChange, runValidation, touched, validateOnChange, value]\n )\n\n // Validate after the user leaves the field so checksum feedback stays predictable.\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 // Reset validation state alongside the value when the clear button fires.\n const handleClear = useCallback(() => {\n if (value === undefined) setInternalValue('')\n setValidation({valid: true})\n setTouched(false)\n onValidationChange?.({valid: true})\n onValueChange?.('', '', 'unknown')\n if (brandRef.current !== 'unknown') {\n brandRef.current = 'unknown'\n onCardBrandChange?.('unknown')\n }\n onClear?.()\n }, [onCardBrandChange, onClear, onValidationChange, onValueChange, value])\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n const isSuccess =\n !isError && success !== undefined\n ? success\n : touched && validation.valid && stripCardNumber(currentValue).length > 0\n\n const validIcon =\n showValidIcon && isSuccess ? (\n <span className=\"credit valid validation-icon credit-card-valid-icon\" aria-hidden=\"true\">\n <MCheckIcon />\n </span>\n ) : 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 onClear={handleClear}\n error={isError}\n errorText={resolvedErrorText}\n success={isSuccess}\n placeholder={placeholder}\n startIcon={showBrandIcon ? <CardBrandBadge value={currentValue} /> : undefined}\n endIcon={validIcon}\n className={cn('credit-card input', className)}\n />\n )\n})\n","import {forwardRef, useCallback, useMemo, useState} from 'react'\nimport type * as React from 'react'\nimport type {MInputPostCodeProps} from './MInputPostCode.types'\nimport {MInputGroup} from '../MInputGroup'\nimport {useFormatCaret} from '../MInput/useFormatCaret'\nimport {cn} from '../../../utils/cn'\nimport {formatPostCode, getPostCodeRule, postCodeCountries, validatePostCode} from '../../../utils/postalCodes'\nimport type {ValidationResult} from '../../../utils/validators'\nimport './MInputPostCode.css'\nimport {formatMText, useMCommonTexts, useMInputTexts, useMValidationMessage} from '../../../i18n/frameworkTexts'\n\n// Extend the grouped input with country-aware postal code masking and validation.\nexport const MInputPostCode = forwardRef<HTMLInputElement, MInputPostCodeProps>(function MInputPostCode(\n {\n country,\n defaultCountry = 'PL',\n selectableCountry = true,\n validateOnBlur = true,\n validateOnChange = false,\n onCountryChange,\n onValidationChange,\n onValueChange,\n onClear,\n value,\n defaultValue,\n onChange,\n onBlur,\n error,\n errorText,\n helperText,\n placeholder,\n className,\n disabled = false,\n ...rest\n },\n ref\n) {\n const texts = useMCommonTexts()\n const inputTexts = useMInputTexts()\n const captureCaret = useFormatCaret()\n const [internalCountry, setInternalCountry] = useState(defaultCountry.toUpperCase())\n const [internalValue, setInternalValue] = useState(() =>\n formatPostCode(defaultValue?.toString() ?? '', country ?? defaultCountry)\n )\n const [validation, setValidation] = useState<ValidationResult>({valid: true})\n const translateValidation = useMValidationMessage()\n const [touched, setTouched] = useState(false)\n\n const currentCountry = (country ?? internalCountry).toUpperCase()\n const currentRule = useMemo(() => getPostCodeRule(currentCountry), [currentCountry])\n const currentValue = value !== undefined ? formatPostCode(value.toString(), currentCountry) : internalValue\n\n const runValidation = useCallback(\n (formattedValue: string, nextCountry: string) => {\n const result = translateValidation(validatePostCode(formattedValue, nextCountry))\n setValidation(result)\n onValidationChange?.(result)\n return result\n },\n [onValidationChange, translateValidation]\n )\n\n // Keep the visible postal code aligned with the selected country rule.\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n captureCaret(event)\n const formattedValue = formatPostCode(event.target.value, currentCountry)\n\n if (value === undefined) {\n setInternalValue(formattedValue)\n }\n\n onValueChange?.(formattedValue.replace(/\\s|-/g, ''), formattedValue, currentCountry)\n\n if (validateOnChange && touched) {\n runValidation(formattedValue, currentCountry)\n }\n\n onChange?.(event)\n },\n [captureCaret, currentCountry, onChange, onValueChange, runValidation, touched, validateOnChange, value]\n )\n\n // Re-run validation after blur so the visible formatting and error state stay in sync.\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true)\n\n if (validateOnBlur && currentValue) {\n runValidation(currentValue, currentCountry)\n }\n\n onBlur?.(event)\n },\n [currentCountry, currentValue, onBlur, runValidation, validateOnBlur]\n )\n\n // Reset validation state alongside the value when the clear button fires.\n const handleClear = useCallback(() => {\n if (value === undefined) setInternalValue('')\n setValidation({valid: true})\n setTouched(false)\n onValidationChange?.({valid: true})\n onValueChange?.('', '', currentCountry)\n onClear?.()\n }, [onClear, onValidationChange, onValueChange, value, currentCountry])\n\n // Switch the formatter and validation rule whenever the selected country changes.\n const handleCountryChange = useCallback(\n (event: React.ChangeEvent<HTMLSelectElement>) => {\n const nextCountry = event.target.value.toUpperCase()\n const formattedValue = formatPostCode(currentValue, nextCountry)\n\n if (country === undefined) {\n setInternalCountry(nextCountry)\n }\n\n if (value === undefined) {\n setInternalValue(formattedValue)\n }\n\n onCountryChange?.(nextCountry)\n\n if (touched) {\n runValidation(formattedValue, nextCountry)\n }\n },\n [country, currentValue, onCountryChange, runValidation, touched, value]\n )\n\n const isError = error || (touched && !validation.valid)\n const resolvedErrorText = errorText || (touched && !validation.valid ? validation.error : undefined)\n\n return (\n <MInputGroup\n {...rest}\n ref={ref}\n type=\"text\"\n inputMode={currentRule.inputMode}\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onClear={handleClear}\n error={isError}\n errorText={resolvedErrorText}\n helperText={\n resolvedErrorText\n ? undefined\n : (helperText ?? formatMText(inputTexts.formatHint, {example: currentRule.example}))\n }\n placeholder={placeholder ?? currentRule.placeholder}\n maxLength={currentRule.maxLength}\n disabled={disabled}\n prepend={\n selectableCountry ? (\n <div className=\"country-select-wrap\">\n <select\n className=\"country-select\"\n value={currentCountry}\n onChange={handleCountryChange}\n disabled={disabled}\n aria-label={texts.postalCodeCountry}\n >\n {postCodeCountries.map((option) => (\n <option key={option.value} value={option.value}>\n {option.value}\n </option>\n ))}\n </select>\n </div>\n ) : (\n {type: 'text', content: currentCountry}\n )\n }\n className={cn('input-post-code', className)}\n />\n )\n})\n","import {useState, useCallback, useRef, useEffect, useId, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputOTPProps} from './MInputOTP.types'\nimport {cn} from '../../../utils/cn'\nimport {MCloseIcon} from '../../../icons'\nimport './MInputOTP.css'\nimport {useMCommonTexts, useMInputTexts, formatMText} from '../../../i18n/frameworkTexts'\n\n// Spread a code string over `length` slots; missing characters become empty slots.\nfunction toSlots(source: string, length: number): string[] {\n return Array.from({length}, (_, i) => source[i] ?? '')\n}\n\nexport const MInputOTP = forwardRef<HTMLDivElement, MInputOTPProps>(function MInputOTP(\n {\n length = 6,\n value,\n onChange,\n autoFocus = false,\n disabled = false,\n color = 'primary',\n size = 'md',\n error = false,\n errorText,\n clearable = false,\n label,\n onClear,\n className,\n ...rest\n },\n ref\n) {\n const texts = useMCommonTexts()\n const inputTexts = useMInputTexts()\n const labelId = useId()\n // Slots are kept per position, so clearing a middle digit leaves a hole instead of\n // shifting the digits after it. The emitted value is the digits joined without holes.\n const [slotState, setSlotState] = useState<string[]>(() => toSlots(value ?? '', length))\n const ownSlots = slotState.length === length ? slotState : toSlots(slotState.join(''), length)\n const slots = value !== undefined && value !== ownSlots.join('') ? toSlots(value, length) : ownSlots\n const currentValue = slots.join('')\n const inputsRef = useRef<(HTMLInputElement | null)[]>([])\n const resolvedColorClass = error ? 'color-error' : `color-${color}`\n\n const updateSlots = useCallback(\n (next: string[]) => {\n setSlotState(next)\n onChange?.(next.join(''))\n },\n [onChange]\n )\n\n const focusSlot = useCallback(\n (index: number) => {\n const clamped = Math.max(0, Math.min(index, length - 1))\n inputsRef.current[clamped]?.focus()\n },\n [length]\n )\n\n useEffect(() => {\n if (autoFocus) focusSlot(0)\n }, [autoFocus, focusSlot])\n\n const handleInput = useCallback(\n (index: number, char: string) => {\n if (!/^\\d$/.test(char)) return\n const next = [...slots]\n next[index] = char\n updateSlots(next)\n if (index < length - 1) focusSlot(index + 1)\n },\n [slots, length, updateSlots, focusSlot]\n )\n\n const handleKeyDown = useCallback(\n (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n e.preventDefault()\n const next = [...slots]\n if (next[index]) {\n next[index] = ''\n updateSlots(next)\n } else if (index > 0) {\n next[index - 1] = ''\n updateSlots(next)\n focusSlot(index - 1)\n }\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault()\n if (index > 0) focusSlot(index - 1)\n } else if (e.key === 'ArrowRight') {\n e.preventDefault()\n if (index < length - 1) focusSlot(index + 1)\n } else if (e.key === 'Home') {\n e.preventDefault()\n focusSlot(0)\n } else if (e.key === 'End') {\n e.preventDefault()\n focusSlot(length - 1)\n }\n },\n [slots, length, updateSlots, focusSlot]\n )\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent) => {\n e.preventDefault()\n const pasted = e.clipboardData.getData('text').replace(/\\D/g, '').slice(0, length)\n if (pasted) {\n updateSlots(toSlots(pasted, length))\n focusSlot(Math.min(pasted.length, length - 1))\n }\n },\n [length, updateSlots, focusSlot]\n )\n\n const handleClear = useCallback(() => {\n updateSlots(toSlots('', length))\n onClear?.()\n focusSlot(0)\n }, [focusSlot, length, onClear, updateSlots])\n\n return (\n <div\n ref={ref}\n className={cn('otp input', resolvedColorClass, size, disabled && 'disabled', className)}\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : inputTexts.otpGroup}\n {...rest}\n >\n {label && (\n <div id={labelId} className=\"otp label\">\n {label}\n </div>\n )}\n <div className=\"otp control\">\n <div className=\"otp slots\" onPaste={handlePaste}>\n {Array.from({length}, (_, i) => (\n <input\n key={i}\n ref={(el) => {\n inputsRef.current[i] = el\n }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={1}\n value={slots[i]}\n disabled={disabled}\n autoComplete={i === 0 ? 'one-time-code' : 'off'}\n className={cn('otp slot', slots[i] && 'filled')}\n aria-label={formatMText(inputTexts.otpDigit, {index: i + 1, count: length})}\n onChange={(e) => {\n const char = e.target.value.slice(-1)\n handleInput(i, char)\n }}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onFocus={(e) => e.target.select()}\n />\n ))}\n </div>\n {clearable && currentValue.length > 0 && !disabled && (\n <button\n type=\"button\"\n className=\"otp clear clear-btn-base\"\n onClick={handleClear}\n aria-label={texts.clearCode}\n >\n <MCloseIcon />\n </button>\n )}\n </div>\n {error && errorText && <div className=\"otp error\">{errorText}</div>}\n </div>\n )\n})\n","import {useState, useCallback, useId, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputSliderProps} from './MInputSlider.types'\nimport {MSlider} from '../../controls'\nimport {cn} from '../../../utils/cn'\nimport './MInputSlider.css'\nimport {useMInputTexts} from '../../../i18n/frameworkTexts'\n\nfunction clampValue(val: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, val))\n}\n\nfunction roundToPrecision(val: number, precision: number): number {\n const factor = Math.pow(10, precision)\n return Math.round(val * factor) / factor\n}\n\nexport const MInputSlider = forwardRef<HTMLDivElement, MInputSliderProps>(function MInputSlider(\n {\n min = 0,\n max = 100,\n step = 1,\n value,\n onChange,\n precision = 0,\n marks,\n showInput = true,\n color = 'primary',\n size = 'md',\n disabled = false,\n label,\n className,\n ...rest\n },\n ref\n) {\n const texts = useMInputTexts()\n const labelId = useId()\n const [internalValue, setInternalValue] = useState(min)\n const currentValue = value !== undefined ? value : internalValue\n // Text the user is typing into the field; null while not editing. Clamping waits\n // for blur/Enter so intermediate states like `1.` or `5` (on the way to `50`) survive.\n const [draft, setDraft] = useState<string | null>(null)\n\n const update = useCallback(\n (newVal: number) => {\n const clamped = roundToPrecision(clampValue(newVal, min, max), precision)\n if (value === undefined) setInternalValue(clamped)\n onChange?.(clamped)\n },\n [min, max, precision, value, onChange]\n )\n\n const handleSliderChange = useCallback((val: number) => update(val), [update])\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n setDraft(raw)\n const num = Number(raw.replace(',', '.'))\n // Live-follow the slider only with values already inside the range.\n if (raw.trim() !== '' && !isNaN(num) && num >= min && num <= max) update(num)\n },\n [min, max, update]\n )\n\n const commitDraft = useCallback(() => {\n if (draft === null) return\n const num = parseFloat(draft.replace(',', '.'))\n update(isNaN(num) ? currentValue : num)\n setDraft(null)\n }, [draft, currentValue, update])\n\n const handleBlur = useCallback(() => {\n if (draft === null) {\n update(currentValue)\n return\n }\n commitDraft()\n }, [draft, currentValue, update, commitDraft])\n\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') commitDraft()\n },\n [commitDraft]\n )\n\n return (\n <div ref={ref} className={cn('slider input', size, disabled && 'disabled', className)} {...rest}>\n {label && (\n <div className=\"slider label\" id={labelId}>\n {label}\n </div>\n )}\n <div className=\"slider row\">\n <MSlider\n min={min}\n max={max}\n step={step}\n value={currentValue}\n onChange={handleSliderChange}\n marks={marks}\n color={color}\n disabled={disabled}\n aria-labelledby={label ? labelId : undefined}\n aria-label={label ? undefined : texts.sliderValue}\n />\n {showInput && (\n <input\n type=\"text\"\n inputMode=\"decimal\"\n className={cn('slider field', `color-${color}`)}\n value={draft ?? String(currentValue)}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleInputKeyDown}\n disabled={disabled}\n aria-label={label || texts.sliderValue}\n />\n )}\n </div>\n </div>\n )\n})\n","import {useState, useRef, useCallback, useEffect, useId} from 'react'\nimport type * as React from 'react'\nimport type {MInputFileCropShape} from './MInputFile.types'\nimport {MButton, MSlider} from '../../controls'\nimport {MZoomInIcon} from '../../../icons'\nimport './MCropEditor.css'\nimport {useMInputFileTexts} from '../../../i18n/frameworkTexts'\n\n// Zoom range shared by the mouse wheel and the slider.\nconst MIN_SCALE = 0.1\nconst MAX_SCALE = 5\n// Keyboard pan distance in px (Shift multiplies it) and zoom factor per +/- press.\nconst PAN_STEP = 10\nconst PAN_STEP_FAST = 50\nconst KEY_ZOOM_FACTOR = 1.1\nconst CONTAINER_SIZE = 280\n\ninterface MCropEditorProps {\n file: File\n shape: MInputFileCropShape\n outputSize: number\n quality: number\n onCrop: (cropped: File) => void\n onCancel: () => void\n}\n\nexport function MCropEditor({file, shape, outputSize, quality, onCrop, onCancel}: MCropEditorProps) {\n const texts = useMInputFileTexts()\n const canvasRef = useRef<HTMLCanvasElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n const imgRef = useRef<HTMLImageElement | null>(null)\n const [imgSrc, setImgSrc] = useState('')\n const [scale, setScale] = useState(1)\n const [offset, setOffset] = useState({x: 0, y: 0})\n const [dragging, setDragging] = useState(false)\n const dragStart = useRef({x: 0, y: 0, ox: 0, oy: 0})\n const baseId = useId()\n const hintId = `${baseId}-hint`\n const keyboardHintId = `${baseId}-keys`\n\n useEffect(() => {\n const url = URL.createObjectURL(file)\n setImgSrc(url)\n return () => URL.revokeObjectURL(url)\n }, [file])\n\n useEffect(() => {\n if (!imgSrc) return\n const img = new Image()\n img.onload = () => {\n imgRef.current = img\n const minDim = Math.min(img.width, img.height)\n const containerSize = CONTAINER_SIZE\n const initialScale = containerSize / minDim\n setScale(initialScale)\n setOffset({\n x: (containerSize - img.width * initialScale) / 2,\n y: (containerSize - img.height * initialScale) / 2,\n })\n }\n img.src = imgSrc\n }, [imgSrc])\n\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault()\n setDragging(true)\n dragStart.current = {x: e.clientX, y: e.clientY, ox: offset.x, oy: offset.y}\n ;(e.target as HTMLElement).setPointerCapture(e.pointerId)\n },\n [offset]\n )\n\n const handlePointerMove = useCallback(\n (e: React.PointerEvent) => {\n if (!dragging) return\n setOffset({\n x: dragStart.current.ox + (e.clientX - dragStart.current.x),\n y: dragStart.current.oy + (e.clientY - dragStart.current.y),\n })\n },\n [dragging]\n )\n\n const handlePointerUp = useCallback(() => {\n setDragging(false)\n }, [])\n\n // Zoom around the viewport centre so the visible middle of the image stays put.\n const zoomTo = useCallback(\n (requested: number) => {\n const newScale = Math.max(MIN_SCALE, Math.min(requested, MAX_SCALE))\n const cx = CONTAINER_SIZE / 2\n const cy = CONTAINER_SIZE / 2\n\n setOffset({\n x: cx - (cx - offset.x) * (newScale / scale),\n y: cy - (cy - offset.y) * (newScale / scale),\n })\n setScale(newScale)\n },\n [scale, offset]\n )\n\n const handleWheel = useCallback(\n (e: React.WheelEvent) => {\n e.preventDefault()\n zoomTo(scale * (e.deltaY > 0 ? 0.95 : 1.05))\n },\n [scale, zoomTo]\n )\n\n const handleSliderChange = zoomTo\n\n // Keyboard alternative to dragging and the wheel: arrows pan, + / - zoom.\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.altKey || e.ctrlKey || e.metaKey) return\n const distance = e.shiftKey ? PAN_STEP_FAST : PAN_STEP\n const pan: Record<string, [number, number]> = {\n ArrowLeft: [-distance, 0],\n ArrowRight: [distance, 0],\n ArrowUp: [0, -distance],\n ArrowDown: [0, distance],\n }\n\n if (pan[e.key]) {\n e.preventDefault()\n const [dx, dy] = pan[e.key]\n setOffset((prev) => ({x: prev.x + dx, y: prev.y + dy}))\n } else if (e.key === '+' || e.key === '=' || e.key === 'Add') {\n e.preventDefault()\n zoomTo(scale * KEY_ZOOM_FACTOR)\n } else if (e.key === '-' || e.key === '_' || e.key === 'Subtract') {\n e.preventDefault()\n zoomTo(scale / KEY_ZOOM_FACTOR)\n }\n },\n [scale, zoomTo]\n )\n\n const exportCrop = useCallback(() => {\n const img = imgRef.current\n const canvas = canvasRef.current\n if (!img || !canvas) return\n\n const containerSize = CONTAINER_SIZE\n canvas.width = outputSize\n canvas.height = outputSize\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n const ratio = outputSize / containerSize\n\n if (shape === 'circle') {\n ctx.beginPath()\n ctx.arc(outputSize / 2, outputSize / 2, outputSize / 2, 0, Math.PI * 2)\n ctx.closePath()\n ctx.clip()\n }\n\n ctx.drawImage(img, offset.x * ratio, offset.y * ratio, img.width * scale * ratio, img.height * scale * ratio)\n\n canvas.toBlob(\n (blob) => {\n if (!blob) return\n const ext = file.name.replace(/.*\\./, '')\n const name = file.name.replace(/\\.[^.]+$/, '') + '_cropped.' + ext\n const cropped = new File([blob], name, {type: blob.type})\n onCrop(cropped)\n },\n file.type.startsWith('image/png') ? 'image/png' : 'image/jpeg',\n quality\n )\n }, [file, offset, scale, outputSize, quality, shape, onCrop])\n\n // Convert scale to 0-100 range for MSlider and back\n const sliderValue = Math.round(((scale - MIN_SCALE) / (MAX_SCALE - MIN_SCALE)) * 100)\n\n const handleSliderValueChange = useCallback(\n (value: number) => {\n const newScale = MIN_SCALE + (value / 100) * (MAX_SCALE - MIN_SCALE)\n handleSliderChange(newScale)\n },\n [handleSliderChange]\n )\n\n const [hintBefore, ...hintRest] = texts.cropHint.split('{apply}')\n\n return (\n <div className=\"crop editor\">\n <div id={hintId} className=\"crop hint\" role=\"note\">\n {hintBefore}\n {hintRest.length > 0 && (\n <>\n <strong>{texts.cropApply}</strong>\n {hintRest.join('{apply}')}\n </>\n )}\n </div>\n <div\n ref={containerRef}\n className={`crop viewport ${shape}`}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onWheel={handleWheel}\n onKeyDown={handleKeyDown}\n role=\"application\"\n tabIndex={0}\n aria-label={texts.cropArea}\n aria-describedby={`${keyboardHintId} ${hintId}`}\n >\n <span id={keyboardHintId} className=\"crop sr-only\">\n {texts.cropKeyboardHint}\n </span>\n {imgSrc && (\n <img\n src={imgSrc}\n alt=\"\"\n className=\"crop image\"\n draggable={false}\n style={{\n transform: `translate(${offset.x}px, ${offset.y}px) scale(${scale})`,\n transformOrigin: '0 0',\n }}\n />\n )}\n <div className={`crop overlay ${shape}`} />\n </div>\n\n <div className=\"crop zoom\">\n <MZoomInIcon className=\"crop zoom icon\" aria-hidden=\"true\" />\n <MSlider\n min={0}\n max={100}\n step={1}\n value={sliderValue}\n onChange={handleSliderValueChange}\n color=\"primary\"\n className=\"crop zoom slider\"\n aria-label={texts.cropZoom}\n />\n </div>\n\n <div className=\"crop actions\">\n <MButton variant=\"ghost\" size=\"sm\" color=\"neutral\" onClick={onCancel}>\n {texts.cropCancel}\n </MButton>\n <MButton variant=\"filled\" size=\"sm\" color=\"primary\" onClick={exportCrop}>\n {texts.cropApply}\n </MButton>\n </div>\n\n <canvas ref={canvasRef} style={{display: 'none'}} />\n </div>\n )\n}\n","import {useState, useCallback, useRef, useMemo, useEffect, useId, forwardRef} from 'react'\nimport type * as React from 'react'\nimport type {MInputFileProps, MInputFileCropOptions} from './MInputFile.types'\nimport {MCropEditor} from './MCropEditor'\nimport {cn} from '../../../utils/cn'\nimport {\n MCloseIcon,\n MFileArchiveIcon,\n MFileCodeIcon,\n MFileDocsIcon,\n MFileExeIcon,\n MFileIcon,\n MFileImageIcon,\n MFileJsonIcon,\n MFileMdIcon,\n MFileMp3Icon,\n MFileMp4Icon,\n MFileOdtIcon,\n MFilePdfIcon,\n MFileTextIcon,\n MFileXlsIcon,\n MFileZipIcon,\n MUploadIcon,\n} from '../../../icons'\nimport './MInputFile.css'\nimport {useMCommonTexts, useMInputFileTexts, formatMText} from '../../../i18n/frameworkTexts'\n\nfunction formatSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`\n}\n\nfunction fileExtension(name: string): string {\n const dot = name.lastIndexOf('.')\n return dot >= 0 ? name.slice(dot + 1).toUpperCase() : ''\n}\n\nfunction isImage(file: File): boolean {\n return file.type.startsWith('image/')\n}\n\nfunction FileTypeIcon({ext}: {ext: string}) {\n const name = ext.toLowerCase()\n\n if (name === 'pdf') return <MFilePdfIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg'].includes(name)) {\n return <MFileImageIcon className=\"file type icon\" aria-hidden=\"true\" />\n }\n if (['json'].includes(name)) return <MFileJsonIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['js', 'jsx', 'ts', 'tsx', 'html', 'css', 'php', 'xml'].includes(name)) {\n return <MFileCodeIcon className=\"file type icon\" aria-hidden=\"true\" />\n }\n if (['txt'].includes(name)) return <MFileTextIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['md'].includes(name)) return <MFileMdIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['docs', 'doc', 'docx'].includes(name)) return <MFileDocsIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['odt'].includes(name)) return <MFileOdtIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['csv', 'xls', 'xlsx'].includes(name)) return <MFileXlsIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['zip'].includes(name)) return <MFileZipIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['rar', '7z', 'tar', 'gz'].includes(name))\n return <MFileArchiveIcon className=\"file type icon\" aria-hidden=\"true\" />\n if (['mp3', 'wav', 'ogg'].includes(name)) return <MFileMp3Icon className=\"file type icon\" aria-hidden=\"true\" />\n if (['mp4', 'mov', 'avi', 'mkv', 'webm'].includes(name)) {\n return <MFileMp4Icon className=\"file type icon\" aria-hidden=\"true\" />\n }\n if (['exe', 'msi', 'bat'].includes(name)) return <MFileExeIcon className=\"file type icon\" aria-hidden=\"true\" />\n\n return <MFileIcon className=\"file type icon\" aria-hidden=\"true\" />\n}\n\nexport const MInputFile = forwardRef<HTMLDivElement, MInputFileProps>(function MInputFile(\n {\n accept,\n multiple = false,\n maxSize,\n maxFiles,\n onChange,\n label,\n helperText,\n errorText,\n error = false,\n disabled = false,\n color = 'primary',\n size = 'md',\n preview = true,\n clearable = false,\n icon,\n placeholder: placeholderProp,\n dropText: dropTextProp,\n fullWidth = false,\n crop,\n onClear,\n className,\n ...rest\n },\n ref\n) {\n const texts = useMCommonTexts()\n const fileTexts = useMInputFileTexts()\n const placeholder = placeholderProp ?? fileTexts.placeholder\n const dropText = dropTextProp ?? fileTexts.drop\n const [dragging, setDragging] = useState(false)\n const [files, setFiles] = useState<File[]>([])\n const [fileError, setFileError] = useState('')\n const [cropFile, setCropFile] = useState<File | null>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const dragCounter = useRef(0)\n const baseId = useId()\n const labelId = `${baseId}-label`\n const acceptId = `${baseId}-accept`\n const messageId = `${baseId}-message`\n\n const cropOptions: MInputFileCropOptions | null = crop\n ? typeof crop === 'boolean'\n ? {shape: 'square', outputSize: 256, quality: 0.92}\n : {shape: crop.shape ?? 'square', outputSize: crop.outputSize ?? 256, quality: crop.quality ?? 0.92}\n : null\n\n const objectUrls = useMemo(() => {\n return files.map((f) => (isImage(f) ? URL.createObjectURL(f) : null))\n }, [files])\n\n useEffect(() => {\n return () => {\n objectUrls.forEach((url) => {\n if (url) URL.revokeObjectURL(url)\n })\n }\n }, [objectUrls])\n\n const processFiles = useCallback(\n (incoming: FileList | File[]) => {\n let accepted = Array.from(incoming)\n\n if (accept) {\n const patterns = accept.split(',').map((s) => s.trim().toLowerCase())\n const matches = (f: File) => {\n const ext = '.' + f.name.split('.').pop()?.toLowerCase()\n const mime = f.type.toLowerCase()\n return patterns.some(\n (p) => p === ext || p === mime || (p.endsWith('/*') && mime.startsWith(p.slice(0, -1)))\n )\n }\n // Reject the whole batch with a message instead of dropping files silently.\n const rejected = accepted.filter((f) => !matches(f))\n if (rejected.length) {\n setFileError(formatMText(fileTexts.type, {name: rejected.map((f) => f.name).join(', ')}))\n return\n }\n }\n\n if (maxSize) {\n const oversized = accepted.filter((f) => f.size > maxSize)\n if (oversized.length) {\n setFileError(formatMText(fileTexts.maxSize, {size: formatSize(maxSize)}))\n return\n }\n }\n\n if (maxFiles && accepted.length > maxFiles) {\n setFileError(formatMText(maxFiles > 1 ? fileTexts.maxFiles : fileTexts.maxFilesOne, {count: maxFiles}))\n return\n }\n\n setFileError('')\n\n if (cropOptions && accepted.length === 1 && isImage(accepted[0])) {\n setCropFile(accepted[0])\n return\n }\n\n setFiles(accepted)\n onChange?.(accepted)\n },\n [accept, maxSize, maxFiles, onChange, cropOptions, fileTexts]\n )\n\n const handleCropDone = useCallback(\n (cropped: File) => {\n setCropFile(null)\n setFiles([cropped])\n onChange?.([cropped])\n },\n [onChange]\n )\n\n const handleCropCancel = useCallback(() => {\n setCropFile(null)\n }, [])\n\n const handleDragEnter = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (disabled) return\n dragCounter.current++\n setDragging(true)\n },\n [disabled]\n )\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n dragCounter.current--\n if (dragCounter.current <= 0) {\n dragCounter.current = 0\n setDragging(false)\n }\n }, [])\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }, [])\n\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n dragCounter.current = 0\n setDragging(false)\n if (disabled) return\n if (e.dataTransfer.files.length) {\n processFiles(e.dataTransfer.files)\n }\n },\n [disabled, processFiles]\n )\n\n const handleClick = useCallback(() => {\n if (!disabled) inputRef.current?.click()\n }, [disabled])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files?.length) {\n processFiles(e.target.files)\n }\n // Reset so picking the same file again still fires `change`.\n e.target.value = ''\n },\n [processFiles]\n )\n\n const removeFile = useCallback(\n (index: number) => {\n const url = objectUrls[index]\n if (url) URL.revokeObjectURL(url)\n const next = files.filter((_, i) => i !== index)\n setFiles(next)\n onChange?.(next)\n },\n [files, objectUrls, onChange]\n )\n\n const clearFiles = useCallback(() => {\n objectUrls.forEach((url) => {\n if (url) URL.revokeObjectURL(url)\n })\n setCropFile(null)\n setFiles([])\n setFileError('')\n if (inputRef.current) {\n inputRef.current.value = ''\n }\n onChange?.([])\n onClear?.()\n }, [objectUrls, onChange, onClear])\n\n const displayError = errorText || fileError\n const hasError = error || !!fileError\n const resolvedColorClass = hasError ? 'color-error' : `color-${color}`\n const hasMessage = (hasError && !!displayError) || (!!helperText && !hasError)\n const describedBy = [hasMessage && messageId, accept && acceptId].filter(Boolean).join(' ') || undefined\n\n return (\n <div\n ref={ref}\n className={cn(\n 'file input',\n resolvedColorClass,\n size,\n fullWidth && 'full-width',\n disabled && 'disabled',\n className\n )}\n {...rest}\n >\n {(label || (clearable && files.length > 0 && !disabled)) && (\n <div className=\"file header\">\n {label && (\n <div id={labelId} className=\"file label\">\n {label}\n </div>\n )}\n {clearable && files.length > 0 && !disabled && (\n <button\n type=\"button\"\n className=\"file clear clear-btn-base\"\n onClick={clearFiles}\n aria-label={texts.clearFiles}\n >\n <MCloseIcon aria-hidden=\"true\" />\n </button>\n )}\n </div>\n )}\n\n {/* The native picker lives outside the role=\"button\" zone so it is not a control nested in a\n control; it stays hidden from assistive tech because the zone is the accessible entry point. */}\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleChange}\n tabIndex={-1}\n aria-hidden=\"true\"\n className=\"file hidden\"\n />\n\n <div\n className={cn('file dropzone', dragging && 'dragging', hasError && 'error')}\n onClick={handleClick}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n handleClick()\n }\n }}\n aria-label={label ? undefined : placeholder}\n aria-labelledby={label ? labelId : undefined}\n aria-describedby={describedBy}\n aria-disabled={disabled || undefined}\n >\n <div className=\"file content\">\n {icon && <div className=\"file icon\">{icon}</div>}\n {!icon && <MUploadIcon className=\"file icon default\" aria-hidden=\"true\" />}\n <div className=\"file text\">{dragging ? dropText : placeholder}</div>\n {accept && (\n <div id={acceptId} className=\"file accept\">\n {accept}\n </div>\n )}\n </div>\n </div>\n\n {cropFile && cropOptions && (\n <MCropEditor\n file={cropFile}\n shape={cropOptions.shape!}\n outputSize={cropOptions.outputSize!}\n quality={cropOptions.quality!}\n onCrop={handleCropDone}\n onCancel={handleCropCancel}\n />\n )}\n\n {helperText && !hasError && (\n <div id={messageId} className=\"file helper\">\n {helperText}\n </div>\n )}\n {hasError && displayError && (\n <div id={messageId} className=\"file error\" role=\"alert\">\n {displayError}\n </div>\n )}\n\n {preview && files.length > 0 && !cropFile && (\n <div className=\"file preview\">\n {files.map((file, i) => (\n <div key={`${file.name}-${i}`} className=\"file item\">\n <div className=\"file thumb\">\n {objectUrls[i] ? (\n <img src={objectUrls[i]!} alt={file.name} className=\"file image\" />\n ) : (\n <FileTypeIcon ext={fileExtension(file.name)} />\n )}\n </div>\n <div className=\"file info\">\n <span className=\"file name\">{file.name}</span>\n <span className=\"file size\">{formatSize(file.size)}</span>\n </div>\n <button\n type=\"button\"\n className=\"file remove\"\n onClick={(e) => {\n e.stopPropagation()\n removeFile(i)\n }}\n aria-label={formatMText(texts.removeItem, {name: file.name})}\n >\n <MCloseIcon aria-hidden=\"true\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n )\n})\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ const e=require(`./frameworkTexts-CaqdiKHW.cjs`),t=require(`./icons-Bp8bB9TP.cjs`),n=require(`./cn-DYFxgzi2.cjs`),r=require(`./validators-SZmLxnir.cjs`),i=require(`./creditCards-Bo2mrc53.cjs`),a=require(`./formatters-CauWlsnM.cjs`),o=require(`./useGhostText-DO-tfxS0.cjs`),s=require(`./useInteractionEffect-CtXlbjhC.cjs`),c=require(`./MButton-BxEky3xQ.cjs`),l=require(`./MCheckbox-DpKJpnFF.cjs`),u=require(`./MSlider-hONQBulE.cjs`),d=require(`./MInput-BeEGufZG.cjs`);require(`./core-w629c4ND.cjs`);let f=require(`react`),p=require(`react/jsx-runtime`);var m=(0,f.forwardRef)(function({value:e,defaultValue:t,name:r,id:i,placeholder:a,disabled:s=!1,readOnly:l=!1,required:u=!1,autoFocus:m=!1,rows:h=3,autoResize:g=!1,minRows:_,maxRows:v,variant:y=`outlined`,size:b=`md`,color:x,fullWidth:S=!1,label:C,helperText:w,errorText:T,error:E=!1,success:D=!1,maxLength:O,showCharCount:k=!1,ghostOptions:A,ghostMinChars:j=2,onGhostAccept:M,loading:N=!1,onChange:P,onFocus:F,onBlur:I,className:L,style:R,textareaClassName:z,labelClassName:B},V){let[H,U]=(0,f.useState)(!1),W=(0,f.useRef)(null),{currentValue:G,setCurrentValue:K}=d.n(e,t),q=o.t({options:A??[],value:G,minChars:j}),J=E||!!T,Y=J?`color-error`:x?`color-${x}`:void 0,X=V??W,ee=(0,f.useCallback)(()=>{let e=typeof X==`function`?null:X?.current;if(!e||!g)return;e.style.height=`auto`;let t=getComputedStyle(e),n=parseFloat(t.lineHeight)||20,r=(parseFloat(t.paddingTop)||0)+(parseFloat(t.paddingBottom)||0),i=t.boxSizing===`border-box`?(parseFloat(t.borderTopWidth)||0)+(parseFloat(t.borderBottomWidth)||0):0,a=Math.max(e.scrollHeight-r,0),o=_?_*n:0,s=v?v*n:1/0,c=Math.min(Math.max(a,o),s),l=t.boxSizing===`border-box`?r+i:0;e.style.height=`${c+l}px`,e.style.overflowY=a-c>1?`auto`:`hidden`},[g,_,v,X]);(0,f.useEffect)(()=>{ee()},[G,ee]);let te=(0,f.useCallback)(e=>{U(!0),F?.(e)},[F]),ne=(0,f.useCallback)(e=>{U(!1),I?.(e)},[I]),Z=(0,f.useCallback)(e=>{K(e.target.value),P?.(e),q.reset()},[P,K,q.reset]),Q=(0,f.useCallback)(e=>{if(A&&q.hint&&q.onKeyDown(e)){let e=q.accept();K(e.value),M?.(e.value);let t=typeof X==`function`?null:X?.current;t&&((Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,`value`)?.set)?.call(t,e.value),t.dispatchEvent(new Event(`input`,{bubbles:!0})));return}},[A,q,K,M,X]),re=n.t(`container`,`field-${y}`,`field-${b}`,H&&`focused`,J&&`error`,D&&!J&&`success`,s&&`disabled`);return(0,p.jsxs)(`div`,{className:n.t(`textarea`,Y,S&&`full-width`,L),style:R,children:[C&&(0,p.jsx)(`label`,{htmlFor:i,className:n.t(`field-label`,H&&`focused`,J&&`error`,D&&!J&&`success`,u&&`required`,B),children:C}),(0,p.jsxs)(`div`,{className:re,children:[A?(0,p.jsxs)(`div`,{className:`ghost-text-field ghost-text-field-multi`,children:[(0,p.jsx)(`textarea`,{ref:X,name:r,id:i,placeholder:a,disabled:s,readOnly:l,required:u,autoFocus:m,rows:g?_??h:h,maxLength:O,value:G,className:n.t(`field`,z),onChange:Z,onFocus:te,onBlur:ne,onKeyDown:Q,"aria-invalid":J||void 0,"aria-describedby":T?`${i}-error`:w?`${i}-helper`:void 0}),H&&q.hint&&(0,p.jsxs)(`span`,{className:`ghost-text-overlay`,"aria-hidden":`true`,children:[(0,p.jsx)(`span`,{className:`ghost-text-typed`,children:G}),(0,p.jsx)(`span`,{className:`ghost-text-hint`,children:q.hint})]})]}):(0,p.jsx)(`textarea`,{ref:X,name:r,id:i,placeholder:a,disabled:s,readOnly:l,required:u,autoFocus:m,rows:g?_??h:h,maxLength:O,value:G,className:n.t(`field`,z),onChange:Z,onFocus:te,onBlur:ne,"aria-invalid":J||void 0,"aria-describedby":T?`${i}-error`:w?`${i}-helper`:void 0}),N&&(0,p.jsx)(c.r,{size:`sm`,color:x,className:`textarea-spinner`})]}),(T||w||k)&&(0,p.jsxs)(`div`,{className:`bottom-row`,children:[(0,p.jsxs)(`span`,{children:[T&&(0,p.jsx)(`span`,{id:i?`${i}-error`:void 0,className:`field-error`,role:`alert`,children:T}),!T&&w&&(0,p.jsx)(`span`,{id:i?`${i}-helper`:void 0,className:`field-helper`,children:w})]}),k&&O&&(0,p.jsxs)(`span`,{className:n.t(`char-count`,G.length>O&&`over`),children:[G.length,`/`,O]})]})]})});function h(e){let t=0;return e.length>=8&&t++,e.length>=12&&t++,/[a-z]/.test(e)&&/[A-Z]/.test(e)&&t++,/\d/.test(e)&&t++,/[^a-zA-Z0-9]/.test(e)&&t++,t<=1?`weak`:t<=2?`fair`:t<=3?`good`:`strong`}var g=(0,f.forwardRef)(function({showToggle:r=!0,showStrength:i=!1,onStrengthChange:a,value:o,defaultValue:s,onChange:c,className:l,id:u,...m},g){let _=e.p(),v=(0,f.useId)(),y=u??v,[b,x]=(0,f.useState)(!1),[S,C]=(0,f.useState)(s?.toString()??``),w=o===void 0?S:o.toString(),T=h(w);(0,f.useEffect)(()=>{a?.(T)},[T,a]);let E=(0,f.useCallback)(e=>{o===void 0&&C(e.target.value),c?.(e)},[c,o]),D=r?(0,p.jsx)(`button`,{type:`button`,className:`password toggle`,onMouseDown:e=>e.preventDefault(),onClick:()=>x(e=>!e),"aria-label":_.showPassword,"aria-pressed":b,"aria-controls":y,disabled:m.disabled,children:b?(0,p.jsx)(t.lr,{}):(0,p.jsx)(t.ur,{})}):void 0;return(0,p.jsxs)(`div`,{className:n.t(`password input`,l),children:[(0,p.jsx)(d.t,{...m,ref:g,id:y,type:b?`text`:`password`,value:w,onChange:E,endIcon:D}),i&&w.length>0&&(0,p.jsxs)(`div`,{className:`password strength row`,children:[(0,p.jsx)(`div`,{className:`password strength bar`,"aria-hidden":`true`,children:[0,1,2,3].map(e=>(0,p.jsx)(`div`,{className:n.t(`password strength segment`,e<[`weak`,`fair`,`good`,`strong`].indexOf(T)+1&&`strength-${T}`)},e))}),(0,p.jsx)(`span`,{className:n.t(`password strength label`,`strength-${T}`),"aria-hidden":`true`,children:_.strength[T]})]}),i&&(0,p.jsx)(`span`,{className:`password strength announcement`,role:`status`,"aria-live":`polite`,children:w.length>0?e.t(_.passwordStrength,{strength:_.strength[T]}):``})]})});function _(e,t,n){return t!==void 0&&e<t?t:n!==void 0&&e>n?n:e}function v(e,t){let n=10**t;return Math.round(e*n)/n}function y(e){return parseFloat(e.replace(`,`,`.`))}var b=(0,f.forwardRef)(function({min:r,max:i,step:a=1,showStepper:o=!0,precision:s=0,allowNegative:c=!0,onValueChange:l,value:u,defaultValue:m,onChange:h,onKeyDown:g,onBlur:b,disabled:x=!1,className:S,id:C,inputProps:w,...T},E){let D=e.s(),O=(0,f.useId)(),k=C??O,[A,j]=(0,f.useState)(m?.toString()??``),M=u===void 0?A:u.toString(),N=(0,f.useRef)(null),P=(0,f.useRef)(M);(0,f.useEffect)(()=>{P.current=M},[M]);let F=(0,f.useCallback)(e=>{u===void 0&&j(e);let t=y(e);l?.(isNaN(t)?null:t)},[u,l]),I=(0,f.useCallback)(e=>{let t=v(_(e,r,i),s);P.current=t.toString(),F(t.toString())},[r,i,s,F]),L=(0,f.useCallback)((e,t=1)=>{I((y(P.current)||0)+a*t*e)},[a,I]),R=(0,f.useCallback)(e=>{L(e),N.current=setInterval(()=>L(e),150)},[L]),z=(0,f.useCallback)(()=>{N.current&&=(clearInterval(N.current),null)},[]);(0,f.useEffect)(()=>z,[z]);let B=(0,f.useCallback)(e=>{let t=e.target.value.replace(c?/[^\d.,-]/g:/[^\d.,]/g,``);P.current=t,F(t),h?.(e)},[h,c,F]),V=(0,f.useCallback)(e=>{let t=y(P.current);if(!isNaN(t)){let e=v(_(t,r,i),s);P.current=e.toString(),F(e.toString())}b?.(e)},[r,i,s,F,b]),H=(0,f.useCallback)(e=>{e.key===`ArrowUp`?(e.preventDefault(),L(1)):e.key===`ArrowDown`?(e.preventDefault(),L(-1)):e.key===`PageUp`?(e.preventDefault(),L(1,10)):e.key===`PageDown`?(e.preventDefault(),L(-1,10)):e.key===`Home`&&r!==void 0?(e.preventDefault(),I(r)):e.key===`End`&&i!==void 0&&(e.preventDefault(),I(i)),g?.(e)},[L,I,r,i,g]),U=e=>t=>{t.detail===0&&L(e)},W=y(M),G=o&&!x?(0,p.jsxs)(`div`,{className:`number stepper`,children:[(0,p.jsx)(`button`,{type:`button`,className:`number step button`,onPointerDown:e=>{e.preventDefault(),R(1)},onPointerUp:z,onPointerLeave:z,onPointerCancel:z,onClick:U(1),tabIndex:-1,"aria-label":D.increment,"aria-controls":k,children:(0,p.jsx)(t.Gi,{})}),(0,p.jsx)(`button`,{type:`button`,className:`number step button`,onPointerDown:e=>{e.preventDefault(),R(-1)},onPointerUp:z,onPointerLeave:z,onPointerCancel:z,onClick:U(-1),tabIndex:-1,"aria-label":D.decrement,"aria-controls":k,children:(0,p.jsx)(t.Ki,{})})]}):void 0;return(0,p.jsx)(d.t,{...T,ref:E,id:k,inputProps:{role:`spinbutton`,"aria-valuenow":isNaN(W)?void 0:W,"aria-valuemin":r,"aria-valuemax":i,...w},type:`text`,inputMode:`decimal`,value:M,onChange:B,onBlur:V,onKeyDown:H,endIcon:G,disabled:x,className:n.t(`number input`,S)})}),x=(0,f.forwardRef)(function({validateOnBlur:n=!0,validateOnChange:i=!1,showValidIcon:a=!0,onValidationChange:o,value:s,defaultValue:c,onChange:l,onBlur:u,error:m,errorText:h,success:g,placeholder:_=`email@example.com`,...v},y){let[b,x]=(0,f.useState)(c?.toString()??``),[S,C]=(0,f.useState)({valid:!0}),w=e.D(),[T,E]=(0,f.useState)(!1),D=s===void 0?b:s.toString(),O=(0,f.useCallback)(e=>{let t=w(r.o(e));return C(t),o?.(t),t},[o,w]),k=(0,f.useCallback)(e=>{s===void 0&&x(e.target.value),i&&T&&O(e.target.value),l?.(e)},[l,s,i,T,O]),A=(0,f.useCallback)(e=>{E(!0),n&&e.target.value&&O(e.target.value),u?.(e)},[u,n,O]),j=m||T&&!S.valid,M=h||(T&&!S.valid?S.error:void 0),N=!j&&g!==void 0?g:T&&S.valid&&D.length>0,P=a&&N?(0,p.jsx)(`span`,{className:`validation-icon`,children:(0,p.jsx)(t.Yi,{})}):void 0;return(0,p.jsx)(d.t,{...v,ref:y,type:`email`,value:D,onChange:k,onBlur:A,error:j,errorText:M,success:N,placeholder:_,startIcon:(0,p.jsx)(t.Fi,{}),endIcon:P})}),S=[`http`,`https`],C=(0,f.forwardRef)(function({protocols:n=S,requireProtocol:i=!0,formatOnBlur:a=!1,validateOnBlur:o=!0,validateOnChange:s=!1,showValidIcon:c=!0,onValidationChange:l,value:u,defaultValue:m,onChange:h,onBlur:g,error:_,errorText:v,success:y,placeholder:b=`https://example.com`,...x},C){let[w,T]=(0,f.useState)(m?.toString()??``),[E,D]=(0,f.useState)({valid:!0}),O=e.D(),[k,A]=(0,f.useState)(!1),j=u===void 0?w:u.toString(),M=(0,f.useCallback)(e=>{let t=O(r._(e,{protocols:n,requireProtocol:i}));return D(t),l?.(t),t},[n,i,l,O]),N=(0,f.useCallback)(e=>{u===void 0&&T(e.target.value),s&&k&&M(e.target.value),h?.(e)},[h,u,s,k,M]),P=(0,f.useCallback)(e=>{A(!0);let t=e.target.value,r=/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(t);a&&t&&!r&&n.length>0&&(t=`${n[0]}://${t}`,u===void 0&&T(t),e.target.value=t,h?.(e)),o&&t&&M(t),g?.(e)},[g,o,M,a,n,u,h]),F=_||k&&!E.valid,I=v||(k&&!E.valid?E.error:void 0),L=!F&&y!==void 0?y:k&&E.valid&&j.length>0,R=c&&L?(0,p.jsx)(`span`,{className:`validation-icon`,children:(0,p.jsx)(t.Yi,{})}):void 0;return(0,p.jsx)(d.t,{...x,ref:C,type:`url`,value:j,onChange:N,onBlur:P,error:F,errorText:I,success:L,placeholder:b,startIcon:(0,p.jsx)(t.On,{}),endIcon:R})}),w=/[0-9A-Za-z]/;function T(e){let t=0;for(let n of e)w.test(n)&&t++;return t}function E(e,t){if(t<=0)return 0;let n=0;for(let r=0;r<e.length;r++)if(w.test(e[r])&&(n++,n===t))return r+1;return e.length}function D(){let e=(0,f.useRef)(null);return(0,f.useLayoutEffect)(()=>{let t=e.current;if(!t)return;e.current=null;let{input:n,count:r}=t;if(n.ownerDocument.activeElement!==n)return;let i=E(n.value,r);(n.selectionStart!==i||n.selectionEnd!==i)&&n.setSelectionRange(i,i)}),(0,f.useCallback)(t=>{let n=t.target,r=n.selectionStart;if(r===null||r>=n.value.length){e.current=null;return}e.current={input:n,count:T(n.value.slice(0,r))}},[])}var O={PL:`+48`,DE:`+49`,US:`+1`,GB:`+44`,FR:`+33`,CZ:`+420`,SK:`+421`},k=Object.entries(O).sort(([,e],[,t])=>t.length-e.length);function A(e){let t=e.trim().replace(/^00/,`+`);if(!t.startsWith(`+`))return null;let n=`+`+a.u(t);for(let[e,t]of k)if(n.startsWith(t))return{country:e,rest:n.slice(t.length)};return null}function j(e){let t=e.trim();return!t.startsWith(`+`)&&!t.startsWith(`00`)?!1:a.u(t.startsWith(`00`)?`+`+t.slice(2):t).length<=3}function M(e){let t=e.trim();return`+`+a.u(t.startsWith(`00`)?t.slice(2):t.slice(1)).slice(0,3)}var N=(0,f.forwardRef)(function({countryCode:i,defaultCountryCode:o=`PL`,showCountryCode:s=!0,formatOnChange:c=!0,validateOnBlur:l=!0,onValidationChange:u,onValueChange:m,onCountryChange:h,onClear:g,value:_,defaultValue:v,onChange:y,onBlur:b,error:x,errorText:S,placeholder:C=`123 456 789`,className:w,...T},E){let[k,N]=(0,f.useState)((i??o).toUpperCase()),[P,F]=(0,f.useState)(v?.toString()??``),[I,L]=(0,f.useState)({valid:!0}),R=e.D(),[z,B]=(0,f.useState)(!1),V=(i??k).toUpperCase(),H=D(),U=_===void 0?P:_.toString(),W=(0,f.useCallback)(e=>{let t=e.target.value;if(t===``){_===void 0&&F(``),m?.(``,``),y?.(e);return}let n=A(t);if(n){let t=n.country;i===void 0&&t!==V&&(N(t),h?.(t));let r=a.u(n.rest),o=c?a.s(r,{countryCode:t}):r;_===void 0&&F(o),m?.(r,o),y?.(e);return}if(j(t)){let n=M(t);_===void 0&&F(n),m?.(``,n),y?.(e);return}H(e);let r=a.u(t),o=c?a.s(r,{countryCode:V}):r;_===void 0&&F(o),m?.(r,o),y?.(e)},[H,y,_,c,V,i,m,h]),G=(0,f.useCallback)(e=>{if(B(!0),l&&U){let e=R(r.p(a.u(U),V));L(e),u?.(e)}b?.(e)},[b,l,U,V,u,R]),K=(0,f.useCallback)(()=>{_===void 0&&F(``),L({valid:!0}),B(!1),u?.({valid:!0}),m?.(``,``),g?.()},[g,m,u,_]),q=U.startsWith(`+`),J=s&&!q?(0,p.jsx)(`span`,{className:`phone prefix`,children:O[V]??`+${V}`}):void 0,Y=x||z&&!I.valid,X=S||(z&&!I.valid?I.error:void 0);return(0,p.jsx)(d.t,{...T,ref:E,type:`tel`,value:U,onChange:W,onBlur:G,onClear:K,error:Y,errorText:X,placeholder:C,startIcon:s?J:(0,p.jsx)(t.Ni,{}),className:n.t(`phone input`,w)})}),P=(0,f.forwardRef)(function({autoCapitalize:e=!0,allowNumbers:n=!1,allowSpecialChars:r=!1,minWords:i,validateOnBlur:o=!0,onValidationChange:s,value:c,defaultValue:l,onChange:u,onBlur:m,error:h,errorText:g,placeholder:_=`Jan Kowalski`,...v},y){let[b,x]=(0,f.useState)(l?.toString()??``),[S,C]=(0,f.useState)({valid:!0}),[w,T]=(0,f.useState)(!1),E=c===void 0?b:c.toString(),D=(0,f.useCallback)(t=>{let i=t;return n||(i=i.replace(/\d/g,``)),r||(i=n?i.replace(/[^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻ\s'-]/g,``):i.replace(/[^a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ\s'-]/g,``)),e&&(i=a.n(i)),i},[n,r,e]),O=(0,f.useCallback)(e=>{let t=D(e.target.value);c===void 0&&x(t),u?.(e)},[u,c,D]),k=(0,f.useCallback)(e=>{if(T(!0),o&&E){let e=E.trim().split(/\s+/).filter(Boolean);if(i&&e.length<i){let e={valid:!1,error:`Enter at least ${i} word${i>1?`s`:``}`};C(e),s?.(e)}else{let e={valid:!0};C(e),s?.(e)}}m?.(e)},[m,o,E,i,s]),A=h||w&&!S.valid,j=g||(w&&!S.valid?S.error:void 0);return(0,p.jsx)(d.t,{...v,ref:y,type:`text`,value:E,onChange:O,onBlur:k,error:A,errorText:j,placeholder:_,startIcon:(0,p.jsx)(t._r,{})})});function F(e){return typeof e==`object`&&!!e&&!(0,f.isValidElement)(e)&&`type`in e}function I(e,t,r,i){if(!F(e))return(0,p.jsx)(`div`,{className:n.t(`addon`,`custom`,t),children:e},`${t}-${r}`);let a=e;return a.type===`button`?(0,p.jsx)(c.t,{variant:`ghost`,color:i,size:`sm`,className:n.t(`addon`,t,`addon-button`),onClick:a.onClick,clickEffect:`none`,children:a.content},`${t}-${r}`):a.type===`checkbox`?(0,p.jsx)(`div`,{className:n.t(`addon`,t,`checkbox`),children:(0,p.jsx)(l.t,{size:`sm`,clickEffect:`none`,checked:a.checked,onChange:e=>a.onCheckedChange?.(e.target.checked),className:`addon-checkbox`})},`${t}-${r}`):(0,p.jsx)(`span`,{className:n.t(`addon`,t),children:a.content},`${t}-${r}`)}function L(e){return e==null?[]:Array.isArray(e)?e:[e]}var R=(0,f.forwardRef)(function({prepend:r,append:i,type:a=`text`,value:o,defaultValue:l,name:u,id:m,placeholder:h,disabled:g=!1,readOnly:_=!1,required:v=!1,autoFocus:y=!1,autoComplete:b,inputMode:x,variant:S=`outlined`,size:C=`md`,fullWidth:w=!1,label:T,helperText:E,errorText:D,color:O=`primary`,error:k=!1,maxLength:A,clearable:j=!1,onChange:M,onFocus:N,onBlur:P,onKeyDown:F,onClear:R,loading:z=!1,clickEffect:B=`ripple`,rippleColor:V,className:H,style:U,inputClassName:W,labelClassName:G},K){let q=e.s(),[J,Y]=(0,f.useState)(!1),X=(0,f.useRef)(null),{effectClassName:ee,effectLayer:te,handlePointerDown:ne}=s.t({effect:B,disabled:g||_,color:V}),Z=k||!!D,Q=Z?`color-error`:`color-${O}`,{currentValue:re,setCurrentValue:ie}=d.n(o,l),ae=re.length>0,oe=(0,f.useCallback)(e=>{Y(!0),N?.(e)},[N]),$=(0,f.useCallback)(e=>{Y(!1),P?.(e)},[P]),se=(0,f.useCallback)(e=>{ie(e.target.value),M?.(e)},[M,ie]),ce=(0,f.useCallback)(()=>{ie(``);let e=K?.current??X.current;e&&((Object.getOwnPropertyDescriptor(HTMLInputElement.prototype,`value`)?.set)?.call(e,``),e.dispatchEvent(new Event(`input`,{bubbles:!0}))),R?.(),e?.focus()},[R,K,ie]),le=L(r),ue=L(i);return(0,p.jsxs)(`div`,{className:n.t(`input-group`,Q,w&&`full-width`,H),style:U,children:[T&&(0,p.jsx)(`label`,{htmlFor:m,className:n.t(`field-label`,J&&`focused`,Z&&`error`,v&&`required`,G),children:T}),(0,p.jsxs)(`div`,{className:n.t(`container`,`field-${S}`,`field-${C}`,J&&`focused`,Z&&`has-error`,g&&`disabled`,ee),onPointerDown:ne,children:[te,le.map((e,t)=>I(e,`prepend`,t,O)),(0,p.jsx)(`input`,{ref:K??X,type:a,value:re,name:u,id:m,placeholder:h,disabled:g,readOnly:_,required:v,autoFocus:y,autoComplete:b,inputMode:x,maxLength:A,className:n.t(`field`,W),onChange:se,onFocus:oe,onBlur:$,onKeyDown:F,"aria-invalid":Z||void 0,"aria-describedby":D?`${m}-error`:E?`${m}-helper`:void 0}),z&&(0,p.jsx)(`span`,{className:`spinner-addon`,children:(0,p.jsx)(c.r,{size:`sm`,color:O})}),j&&ae&&!z&&!g&&!_&&(0,p.jsx)(`button`,{type:`button`,className:`clear-btn clear-btn-base`,onMouseDown:e=>e.preventDefault(),onClick:ce,tabIndex:-1,"aria-label":q.clearInput,children:(0,p.jsx)(t.Xi,{})}),ue.map((e,t)=>I(e,`append`,t,O))]}),(D||E)&&(0,p.jsxs)(`div`,{className:`bottom`,children:[D&&(0,p.jsx)(`span`,{id:m?`${m}-error`:void 0,className:`field-error`,role:`alert`,children:D}),!D&&E&&(0,p.jsx)(`span`,{id:m?`${m}-helper`:void 0,className:`field-helper`,children:E})]})]})});function z(e){return e?.replace(/[^a-zA-Z]/g,``).toUpperCase().slice(0,2)||``}function B(e){let t=r.n(e)??28;return Math.max(t-2,0)}function V(e){let t=B(e),n=[],r=t;for(;r>0;){let e=Math.min(4,r);n.push(`0`.repeat(e)),r-=e}return n.join(` `)}function H(e){let t=B(e);return t===0?0:t+Math.max(0,Math.ceil(t/4)-1)}var U=(0,f.forwardRef)(function({countryCode:t,formatOnChange:i=!0,validateOnBlur:o=!0,onValidationChange:s,onValueChange:c,onCountryChange:l,onClear:u,value:d,defaultValue:m,onChange:h,onBlur:g,error:_,errorText:v,helperText:y,placeholder:b,className:x,disabled:S=!1,...C},w){let T=e.p(),E=D(),[O,k]=(0,f.useState)(z(t)||`PL`),A=z(t)||O,j=(0,f.useCallback)((e,t)=>{let n=a.d(e).replace(/[^0-9A-Z]/g,``).slice(0,B(t));return n?i?a.a(n):n:``},[i]),[M,N]=(0,f.useState)(()=>j(m?.toString()??``,z(t)||`PL`)),[P,F]=(0,f.useState)({valid:!0}),I=e.D(),[L,U]=(0,f.useState)(!1),W=d===void 0?M:j(d.toString(),A),G=(0,f.useCallback)(()=>{F({valid:!0}),U(!1),s?.({valid:!0})},[s]),K=(0,f.useCallback)(e=>{E(e);let t=j(e.target.value,A);d===void 0&&N(t),!t&&(L||!P.valid)&&G(),c?.(a.d(t),t),h?.(e)},[j,E,A,h,c,G,L,P.valid,d]),q=(0,f.useCallback)(e=>{if(U(!0),o&&W){let e=I(r.s(`${A}${a.d(W)}`));F(e),s?.(e)}g?.(e)},[A,W,g,s,o,I]),J=(0,f.useCallback)(()=>{d===void 0&&N(``),G(),c?.(``,``),u?.()},[u,c,G,d]),Y=(0,f.useCallback)(e=>{let n=z(e.target.value);if(!n)return;t===void 0&&k(n);let i=j(W,n);if(d===void 0&&N(i),c?.(a.d(i),i),l?.(n),L&&i){let e=I(r.s(`${n}${a.d(i)}`));F(e),s?.(e)}},[j,t,W,l,s,c,L,d,I]),X=_||L&&!P.valid,ee=v||(L&&!P.valid?P.error:void 0),te=(0,f.useMemo)(()=>r.r,[]),ne=ee?void 0:y??e.t(T.formatHint,{example:`${A} ${V(A)}`});return(0,p.jsx)(R,{...C,ref:w,type:`text`,value:W,onChange:K,onBlur:q,onClear:J,error:X,errorText:ee,placeholder:b??V(A),helperText:ne,disabled:S,maxLength:H(A),prepend:(0,p.jsx)(`div`,{className:`country-select-wrap`,children:(0,p.jsx)(`select`,{className:`country-select`,value:A,onChange:Y,disabled:S,"aria-label":T.ibanCountry,children:te.map(e=>(0,p.jsx)(`option`,{value:e,children:e},e))})}),className:n.t(`input-iban`,x)})}),W={NIP:r.u,PESEL:r.d,REGON:r.m},G={NIP:13,PESEL:11,REGON:14},K={NIP:10,PESEL:11,REGON:14},q={NIP:`123-456-78-19`,PESEL:`00000000000`,REGON:`000000000`},J=(0,f.forwardRef)(function({taxIdType:n,formatOnChange:r=!0,validateOnBlur:i=!0,showValidIcon:o=!0,onValidationChange:s,onValueChange:c,value:l,defaultValue:u,onChange:m,onBlur:h,error:g,errorText:_,success:v,placeholder:y,...b},x){let[S,C]=(0,f.useState)(u?.toString()??``),[w,T]=(0,f.useState)({valid:!0}),E=e.D(),[O,k]=(0,f.useState)(!1),A=l===void 0?S:l.toString(),j=D(),M=(0,f.useCallback)(e=>{j(e);let t=a.u(e.target.value).slice(0,K[n]),i=r&&n===`NIP`?a.o(t):t;l===void 0&&C(i),c?.(t),m?.(e)},[j,m,l,r,n,c]),N=(0,f.useCallback)(e=>{if(k(!0),i&&A){let e=W[n],t=E(e(a.u(A)));T(t),s?.(t)}h?.(e)},[h,i,A,n,s,E]),P=g||O&&!w.valid,F=_||(O&&!w.valid?w.error:void 0),I=!P&&(v===void 0?O&&w.valid&&A.length>0:v),L=o&&I?(0,p.jsx)(`span`,{className:`validation-icon`,children:(0,p.jsx)(t.Yi,{})}):void 0;return(0,p.jsx)(d.t,{...b,ref:x,type:`text`,inputMode:`numeric`,value:A,onChange:M,onBlur:N,error:P,errorText:F,success:I,placeholder:y??q[n],startIcon:(0,p.jsx)(t.dr,{}),endIcon:L,maxLength:G[n]})}),Y=(0,f.forwardRef)(function({currency:e,currencySymbol:t,currencyPosition:r=`end`,decimalSeparator:i=`,`,thousandSeparator:o=` `,precision:s=2,min:c,max:l,allowNegative:u=!1,onValueChange:m,value:h,defaultValue:g,onChange:_,onBlur:v,placeholder:y=`0,00`,startIcon:b,endIcon:x,className:S,...C},w){let T=t??e??``,E=(0,f.useCallback)(e=>{if(e==null||e===``)return``;let t=typeof e==`number`?e.toFixed(s):String(e),n=a.c(o?t.split(o).join(``):t,``,i);return n===null?``:a.r(n.toFixed(s),{decimalSeparator:i,thousandSeparator:o,precision:s})},[i,o,s]),D=(0,f.useCallback)(e=>e==null||e===``?null:typeof e==`number`?Number.isNaN(e)?null:e:a.c(e,o,i),[o,i]),[O,k]=(0,f.useState)(()=>E(h===void 0?g:h)),A=(0,f.useRef)(null),j=(0,f.useRef)(null),M=(0,f.useCallback)(e=>{A.current=e,typeof w==`function`?w(e):w&&(w.current=e)},[w]);(0,f.useEffect)(()=>{h!==void 0&&D(h)!==D(O)&&k(E(h))},[h,O,E,D]);let N=(0,f.useCallback)((e,t)=>{let n=0;for(let r=0;r<t&&r<e.length;r++){let t=e[r];(t>=`0`&&t<=`9`||t===i||t===`-`)&&n++}return n},[i]),P=(0,f.useCallback)((e,t)=>{if(t<=0)return 0;let n=0;for(let r=0;r<e.length;r++){let a=e[r];if((a>=`0`&&a<=`9`||a===i||a===`-`)&&n++,n===t)return r+1}return e.length},[i]);(0,f.useLayoutEffect)(()=>{let e=j.current;if(j.current=null,e===null)return;let t=A.current;!t||document.activeElement!==t||t.setSelectionRange(e,e)},[O]);let F=(0,f.useCallback)(e=>{let t=e.target.value,n=e.target.selectionStart??t.length,r=``,c=!1,l=o&&o!==i?o:``;for(let e of t)l&&e===l||(e>=`0`&&e<=`9`?r+=e:(e===`,`||e===`.`)&&!c&&s>0?(r+=i,c=!0):e===`-`&&u&&r.length===0&&(r+=`-`));let d=/\d/.test(r),f;d?(f=a.r(r,{decimalSeparator:i,thousandSeparator:o,precision:s}),r.endsWith(i)&&!f.includes(i)&&(f+=i)):f=r.startsWith(`-`)?`-`:``,j.current=P(f,N(t,n)),k(f),m?.(a.c(f,o,i)),_?.(e)},[_,i,o,s,u,m,N,P]),I=(0,f.useCallback)(e=>{let t=a.c(O,o,i);if(t!==null){c!==void 0&&t<c&&(t=c),l!==void 0&&t>l&&(t=l);let e=E(t);e!==O&&k(e),m?.(t)}else O!==``&&(k(``),m?.(null));v?.(e)},[O,c,l,i,o,E,m,v]),L=T?(0,p.jsx)(`span`,{className:`currency symbol`,children:T}):void 0;return(0,p.jsx)(d.t,{...C,ref:M,type:`text`,inputMode:`decimal`,value:O,onChange:F,onBlur:I,placeholder:y,startIcon:r===`start`?L:b,endIcon:r===`end`?L:x,className:n.t(`currency input`,S)})}),X={"DD/MM/YYYY":`DD{s}MM{s}YYYY`,"MM/DD/YYYY":`MM{s}DD{s}YYYY`,"YYYY/MM/DD":`YYYY{s}MM{s}DD`},ee=(0,f.forwardRef)(function({format:n=`DD/MM/YYYY`,separator:i=`/`,minDate:o,maxDate:s,validateOnBlur:c=!0,validateOnChange:l=!1,onDateChange:u,onValidationChange:m,value:h,defaultValue:g,onChange:_,onBlur:v,onKeyDown:y,onClear:b,error:x,errorText:S,placeholder:C,className:w,...T},E){let[D,O]=(0,f.useState)(g?.toString()??``),[k,A]=(0,f.useState)({valid:!0}),j=e.D(),[M,N]=(0,f.useState)(!1),P=(0,f.useRef)(!1),F=h===void 0?D:h.toString();(0,f.useEffect)(()=>{if(P.current){P.current=!1;return}if(!F){A({valid:!0}),N(!1);return}A(j(r.a(F,{format:n,minDate:o,maxDate:s})))},[F,n,s,o,j]);let I=(0,f.useCallback)(e=>{let t=j(r.a(e,{format:n,minDate:o,maxDate:s}));return A(t),m?.(t),t},[n,o,s,m,j]),L=(0,f.useCallback)(e=>{a.u(e).length===8?u?.(r.i(e,n),e):u?.(null,e)},[n,u]),R=(0,f.useCallback)(e=>{let t=a.u(e.target.value);if(t.length>8)return;let r=a.i(t,n,i);P.current=!0,h===void 0&&O(r),L(r),l&&M&&I(r),_?.(e)},[_,h,n,i,l,M,I,L]),z=(0,f.useCallback)(()=>{P.current=!0,h===void 0&&O(``),A({valid:!0}),N(!1),u?.(null,``),b?.()},[h,u,b]),B=(0,f.useCallback)(e=>{N(!0),c&&F&&I(F),v?.(e)},[v,c,F,I]),V=(0,f.useCallback)(e=>{if([`Backspace`,`Delete`,`Tab`,`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key)){y?.(e);return}if(e.ctrlKey||e.metaKey){y?.(e);return}e.key.length===1&&!/^\d$/.test(e.key)&&e.preventDefault(),y?.(e)},[y]),H=x||M&&!k.valid,U=S||(M&&!k.valid?k.error:void 0);return(0,p.jsx)(d.t,{...T,ref:E,type:`text`,inputMode:`numeric`,value:F,onChange:R,onBlur:B,onKeyDown:V,onClear:z,error:H,errorText:U,placeholder:C??X[n].replace(/\{s\}/g,i),startIcon:(0,p.jsx)(t.Ri,{}),maxLength:10,className:w})});function te({value:e}){let t=i.n(e);return(0,p.jsx)(`span`,{className:n.t(`credit-card-brand-badge`,`credit-brand`,t.brand),children:t.iconLabel})}var ne=(0,f.forwardRef)(function({validateOnBlur:r=!0,validateOnChange:a=!1,showBrandIcon:o=!0,showValidIcon:s=!0,onValidationChange:c,onCardBrandChange:l,onValueChange:u,onClear:m,value:h,defaultValue:g,onChange:_,onBlur:v,error:y,errorText:b,success:x,placeholder:S=`4242 4242 4242 4242`,className:C,...w},T){let[E,O]=(0,f.useState)(()=>i.r(g?.toString()??``)),[k,A]=(0,f.useState)({valid:!0}),j=e.D(),[M,N]=(0,f.useState)(!1),P=h===void 0?E:i.r(h.toString()),F=(0,f.useRef)(i.n(P).brand),I=D(),L=(0,f.useCallback)(e=>{let t=j(i.a(e));return A(t),c?.(t),t},[c,j]),R=(0,f.useCallback)(e=>{I(e);let t=i.r(e.target.value),n=i.n(t);h===void 0&&O(t),n.brand!==F.current&&(F.current=n.brand,l?.(n.brand)),u?.(i.i(t),t,n.brand),a&&M&&L(t),_?.(e)},[I,l,_,u,L,M,a,h]),z=(0,f.useCallback)(e=>{N(!0),r&&P&&L(P),v?.(e)},[P,v,L,r]),B=(0,f.useCallback)(()=>{h===void 0&&O(``),A({valid:!0}),N(!1),c?.({valid:!0}),u?.(``,``,`unknown`),F.current!==`unknown`&&(F.current=`unknown`,l?.(`unknown`)),m?.()},[l,m,c,u,h]),V=y||M&&!k.valid,H=b||(M&&!k.valid?k.error:void 0),U=!V&&x!==void 0?x:M&&k.valid&&i.i(P).length>0,W=s&&U?(0,p.jsx)(`span`,{className:`credit valid validation-icon credit-card-valid-icon`,"aria-hidden":`true`,children:(0,p.jsx)(t.Yi,{})}):void 0;return(0,p.jsx)(d.t,{...w,ref:T,type:`text`,inputMode:`numeric`,value:P,onChange:R,onBlur:z,onClear:B,error:V,errorText:H,success:U,placeholder:S,startIcon:o?(0,p.jsx)(te,{value:P}):void 0,endIcon:W,className:n.t(`credit-card input`,C)})}),Z=(0,f.forwardRef)(function({country:t,defaultCountry:i=`PL`,selectableCountry:a=!0,validateOnBlur:o=!0,validateOnChange:s=!1,onCountryChange:c,onValidationChange:l,onValueChange:u,onClear:d,value:m,defaultValue:h,onChange:g,onBlur:_,error:v,errorText:y,helperText:b,placeholder:x,className:S,disabled:C=!1,...w},T){let E=e.s(),O=e.p(),k=D(),[A,j]=(0,f.useState)(i.toUpperCase()),[M,N]=(0,f.useState)(()=>r.v(h?.toString()??``,t??i)),[P,F]=(0,f.useState)({valid:!0}),I=e.D(),[L,z]=(0,f.useState)(!1),B=(t??A).toUpperCase(),V=(0,f.useMemo)(()=>r.y(B),[B]),H=m===void 0?M:r.v(m.toString(),B),U=(0,f.useCallback)((e,t)=>{let n=I(r.S(e,t));return F(n),l?.(n),n},[l,I]),W=(0,f.useCallback)(e=>{k(e);let t=r.v(e.target.value,B);m===void 0&&N(t),u?.(t.replace(/\s|-/g,``),t,B),s&&L&&U(t,B),g?.(e)},[k,B,g,u,U,L,s,m]),G=(0,f.useCallback)(e=>{z(!0),o&&H&&U(H,B),_?.(e)},[B,H,_,U,o]),K=(0,f.useCallback)(()=>{m===void 0&&N(``),F({valid:!0}),z(!1),l?.({valid:!0}),u?.(``,``,B),d?.()},[d,l,u,m,B]),q=(0,f.useCallback)(e=>{let n=e.target.value.toUpperCase(),i=r.v(H,n);t===void 0&&j(n),m===void 0&&N(i),c?.(n),L&&U(i,n)},[t,H,c,U,L,m]),J=v||L&&!P.valid,Y=y||(L&&!P.valid?P.error:void 0);return(0,p.jsx)(R,{...w,ref:T,type:`text`,inputMode:V.inputMode,value:H,onChange:W,onBlur:G,onClear:K,error:J,errorText:Y,helperText:Y?void 0:b??e.t(O.formatHint,{example:V.example}),placeholder:x??V.placeholder,maxLength:V.maxLength,disabled:C,prepend:a?(0,p.jsx)(`div`,{className:`country-select-wrap`,children:(0,p.jsx)(`select`,{className:`country-select`,value:B,onChange:q,disabled:C,"aria-label":E.postalCodeCountry,children:r.b.map(e=>(0,p.jsx)(`option`,{value:e.value,children:e.value},e.value))})}):{type:`text`,content:B},className:n.t(`input-post-code`,S)})});function Q(e,t){return Array.from({length:t},(t,n)=>e[n]??``)}var re=(0,f.forwardRef)(function({length:r=6,value:i,onChange:a,autoFocus:o=!1,disabled:s=!1,color:c=`primary`,size:l=`md`,error:u=!1,errorText:d,clearable:m=!1,label:h,onClear:g,className:_,...v},y){let b=e.s(),x=e.p(),S=(0,f.useId)(),[C,w]=(0,f.useState)(()=>Q(i??``,r)),T=C.length===r?C:Q(C.join(``),r),E=i!==void 0&&i!==T.join(``)?Q(i,r):T,D=E.join(``),O=(0,f.useRef)([]),k=u?`color-error`:`color-${c}`,A=(0,f.useCallback)(e=>{w(e),a?.(e.join(``))},[a]),j=(0,f.useCallback)(e=>{let t=Math.max(0,Math.min(e,r-1));O.current[t]?.focus()},[r]);(0,f.useEffect)(()=>{o&&j(0)},[o,j]);let M=(0,f.useCallback)((e,t)=>{if(!/^\d$/.test(t))return;let n=[...E];n[e]=t,A(n),e<r-1&&j(e+1)},[E,r,A,j]),N=(0,f.useCallback)((e,t)=>{if(t.key===`Backspace`){t.preventDefault();let n=[...E];n[e]?(n[e]=``,A(n)):e>0&&(n[e-1]=``,A(n),j(e-1))}else t.key===`ArrowLeft`?(t.preventDefault(),e>0&&j(e-1)):t.key===`ArrowRight`?(t.preventDefault(),e<r-1&&j(e+1)):t.key===`Home`?(t.preventDefault(),j(0)):t.key===`End`&&(t.preventDefault(),j(r-1))},[E,r,A,j]),P=(0,f.useCallback)(e=>{e.preventDefault();let t=e.clipboardData.getData(`text`).replace(/\D/g,``).slice(0,r);t&&(A(Q(t,r)),j(Math.min(t.length,r-1)))},[r,A,j]),F=(0,f.useCallback)(()=>{A(Q(``,r)),g?.(),j(0)},[j,r,g,A]);return(0,p.jsxs)(`div`,{ref:y,className:n.t(`otp input`,k,l,s&&`disabled`,_),role:`group`,"aria-labelledby":h?S:void 0,"aria-label":h?void 0:x.otpGroup,...v,children:[h&&(0,p.jsx)(`div`,{id:S,className:`otp label`,children:h}),(0,p.jsxs)(`div`,{className:`otp control`,children:[(0,p.jsx)(`div`,{className:`otp slots`,onPaste:P,children:Array.from({length:r},(t,i)=>(0,p.jsx)(`input`,{ref:e=>{O.current[i]=e},type:`text`,inputMode:`numeric`,maxLength:1,value:E[i],disabled:s,autoComplete:i===0?`one-time-code`:`off`,className:n.t(`otp slot`,E[i]&&`filled`),"aria-label":e.t(x.otpDigit,{index:i+1,count:r}),onChange:e=>{M(i,e.target.value.slice(-1))},onKeyDown:e=>N(i,e),onFocus:e=>e.target.select()},i))}),m&&D.length>0&&!s&&(0,p.jsx)(`button`,{type:`button`,className:`otp clear clear-btn-base`,onClick:F,"aria-label":b.clearCode,children:(0,p.jsx)(t.Xi,{})})]}),u&&d&&(0,p.jsx)(`div`,{className:`otp error`,children:d})]})});function ie(e,t,n){return Math.min(n,Math.max(t,e))}function ae(e,t){let n=10**t;return Math.round(e*n)/n}var oe=(0,f.forwardRef)(function({min:t=0,max:r=100,step:i=1,value:a,onChange:o,precision:s=0,marks:c,showInput:l=!0,color:d=`primary`,size:m=`md`,disabled:h=!1,label:g,className:_,...v},y){let b=e.p(),x=(0,f.useId)(),[S,C]=(0,f.useState)(t),w=a===void 0?S:a,[T,E]=(0,f.useState)(null),D=(0,f.useCallback)(e=>{let n=ae(ie(e,t,r),s);a===void 0&&C(n),o?.(n)},[t,r,s,a,o]),O=(0,f.useCallback)(e=>D(e),[D]),k=(0,f.useCallback)(e=>{let n=e.target.value;E(n);let i=Number(n.replace(`,`,`.`));n.trim()!==``&&!isNaN(i)&&i>=t&&i<=r&&D(i)},[t,r,D]),A=(0,f.useCallback)(()=>{if(T===null)return;let e=parseFloat(T.replace(`,`,`.`));D(isNaN(e)?w:e),E(null)},[T,w,D]),j=(0,f.useCallback)(()=>{if(T===null){D(w);return}A()},[T,w,D,A]),M=(0,f.useCallback)(e=>{e.key===`Enter`&&A()},[A]);return(0,p.jsxs)(`div`,{ref:y,className:n.t(`slider input`,m,h&&`disabled`,_),...v,children:[g&&(0,p.jsx)(`div`,{className:`slider label`,id:x,children:g}),(0,p.jsxs)(`div`,{className:`slider row`,children:[(0,p.jsx)(u.t,{min:t,max:r,step:i,value:w,onChange:O,marks:c,color:d,disabled:h,"aria-labelledby":g?x:void 0,"aria-label":g?void 0:b.sliderValue}),l&&(0,p.jsx)(`input`,{type:`text`,inputMode:`decimal`,className:n.t(`slider field`,`color-${d}`),value:T??String(w),onChange:k,onBlur:j,onKeyDown:M,disabled:h,"aria-label":g||b.sliderValue})]})]})}),$=.1,se=5,ce=10,le=50,ue=1.1,de=280;function fe({file:n,shape:r,outputSize:i,quality:a,onCrop:o,onCancel:s}){let l=e.f(),d=(0,f.useRef)(null),m=(0,f.useRef)(null),h=(0,f.useRef)(null),[g,_]=(0,f.useState)(``),[v,y]=(0,f.useState)(1),[b,x]=(0,f.useState)({x:0,y:0}),[S,C]=(0,f.useState)(!1),w=(0,f.useRef)({x:0,y:0,ox:0,oy:0}),T=(0,f.useId)(),E=`${T}-hint`,D=`${T}-keys`;(0,f.useEffect)(()=>{let e=URL.createObjectURL(n);return _(e),()=>URL.revokeObjectURL(e)},[n]),(0,f.useEffect)(()=>{if(!g)return;let e=new Image;e.onload=()=>{h.current=e;let t=Math.min(e.width,e.height),n=de,r=n/t;y(r),x({x:(n-e.width*r)/2,y:(n-e.height*r)/2})},e.src=g},[g]);let O=(0,f.useCallback)(e=>{e.preventDefault(),C(!0),w.current={x:e.clientX,y:e.clientY,ox:b.x,oy:b.y},e.target.setPointerCapture(e.pointerId)},[b]),k=(0,f.useCallback)(e=>{S&&x({x:w.current.ox+(e.clientX-w.current.x),y:w.current.oy+(e.clientY-w.current.y)})},[S]),A=(0,f.useCallback)(()=>{C(!1)},[]),j=(0,f.useCallback)(e=>{let t=Math.max($,Math.min(e,se)),n=de/2,r=de/2;x({x:n-(n-b.x)*(t/v),y:r-(r-b.y)*(t/v)}),y(t)},[v,b]),M=(0,f.useCallback)(e=>{e.preventDefault(),j(v*(e.deltaY>0?.95:1.05))},[v,j]),N=j,P=(0,f.useCallback)(e=>{if(e.altKey||e.ctrlKey||e.metaKey)return;let t=e.shiftKey?le:ce,n={ArrowLeft:[-t,0],ArrowRight:[t,0],ArrowUp:[0,-t],ArrowDown:[0,t]};if(n[e.key]){e.preventDefault();let[t,r]=n[e.key];x(e=>({x:e.x+t,y:e.y+r}))}else e.key===`+`||e.key===`=`||e.key===`Add`?(e.preventDefault(),j(v*ue)):(e.key===`-`||e.key===`_`||e.key===`Subtract`)&&(e.preventDefault(),j(v/ue))},[v,j]),F=(0,f.useCallback)(()=>{let e=h.current,t=d.current;if(!e||!t)return;let s=de;t.width=i,t.height=i;let c=t.getContext(`2d`);if(!c)return;let l=i/s;r===`circle`&&(c.beginPath(),c.arc(i/2,i/2,i/2,0,Math.PI*2),c.closePath(),c.clip()),c.drawImage(e,b.x*l,b.y*l,e.width*v*l,e.height*v*l),t.toBlob(e=>{if(!e)return;let t=n.name.replace(/.*\./,``),r=n.name.replace(/\.[^.]+$/,``)+`_cropped.`+t;o(new File([e],r,{type:e.type}))},n.type.startsWith(`image/png`)?`image/png`:`image/jpeg`,a)},[n,b,v,i,a,r,o]),I=Math.round((v-$)/(se-$)*100),L=(0,f.useCallback)(e=>{N($+e/100*(se-$))},[N]),[R,...z]=l.cropHint.split(`{apply}`);return(0,p.jsxs)(`div`,{className:`crop editor`,children:[(0,p.jsxs)(`div`,{id:E,className:`crop hint`,role:`note`,children:[R,z.length>0&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(`strong`,{children:l.cropApply}),z.join(`{apply}`)]})]}),(0,p.jsxs)(`div`,{ref:m,className:`crop viewport ${r}`,onPointerDown:O,onPointerMove:k,onPointerUp:A,onWheel:M,onKeyDown:P,role:`application`,tabIndex:0,"aria-label":l.cropArea,"aria-describedby":`${D} ${E}`,children:[(0,p.jsx)(`span`,{id:D,className:`crop sr-only`,children:l.cropKeyboardHint}),g&&(0,p.jsx)(`img`,{src:g,alt:``,className:`crop image`,draggable:!1,style:{transform:`translate(${b.x}px, ${b.y}px) scale(${v})`,transformOrigin:`0 0`}}),(0,p.jsx)(`div`,{className:`crop overlay ${r}`})]}),(0,p.jsxs)(`div`,{className:`crop zoom`,children:[(0,p.jsx)(t.$n,{className:`crop zoom icon`,"aria-hidden":`true`}),(0,p.jsx)(u.t,{min:0,max:100,step:1,value:I,onChange:L,color:`primary`,className:`crop zoom slider`,"aria-label":l.cropZoom})]}),(0,p.jsxs)(`div`,{className:`crop actions`,children:[(0,p.jsx)(c.t,{variant:`ghost`,size:`sm`,color:`neutral`,onClick:s,children:l.cropCancel}),(0,p.jsx)(c.t,{variant:`filled`,size:`sm`,color:`primary`,onClick:F,children:l.cropApply})]}),(0,p.jsx)(`canvas`,{ref:d,style:{display:`none`}})]})}function pe(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function me(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t+1).toUpperCase():``}function he(e){return e.type.startsWith(`image/`)}function ge({ext:e}){let n=e.toLowerCase();return n===`pdf`?(0,p.jsx)(t.pi,{className:`file type icon`,"aria-hidden":`true`}):[`png`,`jpg`,`jpeg`,`gif`,`webp`,`svg`].includes(n)?(0,p.jsx)(t.fi,{className:`file type icon`,"aria-hidden":`true`}):[`json`].includes(n)?(0,p.jsx)(t.Gr,{className:`file type icon`,"aria-hidden":`true`}):[`js`,`jsx`,`ts`,`tsx`,`html`,`css`,`php`,`xml`].includes(n)?(0,p.jsx)(t.di,{className:`file type icon`,"aria-hidden":`true`}):[`txt`].includes(n)?(0,p.jsx)(t.mi,{className:`file type icon`,"aria-hidden":`true`}):[`md`].includes(n)?(0,p.jsx)(t.qr,{className:`file type icon`,"aria-hidden":`true`}):[`docs`,`doc`,`docx`].includes(n)?(0,p.jsx)(t.zr,{className:`file type icon`,"aria-hidden":`true`}):[`odt`].includes(n)?(0,p.jsx)(t.Xr,{className:`file type icon`,"aria-hidden":`true`}):[`csv`,`xls`,`xlsx`].includes(n)?(0,p.jsx)(t.oi,{className:`file type icon`,"aria-hidden":`true`}):[`zip`].includes(n)?(0,p.jsx)(t.ci,{className:`file type icon`,"aria-hidden":`true`}):[`rar`,`7z`,`tar`,`gz`].includes(n)?(0,p.jsx)(t.ui,{className:`file type icon`,"aria-hidden":`true`}):[`mp3`,`wav`,`ogg`].includes(n)?(0,p.jsx)(t.Jr,{className:`file type icon`,"aria-hidden":`true`}):[`mp4`,`mov`,`avi`,`mkv`,`webm`].includes(n)?(0,p.jsx)(t.Yr,{className:`file type icon`,"aria-hidden":`true`}):[`exe`,`msi`,`bat`].includes(n)?(0,p.jsx)(t.Br,{className:`file type icon`,"aria-hidden":`true`}):(0,p.jsx)(t._i,{className:`file type icon`,"aria-hidden":`true`})}var _e=(0,f.forwardRef)(function({accept:r,multiple:i=!1,maxSize:a,maxFiles:o,onChange:s,label:c,helperText:l,errorText:u,error:d=!1,disabled:m=!1,color:h=`primary`,size:g=`md`,preview:_=!0,clearable:v=!1,icon:y,placeholder:b,dropText:x,fullWidth:S=!1,crop:C,onClear:w,className:T,...E},D){let O=e.s(),k=e.f(),A=b??k.placeholder,j=x??k.drop,[M,N]=(0,f.useState)(!1),[P,F]=(0,f.useState)([]),[I,L]=(0,f.useState)(``),[R,z]=(0,f.useState)(null),B=(0,f.useRef)(null),V=(0,f.useRef)(0),H=(0,f.useId)(),U=`${H}-label`,W=`${H}-accept`,G=`${H}-message`,K=C?typeof C==`boolean`?{shape:`square`,outputSize:256,quality:.92}:{shape:C.shape??`square`,outputSize:C.outputSize??256,quality:C.quality??.92}:null,q=(0,f.useMemo)(()=>P.map(e=>he(e)?URL.createObjectURL(e):null),[P]);(0,f.useEffect)(()=>()=>{q.forEach(e=>{e&&URL.revokeObjectURL(e)})},[q]);let J=(0,f.useCallback)(t=>{let n=Array.from(t);if(r){let t=r.split(`,`).map(e=>e.trim().toLowerCase()),i=e=>{let n=`.`+e.name.split(`.`).pop()?.toLowerCase(),r=e.type.toLowerCase();return t.some(e=>e===n||e===r||e.endsWith(`/*`)&&r.startsWith(e.slice(0,-1)))},a=n.filter(e=>!i(e));if(a.length){L(e.t(k.type,{name:a.map(e=>e.name).join(`, `)}));return}}if(a&&n.filter(e=>e.size>a).length){L(e.t(k.maxSize,{size:pe(a)}));return}if(o&&n.length>o){L(e.t(o>1?k.maxFiles:k.maxFilesOne,{count:o}));return}if(L(``),K&&n.length===1&&he(n[0])){z(n[0]);return}F(n),s?.(n)},[r,a,o,s,K,k]),Y=(0,f.useCallback)(e=>{z(null),F([e]),s?.([e])},[s]),X=(0,f.useCallback)(()=>{z(null)},[]),ee=(0,f.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),!m&&(V.current++,N(!0))},[m]),te=(0,f.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),V.current--,V.current<=0&&(V.current=0,N(!1))},[]),ne=(0,f.useCallback)(e=>{e.preventDefault(),e.stopPropagation()},[]),Z=(0,f.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),V.current=0,N(!1),!m&&e.dataTransfer.files.length&&J(e.dataTransfer.files)},[m,J]),Q=(0,f.useCallback)(()=>{m||B.current?.click()},[m]),re=(0,f.useCallback)(e=>{e.target.files?.length&&J(e.target.files),e.target.value=``},[J]),ie=(0,f.useCallback)(e=>{let t=q[e];t&&URL.revokeObjectURL(t);let n=P.filter((t,n)=>n!==e);F(n),s?.(n)},[P,q,s]),ae=(0,f.useCallback)(()=>{q.forEach(e=>{e&&URL.revokeObjectURL(e)}),z(null),F([]),L(``),B.current&&(B.current.value=``),s?.([]),w?.()},[q,s,w]),oe=u||I,$=d||!!I,se=$?`color-error`:`color-${h}`,ce=[($&&!!oe||!!l&&!$)&&G,r&&W].filter(Boolean).join(` `)||void 0;return(0,p.jsxs)(`div`,{ref:D,className:n.t(`file input`,se,g,S&&`full-width`,m&&`disabled`,T),...E,children:[(c||v&&P.length>0&&!m)&&(0,p.jsxs)(`div`,{className:`file header`,children:[c&&(0,p.jsx)(`div`,{id:U,className:`file label`,children:c}),v&&P.length>0&&!m&&(0,p.jsx)(`button`,{type:`button`,className:`file clear clear-btn-base`,onClick:ae,"aria-label":O.clearFiles,children:(0,p.jsx)(t.Xi,{"aria-hidden":`true`})})]}),(0,p.jsx)(`input`,{ref:B,type:`file`,accept:r,multiple:i,disabled:m,onChange:re,tabIndex:-1,"aria-hidden":`true`,className:`file hidden`}),(0,p.jsx)(`div`,{className:n.t(`file dropzone`,M&&`dragging`,$&&`error`),onClick:Q,onDragEnter:ee,onDragLeave:te,onDragOver:ne,onDrop:Z,role:`button`,tabIndex:m?-1:0,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),Q())},"aria-label":c?void 0:A,"aria-labelledby":c?U:void 0,"aria-describedby":ce,"aria-disabled":m||void 0,children:(0,p.jsxs)(`div`,{className:`file content`,children:[y&&(0,p.jsx)(`div`,{className:`file icon`,children:y}),!y&&(0,p.jsx)(t.bi,{className:`file icon default`,"aria-hidden":`true`}),(0,p.jsx)(`div`,{className:`file text`,children:M?j:A}),r&&(0,p.jsx)(`div`,{id:W,className:`file accept`,children:r})]})}),R&&K&&(0,p.jsx)(fe,{file:R,shape:K.shape,outputSize:K.outputSize,quality:K.quality,onCrop:Y,onCancel:X}),l&&!$&&(0,p.jsx)(`div`,{id:G,className:`file helper`,children:l}),$&&oe&&(0,p.jsx)(`div`,{id:G,className:`file error`,role:`alert`,children:oe}),_&&P.length>0&&!R&&(0,p.jsx)(`div`,{className:`file preview`,children:P.map((n,r)=>(0,p.jsxs)(`div`,{className:`file item`,children:[(0,p.jsx)(`div`,{className:`file thumb`,children:q[r]?(0,p.jsx)(`img`,{src:q[r],alt:n.name,className:`file image`}):(0,p.jsx)(ge,{ext:me(n.name)})}),(0,p.jsxs)(`div`,{className:`file info`,children:[(0,p.jsx)(`span`,{className:`file name`,children:n.name}),(0,p.jsx)(`span`,{className:`file size`,children:pe(n.size)})]}),(0,p.jsx)(`button`,{type:`button`,className:`file remove`,onClick:e=>{e.stopPropagation(),ie(r)},"aria-label":e.t(O.removeItem,{name:n.name}),children:(0,p.jsx)(t.Xi,{"aria-hidden":`true`})})]},`${n.name}-${r}`))})]})});Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return ee}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return R}});
2
+ //# sourceMappingURL=inputs-CvNBBLFA.cjs.map