@12-apps/ui 6.44.3 → 6.45.1
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 +13 -4
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +4 -4
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.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 +2 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +37 -37
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +53 -53
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -4
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +5 -5
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +11 -11
- package/dist/_internal/components/data-display/DataViews/base-card.js +5 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +15 -15
- 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 +33 -33
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +13 -13
- package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +16 -16
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +1 -1
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +3 -3
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +10 -10
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +6 -6
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +11 -11
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +3 -3
- package/dist/_internal/components/data-display/HoverCard/HoverCard.hooks.js +1 -1
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +3 -3
- package/dist/_internal/components/data-display/LazyImage/LazyImage.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
- package/dist/_internal/components/data-display/LoadingState/LoadingState.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +5 -5
- package/dist/_internal/components/data-display/StatCard/StatCard.js +3 -3
- package/dist/_internal/components/data-display/index.js +35 -35
- package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -3
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +6 -6
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
- package/dist/_internal/components/feedback/index.js +14 -14
- 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/Calendar/Calendar.js +4 -4
- package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
- package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +5 -5
- package/dist/_internal/components/form/CepField/CepField.js +3 -3
- package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
- 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/DateRangePicker/DateRangePicker.js +7 -7
- 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/RichTextEditor/RichTextEditor.js +2 -2
- package/dist/_internal/components/form/Switch/Switch.js +5 -5
- package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
- package/dist/_internal/components/form/Switch/Switch.styles.js +2 -2
- package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
- package/dist/_internal/components/form/index.js +35 -35
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +6 -6
- 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 +12 -12
- package/dist/_internal/components/index.js +130 -112
- package/dist/_internal/components/layout/Card/Card.js +2 -2
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +7 -7
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +6 -6
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +7 -7
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
- package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
- package/dist/_internal/components/layout/Skeleton/Skeleton.js +2 -2
- package/dist/_internal/components/layout/index.js +19 -19
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +2 -2
- package/dist/_internal/components/navigation/Pagination/Pagination.js +2 -2
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +45 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.helpers.js +14 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.helpers.js.map +1 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +45 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js.map +1 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +46 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js.map +1 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +39 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js.map +1 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +39 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js.map +1 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +41 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js.map +1 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.types.js +1 -0
- package/dist/_internal/components/navigation/SectionNav/SectionNav.types.js.map +1 -0
- package/dist/_internal/components/navigation/SectionNav/__stories__/fixtures.js +127 -0
- package/dist/_internal/components/navigation/SectionNav/__stories__/fixtures.js.map +1 -0
- package/dist/_internal/components/navigation/index.js +39 -12
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +2 -2
- package/dist/_internal/components/utility/InstallPrompt/InstallPrompt.js +2 -2
- package/dist/_internal/components/utility/index.js +8 -8
- package/dist/_internal/en-US.navigation.js +5 -3
- package/dist/_internal/pt-BR.navigation.js +5 -3
- package/dist/_internal/social-login-button/social-login-button.js +3 -3
- package/dist/_internal/user-avatar/user-avatar.js +5 -5
- package/dist/charts.js +6 -6
- package/dist/{chunk-J6TIK47Z.js → chunk-2HPNN5XA.js} +2 -2
- package/dist/{chunk-BEGTLELZ.js → chunk-2K2B5QM2.js} +5 -5
- package/dist/chunk-2OP2FYB3.js +174 -0
- package/dist/chunk-2OP2FYB3.js.map +1 -0
- package/dist/chunk-3WCUGTRH.js +240 -0
- package/dist/chunk-3WCUGTRH.js.map +1 -0
- package/dist/{chunk-3I77A65F.js → chunk-442FSG7G.js} +4 -4
- package/dist/{chunk-ZOUWHGV3.js → chunk-4MGFUPQT.js} +4 -4
- package/dist/{chunk-26QYVCDK.js → chunk-525AOF6I.js} +2 -2
- package/dist/chunk-5AK2EZG5.js +1 -0
- package/dist/chunk-5AK2EZG5.js.map +1 -0
- package/dist/{chunk-5752357K.js → chunk-5KGABAQB.js} +4 -4
- package/dist/{chunk-SDKOOVEX.js → chunk-6GAZAJXB.js} +4 -4
- package/dist/{chunk-EO6LCGGQ.js → chunk-6J32H2RN.js} +2 -2
- package/dist/chunk-6OLJ2RAT.js +62 -0
- package/dist/chunk-6OLJ2RAT.js.map +1 -0
- package/dist/{chunk-7XDET7PL.js → chunk-6OQHZVK6.js} +4 -4
- package/dist/{chunk-F3AYISXT.js → chunk-6PU3JYVY.js} +4 -4
- package/dist/{chunk-RRAWJQIO.js → chunk-A64MQ7GW.js} +2 -2
- package/dist/{chunk-ADSA76T7.js → chunk-AG3DY5TH.js} +2 -2
- package/dist/{chunk-CIBTYBBN.js → chunk-AJ4MRDKM.js} +3 -3
- package/dist/{chunk-RJ35IXFD.js → chunk-B7HYM3QB.js} +2 -2
- package/dist/{chunk-X3C3VTYS.js → chunk-BEX3FLHB.js} +2 -2
- package/dist/{chunk-C5RTSOXD.js → chunk-BUAFRLSB.js} +2 -2
- package/dist/{chunk-DH6SL3SY.js → chunk-DSDNGTH6.js} +6 -6
- package/dist/{chunk-AUQRGZE7.js → chunk-EDZYPHZT.js} +7 -2
- package/dist/chunk-EDZYPHZT.js.map +1 -0
- package/dist/{chunk-JZ7ZRZTF.js → chunk-EJMSSDLM.js} +2 -2
- package/dist/{chunk-62OGPVCL.js → chunk-EPZ7B35I.js} +7 -2
- package/dist/chunk-EPZ7B35I.js.map +1 -0
- package/dist/{chunk-GP4BJI3F.js → chunk-ETCS6OBJ.js} +4 -4
- package/dist/{chunk-MVR4GURP.js → chunk-EU76OQGR.js} +2 -2
- package/dist/{chunk-DHW5UMUG.js → chunk-FNLD2KCQ.js} +4 -4
- package/dist/{chunk-XRUW7DMH.js → chunk-FPKVHR5L.js} +2 -2
- package/dist/{chunk-HKBJZX3C.js → chunk-FQ637IDM.js} +7 -7
- package/dist/{chunk-DDL6W7JS.js → chunk-FRD7U6QO.js} +5 -5
- package/dist/{chunk-YCHOWWRE.js → chunk-G6T7KRQ3.js} +2 -2
- package/dist/{chunk-EKBUM7HK.js → chunk-GYZUJ7HH.js} +4 -4
- package/dist/{chunk-ZQ7IESR7.js → chunk-H7HEB4UC.js} +5 -5
- package/dist/{chunk-JYLBVHG2.js → chunk-HAPELHNW.js} +7 -7
- package/dist/{chunk-HNFZLXZI.js → chunk-HBP2OU4Q.js} +5 -5
- package/dist/{chunk-K7FSTB2K.js → chunk-HSNOWYEE.js} +2 -2
- package/dist/chunk-HYEOKBFV.js +73 -0
- package/dist/chunk-HYEOKBFV.js.map +1 -0
- package/dist/{chunk-GI63FQEJ.js → chunk-HYNDC3FP.js} +4 -4
- package/dist/{chunk-ZBVU2YWV.js → chunk-IITZA6U2.js} +9 -9
- package/dist/{chunk-BZFRBG2H.js → chunk-IIXMTC65.js} +4 -4
- package/dist/{chunk-JFLFZLOA.js → chunk-IJAUHR3M.js} +4 -4
- package/dist/{chunk-K5CCQBNN.js → chunk-ILKNYENU.js} +4 -4
- package/dist/{chunk-DJIFXJ4C.js → chunk-IPI3OU2P.js} +4 -4
- package/dist/{chunk-6JGATEOF.js → chunk-IWYTOCCV.js} +3 -3
- package/dist/{chunk-5ZOJLYD2.js → chunk-JE6RZ5L6.js} +4 -4
- package/dist/{chunk-DE6A46AE.js → chunk-JFL5WT3S.js} +5 -5
- package/dist/{chunk-CYPBF3BI.js → chunk-JO4UMHWR.js} +3 -3
- package/dist/{chunk-LRFXCZB4.js → chunk-JWNOM5QT.js} +4 -4
- package/dist/{chunk-NU55QUMO.js → chunk-K45ML7M7.js} +2 -2
- package/dist/{chunk-OAVRXSAS.js → chunk-K7PWC44N.js} +2 -2
- package/dist/{chunk-CMV6BRQ3.js → chunk-KN3WYEH2.js} +57 -38
- package/dist/chunk-KN3WYEH2.js.map +1 -0
- package/dist/{chunk-ZGCPDA3F.js → chunk-KQS4ZJGS.js} +5 -5
- package/dist/{chunk-PAICZOL5.js → chunk-KTX7XME6.js} +4 -4
- package/dist/{chunk-KPZ53JY6.js → chunk-L3APNYI5.js} +3 -3
- package/dist/{chunk-GKNMKPR6.js → chunk-L6Q2A32O.js} +5 -5
- package/dist/{chunk-IG26N6J2.js → chunk-MD3ND6DT.js} +3 -3
- package/dist/{chunk-DTLKF4AX.js → chunk-MQ277OLB.js} +9 -9
- package/dist/{chunk-BA6Z52QN.js → chunk-NF4GHTZ4.js} +2 -2
- package/dist/{chunk-MSAAOQAD.js → chunk-NFA7STJA.js} +4 -4
- package/dist/{chunk-7HZTYK7U.js → chunk-NLYNRE7L.js} +4 -4
- package/dist/{chunk-HOIHO2YQ.js → chunk-NRI2TZDS.js} +2 -2
- package/dist/{chunk-VQUPB7F7.js → chunk-O25RFGPX.js} +4 -4
- package/dist/{chunk-Z3HSRNJT.js → chunk-OARM5RX4.js} +5 -5
- package/dist/{chunk-JDEKR77O.js → chunk-OERKNBKK.js} +2 -2
- package/dist/{chunk-WN5PNP6F.js → chunk-OP5JR5Q5.js} +4 -4
- package/dist/{chunk-XP522FFM.js → chunk-PARTZ7XI.js} +2 -2
- package/dist/{chunk-BHE44AQE.js → chunk-PCHUIDMT.js} +2 -2
- package/dist/{chunk-NYFGFELX.js → chunk-PGPPN63I.js} +6 -6
- package/dist/{chunk-Y2CMWGIU.js → chunk-PKXCQKPB.js} +2 -2
- package/dist/{chunk-6B3QXFF5.js → chunk-PNWGQAXQ.js} +2 -2
- package/dist/{chunk-IO2X6DVH.js → chunk-PSX7DAMV.js} +4 -4
- package/dist/{chunk-OL2BEJZR.js → chunk-Q2LQVYXY.js} +2 -2
- package/dist/chunk-R26KYJHK.js +1 -0
- package/dist/chunk-R26KYJHK.js.map +1 -0
- package/dist/chunk-R73CRAAI.js +1 -0
- package/dist/chunk-R73CRAAI.js.map +1 -0
- package/dist/{chunk-VKFZQSQC.js → chunk-RPFQQP5S.js} +6 -6
- package/dist/chunk-SENCNTMV.js +55 -0
- package/dist/chunk-SENCNTMV.js.map +1 -0
- package/dist/{chunk-X4VWYWFK.js → chunk-SJY4DDG7.js} +4 -4
- package/dist/{chunk-DYCTIOER.js → chunk-SRZY6QG3.js} +5 -5
- package/dist/chunk-TCFBCTZD.js +168 -0
- package/dist/chunk-TCFBCTZD.js.map +1 -0
- package/dist/{chunk-44USLRMT.js → chunk-TPPFWETI.js} +6 -6
- package/dist/{chunk-XXL4PM4M.js → chunk-TWVRPT7J.js} +2 -2
- package/dist/{chunk-SM4MT4YC.js → chunk-U2UT2NDH.js} +3 -3
- package/dist/{chunk-5MW7OYBM.js → chunk-UJOFRJLX.js} +2 -2
- package/dist/{chunk-O6IF4BZT.js → chunk-UUJ7J7NE.js} +3 -3
- package/dist/{chunk-5JCGBCFJ.js → chunk-V2GHNHP6.js} +2 -2
- package/dist/{chunk-WQ3KTELX.js → chunk-V4R6Q5ED.js} +8 -8
- package/dist/{chunk-B3QWQG62.js → chunk-V54LG3QG.js} +2 -2
- package/dist/{chunk-6B4UTB4O.js → chunk-VDSQ5H4Y.js} +3 -3
- package/dist/chunk-VHVI3D4R.js +26 -0
- package/dist/chunk-VHVI3D4R.js.map +1 -0
- package/dist/{chunk-AEKHSORY.js → chunk-VOBVYVPN.js} +5 -5
- package/dist/{chunk-B2WBDMHE.js → chunk-VPH47OIV.js} +4 -4
- package/dist/{chunk-JSOJKHEI.js → chunk-WHYVVKRS.js} +2 -2
- package/dist/{chunk-KUKY5GEX.js → chunk-WU2KXA6I.js} +2 -2
- package/dist/{chunk-VNOXUWK7.js → chunk-X5F4FRH7.js} +4 -4
- package/dist/{chunk-EOEYOPOS.js → chunk-YKALXHCS.js} +11 -11
- package/dist/{chunk-BKBELIUR.js → chunk-YWQ7QCWR.js} +6 -6
- package/dist/{chunk-VNWZWQF3.js → chunk-Z3USLQQT.js} +69 -24
- package/dist/chunk-Z3USLQQT.js.map +1 -0
- package/dist/data-display/AsyncStateContainer.js +4 -4
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/Badge.js +3 -2
- package/dist/data-display/CardKit.js +11 -11
- package/dist/data-display/Carousel.js +2 -2
- package/dist/data-display/Chart.js +6 -6
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +65 -65
- package/dist/data-display/FleetMap.js +11 -11
- package/dist/data-display/HoverCard.js +3 -3
- package/dist/data-display/LazyImage.js +3 -3
- package/dist/data-display/Lightbox.js +3 -3
- package/dist/data-display/LoadingState.js +3 -3
- package/dist/data-display/MapPreview.js +5 -5
- package/dist/data-display/StatCard.js +3 -3
- package/dist/en-US.js +8 -6
- package/dist/feedback/ConfirmAction.js +3 -3
- package/dist/feedback/Dialog.js +3 -3
- package/dist/feedback/StackedModal.js +6 -6
- package/dist/feedback/TutorialOverlay.js +2 -2
- package/dist/form/AddressAutocomplete.js +5 -5
- package/dist/form/Calendar.js +4 -4
- package/dist/form/CategorySelect.js +5 -5
- package/dist/form/CepField.js +3 -3
- package/dist/form/Checkbox.js +2 -2
- package/dist/form/CodeEditor.js +2 -2
- package/dist/form/Command.js +2 -2
- package/dist/form/DateRangePicker.js +9 -9
- package/dist/form/Input.js +2 -2
- package/dist/form/Menubar.js +2 -2
- package/dist/form/NumberField.js +3 -3
- package/dist/form/RichTextEditor.js +2 -2
- package/dist/form/Switch.js +5 -5
- package/dist/form/UploadButton.js +2 -2
- package/dist/form/total-form.js +18 -18
- package/dist/layout/Card.js +2 -2
- package/dist/layout/ContentToolbar.js +4 -4
- package/dist/layout/SettingCard.js +11 -11
- package/dist/layout/SettingsLayout.js +4 -4
- package/dist/layout/Skeleton.js +2 -2
- package/dist/locales.js +15 -8
- package/dist/locales.js.map +1 -1
- package/dist/navigation/AppHeader.js +6 -6
- package/dist/navigation/CommandPalette.js +2 -2
- package/dist/navigation/Pagination.js +2 -2
- package/dist/navigation/SectionNav.js +52 -0
- package/dist/navigation/SectionNav.js.map +1 -0
- package/dist/pt-BR.js +4 -2
- package/dist/social-login-button.js +3 -3
- package/dist/types/components/data-display/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/types/components/data-display/HoverCard/HoverCard.hooks.d.ts +2 -8
- package/dist/types/components/data-display/HoverCard/HoverCard.hooks.d.ts.map +1 -1
- package/dist/types/components/navigation/SectionNav/SectionNav.bar.d.ts +14 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.bar.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.d.ts +16 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.helpers.d.ts +32 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.helpers.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.parts.d.ts +42 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.parts.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.primary.d.ts +29 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.primary.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.rail.d.ts +13 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.rail.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.sheet.d.ts +20 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.sheet.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.types.d.ts +102 -0
- package/dist/types/components/navigation/SectionNav/SectionNav.types.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/__stories__/fixtures.d.ts +20 -0
- package/dist/types/components/navigation/SectionNav/__stories__/fixtures.d.ts.map +1 -0
- package/dist/types/components/navigation/SectionNav/index.d.ts +7 -0
- package/dist/types/components/navigation/SectionNav/index.d.ts.map +1 -0
- package/dist/types/components/navigation/index.d.ts +1 -0
- package/dist/types/components/navigation/index.d.ts.map +1 -1
- package/dist/types/copy/navigation.d.ts +10 -0
- package/dist/types/copy/navigation.d.ts.map +1 -1
- package/dist/types/en-US.navigation.d.ts +2 -1
- package/dist/types/en-US.navigation.d.ts.map +1 -1
- package/dist/types/locales.d.ts +2 -1
- package/dist/types/locales.d.ts.map +1 -1
- package/dist/types/pt-BR.navigation.d.ts +2 -1
- package/dist/types/pt-BR.navigation.d.ts.map +1 -1
- package/dist/user-avatar.js +5 -5
- package/dist/utility/InfiniteScroll.js +2 -2
- package/dist/utility/InstallPrompt.js +2 -2
- package/package.json +5 -1
- package/src/components/data-display/HoverCard/HoverCard.hooks.ts +173 -33
- package/src/components/data-display/HoverCard/HoverCard.md +1 -0
- package/src/components/data-display/HoverCard/HoverCard.tsx +38 -16
- package/src/components/navigation/SectionNav/SectionNav.bar.tsx +258 -0
- package/src/components/navigation/SectionNav/SectionNav.helpers.ts +51 -0
- package/src/components/navigation/SectionNav/SectionNav.md +91 -0
- package/src/components/navigation/SectionNav/SectionNav.parts.tsx +88 -0
- package/src/components/navigation/SectionNav/SectionNav.primary.tsx +81 -0
- package/src/components/navigation/SectionNav/SectionNav.rail.tsx +208 -0
- package/src/components/navigation/SectionNav/SectionNav.sheet.tsx +206 -0
- package/src/components/navigation/SectionNav/SectionNav.tsx +56 -0
- package/src/components/navigation/SectionNav/SectionNav.types.ts +108 -0
- package/src/components/navigation/SectionNav/__stories__/fixtures.tsx +111 -0
- package/src/components/navigation/SectionNav/index.ts +13 -0
- package/src/components/navigation/index.ts +1 -0
- package/src/copy/navigation.ts +11 -0
- package/src/en-US.navigation.ts +6 -0
- package/src/locales.ts +5 -0
- package/src/pt-BR.navigation.ts +6 -0
- package/dist/chunk-62OGPVCL.js.map +0 -1
- package/dist/chunk-AUQRGZE7.js.map +0 -1
- package/dist/chunk-CMV6BRQ3.js.map +0 -1
- package/dist/chunk-OJSVHBQO.js +0 -1
- package/dist/chunk-VNWZWQF3.js.map +0 -1
- /package/dist/{chunk-OJSVHBQO.js.map → _internal/components/navigation/SectionNav/SectionNav.bar.js.map} +0 -0
- /package/dist/{chunk-J6TIK47Z.js.map → chunk-2HPNN5XA.js.map} +0 -0
- /package/dist/{chunk-BEGTLELZ.js.map → chunk-2K2B5QM2.js.map} +0 -0
- /package/dist/{chunk-3I77A65F.js.map → chunk-442FSG7G.js.map} +0 -0
- /package/dist/{chunk-ZOUWHGV3.js.map → chunk-4MGFUPQT.js.map} +0 -0
- /package/dist/{chunk-26QYVCDK.js.map → chunk-525AOF6I.js.map} +0 -0
- /package/dist/{chunk-5752357K.js.map → chunk-5KGABAQB.js.map} +0 -0
- /package/dist/{chunk-SDKOOVEX.js.map → chunk-6GAZAJXB.js.map} +0 -0
- /package/dist/{chunk-EO6LCGGQ.js.map → chunk-6J32H2RN.js.map} +0 -0
- /package/dist/{chunk-7XDET7PL.js.map → chunk-6OQHZVK6.js.map} +0 -0
- /package/dist/{chunk-F3AYISXT.js.map → chunk-6PU3JYVY.js.map} +0 -0
- /package/dist/{chunk-RRAWJQIO.js.map → chunk-A64MQ7GW.js.map} +0 -0
- /package/dist/{chunk-ADSA76T7.js.map → chunk-AG3DY5TH.js.map} +0 -0
- /package/dist/{chunk-CIBTYBBN.js.map → chunk-AJ4MRDKM.js.map} +0 -0
- /package/dist/{chunk-RJ35IXFD.js.map → chunk-B7HYM3QB.js.map} +0 -0
- /package/dist/{chunk-X3C3VTYS.js.map → chunk-BEX3FLHB.js.map} +0 -0
- /package/dist/{chunk-C5RTSOXD.js.map → chunk-BUAFRLSB.js.map} +0 -0
- /package/dist/{chunk-DH6SL3SY.js.map → chunk-DSDNGTH6.js.map} +0 -0
- /package/dist/{chunk-JZ7ZRZTF.js.map → chunk-EJMSSDLM.js.map} +0 -0
- /package/dist/{chunk-GP4BJI3F.js.map → chunk-ETCS6OBJ.js.map} +0 -0
- /package/dist/{chunk-MVR4GURP.js.map → chunk-EU76OQGR.js.map} +0 -0
- /package/dist/{chunk-DHW5UMUG.js.map → chunk-FNLD2KCQ.js.map} +0 -0
- /package/dist/{chunk-XRUW7DMH.js.map → chunk-FPKVHR5L.js.map} +0 -0
- /package/dist/{chunk-HKBJZX3C.js.map → chunk-FQ637IDM.js.map} +0 -0
- /package/dist/{chunk-DDL6W7JS.js.map → chunk-FRD7U6QO.js.map} +0 -0
- /package/dist/{chunk-YCHOWWRE.js.map → chunk-G6T7KRQ3.js.map} +0 -0
- /package/dist/{chunk-EKBUM7HK.js.map → chunk-GYZUJ7HH.js.map} +0 -0
- /package/dist/{chunk-ZQ7IESR7.js.map → chunk-H7HEB4UC.js.map} +0 -0
- /package/dist/{chunk-JYLBVHG2.js.map → chunk-HAPELHNW.js.map} +0 -0
- /package/dist/{chunk-HNFZLXZI.js.map → chunk-HBP2OU4Q.js.map} +0 -0
- /package/dist/{chunk-K7FSTB2K.js.map → chunk-HSNOWYEE.js.map} +0 -0
- /package/dist/{chunk-GI63FQEJ.js.map → chunk-HYNDC3FP.js.map} +0 -0
- /package/dist/{chunk-ZBVU2YWV.js.map → chunk-IITZA6U2.js.map} +0 -0
- /package/dist/{chunk-BZFRBG2H.js.map → chunk-IIXMTC65.js.map} +0 -0
- /package/dist/{chunk-JFLFZLOA.js.map → chunk-IJAUHR3M.js.map} +0 -0
- /package/dist/{chunk-K5CCQBNN.js.map → chunk-ILKNYENU.js.map} +0 -0
- /package/dist/{chunk-DJIFXJ4C.js.map → chunk-IPI3OU2P.js.map} +0 -0
- /package/dist/{chunk-6JGATEOF.js.map → chunk-IWYTOCCV.js.map} +0 -0
- /package/dist/{chunk-5ZOJLYD2.js.map → chunk-JE6RZ5L6.js.map} +0 -0
- /package/dist/{chunk-DE6A46AE.js.map → chunk-JFL5WT3S.js.map} +0 -0
- /package/dist/{chunk-CYPBF3BI.js.map → chunk-JO4UMHWR.js.map} +0 -0
- /package/dist/{chunk-LRFXCZB4.js.map → chunk-JWNOM5QT.js.map} +0 -0
- /package/dist/{chunk-NU55QUMO.js.map → chunk-K45ML7M7.js.map} +0 -0
- /package/dist/{chunk-OAVRXSAS.js.map → chunk-K7PWC44N.js.map} +0 -0
- /package/dist/{chunk-ZGCPDA3F.js.map → chunk-KQS4ZJGS.js.map} +0 -0
- /package/dist/{chunk-PAICZOL5.js.map → chunk-KTX7XME6.js.map} +0 -0
- /package/dist/{chunk-KPZ53JY6.js.map → chunk-L3APNYI5.js.map} +0 -0
- /package/dist/{chunk-GKNMKPR6.js.map → chunk-L6Q2A32O.js.map} +0 -0
- /package/dist/{chunk-IG26N6J2.js.map → chunk-MD3ND6DT.js.map} +0 -0
- /package/dist/{chunk-DTLKF4AX.js.map → chunk-MQ277OLB.js.map} +0 -0
- /package/dist/{chunk-BA6Z52QN.js.map → chunk-NF4GHTZ4.js.map} +0 -0
- /package/dist/{chunk-MSAAOQAD.js.map → chunk-NFA7STJA.js.map} +0 -0
- /package/dist/{chunk-7HZTYK7U.js.map → chunk-NLYNRE7L.js.map} +0 -0
- /package/dist/{chunk-HOIHO2YQ.js.map → chunk-NRI2TZDS.js.map} +0 -0
- /package/dist/{chunk-VQUPB7F7.js.map → chunk-O25RFGPX.js.map} +0 -0
- /package/dist/{chunk-Z3HSRNJT.js.map → chunk-OARM5RX4.js.map} +0 -0
- /package/dist/{chunk-JDEKR77O.js.map → chunk-OERKNBKK.js.map} +0 -0
- /package/dist/{chunk-WN5PNP6F.js.map → chunk-OP5JR5Q5.js.map} +0 -0
- /package/dist/{chunk-XP522FFM.js.map → chunk-PARTZ7XI.js.map} +0 -0
- /package/dist/{chunk-BHE44AQE.js.map → chunk-PCHUIDMT.js.map} +0 -0
- /package/dist/{chunk-NYFGFELX.js.map → chunk-PGPPN63I.js.map} +0 -0
- /package/dist/{chunk-Y2CMWGIU.js.map → chunk-PKXCQKPB.js.map} +0 -0
- /package/dist/{chunk-6B3QXFF5.js.map → chunk-PNWGQAXQ.js.map} +0 -0
- /package/dist/{chunk-IO2X6DVH.js.map → chunk-PSX7DAMV.js.map} +0 -0
- /package/dist/{chunk-OL2BEJZR.js.map → chunk-Q2LQVYXY.js.map} +0 -0
- /package/dist/{chunk-VKFZQSQC.js.map → chunk-RPFQQP5S.js.map} +0 -0
- /package/dist/{chunk-X4VWYWFK.js.map → chunk-SJY4DDG7.js.map} +0 -0
- /package/dist/{chunk-DYCTIOER.js.map → chunk-SRZY6QG3.js.map} +0 -0
- /package/dist/{chunk-44USLRMT.js.map → chunk-TPPFWETI.js.map} +0 -0
- /package/dist/{chunk-XXL4PM4M.js.map → chunk-TWVRPT7J.js.map} +0 -0
- /package/dist/{chunk-SM4MT4YC.js.map → chunk-U2UT2NDH.js.map} +0 -0
- /package/dist/{chunk-5MW7OYBM.js.map → chunk-UJOFRJLX.js.map} +0 -0
- /package/dist/{chunk-O6IF4BZT.js.map → chunk-UUJ7J7NE.js.map} +0 -0
- /package/dist/{chunk-5JCGBCFJ.js.map → chunk-V2GHNHP6.js.map} +0 -0
- /package/dist/{chunk-WQ3KTELX.js.map → chunk-V4R6Q5ED.js.map} +0 -0
- /package/dist/{chunk-B3QWQG62.js.map → chunk-V54LG3QG.js.map} +0 -0
- /package/dist/{chunk-6B4UTB4O.js.map → chunk-VDSQ5H4Y.js.map} +0 -0
- /package/dist/{chunk-AEKHSORY.js.map → chunk-VOBVYVPN.js.map} +0 -0
- /package/dist/{chunk-B2WBDMHE.js.map → chunk-VPH47OIV.js.map} +0 -0
- /package/dist/{chunk-JSOJKHEI.js.map → chunk-WHYVVKRS.js.map} +0 -0
- /package/dist/{chunk-KUKY5GEX.js.map → chunk-WU2KXA6I.js.map} +0 -0
- /package/dist/{chunk-VNOXUWK7.js.map → chunk-X5F4FRH7.js.map} +0 -0
- /package/dist/{chunk-EOEYOPOS.js.map → chunk-YKALXHCS.js.map} +0 -0
- /package/dist/{chunk-BKBELIUR.js.map → chunk-YWQ7QCWR.js.map} +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { ElementType, ReactNode } from 'react';
|
|
2
|
+
import type { SectionNavCopy } from '../../../copy';
|
|
3
|
+
/**
|
|
4
|
+
* One place the section leads to — a bar slot on a phone, a row in the rail.
|
|
5
|
+
*/
|
|
6
|
+
export interface SectionNavDestination {
|
|
7
|
+
/** Stable key. Also the suffix of the slot's `data-testid`. */
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
icon: ReactNode;
|
|
11
|
+
href: string;
|
|
12
|
+
/**
|
|
13
|
+
* How many things behind this destination wait on the viewer. `0` and
|
|
14
|
+
* `undefined` render no badge — "nothing waiting" and "not known yet" are
|
|
15
|
+
* different claims and neither is a number.
|
|
16
|
+
*/
|
|
17
|
+
badge?: number;
|
|
18
|
+
/** The destination the viewer is on. The host decides; the nav never reads the URL. */
|
|
19
|
+
active?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* One entry inside a menu — a sheet tile on a phone, a row in the rail.
|
|
23
|
+
*
|
|
24
|
+
* An entry either LEADS somewhere (`href`, rendered through `linkComponent`)
|
|
25
|
+
* or DOES something (`onSelect`). Give it one or the other.
|
|
26
|
+
*/
|
|
27
|
+
export interface SectionNavEntry {
|
|
28
|
+
id: string;
|
|
29
|
+
label: string;
|
|
30
|
+
/** A second line under the label. Shown by `list` groups and in the rail. */
|
|
31
|
+
description?: string;
|
|
32
|
+
icon: ReactNode;
|
|
33
|
+
href?: string;
|
|
34
|
+
onSelect?: () => void;
|
|
35
|
+
badge?: number;
|
|
36
|
+
active?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** A titled run of entries inside a menu. */
|
|
39
|
+
export interface SectionNavGroup {
|
|
40
|
+
id: string;
|
|
41
|
+
/** Heading above the entries. Omit for a group that needs none. */
|
|
42
|
+
title?: string;
|
|
43
|
+
/**
|
|
44
|
+
* How the phone sheet draws the entries: `grid` is three tiles across,
|
|
45
|
+
* `list` one row each with its description. The rail always lists.
|
|
46
|
+
* Defaults to `list`.
|
|
47
|
+
*/
|
|
48
|
+
layout?: 'grid' | 'list';
|
|
49
|
+
entries: SectionNavEntry[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A menu the nav opens: the centred primary action, or the "more" slot.
|
|
53
|
+
*
|
|
54
|
+
* On a phone it opens as a bottom sheet over the page. In the rail there is
|
|
55
|
+
* room for everything, so its groups are listed under `title` instead of
|
|
56
|
+
* hiding behind a trigger.
|
|
57
|
+
*/
|
|
58
|
+
export interface SectionNavMenu {
|
|
59
|
+
/** The trigger's accessible name, and the visible label of the "more" slot. */
|
|
60
|
+
label: string;
|
|
61
|
+
icon: ReactNode;
|
|
62
|
+
/** The sheet's heading, and the rail section's. */
|
|
63
|
+
title: string;
|
|
64
|
+
groups: SectionNavGroup[];
|
|
65
|
+
}
|
|
66
|
+
/** The way out of the section, drawn at the top of the rail. */
|
|
67
|
+
export interface SectionNavBack {
|
|
68
|
+
label: string;
|
|
69
|
+
href: string;
|
|
70
|
+
icon?: ReactNode;
|
|
71
|
+
}
|
|
72
|
+
export interface SectionNavProps {
|
|
73
|
+
/**
|
|
74
|
+
* `bar` — a bottom tab bar for a phone: the destinations, `more` as the last
|
|
75
|
+
* slot, and `primary` as a raised button in the middle.
|
|
76
|
+
*
|
|
77
|
+
* `rail` — a vertical list for a wide screen, with `back` and `heading` on
|
|
78
|
+
* top and every menu's entries listed rather than folded away.
|
|
79
|
+
*/
|
|
80
|
+
layout: 'bar' | 'rail';
|
|
81
|
+
/** The navigation landmark's accessible name. */
|
|
82
|
+
label: string;
|
|
83
|
+
destinations: SectionNavDestination[];
|
|
84
|
+
/** The raised action in the middle of the bar. */
|
|
85
|
+
primary?: SectionNavMenu;
|
|
86
|
+
/** The last slot of the bar. Its badge is the sum of its entries' badges. */
|
|
87
|
+
more?: SectionNavMenu;
|
|
88
|
+
/** Rail only: the way back out of the section. */
|
|
89
|
+
back?: SectionNavBack;
|
|
90
|
+
/** Rail only: a heading above the destinations. */
|
|
91
|
+
heading?: string;
|
|
92
|
+
/**
|
|
93
|
+
* The component every `href` renders through — a router's link adapter that
|
|
94
|
+
* takes `href`. Omitted, a plain `<a>` is used and navigation reloads.
|
|
95
|
+
*/
|
|
96
|
+
linkComponent?: ElementType;
|
|
97
|
+
/** The nav's own words. REQUIRED — the component carries none. */
|
|
98
|
+
copy: SectionNavCopy;
|
|
99
|
+
/** Prefix for every `data-testid`. Defaults to `"section-nav"`. */
|
|
100
|
+
dataTestId?: string;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=SectionNav.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionNav.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/SectionNav/SectionNav.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,qBAAqB,EAAE,CAAC;IACtC,kDAAkD;IAClD,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,kDAAkD;IAClD,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,kEAAkE;IAClE,IAAI,EAAE,cAAc,CAAC;IACrB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SectionNavDestination, SectionNavMenu } from '../SectionNav.types';
|
|
3
|
+
/**
|
|
4
|
+
* The stories' example section, shared by the showcase and the interaction
|
|
5
|
+
* tests. Kept out of the `*.stories.tsx` files because Storybook reads every
|
|
6
|
+
* named export there as a story.
|
|
7
|
+
*/
|
|
8
|
+
/** A restaurant's shift, as the example section: the floor, the board, the waiter's round. */
|
|
9
|
+
export declare const DESTINATIONS: SectionNavDestination[];
|
|
10
|
+
export declare const PRIMARY: SectionNavMenu;
|
|
11
|
+
export declare const MORE: SectionNavMenu;
|
|
12
|
+
/** A phone-sized frame with the bar at its foot, the way a host docks it. */
|
|
13
|
+
export declare function PhoneFrame({ children }: {
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}): React.ReactElement;
|
|
16
|
+
/** A desktop-column-sized frame for the rail. */
|
|
17
|
+
export declare function RailFrame({ children }: {
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
}): React.ReactElement;
|
|
20
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/SectionNav/__stories__/fixtures.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEjF;;;;GAIG;AAEH,8FAA8F;AAC9F,eAAO,MAAM,YAAY,EAAE,qBAAqB,EAI/C,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,cA6BrB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,cAiBlB,CAAC;AAEF,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAoB1F;AAGD,iDAAiD;AACjD,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAEzF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { SectionNav } from './SectionNav';
|
|
2
|
+
export { sectionNavBarInset } from './SectionNav.bar';
|
|
3
|
+
export { RaisedActionButton } from './SectionNav.primary';
|
|
4
|
+
export type { RaisedActionButtonProps } from './SectionNav.primary';
|
|
5
|
+
export type { SectionNavBack, SectionNavDestination, SectionNavEntry, SectionNavGroup, SectionNavMenu, SectionNavProps, } from './SectionNav.types';
|
|
6
|
+
export type { SectionNavCopy } from '../../../copy';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/SectionNav/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
|
|
@@ -16,6 +16,16 @@ export interface CommandPaletteCopy {
|
|
|
16
16
|
recent: string;
|
|
17
17
|
tryAnotherTerm: string;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* `SectionNav`'s own words — only the chrome it draws around the host's
|
|
21
|
+
* destinations. Every destination and menu label is the host's, per prop.
|
|
22
|
+
*/
|
|
23
|
+
export interface SectionNavCopy {
|
|
24
|
+
/** The open primary trigger's accessible name, and the sheet's close button. */
|
|
25
|
+
close: string;
|
|
26
|
+
/** A badge's accessible name — "3 pending", for a count of 3. */
|
|
27
|
+
badge: (count: number) => string;
|
|
28
|
+
}
|
|
19
29
|
/** The breadcrumb's overflow control, in its two spellings. */
|
|
20
30
|
export interface BreadcrumbCopy {
|
|
21
31
|
showMore: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/copy/navigation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/copy/navigation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC;AAED,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* The en-US pack for the navigation family. Split the same way
|
|
3
3
|
* `pt-BR.navigation.ts` is — see `en-US.ts` for why.
|
|
4
4
|
*/
|
|
5
|
-
import type { BreadcrumbCopy, CommandPaletteCopy } from './copy';
|
|
5
|
+
import type { BreadcrumbCopy, CommandPaletteCopy, SectionNavCopy } from './copy';
|
|
6
6
|
export declare const EN_US_COMMAND_PALETTE_COPY: CommandPaletteCopy;
|
|
7
7
|
export declare const EN_US_BREADCRUMB_COPY: BreadcrumbCopy;
|
|
8
|
+
export declare const EN_US_SECTION_NAV_COPY: SectionNavCopy;
|
|
8
9
|
//# sourceMappingURL=en-US.navigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.navigation.d.ts","sourceRoot":"","sources":["../../src/en-US.navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,
|
|
1
|
+
{"version":3,"file":"en-US.navigation.d.ts","sourceRoot":"","sources":["../../src/en-US.navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACf,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,0BAA0B,EAAE,kBAQxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAGnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAGpC,CAAC"}
|
package/dist/types/locales.d.ts
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import type { DataViewsCopy } from './components/data-display/DataViews/data-views-copy';
|
|
21
21
|
import type { SavedViewsLabels } from './components/layout/ContentToolbar/ContentToolbar.types';
|
|
22
|
-
import type { AddressAutocompleteCopy, AutocompleteCopy, BreadcrumbCopy, CarouselCopy, CategorySelectCopy, CepFieldCopy, ChromeCopy, CodeEditorCopy, CommandPaletteCopy, ConfirmActionCopy, DataGridCopy, DataStateCopy, InstallPromptCopy, LightboxCopy, MapPreviewCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, SectionOnboardingCopy, SettingCardCopy, SettingSwitchCopy, SocialLoginCopy, TableFilterCopy, TimingDiagramCopy, TutorialCopy, UploadButtonCopy, UserAvatarCopy } from "./copy";
|
|
22
|
+
import type { AddressAutocompleteCopy, AutocompleteCopy, BreadcrumbCopy, CarouselCopy, CategorySelectCopy, CepFieldCopy, ChromeCopy, CodeEditorCopy, CommandPaletteCopy, SectionNavCopy, ConfirmActionCopy, DataGridCopy, DataStateCopy, InstallPromptCopy, LightboxCopy, MapPreviewCopy, PasswordStrengthCopy, PhoneInputCopy, RichEditorToolbarCopy, SectionOnboardingCopy, SettingCardCopy, SettingSwitchCopy, SocialLoginCopy, TableFilterCopy, TimingDiagramCopy, TutorialCopy, UploadButtonCopy, UserAvatarCopy } from "./copy";
|
|
23
23
|
type LocalePack<T> = {
|
|
24
24
|
readonly 'pt-BR': T;
|
|
25
25
|
readonly 'en-US': T;
|
|
@@ -45,6 +45,7 @@ export declare const TABLE_FILTER_COPY: LocalePack<TableFilterCopy>;
|
|
|
45
45
|
export declare const SETTING_CARD_COPY: LocalePack<SettingCardCopy>;
|
|
46
46
|
export declare const SETTING_SWITCH_COPY: LocalePack<SettingSwitchCopy>;
|
|
47
47
|
export declare const COMMAND_PALETTE_COPY: LocalePack<CommandPaletteCopy>;
|
|
48
|
+
export declare const SECTION_NAV_COPY: LocalePack<SectionNavCopy>;
|
|
48
49
|
export declare const BREADCRUMB_COPY: LocalePack<BreadcrumbCopy>;
|
|
49
50
|
export declare const SECTION_ONBOARDING_COPY: LocalePack<SectionOnboardingCopy>;
|
|
50
51
|
export declare const CONFIRM_ACTION_COPY: LocalePack<ConfirmActionCopy>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAC;AAIhB,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAKlE,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AACF,eAAO,MAAM,cAAc,0BAAuE,CAAC;AACnG,eAAO,MAAM,eAAe,2BAG3B,CAAC;AAGF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,WAAW,wBAA+D,CAAC;AAGxF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AACF,eAAO,MAAM,yBAAyB,qCAGrC,CAAC;AACF,eAAO,MAAM,iBAAiB,8BAG7B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,sBAAsB,kCAGlC,CAAC;AACF,eAAO,MAAM,wBAAwB,mCAGpC,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AACF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AACF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AAGF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,eAAe,4BAG3B,CAAC;AAGF,eAAO,MAAM,uBAAuB,mCAGnC,CAAC;AACF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,cAAc,0BAAuE,CAAC;AACnG,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../src/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACf,MAAM,QAAQ,CAAC;AAIhB,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAKlE,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,eAAe,2BAG3B,CAAC;AACF,eAAO,MAAM,cAAc,0BAAuE,CAAC;AACnG,eAAO,MAAM,eAAe,2BAG3B,CAAC;AAGF,eAAO,MAAM,aAAa,0BAAqE,CAAC;AAChG,eAAO,MAAM,WAAW,wBAA+D,CAAC;AAGxF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AACF,eAAO,MAAM,yBAAyB,qCAGrC,CAAC;AACF,eAAO,MAAM,iBAAiB,8BAG7B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,sBAAsB,kCAGlC,CAAC;AACF,eAAO,MAAM,wBAAwB,mCAGpC,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AACF,eAAO,MAAM,iBAAiB,6BAG7B,CAAC;AACF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AAGF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC;AACF,eAAO,MAAM,eAAe,4BAG3B,CAAC;AAGF,eAAO,MAAM,uBAAuB,mCAGnC,CAAC;AACF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,oBAAoB,gCAGhC,CAAC;AACF,eAAO,MAAM,cAAc,0BAAuE,CAAC;AACnG,eAAO,MAAM,kBAAkB,8BAG9B,CAAC;AAGF,eAAO,MAAM,mBAAmB,+BAG/B,CAAC;AACF,eAAO,MAAM,gBAAgB,4BAG5B,CAAC"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* The pt-BR pack for the navigation family. Split out of `pt-BR.ts`, which is a
|
|
3
3
|
* barrel over this folder — see that file for why.
|
|
4
4
|
*/
|
|
5
|
-
import type { BreadcrumbCopy, CommandPaletteCopy } from './copy';
|
|
5
|
+
import type { BreadcrumbCopy, CommandPaletteCopy, SectionNavCopy } from './copy';
|
|
6
6
|
export declare const PT_BR_COMMAND_PALETTE_COPY: CommandPaletteCopy;
|
|
7
7
|
export declare const PT_BR_BREADCRUMB_COPY: BreadcrumbCopy;
|
|
8
|
+
export declare const PT_BR_SECTION_NAV_COPY: SectionNavCopy;
|
|
8
9
|
//# sourceMappingURL=pt-BR.navigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pt-BR.navigation.d.ts","sourceRoot":"","sources":["../../src/pt-BR.navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,
|
|
1
|
+
{"version":3,"file":"pt-BR.navigation.d.ts","sourceRoot":"","sources":["../../src/pt-BR.navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACf,MAAM,QAAQ,CAAC;AAEhB,eAAO,MAAM,0BAA0B,EAAE,kBAMxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAGnC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,cAGpC,CAAC"}
|
package/dist/user-avatar.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UserAvatar,
|
|
3
3
|
UserMenu
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UUJ7J7NE.js";
|
|
5
5
|
import "./chunk-UDQSIRAP.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-3ZVUNSFF.js";
|
|
6
|
+
import "./chunk-PGPPN63I.js";
|
|
8
7
|
import "./chunk-TNQDSTIA.js";
|
|
9
8
|
import "./chunk-6ZZGK5DT.js";
|
|
9
|
+
import "./chunk-3ZVUNSFF.js";
|
|
10
10
|
import "./chunk-MTEQEPNY.js";
|
|
11
11
|
import "./chunk-VUHLNYAE.js";
|
|
12
12
|
import "./chunk-2GSIEDGN.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-FKUYRQSP.js";
|
|
13
|
+
import "./chunk-OP5JR5Q5.js";
|
|
15
14
|
import "./chunk-76X6JRVI.js";
|
|
15
|
+
import "./chunk-FKUYRQSP.js";
|
|
16
16
|
import "./chunk-JH7EEJEQ.js";
|
|
17
17
|
import "./chunk-BA4RHQ3B.js";
|
|
18
18
|
import "./chunk-K6LNHHSH.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../chunk-H7NA4TXY.js";
|
|
2
2
|
import {
|
|
3
3
|
InfiniteScroll
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-Y2X7LYIN.js";
|
|
4
|
+
} from "../chunk-HBP2OU4Q.js";
|
|
6
5
|
import "../chunk-5KNDAC24.js";
|
|
6
|
+
import "../chunk-Y2X7LYIN.js";
|
|
7
7
|
import "../chunk-YKCAJ2TN.js";
|
|
8
8
|
import "../chunk-PZ5AY32C.js";
|
|
9
9
|
export {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../chunk-3QQVEYOR.js";
|
|
2
2
|
import {
|
|
3
3
|
InstallPrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-GY62N32G.js";
|
|
4
|
+
} from "../chunk-JE6RZ5L6.js";
|
|
6
5
|
import {
|
|
7
6
|
usePwaInstall
|
|
8
7
|
} from "../chunk-5GMHJ7Y5.js";
|
|
8
|
+
import "../chunk-GY62N32G.js";
|
|
9
9
|
import "../chunk-WXYLH3QZ.js";
|
|
10
10
|
import {
|
|
11
11
|
PWA_INSTALL_AVAILABLE_EVENT,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@12-apps/ui",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.45.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"packageManager": "pnpm@10.34.5",
|
|
6
6
|
"type": "module",
|
|
@@ -608,6 +608,10 @@
|
|
|
608
608
|
"types": "./dist/types/components/navigation/Pagination/index.d.ts",
|
|
609
609
|
"default": "./dist/navigation/Pagination.js"
|
|
610
610
|
},
|
|
611
|
+
"./navigation/SectionNav": {
|
|
612
|
+
"types": "./dist/types/components/navigation/SectionNav/index.d.ts",
|
|
613
|
+
"default": "./dist/navigation/SectionNav.js"
|
|
614
|
+
},
|
|
611
615
|
"./navigation/Tabs": {
|
|
612
616
|
"types": "./dist/types/components/navigation/Tabs/index.d.ts",
|
|
613
617
|
"default": "./dist/navigation/Tabs.js"
|
|
@@ -105,29 +105,148 @@ const useEscapeKey = (active: boolean, onEscape: () => void) => {
|
|
|
105
105
|
* backdrop, which `pointer-events: none` on the popover root (so the page
|
|
106
106
|
* under an open card stays usable) takes out of play. So this listens on the
|
|
107
107
|
* document itself, in the CAPTURE phase, where a `stopPropagation` further in
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
108
|
+
* — including one a nested control (or something entirely unrelated to the
|
|
109
|
+
* card) calls on its OWN bubble — cannot swallow it (FUT-2776 adversarial
|
|
110
|
+
* review: a bubble-phase listener here was tried and reverted; see below).
|
|
111
|
+
* It only observes: no `preventDefault`, so the tap or click still reaches
|
|
112
|
+
* whatever it landed on. Attached while open, removed on close and on
|
|
113
|
+
* unmount.
|
|
114
|
+
*
|
|
115
|
+
* That capture placement is exactly what makes the decision impossible to
|
|
116
|
+
* make SYNCHRONOUSLY: `document` is the outermost node on the capture path,
|
|
117
|
+
* so this handler fires before React's own capture dispatch even starts —
|
|
118
|
+
* before `useCardOwnership`'s marker on the card's content root (also
|
|
119
|
+
* capture, but on a node further down the same tree) has had a chance to run
|
|
120
|
+
* for this same event. So the decision is deferred — but NOT to a microtask:
|
|
121
|
+
* a microtask here reads the marker before it is set for TRUSTED input (a
|
|
122
|
+
* real press, or Playwright's `page.mouse`), which is the very bug this hook
|
|
123
|
+
* exists to fix (FUT-2776, third-review adversarial probe, measured with
|
|
124
|
+
* real Chromium and `page.mouse.down()`):
|
|
125
|
+
*
|
|
126
|
+
* TRUSTED: doc-capture-sync → doc-capture-microtask (marker unset) → inner-capture (sets marker)
|
|
127
|
+
* SCRIPT: doc-capture-sync → inner-capture (sets marker) → doc-capture-microtask (marker set)
|
|
128
|
+
*
|
|
129
|
+
* Chromium runs any microtasks queued by a capture-phase listener BEFORE
|
|
130
|
+
* dispatching to the next listener on the path when the event is trusted —
|
|
131
|
+
* so a microtask queued here runs before `useCardOwnership`'s capture
|
|
132
|
+
* listener further down the tree ever gets a turn, and the ownership check
|
|
133
|
+
* always reads empty. A script-dispatched event (`fireEvent`, `userEvent` in
|
|
134
|
+
* jsdom, or in a Storybook `play` function) instead completes its WHOLE
|
|
135
|
+
* capture-then-bubble dispatch before any microtask runs — which is why
|
|
136
|
+
* every test under the microtask version passed and the bug still shipped.
|
|
137
|
+
* A macrotask (`setTimeout(0)`) is not part of the event dispatch under
|
|
138
|
+
* EITHER kind of input, so it always runs after the whole dispatch — marker
|
|
139
|
+
* included — regardless of trusted vs. script. That ordering is what this
|
|
140
|
+
* hook now relies on.
|
|
141
|
+
*
|
|
142
|
+
* `sessionRef` replaces a plain boolean: it is a fresh object assigned each
|
|
143
|
+
* time the card opens (this effect's mount), so a `setTimeout` callback
|
|
144
|
+
* queued for a press during one open session can tell whether it is still
|
|
145
|
+
* that SAME session by comparing against the ref, not just whether the card
|
|
146
|
+
* happens to be open again — the card closing and reopening while a stale
|
|
147
|
+
* timeout is still pending must not let that timeout act on the new session.
|
|
148
|
+
* Every scheduled timeout is also tracked so a close or unmount can cancel
|
|
149
|
+
* whatever is still pending, rather than letting it fire against a card that
|
|
150
|
+
* is no longer there to close.
|
|
111
151
|
*/
|
|
112
152
|
const useClickAway = (
|
|
113
153
|
active: boolean,
|
|
114
154
|
inside: () => ReadonlyArray<Element | null>,
|
|
155
|
+
ownsEvent: (event: Event) => boolean,
|
|
115
156
|
onAway: () => void,
|
|
116
157
|
) => {
|
|
158
|
+
const sessionRef = React.useRef<object | null>(null);
|
|
159
|
+
const pendingRef = React.useRef<Set<number>>(new Set());
|
|
160
|
+
|
|
117
161
|
React.useEffect(() => {
|
|
118
|
-
if (!active) return;
|
|
162
|
+
if (!active) return undefined;
|
|
163
|
+
|
|
164
|
+
const session = {};
|
|
165
|
+
sessionRef.current = session;
|
|
119
166
|
|
|
120
167
|
const handlePointerDown = (event: globalThis.PointerEvent) => {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
168
|
+
const timeoutId = window.setTimeout(() => {
|
|
169
|
+
pendingRef.current.delete(timeoutId);
|
|
170
|
+
// Stale: this session closed (or a newer one opened) before this
|
|
171
|
+
// press's decision could run.
|
|
172
|
+
if (sessionRef.current !== session) return;
|
|
173
|
+
|
|
174
|
+
const target = event.target as Node | null;
|
|
175
|
+
const ownedByReactTree = ownsEvent(event);
|
|
176
|
+
const ownedByDom = Boolean(target) && inside().some((el) => el?.contains(target));
|
|
177
|
+
if (ownedByReactTree || ownedByDom) return;
|
|
178
|
+
onAway();
|
|
179
|
+
}, 0);
|
|
180
|
+
pendingRef.current.add(timeoutId);
|
|
124
181
|
};
|
|
125
182
|
|
|
126
183
|
document.addEventListener('pointerdown', handlePointerDown, true);
|
|
127
|
-
return () =>
|
|
128
|
-
|
|
184
|
+
return () => {
|
|
185
|
+
sessionRef.current = null;
|
|
186
|
+
pendingRef.current.forEach((id) => window.clearTimeout(id));
|
|
187
|
+
pendingRef.current.clear();
|
|
188
|
+
document.removeEventListener('pointerdown', handlePointerDown, true);
|
|
189
|
+
};
|
|
190
|
+
}, [active, inside, ownsEvent, onAway]);
|
|
129
191
|
};
|
|
130
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Whether the pointerdown `useClickAway` is about to look at started inside
|
|
195
|
+
* the card's OWN React tree — a MUI `Select`'s menu, a nested `Popover`, a
|
|
196
|
+
* `DropdownMenu` the card's `content` renders — even when that control's DOM
|
|
197
|
+
* node is not a descendant of the card's box at all, because it portalled
|
|
198
|
+
* itself out near `document.body` (FUT-2776).
|
|
199
|
+
*
|
|
200
|
+
* React re-parents a portal's events to bubble AND capture through its OWNING
|
|
201
|
+
* React tree, not the DOM tree it renders into (see the React docs on
|
|
202
|
+
* `createPortal`), so an `onPointerDownCapture` on the card's own content root
|
|
203
|
+
* still fires for a press inside a portal the card's content renders, and
|
|
204
|
+
* NEVER fires for a press inside an unrelated one mounted by something that
|
|
205
|
+
* is not a descendant of the card in the REACT tree — ownership, not timing.
|
|
206
|
+
* That is the whole fix: the ORIGINAL approach (a `MutationObserver` on
|
|
207
|
+
* `document.body`) treated ANY element appended to the body while the card
|
|
208
|
+
* was open as inside, so an unrelated Snackbar, dev overlay or Popover that
|
|
209
|
+
* happened to mount at the same time stopped closing the card too.
|
|
210
|
+
*
|
|
211
|
+
* Tracked per NATIVE EVENT OBJECT in a `WeakSet`, not a boolean flag: a
|
|
212
|
+
* boolean stayed `true` forever once a press set it whose NATIVE propagation
|
|
213
|
+
* then got stopped before reaching `useClickAway`'s own (bubble-phase, in
|
|
214
|
+
* that earlier revision) listener — common for anything that treats the
|
|
215
|
+
* press as its own gesture — so the marker never got consumed, and the
|
|
216
|
+
* NEXT, genuinely outside press read a STALE `true` and stayed open
|
|
217
|
+
* (FUT-2776, caught on adversarial review of the first fix here). Keying on
|
|
218
|
+
* the event itself instead needs no consuming step and cannot go stale: a
|
|
219
|
+
* `WeakSet` entry only ever answers for the ONE dispatch that created it,
|
|
220
|
+
* and nothing outside this closure keeps a reference to a past pointerdown
|
|
221
|
+
* once `useClickAway`'s deferred (`setTimeout(0)`, not a microtask — see that
|
|
222
|
+
* hook for why) check for it has run, so the entry is simply garbage from
|
|
223
|
+
* then on.
|
|
224
|
+
*/
|
|
225
|
+
const useCardOwnership = () => {
|
|
226
|
+
const ownedEventsRef = React.useRef<WeakSet<Event>>(new WeakSet());
|
|
227
|
+
|
|
228
|
+
const markInside = React.useCallback((event: React.PointerEvent<HTMLElement>) => {
|
|
229
|
+
ownedEventsRef.current.add(event.nativeEvent);
|
|
230
|
+
}, []);
|
|
231
|
+
|
|
232
|
+
const ownsEvent = React.useCallback(
|
|
233
|
+
(event: Event) => ownedEventsRef.current.has(event),
|
|
234
|
+
[],
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
return { markInside, ownsEvent };
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
/** The trigger and the card's own box — a plain DOM containment check. */
|
|
241
|
+
const useInsideCard = (
|
|
242
|
+
anchorEl: HTMLElement | null,
|
|
243
|
+
contentRef: React.MutableRefObject<HTMLDivElement | null>,
|
|
244
|
+
) =>
|
|
245
|
+
React.useCallback(
|
|
246
|
+
() => [anchorEl, contentRef.current],
|
|
247
|
+
[anchorEl, contentRef],
|
|
248
|
+
);
|
|
249
|
+
|
|
131
250
|
/** Whatever is still pending when the card unmounts is cancelled with it. */
|
|
132
251
|
const useClearOnUnmount = (...refs: TimerRef[]) => {
|
|
133
252
|
React.useEffect(
|
|
@@ -146,34 +265,22 @@ interface HoverCardTimingInput {
|
|
|
146
265
|
onClose?: () => void;
|
|
147
266
|
}
|
|
148
267
|
|
|
268
|
+
type VisibilityInput = Omit<HoverCardTimingInput, 'touchEnabled'>;
|
|
269
|
+
|
|
149
270
|
/**
|
|
150
|
-
*
|
|
271
|
+
* The open/close state and its two timers, split out of `useHoverCard` so
|
|
272
|
+
* that composing it with click-away, escape and ownership reads as one flat
|
|
273
|
+
* list rather than one long function.
|
|
151
274
|
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* others' pending work, which is why they live together.
|
|
275
|
+
* The enter delay before opening and the exit delay before closing (so the
|
|
276
|
+
* pointer can travel from the trigger onto the card without dismissing it)
|
|
277
|
+
* each cancel the other's pending work, which is why they live together.
|
|
156
278
|
*/
|
|
157
|
-
|
|
158
|
-
disabled,
|
|
159
|
-
touchEnabled,
|
|
160
|
-
enterDelay,
|
|
161
|
-
exitDelay,
|
|
162
|
-
onOpen,
|
|
163
|
-
onClose,
|
|
164
|
-
}: HoverCardTimingInput) => {
|
|
279
|
+
const useCardVisibility = ({ disabled, enterDelay, exitDelay, onOpen, onClose }: VisibilityInput) => {
|
|
165
280
|
const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);
|
|
166
281
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
167
|
-
const [isTouchDevice, setIsTouchDevice] = React.useState(false);
|
|
168
282
|
const enterTimeoutRef = React.useRef<number | undefined>(undefined);
|
|
169
283
|
const exitTimeoutRef = React.useRef<number | undefined>(undefined);
|
|
170
|
-
/** The card's own box, inside the popover paper: a press here is not "away". */
|
|
171
|
-
const contentRef = React.useRef<HTMLDivElement | null>(null);
|
|
172
|
-
|
|
173
|
-
// Probed in an effect, not during render, so SSR and hydration stay intact.
|
|
174
|
-
React.useEffect(() => {
|
|
175
|
-
setIsTouchDevice('ontouchstart' in window);
|
|
176
|
-
}, []);
|
|
177
284
|
|
|
178
285
|
const openCard = React.useCallback(
|
|
179
286
|
(trigger: HTMLElement) => {
|
|
@@ -216,6 +323,29 @@ export const useHoverCard = ({
|
|
|
216
323
|
onClose?.();
|
|
217
324
|
}, [onClose]);
|
|
218
325
|
|
|
326
|
+
return { anchorEl, isOpen, openCard, closeCard, handleClose, enterTimeoutRef, exitTimeoutRef };
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
export const useHoverCard = ({
|
|
330
|
+
disabled,
|
|
331
|
+
touchEnabled,
|
|
332
|
+
enterDelay,
|
|
333
|
+
exitDelay,
|
|
334
|
+
onOpen,
|
|
335
|
+
onClose,
|
|
336
|
+
}: HoverCardTimingInput) => {
|
|
337
|
+
const [isTouchDevice, setIsTouchDevice] = React.useState(false);
|
|
338
|
+
/** The card's own box, inside the popover paper: a press here is not "away". */
|
|
339
|
+
const contentRef = React.useRef<HTMLDivElement | null>(null);
|
|
340
|
+
|
|
341
|
+
const { anchorEl, isOpen, openCard, closeCard, handleClose, enterTimeoutRef, exitTimeoutRef } =
|
|
342
|
+
useCardVisibility({ disabled, enterDelay, exitDelay, onOpen, onClose });
|
|
343
|
+
|
|
344
|
+
// Probed in an effect, not during render, so SSR and hydration stay intact.
|
|
345
|
+
React.useEffect(() => {
|
|
346
|
+
setIsTouchDevice('ontouchstart' in window);
|
|
347
|
+
}, []);
|
|
348
|
+
|
|
219
349
|
const { triggerHandlers, cardHandlers } = useHoverHandlers({
|
|
220
350
|
isTouchDevice,
|
|
221
351
|
touchEnabled,
|
|
@@ -225,11 +355,21 @@ export const useHoverCard = ({
|
|
|
225
355
|
exitTimeoutRef,
|
|
226
356
|
});
|
|
227
357
|
|
|
228
|
-
const insideCard =
|
|
358
|
+
const insideCard = useInsideCard(anchorEl, contentRef);
|
|
359
|
+
const { markInside, ownsEvent } = useCardOwnership();
|
|
229
360
|
|
|
230
361
|
useEscapeKey(isOpen, handleClose);
|
|
231
|
-
useClickAway(isOpen, insideCard, handleClose);
|
|
362
|
+
useClickAway(isOpen, insideCard, ownsEvent, handleClose);
|
|
232
363
|
useClearOnUnmount(enterTimeoutRef, exitTimeoutRef);
|
|
233
364
|
|
|
234
|
-
return {
|
|
365
|
+
return {
|
|
366
|
+
anchorEl,
|
|
367
|
+
isOpen,
|
|
368
|
+
handleClose,
|
|
369
|
+
triggerHandlers,
|
|
370
|
+
cardHandlers,
|
|
371
|
+
contentRef,
|
|
372
|
+
/** Wire onto the card's content root as `onPointerDownCapture` (FUT-2776). */
|
|
373
|
+
onContentPointerDownCapture: markInside,
|
|
374
|
+
};
|
|
235
375
|
};
|
|
@@ -108,6 +108,7 @@ The HoverCard component displays additional information in a card-style popup wh
|
|
|
108
108
|
|
|
109
109
|
- The component supports keyboard navigation (Escape key to close)
|
|
110
110
|
- The card is dismissed by moving the pointer off the trigger and the card (after `exitDelay`), by Escape, or by a tap or click anywhere outside them. The outside press still reaches what it landed on: the page under an open card stays usable
|
|
111
|
+
- Nested portal content is supported: if `children` opens something of its own in a portal — a MUI `Select`'s menu, a nested `Popover`, a `DropdownMenu` — a press inside it counts as inside the card too, so picking an option there does not dismiss the card. No extra wiring is needed for this; it works for anything the card's OWN content renders, portalled or not — ownership is by React tree membership, not by when something happened to mount to `document.body`, so an unrelated portal (a Snackbar, a dev overlay, another component's Popover) that mounts while the card is open is not treated as inside it, and a press there still closes the card like any other outside press
|
|
111
112
|
- Proper ARIA attributes are applied to the popover
|
|
112
113
|
- Focus management is handled automatically
|
|
113
114
|
- Touch support for mobile devices can be enabled/disabled
|