@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,14 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ThreadLayoutStepperPlacement, ThreadLayoutWidth } from './thread-layout-classes.js';
|
|
3
|
+
/** The centred column: the stepper (named when placed) above or beside the content. */
|
|
4
|
+
export declare function ThreadLayoutColumn({ width, stepper, stepperPlacement, children, }: {
|
|
5
|
+
width?: ThreadLayoutWidth;
|
|
6
|
+
stepper?: ReactNode | ((placement: ThreadLayoutStepperPlacement) => ReactNode);
|
|
7
|
+
stepperPlacement?: ThreadLayoutStepperPlacement;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}): import("react").JSX.Element;
|
|
10
|
+
/** The sticky action bar in the grid's last row (`below`: its row, 2 or 3). */
|
|
11
|
+
export declare function ThreadLayoutFooter({ below, children, }: {
|
|
12
|
+
below: 2 | 3;
|
|
13
|
+
children: ReactNode;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ThreadLayoutStepperPlacement } from './thread-layout-classes.js';
|
|
3
|
+
/**
|
|
4
|
+
* The named landmark around a `ThreadLayout`'s stepper: above the column, or a
|
|
5
|
+
* sticky rail beside it from `xl`. One element, placed by CSS only, so the
|
|
6
|
+
* server and the client render the same markup.
|
|
7
|
+
*/
|
|
8
|
+
export declare function ThreadLayoutStepper({ placement, children, }: {
|
|
9
|
+
placement: ThreadLayoutStepperPlacement;
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
@@ -1,9 +1,36 @@
|
|
|
1
1
|
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
import { ThreadLayoutStepperPlacement, ThreadLayoutWidth } from './thread-layout-classes.js';
|
|
3
|
+
export type { ThreadLayoutStepperPlacement, ThreadLayoutWidth, } from './thread-layout-classes.js';
|
|
2
4
|
export type ThreadLayoutProps = {
|
|
3
5
|
/** Rendered above the content, full width. Typically a back button or title. */
|
|
4
6
|
header?: ReactNode;
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* The wizard's steps. With `stepperPlacement` unset: rendered directly
|
|
9
|
+
* above the content, inside the centered column, as given. With a placement
|
|
10
|
+
* it sits in a `nav` named "Progress" (above the column, or a rail beside
|
|
11
|
+
* it), and may be a function, called once with the placement, so the
|
|
12
|
+
* caller picks the `Stepper`'s orientation.
|
|
13
|
+
*/
|
|
14
|
+
stepper?: ReactNode | ((placement: ThreadLayoutStepperPlacement) => ReactNode);
|
|
15
|
+
/**
|
|
16
|
+
* The column's width: `'form'` (32rem), `'reading'` (48rem) or `'wide'`
|
|
17
|
+
* (72rem), centred, and its content stretched to fill it. Unset keeps the
|
|
18
|
+
* 14-of-16-column track and children centred at their own width.
|
|
19
|
+
*/
|
|
20
|
+
width?: ThreadLayoutWidth;
|
|
21
|
+
/**
|
|
22
|
+
* A sticky action bar under the column (Back / Next, Save): it stays in
|
|
23
|
+
* view while the content scrolls and keeps clear of a bottom navigation
|
|
24
|
+
* bar (`--nxgt-bottom-chrome`) and the phone's home bar.
|
|
25
|
+
*/
|
|
26
|
+
footer?: ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* With a `stepper`: `'top'` keeps it above the column; `'side'` puts it in
|
|
29
|
+
* a rail beside the column from 1280px and above it below (one element
|
|
30
|
+
* placed by CSS, so the function gets `'side'` in both ranges: pass a
|
|
31
|
+
* vertical `Stepper`). Unset leaves the stepper as it was.
|
|
32
|
+
*/
|
|
33
|
+
stepperPlacement?: ThreadLayoutStepperPlacement;
|
|
7
34
|
} & ComponentProps<'div'>;
|
|
8
35
|
/**
|
|
9
36
|
* A single centered column over the app background, for focused flows a user
|
|
@@ -15,4 +42,4 @@ export type ThreadLayoutProps = {
|
|
|
15
42
|
* app-local; a flow like this one wants the chrome out of the way anyway, so
|
|
16
43
|
* the `header` slot takes whatever the caller wants there instead.
|
|
17
44
|
*/
|
|
18
|
-
export declare function ThreadLayout({ children, header, stepper, className, ...props }: ThreadLayoutProps): import("react").JSX.Element;
|
|
45
|
+
export declare function ThreadLayout({ children, header, stepper, width, footer, stepperPlacement, className, ...props }: ThreadLayoutProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { TopNavItemProps } from './partials/top-nav-item.js';
|
|
2
|
+
export { TopNavItem } from './partials/top-nav-item.js';
|
|
3
|
+
export type { TopNavMenuProps } from './partials/top-nav-menu.js';
|
|
4
|
+
export { TopNavMenu } from './partials/top-nav-menu.js';
|
|
5
|
+
export * from './top-nav.js';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { IconProps } from '../../../primitives/icon/icon.js';
|
|
3
|
+
import { AppShellLinkComponent } from '../../app-shell/types.js';
|
|
4
|
+
export type TopNavItemProps = {
|
|
5
|
+
/** Where the destination goes. */
|
|
6
|
+
href: string;
|
|
7
|
+
/** An icon before the label. Optional: the bar reads fine with labels alone. */
|
|
8
|
+
icon?: IconProps['name'];
|
|
9
|
+
/** The visible label, already translated. */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
/** Whether this is the current destination: `aria-current="page"` and a tint. */
|
|
12
|
+
active?: boolean;
|
|
13
|
+
/** `true` a dot, a number a count ("99+" past 99), a node as it is; ends the pill and is read in the link's name. */
|
|
14
|
+
badge?: number | boolean | ReactNode;
|
|
15
|
+
/** Replaces the badge's text in the link's name, already translated. */
|
|
16
|
+
badgeLabel?: string;
|
|
17
|
+
linkComponent?: AppShellLinkComponent;
|
|
18
|
+
className?: string;
|
|
19
|
+
};
|
|
20
|
+
/** The icon, label and badge a pill shows; shared by a link and a trigger. */
|
|
21
|
+
export declare function TopNavEntryContent({ icon, children, badge, badgeLabel, }: Pick<TopNavItemProps, 'icon' | 'children' | 'badge' | 'badgeLabel'>): import("react").JSX.Element;
|
|
22
|
+
/** One destination of the top bar: a pill, `aria-current="page"` when active. */
|
|
23
|
+
export declare function TopNavItem({ href, icon, children, active, badge, badgeLabel, linkComponent, className, }: TopNavItemProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { IconProps } from '../../../primitives/icon/icon.js';
|
|
3
|
+
import { AppShellLinkComponent, MenuItem } from '../../app-shell/types.js';
|
|
4
|
+
export type TopNavMenuProps = {
|
|
5
|
+
/** The trigger's visible label, already translated. */
|
|
6
|
+
label: ReactNode;
|
|
7
|
+
icon?: IconProps['name'];
|
|
8
|
+
/** The links of the dropdown. */
|
|
9
|
+
items: MenuItem[];
|
|
10
|
+
/** The `url` of the current link, if it is one of `items`: it gets `aria-current="page"` and its trigger reads as active. */
|
|
11
|
+
current?: string;
|
|
12
|
+
badge?: number | boolean | ReactNode;
|
|
13
|
+
badgeLabel?: string;
|
|
14
|
+
linkComponent?: AppShellLinkComponent;
|
|
15
|
+
className?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* An entry that opens a dropdown of links: a trigger (a button, with
|
|
19
|
+
* `aria-expanded`) and a card under it. Arrow keys, Escape and focus return
|
|
20
|
+
* follow Radix's navigation menu.
|
|
21
|
+
*/
|
|
22
|
+
export declare function TopNavMenu({ label, icon, items, current, badge, badgeLabel, linkComponent, className, }: TopNavMenuProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** The list of destinations: a row of pills, never wider than its place. */
|
|
2
|
+
export declare const TOP_NAV_LIST = "flex min-w-0 items-center gap-1";
|
|
3
|
+
/** One destination or trigger: a 48px pill, the whole pill tinted when current (Expressive). */
|
|
4
|
+
export declare const TOP_NAV_ENTRY = "nxgt-plain-link group relative flex h-12 shrink-0 items-center gap-2 rounded-full px-4 font-medium text-muted-foreground text-sm outline-none transition-colors hover:bg-accent/60 data-active:font-semibold data-active:text-foreground data-[state=open]:bg-accent/60 focus-visible:outline-2 focus-visible:outline-ring forced-colors:focus-visible:outline-[Highlight]";
|
|
5
|
+
/** The tint behind the pill: the bar's indicator, which grows from the middle. */
|
|
6
|
+
export declare const TOP_NAV_ROW = "absolute inset-0 scale-x-50 rounded-full bg-sidebar-active opacity-0 transition-[opacity,transform] duration-(--nxgt-motion-effects-default-duration) ease-(--nxgt-motion-effects-default) group-data-active:scale-x-100 group-data-active:opacity-100 group-active:scale-x-110 motion-reduce:transition-none forced-colors:border forced-colors:border-[Highlight]";
|
|
7
|
+
/** The dropdown: a rounded card under its trigger, fading and sliding in unless motion is reduced. */
|
|
8
|
+
export declare const TOP_NAV_MENU = "absolute start-0 top-full z-50 mt-2 flex w-64 flex-col gap-1 rounded-[28px] bg-card p-2 text-card-foreground shadow-xl ring-1 ring-border/60 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-top-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 motion-reduce:animate-none";
|
|
9
|
+
/** One link of a dropdown: a 48px row, rounder than the pills' corner radius of the card. */
|
|
10
|
+
export declare const TOP_NAV_MENU_LINK = "nxgt-plain-link group relative flex h-12 shrink-0 items-center gap-2 rounded-full px-4 font-medium text-muted-foreground text-sm outline-none transition-colors hover:bg-accent/60 data-active:font-semibold data-active:text-foreground data-[state=open]:bg-accent/60 focus-visible:outline-2 focus-visible:outline-ring forced-colors:focus-visible:outline-[Highlight] w-full rounded-2xl";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { AppShellLinkComponent, MenuItem } from '../app-shell/types.js';
|
|
3
|
+
import { TopNavItem } from './partials/top-nav-item.js';
|
|
4
|
+
import { TopNavMenu } from './partials/top-nav-menu.js';
|
|
5
|
+
export type TopNavProps = {
|
|
6
|
+
/**
|
|
7
|
+
* The destinations, in order. An entry with `children` opens a dropdown of
|
|
8
|
+
* its child links; the others are links. `footer`, `group` and `display`
|
|
9
|
+
* are not used.
|
|
10
|
+
*/
|
|
11
|
+
items?: MenuItem[];
|
|
12
|
+
linkComponent?: AppShellLinkComponent;
|
|
13
|
+
/** The landmark's accessible name, already translated. @default "Navigation" */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** Hand-made entries (`TopNav.Item`, `TopNav.Menu`), after those of `items`. */
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
className?: string;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* The top navigation (Material 3 Expressive): a `nav` of destinations as 48px
|
|
21
|
+
* pills in a row, the current one tinted with `aria-current="page"`. An entry
|
|
22
|
+
* with `children` is a trigger that opens a dropdown of its child links; when
|
|
23
|
+
* the current page is one of them, the trigger reads as active. Badges are
|
|
24
|
+
* read in the link's name. Built on Radix's navigation menu: arrow keys move
|
|
25
|
+
* along the bar, Escape closes a dropdown and returns focus to its trigger.
|
|
26
|
+
*
|
|
27
|
+
* Needs a React Router context to read the location. `ActivityLayout`'s
|
|
28
|
+
* `navigation="top"` draws it in the app header from 768px.
|
|
29
|
+
*/
|
|
30
|
+
export declare function TopNav({ items, linkComponent, label, children, className, }: TopNavProps): import("react").JSX.Element;
|
|
31
|
+
export declare namespace TopNav {
|
|
32
|
+
var Item: typeof TopNavItem;
|
|
33
|
+
var Menu: typeof TopNavMenu;
|
|
34
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MenuItem } from '../app-shell/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The `url` of the most specific entry (a child counts) covering `pathname`,
|
|
4
|
+
* and the `url` of the top-level entry that holds it: that entry's trigger
|
|
5
|
+
* reads as active while the child carries `aria-current`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function findTopNavActive(pathname: string, items: MenuItem[]): {
|
|
8
|
+
current?: string;
|
|
9
|
+
parent?: string;
|
|
10
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { KanbanProps } from './kanban.js';
|
|
2
2
|
export { Kanban } from './kanban.js';
|
|
3
3
|
export { KanbanProvider, useKanbanContext } from './kanban-context.js';
|
|
4
|
-
export type { KanbanAddDraft, KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanRenderCard, } from './types.js';
|
|
4
|
+
export type { KanbanAddDraft, KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanPhoneLayout, KanbanRenderCard, } from './types.js';
|
|
5
5
|
export { useKanban } from './use-kanban.js';
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { KanbanAddHandler, KanbanCardHandler, KanbanRenderCard } from './types.js';
|
|
1
|
+
import { ReactNode, RefObject } from 'react';
|
|
2
|
+
import { KanbanAddHandler, KanbanCardHandler, KanbanPhoneLayout, KanbanRenderCard } from './types.js';
|
|
3
3
|
import { KanbanModel } from './use-kanban.js';
|
|
4
4
|
export type KanbanContextValue = KanbanModel & {
|
|
5
5
|
reorderableColumns: boolean;
|
|
6
|
+
/** The board's root: its own width decides the phone layout (below 768px). */
|
|
7
|
+
boardRef?: RefObject<HTMLElement | null>;
|
|
8
|
+
phoneLayout?: KanbanPhoneLayout;
|
|
6
9
|
onCardClick?: KanbanCardHandler;
|
|
7
10
|
onAddCard?: KanbanAddHandler;
|
|
8
11
|
renderCard?: KanbanRenderCard;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanRenderCard } from './types.js';
|
|
2
|
+
import { KanbanAddHandler, KanbanCardHandler, KanbanChange, KanbanColumn, KanbanGroup, KanbanItem, KanbanPhoneLayout, KanbanRenderCard } from './types.js';
|
|
3
3
|
export type KanbanProps = {
|
|
4
4
|
columns?: KanbanColumn[];
|
|
5
5
|
defaultColumns?: KanbanColumn[];
|
|
@@ -16,5 +16,14 @@ export type KanbanProps = {
|
|
|
16
16
|
label?: ReactNode;
|
|
17
17
|
className?: string;
|
|
18
18
|
renderCard?: KanbanRenderCard;
|
|
19
|
+
/**
|
|
20
|
+
* Below 768px (the board's own width): `tabs` shows one column at a time
|
|
21
|
+
* under a tab list, `swipe` snaps full-width columns sideways. Unset or
|
|
22
|
+
* `columns` keeps today's peeking columns.
|
|
23
|
+
*/
|
|
24
|
+
phoneLayout?: KanbanPhoneLayout;
|
|
25
|
+
/** The column `tabs` shows (controlled); the first one when unset. */
|
|
26
|
+
phoneColumn?: string;
|
|
27
|
+
onPhoneColumnChange?: (columnId: string) => void;
|
|
19
28
|
};
|
|
20
|
-
export declare function Kanban({ columns, defaultColumns, items, groups, onColumnsChange, onItemsChange, onChange, onCardClick, onAddCard, searchable, reorderableColumns, disabled, label, className, renderCard, }: KanbanProps): import("react").JSX.Element;
|
|
29
|
+
export declare function Kanban({ columns, defaultColumns, items, groups, onColumnsChange, onItemsChange, onChange, onCardClick, onAddCard, searchable, reorderableColumns, disabled, label, className, renderCard, phoneLayout, phoneColumn, onPhoneColumnChange, }: KanbanProps): import("react").JSX.Element;
|
|
@@ -10,6 +10,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
|
|
|
10
10
|
columnId: string;
|
|
11
11
|
groupId: string | null;
|
|
12
12
|
} | null;
|
|
13
|
+
phoneColumnId: string | null;
|
|
13
14
|
}, action: PayloadAction<string>) => void;
|
|
14
15
|
setFocusedId: (state: {
|
|
15
16
|
query: string;
|
|
@@ -20,6 +21,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
|
|
|
20
21
|
columnId: string;
|
|
21
22
|
groupId: string | null;
|
|
22
23
|
} | null;
|
|
24
|
+
phoneColumnId: string | null;
|
|
23
25
|
}, action: PayloadAction<string | null>) => void;
|
|
24
26
|
toggleGroupCollapsed: (state: {
|
|
25
27
|
query: string;
|
|
@@ -30,6 +32,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
|
|
|
30
32
|
columnId: string;
|
|
31
33
|
groupId: string | null;
|
|
32
34
|
} | null;
|
|
35
|
+
phoneColumnId: string | null;
|
|
33
36
|
}, action: PayloadAction<string>) => void;
|
|
34
37
|
toggleColumnCollapsed: (state: {
|
|
35
38
|
query: string;
|
|
@@ -40,7 +43,19 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
|
|
|
40
43
|
columnId: string;
|
|
41
44
|
groupId: string | null;
|
|
42
45
|
} | null;
|
|
46
|
+
phoneColumnId: string | null;
|
|
43
47
|
}, action: PayloadAction<string>) => void;
|
|
48
|
+
setPhoneColumnId: (state: {
|
|
49
|
+
query: string;
|
|
50
|
+
focusedId: string | null;
|
|
51
|
+
collapsedGroupIds: string[];
|
|
52
|
+
collapsedColumnIds: string[];
|
|
53
|
+
composing: {
|
|
54
|
+
columnId: string;
|
|
55
|
+
groupId: string | null;
|
|
56
|
+
} | null;
|
|
57
|
+
phoneColumnId: string | null;
|
|
58
|
+
}, action: PayloadAction<string | null>) => void;
|
|
44
59
|
setComposing: (state: {
|
|
45
60
|
query: string;
|
|
46
61
|
focusedId: string | null;
|
|
@@ -50,6 +65,7 @@ export declare const kanbanSlice: import('@reduxjs/toolkit').Slice<KanbanChromeS
|
|
|
50
65
|
columnId: string;
|
|
51
66
|
groupId: string | null;
|
|
52
67
|
} | null;
|
|
68
|
+
phoneColumnId: string | null;
|
|
53
69
|
}, action: PayloadAction<KanbanChromeState["composing"]>) => void;
|
|
54
70
|
}, "kanban", "kanban", import('@reduxjs/toolkit').SliceSelectors<KanbanChromeState>>;
|
|
55
71
|
export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerActions<{
|
|
@@ -62,6 +78,7 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
|
|
|
62
78
|
columnId: string;
|
|
63
79
|
groupId: string | null;
|
|
64
80
|
} | null;
|
|
81
|
+
phoneColumnId: string | null;
|
|
65
82
|
}, action: PayloadAction<string>) => void;
|
|
66
83
|
setFocusedId: (state: {
|
|
67
84
|
query: string;
|
|
@@ -72,6 +89,7 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
|
|
|
72
89
|
columnId: string;
|
|
73
90
|
groupId: string | null;
|
|
74
91
|
} | null;
|
|
92
|
+
phoneColumnId: string | null;
|
|
75
93
|
}, action: PayloadAction<string | null>) => void;
|
|
76
94
|
toggleGroupCollapsed: (state: {
|
|
77
95
|
query: string;
|
|
@@ -82,6 +100,7 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
|
|
|
82
100
|
columnId: string;
|
|
83
101
|
groupId: string | null;
|
|
84
102
|
} | null;
|
|
103
|
+
phoneColumnId: string | null;
|
|
85
104
|
}, action: PayloadAction<string>) => void;
|
|
86
105
|
toggleColumnCollapsed: (state: {
|
|
87
106
|
query: string;
|
|
@@ -92,7 +111,19 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
|
|
|
92
111
|
columnId: string;
|
|
93
112
|
groupId: string | null;
|
|
94
113
|
} | null;
|
|
114
|
+
phoneColumnId: string | null;
|
|
95
115
|
}, action: PayloadAction<string>) => void;
|
|
116
|
+
setPhoneColumnId: (state: {
|
|
117
|
+
query: string;
|
|
118
|
+
focusedId: string | null;
|
|
119
|
+
collapsedGroupIds: string[];
|
|
120
|
+
collapsedColumnIds: string[];
|
|
121
|
+
composing: {
|
|
122
|
+
columnId: string;
|
|
123
|
+
groupId: string | null;
|
|
124
|
+
} | null;
|
|
125
|
+
phoneColumnId: string | null;
|
|
126
|
+
}, action: PayloadAction<string | null>) => void;
|
|
96
127
|
setComposing: (state: {
|
|
97
128
|
query: string;
|
|
98
129
|
focusedId: string | null;
|
|
@@ -102,5 +133,6 @@ export declare const kanbanActions: import('@reduxjs/toolkit').CaseReducerAction
|
|
|
102
133
|
columnId: string;
|
|
103
134
|
groupId: string | null;
|
|
104
135
|
} | null;
|
|
136
|
+
phoneColumnId: string | null;
|
|
105
137
|
}, action: PayloadAction<KanbanChromeState["composing"]>) => void;
|
|
106
138
|
}, "kanban">;
|
|
@@ -22,3 +22,12 @@ export declare function groupSections(column: KanbanColumn, items: Map<string, K
|
|
|
22
22
|
export declare function visibleItemIds(column: KanbanColumn, items: Map<string, KanbanItem>, query: string): string[];
|
|
23
23
|
export declare function wouldExceedWip(column: KanbanColumn, itemId: string): boolean;
|
|
24
24
|
export declare function moveKanbanItem(columns: KanbanColumn[], itemId: string, toColumnId: string, beforeId?: string): KanbanColumn[];
|
|
25
|
+
/** The column a phone shows: the asked one when it exists, else the first. */
|
|
26
|
+
export declare function resolvePhoneColumn(columns: {
|
|
27
|
+
id: string;
|
|
28
|
+
}[], asked: string | null | undefined): string | null;
|
|
29
|
+
/** The column that holds a card, so a phone can follow a card the keyboard moved. */
|
|
30
|
+
export declare function columnOfItem(columns: {
|
|
31
|
+
id: string;
|
|
32
|
+
itemIds: string[];
|
|
33
|
+
}[], itemId: string): string | undefined;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { KanbanItem } from '../types.js';
|
|
2
|
-
export declare function KanbanCardPreview({ item }: {
|
|
2
|
+
export declare function KanbanCardPreview({ item, columnId, onMoved, }: {
|
|
3
3
|
item: KanbanItem;
|
|
4
|
+
columnId: string;
|
|
5
|
+
onMoved: () => void;
|
|
4
6
|
}): import("react").JSX.Element;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { KanbanColumn as KanbanColumnType } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* One column. With phone tabs it is also the panel of its tab: every column
|
|
4
|
+
* stays mounted (the server and the client render the same markup), the
|
|
5
|
+
* panels of the other tabs are hidden below 768px by their `data-state`, and
|
|
6
|
+
* from 768px the panel wrapper disappears (`contents`) so the board is today's row of columns.
|
|
7
|
+
*/
|
|
2
8
|
export declare function KanbanColumn({ column }: {
|
|
3
9
|
column: KanbanColumnType;
|
|
4
10
|
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { KanbanItem } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The phone way to move a card: one button per other column, in the card's
|
|
4
|
+
* popover. Shown when the board itself is narrower than 768px (the width its
|
|
5
|
+
* one-column layout switches on, read from the board: the popover is portalled
|
|
6
|
+
* out of it, so a container query would not reach it) and has a phone layout;
|
|
7
|
+
* the arrow keys and drag keep working everywhere.
|
|
8
|
+
*/
|
|
9
|
+
export declare function KanbanMoveTo({ item, columnId, onMoved, }: {
|
|
10
|
+
item: KanbanItem;
|
|
11
|
+
columnId: string;
|
|
12
|
+
onMoved: () => void;
|
|
13
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* With `phoneLayout="tabs"`, the board's tab list (name and count of each
|
|
4
|
+
* column) and the tabs root its columns are panels of. The list is hidden
|
|
5
|
+
* from 768px up by a container query, so the server and the client render
|
|
6
|
+
* the same markup at every width. Any other layout renders `children` alone.
|
|
7
|
+
*/
|
|
8
|
+
export declare function KanbanPhoneTabs({ children }: {
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* How a board reads below 768px (its own width): `tabs` shows one column at
|
|
4
|
+
* a time under a tab list, `swipe` snaps full-width columns sideways, and
|
|
5
|
+
* `columns` (or unset) keeps the peeking columns.
|
|
6
|
+
*/
|
|
7
|
+
export type KanbanPhoneLayout = 'tabs' | 'swipe' | 'columns';
|
|
2
8
|
export type KanbanColumn = {
|
|
3
9
|
id: string;
|
|
4
10
|
title: string;
|
|
@@ -38,6 +44,7 @@ export type KanbanChromeState = {
|
|
|
38
44
|
columnId: string;
|
|
39
45
|
groupId: string | null;
|
|
40
46
|
} | null;
|
|
47
|
+
phoneColumnId: string | null;
|
|
41
48
|
};
|
|
42
49
|
export type KanbanAddDraft = {
|
|
43
50
|
title: string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { KeyboardEvent } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The board's arrow-key handler. With phone tabs, a focus or a move that
|
|
4
|
+
* lands in another column brings that column's tab forward, so the card the
|
|
5
|
+
* keys act on is always the one on screen.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useKanbanBoardKeys(): (event: KeyboardEvent<HTMLDivElement>) => void;
|
|
@@ -18,3 +18,8 @@ export declare function useKanbanUpdateItem({ disabled, items, itemsById, onItem
|
|
|
18
18
|
itemsById: Map<string, KanbanItem>;
|
|
19
19
|
onItemsChange?: (items: KanbanItem[]) => void;
|
|
20
20
|
}): (itemId: string, patch: Partial<KanbanItem>) => void;
|
|
21
|
+
export declare function useKanbanReorderColumns({ board, commit, disabled, }: {
|
|
22
|
+
board: KanbanColumn[];
|
|
23
|
+
commit: (next: KanbanColumn[]) => void;
|
|
24
|
+
disabled: boolean;
|
|
25
|
+
}): (activeId: string, overId: string) => void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KanbanChromeState, KanbanColumn } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The column a phone shows with `phoneLayout="tabs"`: controlled by
|
|
4
|
+
* `phoneColumn`, else kept in the chrome slice; the first column when the
|
|
5
|
+
* asked one does not exist.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useKanbanPhoneColumn({ board, chrome, chromeActions, phoneColumn, onPhoneColumnChange, }: {
|
|
8
|
+
board: KanbanColumn[];
|
|
9
|
+
chrome: KanbanChromeState;
|
|
10
|
+
chromeActions: {
|
|
11
|
+
setPhoneColumnId: (columnId: string | null) => void;
|
|
12
|
+
};
|
|
13
|
+
phoneColumn?: string;
|
|
14
|
+
onPhoneColumnChange?: (columnId: string) => void;
|
|
15
|
+
}): {
|
|
16
|
+
phoneColumnId: string | null;
|
|
17
|
+
setPhoneColumn: (columnId: string) => void;
|
|
18
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { KanbanChange, KanbanColumn, KanbanGroup, KanbanItem } from './types.js';
|
|
2
|
-
export declare function useKanban({ columns, defaultColumns, items, onColumnsChange, onItemsChange, onChange, groups, disabled, }: {
|
|
2
|
+
export declare function useKanban({ columns, defaultColumns, items, onColumnsChange, onItemsChange, onChange, groups, disabled, phoneColumn, onPhoneColumnChange, }: {
|
|
3
3
|
columns?: KanbanColumn[];
|
|
4
4
|
defaultColumns?: KanbanColumn[];
|
|
5
5
|
items: KanbanItem[];
|
|
@@ -8,6 +8,8 @@ export declare function useKanban({ columns, defaultColumns, items, onColumnsCha
|
|
|
8
8
|
onChange?: (change: KanbanChange) => void;
|
|
9
9
|
groups?: KanbanGroup[];
|
|
10
10
|
disabled?: boolean;
|
|
11
|
+
phoneColumn?: string;
|
|
12
|
+
onPhoneColumnChange?: (columnId: string) => void;
|
|
11
13
|
}): {
|
|
12
14
|
columns: KanbanColumn[];
|
|
13
15
|
itemsById: Map<string, KanbanItem>;
|
|
@@ -18,6 +20,7 @@ export declare function useKanban({ columns, defaultColumns, items, onColumnsCha
|
|
|
18
20
|
setFocusedId: (payload: string | null) => void;
|
|
19
21
|
toggleGroupCollapsed: (payload: string) => void;
|
|
20
22
|
toggleColumnCollapsed: (payload: string) => void;
|
|
23
|
+
setPhoneColumnId: (payload: string | null) => void;
|
|
21
24
|
setComposing: (payload: {
|
|
22
25
|
columnId: string;
|
|
23
26
|
groupId: string | null;
|
|
@@ -27,5 +30,7 @@ export declare function useKanban({ columns, defaultColumns, items, onColumnsCha
|
|
|
27
30
|
moveItem: (itemId: string, toColumnId: string, beforeId?: string, toGroupId?: string | null) => void;
|
|
28
31
|
updateItem: (itemId: string, patch: Partial<KanbanItem>) => void;
|
|
29
32
|
reorderColumns: (activeId: string, overId: string) => void;
|
|
33
|
+
phoneColumnId: string | null;
|
|
34
|
+
setPhoneColumn: (columnId: string) => void;
|
|
30
35
|
};
|
|
31
36
|
export type KanbanModel = ReturnType<typeof useKanban>;
|
|
@@ -1537,6 +1537,14 @@ export declare const en: {
|
|
|
1537
1537
|
badge: string;
|
|
1538
1538
|
"badge-dot": string;
|
|
1539
1539
|
};
|
|
1540
|
+
"app-header": {
|
|
1541
|
+
back: string;
|
|
1542
|
+
"back-to": string;
|
|
1543
|
+
search: string;
|
|
1544
|
+
"search-close": string;
|
|
1545
|
+
"search-results": string;
|
|
1546
|
+
"result-count": string;
|
|
1547
|
+
};
|
|
1540
1548
|
"account-menu": {
|
|
1541
1549
|
trigger: string;
|
|
1542
1550
|
"sign-out": string;
|
|
@@ -2037,6 +2045,8 @@ export declare const en: {
|
|
|
2037
2045
|
"card-title": string;
|
|
2038
2046
|
subtitle: string;
|
|
2039
2047
|
"wip-full": string;
|
|
2048
|
+
"phone-tabs": string;
|
|
2049
|
+
"move-to": string;
|
|
2040
2050
|
};
|
|
2041
2051
|
doc: {
|
|
2042
2052
|
search: string;
|
|
@@ -2052,6 +2062,7 @@ export declare const en: {
|
|
|
2052
2062
|
"on-this-page": string;
|
|
2053
2063
|
menu: string;
|
|
2054
2064
|
"menu-description": string;
|
|
2065
|
+
browse: string;
|
|
2055
2066
|
previous: string;
|
|
2056
2067
|
next: string;
|
|
2057
2068
|
"see-also": string;
|
|
@@ -3027,6 +3038,9 @@ export declare const en: {
|
|
|
3027
3038
|
};
|
|
3028
3039
|
"list-details": {
|
|
3029
3040
|
back: string;
|
|
3041
|
+
"inspector-back": string;
|
|
3042
|
+
"inspector-close": string;
|
|
3043
|
+
resize: string;
|
|
3030
3044
|
};
|
|
3031
3045
|
switcher: {
|
|
3032
3046
|
search: string;
|
|
@@ -3469,5 +3483,41 @@ export declare const en: {
|
|
|
3469
3483
|
"delete-description": string;
|
|
3470
3484
|
"delete-confirm": string;
|
|
3471
3485
|
};
|
|
3486
|
+
navigation: {
|
|
3487
|
+
more: string;
|
|
3488
|
+
close: string;
|
|
3489
|
+
steps: string;
|
|
3490
|
+
"rail-toggle": string;
|
|
3491
|
+
"panel-collapse": string;
|
|
3492
|
+
"panel-expand": string;
|
|
3493
|
+
};
|
|
3494
|
+
dashboard: {
|
|
3495
|
+
edit: string;
|
|
3496
|
+
done: string;
|
|
3497
|
+
hint: string;
|
|
3498
|
+
move: string;
|
|
3499
|
+
"move-up": string;
|
|
3500
|
+
"move-down": string;
|
|
3501
|
+
grabbed: string;
|
|
3502
|
+
moved: string;
|
|
3503
|
+
dropped: string;
|
|
3504
|
+
cancelled: string;
|
|
3505
|
+
};
|
|
3506
|
+
"editor-layout": {
|
|
3507
|
+
toolbar: string;
|
|
3508
|
+
canvas: string;
|
|
3509
|
+
start: string;
|
|
3510
|
+
properties: string;
|
|
3511
|
+
};
|
|
3512
|
+
"settings-layout": {
|
|
3513
|
+
title: string;
|
|
3514
|
+
search: string;
|
|
3515
|
+
empty: string;
|
|
3516
|
+
};
|
|
3517
|
+
landing: {
|
|
3518
|
+
menu: string;
|
|
3519
|
+
footer: string;
|
|
3520
|
+
"new-tab": string;
|
|
3521
|
+
};
|
|
3472
3522
|
};
|
|
3473
3523
|
};
|