@banzamel/mineralui 2.4.2 → 2.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{MAvatar-Capz5Gbc.cjs → MAvatar-DHNB3829.cjs} +2 -2
- package/dist/{MAvatar-Capz5Gbc.cjs.map → MAvatar-DHNB3829.cjs.map} +1 -1
- package/dist/{MAvatar-DtJCj3dD.js → MAvatar-GeRL-CNO.js} +2 -2
- package/dist/{MAvatar-DtJCj3dD.js.map → MAvatar-GeRL-CNO.js.map} +1 -1
- package/dist/{MButton-C1pnL4_j.js → MButton-CEwo8lUB.js} +1 -1
- package/dist/{MButton-C1pnL4_j.js.map → MButton-CEwo8lUB.js.map} +1 -1
- package/dist/{MButton-sTKnano6.cjs → MButton-CnAr77Za.cjs} +2 -2
- package/dist/{MButton-sTKnano6.cjs.map → MButton-CnAr77Za.cjs.map} +1 -1
- package/dist/{MButtonGroup-BkNf7fzo.js → MButtonGroup-BEJxXZ8u.js} +2 -2
- package/dist/{MButtonGroup-BkNf7fzo.js.map → MButtonGroup-BEJxXZ8u.js.map} +1 -1
- package/dist/{MButtonGroup-iPv14c0V.cjs → MButtonGroup-DO1Tq3Za.cjs} +2 -2
- package/dist/{MButtonGroup-iPv14c0V.cjs.map → MButtonGroup-DO1Tq3Za.cjs.map} +1 -1
- package/dist/{MCard-azpp4YVD.js → MCard-BqSkGAgf.js} +3 -3
- package/dist/{MCard-azpp4YVD.js.map → MCard-BqSkGAgf.js.map} +1 -1
- package/dist/{MCard-DK-_FkpE.cjs → MCard-P8OoswWM.cjs} +2 -2
- package/dist/{MCard-DK-_FkpE.cjs.map → MCard-P8OoswWM.cjs.map} +1 -1
- package/dist/{MCheckbox-B7SpcD4H.js → MCheckbox-BxFBADcE.js} +1 -1
- package/dist/{MCheckbox-B7SpcD4H.js.map → MCheckbox-BxFBADcE.js.map} +1 -1
- package/dist/{MCheckbox-CIX7wp41.cjs → MCheckbox-DozwF2ai.cjs} +2 -2
- package/dist/{MCheckbox-CIX7wp41.cjs.map → MCheckbox-DozwF2ai.cjs.map} +1 -1
- package/dist/{MConflictIllustration-CZ3Md38Z.cjs → MConflictIllustration-2QL-BHYv.cjs} +2 -2
- package/dist/{MConflictIllustration-CZ3Md38Z.cjs.map → MConflictIllustration-2QL-BHYv.cjs.map} +1 -1
- package/dist/{MDetailList-Ce7KzUKC.cjs → MDetailList-CThQvoyf.cjs} +2 -2
- package/dist/{MDetailList-Ce7KzUKC.cjs.map → MDetailList-CThQvoyf.cjs.map} +1 -1
- package/dist/{MDetailList-fDhVyhm7.js → MDetailList-Cx9H81xT.js} +5 -5
- package/dist/{MDetailList-fDhVyhm7.js.map → MDetailList-Cx9H81xT.js.map} +1 -1
- package/dist/{MDropdownMenu-B_QWQhxy.cjs → MDropdownMenu-DnKcCyW6.cjs} +2 -2
- package/dist/{MDropdownMenu-B_QWQhxy.cjs.map → MDropdownMenu-DnKcCyW6.cjs.map} +1 -1
- package/dist/{MDropdownMenu-C4CuKMRZ.js → MDropdownMenu-DxbKN7Ui.js} +2 -2
- package/dist/{MDropdownMenu-C4CuKMRZ.js.map → MDropdownMenu-DxbKN7Ui.js.map} +1 -1
- package/dist/{MGrid-fTx6wFq_.cjs → MGrid-BkRSGN2t.cjs} +2 -2
- package/dist/{MGrid-fTx6wFq_.cjs.map → MGrid-BkRSGN2t.cjs.map} +1 -1
- package/dist/{MGrid-CYL3cbUI.js → MGrid-CIz-2i6X.js} +2 -2
- package/dist/{MGrid-CYL3cbUI.js.map → MGrid-CIz-2i6X.js.map} +1 -1
- package/dist/{MHeading-KDSpnCof.cjs → MHeading-AYQ8_GFP.cjs} +2 -2
- package/dist/{MHeading-KDSpnCof.cjs.map → MHeading-AYQ8_GFP.cjs.map} +1 -1
- package/dist/{MHeading-B7KgSP4T.js → MHeading-DcGxUMwC.js} +2 -2
- package/dist/{MHeading-B7KgSP4T.js.map → MHeading-DcGxUMwC.js.map} +1 -1
- package/dist/{MI18nProvider-DXRbB0VY.cjs → MI18nProvider-CqAwaswx.cjs} +2 -2
- package/dist/{MI18nProvider-DXRbB0VY.cjs.map → MI18nProvider-CqAwaswx.cjs.map} +1 -1
- package/dist/MInput-BYj2BdUe.cjs +2 -0
- package/dist/MInput-BYj2BdUe.cjs.map +1 -0
- package/dist/{MInput-C8ObGzQk.js → MInput-nodE-CZF.js} +37 -36
- package/dist/MInput-nodE-CZF.js.map +1 -0
- package/dist/MInputCVC-9XWryaTz.cjs +2 -0
- package/dist/MInputCVC-9XWryaTz.cjs.map +1 -0
- package/dist/MInputCVC-CrDTaUXm.js +321 -0
- package/dist/MInputCVC-CrDTaUXm.js.map +1 -0
- package/dist/{MInputSearch-BM8gLlJ1.js → MInputSearch-BMgCHjFk.js} +2 -2
- package/dist/{MInputSearch-BM8gLlJ1.js.map → MInputSearch-BMgCHjFk.js.map} +1 -1
- package/dist/{MInputSearch-BZDnbFB4.cjs → MInputSearch-BiVI1jNc.cjs} +2 -2
- package/dist/{MInputSearch-BZDnbFB4.cjs.map → MInputSearch-BiVI1jNc.cjs.map} +1 -1
- package/dist/{MKbd-DqMnZ7Iv.cjs → MKbd-BR1GX5oK.cjs} +2 -2
- package/dist/{MKbd-DqMnZ7Iv.cjs.map → MKbd-BR1GX5oK.cjs.map} +1 -1
- package/dist/{MKbd-v6-tJ9sP.js → MKbd-COb7oh_k.js} +1 -1
- package/dist/{MKbd-v6-tJ9sP.js.map → MKbd-COb7oh_k.js.map} +1 -1
- package/dist/{MLink-Bd8fLH1N.js → MLink-CAl6N6_z.js} +1 -1
- package/dist/{MLink-Bd8fLH1N.js.map → MLink-CAl6N6_z.js.map} +1 -1
- package/dist/{MLink-U24G6KJj.cjs → MLink-Dk_ReE6i.cjs} +2 -2
- package/dist/{MLink-U24G6KJj.cjs.map → MLink-Dk_ReE6i.cjs.map} +1 -1
- package/dist/{MLoader-CnvWqFtA.js → MLoader-CYp0OJU_.js} +4 -4
- package/dist/{MLoader-CnvWqFtA.js.map → MLoader-CYp0OJU_.js.map} +1 -1
- package/dist/{MLoader-CvFIvytw.cjs → MLoader-DvmFle31.cjs} +2 -2
- package/dist/{MLoader-CvFIvytw.cjs.map → MLoader-DvmFle31.cjs.map} +1 -1
- package/dist/{MPagination-BkvOEZpp.js → MPagination-E7IixIeo.js} +2 -2
- package/dist/{MPagination-BkvOEZpp.js.map → MPagination-E7IixIeo.js.map} +1 -1
- package/dist/{MPagination-DgQta29Q.cjs → MPagination-reDU9xTW.cjs} +2 -2
- package/dist/{MPagination-DgQta29Q.cjs.map → MPagination-reDU9xTW.cjs.map} +1 -1
- package/dist/{MPopover-Dd-GIBU6.js → MPopover-8gYD3Ogq.js} +37 -74
- package/dist/MPopover-8gYD3Ogq.js.map +1 -0
- package/dist/MPopover-B3npyAkL.cjs +2 -0
- package/dist/MPopover-B3npyAkL.cjs.map +1 -0
- package/dist/{MPortal-DUSIuINN.cjs → MPortal-CuBXhhl_.cjs} +2 -2
- package/dist/{MPortal-DUSIuINN.cjs.map → MPortal-CuBXhhl_.cjs.map} +1 -1
- package/dist/{MSimpleGrid-BzlIitcJ.cjs → MSimpleGrid-BchGYPMi.cjs} +2 -2
- package/dist/{MSimpleGrid-BzlIitcJ.cjs.map → MSimpleGrid-BchGYPMi.cjs.map} +1 -1
- package/dist/{MSimpleGrid-BWKurW6H.js → MSimpleGrid-Ui8cI0ho.js} +1 -1
- package/dist/{MSimpleGrid-BWKurW6H.js.map → MSimpleGrid-Ui8cI0ho.js.map} +1 -1
- package/dist/{MSkeleton-BoFpowFU.cjs → MSkeleton-DPa_G_2X.cjs} +2 -2
- package/dist/{MSkeleton-BoFpowFU.cjs.map → MSkeleton-DPa_G_2X.cjs.map} +1 -1
- package/dist/{MSkeleton-C5uD4Axo.js → MSkeleton-Dhu-loDO.js} +1 -1
- package/dist/{MSkeleton-C5uD4Axo.js.map → MSkeleton-Dhu-loDO.js.map} +1 -1
- package/dist/{MSlider-CqrusKJQ.js → MSlider-BRjhyBSc.js} +1 -1
- package/dist/{MSlider-CqrusKJQ.js.map → MSlider-BRjhyBSc.js.map} +1 -1
- package/dist/{MSlider-BTDBqF8t.cjs → MSlider-w5214a-W.cjs} +2 -2
- package/dist/{MSlider-BTDBqF8t.cjs.map → MSlider-w5214a-W.cjs.map} +1 -1
- package/dist/{MStack-CSCw6to2.js → MStack-Dt-rWvg3.js} +2 -2
- package/dist/{MStack-CSCw6to2.js.map → MStack-Dt-rWvg3.js.map} +1 -1
- package/dist/{MStack-B3Ldqsc-.cjs → MStack-nc6Y_9K3.cjs} +2 -2
- package/dist/{MStack-B3Ldqsc-.cjs.map → MStack-nc6Y_9K3.cjs.map} +1 -1
- package/dist/{MSubText-C-N15d4Z.js → MSubText-B0tXiuAp.js} +2 -2
- package/dist/{MSubText-C-N15d4Z.js.map → MSubText-B0tXiuAp.js.map} +1 -1
- package/dist/{MSubText-47PsgE8T.cjs → MSubText-C6v6Exa2.cjs} +2 -2
- package/dist/{MSubText-47PsgE8T.cjs.map → MSubText-C6v6Exa2.cjs.map} +1 -1
- package/dist/{MSurface-QYEygc_0.cjs → MSurface-BjE-mL1L.cjs} +2 -2
- package/dist/{MSurface-QYEygc_0.cjs.map → MSurface-BjE-mL1L.cjs.map} +1 -1
- package/dist/{MSurface-B-sjyczH.js → MSurface-CpDJCdb5.js} +2 -2
- package/dist/{MSurface-B-sjyczH.js.map → MSurface-CpDJCdb5.js.map} +1 -1
- package/dist/MTag-BgOxiahL.cjs +2 -0
- package/dist/MTag-BgOxiahL.cjs.map +1 -0
- package/dist/MTag-cw3cIGHX.js +41 -0
- package/dist/MTag-cw3cIGHX.js.map +1 -0
- package/dist/{MText-Dni707tS.cjs → MText-BDI4mdw8.cjs} +2 -2
- package/dist/{MText-Dni707tS.cjs.map → MText-BDI4mdw8.cjs.map} +1 -1
- package/dist/{MText-CL-LPcXi.js → MText-DhbAjtUE.js} +2 -2
- package/dist/{MText-CL-LPcXi.js.map → MText-DhbAjtUE.js.map} +1 -1
- package/dist/MTooltip-BAgHlv5I.cjs +2 -0
- package/dist/MTooltip-BAgHlv5I.cjs.map +1 -0
- package/dist/MTooltip-CJxvlkOX.js +92 -0
- package/dist/MTooltip-CJxvlkOX.js.map +1 -0
- package/dist/{MTreeView-B1J7uqd1.js → MTreeView-DsBnYQMT.js} +2 -2
- package/dist/{MTreeView-B1J7uqd1.js.map → MTreeView-DsBnYQMT.js.map} +1 -1
- package/dist/{MTreeView-VYp0eErQ.cjs → MTreeView-LiJ5o-zy.cjs} +2 -2
- package/dist/{MTreeView-VYp0eErQ.cjs.map → MTreeView-LiJ5o-zy.cjs.map} +1 -1
- package/dist/{arduino-BdpdaLwK.cjs → arduino-C1gw-z1N.cjs} +1 -1
- package/dist/{arduino-BdpdaLwK.cjs.map → arduino-C1gw-z1N.cjs.map} +1 -1
- package/dist/{arduino-DDDlP9Yt.js → arduino-CcVvzDWF.js} +1 -1
- package/dist/{arduino-DDDlP9Yt.js.map → arduino-CcVvzDWF.js.map} +1 -1
- package/dist/{bash-D8WbAmuA.js → bash-DkMiO80l.js} +1 -1
- package/dist/{bash-D8WbAmuA.js.map → bash-DkMiO80l.js.map} +1 -1
- package/dist/{bash-eOUFh3S1.cjs → bash-wzZkpJC-.cjs} +1 -1
- package/dist/{bash-eOUFh3S1.cjs.map → bash-wzZkpJC-.cjs.map} +1 -1
- package/dist/{c-Bur7Mn-u.cjs → c-BSPjDa0P.cjs} +1 -1
- package/dist/{c-Bur7Mn-u.cjs.map → c-BSPjDa0P.cjs.map} +1 -1
- package/dist/{c-CTKNfUJI.js → c-DtlFV5Pa.js} +1 -1
- package/dist/{c-CTKNfUJI.js.map → c-DtlFV5Pa.js.map} +1 -1
- package/dist/{calendar-bzeZRst9.js → calendar-Bq6NMNnS.js} +6 -6
- package/dist/{calendar-bzeZRst9.js.map → calendar-Bq6NMNnS.js.map} +1 -1
- package/dist/{calendar-P7MwKfWS.cjs → calendar-C57BH8Nd.cjs} +2 -2
- package/dist/{calendar-P7MwKfWS.cjs.map → calendar-C57BH8Nd.cjs.map} +1 -1
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.js +1 -1
- package/dist/{calendarDates-CYkJqcnp.js → calendarDates-M_Dawj0j.js} +1 -1
- package/dist/{calendarDates-CYkJqcnp.js.map → calendarDates-M_Dawj0j.js.map} +1 -1
- package/dist/{calendarDates-AnlGcvZM.cjs → calendarDates-qm047RW2.cjs} +1 -1
- package/dist/{calendarDates-AnlGcvZM.cjs.map → calendarDates-qm047RW2.cjs.map} +1 -1
- package/dist/{cards-CFDJsdxR.js → cards-D4xJVd4q.js} +278 -277
- package/dist/cards-D4xJVd4q.js.map +1 -0
- package/dist/cards-Du6dbZSQ.cjs +2 -0
- package/dist/cards-Du6dbZSQ.cjs.map +1 -0
- package/dist/cards.cjs +1 -1
- package/dist/cards.js +2 -2
- package/dist/components/primitives/MPopover/popoverStack.d.ts +2 -0
- package/dist/{controls-BKAhqjNM.js → controls-BKoc_yel.js} +113 -112
- package/dist/controls-BKoc_yel.js.map +1 -0
- package/dist/controls-Ck-PMt__.cjs +2 -0
- package/dist/controls-Ck-PMt__.cjs.map +1 -0
- package/dist/controls.cjs +1 -1
- package/dist/controls.js +5 -5
- package/dist/{core-D5-SQcs8.js → core-B8VC-Umz.js} +1 -1
- package/dist/{core-D5-SQcs8.js.map → core-B8VC-Umz.js.map} +1 -1
- package/dist/{core-D66c1_Wo.cjs → core-w629c4ND.cjs} +1 -1
- package/dist/{core-D66c1_Wo.cjs.map → core-w629c4ND.cjs.map} +1 -1
- package/dist/{cpp-DAzz2TpY.js → cpp-BraS2arf.js} +1 -1
- package/dist/{cpp-DAzz2TpY.js.map → cpp-BraS2arf.js.map} +1 -1
- package/dist/{cpp-BMULAf-B.cjs → cpp-LIcuHkFj.cjs} +1 -1
- package/dist/{cpp-BMULAf-B.cjs.map → cpp-LIcuHkFj.cjs.map} +1 -1
- package/dist/{css-9M03GzKO.cjs → css-D6fGBtGV.cjs} +1 -1
- package/dist/{css-9M03GzKO.cjs.map → css-D6fGBtGV.cjs.map} +1 -1
- package/dist/{css-EGOXTWIl.js → css-Dy8pFAWa.js} +1 -1
- package/dist/{css-EGOXTWIl.js.map → css-Dy8pFAWa.js.map} +1 -1
- package/dist/{data-CgLutFxU.js → data-CdQximqm.js} +38 -38
- package/dist/{data-CgLutFxU.js.map → data-CdQximqm.js.map} +1 -1
- package/dist/{data-DFrkJTlF.cjs → data-PS4ygCyj.cjs} +2 -2
- package/dist/{data-DFrkJTlF.cjs.map → data-PS4ygCyj.cjs.map} +1 -1
- package/dist/data.cjs +1 -1
- package/dist/data.js +2 -2
- package/dist/{display-BnkHKW1n.js → display-YC1fVpXA.js} +19 -19
- package/dist/{display-BnkHKW1n.js.map → display-YC1fVpXA.js.map} +1 -1
- package/dist/{display--E7rI0tk.cjs → display-slIo1bQI.cjs} +2 -2
- package/dist/{display--E7rI0tk.cjs.map → display-slIo1bQI.cjs.map} +1 -1
- package/dist/display.cjs +1 -1
- package/dist/display.js +2 -2
- package/dist/dropdowns-DFbUoZ8Q.cjs +2 -0
- package/dist/dropdowns-DFbUoZ8Q.cjs.map +1 -0
- package/dist/dropdowns-nW3MY5XG.js +1715 -0
- package/dist/dropdowns-nW3MY5XG.js.map +1 -0
- package/dist/dropdowns.cjs +1 -1
- package/dist/dropdowns.js +1 -1
- package/dist/feedback-6MNb2Xyk.cjs +2 -0
- package/dist/feedback-6MNb2Xyk.cjs.map +1 -0
- package/dist/feedback-CPwJaQHY.js +259 -0
- package/dist/feedback-CPwJaQHY.js.map +1 -0
- package/dist/feedback.cjs +1 -1
- package/dist/feedback.js +5 -5
- package/dist/form-CMsZo6Dm.cjs +2 -0
- package/dist/form-CMsZo6Dm.cjs.map +1 -0
- package/dist/{form-CAFcvmUS.js → form-WU6DcQGD.js} +52 -55
- package/dist/form-WU6DcQGD.js.map +1 -0
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/frameworkTexts-BSXUtXOp.cjs +2 -0
- package/dist/{frameworkTexts-iDXhcW6k.cjs.map → frameworkTexts-BSXUtXOp.cjs.map} +1 -1
- package/dist/frameworkTexts-DP5RUl19.js +131 -0
- package/dist/{frameworkTexts-DH0Xp-Vx.js.map → frameworkTexts-DP5RUl19.js.map} +1 -1
- package/dist/i18n/frameworkTexts.d.ts +61 -0
- package/dist/i18n.cjs +1 -1
- package/dist/{icons-D_NB67he.cjs → icons-D3n9-919.cjs} +2 -2
- package/dist/{icons-D_NB67he.cjs.map → icons-D3n9-919.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/illustrations.cjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +40 -40
- package/dist/{inputs-B1LCddA4.js → inputs-B7rGMLMr.js} +399 -398
- package/dist/inputs-B7rGMLMr.js.map +1 -0
- package/dist/inputs-BiN62hgH.cjs +2 -0
- package/dist/inputs-BiN62hgH.cjs.map +1 -0
- package/dist/inputs.cjs +1 -1
- package/dist/inputs.js +4 -4
- package/dist/{javascript-CHSg4NGc.js → javascript-CqKLBRqa.js} +1 -1
- package/dist/{javascript-CHSg4NGc.js.map → javascript-CqKLBRqa.js.map} +1 -1
- package/dist/{javascript-CastOQF5.cjs → javascript-Oy5hkezl.cjs} +1 -1
- package/dist/{javascript-CastOQF5.cjs.map → javascript-Oy5hkezl.cjs.map} +1 -1
- package/dist/{json-DCkJ-m-p.cjs → json-BP8eqPWc.cjs} +1 -1
- package/dist/{json-DCkJ-m-p.cjs.map → json-BP8eqPWc.cjs.map} +1 -1
- package/dist/{json-Bejy9Rlg.js → json-DJkyYaPe.js} +1 -1
- package/dist/{json-Bejy9Rlg.js.map → json-DJkyYaPe.js.map} +1 -1
- package/dist/layout-BMggJ_qO.cjs +2 -0
- package/dist/layout-BMggJ_qO.cjs.map +1 -0
- package/dist/{layout-DsE4zfpg.js → layout-DBYHyCTr.js} +269 -268
- package/dist/layout-DBYHyCTr.js.map +1 -0
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +6 -6
- package/dist/{layoutProps-B8y2XwHy.cjs → layoutProps-Ck4VtGm9.cjs} +1 -1
- package/dist/{layoutProps-B8y2XwHy.cjs.map → layoutProps-Ck4VtGm9.cjs.map} +1 -1
- package/dist/{layoutProps-CE5-ghKw.js → layoutProps-Cl6d1KmH.js} +1 -1
- package/dist/{layoutProps-CE5-ghKw.js.map → layoutProps-Cl6d1KmH.js.map} +1 -1
- package/dist/{licensing-DGIdtfNg.cjs → licensing-Be3g-PJt.cjs} +2 -2
- package/dist/{licensing-DGIdtfNg.cjs.map → licensing-Be3g-PJt.cjs.map} +1 -1
- package/dist/{locale-DRRl_s5-.cjs → locale-C08q7FjE.cjs} +2 -2
- package/dist/{locale-DRRl_s5-.cjs.map → locale-C08q7FjE.cjs.map} +1 -1
- package/dist/{locale-CS1-IY_I.js → locale-CjJpk9GN.js} +1 -1
- package/dist/{locale-CS1-IY_I.js.map → locale-CjJpk9GN.js.map} +1 -1
- package/dist/media-BPzMgzqE.js +405 -0
- package/dist/media-BPzMgzqE.js.map +1 -0
- package/dist/media-D63hxCAJ.cjs +2 -0
- package/dist/media-D63hxCAJ.cjs.map +1 -0
- package/dist/media.cjs +1 -1
- package/dist/media.js +2 -2
- package/dist/overlays-CCeYD6hT.js +555 -0
- package/dist/overlays-CCeYD6hT.js.map +1 -0
- package/dist/overlays-CsRN5OG8.cjs +2 -0
- package/dist/overlays-CsRN5OG8.cjs.map +1 -0
- package/dist/overlays.cjs +1 -1
- package/dist/overlays.js +3 -3
- package/dist/{php-BdVXegqn.cjs → php-Cwjc-ZYq.cjs} +1 -1
- package/dist/{php-BdVXegqn.cjs.map → php-Cwjc-ZYq.cjs.map} +1 -1
- package/dist/{php-Cb_S1hXT.js → php-Db8PWzaX.js} +1 -1
- package/dist/{php-Cb_S1hXT.js.map → php-Db8PWzaX.js.map} +1 -1
- package/dist/popoverStack--0r2oJCD.js +44 -0
- package/dist/popoverStack--0r2oJCD.js.map +1 -0
- package/dist/popoverStack-BmMk-VZJ.cjs +2 -0
- package/dist/popoverStack-BmMk-VZJ.cjs.map +1 -0
- package/dist/primitives.cjs +1 -1
- package/dist/primitives.js +1 -1
- package/dist/style-runtime.cjs +1 -1
- package/dist/style-runtime.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/{theme-DgaM4CjM.cjs → theme-CJuqObWL.cjs} +2 -2
- package/dist/{theme-DgaM4CjM.cjs.map → theme-CJuqObWL.cjs.map} +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{typescript-CcGBfzlS.cjs → typescript-QKlfKtex.cjs} +1 -1
- package/dist/{typescript-CcGBfzlS.cjs.map → typescript-QKlfKtex.cjs.map} +1 -1
- package/dist/{typescript-0VHxrxf2.js → typescript-chdf_txx.js} +1 -1
- package/dist/{typescript-0VHxrxf2.js.map → typescript-chdf_txx.js.map} +1 -1
- package/dist/{typography-C4_O8len.cjs → typography-4v01oNWx.cjs} +2 -2
- package/dist/{typography-C4_O8len.cjs.map → typography-4v01oNWx.cjs.map} +1 -1
- package/dist/{typography-CAW17MDj.js → typography-C806GYT4.js} +2 -2
- package/dist/{typography-CAW17MDj.js.map → typography-C806GYT4.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +6 -6
- package/dist/{useGhostText-Dlemg1vw.cjs → useGhostText-mibV4s1-.cjs} +2 -2
- package/dist/{useGhostText-Dlemg1vw.cjs.map → useGhostText-mibV4s1-.cjs.map} +1 -1
- package/dist/{useInteractionEffect-CFwDX5UF.cjs → useInteractionEffect-CtXlbjhC.cjs} +2 -2
- package/dist/{useInteractionEffect-CFwDX5UF.cjs.map → useInteractionEffect-CtXlbjhC.cjs.map} +1 -1
- package/dist/{useKeyboardNav-Bm-dxVq-.cjs → useKeyboardNav-CCUoRMgm.cjs} +2 -2
- package/dist/{useKeyboardNav-Bm-dxVq-.cjs.map → useKeyboardNav-CCUoRMgm.cjs.map} +1 -1
- package/dist/useModalLayer-Bf4TcEz-.js +58 -0
- package/dist/useModalLayer-Bf4TcEz-.js.map +1 -0
- package/dist/useModalLayer-DxYhhgRO.cjs +2 -0
- package/dist/useModalLayer-DxYhhgRO.cjs.map +1 -0
- package/dist/utils/useModalLayer.d.ts +10 -0
- package/dist/utils.cjs +1 -1
- package/dist/{xml-Dbm3mobK.cjs → xml-DEtyywwU.cjs} +1 -1
- package/dist/{xml-Dbm3mobK.cjs.map → xml-DEtyywwU.cjs.map} +1 -1
- package/dist/{xml-8GjNy8SM.js → xml-DnydRpfh.js} +1 -1
- package/dist/{xml-8GjNy8SM.js.map → xml-DnydRpfh.js.map} +1 -1
- package/package.json +1 -1
- package/dist/MInput-C8ObGzQk.js.map +0 -1
- package/dist/MInput-CGl2Q-rM.cjs +0 -2
- package/dist/MInput-CGl2Q-rM.cjs.map +0 -1
- package/dist/MInputCVC-Blv5PeyS.js +0 -320
- package/dist/MInputCVC-Blv5PeyS.js.map +0 -1
- package/dist/MInputCVC-lAFKTV6y.cjs +0 -2
- package/dist/MInputCVC-lAFKTV6y.cjs.map +0 -1
- package/dist/MPopover-C-e1CoV0.cjs +0 -2
- package/dist/MPopover-C-e1CoV0.cjs.map +0 -1
- package/dist/MPopover-Dd-GIBU6.js.map +0 -1
- package/dist/MTag-BjV-dXkk.cjs +0 -2
- package/dist/MTag-BjV-dXkk.cjs.map +0 -1
- package/dist/MTag-D9q6faIk.js +0 -39
- package/dist/MTag-D9q6faIk.js.map +0 -1
- package/dist/MTooltip-ChvuN4Ow.cjs +0 -2
- package/dist/MTooltip-ChvuN4Ow.cjs.map +0 -1
- package/dist/MTooltip-H3we0a7w.js +0 -57
- package/dist/MTooltip-H3we0a7w.js.map +0 -1
- package/dist/cards-CFDJsdxR.js.map +0 -1
- package/dist/cards-DeA7I2KC.cjs +0 -2
- package/dist/cards-DeA7I2KC.cjs.map +0 -1
- package/dist/controls-BKAhqjNM.js.map +0 -1
- package/dist/controls-KK-TyUTT.cjs +0 -2
- package/dist/controls-KK-TyUTT.cjs.map +0 -1
- package/dist/dropdowns-DGYg9zIh.cjs +0 -2
- package/dist/dropdowns-DGYg9zIh.cjs.map +0 -1
- package/dist/dropdowns-Dq-xAplH.js +0 -1698
- package/dist/dropdowns-Dq-xAplH.js.map +0 -1
- package/dist/feedback-CA77ShtB.cjs +0 -2
- package/dist/feedback-CA77ShtB.cjs.map +0 -1
- package/dist/feedback-CCwbdNZu.js +0 -255
- package/dist/feedback-CCwbdNZu.js.map +0 -1
- package/dist/form-CAFcvmUS.js.map +0 -1
- package/dist/form-DpfzLUOn.cjs +0 -2
- package/dist/form-DpfzLUOn.cjs.map +0 -1
- package/dist/frameworkTexts-DH0Xp-Vx.js +0 -78
- package/dist/frameworkTexts-iDXhcW6k.cjs +0 -2
- package/dist/inputs-B1LCddA4.js.map +0 -1
- package/dist/inputs-Clenc4Rm.cjs +0 -2
- package/dist/inputs-Clenc4Rm.cjs.map +0 -1
- package/dist/layout-CNoZdeXw.cjs +0 -2
- package/dist/layout-CNoZdeXw.cjs.map +0 -1
- package/dist/layout-DsE4zfpg.js.map +0 -1
- package/dist/media-DRTBXDnn.cjs +0 -2
- package/dist/media-DRTBXDnn.cjs.map +0 -1
- package/dist/media-vOQOIYFD.js +0 -402
- package/dist/media-vOQOIYFD.js.map +0 -1
- package/dist/overlays-BKk_ZXue.js +0 -568
- package/dist/overlays-BKk_ZXue.js.map +0 -1
- package/dist/overlays-Qbp4d596.cjs +0 -2
- package/dist/overlays-Qbp4d596.cjs.map +0 -1
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { r as e } from "./theme-DAOU1aPs.js";
|
|
2
|
+
import { Ci as t, Ei as n, In as r, Ln as i, Pn as a, Si as o, Ti as s, Xi as c, wi as l } from "./icons-CBMl-kOM.js";
|
|
3
|
+
import { t as u } from "./cn-YER3QsV1.js";
|
|
4
|
+
import { t as d } from "./MPortal-Ba2Sxset.js";
|
|
5
|
+
import { t as f } from "./MButton-CEwo8lUB.js";
|
|
6
|
+
import { n as p } from "./frameworkTexts-DP5RUl19.js";
|
|
7
|
+
import { createContext as m, useCallback as h, useContext as g, useEffect as _, useMemo as v, useRef as y, useState as b } from "react";
|
|
8
|
+
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/feedback/statusIcons.tsx
|
|
10
|
+
var C = {
|
|
11
|
+
success: /* @__PURE__ */ x(t, {}),
|
|
12
|
+
warning: /* @__PURE__ */ x(n, {}),
|
|
13
|
+
error: /* @__PURE__ */ x(l, {}),
|
|
14
|
+
info: /* @__PURE__ */ x(s, {}),
|
|
15
|
+
primary: /* @__PURE__ */ x(s, {}),
|
|
16
|
+
neutral: /* @__PURE__ */ x(o, {}),
|
|
17
|
+
light: /* @__PURE__ */ x(i, {}),
|
|
18
|
+
dark: /* @__PURE__ */ x(r, {}),
|
|
19
|
+
news: /* @__PURE__ */ x(a, {})
|
|
20
|
+
};
|
|
21
|
+
function w(e) {
|
|
22
|
+
return e ? C[e] ?? C.info : C.info;
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/components/feedback/MAlert/MAlert.tsx
|
|
26
|
+
function T({ color: t = "info", icon: n = !0, title: r, hidden: i, className: a, children: o, ...s }) {
|
|
27
|
+
let c = n === !1 ? null : n === !0 ? w(t) : n;
|
|
28
|
+
return /* @__PURE__ */ S("div", {
|
|
29
|
+
className: u("alert", `color-${t}`, a),
|
|
30
|
+
role: "status",
|
|
31
|
+
...e(i),
|
|
32
|
+
...s,
|
|
33
|
+
children: [c && /* @__PURE__ */ x("span", {
|
|
34
|
+
className: "icon",
|
|
35
|
+
children: c
|
|
36
|
+
}), /* @__PURE__ */ S("div", {
|
|
37
|
+
className: "main",
|
|
38
|
+
children: [r && /* @__PURE__ */ x("div", {
|
|
39
|
+
className: "title",
|
|
40
|
+
children: r
|
|
41
|
+
}), o && /* @__PURE__ */ x("div", {
|
|
42
|
+
className: "content",
|
|
43
|
+
children: o
|
|
44
|
+
})]
|
|
45
|
+
})]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/components/feedback/MBanner/MBanner.tsx
|
|
50
|
+
function E({ color: t = "primary", variant: n = "filled", icon: r, action: i, hidden: a, dismissible: o = !1, onDismiss: s, className: l, children: d, ...m }) {
|
|
51
|
+
let h = p(), [g, _] = b(!0), [v, C] = b(!1), w = y(null);
|
|
52
|
+
if (!g) return null;
|
|
53
|
+
let T = () => {
|
|
54
|
+
if (v) return;
|
|
55
|
+
C(!0);
|
|
56
|
+
let e = w.current;
|
|
57
|
+
if (!e) {
|
|
58
|
+
_(!1), s?.();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
let t = !1, n = () => {
|
|
62
|
+
t || (t = !0, e.removeEventListener("transitionend", r), window.clearTimeout(i), _(!1), C(!1), s?.());
|
|
63
|
+
}, r = (t) => {
|
|
64
|
+
t.target === e && t.propertyName === "grid-template-rows" && n();
|
|
65
|
+
};
|
|
66
|
+
e.addEventListener("transitionend", r);
|
|
67
|
+
let i = window.setTimeout(n, 1e3);
|
|
68
|
+
};
|
|
69
|
+
return /* @__PURE__ */ x("div", {
|
|
70
|
+
ref: w,
|
|
71
|
+
className: u("banner-wrap", v && "dismissing"),
|
|
72
|
+
...e(a),
|
|
73
|
+
children: /* @__PURE__ */ S("div", {
|
|
74
|
+
className: u("banner", `color-${t}`, n, l),
|
|
75
|
+
...m,
|
|
76
|
+
children: [
|
|
77
|
+
r && /* @__PURE__ */ x("span", {
|
|
78
|
+
className: "banner-icon",
|
|
79
|
+
children: r
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ x("div", {
|
|
82
|
+
className: "banner-content",
|
|
83
|
+
children: d
|
|
84
|
+
}),
|
|
85
|
+
i && /* @__PURE__ */ x("div", {
|
|
86
|
+
className: "banner-action",
|
|
87
|
+
children: i
|
|
88
|
+
}),
|
|
89
|
+
o && /* @__PURE__ */ x(f, {
|
|
90
|
+
variant: "link",
|
|
91
|
+
color: "neutral",
|
|
92
|
+
iconOnly: !0,
|
|
93
|
+
size: "sm",
|
|
94
|
+
className: "banner-dismiss",
|
|
95
|
+
onClick: T,
|
|
96
|
+
"aria-label": h.dismiss,
|
|
97
|
+
children: /* @__PURE__ */ x(c, {})
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//#endregion
|
|
104
|
+
//#region src/components/feedback/MProgressRing/MProgressRing.tsx
|
|
105
|
+
var D = {
|
|
106
|
+
xs: 24,
|
|
107
|
+
sm: 36,
|
|
108
|
+
md: 56,
|
|
109
|
+
lg: 88,
|
|
110
|
+
xl: 128
|
|
111
|
+
}, O = {
|
|
112
|
+
xs: 2,
|
|
113
|
+
sm: 3,
|
|
114
|
+
md: 4,
|
|
115
|
+
lg: 6,
|
|
116
|
+
xl: 8
|
|
117
|
+
};
|
|
118
|
+
function k(e, t, n) {
|
|
119
|
+
return Math.max(t, Math.min(n, e));
|
|
120
|
+
}
|
|
121
|
+
function A(e) {
|
|
122
|
+
return typeof e == "number" ? e : D[e ?? "md"] ?? D.md;
|
|
123
|
+
}
|
|
124
|
+
function j(e, t) {
|
|
125
|
+
return typeof e == "number" ? e : typeof t == "number" ? Math.max(2, Math.round(t / 14)) : O[t ?? "md"] ?? O.md;
|
|
126
|
+
}
|
|
127
|
+
function M({ value: e, size: t = "md", color: n = "primary", thickness: r, showPercent: i = !0, label: a, ariaLabel: o, className: s, style: c, ...l }) {
|
|
128
|
+
let d = k(Math.round(e), 0, 100), f = A(t), p = j(r, t), m = (f - p) / 2, h = 2 * Math.PI * m, g = h * (1 - d / 100), _ = {
|
|
129
|
+
width: `${f}px`,
|
|
130
|
+
height: `${f}px`,
|
|
131
|
+
...c
|
|
132
|
+
}, v = typeof t == "string" ? t : "custom", y = o ?? `Loading ${d}%`, b = a === void 0 ? i : a !== null;
|
|
133
|
+
return /* @__PURE__ */ S("div", {
|
|
134
|
+
className: u("progress-ring", v, n && `color-${n}`, s),
|
|
135
|
+
style: _,
|
|
136
|
+
role: "progressbar",
|
|
137
|
+
"aria-valuenow": d,
|
|
138
|
+
"aria-valuemin": 0,
|
|
139
|
+
"aria-valuemax": 100,
|
|
140
|
+
"aria-label": y,
|
|
141
|
+
...l,
|
|
142
|
+
children: [/* @__PURE__ */ S("svg", {
|
|
143
|
+
className: "progress-ring-svg",
|
|
144
|
+
width: f,
|
|
145
|
+
height: f,
|
|
146
|
+
viewBox: `0 0 ${f} ${f}`,
|
|
147
|
+
"aria-hidden": "true",
|
|
148
|
+
children: [/* @__PURE__ */ x("circle", {
|
|
149
|
+
className: "progress-ring-track",
|
|
150
|
+
cx: f / 2,
|
|
151
|
+
cy: f / 2,
|
|
152
|
+
r: m,
|
|
153
|
+
fill: "none",
|
|
154
|
+
strokeWidth: p
|
|
155
|
+
}), /* @__PURE__ */ x("circle", {
|
|
156
|
+
className: "progress-ring-indicator",
|
|
157
|
+
cx: f / 2,
|
|
158
|
+
cy: f / 2,
|
|
159
|
+
r: m,
|
|
160
|
+
fill: "none",
|
|
161
|
+
strokeWidth: p,
|
|
162
|
+
strokeDasharray: h,
|
|
163
|
+
strokeDashoffset: g,
|
|
164
|
+
strokeLinecap: "round",
|
|
165
|
+
transform: `rotate(-90 ${f / 2} ${f / 2})`
|
|
166
|
+
})]
|
|
167
|
+
}), b ? /* @__PURE__ */ x("span", {
|
|
168
|
+
className: "progress-ring-label",
|
|
169
|
+
"aria-hidden": "true",
|
|
170
|
+
children: a === void 0 ? `${d}%` : a
|
|
171
|
+
}) : null]
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
//#endregion
|
|
175
|
+
//#region src/components/feedback/MToast/MToastContext.ts
|
|
176
|
+
var N = m(null), P = N.Provider;
|
|
177
|
+
function F() {
|
|
178
|
+
let e = g(N);
|
|
179
|
+
if (!e) throw Error("useMToast must be used inside MToastProvider");
|
|
180
|
+
return e;
|
|
181
|
+
}
|
|
182
|
+
//#endregion
|
|
183
|
+
//#region src/components/feedback/MToast/MToastItem.tsx
|
|
184
|
+
function I({ entry: e, onDismiss: t }) {
|
|
185
|
+
let n = p(), [r, i] = b(!1), a = e.duration ?? 4e3;
|
|
186
|
+
_(() => {
|
|
187
|
+
if (a <= 0) return;
|
|
188
|
+
let e = setTimeout(() => i(!0), a);
|
|
189
|
+
return () => clearTimeout(e);
|
|
190
|
+
}, [a]);
|
|
191
|
+
function o() {
|
|
192
|
+
r && t(e.id);
|
|
193
|
+
}
|
|
194
|
+
let s = e.color || "info", l = e.icon === !1 ? null : e.icon === void 0 || e.icon === !0 ? w(s) : e.icon;
|
|
195
|
+
return /* @__PURE__ */ S("div", {
|
|
196
|
+
className: u("toast item", `color-${s}`, r && "exit"),
|
|
197
|
+
role: "status",
|
|
198
|
+
onAnimationEnd: o,
|
|
199
|
+
children: [/* @__PURE__ */ S("div", {
|
|
200
|
+
className: "toast body",
|
|
201
|
+
children: [l && /* @__PURE__ */ x("span", {
|
|
202
|
+
className: "toast icon",
|
|
203
|
+
children: l
|
|
204
|
+
}), /* @__PURE__ */ S("div", {
|
|
205
|
+
className: "toast content",
|
|
206
|
+
children: [e.title && /* @__PURE__ */ x("div", {
|
|
207
|
+
className: "toast title",
|
|
208
|
+
children: e.title
|
|
209
|
+
}), e.message !== void 0 && e.message !== null && e.message !== "" && /* @__PURE__ */ x("div", {
|
|
210
|
+
className: "toast message",
|
|
211
|
+
children: e.message
|
|
212
|
+
})]
|
|
213
|
+
})]
|
|
214
|
+
}), /* @__PURE__ */ x(f, {
|
|
215
|
+
variant: "ghost",
|
|
216
|
+
color: "neutral",
|
|
217
|
+
iconOnly: !0,
|
|
218
|
+
size: "xs",
|
|
219
|
+
className: "toast close",
|
|
220
|
+
onClick: () => i(!0),
|
|
221
|
+
"aria-label": n.close,
|
|
222
|
+
children: /* @__PURE__ */ x(c, {})
|
|
223
|
+
})]
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
//#endregion
|
|
227
|
+
//#region src/components/feedback/MToast/MToastProvider.tsx
|
|
228
|
+
var L = 0;
|
|
229
|
+
function R({ position: e = "top-right", duration: t = 4e3, children: n }) {
|
|
230
|
+
let [r, i] = b([]), a = y(t);
|
|
231
|
+
a.current = t;
|
|
232
|
+
let o = h((e) => {
|
|
233
|
+
i((t) => t.filter((t) => t.id !== e));
|
|
234
|
+
}, []), s = h((e) => {
|
|
235
|
+
let t = `toast-${++L}`, n = {
|
|
236
|
+
id: t,
|
|
237
|
+
...e,
|
|
238
|
+
duration: e.duration ?? a.current
|
|
239
|
+
};
|
|
240
|
+
return i((e) => [...e, n]), t;
|
|
241
|
+
}, []);
|
|
242
|
+
return /* @__PURE__ */ S(P, {
|
|
243
|
+
value: v(() => ({
|
|
244
|
+
toast: s,
|
|
245
|
+
dismiss: o
|
|
246
|
+
}), [s, o]),
|
|
247
|
+
children: [n, /* @__PURE__ */ x(d, { children: /* @__PURE__ */ x("div", {
|
|
248
|
+
className: u("toast container", e),
|
|
249
|
+
children: r.map((e) => /* @__PURE__ */ x(I, {
|
|
250
|
+
entry: e,
|
|
251
|
+
onDismiss: o
|
|
252
|
+
}, e.id))
|
|
253
|
+
}) })]
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
//#endregion
|
|
257
|
+
export { T as a, E as i, F as n, M as r, R as t };
|
|
258
|
+
|
|
259
|
+
//# sourceMappingURL=feedback-CPwJaQHY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback-CPwJaQHY.js","names":[],"sources":["../src/components/feedback/statusIcons.tsx","../src/components/feedback/MAlert/MAlert.tsx","../src/components/feedback/MBanner/MBanner.tsx","../src/components/feedback/MProgressRing/MProgressRing.tsx","../src/components/feedback/MToast/MToastContext.ts","../src/components/feedback/MToast/MToastItem.tsx","../src/components/feedback/MToast/MToastProvider.tsx"],"sourcesContent":["import type {ReactNode} from 'react'\nimport {\n MBoltIcon,\n MErrorIcon,\n MInfoIcon,\n MMoonIcon,\n MNeutralIcon,\n MSunIcon,\n MSuccessIcon,\n MWarningIcon,\n} from '../../icons'\n\nconst statusIcons: Record<string, ReactNode> = {\n success: <MSuccessIcon />,\n warning: <MWarningIcon />,\n error: <MErrorIcon />,\n info: <MInfoIcon />,\n primary: <MInfoIcon />,\n neutral: <MNeutralIcon />,\n light: <MSunIcon />,\n dark: <MMoonIcon />,\n news: <MBoltIcon />,\n}\n\nexport function getStatusIcon(color?: string) {\n if (!color) {\n return statusIcons.info\n }\n\n return statusIcons[color] ?? statusIcons.info\n}\n","import type {MAlertProps} from './MAlert.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {getStatusIcon} from '../statusIcons'\nimport './MAlert.css'\n\n// Render inline status messaging with optional heading content.\nexport function MAlert({color = 'info', icon = true, title, hidden, className, children, ...rest}: MAlertProps) {\n const iconView = icon === false ? null : icon === true ? getStatusIcon(color) : icon\n\n return (\n <div className={cn('alert', `color-${color}`, className)} role=\"status\" {...getHiddenProps(hidden)} {...rest}>\n {iconView && <span className=\"icon\">{iconView}</span>}\n <div className=\"main\">\n {title && <div className=\"title\">{title}</div>}\n {children && <div className=\"content\">{children}</div>}\n </div>\n </div>\n )\n}\n","import {useState, useRef} from 'react'\nimport type {MBannerProps} from './MBanner.types'\nimport {getHiddenProps} from '../../../theme'\nimport {cn} from '../../../utils/cn'\nimport {MButton} from '../../controls'\nimport {MCloseIcon} from '../../../icons'\nimport './MBanner.css'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\n// Render a prominent banner for announcements, CTAs or dismissible messages.\nexport function MBanner({\n color = 'primary',\n variant = 'filled',\n icon,\n action,\n hidden,\n dismissible = false,\n onDismiss,\n className,\n children,\n ...rest\n}: MBannerProps) {\n const texts = useMCommonTexts()\n const [visible, setVisible] = useState(true)\n const [dismissing, setDismissing] = useState(false)\n const wrapRef = useRef<HTMLDivElement>(null)\n\n if (!visible) return null\n\n const handleDismiss = () => {\n if (dismissing) return\n setDismissing(true)\n const el = wrapRef.current\n if (!el) {\n setVisible(false)\n onDismiss?.()\n return\n }\n // Finish once: when the wrapper's height collapse ends, or after the fallback timeout.\n let done = false\n const finish = () => {\n if (done) return\n done = true\n el.removeEventListener('transitionend', onTransitionEnd)\n window.clearTimeout(fallback)\n setVisible(false)\n setDismissing(false)\n onDismiss?.()\n }\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.target === el && event.propertyName === 'grid-template-rows') finish()\n }\n el.addEventListener('transitionend', onTransitionEnd)\n const fallback = window.setTimeout(finish, 1000)\n }\n\n return (\n <div ref={wrapRef} className={cn('banner-wrap', dismissing && 'dismissing')} {...getHiddenProps(hidden)}>\n <div className={cn('banner', `color-${color}`, variant, className)} {...rest}>\n {icon && <span className=\"banner-icon\">{icon}</span>}\n <div className=\"banner-content\">{children}</div>\n {action && <div className=\"banner-action\">{action}</div>}\n {dismissible && (\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n className=\"banner-dismiss\"\n onClick={handleDismiss}\n aria-label={texts.dismiss}\n >\n <MCloseIcon />\n </MButton>\n )}\n </div>\n </div>\n )\n}\n","import type {CSSProperties} from 'react'\nimport type {MProgressRingProps} from './MProgressRing.types'\nimport {cn} from '../../../utils/cn'\nimport './MProgressRing.css'\n\nconst SIZE_PX: Record<string, number> = {xs: 24, sm: 36, md: 56, lg: 88, xl: 128}\nconst DEFAULT_THICKNESS: Record<string, number> = {xs: 2, sm: 3, md: 4, lg: 6, xl: 8}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value))\n}\n\nfunction resolveDiameter(size: MProgressRingProps['size']): number {\n if (typeof size === 'number') return size\n return SIZE_PX[size ?? 'md'] ?? SIZE_PX.md\n}\n\nfunction resolveThickness(thickness: number | undefined, size: MProgressRingProps['size']): number {\n if (typeof thickness === 'number') return thickness\n if (typeof size === 'number') return Math.max(2, Math.round(size / 14))\n return DEFAULT_THICKNESS[size ?? 'md'] ?? DEFAULT_THICKNESS.md\n}\n\n/**\n * Determinate ring progress — 0–100 with optional centered percent label.\n * Visually consistent with `MLoader`/`MSpinner`: same MColor palette, same\n * size tokens (xs/sm/md/lg/xl). Use a number for a custom diameter when the\n * design needs an off-token size.\n */\nexport function MProgressRing({\n value,\n size = 'md',\n color = 'primary',\n thickness,\n showPercent = true,\n label,\n ariaLabel,\n className,\n style,\n ...rest\n}: MProgressRingProps) {\n const clampedValue = clamp(Math.round(value), 0, 100)\n const diameter = resolveDiameter(size)\n const stroke = resolveThickness(thickness, size)\n const radius = (diameter - stroke) / 2\n const circumference = 2 * Math.PI * radius\n const dashOffset = circumference * (1 - clampedValue / 100)\n\n const inlineStyle: CSSProperties = {\n width: `${diameter}px`,\n height: `${diameter}px`,\n ...style,\n }\n\n const sizeClass = typeof size === 'string' ? size : 'custom'\n const accessibleLabel = ariaLabel ?? `Loading ${clampedValue}%`\n const showLabel = label !== undefined ? label !== null : showPercent\n\n return (\n <div\n className={cn('progress-ring', sizeClass, color && `color-${color}`, className)}\n style={inlineStyle}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={accessibleLabel}\n {...rest}\n >\n <svg className=\"progress-ring-svg\" width={diameter} height={diameter} viewBox={`0 0 ${diameter} ${diameter}`} aria-hidden=\"true\">\n <circle\n className=\"progress-ring-track\"\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={stroke}\n />\n <circle\n className=\"progress-ring-indicator\"\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={stroke}\n strokeDasharray={circumference}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n transform={`rotate(-90 ${diameter / 2} ${diameter / 2})`}\n />\n </svg>\n {showLabel ? (\n <span className=\"progress-ring-label\" aria-hidden=\"true\">\n {label !== undefined ? label : `${clampedValue}%`}\n </span>\n ) : null}\n </div>\n )\n}\n","import {createContext, useContext} from 'react'\nimport type {MToastContext as MToastContextType} from './MToast.types'\n\nconst ToastCtx = createContext<MToastContextType | null>(null)\n\nexport const MToastContextProvider = ToastCtx.Provider\n\nexport function useMToast(): MToastContextType {\n const ctx = useContext(ToastCtx)\n if (!ctx) throw new Error('useMToast must be used inside MToastProvider')\n return ctx\n}\n","import {useEffect, useState} from 'react'\nimport type {MToastEntry} from './MToast.types'\nimport {cn} from '../../../utils/cn'\nimport {MCloseIcon} from '../../../icons'\nimport {MButton} from '../../controls'\nimport {getStatusIcon} from '../statusIcons'\nimport {useMCommonTexts} from '../../../i18n/frameworkTexts'\n\n// Single toast notification with enter/exit animation.\nexport function MToastItem({entry, onDismiss}: {entry: MToastEntry; onDismiss: (id: string) => void}) {\n const texts = useMCommonTexts()\n const [exiting, setExiting] = useState(false)\n const duration = entry.duration ?? 4000\n\n useEffect(() => {\n if (duration <= 0) return\n const timer = setTimeout(() => setExiting(true), duration)\n return () => clearTimeout(timer)\n }, [duration])\n\n function handleEnd() {\n if (exiting) onDismiss(entry.id)\n }\n\n const color = entry.color || 'info'\n const icon =\n entry.icon === false\n ? null\n : entry.icon === undefined || entry.icon === true\n ? getStatusIcon(color)\n : entry.icon\n\n return (\n <div className={cn('toast item', `color-${color}`, exiting && 'exit')} role=\"status\" onAnimationEnd={handleEnd}>\n <div className=\"toast body\">\n {icon && <span className=\"toast icon\">{icon}</span>}\n <div className=\"toast content\">\n {entry.title && <div className=\"toast title\">{entry.title}</div>}\n {entry.message !== undefined && entry.message !== null && entry.message !== '' && (\n <div className=\"toast message\">{entry.message}</div>\n )}\n </div>\n </div>\n <MButton\n variant=\"ghost\"\n color=\"neutral\"\n iconOnly\n size=\"xs\"\n className=\"toast close\"\n onClick={() => setExiting(true)}\n aria-label={texts.close}\n >\n <MCloseIcon />\n </MButton>\n </div>\n )\n}\n","import {useCallback, useMemo, useRef, useState} from 'react'\nimport {MPortal} from '../../primitives'\nimport {MToastContextProvider, useMToast} from './MToastContext'\nimport {MToastItem} from './MToastItem'\nimport type {MToastEntry, MToastOptions, MToastProviderProps} from './MToast.types'\nimport {cn} from '../../../utils/cn'\nimport './MToast.css'\n\nlet counter = 0\n\n// Global toast container with auto-dismiss and stacking.\nexport function MToastProvider({position = 'top-right', duration = 4000, children}: MToastProviderProps) {\n const [toasts, setToasts] = useState<MToastEntry[]>([])\n const defaultDuration = useRef(duration)\n defaultDuration.current = duration\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id))\n }, [])\n\n const toast = useCallback((options: MToastOptions) => {\n const id = `toast-${++counter}`\n const entry: MToastEntry = {\n id,\n ...options,\n duration: options.duration ?? defaultDuration.current,\n }\n setToasts((prev) => [...prev, entry])\n return id\n }, [])\n\n const ctx = useMemo(() => ({toast, dismiss}), [toast, dismiss])\n\n return (\n <MToastContextProvider value={ctx}>\n {children}\n <MPortal>\n <div className={cn('toast container', position)}>\n {toasts.map((entry) => (\n <MToastItem key={entry.id} entry={entry} onDismiss={dismiss} />\n ))}\n </div>\n </MPortal>\n </MToastContextProvider>\n )\n}\n\nexport {useMToast}\n"],"mappings":"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"}
|
package/dist/feedback.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const {ensureStyles}=require('./style-runtime.cjs')
|
|
2
2
|
ensureStyles()
|
|
3
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MButton-
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./MButton-CnAr77Za.cjs`),t=require(`./feedback-6MNb2Xyk.cjs`),n=require(`./MSkeleton-DPa_G_2X.cjs`),r=require(`./MTag-BgOxiahL.cjs`),i=require(`./MLoader-DvmFle31.cjs`);exports.MAlert=t.a,exports.MBadge=n.n,exports.MBanner=t.i,exports.MLoader=i.t,exports.MProgressRing=t.r,exports.MSkeleton=n.t,exports.MSpinner=e.r,exports.MTag=r.t,exports.MToastProvider=t.t,exports.useMToast=t.n;
|
package/dist/feedback.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {ensureStyles} from './style-runtime.js'
|
|
2
2
|
ensureStyles()
|
|
3
|
-
import { r as e } from "./MButton-
|
|
4
|
-
import { a as t, i as n, n as r, r as i, t as a } from "./feedback-
|
|
5
|
-
import { n as o, t as s } from "./MSkeleton-
|
|
6
|
-
import { t as c } from "./MTag-
|
|
7
|
-
import { t as l } from "./MLoader-
|
|
3
|
+
import { r as e } from "./MButton-CEwo8lUB.js";
|
|
4
|
+
import { a as t, i as n, n as r, r as i, t as a } from "./feedback-CPwJaQHY.js";
|
|
5
|
+
import { n as o, t as s } from "./MSkeleton-Dhu-loDO.js";
|
|
6
|
+
import { t as c } from "./MTag-cw3cIGHX.js";
|
|
7
|
+
import { t as l } from "./MLoader-CYp0OJU_.js";
|
|
8
8
|
export { t as MAlert, o as MBadge, n as MBanner, l as MLoader, i as MProgressRing, s as MSkeleton, e as MSpinner, c as MTag, a as MToastProvider, r as useMToast };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./validators-B6yWdsu2.cjs`);require(`./core-w629c4ND.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);var r=(0,t.createContext)(null);function i(){return(0,t.useContext)(r)}function a({initialValues:i={},onSubmit:a,onChange:o,validationMode:s=`onBlur`,children:c,className:l,style:u,noValidate:d=!0,...f}){let[p,m]=(0,t.useState)({...i}),[h,g]=(0,t.useState)({}),[_,v]=(0,t.useState)({}),[y,b]=(0,t.useState)(!1),x=(0,t.useRef)(new Map),S=(0,t.useRef)(p),C=(0,t.useCallback)(e=>{x.current.set(e.name,e)},[]),w=(0,t.useCallback)(e=>{x.current.delete(e)},[]),T=(0,t.useCallback)((t,n)=>{let r=x.current.get(t);if(!r)return{valid:!0};let i=n===void 0?S.current[t]:n,a=i==null?``:String(i);if(r.required){let t=e.g(a);if(!t.valid)return t}if(r.validate)for(let e of r.validate){let t=e(a);if(!t.valid)return t}return{valid:!0}},[]),E=(0,t.useCallback)((e,t)=>{let n=T(e,t);return g(t=>{if(n.valid){let n={...t};return delete n[e],n}return{...t,[e]:n.error}}),n},[T]),D=(0,t.useCallback)(()=>{let e=!0,t={};for(let[n]of x.current){let r=T(n);r.valid||(e=!1,t[n]=r.error)}g(t);let n={};for(let[e]of x.current)n[e]=!0;return v(n),e},[T]),O=(0,t.useCallback)((e,t)=>{let n={...S.current,[e]:t};S.current=n,m(n),o?.(n),s===`onChange`&&_[e]&&E(e,t)},[o,s,_,E]),k=(0,t.useCallback)((e,t)=>{g(n=>({...n,[e]:t}))},[]),A=(0,t.useCallback)((e,t)=>{v(n=>({...n,[e]:t})),s===`onBlur`&&t&&E(e)},[s,E]),j=(0,t.useCallback)(()=>{S.current={...i},m(S.current),g({}),v({}),b(!1)},[i]),M=(0,t.useCallback)(async e=>{if(e.preventDefault(),y||!D())return;b(!0);let t={setSubmitting:b,resetForm:j,setFieldError:k};try{await a?.(S.current,t)}finally{b(!1)}},[y,D,a,j,k]),N=(0,t.useMemo)(()=>({values:p,errors:h,touched:_,registerField:C,unregisterField:w,setFieldValue:O,setFieldError:k,setFieldTouched:A,validateField:E,validateAll:D,resetForm:j,isSubmitting:y}),[p,h,_,C,w,O,k,A,E,D,j,y]);return(0,n.jsx)(r.Provider,{value:N,children:(0,n.jsx)(`form`,{onSubmit:M,noValidate:d,className:`form${l?` ${l}`:``}`,style:u,...f,children:typeof c==`function`?c(N):c})})}function o(e,n){let r=i();(0,t.useEffect)(()=>{if(r)return r.registerField({name:e,validate:n?.validate,required:n?.required}),()=>r.unregisterField(e)},[r,e,n?.validate,n?.required]);let a=(0,t.useCallback)(t=>{r?.setFieldValue(e,t)},[r,e]),o=(0,t.useCallback)(()=>{r?.setFieldTouched(e,!0)},[r,e]);return{value:r?.values[e]??``,error:r?.errors[e],touched:r?.touched[e]??!1,onChange:a,onBlur:o}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
|
|
2
|
+
//# sourceMappingURL=form-CMsZo6Dm.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-CMsZo6Dm.cjs","names":[],"sources":["../src/components/form/MForm/FormContext.ts","../src/components/form/MForm/MForm.tsx","../src/components/form/MForm/useFormField.ts"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {MFormContextValue} from './MForm.types'\n\nexport const FormContext = createContext<MFormContextValue | null>(null)\n\n// Read the nearest form context to integrate custom fields with shared state.\nexport function useFormContext(): MFormContextValue | null {\n return useContext(FormContext)\n}\n","import {useState, useRef, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\nimport type {MFormProps, MFieldRegistration, MFormContextValue, MFormHelpers} from './MForm.types'\nimport {FormContext} from './FormContext'\nimport {validateRequired} from '../../../utils/validators'\nimport type {ValidationResult} from '../../../utils/validators'\nimport './MForm.css'\n\n// Coordinate form values, validation state and submit helpers through context.\nexport function MForm({\n initialValues = {},\n onSubmit,\n onChange,\n validationMode = 'onBlur',\n children,\n className,\n style,\n noValidate = true,\n ...rest\n}: MFormProps) {\n const [values, setValues] = useState<Record<string, unknown>>({...initialValues})\n const [errors, setErrors] = useState<Record<string, string>>({})\n const [touched, setTouched] = useState<Record<string, boolean>>({})\n const [isSubmitting, setIsSubmitting] = useState(false)\n const fieldsRef = useRef<Map<string, MFieldRegistration>>(new Map())\n // Latest values outside the render cycle, so validation never reads a stale closure.\n const valuesRef = useRef<Record<string, unknown>>(values)\n\n // Track mounted fields so validation stays aligned with active inputs.\n const registerField = useCallback((reg: MFieldRegistration) => {\n fieldsRef.current.set(reg.name, reg)\n }, [])\n\n const unregisterField = useCallback((name: string) => {\n fieldsRef.current.delete(name)\n }, [])\n\n // Run required and custom validators without mutating visible error state yet.\n const validateFieldInternal = useCallback((name: string, val?: unknown): ValidationResult => {\n const reg = fieldsRef.current.get(name)\n if (!reg) return {valid: true}\n\n const fieldValue = val !== undefined ? val : valuesRef.current[name]\n const strValue = fieldValue != null ? String(fieldValue) : ''\n\n // Required check\n if (reg.required) {\n const reqResult = validateRequired(strValue)\n if (!reqResult.valid) return reqResult\n }\n\n // Custom validators\n if (reg.validate) {\n for (const validator of reg.validate) {\n const result = validator(strValue)\n if (!result.valid) return result\n }\n }\n\n return {valid: true}\n }, [])\n\n // Persist the latest validation result for a single field.\n const validateField = useCallback(\n (name: string, val?: unknown): ValidationResult => {\n const result = validateFieldInternal(name, val)\n setErrors((prev) => {\n if (result.valid) {\n const next = {...prev}\n delete next[name]\n return next\n }\n return {...prev, [name]: result.error!}\n })\n return result\n },\n [validateFieldInternal]\n )\n\n // Validate every registered field before submit.\n const validateAll = useCallback((): boolean => {\n let allValid = true\n const newErrors: Record<string, string> = {}\n\n for (const [name] of fieldsRef.current) {\n const result = validateFieldInternal(name)\n if (!result.valid) {\n allValid = false\n newErrors[name] = result.error!\n }\n }\n\n setErrors(newErrors)\n // Mark all as touched\n const allTouched: Record<string, boolean> = {}\n for (const [name] of fieldsRef.current) {\n allTouched[name] = true\n }\n setTouched(allTouched)\n\n return allValid\n }, [validateFieldInternal])\n\n // Update field values and trigger onChange or validation according to mode.\n const setFieldValue = useCallback(\n (name: string, val: unknown) => {\n const next = {...valuesRef.current, [name]: val}\n valuesRef.current = next\n setValues(next)\n onChange?.(next)\n\n if (validationMode === 'onChange' && touched[name]) {\n validateField(name, val)\n }\n },\n [onChange, validationMode, touched, validateField]\n )\n\n const setFieldError = useCallback((name: string, error: string) => {\n setErrors((prev) => ({...prev, [name]: error}))\n }, [])\n\n // Mark fields as touched so blur validation can start surfacing errors.\n const setFieldTouched = useCallback(\n (name: string, isTouched: boolean) => {\n setTouched((prev) => ({...prev, [name]: isTouched}))\n if (validationMode === 'onBlur' && isTouched) {\n validateField(name)\n }\n },\n [validationMode, validateField]\n )\n\n const resetForm = useCallback(() => {\n valuesRef.current = {...initialValues}\n setValues(valuesRef.current)\n setErrors({})\n setTouched({})\n setIsSubmitting(false)\n }, [initialValues])\n\n // Guard submit flow with validation and a single in-flight submission state.\n const handleSubmit = useCallback(\n async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (isSubmitting) return\n\n const valid = validateAll()\n if (!valid) return\n\n setIsSubmitting(true)\n const helpers: MFormHelpers = {\n setSubmitting: setIsSubmitting,\n resetForm,\n setFieldError,\n }\n\n try {\n await onSubmit?.(valuesRef.current, helpers)\n } finally {\n setIsSubmitting(false)\n }\n },\n [isSubmitting, validateAll, onSubmit, resetForm, setFieldError]\n )\n\n // Memoize the public form context to limit downstream re-renders.\n const ctx = useMemo<MFormContextValue>(\n () => ({\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n }),\n [\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n ]\n )\n\n return (\n <FormContext.Provider value={ctx}>\n <form\n onSubmit={handleSubmit}\n noValidate={noValidate}\n className={`form${className ? ` ${className}` : ''}`}\n style={style}\n {...rest}\n >\n {typeof children === 'function' ? children(ctx) : children}\n </form>\n </FormContext.Provider>\n )\n}\n","import {useEffect, useCallback} from 'react'\nimport {useFormContext} from './FormContext'\nimport type {ValidatorFn} from '../../../utils/validators'\n\nexport interface MUseFormFieldOptions {\n validate?: ValidatorFn[]\n required?: boolean\n}\n\nexport interface MUseFormFieldReturn {\n value: unknown\n error: string | undefined\n touched: boolean\n onChange: (value: unknown) => void\n onBlur: () => void\n}\n\n// Connect a field name to the nearest form context and expose field-level helpers.\nexport function useFormField(name: string, options?: MUseFormFieldOptions): MUseFormFieldReturn {\n const ctx = useFormContext()\n\n // Register the field definition so the form can validate and reset it centrally.\n useEffect(() => {\n if (!ctx) return\n ctx.registerField({\n name,\n validate: options?.validate,\n required: options?.required,\n })\n return () => ctx.unregisterField(name)\n }, [ctx, name, options?.validate, options?.required])\n\n // Forward value updates into the form state.\n const onChange = useCallback(\n (val: unknown) => {\n ctx?.setFieldValue(name, val)\n },\n [ctx, name]\n )\n\n // Mark the field as touched when the control loses focus.\n const onBlur = useCallback(() => {\n ctx?.setFieldTouched(name, true)\n }, [ctx, name])\n\n return {\n value: ctx?.values[name] ?? '',\n error: ctx?.errors[name],\n touched: ctx?.touched[name] ?? false,\n onChange,\n onBlur,\n }\n}\n"],"mappings":"kIAGA,IAAa,GAAA,EAAA,EAAA,eAAsD,KAAK,CAGxE,SAAgB,GAA2C,CACvD,OAAA,EAAA,EAAA,YAAkB,EAAY,CCElC,SAAgB,EAAM,CAClB,gBAAgB,EAAE,CAClB,WACA,WACA,iBAAiB,SACjB,WACA,YACA,QACA,aAAa,GACb,GAAG,GACQ,CACX,GAAM,CAAC,EAAQ,IAAA,EAAA,EAAA,UAA+C,CAAC,GAAG,EAAc,CAAC,CAC3E,CAAC,EAAQ,IAAA,EAAA,EAAA,UAA8C,EAAE,CAAC,CAC1D,CAAC,EAAS,IAAA,EAAA,EAAA,UAAgD,EAAE,CAAC,CAC7D,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,GAAM,CACjD,GAAA,EAAA,EAAA,QAAoD,IAAI,IAAM,CAE9D,GAAA,EAAA,EAAA,QAA4C,EAAO,CAGnD,GAAA,EAAA,EAAA,aAA6B,GAA4B,CAC3D,EAAU,QAAQ,IAAI,EAAI,KAAM,EAAI,EACrC,EAAE,CAAC,CAEA,GAAA,EAAA,EAAA,aAA+B,GAAiB,CAClD,EAAU,QAAQ,OAAO,EAAK,EAC/B,EAAE,CAAC,CAGA,GAAA,EAAA,EAAA,cAAqC,EAAc,IAAoC,CACzF,IAAM,EAAM,EAAU,QAAQ,IAAI,EAAK,CACvC,GAAI,CAAC,EAAK,MAAO,CAAC,MAAO,GAAK,CAE9B,IAAM,EAAa,IAAQ,IAAA,GAAkB,EAAU,QAAQ,GAAxB,EACjC,EAAW,GAAc,KAA4B,GAArB,OAAO,EAAW,CAGxD,GAAI,EAAI,SAAU,CACd,IAAM,EAAY,EAAA,EAAiB,EAAS,CAC5C,GAAI,CAAC,EAAU,MAAO,OAAO,EAIjC,GAAI,EAAI,SACJ,IAAK,IAAM,KAAa,EAAI,SAAU,CAClC,IAAM,EAAS,EAAU,EAAS,CAClC,GAAI,CAAC,EAAO,MAAO,OAAO,EAIlC,MAAO,CAAC,MAAO,GAAK,EACrB,EAAE,CAAC,CAGA,GAAA,EAAA,EAAA,cACD,EAAc,IAAoC,CAC/C,IAAM,EAAS,EAAsB,EAAM,EAAI,CAS/C,OARA,EAAW,GAAS,CAChB,GAAI,EAAO,MAAO,CACd,IAAM,EAAO,CAAC,GAAG,EAAK,CAEtB,OADA,OAAO,EAAK,GACL,EAEX,MAAO,CAAC,GAAG,GAAO,GAAO,EAAO,MAAO,EACzC,CACK,GAEX,CAAC,EAAsB,CAC1B,CAGK,GAAA,EAAA,EAAA,iBAAyC,CAC3C,IAAI,EAAW,GACT,EAAoC,EAAE,CAE5C,IAAK,GAAM,CAAC,KAAS,EAAU,QAAS,CACpC,IAAM,EAAS,EAAsB,EAAK,CACrC,EAAO,QACR,EAAW,GACX,EAAU,GAAQ,EAAO,OAIjC,EAAU,EAAU,CAEpB,IAAM,EAAsC,EAAE,CAC9C,IAAK,GAAM,CAAC,KAAS,EAAU,QAC3B,EAAW,GAAQ,GAIvB,OAFA,EAAW,EAAW,CAEf,GACR,CAAC,EAAsB,CAAC,CAGrB,GAAA,EAAA,EAAA,cACD,EAAc,IAAiB,CAC5B,IAAM,EAAO,CAAC,GAAG,EAAU,SAAU,GAAO,EAAI,CAChD,EAAU,QAAU,EACpB,EAAU,EAAK,CACf,IAAW,EAAK,CAEZ,IAAmB,YAAc,EAAQ,IACzC,EAAc,EAAM,EAAI,EAGhC,CAAC,EAAU,EAAgB,EAAS,EAAc,CACrD,CAEK,GAAA,EAAA,EAAA,cAA6B,EAAc,IAAkB,CAC/D,EAAW,IAAU,CAAC,GAAG,GAAO,GAAO,EAAM,EAAE,EAChD,EAAE,CAAC,CAGA,GAAA,EAAA,EAAA,cACD,EAAc,IAAuB,CAClC,EAAY,IAAU,CAAC,GAAG,GAAO,GAAO,EAAU,EAAE,CAChD,IAAmB,UAAY,GAC/B,EAAc,EAAK,EAG3B,CAAC,EAAgB,EAAc,CAClC,CAEK,GAAA,EAAA,EAAA,iBAA8B,CAChC,EAAU,QAAU,CAAC,GAAG,EAAc,CACtC,EAAU,EAAU,QAAQ,CAC5B,EAAU,EAAE,CAAC,CACb,EAAW,EAAE,CAAC,CACd,EAAgB,GAAM,EACvB,CAAC,EAAc,CAAC,CAGb,GAAA,EAAA,EAAA,aACF,KAAO,IAAwC,CAK3C,GAJA,EAAE,gBAAgB,CACd,GAGA,CADU,GAAa,CACf,OAEZ,EAAgB,GAAK,CACrB,IAAM,EAAwB,CAC1B,cAAe,EACf,YACA,gBACH,CAED,GAAI,CACA,MAAM,IAAW,EAAU,QAAS,EAAQ,QACtC,CACN,EAAgB,GAAM,GAG9B,CAAC,EAAc,EAAa,EAAU,EAAW,EAAc,CAClE,CAGK,GAAA,EAAA,EAAA,cACK,CACH,SACA,SACA,UACA,gBACA,kBACA,gBACA,gBACA,kBACA,gBACA,cACA,YACA,eACH,EACD,CACI,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACH,CACJ,CAED,OACI,EAAA,EAAA,KAAC,EAAY,SAAb,CAAsB,MAAO,YACzB,EAAA,EAAA,KAAC,OAAD,CACI,SAAU,EACE,aACZ,UAAW,OAAO,EAAY,IAAI,IAAc,KACzC,QACP,GAAI,WAEH,OAAO,GAAa,WAAa,EAAS,EAAI,CAAG,EAC/C,CAAA,CACY,CAAA,CC/L/B,SAAgB,EAAa,EAAc,EAAqD,CAC5F,IAAM,EAAM,GAAgB,EAG5B,EAAA,EAAA,eAAgB,CACP,KAML,OALA,EAAI,cAAc,CACd,OACA,SAAU,GAAS,SACnB,SAAU,GAAS,SACtB,CAAC,KACW,EAAI,gBAAgB,EAAK,EACvC,CAAC,EAAK,EAAM,GAAS,SAAU,GAAS,SAAS,CAAC,CAGrD,IAAM,GAAA,EAAA,EAAA,aACD,GAAiB,CACd,GAAK,cAAc,EAAM,EAAI,EAEjC,CAAC,EAAK,EAAK,CACd,CAGK,GAAA,EAAA,EAAA,iBAA2B,CAC7B,GAAK,gBAAgB,EAAM,GAAK,EACjC,CAAC,EAAK,EAAK,CAAC,CAEf,MAAO,CACH,MAAO,GAAK,OAAO,IAAS,GAC5B,MAAO,GAAK,OAAO,GACnB,QAAS,GAAK,QAAQ,IAAS,GAC/B,WACA,SACH"}
|
|
@@ -9,14 +9,14 @@ function u() {
|
|
|
9
9
|
//#endregion
|
|
10
10
|
//#region src/components/form/MForm/MForm.tsx
|
|
11
11
|
function d({ initialValues: t = {}, onSubmit: r, onChange: i, validationMode: u = "onBlur", children: d, className: f, style: p, noValidate: m = !0, ...h }) {
|
|
12
|
-
let [g, _] = s({ ...t }), [v, y] = s({}), [b, x] = s({}), [S, C] = s(!1), w = o(/* @__PURE__ */ new Map()), T = n((e) => {
|
|
12
|
+
let [g, _] = s({ ...t }), [v, y] = s({}), [b, x] = s({}), [S, C] = s(!1), w = o(/* @__PURE__ */ new Map()), T = o(g), E = n((e) => {
|
|
13
13
|
w.current.set(e.name, e);
|
|
14
|
-
}, []),
|
|
14
|
+
}, []), D = n((e) => {
|
|
15
15
|
w.current.delete(e);
|
|
16
|
-
}, []),
|
|
16
|
+
}, []), O = n((t, n) => {
|
|
17
17
|
let r = w.current.get(t);
|
|
18
18
|
if (!r) return { valid: !0 };
|
|
19
|
-
let i = n === void 0 ?
|
|
19
|
+
let i = n === void 0 ? T.current[t] : n, a = i == null ? "" : String(i);
|
|
20
20
|
if (r.required) {
|
|
21
21
|
let t = e(a);
|
|
22
22
|
if (!t.valid) return t;
|
|
@@ -26,109 +26,106 @@ function d({ initialValues: t = {}, onSubmit: r, onChange: i, validationMode: u
|
|
|
26
26
|
if (!t.valid) return t;
|
|
27
27
|
}
|
|
28
28
|
return { valid: !0 };
|
|
29
|
-
}, [
|
|
30
|
-
let
|
|
31
|
-
return y((
|
|
32
|
-
if (
|
|
33
|
-
let
|
|
34
|
-
return delete
|
|
29
|
+
}, []), k = n((e, t) => {
|
|
30
|
+
let n = O(e, t);
|
|
31
|
+
return y((t) => {
|
|
32
|
+
if (n.valid) {
|
|
33
|
+
let n = { ...t };
|
|
34
|
+
return delete n[e], n;
|
|
35
35
|
}
|
|
36
36
|
return {
|
|
37
|
-
...
|
|
38
|
-
[e]:
|
|
37
|
+
...t,
|
|
38
|
+
[e]: n.error
|
|
39
39
|
};
|
|
40
|
-
}),
|
|
41
|
-
}, [
|
|
40
|
+
}), n;
|
|
41
|
+
}, [O]), A = n(() => {
|
|
42
42
|
let e = !0, t = {};
|
|
43
43
|
for (let [n] of w.current) {
|
|
44
|
-
let r =
|
|
44
|
+
let r = O(n);
|
|
45
45
|
r.valid || (e = !1, t[n] = r.error);
|
|
46
46
|
}
|
|
47
47
|
y(t);
|
|
48
48
|
let n = {};
|
|
49
49
|
for (let [e] of w.current) n[e] = !0;
|
|
50
50
|
return x(n), e;
|
|
51
|
-
}, [
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return i?.(r), r;
|
|
58
|
-
}), u === "onChange" && b[e] && setTimeout(() => O(e), 0);
|
|
51
|
+
}, [O]), j = n((e, t) => {
|
|
52
|
+
let n = {
|
|
53
|
+
...T.current,
|
|
54
|
+
[e]: t
|
|
55
|
+
};
|
|
56
|
+
T.current = n, _(n), i?.(n), u === "onChange" && b[e] && k(e, t);
|
|
59
57
|
}, [
|
|
60
58
|
i,
|
|
61
59
|
u,
|
|
62
60
|
b,
|
|
63
|
-
|
|
64
|
-
]),
|
|
61
|
+
k
|
|
62
|
+
]), M = n((e, t) => {
|
|
65
63
|
y((n) => ({
|
|
66
64
|
...n,
|
|
67
65
|
[e]: t
|
|
68
66
|
}));
|
|
69
|
-
}, []),
|
|
67
|
+
}, []), N = n((e, t) => {
|
|
70
68
|
x((n) => ({
|
|
71
69
|
...n,
|
|
72
70
|
[e]: t
|
|
73
|
-
})), u === "onBlur" && t &&
|
|
74
|
-
}, [u,
|
|
75
|
-
|
|
76
|
-
}, [t]),
|
|
77
|
-
if (e.preventDefault(), S || !
|
|
71
|
+
})), u === "onBlur" && t && k(e);
|
|
72
|
+
}, [u, k]), P = n(() => {
|
|
73
|
+
T.current = { ...t }, _(T.current), y({}), x({}), C(!1);
|
|
74
|
+
}, [t]), F = n(async (e) => {
|
|
75
|
+
if (e.preventDefault(), S || !A()) return;
|
|
78
76
|
C(!0);
|
|
79
77
|
let t = {
|
|
80
78
|
setSubmitting: C,
|
|
81
|
-
resetForm:
|
|
82
|
-
setFieldError:
|
|
79
|
+
resetForm: P,
|
|
80
|
+
setFieldError: M
|
|
83
81
|
};
|
|
84
82
|
try {
|
|
85
|
-
await r?.(
|
|
83
|
+
await r?.(T.current, t);
|
|
86
84
|
} finally {
|
|
87
85
|
C(!1);
|
|
88
86
|
}
|
|
89
87
|
}, [
|
|
90
88
|
S,
|
|
91
|
-
|
|
92
|
-
g,
|
|
89
|
+
A,
|
|
93
90
|
r,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
]),
|
|
91
|
+
P,
|
|
92
|
+
M
|
|
93
|
+
]), I = a(() => ({
|
|
97
94
|
values: g,
|
|
98
95
|
errors: v,
|
|
99
96
|
touched: b,
|
|
100
|
-
registerField:
|
|
101
|
-
unregisterField:
|
|
102
|
-
setFieldValue:
|
|
103
|
-
setFieldError:
|
|
104
|
-
setFieldTouched:
|
|
105
|
-
validateField:
|
|
106
|
-
validateAll:
|
|
107
|
-
resetForm:
|
|
97
|
+
registerField: E,
|
|
98
|
+
unregisterField: D,
|
|
99
|
+
setFieldValue: j,
|
|
100
|
+
setFieldError: M,
|
|
101
|
+
setFieldTouched: N,
|
|
102
|
+
validateField: k,
|
|
103
|
+
validateAll: A,
|
|
104
|
+
resetForm: P,
|
|
108
105
|
isSubmitting: S
|
|
109
106
|
}), [
|
|
110
107
|
g,
|
|
111
108
|
v,
|
|
112
109
|
b,
|
|
113
|
-
T,
|
|
114
110
|
E,
|
|
115
|
-
|
|
111
|
+
D,
|
|
116
112
|
j,
|
|
117
113
|
M,
|
|
118
|
-
O,
|
|
119
|
-
k,
|
|
120
114
|
N,
|
|
115
|
+
k,
|
|
116
|
+
A,
|
|
117
|
+
P,
|
|
121
118
|
S
|
|
122
119
|
]);
|
|
123
120
|
return /* @__PURE__ */ c(l.Provider, {
|
|
124
|
-
value:
|
|
121
|
+
value: I,
|
|
125
122
|
children: /* @__PURE__ */ c("form", {
|
|
126
|
-
onSubmit:
|
|
123
|
+
onSubmit: F,
|
|
127
124
|
noValidate: m,
|
|
128
125
|
className: `form${f ? ` ${f}` : ""}`,
|
|
129
126
|
style: p,
|
|
130
127
|
...h,
|
|
131
|
-
children: typeof d == "function" ? d(
|
|
128
|
+
children: typeof d == "function" ? d(I) : d
|
|
132
129
|
})
|
|
133
130
|
});
|
|
134
131
|
}
|
|
@@ -164,4 +161,4 @@ function f(e, t) {
|
|
|
164
161
|
//#endregion
|
|
165
162
|
export { d as n, u as r, f as t };
|
|
166
163
|
|
|
167
|
-
//# sourceMappingURL=form-
|
|
164
|
+
//# sourceMappingURL=form-WU6DcQGD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-WU6DcQGD.js","names":[],"sources":["../src/components/form/MForm/FormContext.ts","../src/components/form/MForm/MForm.tsx","../src/components/form/MForm/useFormField.ts"],"sourcesContent":["import {createContext, useContext} from 'react'\nimport type {MFormContextValue} from './MForm.types'\n\nexport const FormContext = createContext<MFormContextValue | null>(null)\n\n// Read the nearest form context to integrate custom fields with shared state.\nexport function useFormContext(): MFormContextValue | null {\n return useContext(FormContext)\n}\n","import {useState, useRef, useCallback, useMemo} from 'react'\nimport type * as React from 'react'\nimport type {MFormProps, MFieldRegistration, MFormContextValue, MFormHelpers} from './MForm.types'\nimport {FormContext} from './FormContext'\nimport {validateRequired} from '../../../utils/validators'\nimport type {ValidationResult} from '../../../utils/validators'\nimport './MForm.css'\n\n// Coordinate form values, validation state and submit helpers through context.\nexport function MForm({\n initialValues = {},\n onSubmit,\n onChange,\n validationMode = 'onBlur',\n children,\n className,\n style,\n noValidate = true,\n ...rest\n}: MFormProps) {\n const [values, setValues] = useState<Record<string, unknown>>({...initialValues})\n const [errors, setErrors] = useState<Record<string, string>>({})\n const [touched, setTouched] = useState<Record<string, boolean>>({})\n const [isSubmitting, setIsSubmitting] = useState(false)\n const fieldsRef = useRef<Map<string, MFieldRegistration>>(new Map())\n // Latest values outside the render cycle, so validation never reads a stale closure.\n const valuesRef = useRef<Record<string, unknown>>(values)\n\n // Track mounted fields so validation stays aligned with active inputs.\n const registerField = useCallback((reg: MFieldRegistration) => {\n fieldsRef.current.set(reg.name, reg)\n }, [])\n\n const unregisterField = useCallback((name: string) => {\n fieldsRef.current.delete(name)\n }, [])\n\n // Run required and custom validators without mutating visible error state yet.\n const validateFieldInternal = useCallback((name: string, val?: unknown): ValidationResult => {\n const reg = fieldsRef.current.get(name)\n if (!reg) return {valid: true}\n\n const fieldValue = val !== undefined ? val : valuesRef.current[name]\n const strValue = fieldValue != null ? String(fieldValue) : ''\n\n // Required check\n if (reg.required) {\n const reqResult = validateRequired(strValue)\n if (!reqResult.valid) return reqResult\n }\n\n // Custom validators\n if (reg.validate) {\n for (const validator of reg.validate) {\n const result = validator(strValue)\n if (!result.valid) return result\n }\n }\n\n return {valid: true}\n }, [])\n\n // Persist the latest validation result for a single field.\n const validateField = useCallback(\n (name: string, val?: unknown): ValidationResult => {\n const result = validateFieldInternal(name, val)\n setErrors((prev) => {\n if (result.valid) {\n const next = {...prev}\n delete next[name]\n return next\n }\n return {...prev, [name]: result.error!}\n })\n return result\n },\n [validateFieldInternal]\n )\n\n // Validate every registered field before submit.\n const validateAll = useCallback((): boolean => {\n let allValid = true\n const newErrors: Record<string, string> = {}\n\n for (const [name] of fieldsRef.current) {\n const result = validateFieldInternal(name)\n if (!result.valid) {\n allValid = false\n newErrors[name] = result.error!\n }\n }\n\n setErrors(newErrors)\n // Mark all as touched\n const allTouched: Record<string, boolean> = {}\n for (const [name] of fieldsRef.current) {\n allTouched[name] = true\n }\n setTouched(allTouched)\n\n return allValid\n }, [validateFieldInternal])\n\n // Update field values and trigger onChange or validation according to mode.\n const setFieldValue = useCallback(\n (name: string, val: unknown) => {\n const next = {...valuesRef.current, [name]: val}\n valuesRef.current = next\n setValues(next)\n onChange?.(next)\n\n if (validationMode === 'onChange' && touched[name]) {\n validateField(name, val)\n }\n },\n [onChange, validationMode, touched, validateField]\n )\n\n const setFieldError = useCallback((name: string, error: string) => {\n setErrors((prev) => ({...prev, [name]: error}))\n }, [])\n\n // Mark fields as touched so blur validation can start surfacing errors.\n const setFieldTouched = useCallback(\n (name: string, isTouched: boolean) => {\n setTouched((prev) => ({...prev, [name]: isTouched}))\n if (validationMode === 'onBlur' && isTouched) {\n validateField(name)\n }\n },\n [validationMode, validateField]\n )\n\n const resetForm = useCallback(() => {\n valuesRef.current = {...initialValues}\n setValues(valuesRef.current)\n setErrors({})\n setTouched({})\n setIsSubmitting(false)\n }, [initialValues])\n\n // Guard submit flow with validation and a single in-flight submission state.\n const handleSubmit = useCallback(\n async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (isSubmitting) return\n\n const valid = validateAll()\n if (!valid) return\n\n setIsSubmitting(true)\n const helpers: MFormHelpers = {\n setSubmitting: setIsSubmitting,\n resetForm,\n setFieldError,\n }\n\n try {\n await onSubmit?.(valuesRef.current, helpers)\n } finally {\n setIsSubmitting(false)\n }\n },\n [isSubmitting, validateAll, onSubmit, resetForm, setFieldError]\n )\n\n // Memoize the public form context to limit downstream re-renders.\n const ctx = useMemo<MFormContextValue>(\n () => ({\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n }),\n [\n values,\n errors,\n touched,\n registerField,\n unregisterField,\n setFieldValue,\n setFieldError,\n setFieldTouched,\n validateField,\n validateAll,\n resetForm,\n isSubmitting,\n ]\n )\n\n return (\n <FormContext.Provider value={ctx}>\n <form\n onSubmit={handleSubmit}\n noValidate={noValidate}\n className={`form${className ? ` ${className}` : ''}`}\n style={style}\n {...rest}\n >\n {typeof children === 'function' ? children(ctx) : children}\n </form>\n </FormContext.Provider>\n )\n}\n","import {useEffect, useCallback} from 'react'\nimport {useFormContext} from './FormContext'\nimport type {ValidatorFn} from '../../../utils/validators'\n\nexport interface MUseFormFieldOptions {\n validate?: ValidatorFn[]\n required?: boolean\n}\n\nexport interface MUseFormFieldReturn {\n value: unknown\n error: string | undefined\n touched: boolean\n onChange: (value: unknown) => void\n onBlur: () => void\n}\n\n// Connect a field name to the nearest form context and expose field-level helpers.\nexport function useFormField(name: string, options?: MUseFormFieldOptions): MUseFormFieldReturn {\n const ctx = useFormContext()\n\n // Register the field definition so the form can validate and reset it centrally.\n useEffect(() => {\n if (!ctx) return\n ctx.registerField({\n name,\n validate: options?.validate,\n required: options?.required,\n })\n return () => ctx.unregisterField(name)\n }, [ctx, name, options?.validate, options?.required])\n\n // Forward value updates into the form state.\n const onChange = useCallback(\n (val: unknown) => {\n ctx?.setFieldValue(name, val)\n },\n [ctx, name]\n )\n\n // Mark the field as touched when the control loses focus.\n const onBlur = useCallback(() => {\n ctx?.setFieldTouched(name, true)\n }, [ctx, name])\n\n return {\n value: ctx?.values[name] ?? '',\n error: ctx?.errors[name],\n touched: ctx?.touched[name] ?? false,\n onChange,\n onBlur,\n }\n}\n"],"mappings":"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"}
|
package/dist/form.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
const {ensureStyles}=require('./style-runtime.cjs')
|
|
2
2
|
ensureStyles()
|
|
3
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./form-
|
|
3
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./form-CMsZo6Dm.cjs`);exports.MForm=e.n,exports.useFormContext=e.r,exports.useFormField=e.t;
|
package/dist/form.js
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./MI18nProvider-CqAwaswx.cjs`);require(`./core-w629c4ND.cjs`);let t=require(`react`);function n(){let n=e.r();return(0,t.useCallback)((e,t)=>n?.t(e,t)??t,[n])}function r(){let e=n();return(0,t.useMemo)(()=>({today:e(`mineralui.datePicker.today`,`Today`),clear:e(`mineralui.datePicker.clear`,`Clear`),previousMonth:e(`mineralui.datePicker.previousMonth`,`Previous month`),nextMonth:e(`mineralui.datePicker.nextMonth`,`Next month`)}),[e])}function i(){let e=n();return(0,t.useMemo)(()=>({today:e(`mineralui.dateRangePicker.today`,`Today`),clear:e(`mineralui.dateRangePicker.clear`,`Clear`),previousMonth:e(`mineralui.dateRangePicker.previousMonth`,`Previous month`),nextMonth:e(`mineralui.dateRangePicker.nextMonth`,`Next month`),rangeSubtitle:e(`mineralui.dateRangePicker.rangeSubtitle`,`Select start and end dates in one panel.`),defaultRangePlaceholder:e(`mineralui.dateRangePicker.defaultRangePlaceholder`,`Select date range...`),presets:{today:e(`mineralui.dateRangePicker.presets.today`,`Today`),days2:e(`mineralui.dateRangePicker.presets.days2`,`2 days`),days3:e(`mineralui.dateRangePicker.presets.days3`,`3 days`),days7:e(`mineralui.dateRangePicker.presets.days7`,`7 days`),days14:e(`mineralui.dateRangePicker.presets.days14`,`14 days`),days31:e(`mineralui.dateRangePicker.presets.days31`,`31 days`),thisMonth:e(`mineralui.dateRangePicker.presets.thisMonth`,`This month`),previousMonth:e(`mineralui.dateRangePicker.presets.previousMonth`,`Previous month`),months2:e(`mineralui.dateRangePicker.presets.months2`,`2 months`),months3:e(`mineralui.dateRangePicker.presets.months3`,`3 months`),months6:e(`mineralui.dateRangePicker.presets.months6`,`6 months`),year1:e(`mineralui.dateRangePicker.presets.year1`,`1 year`)}}),[e])}function a(e,t){return e.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e)}function o(e){return!!(e&&e.toLowerCase().startsWith(`pl`))}function s(e,r){let i=n();return(0,t.useMemo)(()=>{let t=o(e);return{previousMonth:r?.previousMonth??i(`mineralui.miniCalendar.previousMonth`,t?`Poprzedni miesiąc`:`Previous month`),nextMonth:r?.nextMonth??i(`mineralui.miniCalendar.nextMonth`,t?`Następny miesiąc`:`Next month`)}},[i,e,r])}function c(){let e=n();return(0,t.useMemo)(()=>({scale:e(`mineralui.weekGrid.scale`,`Scale: {min} — {max}{unit}`),bands:[e(`mineralui.weekGrid.bands.none`,`None`),e(`mineralui.weekGrid.bands.few`,`Few`),e(`mineralui.weekGrid.bands.some`,`Some`),e(`mineralui.weekGrid.bands.many`,`Many`)],cellLabel:e(`mineralui.weekGrid.cellLabel`,`{day} {slot}: {value}`)}),[e])}function l(){let e=n();return(0,t.useMemo)(()=>({close:e(`mineralui.common.close`,`Close`),dismiss:e(`mineralui.common.dismiss`,`Dismiss`),remove:e(`mineralui.common.remove`,`Remove`),removeItem:e(`mineralui.common.removeItem`,`Remove {name}`),clearInput:e(`mineralui.common.clearInput`,`Clear input`),clearSelection:e(`mineralui.common.clearSelection`,`Clear selection`),clearTime:e(`mineralui.common.clearTime`,`Clear time`),clearFiles:e(`mineralui.common.clearFiles`,`Clear files`),clearCode:e(`mineralui.common.clearCode`,`Clear code`),increment:e(`mineralui.common.increment`,`Increment`),decrement:e(`mineralui.common.decrement`,`Decrement`),increase:e(`mineralui.common.increase`,`Increase`),decrease:e(`mineralui.common.decrease`,`Decrease`),moreOptions:e(`mineralui.common.moreOptions`,`More options`),scrollToTop:e(`mineralui.common.scrollToTop`,`Scroll to top`),openMenu:e(`mineralui.common.openMenu`,`Open menu`),openCalendar:e(`mineralui.common.openCalendar`,`Open calendar`),loading:e(`mineralui.common.loading`,`Loading`),preview:e(`mineralui.common.preview`,`Preview`),imagePreview:e(`mineralui.common.imagePreview`,`Image preview`),closePreview:e(`mineralui.common.closePreview`,`Close preview`),previewItem:e(`mineralui.common.previewItem`,`Preview {name}`),image:e(`mineralui.common.image`,`image`),imageNumber:e(`mineralui.common.imageNumber`,`Image {index}`),previousImage:e(`mineralui.common.previousImage`,`Previous image`),nextImage:e(`mineralui.common.nextImage`,`Next image`),previousSlide:e(`mineralui.common.previousSlide`,`Previous slide`),nextSlide:e(`mineralui.common.nextSlide`,`Next slide`),slideNumber:e(`mineralui.common.slideNumber`,`Slide {index}`),dragToClose:e(`mineralui.common.dragToClose`,`Drag down to close`),scrollLeft:e(`mineralui.common.scrollLeft`,`Scroll topbar left`),scrollRight:e(`mineralui.common.scrollRight`,`Scroll topbar right`),editTile:e(`mineralui.common.editTile`,`Edit tile`),expandTile:e(`mineralui.common.expandTile`,`Expand tile`),removeTile:e(`mineralui.common.removeTile`,`Remove tile`),expirationDate:e(`mineralui.common.expirationDate`,`Expiration date`),postalCodeCountry:e(`mineralui.common.postalCodeCountry`,`Postal code country`),digitNumber:e(`mineralui.common.digitNumber`,`Digit {index}`),removeImage:e(`mineralui.common.removeImage`,`Remove image`),emoji:e(`mineralui.common.emoji`,`Emoji`),attachImage:e(`mineralui.common.attachImage`,`Attach image`),send:e(`mineralui.common.send`,`Send`),eventActions:e(`mineralui.common.eventActions`,`Event actions`),documentActions:e(`mineralui.common.documentActions`,`Open document actions`),dayNavigator:e(`mineralui.common.dayNavigator`,`Day navigator`),previousDay:e(`mineralui.common.previousDay`,`Previous day`),nextDay:e(`mineralui.common.nextDay`,`Next day`),timeline:e(`mineralui.common.timeline`,`Timeline`)}),[e])}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
|
|
2
|
+
//# sourceMappingURL=frameworkTexts-BSXUtXOp.cjs.map
|