@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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { GridSpan, ResponsiveValue } from '../responsive-grid/responsive-grid-spans.js';
|
|
2
|
+
/** How many columns the grid has at each container width (`md` 768px, `xl` 1280px). */
|
|
3
|
+
export type DashboardColumns = {
|
|
4
|
+
base?: 1 | 2;
|
|
5
|
+
md?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
6
|
+
xl?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
7
|
+
};
|
|
8
|
+
export declare const DEFAULT_COLUMNS: Required<DashboardColumns>;
|
|
9
|
+
/** The grid's columns; literal classes so Tailwind sees them. */
|
|
10
|
+
export declare const COLUMNS_CLASS: {
|
|
11
|
+
readonly base: {
|
|
12
|
+
readonly 1: "grid-cols-1";
|
|
13
|
+
readonly 2: "grid-cols-2";
|
|
14
|
+
};
|
|
15
|
+
readonly md: {
|
|
16
|
+
readonly 1: "@3xl:grid-cols-1";
|
|
17
|
+
readonly 2: "@3xl:grid-cols-2";
|
|
18
|
+
readonly 3: "@3xl:grid-cols-3";
|
|
19
|
+
readonly 4: "@3xl:grid-cols-4";
|
|
20
|
+
readonly 5: "@3xl:grid-cols-5";
|
|
21
|
+
readonly 6: "@3xl:grid-cols-6";
|
|
22
|
+
};
|
|
23
|
+
readonly xl: {
|
|
24
|
+
readonly 1: "@7xl:grid-cols-1";
|
|
25
|
+
readonly 2: "@7xl:grid-cols-2";
|
|
26
|
+
readonly 3: "@7xl:grid-cols-3";
|
|
27
|
+
readonly 4: "@7xl:grid-cols-4";
|
|
28
|
+
readonly 5: "@7xl:grid-cols-5";
|
|
29
|
+
readonly 6: "@7xl:grid-cols-6";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export type ReorderDirection = 'earlier' | 'later' | 'first' | 'last';
|
|
33
|
+
/**
|
|
34
|
+
* The displayed order: the ids of `order` that are still tiles, then the
|
|
35
|
+
* tiles `order` does not know yet (a new tile), in the order they were
|
|
36
|
+
* written. A repeated id counts once.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveOrder(order: readonly string[], ids: readonly string[]): string[];
|
|
39
|
+
/** Moves one id to a position (clamped); the same array when nothing moves. */
|
|
40
|
+
export declare function moveTo(order: string[], id: string, to: number): string[];
|
|
41
|
+
/** Moves one id a step earlier or later, or to the first or last place. */
|
|
42
|
+
export declare function moveTile(order: string[], id: string, direction: ReorderDirection): string[];
|
|
43
|
+
export type TileKeyCommand = {
|
|
44
|
+
type: 'grab';
|
|
45
|
+
} | {
|
|
46
|
+
type: 'move';
|
|
47
|
+
direction: ReorderDirection;
|
|
48
|
+
} | {
|
|
49
|
+
type: 'drop';
|
|
50
|
+
} | {
|
|
51
|
+
type: 'cancel';
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* A tile handle's keys. Space or Enter picks the tile up; then the arrows
|
|
55
|
+
* move it (left and up go earlier, right and down later; in a right-to-left
|
|
56
|
+
* page left goes later), Home and End send it first or last, Space, Enter or
|
|
57
|
+
* Tab drops it, Escape puts it back.
|
|
58
|
+
*/
|
|
59
|
+
export declare function tileKeyCommand(key: string, grabbed: boolean, rtl?: boolean): TileKeyCommand | null;
|
|
60
|
+
/**
|
|
61
|
+
* A span held to the columns of its width, so a tile never adds implicit
|
|
62
|
+
* columns: `span: 3` in a two-column width covers two.
|
|
63
|
+
*/
|
|
64
|
+
export declare function clampSpan(span: ResponsiveValue<GridSpan> | undefined, columns: Required<DashboardColumns>): ResponsiveValue<GridSpan> | undefined;
|
|
65
|
+
/** What a tile is called to a screen reader: `label`, a text `title`, else its `id`. */
|
|
66
|
+
export declare const tileLabel: (props: {
|
|
67
|
+
id: string;
|
|
68
|
+
label?: string;
|
|
69
|
+
title?: unknown;
|
|
70
|
+
}) => string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DashboardTileProps } from './dashboard-grid.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* DashboardTile - one tile of a `DashboardGrid`: a card with an optional
|
|
4
|
+
* title, covering `span` columns and `rowSpan` rows. In edit mode it shows a
|
|
5
|
+
* handle to move it. Outside a grid it is a plain card.
|
|
6
|
+
*/
|
|
7
|
+
export declare function DashboardTile({ id, title, span, rowSpan, plain, label, className, children, ...props }: DashboardTileProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DashboardState } from '../dashboard-grid.state.js';
|
|
2
|
+
/** Says where a tile went, for screen readers (WCAG 4.1.3). */
|
|
3
|
+
export declare function DashboardAnnouncer({ note, labels, }: {
|
|
4
|
+
note: DashboardState['note'];
|
|
5
|
+
labels: Record<string, string>;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DashboardGridContextValue } from '../dashboard-grid-context.js';
|
|
2
|
+
/**
|
|
3
|
+
* The strip a tile shows in edit mode: its handle (drag with a pointer, or
|
|
4
|
+
* Space then arrows), and below 768px, in the narrow layout, the
|
|
5
|
+
* "earlier" and "later" buttons.
|
|
6
|
+
*/
|
|
7
|
+
export declare function DashboardEditBar({ grid, id, label, }: {
|
|
8
|
+
grid: DashboardGridContextValue;
|
|
9
|
+
id: string;
|
|
10
|
+
label: string;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DashboardGridContextValue } from '../dashboard-grid-context.js';
|
|
2
|
+
/** Earlier / later buttons for the narrow layout, where tiles stack: hidden from 768px. */
|
|
3
|
+
export declare function DashboardMoveButtons({ grid, id, label, first, last, }: {
|
|
4
|
+
grid: DashboardGridContextValue;
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
first: boolean;
|
|
8
|
+
last: boolean;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** The button that turns edit mode on and off, and the keys' hint it describes. */
|
|
2
|
+
export declare function DashboardToolbar({ editing, onEditingChange, hintId, showButton, }: {
|
|
3
|
+
editing: boolean;
|
|
4
|
+
onEditingChange: (editing: boolean) => void;
|
|
5
|
+
hintId: string;
|
|
6
|
+
showButton: boolean;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DashboardGridProps } from './dashboard-grid.types.js';
|
|
2
|
+
import { DashboardGridContextValue } from './dashboard-grid-context.js';
|
|
3
|
+
/**
|
|
4
|
+
* The grid's state: the order and the edit mode (each controlled or not), the
|
|
5
|
+
* tile picked up with the keyboard, and the note for the live region.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useDashboardGrid(props: DashboardGridProps): {
|
|
8
|
+
context: DashboardGridContextValue;
|
|
9
|
+
editing: boolean;
|
|
10
|
+
setEditing: (next: boolean) => void;
|
|
11
|
+
order: string[];
|
|
12
|
+
elements: Map<string, import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>>>;
|
|
13
|
+
labels: Record<string, string>;
|
|
14
|
+
note: {
|
|
15
|
+
kind: import('./dashboard-grid.state.js').DashboardNoteKind;
|
|
16
|
+
id: string;
|
|
17
|
+
order: string[];
|
|
18
|
+
seq: number;
|
|
19
|
+
} | null;
|
|
20
|
+
onDragEnd: ({ active, over }: import('@dnd-kit/core').DragEndEvent) => void;
|
|
21
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DragEndEvent } from '@dnd-kit/core';
|
|
2
|
+
import { Dispatch } from 'react';
|
|
3
|
+
import { DashboardAction, DashboardState } from './dashboard-grid.state.js';
|
|
4
|
+
import { ReorderDirection } from './dashboard-grid.utils.js';
|
|
5
|
+
import { DashboardFocusTarget } from './dashboard-grid-context.js';
|
|
6
|
+
/**
|
|
7
|
+
* What changes the order: a step, a pick-up and drop, a cancel, a pointer
|
|
8
|
+
* drop. It also remembers which control of the moved tile takes the focus
|
|
9
|
+
* back (a tile that moves in the DOM can lose it).
|
|
10
|
+
*/
|
|
11
|
+
export declare function useDashboardMoves({ order, setOrder, state, dispatch, }: {
|
|
12
|
+
order: string[];
|
|
13
|
+
setOrder: (next: string[]) => void;
|
|
14
|
+
state: DashboardState;
|
|
15
|
+
dispatch: Dispatch<DashboardAction>;
|
|
16
|
+
}): {
|
|
17
|
+
move: (id: string, direction: ReorderDirection, target: DashboardFocusTarget) => void;
|
|
18
|
+
drop: () => void;
|
|
19
|
+
onHandleKey: (id: string, key: string, rtl: boolean) => boolean;
|
|
20
|
+
onDragEnd: ({ active, over }: DragEndEvent) => void;
|
|
21
|
+
takeFocus: (id: string) => DashboardFocusTarget | null;
|
|
22
|
+
};
|
|
@@ -13,6 +13,7 @@ export declare function useDocContext(): {
|
|
|
13
13
|
actions: ReactNode;
|
|
14
14
|
searchable: boolean;
|
|
15
15
|
linkComponent: import('./types.js').DocLinkComponent | undefined;
|
|
16
|
+
frame: import('./use-doc.js').DocChrome;
|
|
16
17
|
chrome: import('./types.js').DocChromeState;
|
|
17
18
|
chromeActions: {
|
|
18
19
|
setSidebarOpen: (payload: boolean) => void;
|
|
@@ -40,6 +41,7 @@ export declare function useOptionalDocContext(): {
|
|
|
40
41
|
actions: ReactNode;
|
|
41
42
|
searchable: boolean;
|
|
42
43
|
linkComponent: import('./types.js').DocLinkComponent | undefined;
|
|
44
|
+
frame: import('./use-doc.js').DocChrome;
|
|
43
45
|
chrome: import('./types.js').DocChromeState;
|
|
44
46
|
chromeActions: {
|
|
45
47
|
setSidebarOpen: (payload: boolean) => void;
|
|
@@ -7,5 +7,10 @@ export type DocProps = UseDocOptions & {
|
|
|
7
7
|
/**
|
|
8
8
|
* Documentation site shell. Layout is CSS-first, matching the usual docs
|
|
9
9
|
* breakpoints: one column below `md`, sidebar from `md`, TOC rail from `xl`.
|
|
10
|
+
*
|
|
11
|
+
* `chrome="embedded"` draws it inside `ActivityLayout` instead of over the whole
|
|
12
|
+
* viewport: no top bar of its own (the shell's header stays), the nav and the
|
|
13
|
+
* outline stick under that header and scroll with the shell, and a bottom
|
|
14
|
+
* navigation bar or floating toolbar is cleared.
|
|
10
15
|
*/
|
|
11
16
|
export declare function Doc({ children, className, ...options }: DocProps): import("react").JSX.Element;
|
|
@@ -33,5 +33,5 @@ export { DocToc } from './partials/doc-toc.js';
|
|
|
33
33
|
export type { DocTopbarProps } from './partials/doc-topbar.js';
|
|
34
34
|
export { DocTopbar } from './partials/doc-topbar.js';
|
|
35
35
|
export type { DocChromeState, DocLinkComponent, DocLinkProps, DocNavItem, DocPagerLink, DocSearchHit, DocTocItem, } from './types.js';
|
|
36
|
-
export type { DocModel, UseDocOptions } from './use-doc.js';
|
|
36
|
+
export type { DocChrome, DocModel, UseDocOptions } from './use-doc.js';
|
|
37
37
|
export { useDoc } from './use-doc.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The row an embedded {@link Doc} keeps of its top bar: the phone's trigger for
|
|
3
|
+
* the page tree (a sheet, named apart from the shell's own "Menu"), the search
|
|
4
|
+
* and the `actions`. It is not a bar of its own: no fill below `md`, where it
|
|
5
|
+
* sticks under the shell's header.
|
|
6
|
+
*/
|
|
7
|
+
export declare function DocEmbeddedBar({ className }: {
|
|
8
|
+
className?: string;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where an embedded Doc's nav and outline stick: under the shell's header, as
|
|
3
|
+
* `ActivityContent`'s aside does (`--ac-top` and `--ac-max` are set on the
|
|
4
|
+
* Doc's root, and the shell's scroll box or the window decides their value).
|
|
5
|
+
*/
|
|
6
|
+
export declare const EMBEDDED_STICK = "top-(--ac-top) h-(--ac-max) sm:top-(--ac-top) sm:h-(--ac-max)";
|
|
7
|
+
/** The sheet's list clears a bottom bar and the home indicator. */
|
|
8
|
+
export declare const EMBEDDED_SHEET_PAD = "pb-[calc(1rem+max(var(--nxgt-bottom-chrome, calc(var(--nxgt-nav-bar, 0px) + var(--nxgt-media-dock, 0px))),env(safe-area-inset-bottom)))]";
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { DocLinkComponent, DocNavItem, DocPagerLink, DocTocItem } from './types.js';
|
|
3
|
+
export type DocChrome = 'standalone' | 'embedded';
|
|
3
4
|
export type UseDocOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* `'standalone'` (default) owns the viewport: its top bar and full-height
|
|
7
|
+
* frame. `'embedded'` is drawn inside the app shell (`ActivityLayout`): no top
|
|
8
|
+
* bar, and the nav and outline stick under the shell's header.
|
|
9
|
+
*/
|
|
10
|
+
chrome?: DocChrome;
|
|
4
11
|
items: DocNavItem[];
|
|
5
12
|
pathname: string;
|
|
6
13
|
toc?: DocTocItem[];
|
|
@@ -13,7 +20,7 @@ export type UseDocOptions = {
|
|
|
13
20
|
next?: DocPagerLink | null;
|
|
14
21
|
defaultCollapsedIds?: string[];
|
|
15
22
|
};
|
|
16
|
-
export declare function useDoc({ items, pathname, toc, brand, actions, searchable, onNavigate, linkComponent, previous, next, defaultCollapsedIds, }: UseDocOptions): {
|
|
23
|
+
export declare function useDoc({ chrome: frame, items, pathname, toc, brand, actions, searchable, onNavigate, linkComponent, previous, next, defaultCollapsedIds, }: UseDocOptions): {
|
|
17
24
|
items: DocNavItem[];
|
|
18
25
|
pathname: string;
|
|
19
26
|
toc: DocTocItem[];
|
|
@@ -21,6 +28,7 @@ export declare function useDoc({ items, pathname, toc, brand, actions, searchabl
|
|
|
21
28
|
actions: ReactNode;
|
|
22
29
|
searchable: boolean;
|
|
23
30
|
linkComponent: DocLinkComponent | undefined;
|
|
31
|
+
frame: DocChrome;
|
|
24
32
|
chrome: import('./types.js').DocChromeState;
|
|
25
33
|
chromeActions: {
|
|
26
34
|
setSidebarOpen: (payload: boolean) => void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EditorLayoutProps } from './editor-layout.types.js';
|
|
2
|
+
import { EditorLayoutPropertiesTrigger, EditorLayoutStartTrigger } from './partials/editor-layout-triggers.js';
|
|
3
|
+
/**
|
|
4
|
+
* The editor page: a toolbar, a canvas that scrolls on its own, a properties
|
|
5
|
+
* panel at the end and an optional panel at the start. Built on `PaneLayout`
|
|
6
|
+
* (container breakpoint at 768px): the properties are a bottom sheet below it.
|
|
7
|
+
* The pane comes after the canvas in the source, so Tab reaches the canvas first.
|
|
8
|
+
*/
|
|
9
|
+
export declare function EditorLayout({ children, toolbar, start, properties, ground, propertiesWidth, propertiesOpen, defaultPropertiesOpen, onPropertiesOpenChange, toolbarLabel, startLabel, propertiesLabel, canvasLabel, className, ref, ...props }: EditorLayoutProps): import("react").JSX.Element;
|
|
10
|
+
export declare namespace EditorLayout {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
var PropertiesTrigger: typeof EditorLayoutPropertiesTrigger;
|
|
13
|
+
var StartTrigger: typeof EditorLayoutStartTrigger;
|
|
14
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
import { PaneLayoutPaneWidth } from '../pane-layout/internal.js';
|
|
3
|
+
/** What the canvas sits on: the page `plain`, the tinted page `ground`, or a `neutral` grey. */
|
|
4
|
+
export type EditorLayoutGround = 'plain' | 'tinted' | 'neutral';
|
|
5
|
+
export interface EditorLayoutProps extends Omit<ComponentProps<'div'>, 'children'> {
|
|
6
|
+
/** The canvas: it scrolls on its own, in both directions. */
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* The bar above the canvas. It stays in view while the canvas scrolls. Put
|
|
10
|
+
* `EditorLayout.PropertiesTrigger` (and `StartTrigger`) in it.
|
|
11
|
+
*/
|
|
12
|
+
toolbar?: ReactNode;
|
|
13
|
+
/** The panel at the start (layers, outline): inline from 1280px, a side sheet below. */
|
|
14
|
+
start?: ReactNode;
|
|
15
|
+
/** The properties panel at the end: inline from 768px, a bottom sheet below. */
|
|
16
|
+
properties?: ReactNode;
|
|
17
|
+
/** What the canvas sits on. */
|
|
18
|
+
ground?: EditorLayoutGround;
|
|
19
|
+
/** Width of the inline properties panel: `sm` 16rem, `md` 20rem (default), `lg` 24rem. */
|
|
20
|
+
propertiesWidth?: PaneLayoutPaneWidth;
|
|
21
|
+
/** Whether the inline properties panel is shown. Below 768px the sheet starts closed. */
|
|
22
|
+
propertiesOpen?: boolean;
|
|
23
|
+
defaultPropertiesOpen?: boolean;
|
|
24
|
+
/** Called when the inline panel opens or closes (not for the phone sheet). */
|
|
25
|
+
onPropertiesOpenChange?: (open: boolean) => void;
|
|
26
|
+
/** Names of the regions; `material.editor-layout.*` by default. */
|
|
27
|
+
toolbarLabel?: string;
|
|
28
|
+
startLabel?: string;
|
|
29
|
+
propertiesLabel?: string;
|
|
30
|
+
canvasLabel?: string;
|
|
31
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './editor-layout.js';
|
|
2
|
+
export type { EditorLayoutGround, EditorLayoutProps, } from './editor-layout.types.js';
|
|
3
|
+
export { useEditorLayout } from './partials/editor-layout-context.js';
|
|
4
|
+
export type { EditorLayoutTriggerProps } from './partials/editor-layout-triggers.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { EditorLayoutGround } from '../editor-layout.types.js';
|
|
3
|
+
import { useEditorLayoutNames } from './use-editor-layout-names.js';
|
|
4
|
+
/** The toolbar above a row of the optional start panel and the canvas. */
|
|
5
|
+
export declare function EditorLayoutBody({ toolbar, start, ground, names, children, }: {
|
|
6
|
+
toolbar: ReactNode;
|
|
7
|
+
start: ReactNode;
|
|
8
|
+
ground: EditorLayoutGround;
|
|
9
|
+
names: ReturnType<typeof useEditorLayoutNames>;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { EditorLayoutGround } from '../editor-layout.types.js';
|
|
3
|
+
/** The canvas: a region that scrolls on its own, so the keyboard can reach it. */
|
|
4
|
+
export declare function EditorLayoutCanvas({ ground, label, children, }: {
|
|
5
|
+
ground: EditorLayoutGround;
|
|
6
|
+
label: string;
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface EditorLayoutContextProps {
|
|
2
|
+
hasStart: boolean;
|
|
3
|
+
hasProperties: boolean;
|
|
4
|
+
/** Whether the start panel is a sheet now (the layout is narrower than 1280px). */
|
|
5
|
+
startSheet: boolean;
|
|
6
|
+
startOpen: boolean;
|
|
7
|
+
setStartOpen: (open: boolean) => void;
|
|
8
|
+
startLabel: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const EditorLayoutContext: import('react').Context<EditorLayoutContextProps | undefined>;
|
|
11
|
+
/** The start panel's state; for the properties panel use `usePaneLayout`. */
|
|
12
|
+
export declare function useEditorLayout(): EditorLayoutContextProps;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The start panel: inline from 1280px (hidden by CSS before hydrating), a side
|
|
4
|
+
* sheet below, opened by `EditorLayout.StartTrigger`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function EditorLayoutStart({ children }: {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ButtonProps } from '../../../actions/button/button.js';
|
|
3
|
+
export type EditorLayoutTriggerProps = Omit<ButtonProps, 'children'> & {
|
|
4
|
+
/** The label; its default is the panel's name. Below 768px only the icon shows. */
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
/** Opens the properties: a bottom sheet on a phone, the inline panel otherwise. */
|
|
8
|
+
export declare function EditorLayoutPropertiesTrigger({ children, onClick, className, ...props }: EditorLayoutTriggerProps): import("react").JSX.Element | null;
|
|
9
|
+
/** Opens the start panel as a side sheet; hidden once the panel is inline (1280px). */
|
|
10
|
+
export declare function EditorLayoutStartTrigger({ children, onClick, className, ...props }: EditorLayoutTriggerProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EditorLayoutProps } from '../editor-layout.types.js';
|
|
2
|
+
/** The names of the four regions: the app's, else `material.editor-layout.*`. */
|
|
3
|
+
export declare function useEditorLayoutNames(p: Pick<EditorLayoutProps, 'toolbarLabel' | 'startLabel' | 'propertiesLabel' | 'canvasLabel'>): {
|
|
4
|
+
toolbar: string;
|
|
5
|
+
start: string;
|
|
6
|
+
properties: string;
|
|
7
|
+
canvas: string;
|
|
8
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
interface Options {
|
|
2
|
+
hasStart: boolean;
|
|
3
|
+
open?: boolean;
|
|
4
|
+
defaultOpen: boolean;
|
|
5
|
+
onOpenChange?: (open: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The properties panel has two open states: the inline panel's (open by
|
|
9
|
+
* default, the app's to control) and the phone sheet's (closed by default, so
|
|
10
|
+
* a phone never loads with a sheet over the canvas). Both widths are read on
|
|
11
|
+
* the layout itself, after hydrating; the server renders the desktop markup.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useEditorLayoutState(o: Options): {
|
|
14
|
+
rootRef: import('react').RefObject<HTMLDivElement | null>;
|
|
15
|
+
open: boolean;
|
|
16
|
+
setOpen: (next: boolean) => void;
|
|
17
|
+
startSheet: boolean;
|
|
18
|
+
startOpen: boolean;
|
|
19
|
+
setStartOpen: import('react').Dispatch<import('react').SetStateAction<boolean>>;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
export * from './account-menu/index.js';
|
|
2
2
|
export * from './app-bar/index.js';
|
|
3
|
+
export * from './app-search/index.js';
|
|
3
4
|
export * from './app-shell/index.js';
|
|
4
5
|
export * from './auth-card/index.js';
|
|
5
6
|
export * from './background/index.js';
|
|
6
7
|
export * from './breadcrumb/index.js';
|
|
8
|
+
export * from './dashboard-grid/index.js';
|
|
7
9
|
export * from './doc/index.js';
|
|
10
|
+
export * from './editor-layout/index.js';
|
|
8
11
|
export * from './hero/index.js';
|
|
12
|
+
export * from './landing/index.js';
|
|
9
13
|
export * from './list-details-layout/index.js';
|
|
14
|
+
export * from './navigation-bar/index.js';
|
|
15
|
+
export * from './navigation-drawer/index.js';
|
|
10
16
|
export * from './navigation-rail/index.js';
|
|
17
|
+
export * from './navigation-toolbar/index.js';
|
|
11
18
|
export * from './pager/index.js';
|
|
12
19
|
export * from './pane-layout/index.js';
|
|
13
20
|
export * from './record-page/index.js';
|
|
@@ -15,6 +22,7 @@ export * from './resizable/index.js';
|
|
|
15
22
|
export * from './responsive-grid/index.js';
|
|
16
23
|
export * from './section-columns/index.js';
|
|
17
24
|
export * from './see-also/index.js';
|
|
25
|
+
export * from './settings-layout/index.js';
|
|
18
26
|
export * from './sidebar/index.js';
|
|
19
27
|
export * from './skip-link/index.js';
|
|
20
28
|
export * from './stepper/index.js';
|
|
@@ -22,3 +30,4 @@ export * from './steps/index.js';
|
|
|
22
30
|
export * from './sticky-action-bar/index.js';
|
|
23
31
|
export * from './thread-layout/index.js';
|
|
24
32
|
export * from './toc/index.js';
|
|
33
|
+
export * from './top-nav/index.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './landing-layout.js';
|
|
2
|
+
export type { LandingLayoutProps } from './landing-layout.types.js';
|
|
3
|
+
export * from './landing-section.js';
|
|
4
|
+
export type { LandingSectionAlign, LandingSectionProps, LandingSectionTone, LandingSectionWidth, } from './landing-section.types.js';
|
|
5
|
+
export * from './site-footer.js';
|
|
6
|
+
export type { SiteFooterGroup, SiteFooterLink, SiteFooterProps, } from './site-footer.types.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LandingLayoutProps } from './landing-layout.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The frame of a public marketing or landing page, outside the app shell: a
|
|
4
|
+
* top bar (the brand, the `TopNav` links from 768px or a drawer below, and
|
|
5
|
+
* your actions), a `main` holding the hero then the sections, and the footer.
|
|
6
|
+
* Sections are `LandingSection`s, the footer a `SiteFooter`. The bar sticks
|
|
7
|
+
* unless `stickyHeader={false}`; in dark the bar and the footer take the card
|
|
8
|
+
* surface, one tone above the page.
|
|
9
|
+
*
|
|
10
|
+
* Needs a React Router context, like `TopNav`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function LandingLayout({ items, linkComponent, logo, name, brand, brandHref, actions, hero, footer, stickyHeader, navigationLabel, className, children, ...props }: LandingLayoutProps): import("react").JSX.Element;
|
|
13
|
+
export declare namespace LandingLayout {
|
|
14
|
+
var displayName: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
import { AppLogo, AppShellLinkComponent, MenuItem } from '../app-shell/types.js';
|
|
3
|
+
export type LandingLayoutProps = {
|
|
4
|
+
/** The destinations of the top bar (the top level only); on a phone the same links open in a drawer. */
|
|
5
|
+
items?: MenuItem[];
|
|
6
|
+
linkComponent?: AppShellLinkComponent;
|
|
7
|
+
/** The brand's logo (an image URL, `{ src, alt }` or a node); with `name`, both show. */
|
|
8
|
+
logo?: AppLogo;
|
|
9
|
+
/** The brand's name; also the brand link's accessible name. */
|
|
10
|
+
name?: string;
|
|
11
|
+
/** Replaces the logo and name. It is placed in a link to `brandHref` and rendered twice (in the bar and at the top of the phone's drawer): give it an accessible name, and keep it free of ids and state. */
|
|
12
|
+
brand?: ReactNode;
|
|
13
|
+
/** Where the brand links to. @default "/" */
|
|
14
|
+
brandHref?: string;
|
|
15
|
+
/** The end of the top bar: a sign-in link, a primary button, a theme toggle. Shown at every width. */
|
|
16
|
+
actions?: ReactNode;
|
|
17
|
+
/** The first band, usually `<LandingSection variant="hero">`. */
|
|
18
|
+
hero?: ReactNode;
|
|
19
|
+
/** A `SiteFooter`. */
|
|
20
|
+
footer?: ReactNode;
|
|
21
|
+
/** Keeps the top bar in view while the page scrolls. @default true */
|
|
22
|
+
stickyHeader?: boolean;
|
|
23
|
+
/** The top bar's navigation name, already translated. @default "Navigation" */
|
|
24
|
+
navigationLabel?: string;
|
|
25
|
+
/** The sections, in order: `LandingSection`s. */
|
|
26
|
+
children?: ReactNode;
|
|
27
|
+
} & Omit<ComponentProps<'div'>, 'children'>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LandingSectionProps } from './landing-section.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* One band of a landing page: an intro (eyebrow, title, description, actions)
|
|
4
|
+
* over its content, on a surface from the theme's tokens, the content centred
|
|
5
|
+
* at the chosen width. A `section` named by its title (a region); without a
|
|
6
|
+
* title it is a plain band. `variant="hero"` draws the first band, with the
|
|
7
|
+
* page's `h1`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function LandingSection({ eyebrow, title, description, actions, tone, width, align, variant, media, className, children, ...props }: LandingSectionProps): import("react").JSX.Element;
|
|
10
|
+
export declare namespace LandingSection {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
/** The band's surface: the page, a calm tint, the page ground or the primary container. */
|
|
3
|
+
export type LandingSectionTone = 'background' | 'muted' | 'ground' | 'primary';
|
|
4
|
+
/** The content's width: `narrow` 48rem, `medium` 64rem, `default` 80rem, `full` the whole band. */
|
|
5
|
+
export type LandingSectionWidth = 'narrow' | 'medium' | 'default' | 'full';
|
|
6
|
+
export type LandingSectionAlign = 'start' | 'center';
|
|
7
|
+
export type LandingSectionProps = {
|
|
8
|
+
/** A short line above the title. */
|
|
9
|
+
eyebrow?: ReactNode;
|
|
10
|
+
/** The section's heading; it names the region. */
|
|
11
|
+
title?: ReactNode;
|
|
12
|
+
description?: ReactNode;
|
|
13
|
+
/** Buttons or links under the description. */
|
|
14
|
+
actions?: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* A visual beside the intro from `lg` (an illustration, a product card),
|
|
17
|
+
* under it on a phone and a tablet. Meant for a hero; decorative content
|
|
18
|
+
* should be `aria-hidden`.
|
|
19
|
+
*/
|
|
20
|
+
media?: ReactNode;
|
|
21
|
+
/** The surface of the band. @default "background" */
|
|
22
|
+
tone?: LandingSectionTone;
|
|
23
|
+
/** @default "default" */
|
|
24
|
+
width?: LandingSectionWidth;
|
|
25
|
+
/** Where the intro sits. @default "start" */
|
|
26
|
+
align?: LandingSectionAlign;
|
|
27
|
+
/**
|
|
28
|
+
* `hero` is the first band of the page: its title is the page's `h1`, set
|
|
29
|
+
* larger, with more room around. @default "section" (an `h2`)
|
|
30
|
+
*/
|
|
31
|
+
variant?: 'section' | 'hero';
|
|
32
|
+
} & Omit<ComponentProps<'section'>, 'title'>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LandingSectionAlign, LandingSectionTone, LandingSectionWidth } from './landing-section.types.js';
|
|
2
|
+
/** The page's column: header, sections and footer share its edges. */
|
|
3
|
+
export declare const LANDING_GUTTER = "px-4 sm:px-6 lg:px-8";
|
|
4
|
+
/** The widths a section's content takes, centred. */
|
|
5
|
+
export declare const LANDING_WIDTH: Record<LandingSectionWidth, string>;
|
|
6
|
+
/**
|
|
7
|
+
* The band's surface, from the existing tokens. The primary container is the
|
|
8
|
+
* theme's tonal primary; its text stays `foreground` so the contrast holds in
|
|
9
|
+
* every theme, light and dark.
|
|
10
|
+
*/
|
|
11
|
+
export declare const LANDING_TONE: Record<LandingSectionTone, string>;
|
|
12
|
+
/** The copy under a title: muted on a calm surface, near-foreground on the tinted one. */
|
|
13
|
+
export declare const LANDING_DESCRIPTION: Record<LandingSectionTone, string>;
|
|
14
|
+
export declare const LANDING_ALIGN: Record<LandingSectionAlign, string>;
|
|
15
|
+
/**
|
|
16
|
+
* The header and footer chrome. Light: the page's own surface (the footer a
|
|
17
|
+
* calm tint of it). Dark: the card surface, one tone above the page.
|
|
18
|
+
*/
|
|
19
|
+
export declare const LANDING_HEADER_SURFACE = "border-b border-border/60 bg-background/90 backdrop-blur-md dark:bg-card/90";
|
|
20
|
+
export declare const LANDING_FOOTER_SURFACE = "border-t border-border/60 bg-muted/40 dark:bg-card";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { LandingLayoutProps } from '../landing-layout.types.js';
|
|
2
|
+
type LandingHeaderProps = Pick<LandingLayoutProps, 'items' | 'linkComponent' | 'logo' | 'name' | 'brand' | 'brandHref' | 'actions' | 'navigationLabel'> & {
|
|
3
|
+
sticky: boolean;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* The top bar of a landing page: the brand, the `TopNav` from 768px (a drawer
|
|
7
|
+
* opened by a menu button below it) and the actions. Which of the two shows is
|
|
8
|
+
* decided by breakpoint classes, so the server and the browser draw the same.
|
|
9
|
+
*/
|
|
10
|
+
export declare function LandingHeader({ items, linkComponent, logo, name, brand, brandHref, actions, navigationLabel, sticky, }: LandingHeaderProps): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { LandingSectionProps } from '../landing-section.types.js';
|
|
3
|
+
type IntroProps = Pick<LandingSectionProps, 'eyebrow' | 'title' | 'description' | 'actions'> & {
|
|
4
|
+
titleId: string;
|
|
5
|
+
tone: NonNullable<LandingSectionProps['tone']>;
|
|
6
|
+
align: NonNullable<LandingSectionProps['align']>;
|
|
7
|
+
hero: boolean;
|
|
8
|
+
};
|
|
9
|
+
/** Whether there is an intro to draw. */
|
|
10
|
+
export declare const hasLandingIntro: ({ eyebrow, title, description, actions, }: Pick<IntroProps, "eyebrow" | "title" | "description" | "actions">) => boolean;
|
|
11
|
+
/** A band's intro: eyebrow, title (an `h1` in a hero), description and actions. */
|
|
12
|
+
export declare function LandingSectionIntro({ eyebrow, title, description, actions, titleId, tone, align, hero, }: IntroProps): ReactNode;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AppShellLinkComponent } from '../../app-shell/types.js';
|
|
2
|
+
import { SiteFooterGroup as Group } from '../site-footer.types.js';
|
|
3
|
+
/** One column of the footer: a heading over a list of links. */
|
|
4
|
+
export declare function SiteFooterGroup({ group, linkComponent, className, }: {
|
|
5
|
+
group: Group;
|
|
6
|
+
linkComponent?: AppShellLinkComponent;
|
|
7
|
+
className?: string;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SiteFooterProps } from './site-footer.types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The footer of a public page: the brand and a line about it, columns of
|
|
4
|
+
* links under headings, then the legal line with a slot beside it for social
|
|
5
|
+
* links or a switcher. A `footer` (the page's `contentinfo` when it sits
|
|
6
|
+
* outside `main`); the links share one `nav` named "Footer". On a phone the
|
|
7
|
+
* columns stack in pairs, the brand first. In dark it takes the card surface,
|
|
8
|
+
* one tone above the page.
|
|
9
|
+
*/
|
|
10
|
+
export declare function SiteFooter({ brand, description, groups, legal, extra, linkComponent, label, className, ...props }: SiteFooterProps): import("react").JSX.Element;
|
|
11
|
+
export declare namespace SiteFooter {
|
|
12
|
+
var displayName: string;
|
|
13
|
+
}
|