@12-apps/ui 6.93.2 → 6.95.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/NATIVE.md +1 -1
- package/components-catalog.md +7 -0
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +1 -1
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +1 -1
- package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
- package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +27 -27
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +36 -36
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +1 -1
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +2 -2
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +25 -25
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +6 -6
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +3 -3
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +1 -1
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +5 -5
- package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
- package/dist/_internal/components/data-display/RegionMap/RegionMap.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +1 -1
- package/dist/_internal/components/data-display/Sheet/Sheet.body.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.hooks.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +5 -5
- package/dist/_internal/components/data-display/Sheet/Sheet.parts.js +1 -1
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +39 -39
- package/dist/_internal/components/feedback/StackedModal/StackedModal.hooks.js +2 -2
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +4 -4
- package/dist/_internal/components/feedback/StackedModal/modal-stack.js +3 -1
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
- package/dist/_internal/components/feedback/UsableModal/UsableModal.js +11 -0
- package/dist/_internal/components/feedback/UsableModal/UsableModal.js.map +1 -0
- package/dist/_internal/components/feedback/UsableModal/UsableModal.modal.js +87 -0
- package/dist/_internal/components/feedback/UsableModal/UsableModal.modal.js.map +1 -0
- package/dist/_internal/components/feedback/UsableModal/UsableModal.sheet.js +91 -0
- package/dist/_internal/components/feedback/UsableModal/UsableModal.sheet.js.map +1 -0
- package/dist/_internal/components/feedback/UsableModal/UsableModal.types.js +1 -0
- package/dist/_internal/components/feedback/UsableModal/UsableModal.types.js.map +1 -0
- package/dist/_internal/components/feedback/UsableModal/has-footer.js +8 -0
- package/dist/_internal/components/feedback/UsableModal/has-footer.js.map +1 -0
- package/dist/_internal/components/feedback/UsableModal/recover-chunk.js +10 -0
- package/dist/_internal/components/feedback/UsableModal/recover-chunk.js.map +1 -0
- package/dist/_internal/components/feedback/index.js +9 -9
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +3 -3
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +5 -5
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +2 -2
- package/dist/_internal/components/form/CepField/CepField.js +3 -3
- package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
- package/dist/_internal/components/form/Command/Command.js +2 -2
- package/dist/_internal/components/form/Input/Input.factory.js +1 -1
- package/dist/_internal/components/form/Input/Input.js +2 -2
- package/dist/_internal/components/form/Menubar/Menubar.js +2 -2
- package/dist/_internal/components/form/NumberField/NumberField.js +3 -3
- package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
- package/dist/_internal/components/form/index.js +48 -48
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +3 -3
- package/dist/_internal/components/form/total-form/Fields/CepField.js +4 -4
- package/dist/_internal/components/form/total-form/Fields/TextField.js +3 -3
- package/dist/_internal/components/form/total-form/Fields/index.js +15 -15
- package/dist/_internal/components/index.js +130 -130
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +3 -3
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +2 -2
- package/dist/_internal/components/layout/index.js +17 -17
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +6 -6
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +4 -4
- package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +2 -2
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +3 -3
- package/dist/_internal/components/navigation/index.js +19 -19
- package/dist/_internal/components/utility/index.js +4 -4
- package/dist/_internal/user-avatar/user-avatar.js +3 -3
- package/dist/charts.js +11 -11
- package/dist/{chunk-NQDOKJLI.js → chunk-2365CQJU.js} +2 -2
- package/dist/{chunk-4E2RQOSQ.js → chunk-24G3BWKD.js} +2 -2
- package/dist/{chunk-XE33EZVS.js → chunk-2SBQ47RI.js} +5 -5
- package/dist/{chunk-HWZETMO4.js → chunk-37SNQQ7P.js} +3 -3
- package/dist/{chunk-I4DG3PP4.js → chunk-43EFQ3DU.js} +2 -2
- package/dist/{chunk-2L6TANRY.js → chunk-4RF4BALN.js} +3 -3
- package/dist/{chunk-X6D5JEUV.js → chunk-4RSFYS2V.js} +6 -6
- package/dist/{chunk-LYVTJLCF.js → chunk-56JF5PZK.js} +4 -4
- package/dist/{chunk-7WE432RQ.js → chunk-5HXVXW22.js} +5 -5
- package/dist/{chunk-N3GLX64O.js → chunk-5I75WRXT.js} +4 -4
- package/dist/{chunk-BP3ZKIPE.js → chunk-64UNVW6D.js} +4 -4
- package/dist/{chunk-NQ6P7O7C.js → chunk-6AKDAQSS.js} +2 -2
- package/dist/{chunk-PGJIWCQR.js → chunk-6EZQLNPK.js} +4 -4
- package/dist/{chunk-EE6DJPB7.js → chunk-6HXNFNOB.js} +4 -4
- package/dist/{chunk-4QTPERAY.js → chunk-6RW4WNGS.js} +4 -4
- package/dist/{chunk-GBB23QLL.js → chunk-6ZAKPYWX.js} +4 -4
- package/dist/{chunk-CWXX5JR3.js → chunk-75GAQL2Q.js} +5 -5
- package/dist/{chunk-JZRSHDNY.js → chunk-77FQFWA3.js} +6 -3
- package/dist/chunk-77FQFWA3.js.map +1 -0
- package/dist/{chunk-LY5I3ZSV.js → chunk-A2YLFKQU.js} +4 -4
- package/dist/{chunk-6DGNMASB.js → chunk-ALREWFRX.js} +4 -4
- package/dist/{chunk-FXECKKPW.js → chunk-ASBFGGJB.js} +6 -1
- package/dist/chunk-ASBFGGJB.js.map +1 -0
- package/dist/{chunk-F2UP5ZF4.js → chunk-BMC5KGH2.js} +4 -4
- package/dist/{chunk-BR3WBTTQ.js → chunk-BRFL7OWI.js} +7 -7
- package/dist/chunk-BTMBQIED.js +7 -0
- package/dist/chunk-BTMBQIED.js.map +1 -0
- package/dist/{chunk-UIIHUWOV.js → chunk-C7IFBYIJ.js} +7 -7
- package/dist/{chunk-FKS2PNJF.js → chunk-CSD6SWBZ.js} +6 -6
- package/dist/{chunk-6LGKJVOA.js → chunk-E2UOEI7N.js} +2 -2
- package/dist/{chunk-K2VDRODL.js → chunk-E4NFH77Z.js} +4 -4
- package/dist/{chunk-VM4UYCD4.js → chunk-FTYOCFTV.js} +3 -3
- package/dist/{chunk-JVQ56E3U.js → chunk-FWTVIRZZ.js} +6 -6
- package/dist/{chunk-3IX2TP4I.js → chunk-GB7NTXL2.js} +2 -2
- package/dist/chunk-IQDPMLDM.js +39 -0
- package/dist/chunk-IQDPMLDM.js.map +1 -0
- package/dist/{chunk-TSMF7K37.js → chunk-J4UA744J.js} +9 -2
- package/dist/chunk-J4UA744J.js.map +1 -0
- package/dist/chunk-J55SDNCE.js +53 -0
- package/dist/chunk-J55SDNCE.js.map +1 -0
- package/dist/{chunk-4J62V5OE.js → chunk-JIEVKHOH.js} +6 -6
- package/dist/{chunk-MKNW4FRR.js → chunk-JOQGKXR5.js} +5 -5
- package/dist/{chunk-E5OBAS3U.js → chunk-JQGDKWFH.js} +4 -2
- package/dist/chunk-JQGDKWFH.js.map +1 -0
- package/dist/{chunk-ASEHJIIV.js → chunk-KHDKG7XB.js} +3 -3
- package/dist/{chunk-TSID4257.js → chunk-KMMFN24G.js} +4 -4
- package/dist/{chunk-YGWLMTPB.js → chunk-KXVWH3JM.js} +2 -2
- package/dist/{chunk-LKWXU6NH.js → chunk-LV6AD6XC.js} +2 -2
- package/dist/{chunk-WQO5WONV.js → chunk-MWXZXCVX.js} +4 -4
- package/dist/{chunk-PNZH6CDD.js → chunk-NI3MC742.js} +4 -4
- package/dist/{chunk-BZYLTGOE.js → chunk-OKDKKBLI.js} +4 -4
- package/dist/{chunk-AJ6KFHEE.js → chunk-PJDAZG65.js} +2 -2
- package/dist/{chunk-NASLJO2R.js → chunk-QSZYQZZP.js} +3 -2
- package/dist/chunk-QSZYQZZP.js.map +1 -0
- package/dist/{chunk-ALMGYCHY.js → chunk-RLQVJXGW.js} +2 -2
- package/dist/{chunk-FPNVOB52.js → chunk-RNIJL54W.js} +4 -4
- package/dist/{chunk-2M3W6ACW.js → chunk-S46LGAQ2.js} +4 -4
- package/dist/{chunk-6N2U67KF.js → chunk-T3KVZTO3.js} +4 -4
- package/dist/{chunk-GY53SDVL.js → chunk-U2SAW6DH.js} +4 -4
- package/dist/{chunk-GXGHEOWC.js → chunk-USHVG4UQ.js} +2 -2
- package/dist/{chunk-2GDPZ53K.js → chunk-UTWEHMAP.js} +2 -2
- package/dist/{chunk-P772HCHI.js → chunk-W676GY42.js} +4 -4
- package/dist/{chunk-4JNC5AEF.js → chunk-WGKBZ7DN.js} +2 -2
- package/dist/{chunk-T2G4LDU5.js → chunk-WLLUARTC.js} +2 -2
- package/dist/{chunk-SI5SKX52.js → chunk-WW3F7DCX.js} +2 -2
- package/dist/{chunk-UOKXYV3U.js → chunk-XALDXR3F.js} +2 -2
- package/dist/{chunk-ZM6FJCWS.js → chunk-XNAI7QGU.js} +4 -4
- package/dist/{chunk-LZ5PGB7U.js → chunk-XRC6SF4N.js} +21 -13
- package/dist/chunk-XRC6SF4N.js.map +1 -0
- package/dist/{chunk-JXK53XJW.js → chunk-YOLLISEY.js} +9 -9
- package/dist/{chunk-FKUVFPQZ.js → chunk-Z6QFIRD7.js} +4 -4
- package/dist/{chunk-RHVJ3L4U.js → chunk-ZJY7OK6H.js} +2 -2
- package/dist/{chunk-LABIUXDM.js → chunk-ZYXXAWDF.js} +2 -2
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/CardKit.js +1 -1
- package/dist/data-display/Carousel.js +3 -3
- package/dist/data-display/Chart.js +11 -11
- package/dist/data-display/DataViews.js +44 -44
- package/dist/data-display/DayRuler.js +3 -3
- package/dist/data-display/HoverCard.js +1 -1
- package/dist/data-display/Lightbox.js +5 -5
- package/dist/data-display/RegionMap.js +2 -2
- package/dist/data-display/ScheduleGrid.js +5 -5
- package/dist/data-display/Sheet.js +5 -5
- package/dist/data-display/Table.js +3 -3
- package/dist/feedback/ConfirmAction.js +3 -3
- package/dist/feedback/StackedModal.js +4 -4
- package/dist/feedback/TutorialOverlay.js +2 -2
- package/dist/feedback/UsableModal.js +9 -0
- package/dist/feedback/UsableModal.js.map +1 -0
- package/dist/form/AddressAutocomplete.js +5 -5
- package/dist/form/CategorySelect.js +2 -2
- package/dist/form/CepField.js +3 -3
- package/dist/form/CodeEditor.js +2 -2
- package/dist/form/Command.js +2 -2
- package/dist/form/Input/outlined.js +2 -2
- package/dist/form/Input.js +2 -2
- package/dist/form/Menubar.js +2 -2
- package/dist/form/NumberField.js +3 -3
- package/dist/form/UploadButton.js +2 -2
- package/dist/form/total-form.js +13 -13
- package/dist/layout/ContentToolbar.js +3 -3
- package/dist/layout/SettingCard.js +7 -7
- package/dist/layout/SettingsLayout.js +3 -3
- package/dist/locales.js +4 -4
- package/dist/navigation/AppHeader.js +8 -8
- package/dist/navigation/NavigationMenu.js +4 -4
- package/dist/navigation/SectionNav.js +3 -3
- package/dist/pt-BR.js +5 -5
- package/dist/types/components/data-display/Sheet/Sheet.body.d.ts +2 -0
- package/dist/types/components/data-display/Sheet/Sheet.body.d.ts.map +1 -1
- package/dist/types/components/data-display/Sheet/Sheet.d.ts.map +1 -1
- package/dist/types/components/data-display/Sheet/Sheet.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/Sheet/Sheet.types.d.ts +14 -0
- package/dist/types/components/data-display/Sheet/Sheet.types.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.hooks.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/modal-stack.d.ts +6 -0
- package/dist/types/components/feedback/StackedModal/modal-stack.d.ts.map +1 -1
- package/dist/types/components/feedback/UsableModal/UsableModal.d.ts +20 -0
- package/dist/types/components/feedback/UsableModal/UsableModal.d.ts.map +1 -0
- package/dist/types/components/feedback/UsableModal/UsableModal.modal.d.ts +11 -0
- package/dist/types/components/feedback/UsableModal/UsableModal.modal.d.ts.map +1 -0
- package/dist/types/components/feedback/UsableModal/UsableModal.sheet.d.ts +17 -0
- package/dist/types/components/feedback/UsableModal/UsableModal.sheet.d.ts.map +1 -0
- package/dist/types/components/feedback/UsableModal/UsableModal.types.d.ts +35 -0
- package/dist/types/components/feedback/UsableModal/UsableModal.types.d.ts.map +1 -0
- package/dist/types/components/feedback/UsableModal/has-footer.d.ts +4 -0
- package/dist/types/components/feedback/UsableModal/has-footer.d.ts.map +1 -0
- package/dist/types/components/feedback/UsableModal/index.d.ts +3 -0
- package/dist/types/components/feedback/UsableModal/index.d.ts.map +1 -0
- package/dist/types/components/feedback/UsableModal/recover-chunk.d.ts +24 -0
- package/dist/types/components/feedback/UsableModal/recover-chunk.d.ts.map +1 -0
- package/dist/types/components/form/Input/Input.factory.d.ts.map +1 -1
- package/dist/types/components/form/Input/Input.types.d.ts +3 -2
- package/dist/types/components/form/Input/Input.types.d.ts.map +1 -1
- package/dist/user-avatar.js +3 -3
- package/package.json +5 -1
- package/src/components/data-display/Sheet/Sheet.body.tsx +4 -0
- package/src/components/data-display/Sheet/Sheet.md +5 -0
- package/src/components/data-display/Sheet/Sheet.parts.tsx +2 -1
- package/src/components/data-display/Sheet/Sheet.tsx +29 -9
- package/src/components/data-display/Sheet/Sheet.types.ts +14 -0
- package/src/components/feedback/StackedModal/StackedModal.hooks.ts +16 -0
- package/src/components/feedback/StackedModal/modal-stack.tsx +12 -2
- package/src/components/feedback/UsableModal/UsableModal.md +95 -0
- package/src/components/feedback/UsableModal/UsableModal.modal.tsx +76 -0
- package/src/components/feedback/UsableModal/UsableModal.sheet.tsx +65 -0
- package/src/components/feedback/UsableModal/UsableModal.tsx +92 -0
- package/src/components/feedback/UsableModal/UsableModal.types.ts +38 -0
- package/src/components/feedback/UsableModal/has-footer.ts +4 -0
- package/src/components/feedback/UsableModal/index.ts +2 -0
- package/src/components/feedback/UsableModal/recover-chunk.ts +61 -0
- package/src/components/form/Input/Input.factory.tsx +12 -0
- package/src/components/form/Input/Input.types.ts +3 -2
- package/dist/chunk-E5OBAS3U.js.map +0 -1
- package/dist/chunk-FXECKKPW.js.map +0 -1
- package/dist/chunk-JZRSHDNY.js.map +0 -1
- package/dist/chunk-LZ5PGB7U.js.map +0 -1
- package/dist/chunk-NASLJO2R.js.map +0 -1
- package/dist/chunk-TSMF7K37.js.map +0 -1
- /package/dist/{chunk-NQDOKJLI.js.map → chunk-2365CQJU.js.map} +0 -0
- /package/dist/{chunk-4E2RQOSQ.js.map → chunk-24G3BWKD.js.map} +0 -0
- /package/dist/{chunk-XE33EZVS.js.map → chunk-2SBQ47RI.js.map} +0 -0
- /package/dist/{chunk-HWZETMO4.js.map → chunk-37SNQQ7P.js.map} +0 -0
- /package/dist/{chunk-I4DG3PP4.js.map → chunk-43EFQ3DU.js.map} +0 -0
- /package/dist/{chunk-2L6TANRY.js.map → chunk-4RF4BALN.js.map} +0 -0
- /package/dist/{chunk-X6D5JEUV.js.map → chunk-4RSFYS2V.js.map} +0 -0
- /package/dist/{chunk-LYVTJLCF.js.map → chunk-56JF5PZK.js.map} +0 -0
- /package/dist/{chunk-7WE432RQ.js.map → chunk-5HXVXW22.js.map} +0 -0
- /package/dist/{chunk-N3GLX64O.js.map → chunk-5I75WRXT.js.map} +0 -0
- /package/dist/{chunk-BP3ZKIPE.js.map → chunk-64UNVW6D.js.map} +0 -0
- /package/dist/{chunk-NQ6P7O7C.js.map → chunk-6AKDAQSS.js.map} +0 -0
- /package/dist/{chunk-PGJIWCQR.js.map → chunk-6EZQLNPK.js.map} +0 -0
- /package/dist/{chunk-EE6DJPB7.js.map → chunk-6HXNFNOB.js.map} +0 -0
- /package/dist/{chunk-4QTPERAY.js.map → chunk-6RW4WNGS.js.map} +0 -0
- /package/dist/{chunk-GBB23QLL.js.map → chunk-6ZAKPYWX.js.map} +0 -0
- /package/dist/{chunk-CWXX5JR3.js.map → chunk-75GAQL2Q.js.map} +0 -0
- /package/dist/{chunk-LY5I3ZSV.js.map → chunk-A2YLFKQU.js.map} +0 -0
- /package/dist/{chunk-6DGNMASB.js.map → chunk-ALREWFRX.js.map} +0 -0
- /package/dist/{chunk-F2UP5ZF4.js.map → chunk-BMC5KGH2.js.map} +0 -0
- /package/dist/{chunk-BR3WBTTQ.js.map → chunk-BRFL7OWI.js.map} +0 -0
- /package/dist/{chunk-UIIHUWOV.js.map → chunk-C7IFBYIJ.js.map} +0 -0
- /package/dist/{chunk-FKS2PNJF.js.map → chunk-CSD6SWBZ.js.map} +0 -0
- /package/dist/{chunk-6LGKJVOA.js.map → chunk-E2UOEI7N.js.map} +0 -0
- /package/dist/{chunk-K2VDRODL.js.map → chunk-E4NFH77Z.js.map} +0 -0
- /package/dist/{chunk-VM4UYCD4.js.map → chunk-FTYOCFTV.js.map} +0 -0
- /package/dist/{chunk-JVQ56E3U.js.map → chunk-FWTVIRZZ.js.map} +0 -0
- /package/dist/{chunk-3IX2TP4I.js.map → chunk-GB7NTXL2.js.map} +0 -0
- /package/dist/{chunk-4J62V5OE.js.map → chunk-JIEVKHOH.js.map} +0 -0
- /package/dist/{chunk-MKNW4FRR.js.map → chunk-JOQGKXR5.js.map} +0 -0
- /package/dist/{chunk-ASEHJIIV.js.map → chunk-KHDKG7XB.js.map} +0 -0
- /package/dist/{chunk-TSID4257.js.map → chunk-KMMFN24G.js.map} +0 -0
- /package/dist/{chunk-YGWLMTPB.js.map → chunk-KXVWH3JM.js.map} +0 -0
- /package/dist/{chunk-LKWXU6NH.js.map → chunk-LV6AD6XC.js.map} +0 -0
- /package/dist/{chunk-WQO5WONV.js.map → chunk-MWXZXCVX.js.map} +0 -0
- /package/dist/{chunk-PNZH6CDD.js.map → chunk-NI3MC742.js.map} +0 -0
- /package/dist/{chunk-BZYLTGOE.js.map → chunk-OKDKKBLI.js.map} +0 -0
- /package/dist/{chunk-AJ6KFHEE.js.map → chunk-PJDAZG65.js.map} +0 -0
- /package/dist/{chunk-ALMGYCHY.js.map → chunk-RLQVJXGW.js.map} +0 -0
- /package/dist/{chunk-FPNVOB52.js.map → chunk-RNIJL54W.js.map} +0 -0
- /package/dist/{chunk-2M3W6ACW.js.map → chunk-S46LGAQ2.js.map} +0 -0
- /package/dist/{chunk-6N2U67KF.js.map → chunk-T3KVZTO3.js.map} +0 -0
- /package/dist/{chunk-GY53SDVL.js.map → chunk-U2SAW6DH.js.map} +0 -0
- /package/dist/{chunk-GXGHEOWC.js.map → chunk-USHVG4UQ.js.map} +0 -0
- /package/dist/{chunk-2GDPZ53K.js.map → chunk-UTWEHMAP.js.map} +0 -0
- /package/dist/{chunk-P772HCHI.js.map → chunk-W676GY42.js.map} +0 -0
- /package/dist/{chunk-4JNC5AEF.js.map → chunk-WGKBZ7DN.js.map} +0 -0
- /package/dist/{chunk-T2G4LDU5.js.map → chunk-WLLUARTC.js.map} +0 -0
- /package/dist/{chunk-SI5SKX52.js.map → chunk-WW3F7DCX.js.map} +0 -0
- /package/dist/{chunk-UOKXYV3U.js.map → chunk-XALDXR3F.js.map} +0 -0
- /package/dist/{chunk-ZM6FJCWS.js.map → chunk-XNAI7QGU.js.map} +0 -0
- /package/dist/{chunk-JXK53XJW.js.map → chunk-YOLLISEY.js.map} +0 -0
- /package/dist/{chunk-FKUVFPQZ.js.map → chunk-Z6QFIRD7.js.map} +0 -0
- /package/dist/{chunk-RHVJ3L4U.js.map → chunk-ZJY7OK6H.js.map} +0 -0
- /package/dist/{chunk-LABIUXDM.js.map → chunk-ZYXXAWDF.js.map} +0 -0
|
@@ -10,7 +10,7 @@ var BASE_Z_INDEX = MODAL_STACK_BASE_Z_INDEX;
|
|
|
10
10
|
var Z_INDEX_STEP = MODAL_STACK_Z_INDEX_STEP;
|
|
11
11
|
var noop = () => {
|
|
12
12
|
};
|
|
13
|
-
var
|
|
13
|
+
var NO_STACK = {
|
|
14
14
|
stack: [],
|
|
15
15
|
pushModal: noop,
|
|
16
16
|
popModal: noop,
|
|
@@ -18,7 +18,9 @@ var ModalStackContext = createContext({
|
|
|
18
18
|
currentDepth: 0,
|
|
19
19
|
isModalInStack: () => false,
|
|
20
20
|
getModalRole: () => null
|
|
21
|
-
}
|
|
21
|
+
};
|
|
22
|
+
var ModalStackContext = createContext(NO_STACK);
|
|
23
|
+
var useInModalStack = () => useContext(ModalStackContext) !== NO_STACK;
|
|
22
24
|
var useModalStack = () => {
|
|
23
25
|
const context = useContext(ModalStackContext);
|
|
24
26
|
if (!context) {
|
|
@@ -95,7 +97,8 @@ var ModalStackProvider = ({ children }) => {
|
|
|
95
97
|
};
|
|
96
98
|
|
|
97
99
|
export {
|
|
100
|
+
useInModalStack,
|
|
98
101
|
useModalStack,
|
|
99
102
|
ModalStackProvider
|
|
100
103
|
};
|
|
101
|
-
//# sourceMappingURL=chunk-
|
|
104
|
+
//# sourceMappingURL=chunk-77FQFWA3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/StackedModal/modal-stack.tsx"],"sourcesContent":["import type { FC, ReactNode } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { MODAL_STACK_BASE_Z_INDEX, MODAL_STACK_Z_INDEX_STEP } from '../../../tokens/layers';\nimport type { ModalInfo, ModalPanelRole, ModalStackContextValue } from './StackedModal.types';\n\n/**\n * MUI Dialog default z-index; each panel in the stack sits 10 above the last.\n *\n * Imported rather than declared here: anything that portals out of a panel has\n * to clear this ladder, so the numbers are shared with the token that tells it\n * how — see `tokens/layers`.\n */\nconst BASE_Z_INDEX = MODAL_STACK_BASE_Z_INDEX;\nconst Z_INDEX_STEP = MODAL_STACK_Z_INDEX_STEP;\n\nconst noop = (): void => {\n /** do nothing */\n};\n\n/** What a `StackedModal` reads with no provider above it: an empty stack nothing can push onto. */\nconst NO_STACK: ModalStackContextValue = {\n stack: [],\n pushModal: noop,\n popModal: noop,\n clearStack: noop,\n currentDepth: 0,\n isModalInStack: () => false,\n getModalRole: () => null,\n};\n\nconst ModalStackContext = createContext<ModalStackContextValue>(NO_STACK);\n\n/**\n * Whether a `ModalStackProvider` is above this point. A component that opens a\n * `StackedModal` on its own (`UsableModal`) brings a provider only when the\n * host has none, so its panel still joins a stack the host already keeps.\n */\nexport const useInModalStack = (): boolean => useContext(ModalStackContext) !== NO_STACK;\n\nexport const useModalStack = (): ModalStackContextValue => {\n const context = useContext(ModalStackContext);\n if (!context) {\n throw new Error('useModalStack must be used within a ModalStackProvider');\n }\n return context;\n};\n\n/** Top of the stack drives the view; the one behind it recedes; the rest are hidden. */\nconst roleAt = (index: number, depth: number): ModalPanelRole => {\n if (index === depth - 1) return 'primary';\n if (index === depth - 2) return 'secondary';\n return 'background';\n};\n\n/** Re-derive every role from stack position — the one place roles are assigned. */\nconst withRoles = (stack: ModalInfo[]): ModalInfo[] =>\n stack.map((modal, index) => ({ ...modal, role: roleAt(index, stack.length) }));\n\n/**\n * Locks body scroll while any modal is open, restoring whatever the page had\n * before. Owned by the provider rather than each modal, so nested panels can't\n * fight over the same style.\n */\nconst useBodyScrollLock = (locked: boolean): void => {\n const originalOverflow = useRef<string>('');\n\n useEffect(() => {\n const restore = (): void => {\n if (!originalOverflow.current) return;\n document.body.style.overflow = originalOverflow.current;\n originalOverflow.current = '';\n };\n\n if (locked) {\n if (!originalOverflow.current) {\n originalOverflow.current = document.body.style.overflow || '';\n }\n document.body.style.overflow = 'hidden';\n } else {\n restore();\n }\n\n return restore;\n }, [locked]);\n};\n\nexport const ModalStackProvider: FC<{ children: ReactNode }> = ({ children }) => {\n const [stack, setStack] = useState<ModalInfo[]>([]);\n\n useBodyScrollLock(stack.length > 0);\n\n const pushModal = useCallback((modalId: string) => {\n setStack((prev) => {\n if (prev.some((m) => m.id === modalId)) return prev;\n const entry: ModalInfo = {\n id: modalId,\n zIndex: BASE_Z_INDEX + prev.length * Z_INDEX_STEP,\n role: 'primary',\n };\n return withRoles([...prev, entry]);\n });\n }, []);\n\n const popModal = useCallback((modalId?: string) => {\n setStack((prev) =>\n withRoles(modalId ? prev.filter((m) => m.id !== modalId) : prev.slice(0, -1)),\n );\n }, []);\n\n const clearStack = useCallback(() => setStack([]), []);\n\n const isModalInStack = useCallback(\n (modalId: string) => stack.some((m) => m.id === modalId),\n [stack],\n );\n\n const getModalRole = useCallback(\n (modalId: string) => stack.find((m) => m.id === modalId)?.role ?? null,\n [stack],\n );\n\n const value = useMemo(\n () => ({\n stack,\n pushModal,\n popModal,\n clearStack,\n currentDepth: stack.length,\n isModalInStack,\n getModalRole,\n }),\n [stack, pushModal, popModal, clearStack, isModalInStack, getModalRole],\n );\n\n return <ModalStackContext.Provider value={value}>{children}</ModalStackContext.Provider>;\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SettingsSectionChips
|
|
3
|
-
} from "./chunk-GBVNY2LG.js";
|
|
4
1
|
import {
|
|
5
2
|
SettingsSectionHeader
|
|
6
3
|
} from "./chunk-WOXNVM52.js";
|
|
4
|
+
import {
|
|
5
|
+
SettingsSectionChips
|
|
6
|
+
} from "./chunk-GBVNY2LG.js";
|
|
7
7
|
import {
|
|
8
8
|
TOUCH_TARGET,
|
|
9
9
|
atLeastRail,
|
|
@@ -167,4 +167,4 @@ function SettingsPanel({
|
|
|
167
167
|
export {
|
|
168
168
|
SettingsPanel
|
|
169
169
|
};
|
|
170
|
-
//# sourceMappingURL=chunk-
|
|
170
|
+
//# sourceMappingURL=chunk-A2YLFKQU.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useMenubarMenus
|
|
3
|
-
} from "./chunk-42VH7N5L.js";
|
|
4
1
|
import {
|
|
5
2
|
MenubarToolbar
|
|
6
3
|
} from "./chunk-X3EB67O2.js";
|
|
7
4
|
import {
|
|
8
5
|
barStyles
|
|
9
6
|
} from "./chunk-UCRGKQUW.js";
|
|
7
|
+
import {
|
|
8
|
+
useMenubarMenus
|
|
9
|
+
} from "./chunk-42VH7N5L.js";
|
|
10
10
|
import {
|
|
11
11
|
withDefaults
|
|
12
12
|
} from "./chunk-HPK33ACY.js";
|
|
@@ -190,4 +190,4 @@ export {
|
|
|
190
190
|
Menubar,
|
|
191
191
|
MenubarGroup
|
|
192
192
|
};
|
|
193
|
-
//# sourceMappingURL=chunk-
|
|
193
|
+
//# sourceMappingURL=chunk-ALREWFRX.js.map
|
|
@@ -71,6 +71,9 @@ function inputAriaOf(a) {
|
|
|
71
71
|
...a.busy === void 0 ? {} : { "aria-busy": a.busy }
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
|
+
function keyboardOf(inputMode) {
|
|
75
|
+
return inputMode === void 0 ? {} : { inputMode };
|
|
76
|
+
}
|
|
74
77
|
function inputRenderer(StyledTextField) {
|
|
75
78
|
return ({
|
|
76
79
|
variant = "outlined",
|
|
@@ -91,6 +94,7 @@ function inputRenderer(StyledTextField) {
|
|
|
91
94
|
"aria-label": ariaLabel,
|
|
92
95
|
"aria-describedby": ariaDescribedBy,
|
|
93
96
|
"aria-busy": ariaBusy,
|
|
97
|
+
inputMode,
|
|
94
98
|
inputProps,
|
|
95
99
|
...rest
|
|
96
100
|
}, ref) => {
|
|
@@ -117,6 +121,7 @@ function inputRenderer(StyledTextField) {
|
|
|
117
121
|
onBlur,
|
|
118
122
|
inputProps: {
|
|
119
123
|
"data-testid": dataTestId,
|
|
124
|
+
...keyboardOf(inputMode),
|
|
120
125
|
...inputProps,
|
|
121
126
|
...inputAriaOf({ id, helperText, label: ariaLabel, describedBy: ariaDescribedBy, busy: ariaBusy })
|
|
122
127
|
},
|
|
@@ -140,4 +145,4 @@ function createInput(TextField) {
|
|
|
140
145
|
export {
|
|
141
146
|
createInput
|
|
142
147
|
};
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
148
|
+
//# sourceMappingURL=chunk-ASBFGGJB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/form/Input/Input.factory.tsx"],"sourcesContent":["import CircularProgress from '@mui/material/CircularProgress/index.js';\nimport InputAdornment from '@mui/material/InputAdornment/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { INPUT_LOADING } from './Input.metrics';\nimport type { TextFieldSlimComponent } from './text-field-slim.factory';\n\nimport {\n filledStyles,\n floatingLabelStyles,\n glowStyles,\n inputBaseStyles,\n inputRadiusStyles,\n muiVariantFor,\n outlinedStyles,\n pulseStyles,\n SIZE_MAP,\n} from './Input.styles';\nimport type { InputProps } from './Input.types';\nimport { splitTestId } from '../../../platform/test-id';\nimport { fieldControlStyles } from '../../../tokens/field-height';\nimport { rem } from '../../../tokens/relative';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * The field `Input` renders, styled, over whichever text field it is given.\n *\n * Always a `TextFieldSlim`, never MUI's `TextField` — see `text-field-slim.tsx`.\n * MUI's own `TextField` imports `Select` unconditionally, and through it `Menu`,\n * `Popover`, `Modal` and seven more component modules, so every screen with one\n * text box shipped a dropdown it can never render. Same composition, same DOM,\n * same prop routing; the select branch is the only thing missing.\n */\nfunction styledField(TextField: TextFieldSlimComponent) {\n return styled(TextField, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'fieldSize', 'floating', 'glow', 'pulse', 'loading'].includes(prop as string),\n })<{\n customVariant?: InputProps['variant'];\n fieldSize: SizeValue;\n floating?: boolean;\n glow?: boolean;\n pulse?: boolean;\n loading?: boolean;\n }>(({ theme, customVariant, fieldSize, floating, glow, pulse, loading }) => ({\n position: 'relative',\n // The theme's field height for this size (outlined family, one line).\n ...fieldControlStyles(theme, fieldSize),\n opacity: loading ? INPUT_LOADING.opacity : 1,\n\n ...(glow ? glowStyles(theme) : {}),\n ...(pulse ? pulseStyles(theme, fieldSize) : {}),\n ...(floating ? floatingLabelStyles(theme) : {}),\n\n '& .MuiInputBase-root': {\n transition: 'all 0.3s ease',\n ...inputRadiusStyles(theme, customVariant),\n ...inputBaseStyles(theme, customVariant),\n },\n\n '& .MuiOutlinedInput-root': outlinedStyles(theme),\n '& .MuiFilledInput-root': filledStyles(theme),\n }));\n}\n\n/** Only one adornment shows at a time: the spinner replaces the caller's while loading. */\nconst EndAdornment: React.FC<{ loading: boolean; endAdornment?: React.ReactNode }> = ({\n loading,\n endAdornment,\n}) => {\n const theme = useTheme();\n if (loading) {\n return (\n <InputAdornment position=\"end\">\n <CircularProgress size={rem(theme, INPUT_LOADING.spinnerSize)} />\n </InputAdornment>\n );\n }\n\n if (!endAdornment) return null;\n\n return <InputAdornment position=\"end\">{endAdornment}</InputAdornment>;\n};\n\n/** While loading the field is inert: no clicks, and disabled to assistive tech. */\nconst interactionProps = (\n loading: boolean,\n onClick: InputProps['onClick'],\n disabled?: boolean,\n) => ({\n disabled: loading || disabled,\n onClick: loading ? undefined : onClick,\n});\n\n/**\n * The ARIA that describes the field has to sit on the `<input>`: the text\n * field puts every attribute it does not recognise on its root `FormControl`,\n * a `<div>` with no role, where a screen reader never reads it.\n *\n * `aria-label` has ridden `inputProps` since FUT-755. `aria-describedby` and\n * `aria-busy` fell through to the div until FUT-2619, so CepField's input\n * pointed at nothing while its lookup status lived in a live region beside it.\n *\n * `inputProps` are spread onto the `<input>` AFTER the `aria-describedby` MUI\n * writes for helper text, so a caller's ids REPLACE the helper text's: MUI's\n * `TextField` on its own keeps only one of the two. This joins both, helper\n * text first. The helper id is MUI's `<id>-helper-text` (the parity test pins\n * that spelling), which is why the field's id is fixed here rather than left\n * to the text field.\n */\nfunction inputAriaOf(a: {\n id: string;\n helperText: React.ReactNode;\n label?: string;\n describedBy?: string;\n busy?: InputProps['aria-busy'];\n}): Record<string, unknown> {\n const describedBy = [a.helperText ? `${a.id}-helper-text` : undefined, a.describedBy]\n .filter(Boolean)\n .join(' ');\n return {\n ...(a.label === undefined ? {} : { 'aria-label': a.label }),\n ...(a.describedBy === undefined ? {} : { 'aria-describedby': describedBy }),\n ...(a.busy === undefined ? {} : { 'aria-busy': a.busy }),\n };\n}\n\n/**\n * A top-level `inputMode`, for the `<input>` (FUT-1440). Left with the rest it\n * landed on the text field's root `<div>`, where it raised no keypad at all.\n */\nfunction keyboardOf(inputMode: InputProps['inputMode']): Pick<InputProps, 'inputMode'> {\n return inputMode === undefined ? {} : { inputMode };\n}\n\n/** The render function `createInput` hands `forwardRef`, over a given styled field. */\nfunction inputRenderer(\n StyledTextField: ReturnType<typeof styledField>,\n): React.ForwardRefRenderFunction<HTMLInputElement, InputProps> {\n return (\n {\n variant = 'outlined',\n size = 'md',\n label,\n error,\n helperText,\n startAdornment,\n endAdornment,\n fullWidth = true,\n floating = false,\n glow = false,\n pulse = false,\n loading = false,\n onClick,\n onFocus,\n onBlur,\n 'aria-label': ariaLabel,\n 'aria-describedby': ariaDescribedBy,\n 'aria-busy': ariaBusy,\n inputMode,\n inputProps,\n ...rest\n },\n ref,\n ) => {\n const { testId: dataTestId, rest: props } = splitTestId(rest);\n const generatedId = React.useId();\n const id = props.id ?? generatedId;\n return (\n <StyledTextField\n ref={ref}\n variant={muiVariantFor(variant)}\n customVariant={variant}\n fieldSize={size}\n floating={floating}\n glow={glow}\n pulse={pulse}\n loading={loading}\n label={label}\n error={error}\n helperText={helperText}\n fullWidth={fullWidth}\n {...interactionProps(loading, onClick, props.disabled)}\n onFocus={onFocus}\n onBlur={onBlur}\n /*\n * `aria-label` has to ride `inputProps` to reach the `<input>` (FUT-755).\n * Spread with the rest it lands on the FormControl DIV that the text\n * field renders as its root, which carries no role — so the field kept\n * no accessible name, and a source grep saying \"this input is labelled\"\n * disagreed with the DOM. The reports search box and the block-title\n * inputs were both named in source and anonymous to a screen reader.\n * `aria-describedby` and `aria-busy` are the same case: `inputAriaOf`.\n * So is a top-level `inputMode` (FUT-1440, `keyboardOf`); a caller's\n * `inputProps.inputMode` still wins.\n */\n inputProps={{\n 'data-testid': dataTestId,\n ...keyboardOf(inputMode),\n ...inputProps,\n ...inputAriaOf({ id, helperText, label: ariaLabel, describedBy: ariaDescribedBy, busy: ariaBusy }),\n }}\n InputProps={{\n startAdornment: startAdornment && (\n <InputAdornment position=\"start\">{startAdornment}</InputAdornment>\n ),\n endAdornment: <EndAdornment loading={loading} endAdornment={endAdornment} />,\n }}\n {...SIZE_MAP[size]}\n {...props}\n id={id}\n />\n );\n };\n}\n\n/** The `Input` component every entry exports. */\nexport type InputComponent<P extends InputProps = InputProps> = React.ForwardRefExoticComponent<\n P & React.RefAttributes<HTMLInputElement>\n>;\n\n/**\n * `Input` over a given text field (FUT-1054). The generic entry passes the\n * field that renders any MUI variant; `./outlined` passes one that only ever\n * imports `OutlinedInput`. Everything else — styles, adornments, the ARIA\n * routing — is this one body, so the two cannot drift.\n */\nexport function createInput(TextField: TextFieldSlimComponent): InputComponent {\n const Input = React.forwardRef<HTMLInputElement, InputProps>(inputRenderer(styledField(TextField)));\n Input.displayName = 'Input';\n return Input;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAC3B,SAAS,QAAQ,gBAAgB;AACjC,OAAO,WAAW;AAwEV;AAzCR,SAAS,YAAY,WAAmC;AACtD,SAAO,OAAO,WAAW;AAAA,IACvB,mBAAmB,CAAC,SAClB,CAAC,CAAC,iBAAiB,aAAa,YAAY,QAAQ,SAAS,SAAS,EAAE,SAAS,IAAc;AAAA,EACnG,CAAC,EAOE,CAAC,EAAE,OAAO,eAAe,WAAW,UAAU,MAAM,OAAO,QAAQ,OAAO;AAAA,IAC3E,UAAU;AAAA;AAAA,IAEV,GAAG,mBAAmB,OAAO,SAAS;AAAA,IACtC,SAAS,UAAU,cAAc,UAAU;AAAA,IAE3C,GAAI,OAAO,WAAW,KAAK,IAAI,CAAC;AAAA,IAChC,GAAI,QAAQ,YAAY,OAAO,SAAS,IAAI,CAAC;AAAA,IAC7C,GAAI,WAAW,oBAAoB,KAAK,IAAI,CAAC;AAAA,IAE7C,wBAAwB;AAAA,MACtB,YAAY;AAAA,MACZ,GAAG,kBAAkB,OAAO,aAAa;AAAA,MACzC,GAAG,gBAAgB,OAAO,aAAa;AAAA,IACzC;AAAA,IAEA,4BAA4B,eAAe,KAAK;AAAA,IAChD,0BAA0B,aAAa,KAAK;AAAA,EAC9C,EAAE;AACJ;AAGA,IAAM,eAA+E,CAAC;AAAA,EACpF;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,MAAI,SAAS;AACX,WACE,oBAAC,kBAAe,UAAS,OACvB,8BAAC,oBAAiB,MAAM,IAAI,OAAO,cAAc,WAAW,GAAG,GACjE;AAAA,EAEJ;AAEA,MAAI,CAAC,aAAc,QAAO;AAE1B,SAAO,oBAAC,kBAAe,UAAS,OAAO,wBAAa;AACtD;AAGA,IAAM,mBAAmB,CACvB,SACA,SACA,cACI;AAAA,EACJ,UAAU,WAAW;AAAA,EACrB,SAAS,UAAU,SAAY;AACjC;AAkBA,SAAS,YAAY,GAMO;AAC1B,QAAM,cAAc,CAAC,EAAE,aAAa,GAAG,EAAE,EAAE,iBAAiB,QAAW,EAAE,WAAW,EACjF,OAAO,OAAO,EACd,KAAK,GAAG;AACX,SAAO;AAAA,IACL,GAAI,EAAE,UAAU,SAAY,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM;AAAA,IACzD,GAAI,EAAE,gBAAgB,SAAY,CAAC,IAAI,EAAE,oBAAoB,YAAY;AAAA,IACzE,GAAI,EAAE,SAAS,SAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK;AAAA,EACxD;AACF;AAMA,SAAS,WAAW,WAAmE;AACrF,SAAO,cAAc,SAAY,CAAC,IAAI,EAAE,UAAU;AACpD;AAGA,SAAS,cACP,iBAC8D;AAC9D,SAAO,CACL;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,EAAE,QAAQ,YAAY,MAAM,MAAM,IAAI,YAAY,IAAI;AAC5D,UAAM,cAAc,MAAM,MAAM;AAChC,UAAM,KAAK,MAAM,MAAM;AACvB,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAS,cAAc,OAAO;AAAA,QAC9B,eAAe;AAAA,QACf,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACC,GAAG,iBAAiB,SAAS,SAAS,MAAM,QAAQ;AAAA,QACrD;AAAA,QACA;AAAA,QAYA,YAAY;AAAA,UACV,eAAe;AAAA,UACf,GAAG,WAAW,SAAS;AAAA,UACvB,GAAG;AAAA,UACH,GAAG,YAAY,EAAE,IAAI,YAAY,OAAO,WAAW,aAAa,iBAAiB,MAAM,SAAS,CAAC;AAAA,QACnG;AAAA,QACA,YAAY;AAAA,UACV,gBAAgB,kBACd,oBAAC,kBAAe,UAAS,SAAS,0BAAe;AAAA,UAEnD,cAAc,oBAAC,gBAAa,SAAkB,cAA4B;AAAA,QAC5E;AAAA,QACC,GAAG,SAAS,IAAI;AAAA,QAChB,GAAG;AAAA,QACJ;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAaO,SAAS,YAAY,WAAmD;AAC7E,QAAM,QAAQ,MAAM,WAAyC,cAAc,YAAY,SAAS,CAAC,CAAC;AAClG,QAAM,cAAc;AACpB,SAAO;AACT;","names":[]}
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
} from "./chunk-T7OIVPCO.js";
|
|
6
6
|
import {
|
|
7
7
|
MoreFilters
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-24G3BWKD.js";
|
|
9
9
|
import {
|
|
10
10
|
PillControl
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PJDAZG65.js";
|
|
12
12
|
import {
|
|
13
13
|
QuickChip
|
|
14
14
|
} from "./chunk-AT6UKTH4.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-KYUEO2IO.js";
|
|
18
18
|
import {
|
|
19
19
|
RangePill
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RNIJL54W.js";
|
|
21
21
|
import {
|
|
22
22
|
CollapsedSearch,
|
|
23
23
|
InlineKeyword
|
|
@@ -251,4 +251,4 @@ function FilterSlots({
|
|
|
251
251
|
export {
|
|
252
252
|
InlineFilterControls
|
|
253
253
|
};
|
|
254
|
-
//# sourceMappingURL=chunk-
|
|
254
|
+
//# sourceMappingURL=chunk-BMC5KGH2.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ToggleField
|
|
3
|
+
} from "./chunk-RLTYBV4N.js";
|
|
1
4
|
import {
|
|
2
5
|
TextField
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GB7NTXL2.js";
|
|
4
7
|
import {
|
|
5
8
|
SelectField
|
|
6
9
|
} from "./chunk-6YSGP2WS.js";
|
|
7
10
|
import {
|
|
8
11
|
CepField
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KXVWH3JM.js";
|
|
10
13
|
import {
|
|
11
14
|
CategoryField
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
ToggleField
|
|
15
|
-
} from "./chunk-RLTYBV4N.js";
|
|
15
|
+
} from "./chunk-6AKDAQSS.js";
|
|
16
16
|
import {
|
|
17
17
|
__export
|
|
18
18
|
} from "./chunk-PZ5AY32C.js";
|
|
@@ -30,4 +30,4 @@ __export(Fields_exports, {
|
|
|
30
30
|
export {
|
|
31
31
|
Fields_exports
|
|
32
32
|
};
|
|
33
|
-
//# sourceMappingURL=chunk-
|
|
33
|
+
//# sourceMappingURL=chunk-BRFL7OWI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/UsableModal/has-footer.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\n/** A footer worth a bar: `null`, `false` and `undefined` draw none, on either surface. */\nexport const hasFooter = (footer: ReactNode): boolean => footer !== undefined && footer !== null && footer !== false;\n"],"mappings":";AAGO,IAAM,YAAY,CAAC,WAA+B,WAAW,UAAa,WAAW,QAAQ,WAAW;","names":[]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridMain
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XNAI7QGU.js";
|
|
4
4
|
import {
|
|
5
5
|
FilterDialog,
|
|
6
6
|
GridFilterPanel
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-OKDKKBLI.js";
|
|
8
8
|
import {
|
|
9
9
|
ShellEmpty
|
|
10
10
|
} from "./chunk-MKVDHR3B.js";
|
|
11
11
|
import {
|
|
12
12
|
InlineFilterControls
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-BMC5KGH2.js";
|
|
14
14
|
import {
|
|
15
15
|
GridHeaderRow
|
|
16
16
|
} from "./chunk-X3AFXHY5.js";
|
|
@@ -24,9 +24,6 @@ import {
|
|
|
24
24
|
toOverflowFields,
|
|
25
25
|
toggleQuick
|
|
26
26
|
} from "./chunk-KYUEO2IO.js";
|
|
27
|
-
import {
|
|
28
|
-
ShellToolbar
|
|
29
|
-
} from "./chunk-SI5SKX52.js";
|
|
30
27
|
import {
|
|
31
28
|
allOnPageSelected,
|
|
32
29
|
resolveSelectionExtra
|
|
@@ -34,6 +31,9 @@ import {
|
|
|
34
31
|
import {
|
|
35
32
|
ScopeTabsSlot
|
|
36
33
|
} from "./chunk-K3PMMW23.js";
|
|
34
|
+
import {
|
|
35
|
+
ShellToolbar
|
|
36
|
+
} from "./chunk-WW3F7DCX.js";
|
|
37
37
|
import {
|
|
38
38
|
SHELL_PROPS,
|
|
39
39
|
useStickyBarTop
|
|
@@ -252,4 +252,4 @@ function GridShell(props) {
|
|
|
252
252
|
export {
|
|
253
253
|
GridShell
|
|
254
254
|
};
|
|
255
|
-
//# sourceMappingURL=chunk-
|
|
255
|
+
//# sourceMappingURL=chunk-C7IFBYIJ.js.map
|
|
@@ -5,6 +5,11 @@ import {
|
|
|
5
5
|
StandaloneContainer,
|
|
6
6
|
useRowLayout
|
|
7
7
|
} from "./chunk-E6K2UZGR.js";
|
|
8
|
+
import {
|
|
9
|
+
DiscloseSlot,
|
|
10
|
+
DragSlot,
|
|
11
|
+
SelectSlot
|
|
12
|
+
} from "./chunk-QO7UJXXO.js";
|
|
8
13
|
import {
|
|
9
14
|
actionProps,
|
|
10
15
|
metaShape,
|
|
@@ -17,11 +22,6 @@ import {
|
|
|
17
22
|
ListCardMeta,
|
|
18
23
|
ListCardTail
|
|
19
24
|
} from "./chunk-CSJ7WNXU.js";
|
|
20
|
-
import {
|
|
21
|
-
DiscloseSlot,
|
|
22
|
-
DragSlot,
|
|
23
|
-
SelectSlot
|
|
24
|
-
} from "./chunk-QO7UJXXO.js";
|
|
25
25
|
import {
|
|
26
26
|
DropIndicator
|
|
27
27
|
} from "./chunk-K4EKTMTC.js";
|
|
@@ -185,4 +185,4 @@ function BaseListCard(props) {
|
|
|
185
185
|
export {
|
|
186
186
|
BaseListCard
|
|
187
187
|
};
|
|
188
|
-
//# sourceMappingURL=chunk-
|
|
188
|
+
//# sourceMappingURL=chunk-CSD6SWBZ.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-DQ22UKMZ.js";
|
|
4
4
|
import {
|
|
5
5
|
Avatar
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JIEVKHOH.js";
|
|
7
7
|
import {
|
|
8
8
|
Card
|
|
9
9
|
} from "./chunk-4XBAEKQQ.js";
|
|
@@ -80,4 +80,4 @@ export {
|
|
|
80
80
|
UserAvatar,
|
|
81
81
|
UserMenu
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-E2UOEI7N.js.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useAsyncSwitch
|
|
3
|
+
} from "./chunk-SALQ65SM.js";
|
|
1
4
|
import {
|
|
2
5
|
SettingSwitchBlock,
|
|
3
6
|
useSettingSwitchIds
|
|
@@ -5,9 +8,6 @@ import {
|
|
|
5
8
|
import {
|
|
6
9
|
useSettingGroup
|
|
7
10
|
} from "./chunk-XJQNSMGA.js";
|
|
8
|
-
import {
|
|
9
|
-
useAsyncSwitch
|
|
10
|
-
} from "./chunk-SALQ65SM.js";
|
|
11
11
|
import {
|
|
12
12
|
flatStyles,
|
|
13
13
|
surfaceStyles,
|
|
@@ -44,4 +44,4 @@ SettingToggle.displayName = "SettingToggle";
|
|
|
44
44
|
export {
|
|
45
45
|
SettingToggle
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
47
|
+
//# sourceMappingURL=chunk-E4NFH77Z.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NavigationMegaSection
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6RW4WNGS.js";
|
|
4
4
|
import {
|
|
5
5
|
NavigationStandardBody
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NI3MC742.js";
|
|
7
7
|
import {
|
|
8
8
|
LogoBar,
|
|
9
9
|
NavigationShell
|
|
@@ -177,4 +177,4 @@ NavigationMenu.displayName = "NavigationMenu";
|
|
|
177
177
|
export {
|
|
178
178
|
NavigationMenu
|
|
179
179
|
};
|
|
180
|
-
//# sourceMappingURL=chunk-
|
|
180
|
+
//# sourceMappingURL=chunk-FTYOCFTV.js.map
|
|
@@ -3,25 +3,25 @@ import {
|
|
|
3
3
|
} from "./chunk-UOS7DEQZ.js";
|
|
4
4
|
import {
|
|
5
5
|
LightboxThumbnails
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-64UNVW6D.js";
|
|
7
7
|
import {
|
|
8
8
|
LightboxStage
|
|
9
9
|
} from "./chunk-SYGM4SHY.js";
|
|
10
10
|
import {
|
|
11
11
|
LightboxOverlay
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WLLUARTC.js";
|
|
13
13
|
import {
|
|
14
14
|
LightboxCurrentMedia
|
|
15
15
|
} from "./chunk-RBGUS7WO.js";
|
|
16
|
-
import {
|
|
17
|
-
LightboxCopyProvider
|
|
18
|
-
} from "./chunk-TEQYTEM2.js";
|
|
19
16
|
import {
|
|
20
17
|
useLightbox
|
|
21
18
|
} from "./chunk-HZBDTPPV.js";
|
|
22
19
|
import {
|
|
23
20
|
makeTestId
|
|
24
21
|
} from "./chunk-VQU3CBAL.js";
|
|
22
|
+
import {
|
|
23
|
+
LightboxCopyProvider
|
|
24
|
+
} from "./chunk-TEQYTEM2.js";
|
|
25
25
|
import {
|
|
26
26
|
scrim
|
|
27
27
|
} from "./chunk-XJAD6E3V.js";
|
|
@@ -148,4 +148,4 @@ export {
|
|
|
148
148
|
Lightbox,
|
|
149
149
|
Lightbox_default
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-FWTVIRZZ.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-4XK6JQ4D.js";
|
|
4
4
|
import {
|
|
5
5
|
Input
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZJY7OK6H.js";
|
|
7
7
|
import {
|
|
8
8
|
FormControl,
|
|
9
9
|
FormLabel,
|
|
@@ -65,4 +65,4 @@ function TextField({
|
|
|
65
65
|
export {
|
|
66
66
|
TextField
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
68
|
+
//# sourceMappingURL=chunk-GB7NTXL2.js.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/components/feedback/UsableModal/recover-chunk.ts
|
|
2
|
+
var RELOADED_KEY = "12-apps-ui:usable-modal-chunk-reload";
|
|
3
|
+
var RELOAD_SPENT_MS = 5 * 60 * 1e3;
|
|
4
|
+
var Nothing = () => null;
|
|
5
|
+
function readReloaded() {
|
|
6
|
+
try {
|
|
7
|
+
const at = Number(window.sessionStorage.getItem(RELOADED_KEY));
|
|
8
|
+
return at > 0 && Date.now() - at < RELOAD_SPENT_MS;
|
|
9
|
+
} catch {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function writeReloaded(value) {
|
|
14
|
+
try {
|
|
15
|
+
if (value) window.sessionStorage.setItem(RELOADED_KEY, String(Date.now()));
|
|
16
|
+
else window.sessionStorage.removeItem(RELOADED_KEY);
|
|
17
|
+
} catch {
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function recoverChunk(load) {
|
|
21
|
+
return async () => {
|
|
22
|
+
try {
|
|
23
|
+
const loaded = await load().catch(() => load());
|
|
24
|
+
writeReloaded(false);
|
|
25
|
+
return loaded;
|
|
26
|
+
} catch {
|
|
27
|
+
if (typeof window === "undefined" || readReloaded()) return { default: Nothing };
|
|
28
|
+
writeReloaded(true);
|
|
29
|
+
window.location.reload();
|
|
30
|
+
return new Promise(() => void 0);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
RELOAD_SPENT_MS,
|
|
37
|
+
recoverChunk
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=chunk-IQDPMLDM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/UsableModal/recover-chunk.ts"],"sourcesContent":["import type { ComponentType } from 'react';\n\n/** Remembers, for this tab, WHEN a reload was last spent on a missing chunk. */\nconst RELOADED_KEY = '12-apps-ui:usable-modal-chunk-reload';\n\n/**\n * How long a reload counts as spent. Inside it, a chunk still missing after the\n * reload is not a deploy but a broken build: render nothing rather than loop.\n * Past it, a missing chunk is the NEXT deploy — a tab open for days meets one a\n * day — and earns its own reload; a flag kept for the tab's life would leave\n * the modal silently dead after the second deploy.\n */\nexport const RELOAD_SPENT_MS = 5 * 60 * 1000;\n\ntype Module<P> = { default: ComponentType<P> };\n\n/** Renders nothing: what a surface becomes when its chunk cannot be had at all. */\nconst Nothing = (): null => null;\n\nfunction readReloaded(): boolean {\n try {\n const at = Number(window.sessionStorage.getItem(RELOADED_KEY));\n return at > 0 && Date.now() - at < RELOAD_SPENT_MS;\n } catch {\n return true;\n }\n}\n\nfunction writeReloaded(value: boolean): void {\n try {\n if (value) window.sessionStorage.setItem(RELOADED_KEY, String(Date.now()));\n else window.sessionStorage.removeItem(RELOADED_KEY);\n } catch {\n // Storage refused (private mode, quota): the reload guard is lost, not the modal.\n }\n}\n\n/**\n * A lazy loader that survives a deploy. Every deploy replaces a host's hashed\n * chunks, so a tab opened before it asks for a file that is gone. The import is\n * tried twice; then the page reloads ONCE onto the current build (the same\n * answer as a host's own route loader); if that already happened in this tab\n * in the last `RELOAD_SPENT_MS`,\n * the modal renders nothing rather than handing the failure to the host's\n * error boundary and losing the whole page for opening a modal.\n */\nexport function recoverChunk<P>(load: () => Promise<Module<P>>): () => Promise<Module<P>> {\n return async () => {\n try {\n const loaded = await load().catch(() => load());\n writeReloaded(false);\n return loaded;\n } catch {\n if (typeof window === 'undefined' || readReloaded()) return { default: Nothing };\n writeReloaded(true);\n window.location.reload();\n // The page is going away; nothing should render in the meantime.\n return new Promise<Module<P>>(() => undefined);\n }\n };\n}\n"],"mappings":";AAGA,IAAM,eAAe;AASd,IAAM,kBAAkB,IAAI,KAAK;AAKxC,IAAM,UAAU,MAAY;AAE5B,SAAS,eAAwB;AAC/B,MAAI;AACF,UAAM,KAAK,OAAO,OAAO,eAAe,QAAQ,YAAY,CAAC;AAC7D,WAAO,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK;AAAA,EACrC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,cAAc,OAAsB;AAC3C,MAAI;AACF,QAAI,MAAO,QAAO,eAAe,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC,CAAC;AAAA,QACpE,QAAO,eAAe,WAAW,YAAY;AAAA,EACpD,QAAQ;AAAA,EAER;AACF;AAWO,SAAS,aAAgB,MAA0D;AACxF,SAAO,YAAY;AACjB,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC;AAC9C,oBAAc,KAAK;AACnB,aAAO;AAAA,IACT,QAAQ;AACN,UAAI,OAAO,WAAW,eAAe,aAAa,EAAG,QAAO,EAAE,SAAS,QAAQ;AAC/E,oBAAc,IAAI;AAClB,aAAO,SAAS,OAAO;AAEvB,aAAO,IAAI,QAAmB,MAAM,MAAS;AAAA,IAC/C;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useModalStack
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-77FQFWA3.js";
|
|
4
4
|
|
|
5
5
|
// src/components/feedback/StackedModal/StackedModal.hooks.ts
|
|
6
6
|
import { useTheme } from "@mui/material/styles/index.js";
|
|
@@ -68,6 +68,13 @@ var useStackRegistration = (open, modalId) => {
|
|
|
68
68
|
const timer = window.setTimeout(() => popModal(modalId), ROLE_TRANSITION_MS);
|
|
69
69
|
return () => window.clearTimeout(timer);
|
|
70
70
|
}, [open, modalId, popModal, isModalInStack]);
|
|
71
|
+
useEffect(
|
|
72
|
+
() => () => {
|
|
73
|
+
popModal(modalId);
|
|
74
|
+
hasRegisteredRef.current = false;
|
|
75
|
+
},
|
|
76
|
+
[modalId, popModal]
|
|
77
|
+
);
|
|
71
78
|
};
|
|
72
79
|
var usePanelChrome = (options) => {
|
|
73
80
|
const { open, modalId, loading, closeOnEsc, closeOnClickOutside, disableFocusTrap, onClose } = options;
|
|
@@ -144,4 +151,4 @@ var useModalRole = (open, modalId) => {
|
|
|
144
151
|
export {
|
|
145
152
|
usePanelChrome
|
|
146
153
|
};
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
154
|
+
//# sourceMappingURL=chunk-J4UA744J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/StackedModal/StackedModal.hooks.ts"],"sourcesContent":["import { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport type { RefObject } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { useModalStack } from './modal-stack';\nimport type { ModalPanelRole } from './StackedModal.types';\n\nconst FOCUSABLE = 'a[href], button, textarea, input, select, [tabindex]:not([tabindex=\"-1\"])';\n/** MUI Dialog's own default, used when the modal isn't registered in the stack yet. */\nconst FALLBACK_Z_INDEX = 1300;\n/** Matches the panel's slide duration, so role swaps animate rather than jump. */\nconst ROLE_TRANSITION_MS = 300;\n\n/** Keeps Tab cycling inside the open panel instead of escaping to the page behind. */\nconst useFocusTrap = (\n ref: RefObject<HTMLElement | null>,\n isActive: boolean,\n disabled?: boolean,\n): void => {\n useEffect(() => {\n if (!isActive || disabled || !ref.current) return;\n\n const element = ref.current;\n const focusable = element.querySelectorAll(FOCUSABLE);\n const first = focusable[0] as HTMLElement | undefined;\n const last = focusable[focusable.length - 1] as HTMLElement | undefined;\n\n window.setTimeout(() => first?.focus(), 100);\n\n const handleTabKey = (e: globalThis.KeyboardEvent): void => {\n if (e.key !== 'Tab') return;\n const atEdge = e.shiftKey ? first : last;\n if (document.activeElement !== atEdge) return;\n e.preventDefault();\n (e.shiftKey ? last : first)?.focus();\n };\n\n element.addEventListener('keydown', handleTabKey);\n return () => element.removeEventListener('keydown', handleTabKey);\n }, [ref, isActive, disabled]);\n};\n\n/** Closes the panel on Escape — only while it is the top one. */\nconst useEscapeToClose = (active: boolean, onClose: () => void): void => {\n useEffect(() => {\n if (!active) return;\n\n const handleEsc = (e: globalThis.KeyboardEvent): void => {\n if (e.key !== 'Escape') return;\n e.preventDefault();\n onClose();\n };\n\n window.addEventListener('keydown', handleEsc);\n return () => window.removeEventListener('keydown', handleEsc);\n }, [active, onClose]);\n};\n\n/** Holds the skeleton a beat past `loading` so the swap to content isn't a flash. */\nconst useSkeleton = (loading: boolean): boolean => {\n const [showSkeleton, setShowSkeleton] = useState(loading);\n\n useEffect(() => {\n if (loading) {\n setShowSkeleton(true);\n return;\n }\n const timer = window.setTimeout(() => setShowSkeleton(false), 200);\n return () => window.clearTimeout(timer);\n }, [loading]);\n\n return showSkeleton;\n};\n\n/** Registers the modal in the stack while open, and unregisters it after it slides out. */\nconst useStackRegistration = (open: boolean, modalId: string): void => {\n const { pushModal, popModal, isModalInStack } = useModalStack();\n const hasRegisteredRef = useRef(false);\n\n useEffect(() => {\n if (open && !hasRegisteredRef.current) {\n pushModal(modalId);\n hasRegisteredRef.current = true;\n } else if (!open) {\n hasRegisteredRef.current = false;\n }\n }, [open, modalId, pushModal]);\n\n useEffect(() => {\n if (open || !isModalInStack(modalId)) return;\n const timer = window.setTimeout(() => popModal(modalId), ROLE_TRANSITION_MS);\n return () => window.clearTimeout(timer);\n }, [open, modalId, popModal, isModalInStack]);\n\n // A panel unmounted while open, or before its slide-out timer fired, still\n // leaves the stack: otherwise its entry stays `primary` and the panel below\n // is stuck as `secondary` (no Esc, no backdrop, a back arrow to nowhere).\n // `popModal(id)` filters by id, so popping one already gone is a no-op, and\n // it is a stable callback, so this runs on unmount (or an id change) only.\n // The registration flag goes with the entry: StrictMode runs this cleanup and\n // then the effects again on the SAME instance, and a flag left `true` would\n // skip the re-push and leave an open panel out of its stack.\n useEffect(\n () => () => {\n popModal(modalId);\n hasRegisteredRef.current = false;\n },\n [modalId, popModal],\n );\n};\n\ninterface PanelChromeOptions {\n open?: boolean;\n modalId: string;\n loading?: boolean;\n closeOnEsc?: boolean;\n closeOnClickOutside?: boolean;\n disableFocusTrap?: boolean;\n onClose: () => void;\n}\n\ninterface PanelChrome {\n dialogRef: RefObject<HTMLDivElement | null>;\n modalRole: ModalPanelRole;\n isAnimating: boolean;\n showSkeleton: boolean;\n zIndex: number;\n isMobile: boolean;\n canGoBack: boolean;\n /**\n * This panel is the bottom of the stack. Read from ITS position, not from the\n * depth: once a child opens, the depth says \"can go back\" for every panel,\n * the receding root included.\n */\n isRoot: boolean;\n handleBack: () => void;\n handleClose: (event: object, reason: 'backdropClick' | 'escapeKeyDown') => void;\n}\n\n/**\n * Everything the panel needs to render itself: its place in the stack, the\n * viewport it is on, and the handlers that dismiss it. Bundled into one hook so\n * the component stays a description of the markup.\n */\nexport const usePanelChrome = (options: PanelChromeOptions): PanelChrome => {\n const { open, modalId, loading, closeOnEsc, closeOnClickOutside, disableFocusTrap, onClose } =\n options;\n\n const dialogRef = useRef<HTMLDivElement>(null);\n const { currentDepth, stack } = useModalStack();\n const { modalRole, isAnimating } = useModalRole(Boolean(open), modalId);\n const showSkeleton = useSkeleton(Boolean(loading));\n const zIndex = usePanelZIndex(modalId, FALLBACK_Z_INDEX);\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const isPrimary = modalRole === 'primary';\n const canGoBack = currentDepth > 1;\n // Not yet pushed (its first render) and something already below it: NOT the\n // root — so a child never renders a frame without its back arrow.\n const isRoot = (stack[0]?.id ?? modalId) === modalId;\n\n useFocusTrap(dialogRef, Boolean(open) && isPrimary, disableFocusTrap);\n useEscapeToClose(Boolean(open && closeOnEsc) && isPrimary, onClose);\n\n const { handleBack, handleClose } = useCloseHandlers({\n isPrimary,\n closeOnClickOutside,\n closeOnEsc,\n canGoBack,\n onClose,\n });\n\n return {\n dialogRef,\n modalRole,\n isAnimating,\n showSkeleton,\n zIndex,\n isMobile,\n canGoBack,\n isRoot,\n handleBack,\n handleClose,\n };\n};\n\ninterface CloseHandlerOptions {\n /** Only the top panel responds to a backdrop click or Escape. */\n isPrimary: boolean;\n closeOnClickOutside?: boolean;\n closeOnEsc?: boolean;\n /** Deeper than one panel, so the leading control goes back rather than closing. */\n canGoBack: boolean;\n onClose: () => void;\n}\n\n/** The panel's dismissal handlers, honouring which gestures the caller allows. */\nconst useCloseHandlers = ({\n isPrimary,\n closeOnClickOutside,\n closeOnEsc,\n canGoBack,\n onClose,\n}: CloseHandlerOptions): {\n handleBack: () => void;\n handleClose: (event: object, reason: 'backdropClick' | 'escapeKeyDown') => void;\n} => ({\n handleBack: () => {\n if (canGoBack) onClose();\n },\n handleClose: (_event, reason) => {\n if (!isPrimary) return;\n if (reason === 'backdropClick' && !closeOnClickOutside) return;\n if (reason === 'escapeKeyDown' && !closeOnEsc) return;\n onClose();\n },\n});\n\n/** The z-index this panel was assigned when it joined the stack. */\nconst usePanelZIndex = (modalId: string, fallback: number): number => {\n const { stack } = useModalStack();\n return stack.find((m) => m.id === modalId)?.zIndex ?? fallback;\n};\n\n/**\n * This modal's role in the stack, plus whether it is mid-transition between two\n * roles (which drives the expand/contract animation).\n */\nconst useModalRole = (\n open: boolean,\n modalId: string,\n): { modalRole: ModalPanelRole; isAnimating: boolean } => {\n const { stack } = useModalStack();\n const [modalRole, setModalRole] = useState<ModalPanelRole>('primary');\n const [isAnimating, setIsAnimating] = useState(false);\n\n useStackRegistration(open, modalId);\n\n useEffect(() => {\n if (!open) return;\n\n const newRole = stack.find((m) => m.id === modalId)?.role;\n if (!newRole || newRole === modalRole) return;\n\n setIsAnimating(true);\n setModalRole(newRole);\n const timer = window.setTimeout(() => setIsAnimating(false), ROLE_TRANSITION_MS);\n return () => window.clearTimeout(timer);\n }, [stack, modalId, open, modalRole]);\n\n return { modalRole, isAnimating };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
recoverChunk
|
|
3
|
+
} from "./chunk-IQDPMLDM.js";
|
|
4
|
+
|
|
5
|
+
// src/components/feedback/UsableModal/UsableModal.tsx
|
|
6
|
+
import { useTheme } from "@mui/material/styles/index.js";
|
|
7
|
+
import useMediaQuery from "@mui/material/useMediaQuery/index.js";
|
|
8
|
+
import { lazy, Suspense, useEffect, useState } from "react";
|
|
9
|
+
import { jsx } from "react/jsx-runtime";
|
|
10
|
+
var StackedSurface = lazy(
|
|
11
|
+
recoverChunk(async () => ({
|
|
12
|
+
default: (await import("./_internal/components/feedback/UsableModal/UsableModal.modal.js")).UsableModalStacked
|
|
13
|
+
}))
|
|
14
|
+
);
|
|
15
|
+
var SheetSurface = lazy(
|
|
16
|
+
recoverChunk(async () => ({
|
|
17
|
+
default: (await import("./_internal/components/feedback/UsableModal/UsableModal.sheet.js")).UsableModalSheet
|
|
18
|
+
}))
|
|
19
|
+
);
|
|
20
|
+
function useViewportSurface(layout) {
|
|
21
|
+
const theme = useTheme();
|
|
22
|
+
const phone = useMediaQuery(theme.breakpoints.down("sm"), { noSsr: true });
|
|
23
|
+
if (layout !== "auto") return layout;
|
|
24
|
+
return phone ? "sheet" : "modal";
|
|
25
|
+
}
|
|
26
|
+
var SURFACE_EXIT_MS = 400;
|
|
27
|
+
function useOpenedSurface(open, layout) {
|
|
28
|
+
const viewport = useViewportSurface(layout);
|
|
29
|
+
const [surface, setSurface] = useState(open ? viewport : null);
|
|
30
|
+
const [wasOpen, setWasOpen] = useState(open);
|
|
31
|
+
if (open !== wasOpen) {
|
|
32
|
+
setWasOpen(open);
|
|
33
|
+
if (open) setSurface(viewport);
|
|
34
|
+
}
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (open || surface === null) return;
|
|
37
|
+
const timer = window.setTimeout(() => setSurface(null), SURFACE_EXIT_MS);
|
|
38
|
+
return () => window.clearTimeout(timer);
|
|
39
|
+
}, [open, surface]);
|
|
40
|
+
return surface;
|
|
41
|
+
}
|
|
42
|
+
function UsableModal({ layout = "auto", ...props }) {
|
|
43
|
+
const surface = useOpenedSurface(props.open, layout);
|
|
44
|
+
if (surface === null) return null;
|
|
45
|
+
const Shown = surface === "sheet" ? SheetSurface : StackedSurface;
|
|
46
|
+
return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Shown, { ...props }) });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export {
|
|
50
|
+
SURFACE_EXIT_MS,
|
|
51
|
+
UsableModal
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=chunk-J55SDNCE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/feedback/UsableModal/UsableModal.tsx"],"sourcesContent":["import { useTheme } from '@mui/material/styles/index.js';\nimport useMediaQuery from '@mui/material/useMediaQuery/index.js';\nimport { lazy, Suspense, useEffect, useState, type ComponentType } from 'react';\n\nimport { recoverChunk } from './recover-chunk';\nimport type { UsableModalLayout, UsableModalProps, UsableModalSurfaceProps } from './UsableModal.types';\n\ntype Surface = 'modal' | 'sheet';\n\n/**\n * Each surface is its own chunk (the package builds with `splitting: true`), so\n * a phone never downloads `StackedModal` and a computer never downloads `Sheet`.\n * A chunk a deploy replaced is retried, then the page reloads once onto the\n * current build (`./recover-chunk`) — never the host's error boundary.\n */\nconst StackedSurface = lazy(\n recoverChunk(async (): Promise<{ default: ComponentType<UsableModalSurfaceProps> }> => ({\n default: (await import('./UsableModal.modal')).UsableModalStacked,\n })),\n);\nconst SheetSurface = lazy(\n recoverChunk(async (): Promise<{ default: ComponentType<UsableModalSurfaceProps> }> => ({\n default: (await import('./UsableModal.sheet')).UsableModalSheet,\n })),\n);\n\n/** The surface the viewport asks for now: a sheet below `sm`, a stacked modal from `sm` up. */\nfunction useViewportSurface(layout: UsableModalLayout): Surface {\n const theme = useTheme();\n // `noSsr`: the first render already knows the width, so a phone never mounts\n // (and never fetches) the stacked modal for one frame before the sheet.\n const phone = useMediaQuery(theme.breakpoints.down('sm'), { noSsr: true });\n if (layout !== 'auto') return layout;\n return phone ? 'sheet' : 'modal';\n}\n\n/**\n * How long a closed surface stays mounted: longer than its own way out — the\n * drawer's slide-down (225 ms) and the stacked modal's leaving its stack\n * (300 ms) — so neither is cut off.\n */\nexport const SURFACE_EXIT_MS = 400;\n\n/**\n * The surface is chosen when the modal OPENS and kept until it closes: a phone\n * turned to landscape, or a window narrowed past `sm`, mid-task, does not swap\n * the surface and throw away what the person typed. The next opening asks the\n * viewport again.\n *\n * Once closed, and its way out run, the surface is let go of: every opening\n * starts with a fresh body on both surfaces (the sheet would otherwise keep its\n * content mounted, and the last half-written form, while the stacked modal\n * drops its own), and a closed sheet leaves nothing on the page — not even the\n * drawer's edge strip that swallows taps and swipes the sheet open.\n */\nfunction useOpenedSurface(open: boolean, layout: UsableModalLayout): Surface | null {\n const viewport = useViewportSurface(layout);\n const [surface, setSurface] = useState<Surface | null>(open ? viewport : null);\n const [wasOpen, setWasOpen] = useState(open);\n if (open !== wasOpen) {\n setWasOpen(open);\n if (open) setSurface(viewport);\n }\n useEffect(() => {\n if (open || surface === null) return;\n const timer = window.setTimeout(() => setSurface(null), SURFACE_EXIT_MS);\n return () => window.clearTimeout(timer);\n }, [open, surface]);\n return surface;\n}\n\n/**\n * A modal that is a `StackedModal` on a computer and a bottom `Sheet` on a\n * phone, behind one API: title, body, a pinned footer, and the ways out.\n *\n * Nothing is fetched until the first open: until then it renders nothing.\n * Closing hands the surface `open={false}`, so it runs its own way out — the\n * slide-out, and the stacked modal leaving its stack — and then it unmounts\n * (`SURFACE_EXIT_MS`). While the\n * chunk loads the screen shows no placeholder: a modal that blinks a spinner\n * before its content is worse than one that appears a frame later.\n */\nexport function UsableModal({ layout = 'auto', ...props }: UsableModalProps): React.JSX.Element | null {\n const surface = useOpenedSurface(props.open, layout);\n if (surface === null) return null;\n const Shown = surface === 'sheet' ? SheetSurface : StackedSurface;\n return (\n <Suspense fallback={null}>\n <Shown {...props} />\n </Suspense>\n );\n}\n"],"mappings":";;;;;AAAA,SAAS,gBAAgB;AACzB,OAAO,mBAAmB;AAC1B,SAAS,MAAM,UAAU,WAAW,gBAAoC;AAsFlE;AAzEN,IAAM,iBAAiB;AAAA,EACrB,aAAa,aAA2E;AAAA,IACtF,UAAU,MAAM,OAAO,kEAAqB,GAAG;AAAA,EACjD,EAAE;AACJ;AACA,IAAM,eAAe;AAAA,EACnB,aAAa,aAA2E;AAAA,IACtF,UAAU,MAAM,OAAO,kEAAqB,GAAG;AAAA,EACjD,EAAE;AACJ;AAGA,SAAS,mBAAmB,QAAoC;AAC9D,QAAM,QAAQ,SAAS;AAGvB,QAAM,QAAQ,cAAc,MAAM,YAAY,KAAK,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC;AACzE,MAAI,WAAW,OAAQ,QAAO;AAC9B,SAAO,QAAQ,UAAU;AAC3B;AAOO,IAAM,kBAAkB;AAc/B,SAAS,iBAAiB,MAAe,QAA2C;AAClF,QAAM,WAAW,mBAAmB,MAAM;AAC1C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAyB,OAAO,WAAW,IAAI;AAC7E,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAC3C,MAAI,SAAS,SAAS;AACpB,eAAW,IAAI;AACf,QAAI,KAAM,YAAW,QAAQ;AAAA,EAC/B;AACA,YAAU,MAAM;AACd,QAAI,QAAQ,YAAY,KAAM;AAC9B,UAAM,QAAQ,OAAO,WAAW,MAAM,WAAW,IAAI,GAAG,eAAe;AACvE,WAAO,MAAM,OAAO,aAAa,KAAK;AAAA,EACxC,GAAG,CAAC,MAAM,OAAO,CAAC;AAClB,SAAO;AACT;AAaO,SAAS,YAAY,EAAE,SAAS,QAAQ,GAAG,MAAM,GAA+C;AACrG,QAAM,UAAU,iBAAiB,MAAM,MAAM,MAAM;AACnD,MAAI,YAAY,KAAM,QAAO;AAC7B,QAAM,QAAQ,YAAY,UAAU,eAAe;AACnD,SACE,oBAAC,YAAS,UAAU,MAClB,8BAAC,SAAO,GAAG,OAAO,GACpB;AAEJ;","names":[]}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AVATAR_DEFAULTS,
|
|
3
|
-
contentTypeOf,
|
|
4
|
-
pickAvatarContent
|
|
5
|
-
} from "./chunk-3ZVUNSFF.js";
|
|
6
1
|
import {
|
|
7
2
|
AvatarView
|
|
8
3
|
} from "./chunk-7XSCEHGA.js";
|
|
@@ -12,6 +7,11 @@ import {
|
|
|
12
7
|
GROUP_MAX,
|
|
13
8
|
GROUP_OVERLAP
|
|
14
9
|
} from "./chunk-6ZZGK5DT.js";
|
|
10
|
+
import {
|
|
11
|
+
AVATAR_DEFAULTS,
|
|
12
|
+
contentTypeOf,
|
|
13
|
+
pickAvatarContent
|
|
14
|
+
} from "./chunk-3ZVUNSFF.js";
|
|
15
15
|
import {
|
|
16
16
|
EN_US_UI_LABELS
|
|
17
17
|
} from "./chunk-XOXXG7Q5.js";
|
|
@@ -178,4 +178,4 @@ export {
|
|
|
178
178
|
Avatar,
|
|
179
179
|
AvatarGroup
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-JIEVKHOH.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeTestId,
|
|
3
|
+
resolveCodeEditorProps
|
|
4
|
+
} from "./chunk-X3OWMTLO.js";
|
|
1
5
|
import {
|
|
2
6
|
EditorToolbar
|
|
3
7
|
} from "./chunk-3TVUW7QE.js";
|
|
4
8
|
import {
|
|
5
9
|
useCodeEditor
|
|
6
10
|
} from "./chunk-OXXIGHZK.js";
|
|
7
|
-
import {
|
|
8
|
-
makeTestId,
|
|
9
|
-
resolveCodeEditorProps
|
|
10
|
-
} from "./chunk-X3OWMTLO.js";
|
|
11
11
|
import {
|
|
12
12
|
fieldRadius
|
|
13
13
|
} from "./chunk-GDN2LUTZ.js";
|
|
@@ -178,4 +178,4 @@ var CodeEditor = (componentProps) => {
|
|
|
178
178
|
export {
|
|
179
179
|
CodeEditor
|
|
180
180
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-JOQGKXR5.js.map
|