@nxgt/material 3.79.1 → 3.80.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/CHANGELOG.md +48 -0
- package/README.md +45 -6
- package/dist/{alert-dialog-653apk3f.js → alert-dialog-DgHtXZuB.js} +1 -1
- package/dist/{async-slice-CXLbQuOc.js → async-slice-YBQsGtQT.js} +1 -1
- package/dist/{button-3op3rtZh.js → button-_vm-xSBU.js} +1 -1
- package/dist/{calculator-KqIMBXSh.js → calculator-CTd_S23A.js} +10 -10
- package/dist/calculator-field.js +6 -6
- package/dist/{calculator-segment-BlJE1LaS.js → calculator-segment-OI1BT3bA.js} +1 -1
- package/dist/calculator.js +1 -1
- package/dist/charts.js +3 -3
- package/dist/{chip-MuKDwtkG.js → chip-DumcVzUO.js} +2 -2
- package/dist/{code-editor-Bp2RrdNx.js → code-editor-CiwgfSOK.js} +4 -4
- package/dist/code-editor.js +4 -4
- package/dist/{code-language-items-B7WR5ua_.js → code-language-items-Dip0xnmc.js} +2 -2
- package/dist/components/components.css +3 -0
- package/dist/components/ui/actions/fab/fab-dock.css +19 -6
- package/dist/components/ui/layout/app-search/app-search.css +62 -0
- package/dist/components/ui/layout/app-shell/activity-backdrop.css +10 -2
- package/dist/components/ui/layout/app-shell/app-header.css +108 -0
- package/dist/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
- package/dist/{components-CTyNC_zW.js → components-CJFHhkZv.js} +21798 -17784
- package/dist/components.js +37 -37
- package/dist/{conversion-variant-BDFAxqe9.js → conversion-variant-CqrPwPjC.js} +3 -3
- package/dist/{currency-field-DWHB5oms.js → currency-field-CMFvctye.js} +4 -4
- package/dist/{dialog-Bm5LvVlB.js → dialog-B0iU3fmh.js} +3 -3
- package/dist/dnd.js +2 -2
- package/dist/{dropdown-menu-xlZ6NYUA.js → dropdown-menu-CPOgcajv.js} +1 -1
- package/dist/editor.js +7 -7
- package/dist/{empty-state-C0kviQdW.js → empty-state-D3Jggupu.js} +1 -1
- package/dist/{financial-variant-CggTpad2.js → financial-variant-BdyfYhnp.js} +5 -5
- package/dist/{hooks-Dg94jPRq.js → hooks-Z7KKbv4G.js} +2 -2
- package/dist/hooks.js +2 -2
- package/dist/{hover-card-B1g55Hi6.js → hover-card-CFGIX6kg.js} +1 -1
- package/dist/i18n.js +3 -3
- package/dist/{icon-badge-BcW66bRk.js → icon-badge-kxGWUvcO.js} +1 -1
- package/dist/{icon-button-Cogxy1cy.js → icon-button-BamxMwZs.js} +1 -1
- package/dist/lib/components/ui/fields/contacts/placeholders.d.ts +1 -1
- package/dist/lib/components/ui/layout/app-bar/top-app-bar.d.ts +18 -3
- package/dist/lib/components/ui/layout/app-search/app-search-bar.d.ts +11 -0
- package/dist/lib/components/ui/layout/app-search/app-search.types.d.ts +47 -0
- package/dist/lib/components/ui/layout/app-search/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-search/partials/on-phone.d.ts +2 -0
- package/dist/lib/components/ui/layout/app-search/partials/phone-search.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-search/partials/pill-search.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-search/pill-form.d.ts +18 -0
- package/dist/lib/components/ui/layout/app-search/search-panel.d.ts +24 -0
- package/dist/lib/components/ui/layout/app-search/search-results.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-search/search-shortcut.d.ts +15 -0
- package/dist/lib/components/ui/layout/app-search/search-view.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-search/use-pill-panel.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-search/use-search-text.d.ts +8 -0
- package/dist/lib/components/ui/layout/app-shell/activity-app-bar.d.ts +35 -0
- package/dist/lib/components/ui/layout/app-shell/activity-chrome.d.ts +26 -3
- package/dist/lib/components/ui/layout/app-shell/activity-column-props.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/activity-column.d.ts +10 -2
- package/dist/lib/components/ui/layout/app-shell/activity-layout-navigation.types.d.ts +94 -0
- package/dist/lib/components/ui/layout/app-shell/activity-layout.d.ts +8 -1
- package/dist/lib/components/ui/layout/app-shell/activity-layout.types.d.ts +2 -1
- package/dist/lib/components/ui/layout/app-shell/activity-rails.d.ts +16 -0
- package/dist/lib/components/ui/layout/app-shell/activity-sidebar-lane.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/activity-top-nav.d.ts +11 -0
- package/dist/lib/components/ui/layout/app-shell/activity-two-level-lane.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-shell/app-back.d.ts +22 -0
- package/dist/lib/components/ui/layout/app-shell/app-header-row.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-shell/app-header.d.ts +33 -1
- package/dist/lib/components/ui/layout/app-shell/app-shell.utils.d.ts +8 -0
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-entries.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/app-sidebar-label-item.d.ts +3 -1
- package/dist/lib/components/ui/layout/app-shell/bottom-chrome.d.ts +13 -0
- package/dist/lib/components/ui/layout/app-shell/header-title.d.ts +18 -2
- package/dist/lib/components/ui/layout/app-shell/header.utils.d.ts +37 -0
- package/dist/lib/components/ui/layout/app-shell/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/app-shell/navigation-parts.d.ts +38 -0
- package/dist/lib/components/ui/layout/app-shell/navigation.utils.d.ts +36 -0
- package/dist/lib/components/ui/layout/app-shell/page-title-scope.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-shell/page-title.d.ts +12 -1
- package/dist/lib/components/ui/layout/app-shell/shell-scroll.d.ts +32 -0
- package/dist/lib/components/ui/layout/app-shell/sticky-offset.d.ts +8 -0
- package/dist/lib/components/ui/layout/app-shell/types.d.ts +14 -0
- package/dist/lib/components/ui/layout/app-shell/use-focus-while-hidden.d.ts +9 -0
- package/dist/lib/components/ui/layout/app-shell/use-header-height.d.ts +12 -0
- package/dist/lib/components/ui/layout/app-shell/use-header-scroll.d.ts +19 -0
- package/dist/lib/components/ui/layout/app-shell/use-shell-header.d.ts +20 -0
- package/dist/lib/components/ui/layout/auth-card/auth-card-split.d.ts +14 -0
- package/dist/lib/components/ui/layout/auth-card/auth-card.d.ts +13 -1
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid-context.d.ts +21 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.d.ts +9 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.state.d.ts +30 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.tiles.d.ts +8 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.types.d.ts +50 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-grid.utils.d.ts +70 -0
- package/dist/lib/components/ui/layout/dashboard-grid/dashboard-tile.d.ts +7 -0
- package/dist/lib/components/ui/layout/dashboard-grid/index.d.ts +4 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-announcer.d.ts +6 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-edit-bar.d.ts +11 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-move-buttons.d.ts +9 -0
- package/dist/lib/components/ui/layout/dashboard-grid/partials/dashboard-toolbar.d.ts +7 -0
- package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-grid.d.ts +21 -0
- package/dist/lib/components/ui/layout/dashboard-grid/use-dashboard-moves.d.ts +22 -0
- package/dist/lib/components/ui/layout/doc/doc-context.d.ts +2 -0
- package/dist/lib/components/ui/layout/doc/doc.d.ts +5 -0
- package/dist/lib/components/ui/layout/doc/index.d.ts +1 -1
- package/dist/lib/components/ui/layout/doc/partials/doc-embedded-bar.d.ts +9 -0
- package/dist/lib/components/ui/layout/doc/partials/doc-embedded.d.ts +8 -0
- package/dist/lib/components/ui/layout/doc/use-doc.d.ts +9 -1
- package/dist/lib/components/ui/layout/editor-layout/editor-layout.d.ts +14 -0
- package/dist/lib/components/ui/layout/editor-layout/editor-layout.types.d.ts +31 -0
- package/dist/lib/components/ui/layout/editor-layout/index.d.ts +4 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-body.d.ts +11 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-canvas.d.ts +8 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-context.d.ts +12 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-start.d.ts +8 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/editor-layout-triggers.d.ts +10 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-names.d.ts +8 -0
- package/dist/lib/components/ui/layout/editor-layout/partials/use-editor-layout-state.d.ts +21 -0
- package/dist/lib/components/ui/layout/index.d.ts +9 -0
- package/dist/lib/components/ui/layout/landing/index.d.ts +6 -0
- package/dist/lib/components/ui/layout/landing/landing-layout.d.ts +15 -0
- package/dist/lib/components/ui/layout/landing/landing-layout.types.d.ts +27 -0
- package/dist/lib/components/ui/layout/landing/landing-section.d.ts +12 -0
- package/dist/lib/components/ui/layout/landing/landing-section.types.d.ts +32 -0
- package/dist/lib/components/ui/layout/landing/landing.classes.d.ts +20 -0
- package/dist/lib/components/ui/layout/landing/partials/landing-header.d.ts +11 -0
- package/dist/lib/components/ui/layout/landing/partials/landing-section-intro.d.ts +13 -0
- package/dist/lib/components/ui/layout/landing/partials/site-footer-group.d.ts +8 -0
- package/dist/lib/components/ui/layout/landing/site-footer.d.ts +13 -0
- package/dist/lib/components/ui/layout/landing/site-footer.types.d.ts +29 -0
- package/dist/lib/components/ui/layout/list-details-layout/internal.d.ts +2 -0
- package/dist/lib/components/ui/layout/list-details-layout/list-details-layout.d.ts +9 -17
- package/dist/lib/components/ui/layout/list-details-layout/partials/history-mark.d.ts +2 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-context.d.ts +17 -1
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-history.d.ts +8 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-inspector.d.ts +21 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-layout.types.d.ts +47 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-resizer.d.ts +9 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-root.d.ts +3 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/list-details-trigger.d.ts +13 -4
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-inspector-focus.d.ts +8 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-param.d.ts +26 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-details-state.d.ts +15 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-list-width.d.ts +16 -0
- package/dist/lib/components/ui/layout/list-details-layout/partials/use-pane-focus.d.ts +6 -4
- package/dist/lib/components/ui/layout/navigation-bar/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-bar/internal.d.ts +4 -0
- package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.classes.d.ts +14 -0
- package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.d.ts +35 -0
- package/dist/lib/components/ui/layout/navigation-bar/navigation-bar.utils.d.ts +19 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/bar-badge.d.ts +5 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/bar-entry.d.ts +12 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-item.d.ts +22 -0
- package/dist/lib/components/ui/layout/navigation-bar/partials/navigation-bar-more.d.ts +24 -0
- package/dist/lib/components/ui/layout/navigation-bar/use-nav-bar-inset.d.ts +12 -0
- package/dist/lib/components/ui/layout/navigation-drawer/index.d.ts +5 -0
- package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.classes.d.ts +9 -0
- package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.d.ts +45 -0
- package/dist/lib/components/ui/layout/navigation-drawer/navigation-drawer.utils.d.ts +14 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-body.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-item.d.ts +20 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-modal.d.ts +17 -0
- package/dist/lib/components/ui/layout/navigation-drawer/partials/navigation-drawer-section.d.ts +15 -0
- package/dist/lib/components/ui/layout/navigation-rail/index.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail-panel.d.ts +26 -0
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.classes.d.ts +23 -0
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.d.ts +42 -1
- package/dist/lib/components/ui/layout/navigation-rail/navigation-rail.utils.d.ts +4 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-body.d.ts +3 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-item.d.ts +20 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-panel-item.d.ts +7 -0
- package/dist/lib/components/ui/layout/navigation-rail/partials/navigation-rail-toggle.d.ts +7 -0
- package/dist/lib/components/ui/layout/navigation-rail/use-rail-expanded.d.ts +13 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/index.d.ts +2 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.classes.d.ts +20 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.d.ts +51 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-item.d.ts +25 -0
- package/dist/lib/components/ui/layout/navigation-toolbar/partials/navigation-toolbar-more.d.ts +3 -0
- package/dist/lib/components/ui/layout/pane-layout/internal.d.ts +3 -0
- package/dist/lib/components/ui/layout/pane-layout/pane-layout.d.ts +16 -2
- package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-classes.d.ts +7 -0
- package/dist/lib/components/ui/layout/pane-layout/partials/pane-layout-context.d.ts +13 -0
- package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-layout-state.d.ts +16 -0
- package/dist/lib/components/ui/layout/pane-layout/partials/use-pane-narrow.d.ts +6 -0
- package/dist/lib/components/ui/layout/responsive-grid/index.d.ts +4 -1
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-item.d.ts +19 -0
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid-spans.d.ts +19 -0
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.d.ts +24 -2
- package/dist/lib/components/ui/layout/responsive-grid/responsive-grid.utils.d.ts +12 -0
- package/dist/lib/components/ui/layout/settings-layout/index.d.ts +2 -0
- package/dist/lib/components/ui/layout/settings-layout/partials/settings-link.d.ts +7 -0
- package/dist/lib/components/ui/layout/settings-layout/partials/settings-list.d.ts +11 -0
- package/dist/lib/components/ui/layout/settings-layout/partials/settings-page.d.ts +5 -0
- package/dist/lib/components/ui/layout/settings-layout/settings-layout.d.ts +10 -0
- package/dist/lib/components/ui/layout/settings-layout/settings-layout.types.d.ts +33 -0
- package/dist/lib/components/ui/layout/settings-layout/settings-layout.utils.d.ts +13 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout-classes.d.ts +17 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout-parts.d.ts +14 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout-stepper.d.ts +11 -0
- package/dist/lib/components/ui/layout/thread-layout/thread-layout.d.ts +30 -3
- package/dist/lib/components/ui/layout/top-nav/index.d.ts +5 -0
- package/dist/lib/components/ui/layout/top-nav/partials/top-nav-item.d.ts +23 -0
- package/dist/lib/components/ui/layout/top-nav/partials/top-nav-menu.d.ts +22 -0
- package/dist/lib/components/ui/layout/top-nav/top-nav.classes.d.ts +10 -0
- package/dist/lib/components/ui/layout/top-nav/top-nav.d.ts +34 -0
- package/dist/lib/components/ui/layout/top-nav/top-nav.utils.d.ts +10 -0
- package/dist/lib/components/ui/widgets/kanban/index.d.ts +1 -1
- package/dist/lib/components/ui/widgets/kanban/kanban-context.d.ts +5 -2
- package/dist/lib/components/ui/widgets/kanban/kanban.d.ts +11 -2
- package/dist/lib/components/ui/widgets/kanban/kanban.slice.d.ts +32 -0
- package/dist/lib/components/ui/widgets/kanban/kanban.utils.d.ts +9 -0
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-card-preview.d.ts +3 -1
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-column.d.ts +6 -0
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-move-to.d.ts +13 -0
- package/dist/lib/components/ui/widgets/kanban/partials/kanban-phone-tabs.d.ts +10 -0
- package/dist/lib/components/ui/widgets/kanban/types.d.ts +7 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban-board-keys.d.ts +7 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban-item-actions.d.ts +5 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban-phone-column.d.ts +18 -0
- package/dist/lib/components/ui/widgets/kanban/use-kanban.d.ts +6 -1
- package/dist/lib/i18n/resources/en/en.d.ts +50 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +52 -2
- package/dist/lib/i18n/resources/fr/fr.d.ts +50 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +52 -2
- package/dist/lib/i18n/resources/resources.d.ts +100 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib.js +1 -1
- package/dist/main.js +52 -52
- package/dist/map.js +7 -7
- package/dist/material.css +1 -1
- package/dist/pdf-reader.js +1 -1
- package/dist/{percent-field--WIXV5dX.js → percent-field-C2LNr8NA.js} +1 -1
- package/dist/{picker-surface-CV09H7Nb.js → picker-surface-BUCFMoAZ.js} +4 -4
- package/dist/{popover-Cd7DkND4.js → popover-DFRwQF12.js} +1 -1
- package/dist/{pos-types-DKCkOTYy.js → pos-types-CXnEdjdy.js} +1 -1
- package/dist/{pos-variant-GrUfbTTP.js → pos-variant-DMwn_7is.js} +4 -4
- package/dist/print.js +1 -1
- package/dist/{programmer-variant-eKJNKENL.js → programmer-variant-Bo4eiDFi.js} +2 -2
- package/dist/{public-y6g4ddxd.js → public-CyQPkkSR.js} +9 -9
- package/dist/{rich-code-block-CRQ0iyLb.js → rich-code-block-iK7UcZdc.js} +5 -5
- package/dist/{scientific-variant-2y3UxAAU.js → scientific-variant-B9ScTgfx.js} +2 -2
- package/dist/{sortable-provider-DdiI3Fwk.js → sortable-provider-BZwVjSVU.js} +3 -3
- package/dist/{spinner-C1QIewWv.js → spinner-RITOxvpH.js} +2 -2
- package/dist/{tabs-KGKvve3y.js → tabs-DSo4eCUn.js} +1 -1
- package/dist/theme-picker.js +2 -2
- package/dist/{theme-toggle-C_VeiiCm.js → theme-toggle-3gbzQX0x.js} +1 -1
- package/dist/{toolbar-items-D310xDuM.js → toolbar-items-Bt5RK-Nx.js} +4 -4
- package/dist/{translate-material-BypJJ1l5.js → translate-material-CZTGqgen.js} +1 -1
- package/dist/{translator-DJkf4J7t.js → translator-DTlOlIoq.js} +108 -4
- package/dist/{use-chat-composer-BFhRMHcX.js → use-chat-composer-DBY01IpX.js} +16 -16
- package/dist/{use-heading-spy-DJR8YYm6.js → use-heading-spy-Dt48bBts.js} +4 -4
- package/dist/{use-material-translation-CD6QoVal.js → use-material-translation-BJucC_xe.js} +1 -1
- package/dist/{use-return-focus-Cevw_6yq.js → use-return-focus-BS1JLcnq.js} +1 -1
- package/docs/README.md +1 -0
- package/docs/components/data-display.md +4 -0
- package/docs/components/navigation-and-layout.md +944 -27
- package/docs/components/rich-widgets.md +26 -0
- package/docs/guides/app-shell.md +641 -2
- package/docs/guides/i18n.md +13 -1
- package/docs/guides/layouts.md +215 -0
- package/docs/guides/ssr.md +1 -1
- package/docs/previews/navigation-layout-appshell-page-ground.webp +0 -0
- package/docs/previews/navigation-layout-appshell.webp +0 -0
- package/docs/previews/navigation-layout-authcard-split.webp +0 -0
- package/docs/previews/navigation-layout-authcard.webp +0 -0
- package/docs/previews/navigation-layout-dashboardgrid.webp +0 -0
- package/docs/previews/navigation-layout-editorlayout.webp +0 -0
- package/docs/previews/navigation-layout-landinglayout.webp +0 -0
- package/docs/previews/navigation-layout-panelayout.webp +0 -0
- package/docs/previews/navigation-layout-settingslayout.webp +0 -0
- package/docs/previews/navigation-layout-threadlayout-pages.webp +0 -0
- package/docs/previews/navigation-layout-threadlayout.webp +0 -0
- package/docs/roadmap.md +10 -2
- package/lib/components/components.css +3 -0
- package/lib/components/ui/actions/fab/fab-dock.css +19 -6
- package/lib/components/ui/layout/app-search/app-search.css +62 -0
- package/lib/components/ui/layout/app-shell/activity-backdrop.css +10 -2
- package/lib/components/ui/layout/app-shell/app-header.css +108 -0
- package/lib/components/ui/layout/navigation-toolbar/navigation-toolbar.css +43 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @nxgt/material
|
|
2
2
|
|
|
3
|
+
## 3.80.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `Kanban` gains `phoneLayout` (`'tabs'`, `'swipe'`, `'columns'`; unset keeps today's board) and `phoneColumn` / `onPhoneColumnChange`. On a phone viewport (below 768px; the board measures its own width, so a narrow region switches too), `tabs` shows one column at a time under a tab list of the columns (name and count, arrow-key navigation), and `swipe` snaps full-width columns sideways; both switch by CSS only, so server and client markup match. A card's popover lists the other columns under "Move to" for moving it without dragging; "Move to" follows the board's own width, not the viewport's (in jsdom, where the width is 0, it renders). Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
8
|
+
|
|
9
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ActivityLayout` draws the app bar in the Material 3 Expressive sizes: `header` takes `'small'` (the default, unchanged), `'center'` (the title centred), `'medium'` and `'large'` (the page's title on a second row in display type, collapsing into the small bar as the page scrolls; `collapse: false` keeps it) and `'none'`, and `{ variant, collapse, hideOnScroll }` to hide the bar on the way down and bring it back on the way up (`inert` while away, with the focus moved to the content). A route chooses its own through `handle.header` (the deepest wins, over the layout's `header`). The headline is the page's one `h1`; a medium or large header on a page with no `handle.title` stays small, and `'none'` drops the phone's menu button with the bar (pair it with `navigation="bar"`). `AppHeader` takes `variant`, `collapse`, `hideOnScroll` and `headline`, `TopAppBar` takes `variant` and `headline`, and `AppShellHandle` gains `header`. The collapse follows the shell's scroll (`useShellScroll`, the window or the content region), sets one CSS variable on the bar and snaps under reduced motion. `ActivityLayout` publishes the bar's real height, tabs and headline row included, as `--nxgt-header-total` on its root (measured with a `ResizeObserver` and written once per frame, not while the bar is collapsing; worked out in CSS from `data-header` and `data-header-tabs` on the root before script runs), and the sticky aside and `Doc` stick below all of it.
|
|
10
|
+
|
|
11
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ResponsiveGrid` gains `ResponsiveGrid.Item` (`span` of 1 to 6 or `'full'` and `rowSpan` of 1 to 4, each a number or `{ base, md, xl }` by the grid's own width: 768px and 1280px), `dense` (`grid-auto-flow: dense`) and `flow="masonry"` (CSS multi-column packing, the column count from `minItem` or the width; tiles read down each column, so use it for browsing, not for a sequence). New `DashboardGrid` and `DashboardTile`: tiles with spans in a grid of 1, 2 and 4 columns (`columns` changes them) that the user rearranges in an edit mode, turned on by an "Edit layout" button or by `editing` / `defaultEditing` / `onEditingChange`. In edit mode each tile has a handle: drag it, or press Space, move with the arrows (Home and End go first and last), drop with Space, cancel with Escape, with live-region announcements; below 768px each tile also has earlier and later buttons. The order is the app's: `order` and `onOrderChange` (or `defaultOrder`). Without any of the new props, `ResponsiveGrid` renders the markup it did. New `material.dashboard.*` strings in English and French. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
12
|
+
|
|
13
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `Doc` takes `chrome="embedded"` to be drawn inside the app shell (`ActivityLayout`) instead of owning the viewport. It then has no top bar, reading bar or full-height frame: the shell's header is the page's. The page tree and the outline stick under that header at the offset `ActivityContent`'s `aside` uses (so a taller header and a `scroll="container"` shell are followed) and scroll with the shell; the tree's sheet and the page clear a bottom bar or the floating toolbar (`--nxgt-bottom-chrome`). Below `md` the tree opens from a « Browse docs » button (new `material.doc.browse` key, en and fr), named apart from the shell's « Menu », beside the search and `actions`. `useDoc` returns the mode as `frame`, and `DocChrome` is exported. The default is `chrome="standalone"`, and its markup is unchanged. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
14
|
+
|
|
15
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `EditorLayout`, the editor page, built on `PaneLayout`: a `toolbar`, a canvas (`children`) that scrolls on its own over a `plain`, `tinted` or `neutral` `ground`, a `properties` panel at the end and an optional `start` panel (layers, outline). It follows its own width: from 768px the properties are an inline panel (`propertiesWidth`, `propertiesOpen` / `defaultPropertiesOpen` / `onPropertiesOpenChange`), below it they open in a bottom sheet from `EditorLayout.PropertiesTrigger`; the start panel is inline from 1280px and a side sheet below, from `EditorLayout.StartTrigger`. The regions are named (`toolbarLabel`, `startLabel`, `propertiesLabel`, `canvasLabel`), the server renders the desktop markup with no `style` attribute. New `material.editor-layout.*` strings in English and French. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
16
|
+
|
|
17
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `NavigationToolbar` is the floating navigation toolbar: a pill of round icon links at the bottom centre, over the content. It is a named `nav` of links (`aria-current="page"` on the current one, each named by a visually hidden label and a tooltip, 48px targets, badges read in the link's name), not a `role="toolbar"`: `Toolbar variant="floating"` stays for actions, and the two share the pill (the `--tb-*` tokens, shadow and slide away of `.nxgt-toolbar`). It keeps 3 to 5 destinations (`bar`, `priority`, `max`, as for `NavigationBar`) and « More » for the rest. `ActivityLayout` draws it with `navigation="floating"`: a name alone applies to every size, the phone included, where it replaces the menu sheet; `{ phone: 'floating' }` limits it. `navigation.hideOnScroll` (off by default) slides it away on the way down and back on the way up, `inert` while away, its focus moved to the content region and restored, no slide under reduced motion; `NavigationToolbar` takes `hideOnScroll` and `hidden` too. While it shows it sets `--nxgt-nav-bar` to `calc(5rem + env(safe-area-inset-bottom, 0px))` (its height, the gap and the safe area, also while slid away), and a docked `MediaPlayerHost` bar sits above it, so `FabDock`, toasts, the mini player and `StickyActionBar` stay clear. Every `ShellNavigation` name is now drawn. An unset `navigation` and the default markup are unchanged. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
18
|
+
|
|
19
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `LandingLayout`, `LandingSection` and `SiteFooter`: the frame of a public landing page outside the app shell. `LandingLayout` draws a top bar (the brand, your `items` as a `TopNav` from 768px or in a drawer opened by a menu button below it, and your `actions`), a `main` with the `hero` then the sections, and the `footer`; the bar sticks unless `stickyHeader={false}`. `LandingSection` is a band with `eyebrow`, `title`, `description` and `actions` over its content, on a `tone` (`background`, `muted`, `ground`, `primary`), a `width` (`narrow`, `medium`, `default`, `full`) and an `align`; `variant="hero"` draws the page's `h1` larger. `SiteFooter` shows the brand, columns of link groups, a legal line and a slot for social links or a switcher, stacked on a phone. In dark the bar and the footer take the card surface, one tone above the page. A `Guides/Recipes/Landing page` story builds a whole page from them. Needs a router, like `TopNav`. New `material.landing.*` strings in English and French. Additive: nothing existing changes. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
20
|
+
|
|
21
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ListDetailsLayout` gains a third pane, a URL-driven view and a resizable list, all opt-in (without them the markup is unchanged, except that the list pane now always carries an `id`, and the existing types keep their shape). `inspector` enables `ListDetailsLayout.Inspector title="…"`, open while the view is `'inspector'` (`ListDetailsView`; `activeView`/`onActiveViewChange` take it only with `inspector`, and `ListDetailsLayout.Trigger view="inspector"` needs `inspector` too): beside the details from 1280px, over them below that, switched by CSS with no flip after hydration (Escape and a close button close the overlay), and on a phone one more step after the details with a back button. Its title is a heading that names the `complementary` landmark; the focus moves to it on open and returns to the opener on close. `history="push"` (or `"replace"`, `historyParam`) keeps the view in the URL's search params through React Router, so the browser Back goes from the details to the list on a phone; `useListDetailsParam()` keeps the selected record's id (`?item=`) the same way, and `select(id, { open: 'details' })` writes the id and the view in one history entry. `listWidth` and `resizable` (with `onListWidthChange`) give the list pane a width in px and a keyboard and pointer separator (`role="separator"`, `aria-valuenow`, 240 to 480px). `useListDetails()` keeps `activeView: 'list' | 'details'` (`'details'` while the inspector is open) and also returns `inspectorOpen`, `listWidth` and `setListWidth`. New `material.list-details.*` strings (`inspector-back`, `inspector-close`, `resize`) in English and French. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
22
|
+
|
|
23
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `NavigationBar` is the bottom navigation bar of a phone: 3 to 5 destinations with always-visible labels, an indicator pill, badges read in the link's name and a "More" sheet for the rest (`bar` and `priority` on a `MenuItem` choose them; `splitBarItems()` returns the split). `ActivityLayout` draws it with `navigation="bar"` or `{ phone: 'bar' }`: a name alone draws the bar on a phone only (below 768px), hidden by CSS from 768px, where the default rail shows (`{ tablet: 'bar' }` keeps it there), and the phone has no menu button; the shell's frame, the backdrop and the aside clear `--nxgt-bottom-chrome`. While it shows, `--nxgt-nav-bar` is `calc(4rem + env(safe-area-inset-bottom, 0px))`, so `FabDock`, the toaster, `StickyActionBar`, the thread composer, the mini player and the sticky panels clear the home indicator once, and a docked `MediaPlayerHost` bar sits above the bar (`bottom: var(--nxgt-nav-bar)`). A phone never draws `'rail'` or `'rail-expanded'`, a top bar of links or two-level navigation, given by name or in the object form: it keeps its menu sheet. Unset, the shell's markup is unchanged. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
24
|
+
|
|
25
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `NavigationDrawer` is the Material 3 Expressive navigation drawer: destinations in sections (by the entries' `group`), each a 56px row with an icon, a label and a badge read in the link's name, the current one marked with `aria-current`; `variant="standard"` is a permanent column, `variant="modal"` the same column in a sheet that shares the app shell's menu sheet logic (`open`, `onOpenChange`, `trigger`). `NavigationDrawerSection` and `NavigationDrawerItem` compose it by hand. `ActivityLayout` draws the standard drawer with `navigation="drawer"` and the collapsible sidebar with `navigation="sidebar"`, a small chevron button expanding and collapsing it (it starts collapsed), its state controlled with `sidebarExpanded` / `defaultSidebarExpanded` / `onSidebarExpandedChange` and remembered with `navigation.persistKey` (read after hydration). A preset name alone (`navigation="sidebar"`, `"drawer"`) leaves a phone its default navigation; `{ phone: 'sidebar' }` draws it there. An unset `navigation` and the default markup are unchanged. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
26
|
+
|
|
27
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `NavigationRail` is the Material 3 Expressive rail: destinations with an icon in an indicator pill and the label under it, badges read in the link's name, a `fab` slot for the screen's primary action and a menu button that expands it into a wide rail with the labels inline (`expanded`, `defaultExpanded`, `onExpandedChange`, and `persistKey` to remember the choice, read after hydration). Without `items` it is still the empty `div`. `ActivityLayout` draws it with `navigation="rail-expanded"` (per size, hidden by CSS elsewhere), takes its FAB from the new `navigationFab` prop and its `persistKey` from `navigation`; `'rail'` and the default markup are unchanged. A phone never draws a rail, `'rail'` or `'rail-expanded'`: below 768px it keeps its menu sheet (`{ phone: 'rail-expanded' }` resolves to it). Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
28
|
+
|
|
29
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `PaneLayout` gains `phone` (`'sheet'`, `'bottom'` or `'stack'`: the pane as a side sheet, a bottom sheet or under the main content below 768px), `breakpoint` (`'viewport'`, the default, or `'container'` to switch by the layout's own width, for a layout in a narrow region) and `paneWidth` (`'sm'`, `'md'` or `'lg'`, token sizes with no style attribute). With `phone` or `breakpoint` set the inline pane is a named `<aside>` landmark and the context carries the new values; with `breakpoint="container"` the root is the container and the flex row moves to an inner `data-slot="pane-layout-body"`, so style the body, not the root, for row layout; left unset, the markup and the 648px side sheet are unchanged. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
30
|
+
|
|
31
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `AppSearchBar` and `SearchView` search from the app bar. `ActivityLayout`'s `header` takes `search` (`true`, or the bar's props; a route's `handle.header` too, `search: false` drops it there): from 768px a pill, a filled and fully rounded search field with the `results` (a node, or a function of the text and a `close`) in a panel docked under it, and on a phone a search button that opens `SearchView`, a full-screen modal dialog with a back arrow and 48px targets. `value`, `defaultValue` and `onValueChange` control the text, `onSubmit`, `placeholder`, `label`, `loading`, `leading` and `trailing` shape it, `shortcut` (`"/"`, `"Ctrl+K"`) is shown as a hint and bound on the document, and `resultCount` is announced politely. The view mounts only while open, traps the focus, puts it in the field when it opens and returns it to the element that opened it; Escape, the arrow and Enter close it. New strings `material.app-header.*` in English and French. The phone button and the pill are both drawn and a breakpoint class hides one, so the server's markup and the hydrating client's match; the shortcut acts on the visible one. `header.search` was `boolean` and drew nothing; it still accepts `true`.
|
|
32
|
+
|
|
33
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New `SettingsLayout`: the settings screen on `ListDetailsLayout`. `sections` (`id`, `title`, `description`, `icon`, `group`, `keywords`, `disabled`, `content`) show as grouped links with an icon well beside the selected section's page (heading, description, your rows); on a phone the list comes first, a tap opens the page, the focus moves to its heading, and Back returns to the tapped row. The selection is the `?section=` search param (`param`, `viewParam`), shared links open the page on a phone, and `search` adds a filter over the sections. Needs a router. `ListDetailsLayout` also moves a phone's focus to an element marked `data-pane-focus` inside the details, if there is one. New `material.settings-layout.*` strings in English and French. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
34
|
+
|
|
35
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ActivityLayout` takes `navigation` (a preset name, or one per phone, tablet and desktop) and `header` (a variant, or a variant with options) and `MenuItem` gains `children`, `group`, `bar` and `priority`; unset, the shell draws exactly what it did. `resolveNavigation()`, `resolveHeader()` and `navigationClasses()` return what they resolve to, `useShellScroll()` with `ShellScrollProvider` gives the scroll direction and offset, and `--nxgt-nav-bar` and `--nxgt-bottom-chrome` leave room at the bottom for `FabDock`, `Toaster`, the mini player and `StickyActionBar`. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
36
|
+
|
|
37
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ActivityLayout`'s `header` draws `tabs`, and a route's `handle.back` draws a back arrow. `header.tabs` (a `TabsNav`, on the layout or per route in `handle.header`; `tabs: null` drops them for a route) is a 48px row at the foot of the app bar: it stays under a `medium` or `large` header as it collapses, and when `hideOnScroll` slides the bar away the tabs stay pinned at the top of the window (only the bar's rows go `inert`, and a tab keeps the focus). `handle.back` is `{ to, label? }`, a link drawn with the shell's `linkComponent` named "Back" or "Back to <label>", or `true`, a button that goes back in the history (up one level when the visit started on that page); the arrow is a 48px target at the start of the bar, comes first in the bar, before the title; the phone's menu button follows it while the phone has the menu sheet, and the rail or sidebar stays from 768px. `AppHeader` takes `tabs` and `back`; the new types are `ShellBack` and `AppShellHandle['back']`. New strings `material.app-header.back` and `back-to` in English and French. Unset, the bar is the same markup as before.
|
|
38
|
+
|
|
39
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `ThreadLayout` gains `width` (`'form'`, `'reading'` or `'wide'`: a centred column of 32, 48 or 72 rem with token classes), `footer` (a sticky action bar that stays in view and clear of `--nxgt-bottom-chrome` and the home bar) and `stepperPlacement` (`'top'` or `'side'`: the `stepper` goes in a `nav` named "Progress", a sticky rail beside the column from 1280px with `'side'`, above it below). `AuthCard` gains `layout="split"` (two columns from 768px: the new `visual` slot, which can host a `Background` preset, and an opaque form side; a phone keeps the form under its brand row) and `visual`. All of it is placed by CSS classes only, so the server and the client render the same markup; left unset the markup is unchanged. New string `material.navigation.steps`, en and fr. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
40
|
+
|
|
41
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `TopNav` is the Material 3 Expressive top navigation, built on Radix's navigation menu: one named `nav` of 48px pill destinations, the current one marked with `aria-current="page"`, badges read in the link's name, and an entry with `children` opening a dropdown of its child links (its trigger reads as active while a child is current; arrow keys, Escape and reduced motion follow Radix). `TopNavItem` and `TopNavMenu` compose it by hand. `ActivityLayout` draws it in the app header, after the brand, with `navigation="top"`; the phone keeps its menu sheet, which now nests an entry's `children` under it (as does the expanded sidebar). A preset name alone leaves a phone its default navigation, and `{ phone: 'top' }` keeps the menu sheet. An unset `navigation` and the default markup are unchanged. An entry with `children` is only a trigger: its `url` is never a link, so put an "all" link as the first child. Past about 5 entries the bar does not fit at 768px beside the brand and the title and pushes the header's actions out; it does not scroll (that would clip the dropdowns). Use `{ tablet: 'rail', desktop: 'top' }` for a longer menu. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
42
|
+
|
|
43
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `NavigationRailPanel` is the second level of a two-level navigation: a `nav` beside the `NavigationRail` that lists the `children` of the top-level entry the location belongs to, under its label, the current child marked with `aria-current="page"`. It is open by default and a button folds it to a narrow strip (`aria-expanded`, focus kept); nothing opens it on hover. `ActivityLayout` draws the rail (without its own menu button) and the panel together with `navigation="two-level"` from 768px; `navigation.persistKey` remembers the panel's state under `nxgt-panel:<key>`, read after hydration. A rail entry always links to its own `url`; an entry without `children` hides the panel by CSS, its markup kept. `NavigationRail` now lights the top-level entry whose child is current, even a child outside the parent's `url`. A preset name alone leaves a phone its default navigation, and `{ phone: 'two-level' }` keeps the menu sheet. An unset `navigation` and the default markup are unchanged. New strings: `material.navigation.panel-collapse` and `panel-expand` (en, fr). Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
44
|
+
|
|
45
|
+
### Patch Changes
|
|
46
|
+
|
|
47
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - `Toaster`'s bottom offset now clears the home indicator. `FabDock`, the layout frame and a docked `MediaPlayerHost` bar no longer add the bottom inset twice. `StickyActionBar` clears a docked `MediaPlayerHost` bar as well as the navigation bar.
|
|
48
|
+
|
|
49
|
+
- [#2421](https://github.com/softistx/nxgt-material/pull/2421) [`0b26d2c`](https://github.com/softistx/nxgt-material/commit/0b26d2c8f91a272d5ac8728580f11d8d860e0bf6) Thanks [@SteveGT96](https://github.com/SteveGT96)! - New [layouts guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/layouts.md): pick a navigation preset, an app bar variant and a page layout by need, with a working example each. The README gains a layouts section, `EditorLayout`'s `propertiesOpen` row reads more clearly and its docs preview is refreshed. Docs only. Refs [#2103](https://github.com/softistx/nxgt-material/issues/2103).
|
|
50
|
+
|
|
3
51
|
## 3.79.1
|
|
4
52
|
|
|
5
53
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -287,6 +287,34 @@ function InviteForm({ onSubmit }: { onSubmit: (v: { email: string }) => void })
|
|
|
287
287
|
the same pair. [Getting started](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/getting-started.md) walks through a first
|
|
288
288
|
screen.
|
|
289
289
|
|
|
290
|
+
### Layouts
|
|
291
|
+
|
|
292
|
+
`ActivityLayout` draws the app shell; `navigation` and `header` choose how, per
|
|
293
|
+
window size, and are opt-in (unset, the shell is unchanged). Page layouts go
|
|
294
|
+
inside it. `items`, `Outlet` (from `react-router`) and `ProfileForm` below are your own.
|
|
295
|
+
|
|
296
|
+
```tsx
|
|
297
|
+
import { ActivityLayout, SettingsLayout } from '@nxgt/material/components';
|
|
298
|
+
|
|
299
|
+
// a bottom bar on a phone, a rail from 768px, a collapsible sidebar from 1280px
|
|
300
|
+
<ActivityLayout
|
|
301
|
+
items={items}
|
|
302
|
+
navigation={{ phone: 'bar', tablet: 'rail', desktop: 'sidebar', persistKey: 'nav' }}
|
|
303
|
+
header={{ variant: 'large', search: { placeholder: 'Search' } }}
|
|
304
|
+
>
|
|
305
|
+
<Outlet />
|
|
306
|
+
</ActivityLayout>
|
|
307
|
+
|
|
308
|
+
// grouped settings: a list then the page on a phone, the section in the URL
|
|
309
|
+
<SettingsLayout
|
|
310
|
+
sections={[{ id: 'profile', group: 'Account', title: 'Profile', content: <ProfileForm /> }]}
|
|
311
|
+
/>
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
Also: `ListDetailsLayout`, `PaneLayout`, `ThreadLayout`, `ResponsiveGrid`,
|
|
315
|
+
`DashboardGrid`, `EditorLayout` and `LandingLayout`. The [layouts guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/layouts.md)
|
|
316
|
+
picks one by need.
|
|
317
|
+
|
|
290
318
|
### Amounts and dates in your locale
|
|
291
319
|
|
|
292
320
|
```tsx
|
|
@@ -489,7 +517,8 @@ Each area a consumer starts from has its own page under `docs/guides/`.
|
|
|
489
517
|
| --- | --- |
|
|
490
518
|
| [Forms](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/forms.md) | wiring fields to React Hook Form and Zod, composite values (contacts, opening hours), config-driven `Field`, server errors, what each field emits |
|
|
491
519
|
| [i18n](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/i18n.md) | adding your strings next to the package's, switching language, translated Zod messages, SSR without a text mismatch |
|
|
492
|
-
| [App shell](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/app-shell.md) | laying out an app with `ActivityLayout` (route changes cross-fade by default, `routeTransition={false}` opts out; it draws the theme's background, `backdrop` is the exception and `backdrop={false}` a plain page), its `items` (rendered as links; `linkComponent` to pass your own), the brand (`logo`, `name`, and `context` for the phone sheet's tenant line), the header's title, a route's `handle.title` as the page's `h1` in the app bar (`AppShellHandle`, `PageTitle`; `handle.titleAfter` / `titleAfter` a slot right after it, such as a record's `Switcher`, and `headerContext` a small tenant line from md up; it labels `<main>`, and `usePageTitleFocus()` focuses it after a navigation), and `AccountMenu`, the active entry and breadcrumbs (needs a data router; `breadcrumbRoot` replaces the home icon with a text link, or with `icon: true` keeps it with its own target and name, `breadcrumb={false}` hides the trail), the `<main>` landmark, the `h1` title, document scrolling, a background preset behind the shell (`backdrop`), and the tinted page ground the cards stand on (`--ground`, the opt-out) |
|
|
520
|
+
| [App shell](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/app-shell.md) | laying out an app with `ActivityLayout` (its `header`: small, center, medium and large collapsing on scroll, hide on scroll, a search in the bar, sticky tabs under it, a back arrow per route with `handle.back`, per route with `handle.header`; route changes cross-fade by default, `routeTransition={false}` opts out; it draws the theme's background, `backdrop` is the exception and `backdrop={false}` a plain page), its `items` (rendered as links; `linkComponent` to pass your own), the brand (`logo`, `name`, and `context` for the phone sheet's tenant line), the header's title, a route's `handle.title` as the page's `h1` in the app bar (`AppShellHandle`, `PageTitle`; `handle.titleAfter` / `titleAfter` a slot right after it, such as a record's `Switcher`, and `headerContext` a small tenant line from md up; it labels `<main>`, and `usePageTitleFocus()` focuses it after a navigation), and `AccountMenu`, the active entry and breadcrumbs (needs a data router; `breadcrumbRoot` replaces the home icon with a text link, or with `icon: true` keeps it with its own target and name, `breadcrumb={false}` hides the trail), the `<main>` landmark, the `h1` title, document scrolling, a background preset behind the shell (`backdrop`), and the tinted page ground the cards stand on (`--ground`, the opt-out) |
|
|
521
|
+
| [Layouts](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/layouts.md) | choosing a navigation preset (bar, rail, drawer, sidebar, top, two-level, floating), an app bar variant or a page layout (list and details, settings, dashboard, editor, landing), with an example of each |
|
|
493
522
|
| [Themes for your app](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/themes.md) | defining app themes, generating their stylesheets and types with the Vite plugin's `themes` option or the `nxgt-theme` command, the CI check |
|
|
494
523
|
| [Theming](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/theming.md) | changing colours, radius or fonts, motion and corner tokens, the page ground (`--ground`, `bg-ground`: its light and dark values and the opt-out), dark mode, tones (the `data-tone` channel, app tones and the calm zone `data-density="calm"`), touch targets, using the compiled CSS without Tailwind |
|
|
495
524
|
| [Printing](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/printing.md) | producing PDFs with `@nxgt/material/print` and getting the file in one call (download, new tab, preview, server `Response`) — its own entry since 2.0.0, with optional peers, a bundling trap on SSR servers, and the `next.config.ts` a Next.js route handler (and `output: 'standalone'`) needs |
|
|
@@ -733,15 +762,20 @@ Not components: what the stylesheet gives any element.
|
|
|
733
762
|
|
|
734
763
|
| Preview | Component | What it does | @nxgt/material-vue |
|
|
735
764
|
| --- | --- | --- | --- |
|
|
736
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-appshell.webp" width="120" alt="ActivityLayout"> | [`ActivityLayout`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#activitylayout), `ActivityContent`, `AppSidebar`, `AppHeader`, `AppBreadcrumb`, `AppBreadcrumbItem`, `AppBreadcrumbSeparator` | App shell: sidebar built from `items`, a header with a mobile sheet, route breadcrumbs and a titled page; entries are real links, and `linkComponent` swaps the link; it draws the theme's background (Lavande's is the gradient), `backdrop` puts a `/backgrounds` preset behind it for one screen, and `backdrop={false}` draws a plain page, and `keepClear="gaps"` lets its glyphs sit in the gaps between surfaces of a dense page. It paints the tinted page ground (`--ground`, `bg-ground`) under the content, with the sidebar and the app bar flat on `--background` and the cards on `bg-card` (`--ground: var(--background)` opts out). `ActivityContent` takes an `aside` side panel (beside the content from 1280px in CSS only, sticky under the app bar, a named `complementary` landmark, stacked below) and `width="form" \| "reading"` to cap the main column with the panel right beside it; `notice` puts an `Alert` or `Banner` above both, at their width. See the [app shell guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/app-shell.md). | `ActivityLayout`, `ActivityContent`, `AppSidebar`, `AppHeader`, `AppBreadcrumb` |
|
|
765
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-appshell.webp" width="120" alt="ActivityLayout"> | [`ActivityLayout`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#activitylayout), `ActivityContent`, `AppSidebar`, `AppHeader`, `AppBreadcrumb`, `AppBreadcrumbItem`, `AppBreadcrumbSeparator` | App shell: sidebar built from `items`, a header with a mobile sheet (`header` picks its size: small, center, medium or large collapsing on scroll, `hideOnScroll`, a route's `handle.header`), route breadcrumbs and a titled page; entries are real links, and `linkComponent` swaps the link; it draws the theme's background (Lavande's is the gradient), `backdrop` puts a `/backgrounds` preset behind it for one screen, and `backdrop={false}` draws a plain page, and `keepClear="gaps"` lets its glyphs sit in the gaps between surfaces of a dense page. It paints the tinted page ground (`--ground`, `bg-ground`) under the content, with the sidebar and the app bar flat on `--background` and the cards on `bg-card` (`--ground: var(--background)` opts out). `ActivityContent` takes an `aside` side panel (beside the content from 1280px in CSS only, sticky under the app bar, a named `complementary` landmark, stacked below) and `width="form" \| "reading"` to cap the main column with the panel right beside it; `notice` puts an `Alert` or `Banner` above both, at their width. See the [app shell guide](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/guides/app-shell.md). | `ActivityLayout`, `ActivityContent`, `AppSidebar`, `AppHeader`, `AppBreadcrumb` |
|
|
737
766
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-accountmenu.webp" width="120" alt="AccountMenu"> | [`AccountMenu`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#accountmenu) | The app bar's avatar menu: named after the account, the name and e-mail, the app's links, then an optional Theme choice (`themeChoice`) and a destructive Sign out with a busy state. | `AccountMenu` |
|
|
738
767
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-authcard.webp" width="120" alt="AuthCard"> | [`AuthCard`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#authcard) | The frame of a signed-out page: one `main`, a centred card whose title is the `h1` (focusable on an end state), a status or alert notice, a brand and toolbar row, safe-area padding, an optional backdrop (the theme's by default) that keeps clear of the card. | `AuthCard` |
|
|
739
768
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-sidebar.webp" width="120" alt="Sidebar"> | [`Sidebar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#sidebar), `SidebarHeader`, `SidebarContent`, `SidebarFooter`, `SidebarMenuItem`, `SidebarMenuLabel` | Collapsible navigation sidebar with icons, tooltips and active items. | `Sidebar` (same parts) |
|
|
740
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-topappbar.webp" width="120" alt="TopAppBar"> | [`TopAppBar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#topappbar), `BottomAppBar` | Top bar surface, and a bottom bar of icon actions with an active state. | `TopAppBar`, `BottomAppBar` |
|
|
769
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-topappbar.webp" width="120" alt="TopAppBar"> | [`TopAppBar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#topappbar), `BottomAppBar` | Top bar surface in four sizes (`variant`), and a bottom bar of icon actions with an active state. | `TopAppBar`, `BottomAppBar` |
|
|
770
|
+
| | [`AppSearchBar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#appsearchbar), `SearchView` | The app bar's search (`header.search` on `ActivityLayout`): a pill with a docked results panel from 768px (a `shortcut`, `results` as a node or a function, a polite `resultCount`), a search button opening a full-screen, focus-trapped `SearchView` on a phone. | not yet |
|
|
741
771
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-stickyactionbar.webp" width="120" alt="StickyActionBar"> | [`StickyActionBar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#stickyactionbar) | The bar of a page's main decision: stuck to the bottom on a phone above the keyboard and clear of the safe areas, inline from `md`, one primary action. | not yet |
|
|
742
772
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-breadcrumb.webp" width="120" alt="Breadcrumb"> | [`Breadcrumb`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#breadcrumb), `BreadcrumbList`, `BreadcrumbItem`, `BreadcrumbLink`, `BreadcrumbPage`, `BreadcrumbSeparator`, `BreadcrumbEllipsis` | Breadcrumb primitives. | `Breadcrumb` (same parts) |
|
|
743
773
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-listdetailslayout.webp" width="120" alt="ListDetailsLayout"> | [`ListDetailsLayout`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#listdetailslayout), `PaneLayout`, `ThreadLayout` | List / details that collapses to one view on mobile (a `back` bar and focus moves on the details, `breakpoint="container"` to follow its own width), a side pane that becomes a sheet, and a centred column. | `ListDetailsLayout`, `PaneLayout`, `ThreadLayout` |
|
|
744
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-
|
|
774
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-settingslayout.webp" width="120" alt="SettingsLayout"> | [`SettingsLayout`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#settingslayout) | The settings screen: grouped sections beside the selected one's page, list then page on a phone, the section kept in the URL, optional search. | — |
|
|
775
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-landinglayout.webp" width="120" alt="LandingLayout"> | [`LandingLayout`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#landinglayout), `LandingSection`, `SiteFooter` | The frame of a public landing page outside the app shell: a top bar on `TopNav` (a drawer on a phone), a hero and bands on the theme's surfaces, a footer of link columns. | — |
|
|
776
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-responsivegrid.webp" width="120" alt="ResponsiveGrid"> | [`ResponsiveGrid`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#responsivegrid) | Container-query grid that grows from 1 to 5 columns, or fills by a minimum tile width (`minItem`) with a `gap`; `ResponsiveGrid.Item` spans, `dense` packing and `flow="masonry"`. | `ResponsiveGrid` |
|
|
777
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-dashboardgrid.webp" width="120" alt="DashboardGrid"> | [`DashboardGrid`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#dashboardgrid) | Tiles with spans that the user rearranges in an edit mode, by drag or keyboard; the order is the app's. | React only for now |
|
|
778
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-editorlayout.webp" width="120" alt="EditorLayout"> | [`EditorLayout`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#editorlayout) | The editor page: a toolbar, a canvas that scrolls on its own, properties at the end (a bottom sheet on a phone) and an optional outline at the start. | — |
|
|
745
779
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-sectioncolumns.webp" width="120" alt="SectionColumns"> | [`SectionColumns`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#sectioncolumns) | Short page sections side by side from a viewport breakpoint (`from`, `columns`), stacked in source order below it; not a landmark. | — (later, [#1614](https://github.com/softistx/nxgt-material/issues/1614)) |
|
|
746
780
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-recordpage.webp" width="120" alt="RecordPage"> | [`RecordPage`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#recordpage), `RecordDetails` | The page of one record: a header card, the content, and the record's facts as a side panel from `xl` that stacks after (or before) the content, with a muted "Added on … · Updated on …" line. | — (later, [#2127](https://github.com/softistx/nxgt-material/issues/2127)) |
|
|
747
781
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-resizable.webp" width="120" alt="ResizableGroup"> | [`ResizableGroup`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#resizablegroup), `ResizablePanel`, `ResizableSeparator` | Resizable panels with an optional grip handle. | `ResizablePanelGroup`, `ResizablePanel`, `ResizableHandle` |
|
|
@@ -752,9 +786,14 @@ Not components: what the stylesheet gives any element.
|
|
|
752
786
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-stepper.webp" width="120" alt="Stepper"> | [`Stepper`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#stepper), `StepperIndicator` | Clickable horizontal or vertical steps with status and progress (expressive shapes, optional steps, a phone header with Back and Next). | `Stepper` |
|
|
753
787
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-steps.webp" width="120" alt="Steps"> | [`Steps`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#steps), `StepsItem` | Numbered editorial steps that stay visible on every breakpoint. | `Steps`, `StepsItem` |
|
|
754
788
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-hero.webp" width="120" alt="Hero"> | [`Hero`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#hero) | Landing band with eyebrow, title, supporting copy and actions; `size="compact"` is a home-page greeting band, and `background` draws a `Background` behind it. | `Hero`, `HeroBackgroundProps` |
|
|
755
|
-
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-doc.webp" width="120" alt="Doc"> | [`Doc`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#doc), `DocPage`, `DocTopbar`, `DocSidebar`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress` | Documentation site shell: sidebar from `md`, TOC rail from `xl`. Reading bar, copy-page / markdown, child cards, see also, and a 404 slot. Storybook `UI/Doc/Api` composes an API page from `DocPage`, `AnchorHeading`, `ApiOperation`, `ParamTable` and `CodeGroup`. | `Doc` (same parts) |
|
|
789
|
+
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-doc.webp" width="120" alt="Doc"> | [`Doc`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#doc), `DocPage`, `DocTopbar`, `DocSidebar`, `DocToc`, `DocPager`, `DocSearch`, `DocChildCards`, `DocSeeAlso`, `DocEmpty`, `DocProgress` | Documentation site shell: sidebar from `md`, TOC rail from `xl`, or drawn inside the app shell with `chrome="embedded"`. Reading bar, copy-page / markdown, child cards, see also, and a 404 slot. Storybook `UI/Doc/Api` composes an API page from `DocPage`, `AnchorHeading`, `ApiOperation`, `ParamTable` and `CodeGroup`. | `Doc` (same parts) |
|
|
756
790
|
| <img src="https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/previews/navigation-layout-background.webp" width="120" alt="Background"> | [`Background`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#background) | Full-viewport gradient with blurred colour blobs; centres its children; 52 presets on `/backgrounds`, and a `sky` overlay. | `Background` |
|
|
757
|
-
| — | [`
|
|
791
|
+
| — | [`NavigationBar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#navigationbar) | Bottom bar of 3 to 5 destinations with labels, badges and a More sheet. | `—` |
|
|
792
|
+
| — | [`TopNav`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#topnav) | Top navigation bar of destinations; an entry with `children` opens a dropdown; `navigation="top"` draws it in the app header. | `—` |
|
|
793
|
+
| — | [`NavigationDrawer`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#navigationdrawer) | Navigation drawer in sections, `standard` (permanent) or `modal` (a sheet); `NavigationDrawerSection`, `NavigationDrawerItem`. | `—` |
|
|
794
|
+
| — | [`NavigationRail`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#navigationrail) | Navigation rail with a FAB slot, badges and an expanded state (the FAB comes with `navigation="rail-expanded"`); an empty `div` without items. | `NavigationRail` (placeholder) |
|
|
795
|
+
| — | [`NavigationRailPanel`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#navigationrailpanel) | Second-level panel beside the rail, listing the current entry's `children`; open by default, collapsible; `navigation="two-level"` draws both. | `—` |
|
|
796
|
+
| — | [`NavigationToolbar`](https://cdn.jsdelivr.net/npm/@nxgt/material@3/docs/components/navigation-and-layout.md#navigationtoolbar) | Floating pill of navigation links at the bottom centre (a `nav`, not a `role="toolbar"`), 3 to 5 destinations and More; optional hide on scroll; `navigation="floating"` draws it. | `—` |
|
|
758
797
|
|
|
759
798
|
### Overlays & menus
|
|
760
799
|
|
|
@@ -4,7 +4,7 @@ import { o as n } from "./dist-DVRQkaTK.js";
|
|
|
4
4
|
import { r } from "./dist-DWZXlCZR.js";
|
|
5
5
|
import { a as i } from "./dist-DHdUUM1w.js";
|
|
6
6
|
import { t as a } from "./in-dialog-D61Yeaol.js";
|
|
7
|
-
import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-
|
|
7
|
+
import { a as o, c as s, d as c, i as l, l as u, n as d, o as f, r as p, s as m, t as h, u as g } from "./use-return-focus-BS1JLcnq.js";
|
|
8
8
|
import { i as _ } from "./escape-owner-DpaP0lm1.js";
|
|
9
9
|
import * as v from "react";
|
|
10
10
|
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as e, r as t, s as n, u as r } from "./translator-
|
|
1
|
+
import { l as e, r as t, s as n, u as r } from "./translator-DTlOlIoq.js";
|
|
2
2
|
import { t as i } from "./_baseIsEqual-C6ksIHya.js";
|
|
3
3
|
import { useMemo as a } from "react";
|
|
4
4
|
import { asyncThunkCreator as o, buildCreateSlice as s } from "@reduxjs/toolkit";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { n as t, t as n } from "./dist-DVRQkaTK.js";
|
|
3
|
-
import { n as r, t as i } from "./spinner-
|
|
3
|
+
import { n as r, t as i } from "./spinner-RITOxvpH.js";
|
|
4
4
|
import { t as a } from "./dist-DkQbkF9T.js";
|
|
5
5
|
import { a as o, i as s, n as c, o as l, s as u, t as d } from "./use-click-lock-BZYtTmVt.js";
|
|
6
6
|
import { t as f } from "./is-production-GLw59WU8.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
|
-
import { n as t, r as n, t as r, u as i } from "./tabs-
|
|
3
|
-
import { t as a } from "./button-
|
|
4
|
-
import { t as o } from "./use-material-translation-
|
|
5
|
-
import { t as s } from "./icon-button-
|
|
2
|
+
import { n as t, r as n, t as r, u as i } from "./tabs-DSo4eCUn.js";
|
|
3
|
+
import { t as a } from "./button-_vm-xSBU.js";
|
|
4
|
+
import { t as o } from "./use-material-translation-BJucC_xe.js";
|
|
5
|
+
import { t as s } from "./icon-button-BamxMwZs.js";
|
|
6
6
|
import { t as c } from "./copy-to-clipboard-Be5Ffvs_.js";
|
|
7
7
|
import { t as l } from "./useEvent-2fKq-6w8.js";
|
|
8
8
|
import { t as u } from "./useLatest-C2PnQEeD.js";
|
|
@@ -11,7 +11,7 @@ import { t as f } from "./skeleton-DSdtr2qc.js";
|
|
|
11
11
|
import { t as p } from "./live-status-BGPaN8r8.js";
|
|
12
12
|
import { n as m, t as h } from "./calculator-context-BugcKuVG.js";
|
|
13
13
|
import { a as g, c as _, i as v, l as y, n as b, o as ee, r as te, s as ne } from "./calculator-announce-DRd2c6Dq.js";
|
|
14
|
-
import { i as re, t as ie } from "./pos-types-
|
|
14
|
+
import { i as re, t as ie } from "./pos-types-CXnEdjdy.js";
|
|
15
15
|
import { a as ae, r as oe } from "./key-layout-cR79xfGE.js";
|
|
16
16
|
import { n as x, r as se, t as ce } from "./programmer-word-CNCF7DJF.js";
|
|
17
17
|
import { t as le } from "./standard-layout-BuSRr3TY.js";
|
|
@@ -279,11 +279,11 @@ function Le({ helpId: e }) {
|
|
|
279
279
|
//#endregion
|
|
280
280
|
//#region lib/components/ui/widgets/calculator/variants/variant-loader.ts
|
|
281
281
|
var Re = {
|
|
282
|
-
scientific: () => import("./scientific-variant-
|
|
283
|
-
pos: () => import("./pos-variant-
|
|
284
|
-
programmer: () => import("./programmer-variant-
|
|
285
|
-
financial: () => import("./financial-variant-
|
|
286
|
-
conversion: () => import("./conversion-variant-
|
|
282
|
+
scientific: () => import("./scientific-variant-B9ScTgfx.js"),
|
|
283
|
+
pos: () => import("./pos-variant-DMwn_7is.js"),
|
|
284
|
+
programmer: () => import("./programmer-variant-Bo4eiDFi.js"),
|
|
285
|
+
financial: () => import("./financial-variant-BdyfYhnp.js"),
|
|
286
|
+
conversion: () => import("./conversion-variant-CqrPwPjC.js")
|
|
287
287
|
}, B = "failed", V = /* @__PURE__ */ new Map(), H = /* @__PURE__ */ new Map(), U = /* @__PURE__ */ new Set(), W = () => {
|
|
288
288
|
for (let e of U) e();
|
|
289
289
|
};
|
package/dist/calculator-field.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
|
-
import { t } from "./button-
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
4
|
-
import { t as r } from "./icon-button-
|
|
5
|
-
import { a as i, i as a, n as o, r as s, t as c } from "./picker-surface-
|
|
6
|
-
import { r as l, t as u } from "./currency-field-
|
|
2
|
+
import { t } from "./button-_vm-xSBU.js";
|
|
3
|
+
import { t as n } from "./use-material-translation-BJucC_xe.js";
|
|
4
|
+
import { t as r } from "./icon-button-BamxMwZs.js";
|
|
5
|
+
import { a as i, i as a, n as o, r as s, t as c } from "./picker-surface-BUCFMoAZ.js";
|
|
6
|
+
import { r as l, t as u } from "./currency-field-CMFvctye.js";
|
|
7
7
|
import { r as d, t as f } from "./field-blur-DkiZOVNV.js";
|
|
8
|
-
import { t as p } from "./calculator-
|
|
8
|
+
import { t as p } from "./calculator-CTd_S23A.js";
|
|
9
9
|
import { useId as m, useState as h } from "react";
|
|
10
10
|
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
11
11
|
import { Calculator as y } from "lucide-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./use-material-translation-
|
|
1
|
+
import { t as e } from "./use-material-translation-BJucC_xe.js";
|
|
2
2
|
import { jsx as t } from "react/jsx-runtime";
|
|
3
3
|
//#region lib/components/ui/widgets/calculator/partials/calculator-segment.tsx
|
|
4
4
|
function n({ label: n, choices: r, value: i, nameKey: a, onChange: o }) {
|
package/dist/calculator.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./calculator-
|
|
1
|
+
import { n as e, t } from "./calculator-CTd_S23A.js";
|
|
2
2
|
export { e as CALCULATOR_VARIANTS, t as Calculator };
|
package/dist/charts.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as e } from "./ui.utils-CAnKTCw5.js";
|
|
2
2
|
import { t } from "./utils-BLfntITJ.js";
|
|
3
3
|
import { t as n } from "./warn-once-C_e47JM8.js";
|
|
4
|
-
import { t as r } from "./button-
|
|
5
|
-
import { t as i } from "./use-material-translation-
|
|
4
|
+
import { t as r } from "./button-_vm-xSBU.js";
|
|
5
|
+
import { t as i } from "./use-material-translation-BJucC_xe.js";
|
|
6
6
|
import { t as a } from "./use-ssr-media-query-C6M5m8sf.js";
|
|
7
7
|
import { i as o, n as s, r as c, t as l } from "./util-4heV2LPI.js";
|
|
8
8
|
import { t as u } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
|
|
9
|
-
import { t as d } from "./chip-
|
|
9
|
+
import { t as d } from "./chip-DumcVzUO.js";
|
|
10
10
|
import { c as f, d as p, f as m, i as h, o as g, p as _, s as v, t as y } from "./line-path-C5pZGC49.js";
|
|
11
11
|
import { t as b } from "./live-status-BGPaN8r8.js";
|
|
12
12
|
import { t as x } from "./linear-G97mfnKF.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
|
-
import { n as t } from "./spinner-
|
|
2
|
+
import { n as t } from "./spinner-RITOxvpH.js";
|
|
3
3
|
import { s as n } from "./use-click-lock-BZYtTmVt.js";
|
|
4
|
-
import { t as r } from "./use-material-translation-
|
|
4
|
+
import { t as r } from "./use-material-translation-BJucC_xe.js";
|
|
5
5
|
import { t as i } from "./react-node-text-Crkpfpco.js";
|
|
6
6
|
import { cloneElement as a, isValidElement as o } from "react";
|
|
7
7
|
import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { r as e } from "./rolldown-runtime-BFFgcFxR.js";
|
|
2
2
|
import { t } from "./utils-BLfntITJ.js";
|
|
3
3
|
import { t as n } from "./dist-DWZXlCZR.js";
|
|
4
|
-
import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-
|
|
4
|
+
import { c as r, d as i, f as a, n as o, t as s } from "./dropdown-menu-CPOgcajv.js";
|
|
5
5
|
import { a as c, i as l, n as u } from "./field-blur-context-BLGgf_3z.js";
|
|
6
|
-
import { a as d, o as f, r as p, s as m, t as h } from "./toolbar-items-
|
|
6
|
+
import { a as d, o as f, r as p, s as m, t as h } from "./toolbar-items-Bt5RK-Nx.js";
|
|
7
7
|
import { t as g } from "./is-production-GLw59WU8.js";
|
|
8
|
-
import { t as _ } from "./use-material-translation-
|
|
9
|
-
import { i as v, n as y, o as b, t as x } from "./code-language-items-
|
|
8
|
+
import { t as _ } from "./use-material-translation-BJucC_xe.js";
|
|
9
|
+
import { i as v, n as y, o as b, t as x } from "./code-language-items-Dip0xnmc.js";
|
|
10
10
|
import { t as S } from "./useIsomorphicLayoutEffect-DfgAhWcH.js";
|
|
11
11
|
import { n as C, t as w } from "./escape-owner-DpaP0lm1.js";
|
|
12
12
|
import { t as T } from "./skeleton-DSdtr2qc.js";
|
package/dist/code-editor.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as e } from "./utils-BLfntITJ.js";
|
|
2
2
|
import { t } from "./dist-DWZXlCZR.js";
|
|
3
|
-
import { o as n, r, s as i, t as a } from "./toolbar-items-
|
|
4
|
-
import { t as o } from "./use-material-translation-
|
|
5
|
-
import { i as s, n as c, o as l } from "./code-language-items-
|
|
3
|
+
import { o as n, r, s as i, t as a } from "./toolbar-items-Bt5RK-Nx.js";
|
|
4
|
+
import { t as o } from "./use-material-translation-BJucC_xe.js";
|
|
5
|
+
import { i as s, n as c, o as l } from "./code-language-items-Dip0xnmc.js";
|
|
6
6
|
import { t as u } from "./skeleton-DSdtr2qc.js";
|
|
7
7
|
import { t as d } from "./live-status-BGPaN8r8.js";
|
|
8
8
|
import { t as f } from "./use-mobile-BDro060N.js";
|
|
9
9
|
import { t as p } from "./react-node-text-Crkpfpco.js";
|
|
10
|
-
import { a as m, c as h, d as g, f as _, i as v, l as y, m as b, o as x, p as S, r as C, s as w, t as T, u as E } from "./code-editor-
|
|
10
|
+
import { a as m, c as h, d as g, f as _, i as v, l as y, m as b, o as x, p as S, r as C, s as w, t as T, u as E } from "./code-editor-CiwgfSOK.js";
|
|
11
11
|
import { r as D, t as O } from "./field-blur-DkiZOVNV.js";
|
|
12
12
|
import { useEffect as k, useRef as A, useState as j } from "react";
|
|
13
13
|
import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as e, f as t } from "./dropdown-menu-
|
|
2
|
-
import { t as n } from "./use-material-translation-
|
|
1
|
+
import { d as e, f as t } from "./dropdown-menu-CPOgcajv.js";
|
|
2
|
+
import { t as n } from "./use-material-translation-BJucC_xe.js";
|
|
3
3
|
import { t as r } from "./copy-to-clipboard-Be5Ffvs_.js";
|
|
4
4
|
import { t as i } from "./live-status-BGPaN8r8.js";
|
|
5
5
|
import { useEffect as a, useRef as o, useState as s } from "react";
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
@import "./ui/actions/button-group/button-group-standard.css";
|
|
55
55
|
/* ActivityLayout: the route transition (cross-fade, none under reduced motion). */
|
|
56
56
|
@import "./ui/layout/app-shell/route-transition.css";
|
|
57
|
+
@import "./ui/layout/app-shell/app-header.css";
|
|
57
58
|
@import "./ui/layout/app-shell/activity-backdrop.css";
|
|
58
59
|
@import "./ui/layout/app-shell/activity-backdrop-shapes.css";
|
|
59
60
|
@import "./ui/layout/auth-card/auth-card-backdrop.css";
|
|
@@ -97,6 +98,7 @@
|
|
|
97
98
|
@import "./ui/actions/toolbar/toolbar-morph-slots.css";
|
|
98
99
|
@import "./ui/actions/toolbar/toolbar-morph-widen.css";
|
|
99
100
|
@import "./ui/actions/toolbar/toolbar-expressive-look.css";
|
|
101
|
+
@import "./ui/layout/navigation-toolbar/navigation-toolbar.css";
|
|
100
102
|
@import "./ui/actions/toolbar/toolbar-density.css";
|
|
101
103
|
@import "./editor-toolbar-expressive.css";
|
|
102
104
|
@import "./editor-floating-bar.css";
|
|
@@ -206,6 +208,7 @@
|
|
|
206
208
|
@import "./ui/fields/attributes/attributes.css";
|
|
207
209
|
/* Background: the gradient preset's CSS, shared (lib/backgrounds/css); the other presets are opt-in: backgrounds.css. */
|
|
208
210
|
@import "./background-shared.css";
|
|
211
|
+
@import "./ui/layout/app-search/app-search.css"; /* AppSearchBar, SearchView */
|
|
209
212
|
@import "./ui/widgets/drawing/drawing.css"; /* @nxgt/material/draw: role colours, focus ring */
|
|
210
213
|
@import "./ui/widgets/drawing/drawing-animate.css";
|
|
211
214
|
@import "./ui/widgets/barcode/barcode.css"; /* @nxgt/material/barcode: symbol colours, label sheet */
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/* FabDock: the bottom-end corner, 16px in (24px from 840px wide, M3's
|
|
2
|
-
* medium window), above the home indicator
|
|
3
|
-
*
|
|
2
|
+
* medium window), above the home indicator, above a docked bar that sets
|
|
3
|
+
* --nxgt-media-dock and above a bottom navigation bar (--nxgt-nav-bar);
|
|
4
|
+
* --nxgt-bottom-chrome is the two together. The bar's room holds the
|
|
5
|
+
* safe area, so the dock clears the taller of the two, not their sum. `contained` places it in its
|
|
6
|
+
* positioned parent.
|
|
4
7
|
* While a FabMenu in it is open, a light scrim covers the page (contained:
|
|
5
8
|
* the pane) behind the pills. The menu is modal, so the whole page is inert
|
|
6
9
|
* either way. */
|
|
@@ -11,8 +14,13 @@
|
|
|
11
14
|
inset-inline-end: var(--fab-dock-gap);
|
|
12
15
|
inset-block-end: calc(
|
|
13
16
|
var(--fab-dock-gap) +
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
max(
|
|
18
|
+
env(safe-area-inset-bottom, 0px),
|
|
19
|
+
var(
|
|
20
|
+
--nxgt-bottom-chrome,
|
|
21
|
+
calc(var(--nxgt-nav-bar, 0px) + var(--nxgt-media-dock, 0px))
|
|
22
|
+
)
|
|
23
|
+
)
|
|
16
24
|
);
|
|
17
25
|
z-index: 40;
|
|
18
26
|
display: flex;
|
|
@@ -33,8 +41,13 @@
|
|
|
33
41
|
padding: var(--fab-dock-gap);
|
|
34
42
|
padding-block-end: calc(
|
|
35
43
|
var(--fab-dock-gap) +
|
|
36
|
-
|
|
37
|
-
|
|
44
|
+
max(
|
|
45
|
+
env(safe-area-inset-bottom, 0px),
|
|
46
|
+
var(
|
|
47
|
+
--nxgt-bottom-chrome,
|
|
48
|
+
calc(var(--nxgt-nav-bar, 0px) + var(--nxgt-media-dock, 0px))
|
|
49
|
+
)
|
|
50
|
+
)
|
|
38
51
|
);
|
|
39
52
|
}
|
|
40
53
|
@media (min-width: 840px) {
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/* The app bar's search (app-search-bar.tsx, search-view.tsx). One source for
|
|
2
|
+
* the sizes: --nxgt-search-h is the pill's height, 2.75rem in the bar and
|
|
3
|
+
* 3rem (a 48px target) in the phone's full-screen view; the back arrow, the
|
|
4
|
+
* phone's button and the field read it. The pill is a filled, fully rounded
|
|
5
|
+
* field box: no border at rest, the field box's focus ring when focused.
|
|
6
|
+
* Classes in the `components` layer: a utility passed as `className` wins. */
|
|
7
|
+
@layer components {
|
|
8
|
+
.nxgt-search-bar {
|
|
9
|
+
--nxgt-search-h: 2.75rem;
|
|
10
|
+
}
|
|
11
|
+
.nxgt-search-button {
|
|
12
|
+
--nxgt-search-h: 3rem;
|
|
13
|
+
}
|
|
14
|
+
.nxgt-search-view {
|
|
15
|
+
--nxgt-search-h: 3rem;
|
|
16
|
+
}
|
|
17
|
+
.nxgt-search-pill {
|
|
18
|
+
--nxgt-field-radius: calc(var(--nxgt-search-h) / 2);
|
|
19
|
+
}
|
|
20
|
+
.nxgt-search-pill [data-slot="input-group"] {
|
|
21
|
+
height: var(--nxgt-search-h);
|
|
22
|
+
border-color: transparent;
|
|
23
|
+
background-color: var(--muted);
|
|
24
|
+
}
|
|
25
|
+
.nxgt-search-pill [data-slot="input-group"]:focus-within {
|
|
26
|
+
background-color: var(--background);
|
|
27
|
+
}
|
|
28
|
+
/* The bar's pill: grows to a comfortable width and gives way to the title. */
|
|
29
|
+
.nxgt-search-bar {
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
gap: 0.5rem;
|
|
33
|
+
flex: 0 1 28rem;
|
|
34
|
+
min-width: 0;
|
|
35
|
+
}
|
|
36
|
+
.nxgt-search-form {
|
|
37
|
+
flex: 1 1 auto;
|
|
38
|
+
min-width: 0;
|
|
39
|
+
}
|
|
40
|
+
.nxgt-search-button {
|
|
41
|
+
flex: none;
|
|
42
|
+
}
|
|
43
|
+
.nxgt-search-view-row {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
gap: 0.5rem;
|
|
47
|
+
padding: 0.5rem;
|
|
48
|
+
padding-top: max(0.5rem, env(safe-area-inset-top));
|
|
49
|
+
padding-left: max(0.5rem, env(safe-area-inset-left));
|
|
50
|
+
padding-right: max(0.5rem, env(safe-area-inset-right));
|
|
51
|
+
}
|
|
52
|
+
.nxgt-search-view-back {
|
|
53
|
+
flex: none;
|
|
54
|
+
}
|
|
55
|
+
.nxgt-search-view-results {
|
|
56
|
+
min-height: 0;
|
|
57
|
+
overflow-y: auto;
|
|
58
|
+
overscroll-behavior: contain;
|
|
59
|
+
padding: 0.5rem 1rem;
|
|
60
|
+
padding-bottom: max(0.5rem, env(safe-area-inset-bottom));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -82,8 +82,16 @@
|
|
|
82
82
|
--nxgt-backdrop-height: calc(
|
|
83
83
|
100dvh -
|
|
84
84
|
var(--nxgt-backdrop-top) -
|
|
85
|
-
max(
|
|
86
|
-
|
|
85
|
+
max(
|
|
86
|
+
max(0.5rem, env(safe-area-inset-bottom)),
|
|
87
|
+
calc(
|
|
88
|
+
0.5rem +
|
|
89
|
+
var(
|
|
90
|
+
--nxgt-bottom-chrome,
|
|
91
|
+
calc(var(--nxgt-nav-bar, 0px) + var(--nxgt-media-dock, 0px))
|
|
92
|
+
)
|
|
93
|
+
)
|
|
94
|
+
)
|
|
87
95
|
);
|
|
88
96
|
position: sticky;
|
|
89
97
|
top: var(--nxgt-backdrop-top);
|