@commercetools/nimbus 2.10.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{accordion-W57hqCef.cjs.js → accordion-BWDDez2K.cjs.js} +2 -2
- package/dist/chunks/{accordion-W57hqCef.cjs.js.map → accordion-BWDDez2K.cjs.js.map} +1 -1
- package/dist/chunks/{accordion-BhvHB8Xc.es.js → accordion-BghGJkfm.es.js} +2 -2
- package/dist/chunks/{accordion-BhvHB8Xc.es.js.map → accordion-BghGJkfm.es.js.map} +1 -1
- package/dist/chunks/{accordion.content-cNB-_UJh.es.js → accordion.content-CduLlKab.es.js} +2 -2
- package/dist/chunks/{accordion.content-cNB-_UJh.es.js.map → accordion.content-CduLlKab.es.js.map} +1 -1
- package/dist/chunks/{accordion.content-aStf2M-n.cjs.js → accordion.content-DfUrWRK2.cjs.js} +2 -2
- package/dist/chunks/{accordion.content-aStf2M-n.cjs.js.map → accordion.content-DfUrWRK2.cjs.js.map} +1 -1
- package/dist/chunks/{alert-B0Bwo4-D.es.js → alert-CKjEjYuk.es.js} +2 -2
- package/dist/chunks/{alert-B0Bwo4-D.es.js.map → alert-CKjEjYuk.es.js.map} +1 -1
- package/dist/chunks/{alert-DHUVtbqx.cjs.js → alert-CtpnwfLq.cjs.js} +2 -2
- package/dist/chunks/{alert-DHUVtbqx.cjs.js.map → alert-CtpnwfLq.cjs.js.map} +1 -1
- package/dist/chunks/{button-VPIzqipu.cjs.js → button-C2Dl55wY.cjs.js} +2 -2
- package/dist/chunks/{button-VPIzqipu.cjs.js.map → button-C2Dl55wY.cjs.js.map} +1 -1
- package/dist/chunks/{button-dtLOSwKi.es.js → button-lHv6f2MW.es.js} +2 -2
- package/dist/chunks/{button-dtLOSwKi.es.js.map → button-lHv6f2MW.es.js.map} +1 -1
- package/dist/chunks/{calendar-B7eb7JPU.cjs.js → calendar-C9fUqihQ.cjs.js} +2 -2
- package/dist/chunks/{calendar-B7eb7JPU.cjs.js.map → calendar-C9fUqihQ.cjs.js.map} +1 -1
- package/dist/chunks/{calendar-BF94XT1s.es.js → calendar-QUdv8RpQ.es.js} +3 -3
- package/dist/chunks/{calendar-BF94XT1s.es.js.map → calendar-QUdv8RpQ.es.js.map} +1 -1
- package/dist/chunks/{card-CyGE5pi7.cjs.js → card-9_RuK9Zz.cjs.js} +2 -2
- package/dist/chunks/{card-CyGE5pi7.cjs.js.map → card-9_RuK9Zz.cjs.js.map} +1 -1
- package/dist/chunks/{card-B6WOaP1W.es.js → card-uXOOkYyy.es.js} +2 -2
- package/dist/chunks/{card-B6WOaP1W.es.js.map → card-uXOOkYyy.es.js.map} +1 -1
- package/dist/chunks/{checkbox-CZDjV_4N.es.js → checkbox-BuapXMHc.es.js} +2 -2
- package/dist/chunks/{checkbox-CZDjV_4N.es.js.map → checkbox-BuapXMHc.es.js.map} +1 -1
- package/dist/chunks/{checkbox-W3u4vRJx.cjs.js → checkbox-Da1oqUdt.cjs.js} +2 -2
- package/dist/chunks/{checkbox-W3u4vRJx.cjs.js.map → checkbox-Da1oqUdt.cjs.js.map} +1 -1
- package/dist/chunks/{collapsible-motion-BhX2LAbq.es.js → collapsible-motion-BdwG6Ope.es.js} +2 -2
- package/dist/chunks/{collapsible-motion-BhX2LAbq.es.js.map → collapsible-motion-BdwG6Ope.es.js.map} +1 -1
- package/dist/chunks/{collapsible-motion-BGc_z1OF.cjs.js → collapsible-motion-BiQOV9JE.cjs.js} +2 -2
- package/dist/chunks/{collapsible-motion-BGc_z1OF.cjs.js.map → collapsible-motion-BiQOV9JE.cjs.js.map} +1 -1
- package/dist/chunks/{combobox-CCLI1ID0.es.js → combobox-D57Kz3Nc.es.js} +4 -4
- package/dist/chunks/{combobox-CCLI1ID0.es.js.map → combobox-D57Kz3Nc.es.js.map} +1 -1
- package/dist/chunks/{combobox-C6lvFWBG.cjs.js → combobox-DI91M7UN.cjs.js} +2 -2
- package/dist/chunks/{combobox-C6lvFWBG.cjs.js.map → combobox-DI91M7UN.cjs.js.map} +1 -1
- package/dist/chunks/{data-table-D3gTUqrT.es.js → data-table-BxM4aLrf.es.js} +12 -12
- package/dist/chunks/{data-table-D3gTUqrT.es.js.map → data-table-BxM4aLrf.es.js.map} +1 -1
- package/dist/chunks/{data-table-Bv-7Q96i.cjs.js → data-table-DCpNE2Zx.cjs.js} +2 -2
- package/dist/chunks/{data-table-Bv-7Q96i.cjs.js.map → data-table-DCpNE2Zx.cjs.js.map} +1 -1
- package/dist/chunks/{date-input-Cht7WMYd.cjs.js → date-input-DD0uZdGq.cjs.js} +2 -2
- package/dist/chunks/{date-input-Cht7WMYd.cjs.js.map → date-input-DD0uZdGq.cjs.js.map} +1 -1
- package/dist/chunks/{date-input-ClTl3Qci.es.js → date-input-U8N1y6b_.es.js} +3 -3
- package/dist/chunks/{date-input-ClTl3Qci.es.js.map → date-input-U8N1y6b_.es.js.map} +1 -1
- package/dist/chunks/{date-picker-DNxpXgCk.es.js → date-picker-B5NwXo5k.es.js} +7 -7
- package/dist/chunks/{date-picker-DNxpXgCk.es.js.map → date-picker-B5NwXo5k.es.js.map} +1 -1
- package/dist/chunks/{date-picker-C2nULhPJ.cjs.js → date-picker-DZD4cZZI.cjs.js} +2 -2
- package/dist/chunks/{date-picker-C2nULhPJ.cjs.js.map → date-picker-DZD4cZZI.cjs.js.map} +1 -1
- package/dist/chunks/{date-range-picker-CJuZ64GO.es.js → date-range-picker-CloFZ70c.es.js} +7 -7
- package/dist/chunks/{date-range-picker-CJuZ64GO.es.js.map → date-range-picker-CloFZ70c.es.js.map} +1 -1
- package/dist/chunks/{date-range-picker-19SplEmj.cjs.js → date-range-picker-DcKkP7Xj.cjs.js} +2 -2
- package/dist/chunks/{date-range-picker-19SplEmj.cjs.js.map → date-range-picker-DcKkP7Xj.cjs.js.map} +1 -1
- package/dist/chunks/{date-range-picker-field-Dt-bb4xJ.es.js → date-range-picker-field-BPGGp3jH.es.js} +3 -3
- package/dist/chunks/{date-range-picker-field-Dt-bb4xJ.es.js.map → date-range-picker-field-BPGGp3jH.es.js.map} +1 -1
- package/dist/chunks/{date-range-picker-field-CI8R-9wO.cjs.js → date-range-picker-field-CSpT0HwR.cjs.js} +2 -2
- package/dist/chunks/{date-range-picker-field-CI8R-9wO.cjs.js.map → date-range-picker-field-CSpT0HwR.cjs.js.map} +1 -1
- package/dist/chunks/{default-page-8nMYgILp.cjs.js → default-page-CRVgInf7.cjs.js} +2 -2
- package/dist/chunks/{default-page-8nMYgILp.cjs.js.map → default-page-CRVgInf7.cjs.js.map} +1 -1
- package/dist/chunks/{default-page-B-Sp5fDS.es.js → default-page-CkacXcz2.es.js} +2 -2
- package/dist/chunks/{default-page-B-Sp5fDS.es.js.map → default-page-CkacXcz2.es.js.map} +1 -1
- package/dist/chunks/{dialog-2VC555bv.cjs.js → dialog-CdRhZEAb.cjs.js} +2 -2
- package/dist/chunks/{dialog-2VC555bv.cjs.js.map → dialog-CdRhZEAb.cjs.js.map} +1 -1
- package/dist/chunks/{dialog-CpZNWZ1u.es.js → dialog-yIDnbE41.es.js} +3 -3
- package/dist/chunks/{dialog-CpZNWZ1u.es.js.map → dialog-yIDnbE41.es.js.map} +1 -1
- package/dist/chunks/{draggable-list-bbz150ZU.es.js → draggable-list-DEWPzTXs.es.js} +5 -5
- package/dist/chunks/{draggable-list-bbz150ZU.es.js.map → draggable-list-DEWPzTXs.es.js.map} +1 -1
- package/dist/chunks/{draggable-list-DO9XjrfL.cjs.js → draggable-list-oPX1t-3Y.cjs.js} +2 -2
- package/dist/chunks/{draggable-list-DO9XjrfL.cjs.js.map → draggable-list-oPX1t-3Y.cjs.js.map} +1 -1
- package/dist/chunks/{drawer-D916HtwS.cjs.js → drawer-C6SlH_kv.cjs.js} +2 -2
- package/dist/chunks/{drawer-D916HtwS.cjs.js.map → drawer-C6SlH_kv.cjs.js.map} +1 -1
- package/dist/chunks/{drawer-ywS81xb5.es.js → drawer-DNLkEvD0.es.js} +4 -4
- package/dist/chunks/{drawer-ywS81xb5.es.js.map → drawer-DNLkEvD0.es.js.map} +1 -1
- package/dist/chunks/extract-padding-props-Cbwb9nEt.es.js +71 -0
- package/dist/chunks/extract-padding-props-Cbwb9nEt.es.js.map +1 -0
- package/dist/chunks/extract-padding-props-Ci-QKY45.cjs.js +2 -0
- package/dist/chunks/extract-padding-props-Ci-QKY45.cjs.js.map +1 -0
- package/dist/chunks/{extract-style-props-D_NsrT_t.es.js → extract-style-props-D86m_g63.es.js} +2 -2
- package/dist/chunks/{extract-style-props-D_NsrT_t.es.js.map → extract-style-props-D86m_g63.es.js.map} +1 -1
- package/dist/chunks/{extract-style-props-MWsS2n9A.cjs.js → extract-style-props-DiP1lZl_.cjs.js} +2 -2
- package/dist/chunks/{extract-style-props-MWsS2n9A.cjs.js.map → extract-style-props-DiP1lZl_.cjs.js.map} +1 -1
- package/dist/chunks/{form-field-DzzyQud_.es.js → form-field-BVbjVnSV.es.js} +2 -2
- package/dist/chunks/{form-field-DzzyQud_.es.js.map → form-field-BVbjVnSV.es.js.map} +1 -1
- package/dist/chunks/{form-field-v_NZnNpK.cjs.js → form-field-BgYwFv45.cjs.js} +2 -2
- package/dist/chunks/{form-field-v_NZnNpK.cjs.js.map → form-field-BgYwFv45.cjs.js.map} +1 -1
- package/dist/chunks/{icon-button-Dus3CyuU.cjs.js → icon-button-BwxwVPZQ.cjs.js} +2 -2
- package/dist/chunks/{icon-button-Dus3CyuU.cjs.js.map → icon-button-BwxwVPZQ.cjs.js.map} +1 -1
- package/dist/chunks/{icon-button-DwOSMjvL.es.js → icon-button-COjLtd6N.es.js} +2 -2
- package/dist/chunks/{icon-button-DwOSMjvL.es.js.map → icon-button-COjLtd6N.es.js.map} +1 -1
- package/dist/chunks/{icon-toggle-button-D1QCn8pM.cjs.js → icon-toggle-button-BUG86RqE.cjs.js} +2 -2
- package/dist/chunks/{icon-toggle-button-D1QCn8pM.cjs.js.map → icon-toggle-button-BUG86RqE.cjs.js.map} +1 -1
- package/dist/chunks/{icon-toggle-button-Dg4SI2i3.es.js → icon-toggle-button-CBEMJReu.es.js} +2 -2
- package/dist/chunks/{icon-toggle-button-Dg4SI2i3.es.js.map → icon-toggle-button-CBEMJReu.es.js.map} +1 -1
- package/dist/chunks/{index-B5W9PQbq.es.js → index-CTrsTsK6.es.js} +312 -147
- package/dist/chunks/index-CTrsTsK6.es.js.map +1 -0
- package/dist/chunks/{index-CoMspoGo.cjs.js → index-CiXhDFpN.cjs.js} +8 -8
- package/dist/chunks/index-CiXhDFpN.cjs.js.map +1 -0
- package/dist/chunks/{list-BEotuefl.es.js → list-DZIxOhF7.es.js} +2 -2
- package/dist/chunks/{list-BEotuefl.es.js.map → list-DZIxOhF7.es.js.map} +1 -1
- package/dist/chunks/{list-DydMQD_X.cjs.js → list-DZkO_S3d.cjs.js} +2 -2
- package/dist/chunks/{list-DydMQD_X.cjs.js.map → list-DZkO_S3d.cjs.js.map} +1 -1
- package/dist/chunks/{localized-field-U_WJObgA.cjs.js → localized-field-B69EDfq1.cjs.js} +2 -2
- package/dist/chunks/{localized-field-U_WJObgA.cjs.js.map → localized-field-B69EDfq1.cjs.js.map} +1 -1
- package/dist/chunks/{localized-field-CVsS8mIU.es.js → localized-field-BrdKlDDc.es.js} +8 -8
- package/dist/chunks/{localized-field-CVsS8mIU.es.js.map → localized-field-BrdKlDDc.es.js.map} +1 -1
- package/dist/chunks/{menu-BKLx-WY2.cjs.js → menu-BgqoIrxE.cjs.js} +2 -2
- package/dist/chunks/{menu-BKLx-WY2.cjs.js.map → menu-BgqoIrxE.cjs.js.map} +1 -1
- package/dist/chunks/{menu-C97WlcFp.es.js → menu-DpjEZqo0.es.js} +2 -2
- package/dist/chunks/{menu-C97WlcFp.es.js.map → menu-DpjEZqo0.es.js.map} +1 -1
- package/dist/chunks/{modal-page-BQ56WG8Y.es.js → modal-page-7Mp-9hq7.es.js} +3 -3
- package/dist/chunks/{modal-page-BQ56WG8Y.es.js.map → modal-page-7Mp-9hq7.es.js.map} +1 -1
- package/dist/chunks/{modal-page-BQ2BiqpG.cjs.js → modal-page-hqz13F_k.cjs.js} +2 -2
- package/dist/chunks/{modal-page-BQ2BiqpG.cjs.js.map → modal-page-hqz13F_k.cjs.js.map} +1 -1
- package/dist/chunks/{money-input-Blu-9yQ8.es.js → money-input-C0FNshvC.es.js} +5 -5
- package/dist/chunks/{money-input-Blu-9yQ8.es.js.map → money-input-C0FNshvC.es.js.map} +1 -1
- package/dist/chunks/{money-input-DWpvCoS4.cjs.js → money-input-a6xa1Bco.cjs.js} +2 -2
- package/dist/chunks/{money-input-DWpvCoS4.cjs.js.map → money-input-a6xa1Bco.cjs.js.map} +1 -1
- package/dist/chunks/{money-input-field-BdETG0rD.cjs.js → money-input-field-CcZh9XXF.cjs.js} +2 -2
- package/dist/chunks/{money-input-field-BdETG0rD.cjs.js.map → money-input-field-CcZh9XXF.cjs.js.map} +1 -1
- package/dist/chunks/{money-input-field-CiVByz4i.es.js → money-input-field-MSYtNijl.es.js} +3 -3
- package/dist/chunks/{money-input-field-CiVByz4i.es.js.map → money-input-field-MSYtNijl.es.js.map} +1 -1
- package/dist/chunks/{multiline-text-input-BFKeT_Kj.cjs.js → multiline-text-input-Bg-IYvjs.cjs.js} +2 -2
- package/dist/chunks/{multiline-text-input-BFKeT_Kj.cjs.js.map → multiline-text-input-Bg-IYvjs.cjs.js.map} +1 -1
- package/dist/chunks/{multiline-text-input-Ba7_M6Y8.es.js → multiline-text-input-CIvjI0sz.es.js} +3 -3
- package/dist/chunks/{multiline-text-input-Ba7_M6Y8.es.js.map → multiline-text-input-CIvjI0sz.es.js.map} +1 -1
- package/dist/chunks/{multiline-text-input-field-BBmwUJcX.cjs.js → multiline-text-input-field-vHwcYVrc.cjs.js} +2 -2
- package/dist/chunks/{multiline-text-input-field-BBmwUJcX.cjs.js.map → multiline-text-input-field-vHwcYVrc.cjs.js.map} +1 -1
- package/dist/chunks/{multiline-text-input-field-RWUO1iDX.es.js → multiline-text-input-field-z3fcg1SN.es.js} +3 -3
- package/dist/chunks/{multiline-text-input-field-RWUO1iDX.es.js.map → multiline-text-input-field-z3fcg1SN.es.js.map} +1 -1
- package/dist/chunks/{nimbus-provider-rtZ-5qDX.es.js → nimbus-provider-CgqsobhH.es.js} +3 -3
- package/dist/chunks/{nimbus-provider-rtZ-5qDX.es.js.map → nimbus-provider-CgqsobhH.es.js.map} +1 -1
- package/dist/chunks/{nimbus-provider-BZf_34CO.cjs.js → nimbus-provider-Cx8MjMS6.cjs.js} +2 -2
- package/dist/chunks/{nimbus-provider-BZf_34CO.cjs.js.map → nimbus-provider-Cx8MjMS6.cjs.js.map} +1 -1
- package/dist/chunks/{number-input-Di8QMuHo.cjs.js → number-input-B6wg3RZV.cjs.js} +2 -2
- package/dist/chunks/{number-input-Di8QMuHo.cjs.js.map → number-input-B6wg3RZV.cjs.js.map} +1 -1
- package/dist/chunks/{number-input-DnHpuJ_z.es.js → number-input-DP-OVZI2.es.js} +3 -3
- package/dist/chunks/{number-input-DnHpuJ_z.es.js.map → number-input-DP-OVZI2.es.js.map} +1 -1
- package/dist/chunks/{number-input-field-Bqc-1BnB.es.js → number-input-field-CrNsadIg.es.js} +3 -3
- package/dist/chunks/{number-input-field-Bqc-1BnB.es.js.map → number-input-field-CrNsadIg.es.js.map} +1 -1
- package/dist/chunks/{number-input-field-Cr6jXJf9.cjs.js → number-input-field-xM-TUlKb.cjs.js} +2 -2
- package/dist/chunks/{number-input-field-Cr6jXJf9.cjs.js.map → number-input-field-xM-TUlKb.cjs.js.map} +1 -1
- package/dist/chunks/{pagination-wtBWXFE_.cjs.js → pagination-C95pC4Nv.cjs.js} +2 -2
- package/dist/chunks/{pagination-wtBWXFE_.cjs.js.map → pagination-C95pC4Nv.cjs.js.map} +1 -1
- package/dist/chunks/{pagination-Cgf2fhkX.es.js → pagination-Ckqf7naU.es.js} +4 -4
- package/dist/chunks/{pagination-Cgf2fhkX.es.js.map → pagination-Ckqf7naU.es.js.map} +1 -1
- package/dist/chunks/{password-input-MVNOPHFz.es.js → password-input-B7FJ9Ldf.es.js} +3 -3
- package/dist/chunks/{password-input-MVNOPHFz.es.js.map → password-input-B7FJ9Ldf.es.js.map} +1 -1
- package/dist/chunks/{password-input-DOWIpwat.cjs.js → password-input-Ce1_zTrV.cjs.js} +2 -2
- package/dist/chunks/{password-input-DOWIpwat.cjs.js.map → password-input-Ce1_zTrV.cjs.js.map} +1 -1
- package/dist/chunks/{password-input-field-BicUe4m1.cjs.js → password-input-field-C0yxb6e0.cjs.js} +2 -2
- package/dist/chunks/{password-input-field-BicUe4m1.cjs.js.map → password-input-field-C0yxb6e0.cjs.js.map} +1 -1
- package/dist/chunks/{password-input-field-BKy_p1om.es.js → password-input-field-DK9Ojw81.es.js} +3 -3
- package/dist/chunks/{password-input-field-BKy_p1om.es.js.map → password-input-field-DK9Ojw81.es.js.map} +1 -1
- package/dist/chunks/{progress-bar-C3UFAM3Y.es.js → progress-bar-D1aXIOQm.es.js} +2 -2
- package/dist/chunks/{progress-bar-C3UFAM3Y.es.js.map → progress-bar-D1aXIOQm.es.js.map} +1 -1
- package/dist/chunks/{progress-bar-CZbRuitA.cjs.js → progress-bar-KC5B4kbq.cjs.js} +2 -2
- package/dist/chunks/{progress-bar-CZbRuitA.cjs.js.map → progress-bar-KC5B4kbq.cjs.js.map} +1 -1
- package/dist/chunks/{radio-input-BEsM8UMA.es.js → radio-input-4j5fR8Sw.es.js} +3 -3
- package/dist/chunks/{radio-input-BEsM8UMA.es.js.map → radio-input-4j5fR8Sw.es.js.map} +1 -1
- package/dist/chunks/{radio-input-nosa_2NG.cjs.js → radio-input-DNNcbOA1.cjs.js} +2 -2
- package/dist/chunks/{radio-input-nosa_2NG.cjs.js.map → radio-input-DNNcbOA1.cjs.js.map} +1 -1
- package/dist/chunks/{range-calendar-Cc8nVJ9O.es.js → range-calendar-BFVhbf7m.es.js} +4 -4
- package/dist/chunks/{range-calendar-Cc8nVJ9O.es.js.map → range-calendar-BFVhbf7m.es.js.map} +1 -1
- package/dist/chunks/{range-calendar-BvYi1Gty.cjs.js → range-calendar-C1irWg1b.cjs.js} +2 -2
- package/dist/chunks/{range-calendar-BvYi1Gty.cjs.js.map → range-calendar-C1irWg1b.cjs.js.map} +1 -1
- package/dist/chunks/{rich-text-input-CtR9Fk-m.es.js → rich-text-input-BMkdKO7t.es.js} +8 -8
- package/dist/chunks/{rich-text-input-CtR9Fk-m.es.js.map → rich-text-input-BMkdKO7t.es.js.map} +1 -1
- package/dist/chunks/{rich-text-input-CpdpI-1n.cjs.js → rich-text-input-DCIpwH0R.cjs.js} +2 -2
- package/dist/chunks/{rich-text-input-CpdpI-1n.cjs.js.map → rich-text-input-DCIpwH0R.cjs.js.map} +1 -1
- package/dist/chunks/{scoped-search-input-6Xkaptim.cjs.js → scoped-search-input-CTrxup69.cjs.js} +2 -2
- package/dist/chunks/{scoped-search-input-6Xkaptim.cjs.js.map → scoped-search-input-CTrxup69.cjs.js.map} +1 -1
- package/dist/chunks/{scoped-search-input-BakUvuUH.es.js → scoped-search-input-DN0vmuYg.es.js} +5 -5
- package/dist/chunks/{scoped-search-input-BakUvuUH.es.js.map → scoped-search-input-DN0vmuYg.es.js.map} +1 -1
- package/dist/chunks/{search-input-CE4Aadh5.es.js → search-input-CrvckaAj.es.js} +4 -4
- package/dist/chunks/{search-input-CE4Aadh5.es.js.map → search-input-CrvckaAj.es.js.map} +1 -1
- package/dist/chunks/{search-input-ChuhT_Q2.cjs.js → search-input-CxqdrNyB.cjs.js} +2 -2
- package/dist/chunks/{search-input-ChuhT_Q2.cjs.js.map → search-input-CxqdrNyB.cjs.js.map} +1 -1
- package/dist/chunks/{search-input-field-b6Z8_g1D.cjs.js → search-input-field-Bjbtd2Q1.cjs.js} +2 -2
- package/dist/chunks/{search-input-field-b6Z8_g1D.cjs.js.map → search-input-field-Bjbtd2Q1.cjs.js.map} +1 -1
- package/dist/chunks/{search-input-field-C-qLG2Wi.es.js → search-input-field-DotWDBPo.es.js} +3 -3
- package/dist/chunks/{search-input-field-C-qLG2Wi.es.js.map → search-input-field-DotWDBPo.es.js.map} +1 -1
- package/dist/chunks/{select-BS2M-M83.cjs.js → select-Cg88ALta.cjs.js} +2 -2
- package/dist/chunks/{select-BS2M-M83.cjs.js.map → select-Cg88ALta.cjs.js.map} +1 -1
- package/dist/chunks/{select-6_4th9JF.es.js → select-DzHkNbNO.es.js} +4 -4
- package/dist/chunks/{select-6_4th9JF.es.js.map → select-DzHkNbNO.es.js.map} +1 -1
- package/dist/chunks/{separator-CFwc0iIX.cjs.js → separator-BbC96leb.cjs.js} +2 -2
- package/dist/chunks/{separator-CFwc0iIX.cjs.js.map → separator-BbC96leb.cjs.js.map} +1 -1
- package/dist/chunks/{separator-Chb2smWb.es.js → separator-CX6ime34.es.js} +3 -3
- package/dist/chunks/{separator-Chb2smWb.es.js.map → separator-CX6ime34.es.js.map} +1 -1
- package/dist/chunks/{split-button-D16-WBNG.es.js → split-button-BtRQHBQO.es.js} +4 -4
- package/dist/chunks/{split-button-D16-WBNG.es.js.map → split-button-BtRQHBQO.es.js.map} +1 -1
- package/dist/chunks/{split-button-BETviUNO.cjs.js → split-button-C1IoV6IJ.cjs.js} +2 -2
- package/dist/chunks/{split-button-BETviUNO.cjs.js.map → split-button-C1IoV6IJ.cjs.js.map} +1 -1
- package/dist/chunks/{steps-C4XbtR5-.es.js → steps-CKxY0-Pt.es.js} +2 -2
- package/dist/chunks/{steps-C4XbtR5-.es.js.map → steps-CKxY0-Pt.es.js.map} +1 -1
- package/dist/chunks/{steps-CspiMGql.cjs.js → steps-WZE66Acc.cjs.js} +2 -2
- package/dist/chunks/{steps-CspiMGql.cjs.js.map → steps-WZE66Acc.cjs.js.map} +1 -1
- package/dist/chunks/{switch-tSvj0lEc.cjs.js → switch-Cka76JRB.cjs.js} +2 -2
- package/dist/chunks/{switch-tSvj0lEc.cjs.js.map → switch-Cka76JRB.cjs.js.map} +1 -1
- package/dist/chunks/{switch-D0yKNmNs.es.js → switch-wtPNc7un.es.js} +3 -3
- package/dist/chunks/{switch-D0yKNmNs.es.js.map → switch-wtPNc7un.es.js.map} +1 -1
- package/dist/chunks/{table-CuNxXwLS.cjs.js → table-Dyxl5zlP.cjs.js} +2 -2
- package/dist/chunks/{table-CuNxXwLS.cjs.js.map → table-Dyxl5zlP.cjs.js.map} +1 -1
- package/dist/chunks/{table-CN-2YRM6.es.js → table-R4JyeVp2.es.js} +2 -2
- package/dist/chunks/{table-CN-2YRM6.es.js.map → table-R4JyeVp2.es.js.map} +1 -1
- package/dist/chunks/{tabs-B35CbEex.es.js → tabs-o6hCf9Mt.es.js} +2 -2
- package/dist/chunks/{tabs-B35CbEex.es.js.map → tabs-o6hCf9Mt.es.js.map} +1 -1
- package/dist/chunks/{tabs-fsGVXTZ8.cjs.js → tabs-wIeLZz5O.cjs.js} +2 -2
- package/dist/chunks/{tabs-fsGVXTZ8.cjs.js.map → tabs-wIeLZz5O.cjs.js.map} +1 -1
- package/dist/chunks/{tag-group-XK7hABU3.es.js → tag-group-D8hKdjB9.es.js} +2 -2
- package/dist/chunks/{tag-group-XK7hABU3.es.js.map → tag-group-D8hKdjB9.es.js.map} +1 -1
- package/dist/chunks/{tag-group-BzdGORQ_.cjs.js → tag-group-DbvU1O6E.cjs.js} +2 -2
- package/dist/chunks/{tag-group-BzdGORQ_.cjs.js.map → tag-group-DbvU1O6E.cjs.js.map} +1 -1
- package/dist/chunks/{text-input-BF5QoIeL.es.js → text-input-B5ZUhPwE.es.js} +3 -3
- package/dist/chunks/{text-input-BF5QoIeL.es.js.map → text-input-B5ZUhPwE.es.js.map} +1 -1
- package/dist/chunks/{text-input-BRKw_iNd.cjs.js → text-input-Bu83lbHX.cjs.js} +2 -2
- package/dist/chunks/{text-input-BRKw_iNd.cjs.js.map → text-input-Bu83lbHX.cjs.js.map} +1 -1
- package/dist/chunks/{text-input-field-Bmg_yxnr.cjs.js → text-input-field-2kTe0yOk.cjs.js} +2 -2
- package/dist/chunks/{text-input-field-Bmg_yxnr.cjs.js.map → text-input-field-2kTe0yOk.cjs.js.map} +1 -1
- package/dist/chunks/{text-input-field-ClRdX2eJ.es.js → text-input-field-CklMF7YY.es.js} +3 -3
- package/dist/chunks/{text-input-field-ClRdX2eJ.es.js.map → text-input-field-CklMF7YY.es.js.map} +1 -1
- package/dist/chunks/{time-input-DcIp-x_e.cjs.js → time-input-CrVLaoA0.cjs.js} +2 -2
- package/dist/chunks/{time-input-DcIp-x_e.cjs.js.map → time-input-CrVLaoA0.cjs.js.map} +1 -1
- package/dist/chunks/{time-input-DrBMWM3f.es.js → time-input-DVHH_t4-.es.js} +3 -3
- package/dist/chunks/{time-input-DrBMWM3f.es.js.map → time-input-DVHH_t4-.es.js.map} +1 -1
- package/dist/chunks/{toast.outlet-B9Ysg-pz.es.js → toast.outlet-DJcmd-Lx.es.js} +3 -3
- package/dist/chunks/{toast.outlet-B9Ysg-pz.es.js.map → toast.outlet-DJcmd-Lx.es.js.map} +1 -1
- package/dist/chunks/{toast.outlet-BQ_TOYds.cjs.js → toast.outlet-lUNd7uT5.cjs.js} +2 -2
- package/dist/chunks/{toast.outlet-BQ_TOYds.cjs.js.map → toast.outlet-lUNd7uT5.cjs.js.map} +1 -1
- package/dist/chunks/{toggle-button-Cgm2bdJk.es.js → toggle-button-4sok_obo.es.js} +3 -3
- package/dist/chunks/{toggle-button-Cgm2bdJk.es.js.map → toggle-button-4sok_obo.es.js.map} +1 -1
- package/dist/chunks/{toggle-button-C5EmwyUH.cjs.js → toggle-button-CoWhHGMF.cjs.js} +2 -2
- package/dist/chunks/{toggle-button-C5EmwyUH.cjs.js.map → toggle-button-CoWhHGMF.cjs.js.map} +1 -1
- package/dist/chunks/{toolbar-DY_v_dEm.es.js → toolbar-BbbyUoeE.es.js} +3 -3
- package/dist/chunks/{toolbar-DY_v_dEm.es.js.map → toolbar-BbbyUoeE.es.js.map} +1 -1
- package/dist/chunks/{toolbar-CCWWhVjS.cjs.js → toolbar-CFdj7voU.cjs.js} +2 -2
- package/dist/chunks/{toolbar-CCWWhVjS.cjs.js.map → toolbar-CFdj7voU.cjs.js.map} +1 -1
- package/dist/components/accordion.cjs +1 -1
- package/dist/components/accordion.es.js +2 -2
- package/dist/components/alert/alert.recipe.d.ts +1 -1
- package/dist/components/alert.cjs +1 -1
- package/dist/components/alert.es.js +1 -1
- package/dist/components/button.cjs +1 -1
- package/dist/components/button.es.js +1 -1
- package/dist/components/calendar.cjs +1 -1
- package/dist/components/calendar.es.js +1 -1
- package/dist/components/card.cjs +1 -1
- package/dist/components/card.es.js +1 -1
- package/dist/components/checkbox.cjs +1 -1
- package/dist/components/checkbox.es.js +1 -1
- package/dist/components/collapsible-motion.cjs +1 -1
- package/dist/components/collapsible-motion.es.js +1 -1
- package/dist/components/combobox/combobox.slots.d.ts +1 -1
- package/dist/components/combobox.cjs +1 -1
- package/dist/components/combobox.es.js +1 -1
- package/dist/components/components.cjs +1 -1
- package/dist/components/components.es.js +1 -1
- package/dist/components/data-table.cjs +1 -1
- package/dist/components/data-table.es.js +1 -1
- package/dist/components/date-input/date-input.slots.d.ts +1 -1
- package/dist/components/date-input.cjs +1 -1
- package/dist/components/date-input.es.js +1 -1
- package/dist/components/date-picker.cjs +1 -1
- package/dist/components/date-picker.es.js +1 -1
- package/dist/components/date-range-picker/date-range-picker.slots.d.ts +1 -1
- package/dist/components/date-range-picker-field.cjs +1 -1
- package/dist/components/date-range-picker-field.es.js +1 -1
- package/dist/components/date-range-picker.cjs +1 -1
- package/dist/components/date-range-picker.es.js +1 -1
- package/dist/components/default-page.cjs +1 -1
- package/dist/components/default-page.es.js +1 -1
- package/dist/components/dialog.cjs +1 -1
- package/dist/components/dialog.es.js +1 -1
- package/dist/components/draggable-list.cjs +1 -1
- package/dist/components/draggable-list.es.js +1 -1
- package/dist/components/drawer.cjs +1 -1
- package/dist/components/drawer.es.js +1 -1
- package/dist/components/fields.cjs +1 -1
- package/dist/components/fields.es.js +7 -7
- package/dist/components/form-field/form-field.recipe.d.ts +1 -1
- package/dist/components/form-field.cjs +1 -1
- package/dist/components/form-field.es.js +1 -1
- package/dist/components/icon-button.cjs +1 -1
- package/dist/components/icon-button.es.js +1 -1
- package/dist/components/icon-toggle-button.cjs +1 -1
- package/dist/components/icon-toggle-button.es.js +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/list.cjs +1 -1
- package/dist/components/list.es.js +1 -1
- package/dist/components/localized-field/localized-field.recipe.d.ts +1 -1
- package/dist/components/localized-field.cjs +1 -1
- package/dist/components/localized-field.es.js +1 -1
- package/dist/components/modal-page.cjs +1 -1
- package/dist/components/modal-page.es.js +1 -1
- package/dist/components/money-input-field.cjs +1 -1
- package/dist/components/money-input-field.es.js +1 -1
- package/dist/components/money-input.cjs +1 -1
- package/dist/components/money-input.es.js +1 -1
- package/dist/components/multiline-text-input/multiline-text-input.slots.d.ts +3 -3
- package/dist/components/multiline-text-input-field.cjs +1 -1
- package/dist/components/multiline-text-input-field.es.js +1 -1
- package/dist/components/multiline-text-input.cjs +1 -1
- package/dist/components/multiline-text-input.es.js +1 -1
- package/dist/components/nimbus-provider.cjs +1 -1
- package/dist/components/nimbus-provider.es.js +1 -1
- package/dist/components/number-input/number-input.slots.d.ts +6 -6
- package/dist/components/number-input-field.cjs +1 -1
- package/dist/components/number-input-field.es.js +1 -1
- package/dist/components/number-input.cjs +1 -1
- package/dist/components/number-input.es.js +1 -1
- package/dist/components/pagination.cjs +1 -1
- package/dist/components/pagination.es.js +1 -1
- package/dist/components/password-input-field.cjs +1 -1
- package/dist/components/password-input-field.es.js +1 -1
- package/dist/components/password-input.cjs +1 -1
- package/dist/components/password-input.es.js +1 -1
- package/dist/components/patterns.cjs +1 -1
- package/dist/components/patterns.es.js +7 -7
- package/dist/components/progress-bar.cjs +1 -1
- package/dist/components/progress-bar.es.js +1 -1
- package/dist/components/radio-input.cjs +1 -1
- package/dist/components/radio-input.es.js +1 -1
- package/dist/components/range-calendar.cjs +1 -1
- package/dist/components/range-calendar.es.js +1 -1
- package/dist/components/rich-text-input.cjs +1 -1
- package/dist/components/rich-text-input.es.js +1 -1
- package/dist/components/scoped-search-input.cjs +1 -1
- package/dist/components/scoped-search-input.es.js +1 -1
- package/dist/components/scroll-area/index.d.ts +4 -0
- package/dist/components/scroll-area/scroll-area.d.ts +26 -0
- package/dist/components/scroll-area/scroll-area.recipe.d.ts +58 -0
- package/dist/components/scroll-area/scroll-area.types.d.ts +82 -0
- package/dist/components/scroll-area.cjs +2 -0
- package/dist/components/scroll-area.cjs.map +1 -0
- package/dist/components/scroll-area.es.js +8 -0
- package/dist/components/scroll-area.es.js.map +1 -0
- package/dist/components/search-input-field.cjs +1 -1
- package/dist/components/search-input-field.es.js +1 -1
- package/dist/components/search-input.cjs +1 -1
- package/dist/components/search-input.es.js +1 -1
- package/dist/components/select.cjs +1 -1
- package/dist/components/select.es.js +1 -1
- package/dist/components/separator.cjs +1 -1
- package/dist/components/separator.es.js +1 -1
- package/dist/components/split-button.cjs +1 -1
- package/dist/components/split-button.es.js +1 -1
- package/dist/components/steps.cjs +1 -1
- package/dist/components/steps.es.js +1 -1
- package/dist/components/switch.cjs +1 -1
- package/dist/components/switch.es.js +1 -1
- package/dist/components/table.cjs +1 -1
- package/dist/components/table.es.js +1 -1
- package/dist/components/tabs.cjs +1 -1
- package/dist/components/tabs.es.js +1 -1
- package/dist/components/tag-group.cjs +1 -1
- package/dist/components/tag-group.es.js +1 -1
- package/dist/components/text-input-field.cjs +1 -1
- package/dist/components/text-input-field.es.js +1 -1
- package/dist/components/text-input.cjs +1 -1
- package/dist/components/text-input.es.js +1 -1
- package/dist/components/time-input/time-input.slots.d.ts +3 -3
- package/dist/components/time-input.cjs +1 -1
- package/dist/components/time-input.es.js +1 -1
- package/dist/components/toast.cjs +1 -1
- package/dist/components/toast.es.js +1 -1
- package/dist/components/toggle-button.cjs +1 -1
- package/dist/components/toggle-button.es.js +1 -1
- package/dist/components/toolbar.cjs +1 -1
- package/dist/components/toolbar.es.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.es.js +198 -193
- package/dist/index.es.js.map +1 -1
- package/dist/theme/slot-recipes/index.d.ts +120 -66
- package/dist/utils/extract-padding-props.d.ts +8 -0
- package/dist/utils/index.d.ts +1 -0
- package/package.json +6 -6
- package/dist/chunks/index-B5W9PQbq.es.js.map +0 -1
- package/dist/chunks/index-CoMspoGo.cjs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal-page-BQ56WG8Y.es.js","sources":["../../src/components/modal-page/modal-page.slots.tsx","../../src/components/modal-page/components/modal-page.root.tsx","../../src/components/modal-page/intl/en.ts","../../src/components/modal-page/intl/de.ts","../../src/components/modal-page/intl/es.ts","../../src/components/modal-page/intl/fr-FR.ts","../../src/components/modal-page/intl/pt-BR.ts","../../src/components/modal-page/modal-page.messages.ts","../../src/components/modal-page/components/modal-page.top-bar.tsx","../../src/components/modal-page/components/modal-page.header.tsx","../../src/components/modal-page/components/modal-page.title.tsx","../../src/components/modal-page/components/modal-page.subtitle.tsx","../../src/components/modal-page/components/modal-page.actions.tsx","../../src/components/modal-page/components/modal-page.tab-nav.tsx","../../src/components/modal-page/components/modal-page.content.tsx","../../src/components/modal-page/components/modal-page.footer.tsx","../../src/components/modal-page/modal-page.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react/styled-system\";\nimport type { SlotComponent } from \"../../type-utils/slot-types\";\nimport type {\n ModalPageRootSlotProps,\n ModalPageTopBarSlotProps,\n ModalPageHeaderSlotProps,\n ModalPageTitleSlotProps,\n ModalPageSubtitleSlotProps,\n ModalPageActionsSlotProps,\n ModalPageTabNavSlotProps,\n ModalPageContentSlotProps,\n ModalPageFooterSlotProps,\n} from \"./modal-page.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"nimbusModalPage\",\n});\n\nexport const ModalPageRootSlot: SlotComponent<\n HTMLDivElement,\n ModalPageRootSlotProps\n> = withProvider<HTMLDivElement, ModalPageRootSlotProps>(\"div\", \"root\");\n\nexport const ModalPageTopBarSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTopBarSlotProps\n> = withContext<HTMLDivElement, ModalPageTopBarSlotProps>(\"div\", \"topBar\");\n\n// <header> inside a <dialog> does NOT get the `banner` landmark role — it\n// becomes a generic element. This is correct: no landmark pollution inside the\n// dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageHeaderSlot: SlotComponent<\n HTMLElement,\n ModalPageHeaderSlotProps\n> = withContext<HTMLElement, ModalPageHeaderSlotProps>(\"header\", \"header\");\n\nexport const ModalPageTitleSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTitleSlotProps\n> = withContext<HTMLDivElement, ModalPageTitleSlotProps>(\"div\", \"title\");\n\nexport const ModalPageSubtitleSlot: SlotComponent<\n HTMLParagraphElement,\n ModalPageSubtitleSlotProps\n> = withContext<HTMLParagraphElement, ModalPageSubtitleSlotProps>(\n \"p\",\n \"subtitle\"\n);\n\nexport const ModalPageActionsSlot: SlotComponent<\n HTMLDivElement,\n ModalPageActionsSlotProps\n> = withContext<HTMLDivElement, ModalPageActionsSlotProps>(\"div\", \"actions\");\n\nexport const ModalPageTabNavSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTabNavSlotProps\n> = withContext<HTMLDivElement, ModalPageTabNavSlotProps>(\"div\", \"tabNav\");\n\nexport const ModalPageContentSlot: SlotComponent<\n HTMLDivElement,\n ModalPageContentSlotProps\n> = withContext<HTMLDivElement, ModalPageContentSlotProps>(\"div\", \"content\");\n\n// <footer> inside a <dialog> does NOT get the `contentinfo` landmark role —\n// it becomes a generic element. This is correct: no landmark pollution inside\n// the dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageFooterSlot: SlotComponent<\n HTMLElement,\n ModalPageFooterSlotProps\n> = withContext<HTMLElement, ModalPageFooterSlotProps>(\"footer\", \"footer\");\n","import { useCallback } from \"react\";\nimport { Drawer } from \"../../drawer/drawer\";\nimport { ModalPageRootSlot } from \"../modal-page.slots\";\nimport type { ModalPageRootProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Root — fullscreen modal page overlay.\n *\n * Renders a right-side Drawer with near-full-width, full-height layout.\n * Provides the slot recipe context for all ModalPage sub-components via a\n * CSS grid container (rows: topBar / header / content / footer).\n *\n * Style props (e.g. `width`) are forwarded to the Drawer.Content panel.\n * The default width is near-fullscreen; consumers can pass a custom `width`\n * to override.\n *\n * Dismissal: backdrop click is disabled (no accidental close on a full-page\n * form). Escape key remains active (isKeyboardDismissDisabled defaults to\n * false), matching standard browser/OS modal behaviour and WCAG 2.1 SC 2.1.2.\n *\n * Exit animations are handled automatically: the Drawer recipe defines\n * [data-exiting] CSS animations (fade-out on overlay, slide-to-right-full on\n * modal), and React Aria's ModalOverlay waits for animationend before\n * unmounting — no manual delay needed.\n */\n// Note: Root wraps a Drawer instead of rendering a slot directly, so the\n// standard useSlotRecipe / splitVariantProps / extractStyleProps pattern does\n// not apply here. Recipe context is provided by ModalPageRootSlot (withProvider).\nexport const ModalPageRoot = ({\n ref,\n isOpen,\n onClose,\n children,\n width = \"calc(100vw - {spacing.1200})\",\n}: ModalPageRootProps) => {\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onClose();\n }\n },\n [onClose]\n );\n\n return (\n <Drawer.Root\n isOpen={isOpen}\n onOpenChange={handleOpenChange}\n placement=\"right\"\n // Disable backdrop-click dismissal — fullscreen modal pages must not\n // close on accidental outside click. Escape key remains active.\n isDismissable={false}\n >\n <Drawer.Content width={width}>\n <ModalPageRootSlot ref={ref}>{children}</ModalPageRootSlot>\n </Drawer.Content>\n </Drawer.Root>\n );\n};\n\nModalPageRoot.displayName = \"ModalPage.Root\";\n","/**\n * Pre-compiled en messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled de messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled es messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled fr-FR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled pt-BR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled localized messages for ModalPage component\n *\n * Generated by scripts/generate-dictionaries.ts\n * DO NOT EDIT MANUALLY\n *\n * @see https://react-spectrum.adobe.com/react-aria/internationalization.html\n */\n\nimport {\n type LocalizedString,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { normalizeMessages } from \"../../utils/normalize-messages\";\n\n// Pre-compiled message functions\nimport modalPageMessages_en from \"./intl/en\";\nimport modalPageMessages_de from \"./intl/de\";\nimport modalPageMessages_es from \"./intl/es\";\nimport modalPageMessages_fr from \"./intl/fr-FR\";\nimport modalPageMessages_pt from \"./intl/pt-BR\";\n\n// Raw LocalizedStrings object for use with useLocalizedStringFormatter hook\nexport const modalPageMessagesStrings: LocalizedStrings<\n string,\n LocalizedString\n> = {\n en: normalizeMessages(modalPageMessages_en),\n de: normalizeMessages(modalPageMessages_de),\n es: normalizeMessages(modalPageMessages_es),\n \"fr-FR\": normalizeMessages(modalPageMessages_fr),\n \"pt-BR\": normalizeMessages(modalPageMessages_pt),\n} as LocalizedStrings<string, LocalizedString>;\n\n/**\n * Available message keys for ModalPage component\n */\nexport type ModalPageMessageKey = \"backButton\";\n","import { ArrowBack } from \"@commercetools/nimbus-icons\";\nimport { Text } from \"../../text/text\";\nimport { ModalPageTopBarSlot } from \"../modal-page.slots\";\nimport type { ModalPageTopBarProps } from \"../modal-page.types\";\nimport { IconButton } from \"../../icon-button/icon-button\";\nimport { useLocalizedStringFormatter } from \"@/hooks\";\nimport { modalPageMessagesStrings } from \"../modal-page.messages\";\n\n/**\n * ModalPage.TopBar — breadcrumb navigation row.\n *\n * Renders a back button (uses React Aria `slot=\"close\"` to hook into dialog close)\n * followed by the current path label.\n *\n * @supportsStyleProps\n */\nexport const ModalPageTopBar = ({\n ref,\n previousPathLabel,\n currentPathLabel,\n ...props\n}: ModalPageTopBarProps) => {\n const msg = useLocalizedStringFormatter(modalPageMessagesStrings);\n\n return (\n <ModalPageTopBarSlot ref={ref} {...props}>\n <IconButton\n slot=\"close\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label={msg.format(\"backButton\", { previousPathLabel })}\n autoFocus\n >\n <ArrowBack />\n </IconButton>\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n {previousPathLabel}\n </Text>\n {/* Separator is decorative — hidden from screen readers */}\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n /\n </Text>\n <Text textStyle=\"sm\" fontWeight=\"medium\" aria-current=\"page\">\n {currentPathLabel}\n </Text>\n </ModalPageTopBarSlot>\n );\n};\n\nModalPageTopBar.displayName = \"ModalPage.TopBar\";\n","import { ModalPageHeaderSlot } from \"../modal-page.slots\";\nimport type { ModalPageHeaderProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Header — header section, 2-column grid (title | actions).\n *\n * @supportsStyleProps\n */\nexport const ModalPageHeader = ({\n ref,\n children,\n ...props\n}: ModalPageHeaderProps) => {\n return (\n <ModalPageHeaderSlot ref={ref} {...props}>\n {children}\n </ModalPageHeaderSlot>\n );\n};\n\nModalPageHeader.displayName = \"ModalPage.Header\";\n","import { ModalPageTitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageTitleProps } from \"../modal-page.types\";\nimport { Heading } from \"../../heading/heading\";\n\n/**\n * ModalPage.Title — the page title heading. Renders as an `h2` element.\n *\n * Wraps the React Aria `Heading` component with `slot=\"title\"` so the\n * parent Dialog automatically uses it as the accessible name (aria-labelledby).\n *\n * @supportsStyleProps\n */\nexport const ModalPageTitle = ({\n ref,\n children,\n ...props\n}: ModalPageTitleProps) => {\n return (\n <ModalPageTitleSlot ref={ref} {...props}>\n <Heading slot=\"title\" as=\"h2\">\n {children}\n </Heading>\n </ModalPageTitleSlot>\n );\n};\n\nModalPageTitle.displayName = \"ModalPage.Title\";\n","import { ModalPageSubtitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageSubtitleProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Subtitle — optional subtitle text below the page title.\n *\n * @supportsStyleProps\n */\nexport const ModalPageSubtitle = ({\n ref,\n children,\n ...props\n}: ModalPageSubtitleProps) => {\n return (\n <ModalPageSubtitleSlot ref={ref} slot=\"description\" {...props}>\n {children}\n </ModalPageSubtitleSlot>\n );\n};\n\nModalPageSubtitle.displayName = \"ModalPage.Subtitle\";\n","import { ModalPageActionsSlot } from \"../modal-page.slots\";\nimport type { ModalPageActionsProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Actions — action buttons container, aligned to the right of the header.\n *\n * @supportsStyleProps\n */\nexport const ModalPageActions = ({\n ref,\n children,\n ...props\n}: ModalPageActionsProps) => {\n return (\n <ModalPageActionsSlot ref={ref} {...props}>\n {children}\n </ModalPageActionsSlot>\n );\n};\n\nModalPageActions.displayName = \"ModalPage.Actions\";\n","import { ModalPageTabNavSlot } from \"../modal-page.slots\";\nimport type { ModalPageTabNavProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.TabNav — layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n *\n * Place inside `ModalPage.Header` for route-based page navigation.\n * Wrap a `TabNav.Root` inside this component.\n *\n * @supportsStyleProps\n *\n * @example\n * ```tsx\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * ```\n */\nexport const ModalPageTabNav = ({\n ref,\n children,\n ...props\n}: ModalPageTabNavProps) => {\n return (\n <ModalPageTabNavSlot ref={ref} {...props}>\n {children}\n </ModalPageTabNavSlot>\n );\n};\n\nModalPageTabNav.displayName = \"ModalPage.TabNav\";\n","import { ModalPageContentSlot } from \"../modal-page.slots\";\nimport type { ModalPageContentProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Content — scrollable content area.\n *\n * @supportsStyleProps\n */\nexport const ModalPageContent = ({\n ref,\n children,\n ...props\n}: ModalPageContentProps) => {\n return (\n <ModalPageContentSlot ref={ref} {...props}>\n {children}\n </ModalPageContentSlot>\n );\n};\n\nModalPageContent.displayName = \"ModalPage.Content\";\n","import { ModalPageFooterSlot } from \"../modal-page.slots\";\nimport type { ModalPageFooterProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Footer — footer slot, typically containing action buttons.\n *\n * @supportsStyleProps\n */\nexport const ModalPageFooter = ({\n ref,\n children,\n ...props\n}: ModalPageFooterProps) => {\n return (\n <ModalPageFooterSlot ref={ref} {...props}>\n {children}\n </ModalPageFooterSlot>\n );\n};\n\nModalPageFooter.displayName = \"ModalPage.Footer\";\n","import {\n ModalPageRoot,\n ModalPageTopBar,\n ModalPageHeader,\n ModalPageTitle,\n ModalPageSubtitle,\n ModalPageActions,\n ModalPageTabNav,\n ModalPageContent,\n ModalPageFooter,\n} from \"./components\";\n\n/**\n * ModalPage\n * ============================================================\n * A fullscreen modal overlay used for form, info, and tabular page patterns.\n * Wraps Drawer internally with right-side placement and near-full-width layout.\n *\n * Used for the ~29 modal page patterns in Merchant Center (form/info/tabular).\n *\n * @see {@link https://nimbus-documentation.vercel.app/components/layout/modal-page}\n *\n * @example\n * ```tsx\n * const [isOpen, setIsOpen] = useState(false);\n *\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Subtitle>Update the product details</ModalPage.Subtitle>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * <ModalPage.Content>\n * <p>Form content here</p>\n * </ModalPage.Content>\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button colorPalette=\"primary\" variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * </ModalPage.Root>\n * ```\n */\nexport const ModalPage = {\n /**\n * # ModalPage.Root\n *\n * The root container. Renders a fullscreen right-side Drawer.\n * Controlled-only: requires `isOpen` and `onClose`.\n *\n * @example\n * ```tsx\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar previousPathLabel=\"Products\" currentPathLabel=\"Edit Product\" />\n * <ModalPage.Header>...</ModalPage.Header>\n * <ModalPage.Content>...</ModalPage.Content>\n * </ModalPage.Root>\n * ```\n */\n Root: ModalPageRoot,\n /**\n * # ModalPage.TopBar\n *\n * Breadcrumb navigation row with a back button and current path label.\n *\n * @example\n * ```tsx\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * ```\n */\n TopBar: ModalPageTopBar,\n /**\n * # ModalPage.Header\n *\n * Header section with a 2-column grid layout for Title and Actions.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * ```\n */\n Header: ModalPageHeader,\n /**\n * # ModalPage.Title\n *\n * The main page title heading. Renders as an `h2` element.\n *\n * @example\n * ```tsx\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * ```\n */\n Title: ModalPageTitle,\n /**\n * # ModalPage.Subtitle\n *\n * An optional subtitle displayed below the title.\n *\n * @example\n * ```tsx\n * <ModalPage.Subtitle>Fill in the product details</ModalPage.Subtitle>\n * ```\n */\n Subtitle: ModalPageSubtitle,\n /**\n * # ModalPage.Actions\n *\n * Container for action buttons in the header.\n *\n * @example\n * ```tsx\n * <ModalPage.Actions>\n * <Button variant=\"outline\">Preview</Button>\n * </ModalPage.Actions>\n * ```\n */\n Actions: ModalPageActions,\n /**\n * # ModalPage.TabNav\n *\n * Layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n * Place inside `ModalPage.Header`.\n *\n * Wrap a `TabNav.Root` inside, or use `as={TabNav.Root}` for a flatter DOM.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Order Details</ModalPage.Title>\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * </ModalPage.Header>\n * ```\n */\n TabNav: ModalPageTabNav,\n /**\n * # ModalPage.Content\n *\n * Scrollable content area.\n *\n * @example\n * ```tsx\n * <ModalPage.Content>\n * <FormField.Root>...</FormField.Root>\n * </ModalPage.Content>\n * ```\n */\n Content: ModalPageContent,\n /**\n * # ModalPage.Footer\n *\n * Footer slot for action buttons (save/cancel).\n *\n * @example\n * ```tsx\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * ```\n */\n Footer: ModalPageFooter,\n};\n\n// Internal named exports for react-docgen\nexport {\n ModalPageRoot as _ModalPageRoot,\n ModalPageTopBar as _ModalPageTopBar,\n ModalPageHeader as _ModalPageHeader,\n ModalPageTitle as _ModalPageTitle,\n ModalPageSubtitle as _ModalPageSubtitle,\n ModalPageActions as _ModalPageActions,\n ModalPageTabNav as _ModalPageTabNav,\n ModalPageContent as _ModalPageContent,\n ModalPageFooter as _ModalPageFooter,\n};\n"],"names":["withProvider","withContext","createSlotRecipeContext","ModalPageRootSlot","ModalPageTopBarSlot","ModalPageHeaderSlot","ModalPageTitleSlot","ModalPageSubtitleSlot","ModalPageActionsSlot","ModalPageTabNavSlot","ModalPageContentSlot","ModalPageFooterSlot","ModalPageRoot","ref","isOpen","onClose","children","width","handleOpenChange","useCallback","open","jsx","Drawer","modalPageMessages_en","args","modalPageMessages_de","modalPageMessages_es","modalPageMessages_fr","modalPageMessages_pt","modalPageMessagesStrings","normalizeMessages","ModalPageTopBar","previousPathLabel","currentPathLabel","props","msg","useLocalizedStringFormatter","jsxs","IconButton","ArrowBack","Text","ModalPageHeader","ModalPageTitle","Heading","ModalPageSubtitle","ModalPageActions","ModalPageTabNav","ModalPageContent","ModalPageFooter","ModalPage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modal-page-7Mp-9hq7.es.js","sources":["../../src/components/modal-page/modal-page.slots.tsx","../../src/components/modal-page/components/modal-page.root.tsx","../../src/components/modal-page/intl/en.ts","../../src/components/modal-page/intl/de.ts","../../src/components/modal-page/intl/es.ts","../../src/components/modal-page/intl/fr-FR.ts","../../src/components/modal-page/intl/pt-BR.ts","../../src/components/modal-page/modal-page.messages.ts","../../src/components/modal-page/components/modal-page.top-bar.tsx","../../src/components/modal-page/components/modal-page.header.tsx","../../src/components/modal-page/components/modal-page.title.tsx","../../src/components/modal-page/components/modal-page.subtitle.tsx","../../src/components/modal-page/components/modal-page.actions.tsx","../../src/components/modal-page/components/modal-page.tab-nav.tsx","../../src/components/modal-page/components/modal-page.content.tsx","../../src/components/modal-page/components/modal-page.footer.tsx","../../src/components/modal-page/modal-page.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react/styled-system\";\nimport type { SlotComponent } from \"../../type-utils/slot-types\";\nimport type {\n ModalPageRootSlotProps,\n ModalPageTopBarSlotProps,\n ModalPageHeaderSlotProps,\n ModalPageTitleSlotProps,\n ModalPageSubtitleSlotProps,\n ModalPageActionsSlotProps,\n ModalPageTabNavSlotProps,\n ModalPageContentSlotProps,\n ModalPageFooterSlotProps,\n} from \"./modal-page.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"nimbusModalPage\",\n});\n\nexport const ModalPageRootSlot: SlotComponent<\n HTMLDivElement,\n ModalPageRootSlotProps\n> = withProvider<HTMLDivElement, ModalPageRootSlotProps>(\"div\", \"root\");\n\nexport const ModalPageTopBarSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTopBarSlotProps\n> = withContext<HTMLDivElement, ModalPageTopBarSlotProps>(\"div\", \"topBar\");\n\n// <header> inside a <dialog> does NOT get the `banner` landmark role — it\n// becomes a generic element. This is correct: no landmark pollution inside the\n// dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageHeaderSlot: SlotComponent<\n HTMLElement,\n ModalPageHeaderSlotProps\n> = withContext<HTMLElement, ModalPageHeaderSlotProps>(\"header\", \"header\");\n\nexport const ModalPageTitleSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTitleSlotProps\n> = withContext<HTMLDivElement, ModalPageTitleSlotProps>(\"div\", \"title\");\n\nexport const ModalPageSubtitleSlot: SlotComponent<\n HTMLParagraphElement,\n ModalPageSubtitleSlotProps\n> = withContext<HTMLParagraphElement, ModalPageSubtitleSlotProps>(\n \"p\",\n \"subtitle\"\n);\n\nexport const ModalPageActionsSlot: SlotComponent<\n HTMLDivElement,\n ModalPageActionsSlotProps\n> = withContext<HTMLDivElement, ModalPageActionsSlotProps>(\"div\", \"actions\");\n\nexport const ModalPageTabNavSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTabNavSlotProps\n> = withContext<HTMLDivElement, ModalPageTabNavSlotProps>(\"div\", \"tabNav\");\n\nexport const ModalPageContentSlot: SlotComponent<\n HTMLDivElement,\n ModalPageContentSlotProps\n> = withContext<HTMLDivElement, ModalPageContentSlotProps>(\"div\", \"content\");\n\n// <footer> inside a <dialog> does NOT get the `contentinfo` landmark role —\n// it becomes a generic element. This is correct: no landmark pollution inside\n// the dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageFooterSlot: SlotComponent<\n HTMLElement,\n ModalPageFooterSlotProps\n> = withContext<HTMLElement, ModalPageFooterSlotProps>(\"footer\", \"footer\");\n","import { useCallback } from \"react\";\nimport { Drawer } from \"../../drawer/drawer\";\nimport { ModalPageRootSlot } from \"../modal-page.slots\";\nimport type { ModalPageRootProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Root — fullscreen modal page overlay.\n *\n * Renders a right-side Drawer with near-full-width, full-height layout.\n * Provides the slot recipe context for all ModalPage sub-components via a\n * CSS grid container (rows: topBar / header / content / footer).\n *\n * Style props (e.g. `width`) are forwarded to the Drawer.Content panel.\n * The default width is near-fullscreen; consumers can pass a custom `width`\n * to override.\n *\n * Dismissal: backdrop click is disabled (no accidental close on a full-page\n * form). Escape key remains active (isKeyboardDismissDisabled defaults to\n * false), matching standard browser/OS modal behaviour and WCAG 2.1 SC 2.1.2.\n *\n * Exit animations are handled automatically: the Drawer recipe defines\n * [data-exiting] CSS animations (fade-out on overlay, slide-to-right-full on\n * modal), and React Aria's ModalOverlay waits for animationend before\n * unmounting — no manual delay needed.\n */\n// Note: Root wraps a Drawer instead of rendering a slot directly, so the\n// standard useSlotRecipe / splitVariantProps / extractStyleProps pattern does\n// not apply here. Recipe context is provided by ModalPageRootSlot (withProvider).\nexport const ModalPageRoot = ({\n ref,\n isOpen,\n onClose,\n children,\n width = \"calc(100vw - {spacing.1200})\",\n}: ModalPageRootProps) => {\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onClose();\n }\n },\n [onClose]\n );\n\n return (\n <Drawer.Root\n isOpen={isOpen}\n onOpenChange={handleOpenChange}\n placement=\"right\"\n // Disable backdrop-click dismissal — fullscreen modal pages must not\n // close on accidental outside click. Escape key remains active.\n isDismissable={false}\n >\n <Drawer.Content width={width}>\n <ModalPageRootSlot ref={ref}>{children}</ModalPageRootSlot>\n </Drawer.Content>\n </Drawer.Root>\n );\n};\n\nModalPageRoot.displayName = \"ModalPage.Root\";\n","/**\n * Pre-compiled en messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled de messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled es messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled fr-FR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled pt-BR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled localized messages for ModalPage component\n *\n * Generated by scripts/generate-dictionaries.ts\n * DO NOT EDIT MANUALLY\n *\n * @see https://react-spectrum.adobe.com/react-aria/internationalization.html\n */\n\nimport {\n type LocalizedString,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { normalizeMessages } from \"../../utils/normalize-messages\";\n\n// Pre-compiled message functions\nimport modalPageMessages_en from \"./intl/en\";\nimport modalPageMessages_de from \"./intl/de\";\nimport modalPageMessages_es from \"./intl/es\";\nimport modalPageMessages_fr from \"./intl/fr-FR\";\nimport modalPageMessages_pt from \"./intl/pt-BR\";\n\n// Raw LocalizedStrings object for use with useLocalizedStringFormatter hook\nexport const modalPageMessagesStrings: LocalizedStrings<\n string,\n LocalizedString\n> = {\n en: normalizeMessages(modalPageMessages_en),\n de: normalizeMessages(modalPageMessages_de),\n es: normalizeMessages(modalPageMessages_es),\n \"fr-FR\": normalizeMessages(modalPageMessages_fr),\n \"pt-BR\": normalizeMessages(modalPageMessages_pt),\n} as LocalizedStrings<string, LocalizedString>;\n\n/**\n * Available message keys for ModalPage component\n */\nexport type ModalPageMessageKey = \"backButton\";\n","import { ArrowBack } from \"@commercetools/nimbus-icons\";\nimport { Text } from \"../../text/text\";\nimport { ModalPageTopBarSlot } from \"../modal-page.slots\";\nimport type { ModalPageTopBarProps } from \"../modal-page.types\";\nimport { IconButton } from \"../../icon-button/icon-button\";\nimport { useLocalizedStringFormatter } from \"@/hooks\";\nimport { modalPageMessagesStrings } from \"../modal-page.messages\";\n\n/**\n * ModalPage.TopBar — breadcrumb navigation row.\n *\n * Renders a back button (uses React Aria `slot=\"close\"` to hook into dialog close)\n * followed by the current path label.\n *\n * @supportsStyleProps\n */\nexport const ModalPageTopBar = ({\n ref,\n previousPathLabel,\n currentPathLabel,\n ...props\n}: ModalPageTopBarProps) => {\n const msg = useLocalizedStringFormatter(modalPageMessagesStrings);\n\n return (\n <ModalPageTopBarSlot ref={ref} {...props}>\n <IconButton\n slot=\"close\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label={msg.format(\"backButton\", { previousPathLabel })}\n autoFocus\n >\n <ArrowBack />\n </IconButton>\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n {previousPathLabel}\n </Text>\n {/* Separator is decorative — hidden from screen readers */}\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n /\n </Text>\n <Text textStyle=\"sm\" fontWeight=\"medium\" aria-current=\"page\">\n {currentPathLabel}\n </Text>\n </ModalPageTopBarSlot>\n );\n};\n\nModalPageTopBar.displayName = \"ModalPage.TopBar\";\n","import { ModalPageHeaderSlot } from \"../modal-page.slots\";\nimport type { ModalPageHeaderProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Header — header section, 2-column grid (title | actions).\n *\n * @supportsStyleProps\n */\nexport const ModalPageHeader = ({\n ref,\n children,\n ...props\n}: ModalPageHeaderProps) => {\n return (\n <ModalPageHeaderSlot ref={ref} {...props}>\n {children}\n </ModalPageHeaderSlot>\n );\n};\n\nModalPageHeader.displayName = \"ModalPage.Header\";\n","import { ModalPageTitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageTitleProps } from \"../modal-page.types\";\nimport { Heading } from \"../../heading/heading\";\n\n/**\n * ModalPage.Title — the page title heading. Renders as an `h2` element.\n *\n * Wraps the React Aria `Heading` component with `slot=\"title\"` so the\n * parent Dialog automatically uses it as the accessible name (aria-labelledby).\n *\n * @supportsStyleProps\n */\nexport const ModalPageTitle = ({\n ref,\n children,\n ...props\n}: ModalPageTitleProps) => {\n return (\n <ModalPageTitleSlot ref={ref} {...props}>\n <Heading slot=\"title\" as=\"h2\">\n {children}\n </Heading>\n </ModalPageTitleSlot>\n );\n};\n\nModalPageTitle.displayName = \"ModalPage.Title\";\n","import { ModalPageSubtitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageSubtitleProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Subtitle — optional subtitle text below the page title.\n *\n * @supportsStyleProps\n */\nexport const ModalPageSubtitle = ({\n ref,\n children,\n ...props\n}: ModalPageSubtitleProps) => {\n return (\n <ModalPageSubtitleSlot ref={ref} slot=\"description\" {...props}>\n {children}\n </ModalPageSubtitleSlot>\n );\n};\n\nModalPageSubtitle.displayName = \"ModalPage.Subtitle\";\n","import { ModalPageActionsSlot } from \"../modal-page.slots\";\nimport type { ModalPageActionsProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Actions — action buttons container, aligned to the right of the header.\n *\n * @supportsStyleProps\n */\nexport const ModalPageActions = ({\n ref,\n children,\n ...props\n}: ModalPageActionsProps) => {\n return (\n <ModalPageActionsSlot ref={ref} {...props}>\n {children}\n </ModalPageActionsSlot>\n );\n};\n\nModalPageActions.displayName = \"ModalPage.Actions\";\n","import { ModalPageTabNavSlot } from \"../modal-page.slots\";\nimport type { ModalPageTabNavProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.TabNav — layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n *\n * Place inside `ModalPage.Header` for route-based page navigation.\n * Wrap a `TabNav.Root` inside this component.\n *\n * @supportsStyleProps\n *\n * @example\n * ```tsx\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * ```\n */\nexport const ModalPageTabNav = ({\n ref,\n children,\n ...props\n}: ModalPageTabNavProps) => {\n return (\n <ModalPageTabNavSlot ref={ref} {...props}>\n {children}\n </ModalPageTabNavSlot>\n );\n};\n\nModalPageTabNav.displayName = \"ModalPage.TabNav\";\n","import { ModalPageContentSlot } from \"../modal-page.slots\";\nimport type { ModalPageContentProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Content — scrollable content area.\n *\n * @supportsStyleProps\n */\nexport const ModalPageContent = ({\n ref,\n children,\n ...props\n}: ModalPageContentProps) => {\n return (\n <ModalPageContentSlot ref={ref} {...props}>\n {children}\n </ModalPageContentSlot>\n );\n};\n\nModalPageContent.displayName = \"ModalPage.Content\";\n","import { ModalPageFooterSlot } from \"../modal-page.slots\";\nimport type { ModalPageFooterProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Footer — footer slot, typically containing action buttons.\n *\n * @supportsStyleProps\n */\nexport const ModalPageFooter = ({\n ref,\n children,\n ...props\n}: ModalPageFooterProps) => {\n return (\n <ModalPageFooterSlot ref={ref} {...props}>\n {children}\n </ModalPageFooterSlot>\n );\n};\n\nModalPageFooter.displayName = \"ModalPage.Footer\";\n","import {\n ModalPageRoot,\n ModalPageTopBar,\n ModalPageHeader,\n ModalPageTitle,\n ModalPageSubtitle,\n ModalPageActions,\n ModalPageTabNav,\n ModalPageContent,\n ModalPageFooter,\n} from \"./components\";\n\n/**\n * ModalPage\n * ============================================================\n * A fullscreen modal overlay used for form, info, and tabular page patterns.\n * Wraps Drawer internally with right-side placement and near-full-width layout.\n *\n * Used for the ~29 modal page patterns in Merchant Center (form/info/tabular).\n *\n * @see {@link https://nimbus-documentation.vercel.app/components/layout/modal-page}\n *\n * @example\n * ```tsx\n * const [isOpen, setIsOpen] = useState(false);\n *\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Subtitle>Update the product details</ModalPage.Subtitle>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * <ModalPage.Content>\n * <p>Form content here</p>\n * </ModalPage.Content>\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button colorPalette=\"primary\" variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * </ModalPage.Root>\n * ```\n */\nexport const ModalPage = {\n /**\n * # ModalPage.Root\n *\n * The root container. Renders a fullscreen right-side Drawer.\n * Controlled-only: requires `isOpen` and `onClose`.\n *\n * @example\n * ```tsx\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar previousPathLabel=\"Products\" currentPathLabel=\"Edit Product\" />\n * <ModalPage.Header>...</ModalPage.Header>\n * <ModalPage.Content>...</ModalPage.Content>\n * </ModalPage.Root>\n * ```\n */\n Root: ModalPageRoot,\n /**\n * # ModalPage.TopBar\n *\n * Breadcrumb navigation row with a back button and current path label.\n *\n * @example\n * ```tsx\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * ```\n */\n TopBar: ModalPageTopBar,\n /**\n * # ModalPage.Header\n *\n * Header section with a 2-column grid layout for Title and Actions.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * ```\n */\n Header: ModalPageHeader,\n /**\n * # ModalPage.Title\n *\n * The main page title heading. Renders as an `h2` element.\n *\n * @example\n * ```tsx\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * ```\n */\n Title: ModalPageTitle,\n /**\n * # ModalPage.Subtitle\n *\n * An optional subtitle displayed below the title.\n *\n * @example\n * ```tsx\n * <ModalPage.Subtitle>Fill in the product details</ModalPage.Subtitle>\n * ```\n */\n Subtitle: ModalPageSubtitle,\n /**\n * # ModalPage.Actions\n *\n * Container for action buttons in the header.\n *\n * @example\n * ```tsx\n * <ModalPage.Actions>\n * <Button variant=\"outline\">Preview</Button>\n * </ModalPage.Actions>\n * ```\n */\n Actions: ModalPageActions,\n /**\n * # ModalPage.TabNav\n *\n * Layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n * Place inside `ModalPage.Header`.\n *\n * Wrap a `TabNav.Root` inside, or use `as={TabNav.Root}` for a flatter DOM.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Order Details</ModalPage.Title>\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * </ModalPage.Header>\n * ```\n */\n TabNav: ModalPageTabNav,\n /**\n * # ModalPage.Content\n *\n * Scrollable content area.\n *\n * @example\n * ```tsx\n * <ModalPage.Content>\n * <FormField.Root>...</FormField.Root>\n * </ModalPage.Content>\n * ```\n */\n Content: ModalPageContent,\n /**\n * # ModalPage.Footer\n *\n * Footer slot for action buttons (save/cancel).\n *\n * @example\n * ```tsx\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * ```\n */\n Footer: ModalPageFooter,\n};\n\n// Internal named exports for react-docgen\nexport {\n ModalPageRoot as _ModalPageRoot,\n ModalPageTopBar as _ModalPageTopBar,\n ModalPageHeader as _ModalPageHeader,\n ModalPageTitle as _ModalPageTitle,\n ModalPageSubtitle as _ModalPageSubtitle,\n ModalPageActions as _ModalPageActions,\n ModalPageTabNav as _ModalPageTabNav,\n ModalPageContent as _ModalPageContent,\n ModalPageFooter as _ModalPageFooter,\n};\n"],"names":["withProvider","withContext","createSlotRecipeContext","ModalPageRootSlot","ModalPageTopBarSlot","ModalPageHeaderSlot","ModalPageTitleSlot","ModalPageSubtitleSlot","ModalPageActionsSlot","ModalPageTabNavSlot","ModalPageContentSlot","ModalPageFooterSlot","ModalPageRoot","ref","isOpen","onClose","children","width","handleOpenChange","useCallback","open","jsx","Drawer","modalPageMessages_en","args","modalPageMessages_de","modalPageMessages_es","modalPageMessages_fr","modalPageMessages_pt","modalPageMessagesStrings","normalizeMessages","ModalPageTopBar","previousPathLabel","currentPathLabel","props","msg","useLocalizedStringFormatter","jsxs","IconButton","ArrowBack","Text","ModalPageHeader","ModalPageTitle","Heading","ModalPageSubtitle","ModalPageActions","ModalPageTabNav","ModalPageContent","ModalPageFooter","ModalPage"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const t=require("react/jsx-runtime"),v=require("@chakra-ui/react/styled-system"),j=require("./heading-C9xy87Zc.cjs.js"),T=require("@commercetools/nimbus-icons"),i=require("./text-D73rGEjF.cjs.js"),B=require("./icon-button-
|
|
2
|
-
//# sourceMappingURL=modal-page-
|
|
1
|
+
"use strict";const t=require("react/jsx-runtime"),v=require("@chakra-ui/react/styled-system"),j=require("./heading-C9xy87Zc.cjs.js"),T=require("@commercetools/nimbus-icons"),i=require("./text-D73rGEjF.cjs.js"),B=require("./icon-button-BwxwVPZQ.cjs.js"),n=require("./normalize-messages-Dogs8lYA.cjs.js"),N=require("react"),x=require("./drawer-C6SlH_kv.cjs.js"),{withProvider:y,withContext:s}=v.createSlotRecipeContext({key:"nimbusModalPage"}),k=y("div","root"),C=s("div","topBar"),R=s("header","header"),q=s("div","title"),f=s("p","subtitle"),z=s("div","actions"),F=s("div","tabNav"),w=s("div","content"),$=s("footer","footer"),d=({ref:e,isOpen:a,onClose:o,children:l,width:r="calc(100vw - {spacing.1200})"})=>{const h=N.useCallback(S=>{S||o()},[o]);return t.jsx(x.Drawer.Root,{isOpen:a,onOpenChange:h,placement:"right",isDismissable:!1,children:t.jsx(x.Drawer.Content,{width:r,children:t.jsx(k,{ref:e,children:l})})})};d.displayName="ModalPage.Root";const A={backButton:e=>`Go back to ${e.previousPathLabel}`},H={backButton:e=>`Go back to ${e.previousPathLabel}`},G={backButton:e=>`Go back to ${e.previousPathLabel}`},L={backButton:e=>`Go back to ${e.previousPathLabel}`},_={backButton:e=>`Go back to ${e.previousPathLabel}`},D={en:n.normalizeMessages(A),de:n.normalizeMessages(H),es:n.normalizeMessages(G),"fr-FR":n.normalizeMessages(L),"pt-BR":n.normalizeMessages(_)},c=({ref:e,previousPathLabel:a,currentPathLabel:o,...l})=>{const r=n.useLocalizedStringFormatter(D);return t.jsxs(C,{ref:e,...l,children:[t.jsx(B.IconButton,{slot:"close",size:"xs",variant:"ghost","aria-label":r.format("backButton",{previousPathLabel:a}),autoFocus:!0,children:t.jsx(T.ArrowBack,{})}),t.jsx(i.Text,{color:"neutral.11",textStyle:"sm","aria-hidden":"true",children:a}),t.jsx(i.Text,{color:"neutral.11",textStyle:"sm","aria-hidden":"true",children:"/"}),t.jsx(i.Text,{textStyle:"sm",fontWeight:"medium","aria-current":"page",children:o})]})};c.displayName="ModalPage.TopBar";const g=({ref:e,children:a,...o})=>t.jsx(R,{ref:e,...o,children:a});g.displayName="ModalPage.Header";const u=({ref:e,children:a,...o})=>t.jsx(q,{ref:e,...o,children:t.jsx(j.Heading,{slot:"title",as:"h2",children:a})});u.displayName="ModalPage.Title";const M=({ref:e,children:a,...o})=>t.jsx(f,{ref:e,slot:"description",...o,children:a});M.displayName="ModalPage.Subtitle";const P=({ref:e,children:a,...o})=>t.jsx(z,{ref:e,...o,children:a});P.displayName="ModalPage.Actions";const m=({ref:e,children:a,...o})=>t.jsx(F,{ref:e,...o,children:a});m.displayName="ModalPage.TabNav";const b=({ref:e,children:a,...o})=>t.jsx(w,{ref:e,...o,children:a});b.displayName="ModalPage.Content";const p=({ref:e,children:a,...o})=>t.jsx($,{ref:e,...o,children:a});p.displayName="ModalPage.Footer";const I={Root:d,TopBar:c,Header:g,Title:u,Subtitle:M,Actions:P,TabNav:m,Content:b,Footer:p};exports.ModalPage=I;exports.ModalPageActions=P;exports.ModalPageContent=b;exports.ModalPageFooter=p;exports.ModalPageHeader=g;exports.ModalPageRoot=d;exports.ModalPageSubtitle=M;exports.ModalPageTabNav=m;exports.ModalPageTitle=u;exports.ModalPageTopBar=c;
|
|
2
|
+
//# sourceMappingURL=modal-page-hqz13F_k.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal-page-BQ2BiqpG.cjs.js","sources":["../../src/components/modal-page/modal-page.slots.tsx","../../src/components/modal-page/components/modal-page.root.tsx","../../src/components/modal-page/intl/en.ts","../../src/components/modal-page/intl/de.ts","../../src/components/modal-page/intl/es.ts","../../src/components/modal-page/intl/fr-FR.ts","../../src/components/modal-page/intl/pt-BR.ts","../../src/components/modal-page/modal-page.messages.ts","../../src/components/modal-page/components/modal-page.top-bar.tsx","../../src/components/modal-page/components/modal-page.header.tsx","../../src/components/modal-page/components/modal-page.title.tsx","../../src/components/modal-page/components/modal-page.subtitle.tsx","../../src/components/modal-page/components/modal-page.actions.tsx","../../src/components/modal-page/components/modal-page.tab-nav.tsx","../../src/components/modal-page/components/modal-page.content.tsx","../../src/components/modal-page/components/modal-page.footer.tsx","../../src/components/modal-page/modal-page.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react/styled-system\";\nimport type { SlotComponent } from \"../../type-utils/slot-types\";\nimport type {\n ModalPageRootSlotProps,\n ModalPageTopBarSlotProps,\n ModalPageHeaderSlotProps,\n ModalPageTitleSlotProps,\n ModalPageSubtitleSlotProps,\n ModalPageActionsSlotProps,\n ModalPageTabNavSlotProps,\n ModalPageContentSlotProps,\n ModalPageFooterSlotProps,\n} from \"./modal-page.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"nimbusModalPage\",\n});\n\nexport const ModalPageRootSlot: SlotComponent<\n HTMLDivElement,\n ModalPageRootSlotProps\n> = withProvider<HTMLDivElement, ModalPageRootSlotProps>(\"div\", \"root\");\n\nexport const ModalPageTopBarSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTopBarSlotProps\n> = withContext<HTMLDivElement, ModalPageTopBarSlotProps>(\"div\", \"topBar\");\n\n// <header> inside a <dialog> does NOT get the `banner` landmark role — it\n// becomes a generic element. This is correct: no landmark pollution inside the\n// dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageHeaderSlot: SlotComponent<\n HTMLElement,\n ModalPageHeaderSlotProps\n> = withContext<HTMLElement, ModalPageHeaderSlotProps>(\"header\", \"header\");\n\nexport const ModalPageTitleSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTitleSlotProps\n> = withContext<HTMLDivElement, ModalPageTitleSlotProps>(\"div\", \"title\");\n\nexport const ModalPageSubtitleSlot: SlotComponent<\n HTMLParagraphElement,\n ModalPageSubtitleSlotProps\n> = withContext<HTMLParagraphElement, ModalPageSubtitleSlotProps>(\n \"p\",\n \"subtitle\"\n);\n\nexport const ModalPageActionsSlot: SlotComponent<\n HTMLDivElement,\n ModalPageActionsSlotProps\n> = withContext<HTMLDivElement, ModalPageActionsSlotProps>(\"div\", \"actions\");\n\nexport const ModalPageTabNavSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTabNavSlotProps\n> = withContext<HTMLDivElement, ModalPageTabNavSlotProps>(\"div\", \"tabNav\");\n\nexport const ModalPageContentSlot: SlotComponent<\n HTMLDivElement,\n ModalPageContentSlotProps\n> = withContext<HTMLDivElement, ModalPageContentSlotProps>(\"div\", \"content\");\n\n// <footer> inside a <dialog> does NOT get the `contentinfo` landmark role —\n// it becomes a generic element. This is correct: no landmark pollution inside\n// the dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageFooterSlot: SlotComponent<\n HTMLElement,\n ModalPageFooterSlotProps\n> = withContext<HTMLElement, ModalPageFooterSlotProps>(\"footer\", \"footer\");\n","import { useCallback } from \"react\";\nimport { Drawer } from \"../../drawer/drawer\";\nimport { ModalPageRootSlot } from \"../modal-page.slots\";\nimport type { ModalPageRootProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Root — fullscreen modal page overlay.\n *\n * Renders a right-side Drawer with near-full-width, full-height layout.\n * Provides the slot recipe context for all ModalPage sub-components via a\n * CSS grid container (rows: topBar / header / content / footer).\n *\n * Style props (e.g. `width`) are forwarded to the Drawer.Content panel.\n * The default width is near-fullscreen; consumers can pass a custom `width`\n * to override.\n *\n * Dismissal: backdrop click is disabled (no accidental close on a full-page\n * form). Escape key remains active (isKeyboardDismissDisabled defaults to\n * false), matching standard browser/OS modal behaviour and WCAG 2.1 SC 2.1.2.\n *\n * Exit animations are handled automatically: the Drawer recipe defines\n * [data-exiting] CSS animations (fade-out on overlay, slide-to-right-full on\n * modal), and React Aria's ModalOverlay waits for animationend before\n * unmounting — no manual delay needed.\n */\n// Note: Root wraps a Drawer instead of rendering a slot directly, so the\n// standard useSlotRecipe / splitVariantProps / extractStyleProps pattern does\n// not apply here. Recipe context is provided by ModalPageRootSlot (withProvider).\nexport const ModalPageRoot = ({\n ref,\n isOpen,\n onClose,\n children,\n width = \"calc(100vw - {spacing.1200})\",\n}: ModalPageRootProps) => {\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onClose();\n }\n },\n [onClose]\n );\n\n return (\n <Drawer.Root\n isOpen={isOpen}\n onOpenChange={handleOpenChange}\n placement=\"right\"\n // Disable backdrop-click dismissal — fullscreen modal pages must not\n // close on accidental outside click. Escape key remains active.\n isDismissable={false}\n >\n <Drawer.Content width={width}>\n <ModalPageRootSlot ref={ref}>{children}</ModalPageRootSlot>\n </Drawer.Content>\n </Drawer.Root>\n );\n};\n\nModalPageRoot.displayName = \"ModalPage.Root\";\n","/**\n * Pre-compiled en messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled de messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled es messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled fr-FR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled pt-BR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled localized messages for ModalPage component\n *\n * Generated by scripts/generate-dictionaries.ts\n * DO NOT EDIT MANUALLY\n *\n * @see https://react-spectrum.adobe.com/react-aria/internationalization.html\n */\n\nimport {\n type LocalizedString,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { normalizeMessages } from \"../../utils/normalize-messages\";\n\n// Pre-compiled message functions\nimport modalPageMessages_en from \"./intl/en\";\nimport modalPageMessages_de from \"./intl/de\";\nimport modalPageMessages_es from \"./intl/es\";\nimport modalPageMessages_fr from \"./intl/fr-FR\";\nimport modalPageMessages_pt from \"./intl/pt-BR\";\n\n// Raw LocalizedStrings object for use with useLocalizedStringFormatter hook\nexport const modalPageMessagesStrings: LocalizedStrings<\n string,\n LocalizedString\n> = {\n en: normalizeMessages(modalPageMessages_en),\n de: normalizeMessages(modalPageMessages_de),\n es: normalizeMessages(modalPageMessages_es),\n \"fr-FR\": normalizeMessages(modalPageMessages_fr),\n \"pt-BR\": normalizeMessages(modalPageMessages_pt),\n} as LocalizedStrings<string, LocalizedString>;\n\n/**\n * Available message keys for ModalPage component\n */\nexport type ModalPageMessageKey = \"backButton\";\n","import { ArrowBack } from \"@commercetools/nimbus-icons\";\nimport { Text } from \"../../text/text\";\nimport { ModalPageTopBarSlot } from \"../modal-page.slots\";\nimport type { ModalPageTopBarProps } from \"../modal-page.types\";\nimport { IconButton } from \"../../icon-button/icon-button\";\nimport { useLocalizedStringFormatter } from \"@/hooks\";\nimport { modalPageMessagesStrings } from \"../modal-page.messages\";\n\n/**\n * ModalPage.TopBar — breadcrumb navigation row.\n *\n * Renders a back button (uses React Aria `slot=\"close\"` to hook into dialog close)\n * followed by the current path label.\n *\n * @supportsStyleProps\n */\nexport const ModalPageTopBar = ({\n ref,\n previousPathLabel,\n currentPathLabel,\n ...props\n}: ModalPageTopBarProps) => {\n const msg = useLocalizedStringFormatter(modalPageMessagesStrings);\n\n return (\n <ModalPageTopBarSlot ref={ref} {...props}>\n <IconButton\n slot=\"close\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label={msg.format(\"backButton\", { previousPathLabel })}\n autoFocus\n >\n <ArrowBack />\n </IconButton>\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n {previousPathLabel}\n </Text>\n {/* Separator is decorative — hidden from screen readers */}\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n /\n </Text>\n <Text textStyle=\"sm\" fontWeight=\"medium\" aria-current=\"page\">\n {currentPathLabel}\n </Text>\n </ModalPageTopBarSlot>\n );\n};\n\nModalPageTopBar.displayName = \"ModalPage.TopBar\";\n","import { ModalPageHeaderSlot } from \"../modal-page.slots\";\nimport type { ModalPageHeaderProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Header — header section, 2-column grid (title | actions).\n *\n * @supportsStyleProps\n */\nexport const ModalPageHeader = ({\n ref,\n children,\n ...props\n}: ModalPageHeaderProps) => {\n return (\n <ModalPageHeaderSlot ref={ref} {...props}>\n {children}\n </ModalPageHeaderSlot>\n );\n};\n\nModalPageHeader.displayName = \"ModalPage.Header\";\n","import { ModalPageTitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageTitleProps } from \"../modal-page.types\";\nimport { Heading } from \"../../heading/heading\";\n\n/**\n * ModalPage.Title — the page title heading. Renders as an `h2` element.\n *\n * Wraps the React Aria `Heading` component with `slot=\"title\"` so the\n * parent Dialog automatically uses it as the accessible name (aria-labelledby).\n *\n * @supportsStyleProps\n */\nexport const ModalPageTitle = ({\n ref,\n children,\n ...props\n}: ModalPageTitleProps) => {\n return (\n <ModalPageTitleSlot ref={ref} {...props}>\n <Heading slot=\"title\" as=\"h2\">\n {children}\n </Heading>\n </ModalPageTitleSlot>\n );\n};\n\nModalPageTitle.displayName = \"ModalPage.Title\";\n","import { ModalPageSubtitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageSubtitleProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Subtitle — optional subtitle text below the page title.\n *\n * @supportsStyleProps\n */\nexport const ModalPageSubtitle = ({\n ref,\n children,\n ...props\n}: ModalPageSubtitleProps) => {\n return (\n <ModalPageSubtitleSlot ref={ref} slot=\"description\" {...props}>\n {children}\n </ModalPageSubtitleSlot>\n );\n};\n\nModalPageSubtitle.displayName = \"ModalPage.Subtitle\";\n","import { ModalPageActionsSlot } from \"../modal-page.slots\";\nimport type { ModalPageActionsProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Actions — action buttons container, aligned to the right of the header.\n *\n * @supportsStyleProps\n */\nexport const ModalPageActions = ({\n ref,\n children,\n ...props\n}: ModalPageActionsProps) => {\n return (\n <ModalPageActionsSlot ref={ref} {...props}>\n {children}\n </ModalPageActionsSlot>\n );\n};\n\nModalPageActions.displayName = \"ModalPage.Actions\";\n","import { ModalPageTabNavSlot } from \"../modal-page.slots\";\nimport type { ModalPageTabNavProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.TabNav — layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n *\n * Place inside `ModalPage.Header` for route-based page navigation.\n * Wrap a `TabNav.Root` inside this component.\n *\n * @supportsStyleProps\n *\n * @example\n * ```tsx\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * ```\n */\nexport const ModalPageTabNav = ({\n ref,\n children,\n ...props\n}: ModalPageTabNavProps) => {\n return (\n <ModalPageTabNavSlot ref={ref} {...props}>\n {children}\n </ModalPageTabNavSlot>\n );\n};\n\nModalPageTabNav.displayName = \"ModalPage.TabNav\";\n","import { ModalPageContentSlot } from \"../modal-page.slots\";\nimport type { ModalPageContentProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Content — scrollable content area.\n *\n * @supportsStyleProps\n */\nexport const ModalPageContent = ({\n ref,\n children,\n ...props\n}: ModalPageContentProps) => {\n return (\n <ModalPageContentSlot ref={ref} {...props}>\n {children}\n </ModalPageContentSlot>\n );\n};\n\nModalPageContent.displayName = \"ModalPage.Content\";\n","import { ModalPageFooterSlot } from \"../modal-page.slots\";\nimport type { ModalPageFooterProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Footer — footer slot, typically containing action buttons.\n *\n * @supportsStyleProps\n */\nexport const ModalPageFooter = ({\n ref,\n children,\n ...props\n}: ModalPageFooterProps) => {\n return (\n <ModalPageFooterSlot ref={ref} {...props}>\n {children}\n </ModalPageFooterSlot>\n );\n};\n\nModalPageFooter.displayName = \"ModalPage.Footer\";\n","import {\n ModalPageRoot,\n ModalPageTopBar,\n ModalPageHeader,\n ModalPageTitle,\n ModalPageSubtitle,\n ModalPageActions,\n ModalPageTabNav,\n ModalPageContent,\n ModalPageFooter,\n} from \"./components\";\n\n/**\n * ModalPage\n * ============================================================\n * A fullscreen modal overlay used for form, info, and tabular page patterns.\n * Wraps Drawer internally with right-side placement and near-full-width layout.\n *\n * Used for the ~29 modal page patterns in Merchant Center (form/info/tabular).\n *\n * @see {@link https://nimbus-documentation.vercel.app/components/layout/modal-page}\n *\n * @example\n * ```tsx\n * const [isOpen, setIsOpen] = useState(false);\n *\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Subtitle>Update the product details</ModalPage.Subtitle>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * <ModalPage.Content>\n * <p>Form content here</p>\n * </ModalPage.Content>\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button colorPalette=\"primary\" variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * </ModalPage.Root>\n * ```\n */\nexport const ModalPage = {\n /**\n * # ModalPage.Root\n *\n * The root container. Renders a fullscreen right-side Drawer.\n * Controlled-only: requires `isOpen` and `onClose`.\n *\n * @example\n * ```tsx\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar previousPathLabel=\"Products\" currentPathLabel=\"Edit Product\" />\n * <ModalPage.Header>...</ModalPage.Header>\n * <ModalPage.Content>...</ModalPage.Content>\n * </ModalPage.Root>\n * ```\n */\n Root: ModalPageRoot,\n /**\n * # ModalPage.TopBar\n *\n * Breadcrumb navigation row with a back button and current path label.\n *\n * @example\n * ```tsx\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * ```\n */\n TopBar: ModalPageTopBar,\n /**\n * # ModalPage.Header\n *\n * Header section with a 2-column grid layout for Title and Actions.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * ```\n */\n Header: ModalPageHeader,\n /**\n * # ModalPage.Title\n *\n * The main page title heading. Renders as an `h2` element.\n *\n * @example\n * ```tsx\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * ```\n */\n Title: ModalPageTitle,\n /**\n * # ModalPage.Subtitle\n *\n * An optional subtitle displayed below the title.\n *\n * @example\n * ```tsx\n * <ModalPage.Subtitle>Fill in the product details</ModalPage.Subtitle>\n * ```\n */\n Subtitle: ModalPageSubtitle,\n /**\n * # ModalPage.Actions\n *\n * Container for action buttons in the header.\n *\n * @example\n * ```tsx\n * <ModalPage.Actions>\n * <Button variant=\"outline\">Preview</Button>\n * </ModalPage.Actions>\n * ```\n */\n Actions: ModalPageActions,\n /**\n * # ModalPage.TabNav\n *\n * Layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n * Place inside `ModalPage.Header`.\n *\n * Wrap a `TabNav.Root` inside, or use `as={TabNav.Root}` for a flatter DOM.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Order Details</ModalPage.Title>\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * </ModalPage.Header>\n * ```\n */\n TabNav: ModalPageTabNav,\n /**\n * # ModalPage.Content\n *\n * Scrollable content area.\n *\n * @example\n * ```tsx\n * <ModalPage.Content>\n * <FormField.Root>...</FormField.Root>\n * </ModalPage.Content>\n * ```\n */\n Content: ModalPageContent,\n /**\n * # ModalPage.Footer\n *\n * Footer slot for action buttons (save/cancel).\n *\n * @example\n * ```tsx\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * ```\n */\n Footer: ModalPageFooter,\n};\n\n// Internal named exports for react-docgen\nexport {\n ModalPageRoot as _ModalPageRoot,\n ModalPageTopBar as _ModalPageTopBar,\n ModalPageHeader as _ModalPageHeader,\n ModalPageTitle as _ModalPageTitle,\n ModalPageSubtitle as _ModalPageSubtitle,\n ModalPageActions as _ModalPageActions,\n ModalPageTabNav as _ModalPageTabNav,\n ModalPageContent as _ModalPageContent,\n ModalPageFooter as _ModalPageFooter,\n};\n"],"names":["withProvider","withContext","createSlotRecipeContext","ModalPageRootSlot","ModalPageTopBarSlot","ModalPageHeaderSlot","ModalPageTitleSlot","ModalPageSubtitleSlot","ModalPageActionsSlot","ModalPageTabNavSlot","ModalPageContentSlot","ModalPageFooterSlot","ModalPageRoot","ref","isOpen","onClose","children","width","handleOpenChange","useCallback","open","jsx","Drawer","modalPageMessages_en","args","modalPageMessages_de","modalPageMessages_es","modalPageMessages_fr","modalPageMessages_pt","modalPageMessagesStrings","normalizeMessages","ModalPageTopBar","previousPathLabel","currentPathLabel","props","msg","useLocalizedStringFormatter","jsxs","IconButton","ArrowBack","Text","ModalPageHeader","ModalPageTitle","Heading","ModalPageSubtitle","ModalPageActions","ModalPageTabNav","ModalPageContent","ModalPageFooter","ModalPage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modal-page-hqz13F_k.cjs.js","sources":["../../src/components/modal-page/modal-page.slots.tsx","../../src/components/modal-page/components/modal-page.root.tsx","../../src/components/modal-page/intl/en.ts","../../src/components/modal-page/intl/de.ts","../../src/components/modal-page/intl/es.ts","../../src/components/modal-page/intl/fr-FR.ts","../../src/components/modal-page/intl/pt-BR.ts","../../src/components/modal-page/modal-page.messages.ts","../../src/components/modal-page/components/modal-page.top-bar.tsx","../../src/components/modal-page/components/modal-page.header.tsx","../../src/components/modal-page/components/modal-page.title.tsx","../../src/components/modal-page/components/modal-page.subtitle.tsx","../../src/components/modal-page/components/modal-page.actions.tsx","../../src/components/modal-page/components/modal-page.tab-nav.tsx","../../src/components/modal-page/components/modal-page.content.tsx","../../src/components/modal-page/components/modal-page.footer.tsx","../../src/components/modal-page/modal-page.tsx"],"sourcesContent":["import { createSlotRecipeContext } from \"@chakra-ui/react/styled-system\";\nimport type { SlotComponent } from \"../../type-utils/slot-types\";\nimport type {\n ModalPageRootSlotProps,\n ModalPageTopBarSlotProps,\n ModalPageHeaderSlotProps,\n ModalPageTitleSlotProps,\n ModalPageSubtitleSlotProps,\n ModalPageActionsSlotProps,\n ModalPageTabNavSlotProps,\n ModalPageContentSlotProps,\n ModalPageFooterSlotProps,\n} from \"./modal-page.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"nimbusModalPage\",\n});\n\nexport const ModalPageRootSlot: SlotComponent<\n HTMLDivElement,\n ModalPageRootSlotProps\n> = withProvider<HTMLDivElement, ModalPageRootSlotProps>(\"div\", \"root\");\n\nexport const ModalPageTopBarSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTopBarSlotProps\n> = withContext<HTMLDivElement, ModalPageTopBarSlotProps>(\"div\", \"topBar\");\n\n// <header> inside a <dialog> does NOT get the `banner` landmark role — it\n// becomes a generic element. This is correct: no landmark pollution inside the\n// dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageHeaderSlot: SlotComponent<\n HTMLElement,\n ModalPageHeaderSlotProps\n> = withContext<HTMLElement, ModalPageHeaderSlotProps>(\"header\", \"header\");\n\nexport const ModalPageTitleSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTitleSlotProps\n> = withContext<HTMLDivElement, ModalPageTitleSlotProps>(\"div\", \"title\");\n\nexport const ModalPageSubtitleSlot: SlotComponent<\n HTMLParagraphElement,\n ModalPageSubtitleSlotProps\n> = withContext<HTMLParagraphElement, ModalPageSubtitleSlotProps>(\n \"p\",\n \"subtitle\"\n);\n\nexport const ModalPageActionsSlot: SlotComponent<\n HTMLDivElement,\n ModalPageActionsSlotProps\n> = withContext<HTMLDivElement, ModalPageActionsSlotProps>(\"div\", \"actions\");\n\nexport const ModalPageTabNavSlot: SlotComponent<\n HTMLDivElement,\n ModalPageTabNavSlotProps\n> = withContext<HTMLDivElement, ModalPageTabNavSlotProps>(\"div\", \"tabNav\");\n\nexport const ModalPageContentSlot: SlotComponent<\n HTMLDivElement,\n ModalPageContentSlotProps\n> = withContext<HTMLDivElement, ModalPageContentSlotProps>(\"div\", \"content\");\n\n// <footer> inside a <dialog> does NOT get the `contentinfo` landmark role —\n// it becomes a generic element. This is correct: no landmark pollution inside\n// the dialog's sectioning context (ARIA spec §5.3.3).\nexport const ModalPageFooterSlot: SlotComponent<\n HTMLElement,\n ModalPageFooterSlotProps\n> = withContext<HTMLElement, ModalPageFooterSlotProps>(\"footer\", \"footer\");\n","import { useCallback } from \"react\";\nimport { Drawer } from \"../../drawer/drawer\";\nimport { ModalPageRootSlot } from \"../modal-page.slots\";\nimport type { ModalPageRootProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Root — fullscreen modal page overlay.\n *\n * Renders a right-side Drawer with near-full-width, full-height layout.\n * Provides the slot recipe context for all ModalPage sub-components via a\n * CSS grid container (rows: topBar / header / content / footer).\n *\n * Style props (e.g. `width`) are forwarded to the Drawer.Content panel.\n * The default width is near-fullscreen; consumers can pass a custom `width`\n * to override.\n *\n * Dismissal: backdrop click is disabled (no accidental close on a full-page\n * form). Escape key remains active (isKeyboardDismissDisabled defaults to\n * false), matching standard browser/OS modal behaviour and WCAG 2.1 SC 2.1.2.\n *\n * Exit animations are handled automatically: the Drawer recipe defines\n * [data-exiting] CSS animations (fade-out on overlay, slide-to-right-full on\n * modal), and React Aria's ModalOverlay waits for animationend before\n * unmounting — no manual delay needed.\n */\n// Note: Root wraps a Drawer instead of rendering a slot directly, so the\n// standard useSlotRecipe / splitVariantProps / extractStyleProps pattern does\n// not apply here. Recipe context is provided by ModalPageRootSlot (withProvider).\nexport const ModalPageRoot = ({\n ref,\n isOpen,\n onClose,\n children,\n width = \"calc(100vw - {spacing.1200})\",\n}: ModalPageRootProps) => {\n const handleOpenChange = useCallback(\n (open: boolean) => {\n if (!open) {\n onClose();\n }\n },\n [onClose]\n );\n\n return (\n <Drawer.Root\n isOpen={isOpen}\n onOpenChange={handleOpenChange}\n placement=\"right\"\n // Disable backdrop-click dismissal — fullscreen modal pages must not\n // close on accidental outside click. Escape key remains active.\n isDismissable={false}\n >\n <Drawer.Content width={width}>\n <ModalPageRootSlot ref={ref}>{children}</ModalPageRootSlot>\n </Drawer.Content>\n </Drawer.Root>\n );\n};\n\nModalPageRoot.displayName = \"ModalPage.Root\";\n","/**\n * Pre-compiled en messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled de messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled es messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled fr-FR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled pt-BR messages for ModalPage\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n backButton: (args: Record<string, string | number>) =>\n `Go back to ${args.previousPathLabel}`,\n};\n","/**\n * Pre-compiled localized messages for ModalPage component\n *\n * Generated by scripts/generate-dictionaries.ts\n * DO NOT EDIT MANUALLY\n *\n * @see https://react-spectrum.adobe.com/react-aria/internationalization.html\n */\n\nimport {\n type LocalizedString,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { normalizeMessages } from \"../../utils/normalize-messages\";\n\n// Pre-compiled message functions\nimport modalPageMessages_en from \"./intl/en\";\nimport modalPageMessages_de from \"./intl/de\";\nimport modalPageMessages_es from \"./intl/es\";\nimport modalPageMessages_fr from \"./intl/fr-FR\";\nimport modalPageMessages_pt from \"./intl/pt-BR\";\n\n// Raw LocalizedStrings object for use with useLocalizedStringFormatter hook\nexport const modalPageMessagesStrings: LocalizedStrings<\n string,\n LocalizedString\n> = {\n en: normalizeMessages(modalPageMessages_en),\n de: normalizeMessages(modalPageMessages_de),\n es: normalizeMessages(modalPageMessages_es),\n \"fr-FR\": normalizeMessages(modalPageMessages_fr),\n \"pt-BR\": normalizeMessages(modalPageMessages_pt),\n} as LocalizedStrings<string, LocalizedString>;\n\n/**\n * Available message keys for ModalPage component\n */\nexport type ModalPageMessageKey = \"backButton\";\n","import { ArrowBack } from \"@commercetools/nimbus-icons\";\nimport { Text } from \"../../text/text\";\nimport { ModalPageTopBarSlot } from \"../modal-page.slots\";\nimport type { ModalPageTopBarProps } from \"../modal-page.types\";\nimport { IconButton } from \"../../icon-button/icon-button\";\nimport { useLocalizedStringFormatter } from \"@/hooks\";\nimport { modalPageMessagesStrings } from \"../modal-page.messages\";\n\n/**\n * ModalPage.TopBar — breadcrumb navigation row.\n *\n * Renders a back button (uses React Aria `slot=\"close\"` to hook into dialog close)\n * followed by the current path label.\n *\n * @supportsStyleProps\n */\nexport const ModalPageTopBar = ({\n ref,\n previousPathLabel,\n currentPathLabel,\n ...props\n}: ModalPageTopBarProps) => {\n const msg = useLocalizedStringFormatter(modalPageMessagesStrings);\n\n return (\n <ModalPageTopBarSlot ref={ref} {...props}>\n <IconButton\n slot=\"close\"\n size=\"xs\"\n variant=\"ghost\"\n aria-label={msg.format(\"backButton\", { previousPathLabel })}\n autoFocus\n >\n <ArrowBack />\n </IconButton>\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n {previousPathLabel}\n </Text>\n {/* Separator is decorative — hidden from screen readers */}\n <Text color=\"neutral.11\" textStyle=\"sm\" aria-hidden=\"true\">\n /\n </Text>\n <Text textStyle=\"sm\" fontWeight=\"medium\" aria-current=\"page\">\n {currentPathLabel}\n </Text>\n </ModalPageTopBarSlot>\n );\n};\n\nModalPageTopBar.displayName = \"ModalPage.TopBar\";\n","import { ModalPageHeaderSlot } from \"../modal-page.slots\";\nimport type { ModalPageHeaderProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Header — header section, 2-column grid (title | actions).\n *\n * @supportsStyleProps\n */\nexport const ModalPageHeader = ({\n ref,\n children,\n ...props\n}: ModalPageHeaderProps) => {\n return (\n <ModalPageHeaderSlot ref={ref} {...props}>\n {children}\n </ModalPageHeaderSlot>\n );\n};\n\nModalPageHeader.displayName = \"ModalPage.Header\";\n","import { ModalPageTitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageTitleProps } from \"../modal-page.types\";\nimport { Heading } from \"../../heading/heading\";\n\n/**\n * ModalPage.Title — the page title heading. Renders as an `h2` element.\n *\n * Wraps the React Aria `Heading` component with `slot=\"title\"` so the\n * parent Dialog automatically uses it as the accessible name (aria-labelledby).\n *\n * @supportsStyleProps\n */\nexport const ModalPageTitle = ({\n ref,\n children,\n ...props\n}: ModalPageTitleProps) => {\n return (\n <ModalPageTitleSlot ref={ref} {...props}>\n <Heading slot=\"title\" as=\"h2\">\n {children}\n </Heading>\n </ModalPageTitleSlot>\n );\n};\n\nModalPageTitle.displayName = \"ModalPage.Title\";\n","import { ModalPageSubtitleSlot } from \"../modal-page.slots\";\nimport type { ModalPageSubtitleProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Subtitle — optional subtitle text below the page title.\n *\n * @supportsStyleProps\n */\nexport const ModalPageSubtitle = ({\n ref,\n children,\n ...props\n}: ModalPageSubtitleProps) => {\n return (\n <ModalPageSubtitleSlot ref={ref} slot=\"description\" {...props}>\n {children}\n </ModalPageSubtitleSlot>\n );\n};\n\nModalPageSubtitle.displayName = \"ModalPage.Subtitle\";\n","import { ModalPageActionsSlot } from \"../modal-page.slots\";\nimport type { ModalPageActionsProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Actions — action buttons container, aligned to the right of the header.\n *\n * @supportsStyleProps\n */\nexport const ModalPageActions = ({\n ref,\n children,\n ...props\n}: ModalPageActionsProps) => {\n return (\n <ModalPageActionsSlot ref={ref} {...props}>\n {children}\n </ModalPageActionsSlot>\n );\n};\n\nModalPageActions.displayName = \"ModalPage.Actions\";\n","import { ModalPageTabNavSlot } from \"../modal-page.slots\";\nimport type { ModalPageTabNavProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.TabNav — layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n *\n * Place inside `ModalPage.Header` for route-based page navigation.\n * Wrap a `TabNav.Root` inside this component.\n *\n * @supportsStyleProps\n *\n * @example\n * ```tsx\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * ```\n */\nexport const ModalPageTabNav = ({\n ref,\n children,\n ...props\n}: ModalPageTabNavProps) => {\n return (\n <ModalPageTabNavSlot ref={ref} {...props}>\n {children}\n </ModalPageTabNavSlot>\n );\n};\n\nModalPageTabNav.displayName = \"ModalPage.TabNav\";\n","import { ModalPageContentSlot } from \"../modal-page.slots\";\nimport type { ModalPageContentProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Content — scrollable content area.\n *\n * @supportsStyleProps\n */\nexport const ModalPageContent = ({\n ref,\n children,\n ...props\n}: ModalPageContentProps) => {\n return (\n <ModalPageContentSlot ref={ref} {...props}>\n {children}\n </ModalPageContentSlot>\n );\n};\n\nModalPageContent.displayName = \"ModalPage.Content\";\n","import { ModalPageFooterSlot } from \"../modal-page.slots\";\nimport type { ModalPageFooterProps } from \"../modal-page.types\";\n\n/**\n * ModalPage.Footer — footer slot, typically containing action buttons.\n *\n * @supportsStyleProps\n */\nexport const ModalPageFooter = ({\n ref,\n children,\n ...props\n}: ModalPageFooterProps) => {\n return (\n <ModalPageFooterSlot ref={ref} {...props}>\n {children}\n </ModalPageFooterSlot>\n );\n};\n\nModalPageFooter.displayName = \"ModalPage.Footer\";\n","import {\n ModalPageRoot,\n ModalPageTopBar,\n ModalPageHeader,\n ModalPageTitle,\n ModalPageSubtitle,\n ModalPageActions,\n ModalPageTabNav,\n ModalPageContent,\n ModalPageFooter,\n} from \"./components\";\n\n/**\n * ModalPage\n * ============================================================\n * A fullscreen modal overlay used for form, info, and tabular page patterns.\n * Wraps Drawer internally with right-side placement and near-full-width layout.\n *\n * Used for the ~29 modal page patterns in Merchant Center (form/info/tabular).\n *\n * @see {@link https://nimbus-documentation.vercel.app/components/layout/modal-page}\n *\n * @example\n * ```tsx\n * const [isOpen, setIsOpen] = useState(false);\n *\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Subtitle>Update the product details</ModalPage.Subtitle>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * <ModalPage.Content>\n * <p>Form content here</p>\n * </ModalPage.Content>\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button colorPalette=\"primary\" variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * </ModalPage.Root>\n * ```\n */\nexport const ModalPage = {\n /**\n * # ModalPage.Root\n *\n * The root container. Renders a fullscreen right-side Drawer.\n * Controlled-only: requires `isOpen` and `onClose`.\n *\n * @example\n * ```tsx\n * <ModalPage.Root isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalPage.TopBar previousPathLabel=\"Products\" currentPathLabel=\"Edit Product\" />\n * <ModalPage.Header>...</ModalPage.Header>\n * <ModalPage.Content>...</ModalPage.Content>\n * </ModalPage.Root>\n * ```\n */\n Root: ModalPageRoot,\n /**\n * # ModalPage.TopBar\n *\n * Breadcrumb navigation row with a back button and current path label.\n *\n * @example\n * ```tsx\n * <ModalPage.TopBar\n * previousPathLabel=\"Products\"\n * currentPathLabel=\"Edit Product\"\n * />\n * ```\n */\n TopBar: ModalPageTopBar,\n /**\n * # ModalPage.Header\n *\n * Header section with a 2-column grid layout for Title and Actions.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * <ModalPage.Actions>\n * <Button>Save</Button>\n * </ModalPage.Actions>\n * </ModalPage.Header>\n * ```\n */\n Header: ModalPageHeader,\n /**\n * # ModalPage.Title\n *\n * The main page title heading. Renders as an `h2` element.\n *\n * @example\n * ```tsx\n * <ModalPage.Title>Edit Product</ModalPage.Title>\n * ```\n */\n Title: ModalPageTitle,\n /**\n * # ModalPage.Subtitle\n *\n * An optional subtitle displayed below the title.\n *\n * @example\n * ```tsx\n * <ModalPage.Subtitle>Fill in the product details</ModalPage.Subtitle>\n * ```\n */\n Subtitle: ModalPageSubtitle,\n /**\n * # ModalPage.Actions\n *\n * Container for action buttons in the header.\n *\n * @example\n * ```tsx\n * <ModalPage.Actions>\n * <Button variant=\"outline\">Preview</Button>\n * </ModalPage.Actions>\n * ```\n */\n Actions: ModalPageActions,\n /**\n * # ModalPage.TabNav\n *\n * Layout container for tab navigation in the header.\n * Positions itself in the header grid's last row at full width.\n * Place inside `ModalPage.Header`.\n *\n * Wrap a `TabNav.Root` inside, or use `as={TabNav.Root}` for a flatter DOM.\n *\n * @example\n * ```tsx\n * <ModalPage.Header>\n * <ModalPage.Title>Order Details</ModalPage.Title>\n * <ModalPage.TabNav>\n * <TabNav.Root aria-label=\"Order sections\">\n * <TabNav.Item href=\"/general\" isCurrent>General</TabNav.Item>\n * <TabNav.Item href=\"/items\">Items</TabNav.Item>\n * </TabNav.Root>\n * </ModalPage.TabNav>\n * </ModalPage.Header>\n * ```\n */\n TabNav: ModalPageTabNav,\n /**\n * # ModalPage.Content\n *\n * Scrollable content area.\n *\n * @example\n * ```tsx\n * <ModalPage.Content>\n * <FormField.Root>...</FormField.Root>\n * </ModalPage.Content>\n * ```\n */\n Content: ModalPageContent,\n /**\n * # ModalPage.Footer\n *\n * Footer slot for action buttons (save/cancel).\n *\n * @example\n * ```tsx\n * <ModalPage.Footer>\n * <Button slot=\"close\" variant=\"outline\">Cancel</Button>\n * <Button variant=\"solid\">Save</Button>\n * </ModalPage.Footer>\n * ```\n */\n Footer: ModalPageFooter,\n};\n\n// Internal named exports for react-docgen\nexport {\n ModalPageRoot as _ModalPageRoot,\n ModalPageTopBar as _ModalPageTopBar,\n ModalPageHeader as _ModalPageHeader,\n ModalPageTitle as _ModalPageTitle,\n ModalPageSubtitle as _ModalPageSubtitle,\n ModalPageActions as _ModalPageActions,\n ModalPageTabNav as _ModalPageTabNav,\n ModalPageContent as _ModalPageContent,\n ModalPageFooter as _ModalPageFooter,\n};\n"],"names":["withProvider","withContext","createSlotRecipeContext","ModalPageRootSlot","ModalPageTopBarSlot","ModalPageHeaderSlot","ModalPageTitleSlot","ModalPageSubtitleSlot","ModalPageActionsSlot","ModalPageTabNavSlot","ModalPageContentSlot","ModalPageFooterSlot","ModalPageRoot","ref","isOpen","onClose","children","width","handleOpenChange","useCallback","open","jsx","Drawer","modalPageMessages_en","args","modalPageMessages_de","modalPageMessages_es","modalPageMessages_fr","modalPageMessages_pt","modalPageMessagesStrings","normalizeMessages","ModalPageTopBar","previousPathLabel","currentPathLabel","props","msg","useLocalizedStringFormatter","jsxs","IconButton","ArrowBack","Text","ModalPageHeader","ModalPageTitle","Heading","ModalPageSubtitle","ModalPageActions","ModalPageTabNav","ModalPageContent","ModalPageFooter","ModalPage"],"mappings":"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"}
|
|
@@ -5,12 +5,12 @@ import { $ as mi } from "./I18nProvider-BuwVdK1A.es.js";
|
|
|
5
5
|
import { $ as b } from "./mergeProps-Bcbq3GVJ.es.js";
|
|
6
6
|
import { designTokens as di } from "@commercetools/nimbus-tokens";
|
|
7
7
|
import { HighPrecision as yi } from "@commercetools/nimbus-icons";
|
|
8
|
-
import { e as hi } from "./extract-style-props-
|
|
8
|
+
import { e as hi } from "./extract-style-props-D86m_g63.es.js";
|
|
9
9
|
import { G as Mi } from "./group-DmZFJeQ4.es.js";
|
|
10
|
-
import { i as Si } from "./index-
|
|
10
|
+
import { i as Si } from "./index-CTrsTsK6.es.js";
|
|
11
11
|
import { n as h, u as Pi } from "./normalize-messages-CeN1NEyM.es.js";
|
|
12
|
-
import { S as A } from "./select-
|
|
13
|
-
import { N as Ci } from "./number-input-
|
|
12
|
+
import { S as A } from "./select-DzHkNbNO.es.js";
|
|
13
|
+
import { N as Ci } from "./number-input-DP-OVZI2.es.js";
|
|
14
14
|
import { M as Ii } from "./make-element-focusable-QhMuqMrZ.es.js";
|
|
15
15
|
import { B as Ri } from "./box-DuBoAZvq.es.js";
|
|
16
16
|
import { T as U } from "./tooltip-Bx5ngdcy.es.js";
|
|
@@ -552,4 +552,4 @@ p.displayName = "MoneyInput";
|
|
|
552
552
|
export {
|
|
553
553
|
p as M
|
|
554
554
|
};
|
|
555
|
-
//# sourceMappingURL=money-input-
|
|
555
|
+
//# sourceMappingURL=money-input-C0FNshvC.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money-input-Blu-9yQ8.es.js","sources":["../../src/components/money-input/utils/currencies.ts","../../src/components/money-input/money-input.slots.tsx","../../src/components/money-input/utils/parsing-utilities.ts","../../src/components/money-input/utils/static-methods.ts","../../src/components/money-input/intl/en.ts","../../src/components/money-input/intl/de.ts","../../src/components/money-input/intl/es.ts","../../src/components/money-input/intl/fr-FR.ts","../../src/components/money-input/intl/pt-BR.ts","../../src/components/money-input/money-input.messages.ts","../../src/components/money-input/money-input.tsx"],"sourcesContent":["// ARCHITECTURE NOTE: Shared Currency Data\n//\n// This currency data is used by TWO INDEPENDENT formatting systems:\n//\n// 1. NumberInput System (live user interaction):\n// - Creates format options for NumberInput\n// - Powers React Aria NumberField formatting as users type\n//\n// 2. MoneyInput Static Methods System (API compatibility):\n// - Uses parseStringToMoneyValue() + TMoneyValue objects\n// - Only triggered by explicit static method calls\n//\n// Both systems access this same data but for different purposes.\n// Changes here affect both NumberInput behavior AND MoneyInput static methods.\n\nconst currencies = {\n ADP: { fractionDigits: 0 },\n AED: { fractionDigits: 2 },\n AFA: { fractionDigits: 2 },\n AFN: { fractionDigits: 2 },\n ALL: { fractionDigits: 2 },\n AMD: { fractionDigits: 2 },\n ANG: { fractionDigits: 2 },\n AOA: { fractionDigits: 2 },\n ARS: { fractionDigits: 2 },\n ATS: { fractionDigits: 2 },\n AUD: { fractionDigits: 2 },\n AWG: { fractionDigits: 2 },\n AYM: { fractionDigits: 2 },\n AZM: { fractionDigits: 2 },\n AZN: { fractionDigits: 2 },\n BAM: { fractionDigits: 2 },\n BBD: { fractionDigits: 2 },\n BDT: { fractionDigits: 2 },\n BEF: { fractionDigits: 0 },\n BGL: { fractionDigits: 2 },\n BGN: { fractionDigits: 2 },\n BHD: { fractionDigits: 3 },\n BIF: { fractionDigits: 0 },\n BMD: { fractionDigits: 2 },\n BND: { fractionDigits: 2 },\n BOB: { fractionDigits: 2 },\n BOV: { fractionDigits: 2 },\n BRL: { fractionDigits: 2 },\n BSD: { fractionDigits: 2 },\n BTN: { fractionDigits: 2 },\n BWP: { fractionDigits: 2 },\n BYB: { fractionDigits: 0 },\n BYN: { fractionDigits: 2 },\n BYR: { fractionDigits: 0 },\n BZD: { fractionDigits: 2 },\n CAD: { fractionDigits: 2 },\n CDF: { fractionDigits: 2 },\n CHF: { fractionDigits: 2 },\n CLF: { fractionDigits: 0 },\n CLP: { fractionDigits: 0 },\n CNY: { fractionDigits: 2 },\n COP: { fractionDigits: 2 },\n CRC: { fractionDigits: 2 },\n CSD: { fractionDigits: 2 },\n CUC: { fractionDigits: 2 },\n CUP: { fractionDigits: 2 },\n CVE: { fractionDigits: 2 },\n CYP: { fractionDigits: 2 },\n CZK: { fractionDigits: 2 },\n DEM: { fractionDigits: 2 },\n DJF: { fractionDigits: 0 },\n DKK: { fractionDigits: 2 },\n DOP: { fractionDigits: 2 },\n DZD: { fractionDigits: 2 },\n EEK: { fractionDigits: 2 },\n EGP: { fractionDigits: 2 },\n ERN: { fractionDigits: 2 },\n ESP: { fractionDigits: 0 },\n ETB: { fractionDigits: 2 },\n EUR: { fractionDigits: 2 },\n FIM: { fractionDigits: 2 },\n FJD: { fractionDigits: 2 },\n FKP: { fractionDigits: 2 },\n FRF: { fractionDigits: 2 },\n GBP: { fractionDigits: 2 },\n GEL: { fractionDigits: 2 },\n GHC: { fractionDigits: 2 },\n GHS: { fractionDigits: 2 },\n GIP: { fractionDigits: 2 },\n GMD: { fractionDigits: 2 },\n GNF: { fractionDigits: 0 },\n GRD: { fractionDigits: 0 },\n GTQ: { fractionDigits: 2 },\n GWP: { fractionDigits: 2 },\n GYD: { fractionDigits: 2 },\n HKD: { fractionDigits: 2 },\n HNL: { fractionDigits: 2 },\n HRK: { fractionDigits: 2 },\n HTG: { fractionDigits: 2 },\n HUF: { fractionDigits: 2 },\n IDR: { fractionDigits: 2 },\n IEP: { fractionDigits: 2 },\n ILS: { fractionDigits: 2 },\n INR: { fractionDigits: 2 },\n IQD: { fractionDigits: 3 },\n IRR: { fractionDigits: 2 },\n ISK: { fractionDigits: 0 },\n ITL: { fractionDigits: 0 },\n JMD: { fractionDigits: 2 },\n JOD: { fractionDigits: 3 },\n JPY: { fractionDigits: 0 },\n KES: { fractionDigits: 2 },\n KGS: { fractionDigits: 2 },\n KHR: { fractionDigits: 2 },\n KMF: { fractionDigits: 0 },\n KPW: { fractionDigits: 2 },\n KRW: { fractionDigits: 0 },\n KWD: { fractionDigits: 3 },\n KYD: { fractionDigits: 2 },\n KZT: { fractionDigits: 2 },\n LAK: { fractionDigits: 2 },\n LBP: { fractionDigits: 2 },\n LKR: { fractionDigits: 2 },\n LRD: { fractionDigits: 2 },\n LSL: { fractionDigits: 2 },\n LTL: { fractionDigits: 2 },\n LUF: { fractionDigits: 0 },\n LVL: { fractionDigits: 2 },\n LYD: { fractionDigits: 3 },\n MAD: { fractionDigits: 2 },\n MDL: { fractionDigits: 2 },\n MGA: { fractionDigits: 2 },\n MGF: { fractionDigits: 0 },\n MKD: { fractionDigits: 2 },\n MMK: { fractionDigits: 2 },\n MNT: { fractionDigits: 2 },\n MOP: { fractionDigits: 2 },\n MRO: { fractionDigits: 2 },\n MTL: { fractionDigits: 2 },\n MUR: { fractionDigits: 2 },\n MVR: { fractionDigits: 2 },\n MWK: { fractionDigits: 2 },\n MXN: { fractionDigits: 2 },\n MXV: { fractionDigits: 2 },\n MYR: { fractionDigits: 2 },\n MZM: { fractionDigits: 2 },\n MZN: { fractionDigits: 2 },\n NAD: { fractionDigits: 2 },\n NGN: { fractionDigits: 2 },\n NIO: { fractionDigits: 2 },\n NLG: { fractionDigits: 2 },\n NOK: { fractionDigits: 2 },\n NPR: { fractionDigits: 2 },\n NZD: { fractionDigits: 2 },\n OMR: { fractionDigits: 3 },\n PAB: { fractionDigits: 2 },\n PEN: { fractionDigits: 2 },\n PGK: { fractionDigits: 2 },\n PHP: { fractionDigits: 2 },\n PKR: { fractionDigits: 2 },\n PLN: { fractionDigits: 2 },\n PTE: { fractionDigits: 0 },\n PYG: { fractionDigits: 0 },\n QAR: { fractionDigits: 2 },\n ROL: { fractionDigits: 2 },\n RON: { fractionDigits: 2 },\n RSD: { fractionDigits: 2 },\n RUB: { fractionDigits: 2 },\n RUR: { fractionDigits: 2 },\n RWF: { fractionDigits: 0 },\n SAR: { fractionDigits: 2 },\n SBD: { fractionDigits: 2 },\n SCR: { fractionDigits: 2 },\n SDD: { fractionDigits: 2 },\n SDG: { fractionDigits: 2 },\n SEK: { fractionDigits: 2 },\n SGD: { fractionDigits: 2 },\n SHP: { fractionDigits: 2 },\n SIT: { fractionDigits: 2 },\n SKK: { fractionDigits: 2 },\n SLL: { fractionDigits: 2 },\n SOS: { fractionDigits: 2 },\n SRD: { fractionDigits: 2 },\n SRG: { fractionDigits: 2 },\n SSP: { fractionDigits: 2 },\n STD: { fractionDigits: 2 },\n SVC: { fractionDigits: 2 },\n SYP: { fractionDigits: 2 },\n SZL: { fractionDigits: 2 },\n THB: { fractionDigits: 2 },\n TJS: { fractionDigits: 2 },\n TMM: { fractionDigits: 2 },\n TMT: { fractionDigits: 2 },\n TND: { fractionDigits: 3 },\n TOP: { fractionDigits: 2 },\n TPE: { fractionDigits: 0 },\n TRL: { fractionDigits: 0 },\n TRY: { fractionDigits: 2 },\n TTD: { fractionDigits: 2 },\n TWD: { fractionDigits: 2 },\n TZS: { fractionDigits: 2 },\n UAH: { fractionDigits: 2 },\n UGX: { fractionDigits: 0 },\n USD: { fractionDigits: 2 },\n USN: { fractionDigits: 2 },\n USS: { fractionDigits: 2 },\n UYU: { fractionDigits: 2 },\n UZS: { fractionDigits: 2 },\n VEB: { fractionDigits: 2 },\n VEF: { fractionDigits: 2 },\n VND: { fractionDigits: 0 },\n VUV: { fractionDigits: 0 },\n WST: { fractionDigits: 2 },\n XAF: { fractionDigits: 0 },\n XAG: { fractionDigits: -1 },\n XAU: { fractionDigits: -1 },\n XBA: { fractionDigits: -1 },\n XBB: { fractionDigits: -1 },\n XBC: { fractionDigits: -1 },\n XBD: { fractionDigits: -1 },\n XCD: { fractionDigits: 2 },\n XDR: { fractionDigits: -1 },\n XFO: { fractionDigits: -1 },\n XFU: { fractionDigits: -1 },\n XOF: { fractionDigits: 0 },\n XPD: { fractionDigits: -1 },\n XPF: { fractionDigits: 0 },\n XPT: { fractionDigits: -1 },\n XSU: { fractionDigits: -1 },\n XTS: { fractionDigits: -1 },\n XUA: { fractionDigits: -1 },\n XXX: { fractionDigits: -1 },\n YER: { fractionDigits: 2 },\n YUM: { fractionDigits: 2 },\n ZAR: { fractionDigits: 2 },\n ZMK: { fractionDigits: 2 },\n ZMW: { fractionDigits: 2 },\n ZWD: { fractionDigits: 2 },\n ZWL: { fractionDigits: 2 },\n ZWN: { fractionDigits: 2 },\n ZWR: { fractionDigits: 2 },\n // Zero-fraction variants (non-ISO): base currency with 0 decimal places.\n CZK0: { fractionDigits: 0 },\n HUF0: { fractionDigits: 0 },\n ILS0: { fractionDigits: 0 },\n KZT0: { fractionDigits: 0 },\n TRY0: { fractionDigits: 0 },\n TWD0: { fractionDigits: 0 },\n} as const;\n\nexport default currencies;\n","import { createSlotRecipeContext } from \"@chakra-ui/react/styled-system\";\nimport { Group } from \"@/components\";\nimport type {\n MoneyInputRootSlotProps,\n MoneyInputContainerSlotProps,\n MoneyInputCurrencySelectSlotProps,\n MoneyInputCurrencyLabelSlotProps,\n MoneyInputAmountInputSlotProps,\n MoneyInputBadgeSlotProps,\n} from \"./money-input.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"nimbusMoneyInput\",\n});\n\nexport const MoneyInputRootSlot = withProvider<\n HTMLDivElement,\n MoneyInputRootSlotProps\n>(Group, \"root\");\n\nexport const MoneyInputContainerSlot = withContext<\n HTMLDivElement,\n MoneyInputContainerSlotProps\n>(\"div\", \"container\");\n\nexport const MoneyInputCurrencySelectSlot = withContext<\n HTMLDivElement,\n MoneyInputCurrencySelectSlotProps\n>(\"div\", \"currencySelect\");\n\nexport const MoneyInputCurrencyLabelSlot = withContext<\n HTMLLabelElement,\n MoneyInputCurrencyLabelSlotProps\n>(\"label\", \"currencyLabel\");\n\nexport const MoneyInputAmountInputSlot = withContext<\n HTMLInputElement,\n MoneyInputAmountInputSlotProps\n>(\"input\", \"amountInput\");\n\nexport const MoneyInputBadgeSlot = withContext<\n HTMLDivElement,\n MoneyInputBadgeSlotProps\n>(\"div\", \"badge\");\n","import currencies from \"./currencies\";\n\nexport type CurrencyCode = keyof typeof currencies;\n\ntype MoneyConditionalProps =\n | { type: \"highPrecision\"; preciseAmount: number }\n | {\n type: \"centPrecision\";\n preciseAmount?: never;\n };\n\nexport type MoneyValue = {\n currencyCode: CurrencyCode;\n centAmount: number;\n fractionDigits: number;\n} & MoneyConditionalProps;\n\nexport type MoneyInputValue = {\n amount: string;\n currencyCode: CurrencyCode | \"\";\n};\n\n// Currency parsing utilities for MoneyInput static methods\nexport const parseStringToMoneyValue = (\n rawAmount: string,\n locale: string,\n currencyCode?: CurrencyCode | \"\"\n): MoneyValue | null => {\n if (!currencyCode) return null;\n\n const currency = currencies[currencyCode];\n if (!currency) return null;\n // The user may enter a value with a comma, dot, or apostrophe as the decimal separator.\n if (rawAmount.length === 0 || rawAmount.trim() === \"\") return null;\n\n // Only warn if locale is missing AND currency has zero fraction digits\n if (!locale && currency.fractionDigits === 0) {\n console.warn(\n `MoneyInput: A locale must be provided when currency has no fraction digits (${currencyCode})`\n );\n }\n const amountAsNumber = parseFloat(rawAmount);\n if (isNaN(amountAsNumber)) return null;\n\n // The cent amount is rounded to the currency's default number\n // of fraction digits for prices with high precision.\n //\n // Additionally, JavaScript is sometimes incorrect when multiplying floats,\n // e.g. 2.49 * 100 -> 249.00000000000003\n // While inaccuracy from multiplying floating point numbers is a\n // general problem in JS, we can avoid it by cutting off all\n // decimals. This is possible since cents is the base unit, so we\n // operate on integers anyways\n // Also we should the round the value to ensure that we come close\n // to the nearest decimal value\n // ref: https://github.com/commercetools/merchant-center-frontend/pull/770\n const centAmount = Math.trunc(\n Math.round(amountAsNumber * 10 ** currency.fractionDigits)\n );\n\n const fractionDigitsOfAmount =\n // The conversion to a string will always use a dot as the separator.\n // That means we don't have to handle a comma.\n String(amountAsNumber).indexOf(\".\") === -1\n ? 0\n : String(amountAsNumber).length - String(amountAsNumber).indexOf(\".\") - 1;\n\n if (fractionDigitsOfAmount > currency.fractionDigits) {\n return {\n type: \"highPrecision\",\n currencyCode,\n centAmount,\n preciseAmount: parseInt(\n // Here we need to convert a number like 8.066652 to its centamount\n // We could do that by multiplying it with 10 ** number-of-fraction-digits\n // but then we'll run into problems with JavaScript's floating point\n // number precision and end up with 8066651.9999999, and then parseInt\n // cuts off the remainder.\n // So instead of using maths to convert the number, we just replace\n // the dot inside the number which does the same thing.\n // We don't need to replace \",\" as well, as numbers always us a dot\n // when converted using String().\n //\n // The mathematical way: amountAsNumber * 10 ** fractionDigitsOfAmount,\n String(amountAsNumber).replace(\".\", \"\"),\n 10\n ),\n fractionDigits: fractionDigitsOfAmount,\n };\n }\n\n return {\n type: \"centPrecision\",\n currencyCode,\n centAmount,\n fractionDigits: currency.fractionDigits,\n };\n};\n\nexport const createNullMoneyValue = (\n currencyCode: CurrencyCode\n): MoneyValue => ({\n type: \"centPrecision\",\n currencyCode,\n centAmount: NaN,\n fractionDigits: 2,\n});\n\nexport const extractDecimalAmount = (moneyValue: MoneyValue) =>\n moneyValue.type === \"highPrecision\"\n ? moneyValue.preciseAmount / 10 ** moneyValue.fractionDigits\n : moneyValue.centAmount /\n 10 ** currencies[moneyValue.currencyCode].fractionDigits;\n","import currencies from \"./currencies\";\nimport {\n parseStringToMoneyValue,\n extractDecimalAmount,\n type MoneyValue,\n type MoneyInputValue,\n} from \"./parsing-utilities\";\n\n// Replace lodash/has with native implementation\nconst has = (obj: Record<string, unknown>, key: string): boolean => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\n// Static method implementations - preserve exact logic from UI Kit\nexport function getMoneyGroupAttribute(\n attr?: string,\n inputType?: string\n): string | undefined {\n return attr && inputType ? `${attr}.${inputType}` : undefined;\n}\n\nexport const transformFormInputToMoneyValue = (\n value: MoneyInputValue,\n locale: string\n) =>\n parseStringToMoneyValue(\n typeof value.amount === \"string\" ? value.amount.trim() : \"\",\n locale,\n value.currencyCode\n );\n\nexport const formatMoneyValueForDisplay = (\n moneyValue: MoneyValue,\n locale: string\n): MoneyInputValue => {\n if (!moneyValue) return { currencyCode: \"\", amount: \"\" };\n\n console.warn(\n typeof locale === \"string\",\n \"MoneyInput.parseMoneyValue: A locale must be passed as the second argument\"\n );\n\n console.warn(\n typeof moneyValue === \"object\",\n \"MoneyInput.parseMoneyValue: Value must be passed as an object or be undefined\"\n );\n\n console.warn(\n typeof moneyValue.currencyCode === \"string\",\n 'MoneyInput.parseMoneyValue: Value must contain \"currencyCode\"'\n );\n\n if (typeof moneyValue.currencyCode !== \"string\") {\n throw new Error(\n 'MoneyInput.parseMoneyValue: Value must contain \"currencyCode\"'\n );\n }\n\n console.warn(\n has(currencies, moneyValue.currencyCode),\n \"MoneyInput.parseMoneyValue: Value must use known currency code\"\n );\n\n if (!has(currencies, moneyValue.currencyCode)) {\n throw new Error(\n \"MoneyInput.parseMoneyValue: Value must use known currency code\"\n );\n }\n\n console.warn(\n // highPrecision or centPrecision values must be set\n typeof moneyValue.centAmount === \"number\" ||\n (typeof moneyValue.preciseAmount === \"number\" &&\n typeof moneyValue.fractionDigits === \"number\"),\n 'MoneyInput.parseMoneyValue: Value must contain \"amount\"'\n );\n\n // Direct formatting without circular conversion\n const amountAsNumber = extractDecimalAmount(moneyValue);\n const fractionDigits = moneyValue.preciseAmount\n ? moneyValue.fractionDigits\n : currencies[moneyValue.currencyCode].fractionDigits;\n\n const amount = isNaN(amountAsNumber)\n ? \"\"\n : amountAsNumber.toLocaleString(locale, {\n minimumFractionDigits: fractionDigits,\n });\n\n return { amount, currencyCode: moneyValue.currencyCode };\n};\n\nexport const isEmpty = (formValue: MoneyInputValue) => {\n return (\n !formValue ||\n formValue?.amount?.trim() === \"\" ||\n formValue?.currencyCode?.trim() === \"\"\n );\n};\n\nexport const isHighPrecision = (\n formValue: MoneyInputValue,\n locale: string\n): boolean => {\n if (isEmpty(formValue)) {\n return false;\n }\n const moneyValue = transformFormInputToMoneyValue(formValue, locale);\n return moneyValue?.type === \"highPrecision\";\n};\n","/**\n * Pre-compiled en messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Amount`,\n currencySelectLabel: `Currency`,\n highPrecisionPrice: `High precision price`,\n};\n","/**\n * Pre-compiled de messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Betrag`,\n currencySelectLabel: `Währung`,\n highPrecisionPrice: `Hochpräzisionspreis`,\n};\n","/**\n * Pre-compiled es messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Cantidad`,\n currencySelectLabel: `Moneda`,\n highPrecisionPrice: `Precio de alta precisión`,\n};\n","/**\n * Pre-compiled fr-FR messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Montant`,\n currencySelectLabel: `Devise`,\n highPrecisionPrice: `Prix haute précision`,\n};\n","/**\n * Pre-compiled pt-BR messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Valor`,\n currencySelectLabel: `Moeda`,\n highPrecisionPrice: `Preço de alta precisão`,\n};\n","/**\n * Pre-compiled localized messages for MoneyInput component\n *\n * Generated by scripts/generate-dictionaries.ts\n * DO NOT EDIT MANUALLY\n *\n * @see https://react-spectrum.adobe.com/react-aria/internationalization.html\n */\n\nimport {\n type LocalizedString,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { normalizeMessages } from \"../../utils/normalize-messages\";\n\n// Pre-compiled message functions\nimport moneyInputMessages_en from \"./intl/en\";\nimport moneyInputMessages_de from \"./intl/de\";\nimport moneyInputMessages_es from \"./intl/es\";\nimport moneyInputMessages_fr from \"./intl/fr-FR\";\nimport moneyInputMessages_pt from \"./intl/pt-BR\";\n\n// Raw LocalizedStrings object for use with useLocalizedStringFormatter hook\nexport const moneyInputMessagesStrings: LocalizedStrings<\n string,\n LocalizedString\n> = {\n en: normalizeMessages(moneyInputMessages_en),\n de: normalizeMessages(moneyInputMessages_de),\n es: normalizeMessages(moneyInputMessages_es),\n \"fr-FR\": normalizeMessages(moneyInputMessages_fr),\n \"pt-BR\": normalizeMessages(moneyInputMessages_pt),\n} as LocalizedStrings<string, LocalizedString>;\n\n/**\n * Available message keys for MoneyInput component\n */\nexport type MoneyInputMessageKey =\n | \"amountInputLabel\"\n | \"currencySelectLabel\"\n | \"highPrecisionPrice\";\n","import { useCallback, useMemo } from \"react\";\nimport { useSlotRecipe } from \"@chakra-ui/react/styled-system\";\nimport { useId, useLocale as useAriaLocale } from \"react-aria\";\nimport { designTokens } from \"@commercetools/nimbus-tokens\";\nimport {\n NumberInput,\n Select,\n Tooltip,\n Box,\n MakeElementFocusable,\n} from \"@/components\";\nimport { HighPrecision } from \"@commercetools/nimbus-icons\";\nimport { extractStyleProps } from \"@/utils\";\nimport { useLocalizedStringFormatter } from \"@/hooks\";\nimport currenciesData from \"./utils/currencies\";\nimport {\n MoneyInputRootSlot,\n MoneyInputContainerSlot,\n MoneyInputCurrencySelectSlot,\n MoneyInputCurrencyLabelSlot,\n MoneyInputAmountInputSlot,\n MoneyInputBadgeSlot,\n} from \"./money-input.slots\";\nimport { moneyInputRecipe } from \"./money-input.recipe\";\nimport {\n getMoneyGroupAttribute,\n isHighPrecision,\n transformFormInputToMoneyValue,\n formatMoneyValueForDisplay,\n isEmpty,\n} from \"./utils\";\nimport type {\n CustomEvent,\n MoneyInputProps,\n CurrencyCode,\n} from \"./money-input.types\";\nimport { moneyInputMessagesStrings } from \"./money-input.messages\";\n\n/**\n * # MoneyInput\n *\n * A specialized input component for entering monetary amounts with currency selection.\n * Supports high precision values and automatic locale-based formatting.\n *\n * ## Usage\n *\n * ### Modern API (Recommended)\n *\n * Use the modern event handlers for better type safety and cleaner code:\n *\n * ```tsx\n * function MyComponent() {\n * const [value, setValue] = useState<TValue>({\n * amount: \"\",\n * currencyCode: \"USD\",\n * });\n *\n * return (\n * <MoneyInput\n * value={value}\n * currencies={[\"USD\", \"EUR\", \"GBP\"]}\n * onValueChange={setValue} // Recommended: handles complete value changes\n * onAmountChange={(amount) => console.log(\"Amount:\", amount)}\n * onCurrencyChange={(currency) => console.log(\"Currency:\", currency)}\n * />\n * );\n * }\n * ```\n *\n * ### Legacy API (Deprecated)\n *\n * For backward compatibility only - migrate to modern API when possible:\n *\n * ```tsx\n * function LegacyComponent() {\n * const [value, setValue] = useState<TValue>({ amount: \"\", currencyCode: \"USD\" });\n *\n * const handleChange = (event: TCustomEvent) => {\n * const { name, value } = event.target;\n * if (name?.endsWith(\".amount\")) {\n * setValue(prev => ({ ...prev, amount: value as string }));\n * } else if (name?.endsWith(\".currencyCode\")) {\n * setValue(prev => ({ ...prev, currencyCode: value as CurrencyCode }));\n * }\n * };\n *\n * return (\n * <MoneyInput\n * value={value}\n * currencies={[\"USD\", \"EUR\"]}\n * onChange={handleChange} // Deprecated - use onValueChange instead\n * />\n * );\n * }\n * ```\n *\n * ## Features\n *\n * - **Type-safe currency handling** with CurrencyCode enum\n * - **High precision support** for values exceeding standard currency precision\n * - **Automatic locale formatting** using React Aria NumberField\n * - **Accessibility compliant** following WCAG 2.1 AA standards\n * - **Dual API support** for backward compatibility and modern development\n */\nexport const MoneyInput = (props: MoneyInputProps) => {\n const {\n id,\n name,\n value,\n currencies = [],\n onChange,\n onValueChange,\n onAmountChange,\n onCurrencyChange,\n onFocus,\n onBlur,\n isDisabled,\n isReadOnly,\n isInvalid,\n isRequired,\n hasHighPrecisionBadge = true,\n isCurrencyInputDisabled,\n placeholder = \"0.00\",\n autoFocus,\n size,\n ...restProps\n } = props;\n\n // Generate IDs\n const defaultGroupId = useId();\n const groupId = id ?? defaultGroupId;\n\n // Get locale for formatting\n const { locale: ariaLocale } = useAriaLocale();\n const msg = useLocalizedStringFormatter(moneyInputMessagesStrings);\n\n // Convert string value to number for NumberInput\n // Always use parseFloat to maintain controlled mode - parseFloat(\"\") returns NaN,\n // which keeps NumberInput controlled (vs undefined which makes it uncontrolled)\n const numericValue = parseFloat(value.amount);\n\n // Detect whether the currency select or currency label should display\n const hasNoCurrencies = !currencies || currencies.length === 0;\n\n // High precision detection using raw input value - default to en if locale is not provided\n const isCurrentlyHighPrecision = isHighPrecision(value, ariaLocale || \"en\");\n\n // Create currency-aware format options for NumberInput\n const formatOptions: Intl.NumberFormatOptions = useMemo(() => {\n if (!value.currencyCode) return {};\n\n // Decimal style: pure number formatting without currency symbols\n // Handles high precision mode for extended decimal places\n return {\n minimumFractionDigits: currenciesData[value.currencyCode].fractionDigits, // Always respect currency minimum (e.g., 2 for USD, 0 for JPY)\n maximumFractionDigits: 20, // Always use a maximum of 20 decimal places to match API precision\n useGrouping: true, // Keep thousand separators for readability (formatted per locale)\n style: \"decimal\", // Use decimal to avoid currency symbol conflicts\n };\n }, [value.currencyCode]);\n\n // Recipe setup\n const recipe = useSlotRecipe({ recipe: moneyInputRecipe });\n const [recipeProps, recipeRestProps] = recipe.splitVariantProps({\n ...restProps,\n size,\n });\n const [styleProps, remainingProps] = extractStyleProps(recipeRestProps);\n\n // Id's and Names for each group input type\n const amountInputId = getMoneyGroupAttribute(groupId, \"amount\");\n const currencySelectId = getMoneyGroupAttribute(groupId, \"currencyCode\");\n const amountInputName = getMoneyGroupAttribute(name, \"amount\");\n const currencySelectName = getMoneyGroupAttribute(name, \"currencyCode\");\n\n // Event handlers - NumberInput will preserve decimal precision with new settings\n const handleAmountChange = useCallback(\n (newValue: number) => {\n const stringValue = newValue.toString();\n\n // Support legacy API\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: stringValue,\n },\n };\n onChange?.(event);\n\n // Support modern APIs\n const newValueObject = { ...value, amount: stringValue };\n onValueChange?.(newValueObject);\n onAmountChange?.(stringValue);\n },\n [\n onChange,\n onValueChange,\n onAmountChange,\n value,\n amountInputId,\n amountInputName,\n ]\n );\n\n const handleAmountFocus = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: value.amount,\n },\n };\n onFocus?.(event);\n }, [onFocus, value.amount, amountInputId, amountInputName]);\n\n const handleAmountBlur = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: value.amount,\n },\n };\n onBlur?.(event);\n }, [onBlur, value, amountInputId, amountInputName]);\n\n const handleCurrencyChange = useCallback(\n (currencyCode: string) => {\n // Support legacy API\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: currencyCode,\n },\n };\n onChange?.(event);\n\n // Support modern APIs\n const newValueObject = {\n ...value,\n currencyCode: currencyCode as CurrencyCode,\n };\n onValueChange?.(newValueObject);\n onCurrencyChange?.(currencyCode as CurrencyCode);\n },\n [\n onChange,\n onValueChange,\n onCurrencyChange,\n value,\n currencySelectId,\n currencySelectName,\n ]\n );\n\n const handleCurrencyFocus = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: value.currencyCode,\n },\n };\n onFocus?.(event);\n }, [onFocus, value.currencyCode, currencySelectId, currencySelectName]);\n\n const handleCurrencyBlur = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: value.currencyCode,\n },\n };\n onBlur?.(event);\n }, [onBlur, value.currencyCode, currencySelectId, currencySelectName]);\n\n const handleCurrencySelectionChange = useCallback(\n (selectedKey: string | number | null) => {\n if (selectedKey && typeof selectedKey === \"string\") {\n handleCurrencyChange(selectedKey);\n }\n },\n [handleCurrencyChange]\n );\n\n const noCurrenciesLabelId = useId();\n const highPrecisionBadgeId = useId();\n\n return (\n <MoneyInputRootSlot {...recipeProps} {...styleProps} {...remainingProps}>\n <MoneyInputContainerSlot>\n {/* Currency Select or Label */}\n <MoneyInputCurrencySelectSlot>\n {hasNoCurrencies ? (\n <MoneyInputCurrencyLabelSlot\n {...(isDisabled && { \"data-disabled\": isDisabled })}\n asChild\n >\n <label id={noCurrenciesLabelId}>{value.currencyCode}</label>\n </MoneyInputCurrencyLabelSlot>\n ) : (\n <Select.Root\n id={currencySelectId}\n name={currencySelectName}\n selectedKey={value.currencyCode || null}\n onSelectionChange={handleCurrencySelectionChange}\n onFocus={handleCurrencyFocus}\n onBlur={handleCurrencyBlur}\n isDisabled={isCurrencyInputDisabled || isDisabled || isReadOnly}\n isClearable={false}\n placeholder=\"\"\n aria-label={msg.format(\"currencySelectLabel\")}\n size={size}\n >\n <Select.Options>\n {currencies.map((currencyCode) => (\n <Select.Option key={currencyCode} id={currencyCode}>\n {currencyCode}\n </Select.Option>\n ))}\n </Select.Options>\n </Select.Root>\n )}\n </MoneyInputCurrencySelectSlot>\n\n {/* Amount Input - NumberInput handles live user interaction */}\n <MoneyInputAmountInputSlot\n data-has-high-precision={\n hasHighPrecisionBadge && isCurrentlyHighPrecision\n }\n asChild\n >\n <NumberInput\n id={amountInputId}\n name={amountInputName}\n value={numericValue}\n formatOptions={formatOptions}\n onChange={handleAmountChange}\n onFocus={handleAmountFocus}\n onBlur={handleAmountBlur}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isRequired={isRequired}\n placeholder={placeholder}\n autoFocus={autoFocus}\n size={size}\n //base accessible name: \"Amount\"\n aria-label={msg.format(\"amountInputLabel\")}\n // accessible name when hasNoCurrencies=true: \"<CURRENCY_CODE> Amount\"\n aria-labelledby={noCurrenciesLabelId}\n // accessible name when high precision: \"High Precision Amount\"\n aria-describedby={highPrecisionBadgeId}\n // See the types file for why we don't use step\n step={undefined}\n />\n </MoneyInputAmountInputSlot>\n {/* High Precision Badge */}\n {hasHighPrecisionBadge && isCurrentlyHighPrecision && (\n <MoneyInputBadgeSlot>\n <Tooltip.Root delay={0} closeDelay={0}>\n <MakeElementFocusable>\n <Box\n as={HighPrecision}\n id={highPrecisionBadgeId}\n color={isDisabled ? \"neutral.8\" : \"neutral.11\"}\n aria-label={msg.format(\"highPrecisionPrice\")}\n // Position the badge correctly as we don't want layout shift that occurs with trailingElement use in the underlying NumberInput\n transform={`translateX(-${designTokens.spacing[\"1200\"]})`}\n />\n </MakeElementFocusable>\n <Tooltip.Content placement=\"top\">\n {msg.format(\"highPrecisionPrice\")}\n </Tooltip.Content>\n </Tooltip.Root>\n </MoneyInputBadgeSlot>\n )}\n </MoneyInputContainerSlot>\n </MoneyInputRootSlot>\n );\n};\n\n// Static methods for UI-Kit compatibility and internal utilities\nMoneyInput.getAmountInputId = (id?: string) =>\n getMoneyGroupAttribute(id, \"amount\");\nMoneyInput.getCurrencyDropdownId = (id?: string) =>\n getMoneyGroupAttribute(id, \"currencyCode\");\nMoneyInput.convertToMoneyValue = transformFormInputToMoneyValue;\nMoneyInput.parseMoneyValue = formatMoneyValueForDisplay;\nMoneyInput.isEmpty = isEmpty;\nMoneyInput.isHighPrecision = isHighPrecision;\n\n// Display name\nMoneyInput.displayName = \"MoneyInput\";\n"],"names":["currencies","withProvider","withContext","createSlotRecipeContext","MoneyInputRootSlot","Group","MoneyInputContainerSlot","MoneyInputCurrencySelectSlot","MoneyInputCurrencyLabelSlot","MoneyInputAmountInputSlot","MoneyInputBadgeSlot","parseStringToMoneyValue","rawAmount","locale","currencyCode","currency","amountAsNumber","centAmount","fractionDigitsOfAmount","extractDecimalAmount","moneyValue","has","obj","key","getMoneyGroupAttribute","attr","inputType","transformFormInputToMoneyValue","value","formatMoneyValueForDisplay","fractionDigits","isEmpty","formValue","isHighPrecision","moneyInputMessages_en","moneyInputMessages_de","moneyInputMessages_es","moneyInputMessages_fr","moneyInputMessages_pt","moneyInputMessagesStrings","normalizeMessages","MoneyInput","props","id","name","onChange","onValueChange","onAmountChange","onCurrencyChange","onFocus","onBlur","isDisabled","isReadOnly","isInvalid","isRequired","hasHighPrecisionBadge","isCurrencyInputDisabled","placeholder","autoFocus","size","restProps","defaultGroupId","useId","groupId","ariaLocale","useAriaLocale","msg","useLocalizedStringFormatter","numericValue","hasNoCurrencies","isCurrentlyHighPrecision","formatOptions","useMemo","currenciesData","recipe","useSlotRecipe","moneyInputRecipe","recipeProps","recipeRestProps","styleProps","remainingProps","extractStyleProps","amountInputId","currencySelectId","amountInputName","currencySelectName","handleAmountChange","useCallback","newValue","stringValue","newValueObject","handleAmountFocus","event","handleAmountBlur","handleCurrencyChange","handleCurrencyFocus","handleCurrencyBlur","handleCurrencySelectionChange","selectedKey","noCurrenciesLabelId","highPrecisionBadgeId","jsx","jsxs","Select","NumberInput","Tooltip","MakeElementFocusable","Box","HighPrecision","designTokens"],"mappings":";;;;;;;;;;;;;;;;AAeA,MAAMA,IAAa;AAAA,EACjB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EA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"}
|
|
1
|
+
{"version":3,"file":"money-input-C0FNshvC.es.js","sources":["../../src/components/money-input/utils/currencies.ts","../../src/components/money-input/money-input.slots.tsx","../../src/components/money-input/utils/parsing-utilities.ts","../../src/components/money-input/utils/static-methods.ts","../../src/components/money-input/intl/en.ts","../../src/components/money-input/intl/de.ts","../../src/components/money-input/intl/es.ts","../../src/components/money-input/intl/fr-FR.ts","../../src/components/money-input/intl/pt-BR.ts","../../src/components/money-input/money-input.messages.ts","../../src/components/money-input/money-input.tsx"],"sourcesContent":["// ARCHITECTURE NOTE: Shared Currency Data\n//\n// This currency data is used by TWO INDEPENDENT formatting systems:\n//\n// 1. NumberInput System (live user interaction):\n// - Creates format options for NumberInput\n// - Powers React Aria NumberField formatting as users type\n//\n// 2. MoneyInput Static Methods System (API compatibility):\n// - Uses parseStringToMoneyValue() + TMoneyValue objects\n// - Only triggered by explicit static method calls\n//\n// Both systems access this same data but for different purposes.\n// Changes here affect both NumberInput behavior AND MoneyInput static methods.\n\nconst currencies = {\n ADP: { fractionDigits: 0 },\n AED: { fractionDigits: 2 },\n AFA: { fractionDigits: 2 },\n AFN: { fractionDigits: 2 },\n ALL: { fractionDigits: 2 },\n AMD: { fractionDigits: 2 },\n ANG: { fractionDigits: 2 },\n AOA: { fractionDigits: 2 },\n ARS: { fractionDigits: 2 },\n ATS: { fractionDigits: 2 },\n AUD: { fractionDigits: 2 },\n AWG: { fractionDigits: 2 },\n AYM: { fractionDigits: 2 },\n AZM: { fractionDigits: 2 },\n AZN: { fractionDigits: 2 },\n BAM: { fractionDigits: 2 },\n BBD: { fractionDigits: 2 },\n BDT: { fractionDigits: 2 },\n BEF: { fractionDigits: 0 },\n BGL: { fractionDigits: 2 },\n BGN: { fractionDigits: 2 },\n BHD: { fractionDigits: 3 },\n BIF: { fractionDigits: 0 },\n BMD: { fractionDigits: 2 },\n BND: { fractionDigits: 2 },\n BOB: { fractionDigits: 2 },\n BOV: { fractionDigits: 2 },\n BRL: { fractionDigits: 2 },\n BSD: { fractionDigits: 2 },\n BTN: { fractionDigits: 2 },\n BWP: { fractionDigits: 2 },\n BYB: { fractionDigits: 0 },\n BYN: { fractionDigits: 2 },\n BYR: { fractionDigits: 0 },\n BZD: { fractionDigits: 2 },\n CAD: { fractionDigits: 2 },\n CDF: { fractionDigits: 2 },\n CHF: { fractionDigits: 2 },\n CLF: { fractionDigits: 0 },\n CLP: { fractionDigits: 0 },\n CNY: { fractionDigits: 2 },\n COP: { fractionDigits: 2 },\n CRC: { fractionDigits: 2 },\n CSD: { fractionDigits: 2 },\n CUC: { fractionDigits: 2 },\n CUP: { fractionDigits: 2 },\n CVE: { fractionDigits: 2 },\n CYP: { fractionDigits: 2 },\n CZK: { fractionDigits: 2 },\n DEM: { fractionDigits: 2 },\n DJF: { fractionDigits: 0 },\n DKK: { fractionDigits: 2 },\n DOP: { fractionDigits: 2 },\n DZD: { fractionDigits: 2 },\n EEK: { fractionDigits: 2 },\n EGP: { fractionDigits: 2 },\n ERN: { fractionDigits: 2 },\n ESP: { fractionDigits: 0 },\n ETB: { fractionDigits: 2 },\n EUR: { fractionDigits: 2 },\n FIM: { fractionDigits: 2 },\n FJD: { fractionDigits: 2 },\n FKP: { fractionDigits: 2 },\n FRF: { fractionDigits: 2 },\n GBP: { fractionDigits: 2 },\n GEL: { fractionDigits: 2 },\n GHC: { fractionDigits: 2 },\n GHS: { fractionDigits: 2 },\n GIP: { fractionDigits: 2 },\n GMD: { fractionDigits: 2 },\n GNF: { fractionDigits: 0 },\n GRD: { fractionDigits: 0 },\n GTQ: { fractionDigits: 2 },\n GWP: { fractionDigits: 2 },\n GYD: { fractionDigits: 2 },\n HKD: { fractionDigits: 2 },\n HNL: { fractionDigits: 2 },\n HRK: { fractionDigits: 2 },\n HTG: { fractionDigits: 2 },\n HUF: { fractionDigits: 2 },\n IDR: { fractionDigits: 2 },\n IEP: { fractionDigits: 2 },\n ILS: { fractionDigits: 2 },\n INR: { fractionDigits: 2 },\n IQD: { fractionDigits: 3 },\n IRR: { fractionDigits: 2 },\n ISK: { fractionDigits: 0 },\n ITL: { fractionDigits: 0 },\n JMD: { fractionDigits: 2 },\n JOD: { fractionDigits: 3 },\n JPY: { fractionDigits: 0 },\n KES: { fractionDigits: 2 },\n KGS: { fractionDigits: 2 },\n KHR: { fractionDigits: 2 },\n KMF: { fractionDigits: 0 },\n KPW: { fractionDigits: 2 },\n KRW: { fractionDigits: 0 },\n KWD: { fractionDigits: 3 },\n KYD: { fractionDigits: 2 },\n KZT: { fractionDigits: 2 },\n LAK: { fractionDigits: 2 },\n LBP: { fractionDigits: 2 },\n LKR: { fractionDigits: 2 },\n LRD: { fractionDigits: 2 },\n LSL: { fractionDigits: 2 },\n LTL: { fractionDigits: 2 },\n LUF: { fractionDigits: 0 },\n LVL: { fractionDigits: 2 },\n LYD: { fractionDigits: 3 },\n MAD: { fractionDigits: 2 },\n MDL: { fractionDigits: 2 },\n MGA: { fractionDigits: 2 },\n MGF: { fractionDigits: 0 },\n MKD: { fractionDigits: 2 },\n MMK: { fractionDigits: 2 },\n MNT: { fractionDigits: 2 },\n MOP: { fractionDigits: 2 },\n MRO: { fractionDigits: 2 },\n MTL: { fractionDigits: 2 },\n MUR: { fractionDigits: 2 },\n MVR: { fractionDigits: 2 },\n MWK: { fractionDigits: 2 },\n MXN: { fractionDigits: 2 },\n MXV: { fractionDigits: 2 },\n MYR: { fractionDigits: 2 },\n MZM: { fractionDigits: 2 },\n MZN: { fractionDigits: 2 },\n NAD: { fractionDigits: 2 },\n NGN: { fractionDigits: 2 },\n NIO: { fractionDigits: 2 },\n NLG: { fractionDigits: 2 },\n NOK: { fractionDigits: 2 },\n NPR: { fractionDigits: 2 },\n NZD: { fractionDigits: 2 },\n OMR: { fractionDigits: 3 },\n PAB: { fractionDigits: 2 },\n PEN: { fractionDigits: 2 },\n PGK: { fractionDigits: 2 },\n PHP: { fractionDigits: 2 },\n PKR: { fractionDigits: 2 },\n PLN: { fractionDigits: 2 },\n PTE: { fractionDigits: 0 },\n PYG: { fractionDigits: 0 },\n QAR: { fractionDigits: 2 },\n ROL: { fractionDigits: 2 },\n RON: { fractionDigits: 2 },\n RSD: { fractionDigits: 2 },\n RUB: { fractionDigits: 2 },\n RUR: { fractionDigits: 2 },\n RWF: { fractionDigits: 0 },\n SAR: { fractionDigits: 2 },\n SBD: { fractionDigits: 2 },\n SCR: { fractionDigits: 2 },\n SDD: { fractionDigits: 2 },\n SDG: { fractionDigits: 2 },\n SEK: { fractionDigits: 2 },\n SGD: { fractionDigits: 2 },\n SHP: { fractionDigits: 2 },\n SIT: { fractionDigits: 2 },\n SKK: { fractionDigits: 2 },\n SLL: { fractionDigits: 2 },\n SOS: { fractionDigits: 2 },\n SRD: { fractionDigits: 2 },\n SRG: { fractionDigits: 2 },\n SSP: { fractionDigits: 2 },\n STD: { fractionDigits: 2 },\n SVC: { fractionDigits: 2 },\n SYP: { fractionDigits: 2 },\n SZL: { fractionDigits: 2 },\n THB: { fractionDigits: 2 },\n TJS: { fractionDigits: 2 },\n TMM: { fractionDigits: 2 },\n TMT: { fractionDigits: 2 },\n TND: { fractionDigits: 3 },\n TOP: { fractionDigits: 2 },\n TPE: { fractionDigits: 0 },\n TRL: { fractionDigits: 0 },\n TRY: { fractionDigits: 2 },\n TTD: { fractionDigits: 2 },\n TWD: { fractionDigits: 2 },\n TZS: { fractionDigits: 2 },\n UAH: { fractionDigits: 2 },\n UGX: { fractionDigits: 0 },\n USD: { fractionDigits: 2 },\n USN: { fractionDigits: 2 },\n USS: { fractionDigits: 2 },\n UYU: { fractionDigits: 2 },\n UZS: { fractionDigits: 2 },\n VEB: { fractionDigits: 2 },\n VEF: { fractionDigits: 2 },\n VND: { fractionDigits: 0 },\n VUV: { fractionDigits: 0 },\n WST: { fractionDigits: 2 },\n XAF: { fractionDigits: 0 },\n XAG: { fractionDigits: -1 },\n XAU: { fractionDigits: -1 },\n XBA: { fractionDigits: -1 },\n XBB: { fractionDigits: -1 },\n XBC: { fractionDigits: -1 },\n XBD: { fractionDigits: -1 },\n XCD: { fractionDigits: 2 },\n XDR: { fractionDigits: -1 },\n XFO: { fractionDigits: -1 },\n XFU: { fractionDigits: -1 },\n XOF: { fractionDigits: 0 },\n XPD: { fractionDigits: -1 },\n XPF: { fractionDigits: 0 },\n XPT: { fractionDigits: -1 },\n XSU: { fractionDigits: -1 },\n XTS: { fractionDigits: -1 },\n XUA: { fractionDigits: -1 },\n XXX: { fractionDigits: -1 },\n YER: { fractionDigits: 2 },\n YUM: { fractionDigits: 2 },\n ZAR: { fractionDigits: 2 },\n ZMK: { fractionDigits: 2 },\n ZMW: { fractionDigits: 2 },\n ZWD: { fractionDigits: 2 },\n ZWL: { fractionDigits: 2 },\n ZWN: { fractionDigits: 2 },\n ZWR: { fractionDigits: 2 },\n // Zero-fraction variants (non-ISO): base currency with 0 decimal places.\n CZK0: { fractionDigits: 0 },\n HUF0: { fractionDigits: 0 },\n ILS0: { fractionDigits: 0 },\n KZT0: { fractionDigits: 0 },\n TRY0: { fractionDigits: 0 },\n TWD0: { fractionDigits: 0 },\n} as const;\n\nexport default currencies;\n","import { createSlotRecipeContext } from \"@chakra-ui/react/styled-system\";\nimport { Group } from \"@/components\";\nimport type {\n MoneyInputRootSlotProps,\n MoneyInputContainerSlotProps,\n MoneyInputCurrencySelectSlotProps,\n MoneyInputCurrencyLabelSlotProps,\n MoneyInputAmountInputSlotProps,\n MoneyInputBadgeSlotProps,\n} from \"./money-input.types\";\n\nconst { withProvider, withContext } = createSlotRecipeContext({\n key: \"nimbusMoneyInput\",\n});\n\nexport const MoneyInputRootSlot = withProvider<\n HTMLDivElement,\n MoneyInputRootSlotProps\n>(Group, \"root\");\n\nexport const MoneyInputContainerSlot = withContext<\n HTMLDivElement,\n MoneyInputContainerSlotProps\n>(\"div\", \"container\");\n\nexport const MoneyInputCurrencySelectSlot = withContext<\n HTMLDivElement,\n MoneyInputCurrencySelectSlotProps\n>(\"div\", \"currencySelect\");\n\nexport const MoneyInputCurrencyLabelSlot = withContext<\n HTMLLabelElement,\n MoneyInputCurrencyLabelSlotProps\n>(\"label\", \"currencyLabel\");\n\nexport const MoneyInputAmountInputSlot = withContext<\n HTMLInputElement,\n MoneyInputAmountInputSlotProps\n>(\"input\", \"amountInput\");\n\nexport const MoneyInputBadgeSlot = withContext<\n HTMLDivElement,\n MoneyInputBadgeSlotProps\n>(\"div\", \"badge\");\n","import currencies from \"./currencies\";\n\nexport type CurrencyCode = keyof typeof currencies;\n\ntype MoneyConditionalProps =\n | { type: \"highPrecision\"; preciseAmount: number }\n | {\n type: \"centPrecision\";\n preciseAmount?: never;\n };\n\nexport type MoneyValue = {\n currencyCode: CurrencyCode;\n centAmount: number;\n fractionDigits: number;\n} & MoneyConditionalProps;\n\nexport type MoneyInputValue = {\n amount: string;\n currencyCode: CurrencyCode | \"\";\n};\n\n// Currency parsing utilities for MoneyInput static methods\nexport const parseStringToMoneyValue = (\n rawAmount: string,\n locale: string,\n currencyCode?: CurrencyCode | \"\"\n): MoneyValue | null => {\n if (!currencyCode) return null;\n\n const currency = currencies[currencyCode];\n if (!currency) return null;\n // The user may enter a value with a comma, dot, or apostrophe as the decimal separator.\n if (rawAmount.length === 0 || rawAmount.trim() === \"\") return null;\n\n // Only warn if locale is missing AND currency has zero fraction digits\n if (!locale && currency.fractionDigits === 0) {\n console.warn(\n `MoneyInput: A locale must be provided when currency has no fraction digits (${currencyCode})`\n );\n }\n const amountAsNumber = parseFloat(rawAmount);\n if (isNaN(amountAsNumber)) return null;\n\n // The cent amount is rounded to the currency's default number\n // of fraction digits for prices with high precision.\n //\n // Additionally, JavaScript is sometimes incorrect when multiplying floats,\n // e.g. 2.49 * 100 -> 249.00000000000003\n // While inaccuracy from multiplying floating point numbers is a\n // general problem in JS, we can avoid it by cutting off all\n // decimals. This is possible since cents is the base unit, so we\n // operate on integers anyways\n // Also we should the round the value to ensure that we come close\n // to the nearest decimal value\n // ref: https://github.com/commercetools/merchant-center-frontend/pull/770\n const centAmount = Math.trunc(\n Math.round(amountAsNumber * 10 ** currency.fractionDigits)\n );\n\n const fractionDigitsOfAmount =\n // The conversion to a string will always use a dot as the separator.\n // That means we don't have to handle a comma.\n String(amountAsNumber).indexOf(\".\") === -1\n ? 0\n : String(amountAsNumber).length - String(amountAsNumber).indexOf(\".\") - 1;\n\n if (fractionDigitsOfAmount > currency.fractionDigits) {\n return {\n type: \"highPrecision\",\n currencyCode,\n centAmount,\n preciseAmount: parseInt(\n // Here we need to convert a number like 8.066652 to its centamount\n // We could do that by multiplying it with 10 ** number-of-fraction-digits\n // but then we'll run into problems with JavaScript's floating point\n // number precision and end up with 8066651.9999999, and then parseInt\n // cuts off the remainder.\n // So instead of using maths to convert the number, we just replace\n // the dot inside the number which does the same thing.\n // We don't need to replace \",\" as well, as numbers always us a dot\n // when converted using String().\n //\n // The mathematical way: amountAsNumber * 10 ** fractionDigitsOfAmount,\n String(amountAsNumber).replace(\".\", \"\"),\n 10\n ),\n fractionDigits: fractionDigitsOfAmount,\n };\n }\n\n return {\n type: \"centPrecision\",\n currencyCode,\n centAmount,\n fractionDigits: currency.fractionDigits,\n };\n};\n\nexport const createNullMoneyValue = (\n currencyCode: CurrencyCode\n): MoneyValue => ({\n type: \"centPrecision\",\n currencyCode,\n centAmount: NaN,\n fractionDigits: 2,\n});\n\nexport const extractDecimalAmount = (moneyValue: MoneyValue) =>\n moneyValue.type === \"highPrecision\"\n ? moneyValue.preciseAmount / 10 ** moneyValue.fractionDigits\n : moneyValue.centAmount /\n 10 ** currencies[moneyValue.currencyCode].fractionDigits;\n","import currencies from \"./currencies\";\nimport {\n parseStringToMoneyValue,\n extractDecimalAmount,\n type MoneyValue,\n type MoneyInputValue,\n} from \"./parsing-utilities\";\n\n// Replace lodash/has with native implementation\nconst has = (obj: Record<string, unknown>, key: string): boolean => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\n// Static method implementations - preserve exact logic from UI Kit\nexport function getMoneyGroupAttribute(\n attr?: string,\n inputType?: string\n): string | undefined {\n return attr && inputType ? `${attr}.${inputType}` : undefined;\n}\n\nexport const transformFormInputToMoneyValue = (\n value: MoneyInputValue,\n locale: string\n) =>\n parseStringToMoneyValue(\n typeof value.amount === \"string\" ? value.amount.trim() : \"\",\n locale,\n value.currencyCode\n );\n\nexport const formatMoneyValueForDisplay = (\n moneyValue: MoneyValue,\n locale: string\n): MoneyInputValue => {\n if (!moneyValue) return { currencyCode: \"\", amount: \"\" };\n\n console.warn(\n typeof locale === \"string\",\n \"MoneyInput.parseMoneyValue: A locale must be passed as the second argument\"\n );\n\n console.warn(\n typeof moneyValue === \"object\",\n \"MoneyInput.parseMoneyValue: Value must be passed as an object or be undefined\"\n );\n\n console.warn(\n typeof moneyValue.currencyCode === \"string\",\n 'MoneyInput.parseMoneyValue: Value must contain \"currencyCode\"'\n );\n\n if (typeof moneyValue.currencyCode !== \"string\") {\n throw new Error(\n 'MoneyInput.parseMoneyValue: Value must contain \"currencyCode\"'\n );\n }\n\n console.warn(\n has(currencies, moneyValue.currencyCode),\n \"MoneyInput.parseMoneyValue: Value must use known currency code\"\n );\n\n if (!has(currencies, moneyValue.currencyCode)) {\n throw new Error(\n \"MoneyInput.parseMoneyValue: Value must use known currency code\"\n );\n }\n\n console.warn(\n // highPrecision or centPrecision values must be set\n typeof moneyValue.centAmount === \"number\" ||\n (typeof moneyValue.preciseAmount === \"number\" &&\n typeof moneyValue.fractionDigits === \"number\"),\n 'MoneyInput.parseMoneyValue: Value must contain \"amount\"'\n );\n\n // Direct formatting without circular conversion\n const amountAsNumber = extractDecimalAmount(moneyValue);\n const fractionDigits = moneyValue.preciseAmount\n ? moneyValue.fractionDigits\n : currencies[moneyValue.currencyCode].fractionDigits;\n\n const amount = isNaN(amountAsNumber)\n ? \"\"\n : amountAsNumber.toLocaleString(locale, {\n minimumFractionDigits: fractionDigits,\n });\n\n return { amount, currencyCode: moneyValue.currencyCode };\n};\n\nexport const isEmpty = (formValue: MoneyInputValue) => {\n return (\n !formValue ||\n formValue?.amount?.trim() === \"\" ||\n formValue?.currencyCode?.trim() === \"\"\n );\n};\n\nexport const isHighPrecision = (\n formValue: MoneyInputValue,\n locale: string\n): boolean => {\n if (isEmpty(formValue)) {\n return false;\n }\n const moneyValue = transformFormInputToMoneyValue(formValue, locale);\n return moneyValue?.type === \"highPrecision\";\n};\n","/**\n * Pre-compiled en messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Amount`,\n currencySelectLabel: `Currency`,\n highPrecisionPrice: `High precision price`,\n};\n","/**\n * Pre-compiled de messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Betrag`,\n currencySelectLabel: `Währung`,\n highPrecisionPrice: `Hochpräzisionspreis`,\n};\n","/**\n * Pre-compiled es messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Cantidad`,\n currencySelectLabel: `Moneda`,\n highPrecisionPrice: `Precio de alta precisión`,\n};\n","/**\n * Pre-compiled fr-FR messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Montant`,\n currencySelectLabel: `Devise`,\n highPrecisionPrice: `Prix haute précision`,\n};\n","/**\n * Pre-compiled pt-BR messages for MoneyInput\n * Generated by @internationalized/string-compiler\n * DO NOT EDIT MANUALLY\n */\n\nexport default {\n amountInputLabel: `Valor`,\n currencySelectLabel: `Moeda`,\n highPrecisionPrice: `Preço de alta precisão`,\n};\n","/**\n * Pre-compiled localized messages for MoneyInput component\n *\n * Generated by scripts/generate-dictionaries.ts\n * DO NOT EDIT MANUALLY\n *\n * @see https://react-spectrum.adobe.com/react-aria/internationalization.html\n */\n\nimport {\n type LocalizedString,\n type LocalizedStrings,\n} from \"@internationalized/string\";\nimport { normalizeMessages } from \"../../utils/normalize-messages\";\n\n// Pre-compiled message functions\nimport moneyInputMessages_en from \"./intl/en\";\nimport moneyInputMessages_de from \"./intl/de\";\nimport moneyInputMessages_es from \"./intl/es\";\nimport moneyInputMessages_fr from \"./intl/fr-FR\";\nimport moneyInputMessages_pt from \"./intl/pt-BR\";\n\n// Raw LocalizedStrings object for use with useLocalizedStringFormatter hook\nexport const moneyInputMessagesStrings: LocalizedStrings<\n string,\n LocalizedString\n> = {\n en: normalizeMessages(moneyInputMessages_en),\n de: normalizeMessages(moneyInputMessages_de),\n es: normalizeMessages(moneyInputMessages_es),\n \"fr-FR\": normalizeMessages(moneyInputMessages_fr),\n \"pt-BR\": normalizeMessages(moneyInputMessages_pt),\n} as LocalizedStrings<string, LocalizedString>;\n\n/**\n * Available message keys for MoneyInput component\n */\nexport type MoneyInputMessageKey =\n | \"amountInputLabel\"\n | \"currencySelectLabel\"\n | \"highPrecisionPrice\";\n","import { useCallback, useMemo } from \"react\";\nimport { useSlotRecipe } from \"@chakra-ui/react/styled-system\";\nimport { useId, useLocale as useAriaLocale } from \"react-aria\";\nimport { designTokens } from \"@commercetools/nimbus-tokens\";\nimport {\n NumberInput,\n Select,\n Tooltip,\n Box,\n MakeElementFocusable,\n} from \"@/components\";\nimport { HighPrecision } from \"@commercetools/nimbus-icons\";\nimport { extractStyleProps } from \"@/utils\";\nimport { useLocalizedStringFormatter } from \"@/hooks\";\nimport currenciesData from \"./utils/currencies\";\nimport {\n MoneyInputRootSlot,\n MoneyInputContainerSlot,\n MoneyInputCurrencySelectSlot,\n MoneyInputCurrencyLabelSlot,\n MoneyInputAmountInputSlot,\n MoneyInputBadgeSlot,\n} from \"./money-input.slots\";\nimport { moneyInputRecipe } from \"./money-input.recipe\";\nimport {\n getMoneyGroupAttribute,\n isHighPrecision,\n transformFormInputToMoneyValue,\n formatMoneyValueForDisplay,\n isEmpty,\n} from \"./utils\";\nimport type {\n CustomEvent,\n MoneyInputProps,\n CurrencyCode,\n} from \"./money-input.types\";\nimport { moneyInputMessagesStrings } from \"./money-input.messages\";\n\n/**\n * # MoneyInput\n *\n * A specialized input component for entering monetary amounts with currency selection.\n * Supports high precision values and automatic locale-based formatting.\n *\n * ## Usage\n *\n * ### Modern API (Recommended)\n *\n * Use the modern event handlers for better type safety and cleaner code:\n *\n * ```tsx\n * function MyComponent() {\n * const [value, setValue] = useState<TValue>({\n * amount: \"\",\n * currencyCode: \"USD\",\n * });\n *\n * return (\n * <MoneyInput\n * value={value}\n * currencies={[\"USD\", \"EUR\", \"GBP\"]}\n * onValueChange={setValue} // Recommended: handles complete value changes\n * onAmountChange={(amount) => console.log(\"Amount:\", amount)}\n * onCurrencyChange={(currency) => console.log(\"Currency:\", currency)}\n * />\n * );\n * }\n * ```\n *\n * ### Legacy API (Deprecated)\n *\n * For backward compatibility only - migrate to modern API when possible:\n *\n * ```tsx\n * function LegacyComponent() {\n * const [value, setValue] = useState<TValue>({ amount: \"\", currencyCode: \"USD\" });\n *\n * const handleChange = (event: TCustomEvent) => {\n * const { name, value } = event.target;\n * if (name?.endsWith(\".amount\")) {\n * setValue(prev => ({ ...prev, amount: value as string }));\n * } else if (name?.endsWith(\".currencyCode\")) {\n * setValue(prev => ({ ...prev, currencyCode: value as CurrencyCode }));\n * }\n * };\n *\n * return (\n * <MoneyInput\n * value={value}\n * currencies={[\"USD\", \"EUR\"]}\n * onChange={handleChange} // Deprecated - use onValueChange instead\n * />\n * );\n * }\n * ```\n *\n * ## Features\n *\n * - **Type-safe currency handling** with CurrencyCode enum\n * - **High precision support** for values exceeding standard currency precision\n * - **Automatic locale formatting** using React Aria NumberField\n * - **Accessibility compliant** following WCAG 2.1 AA standards\n * - **Dual API support** for backward compatibility and modern development\n */\nexport const MoneyInput = (props: MoneyInputProps) => {\n const {\n id,\n name,\n value,\n currencies = [],\n onChange,\n onValueChange,\n onAmountChange,\n onCurrencyChange,\n onFocus,\n onBlur,\n isDisabled,\n isReadOnly,\n isInvalid,\n isRequired,\n hasHighPrecisionBadge = true,\n isCurrencyInputDisabled,\n placeholder = \"0.00\",\n autoFocus,\n size,\n ...restProps\n } = props;\n\n // Generate IDs\n const defaultGroupId = useId();\n const groupId = id ?? defaultGroupId;\n\n // Get locale for formatting\n const { locale: ariaLocale } = useAriaLocale();\n const msg = useLocalizedStringFormatter(moneyInputMessagesStrings);\n\n // Convert string value to number for NumberInput\n // Always use parseFloat to maintain controlled mode - parseFloat(\"\") returns NaN,\n // which keeps NumberInput controlled (vs undefined which makes it uncontrolled)\n const numericValue = parseFloat(value.amount);\n\n // Detect whether the currency select or currency label should display\n const hasNoCurrencies = !currencies || currencies.length === 0;\n\n // High precision detection using raw input value - default to en if locale is not provided\n const isCurrentlyHighPrecision = isHighPrecision(value, ariaLocale || \"en\");\n\n // Create currency-aware format options for NumberInput\n const formatOptions: Intl.NumberFormatOptions = useMemo(() => {\n if (!value.currencyCode) return {};\n\n // Decimal style: pure number formatting without currency symbols\n // Handles high precision mode for extended decimal places\n return {\n minimumFractionDigits: currenciesData[value.currencyCode].fractionDigits, // Always respect currency minimum (e.g., 2 for USD, 0 for JPY)\n maximumFractionDigits: 20, // Always use a maximum of 20 decimal places to match API precision\n useGrouping: true, // Keep thousand separators for readability (formatted per locale)\n style: \"decimal\", // Use decimal to avoid currency symbol conflicts\n };\n }, [value.currencyCode]);\n\n // Recipe setup\n const recipe = useSlotRecipe({ recipe: moneyInputRecipe });\n const [recipeProps, recipeRestProps] = recipe.splitVariantProps({\n ...restProps,\n size,\n });\n const [styleProps, remainingProps] = extractStyleProps(recipeRestProps);\n\n // Id's and Names for each group input type\n const amountInputId = getMoneyGroupAttribute(groupId, \"amount\");\n const currencySelectId = getMoneyGroupAttribute(groupId, \"currencyCode\");\n const amountInputName = getMoneyGroupAttribute(name, \"amount\");\n const currencySelectName = getMoneyGroupAttribute(name, \"currencyCode\");\n\n // Event handlers - NumberInput will preserve decimal precision with new settings\n const handleAmountChange = useCallback(\n (newValue: number) => {\n const stringValue = newValue.toString();\n\n // Support legacy API\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: stringValue,\n },\n };\n onChange?.(event);\n\n // Support modern APIs\n const newValueObject = { ...value, amount: stringValue };\n onValueChange?.(newValueObject);\n onAmountChange?.(stringValue);\n },\n [\n onChange,\n onValueChange,\n onAmountChange,\n value,\n amountInputId,\n amountInputName,\n ]\n );\n\n const handleAmountFocus = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: value.amount,\n },\n };\n onFocus?.(event);\n }, [onFocus, value.amount, amountInputId, amountInputName]);\n\n const handleAmountBlur = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: amountInputId,\n name: amountInputName,\n value: value.amount,\n },\n };\n onBlur?.(event);\n }, [onBlur, value, amountInputId, amountInputName]);\n\n const handleCurrencyChange = useCallback(\n (currencyCode: string) => {\n // Support legacy API\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: currencyCode,\n },\n };\n onChange?.(event);\n\n // Support modern APIs\n const newValueObject = {\n ...value,\n currencyCode: currencyCode as CurrencyCode,\n };\n onValueChange?.(newValueObject);\n onCurrencyChange?.(currencyCode as CurrencyCode);\n },\n [\n onChange,\n onValueChange,\n onCurrencyChange,\n value,\n currencySelectId,\n currencySelectName,\n ]\n );\n\n const handleCurrencyFocus = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: value.currencyCode,\n },\n };\n onFocus?.(event);\n }, [onFocus, value.currencyCode, currencySelectId, currencySelectName]);\n\n const handleCurrencyBlur = useCallback(() => {\n const event: CustomEvent = {\n target: {\n id: currencySelectId,\n name: currencySelectName,\n value: value.currencyCode,\n },\n };\n onBlur?.(event);\n }, [onBlur, value.currencyCode, currencySelectId, currencySelectName]);\n\n const handleCurrencySelectionChange = useCallback(\n (selectedKey: string | number | null) => {\n if (selectedKey && typeof selectedKey === \"string\") {\n handleCurrencyChange(selectedKey);\n }\n },\n [handleCurrencyChange]\n );\n\n const noCurrenciesLabelId = useId();\n const highPrecisionBadgeId = useId();\n\n return (\n <MoneyInputRootSlot {...recipeProps} {...styleProps} {...remainingProps}>\n <MoneyInputContainerSlot>\n {/* Currency Select or Label */}\n <MoneyInputCurrencySelectSlot>\n {hasNoCurrencies ? (\n <MoneyInputCurrencyLabelSlot\n {...(isDisabled && { \"data-disabled\": isDisabled })}\n asChild\n >\n <label id={noCurrenciesLabelId}>{value.currencyCode}</label>\n </MoneyInputCurrencyLabelSlot>\n ) : (\n <Select.Root\n id={currencySelectId}\n name={currencySelectName}\n selectedKey={value.currencyCode || null}\n onSelectionChange={handleCurrencySelectionChange}\n onFocus={handleCurrencyFocus}\n onBlur={handleCurrencyBlur}\n isDisabled={isCurrencyInputDisabled || isDisabled || isReadOnly}\n isClearable={false}\n placeholder=\"\"\n aria-label={msg.format(\"currencySelectLabel\")}\n size={size}\n >\n <Select.Options>\n {currencies.map((currencyCode) => (\n <Select.Option key={currencyCode} id={currencyCode}>\n {currencyCode}\n </Select.Option>\n ))}\n </Select.Options>\n </Select.Root>\n )}\n </MoneyInputCurrencySelectSlot>\n\n {/* Amount Input - NumberInput handles live user interaction */}\n <MoneyInputAmountInputSlot\n data-has-high-precision={\n hasHighPrecisionBadge && isCurrentlyHighPrecision\n }\n asChild\n >\n <NumberInput\n id={amountInputId}\n name={amountInputName}\n value={numericValue}\n formatOptions={formatOptions}\n onChange={handleAmountChange}\n onFocus={handleAmountFocus}\n onBlur={handleAmountBlur}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isRequired={isRequired}\n placeholder={placeholder}\n autoFocus={autoFocus}\n size={size}\n //base accessible name: \"Amount\"\n aria-label={msg.format(\"amountInputLabel\")}\n // accessible name when hasNoCurrencies=true: \"<CURRENCY_CODE> Amount\"\n aria-labelledby={noCurrenciesLabelId}\n // accessible name when high precision: \"High Precision Amount\"\n aria-describedby={highPrecisionBadgeId}\n // See the types file for why we don't use step\n step={undefined}\n />\n </MoneyInputAmountInputSlot>\n {/* High Precision Badge */}\n {hasHighPrecisionBadge && isCurrentlyHighPrecision && (\n <MoneyInputBadgeSlot>\n <Tooltip.Root delay={0} closeDelay={0}>\n <MakeElementFocusable>\n <Box\n as={HighPrecision}\n id={highPrecisionBadgeId}\n color={isDisabled ? \"neutral.8\" : \"neutral.11\"}\n aria-label={msg.format(\"highPrecisionPrice\")}\n // Position the badge correctly as we don't want layout shift that occurs with trailingElement use in the underlying NumberInput\n transform={`translateX(-${designTokens.spacing[\"1200\"]})`}\n />\n </MakeElementFocusable>\n <Tooltip.Content placement=\"top\">\n {msg.format(\"highPrecisionPrice\")}\n </Tooltip.Content>\n </Tooltip.Root>\n </MoneyInputBadgeSlot>\n )}\n </MoneyInputContainerSlot>\n </MoneyInputRootSlot>\n );\n};\n\n// Static methods for UI-Kit compatibility and internal utilities\nMoneyInput.getAmountInputId = (id?: string) =>\n getMoneyGroupAttribute(id, \"amount\");\nMoneyInput.getCurrencyDropdownId = (id?: string) =>\n getMoneyGroupAttribute(id, \"currencyCode\");\nMoneyInput.convertToMoneyValue = transformFormInputToMoneyValue;\nMoneyInput.parseMoneyValue = formatMoneyValueForDisplay;\nMoneyInput.isEmpty = isEmpty;\nMoneyInput.isHighPrecision = isHighPrecision;\n\n// Display name\nMoneyInput.displayName = \"MoneyInput\";\n"],"names":["currencies","withProvider","withContext","createSlotRecipeContext","MoneyInputRootSlot","Group","MoneyInputContainerSlot","MoneyInputCurrencySelectSlot","MoneyInputCurrencyLabelSlot","MoneyInputAmountInputSlot","MoneyInputBadgeSlot","parseStringToMoneyValue","rawAmount","locale","currencyCode","currency","amountAsNumber","centAmount","fractionDigitsOfAmount","extractDecimalAmount","moneyValue","has","obj","key","getMoneyGroupAttribute","attr","inputType","transformFormInputToMoneyValue","value","formatMoneyValueForDisplay","fractionDigits","isEmpty","formValue","isHighPrecision","moneyInputMessages_en","moneyInputMessages_de","moneyInputMessages_es","moneyInputMessages_fr","moneyInputMessages_pt","moneyInputMessagesStrings","normalizeMessages","MoneyInput","props","id","name","onChange","onValueChange","onAmountChange","onCurrencyChange","onFocus","onBlur","isDisabled","isReadOnly","isInvalid","isRequired","hasHighPrecisionBadge","isCurrencyInputDisabled","placeholder","autoFocus","size","restProps","defaultGroupId","useId","groupId","ariaLocale","useAriaLocale","msg","useLocalizedStringFormatter","numericValue","hasNoCurrencies","isCurrentlyHighPrecision","formatOptions","useMemo","currenciesData","recipe","useSlotRecipe","moneyInputRecipe","recipeProps","recipeRestProps","styleProps","remainingProps","extractStyleProps","amountInputId","currencySelectId","amountInputName","currencySelectName","handleAmountChange","useCallback","newValue","stringValue","newValueObject","handleAmountFocus","event","handleAmountBlur","handleCurrencyChange","handleCurrencyFocus","handleCurrencyBlur","handleCurrencySelectionChange","selectedKey","noCurrenciesLabelId","highPrecisionBadgeId","jsx","jsxs","Select","NumberInput","Tooltip","MakeElementFocusable","Box","HighPrecision","designTokens"],"mappings":";;;;;;;;;;;;;;;;AAeA,MAAMA,IAAa;AAAA,EACjB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,GAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EACvB,KAAK,EAAE,gBAAgB,EAAA;AAAA,EA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"}
|