@ds-mo/ui 12.2.0 → 12.4.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/README.md +8 -2
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +94 -16
- package/dist/agent.json +1092 -53
- package/dist/angular/ds-bar-title.d.ts +7 -1
- package/dist/angular/ds-bar-title.js +7 -4
- package/dist/angular/ds-breadcrumb.d.ts +19 -0
- package/dist/angular/ds-breadcrumb.js +42 -0
- package/dist/angular/ds-card-data-viz-bar.d.ts +18 -0
- package/dist/angular/ds-card-data-viz-bar.js +42 -0
- package/dist/angular/ds-card-data-viz-line.d.ts +18 -0
- package/dist/angular/ds-card-data-viz-line.js +42 -0
- package/dist/angular/ds-chart-bar-stacked.d.ts +12 -0
- package/dist/angular/ds-chart-bar-stacked.js +38 -0
- package/dist/angular/ds-chart-legend.d.ts +1 -1
- package/dist/angular/ds-chart-legend.js +3 -3
- package/dist/angular/ds-shell-app.d.ts +13 -2
- package/dist/angular/ds-shell-app.js +9 -5
- package/dist/angular/ds-shell-mobile-bar.d.ts +18 -0
- package/dist/angular/ds-shell-mobile-bar.js +46 -0
- package/dist/angular/ds-shell-mobile-nav.d.ts +23 -0
- package/dist/angular/ds-shell-mobile-nav.js +51 -0
- package/dist/angular/ds-shell-mobile-section-nav.d.ts +18 -0
- package/dist/angular/ds-shell-mobile-section-nav.js +42 -0
- package/dist/angular/ds-shell-page.d.ts +1 -1
- package/dist/angular/ds-shell-page.js +3 -3
- package/dist/angular/ds-shell-tools.d.ts +42 -0
- package/dist/angular/ds-shell-tools.js +52 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +8 -0
- package/dist/angular/proxies.d.ts +8 -0
- package/dist/angular/proxies.js +8 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-title.js.map +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.d.ts +11 -0
- package/dist/components/ds-breadcrumb.js +2 -0
- package/dist/components/ds-breadcrumb.js.map +1 -0
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-data-viz-bar.d.ts +11 -0
- package/dist/components/ds-card-data-viz-bar.js +2 -0
- package/dist/components/ds-card-data-viz-bar.js.map +1 -0
- package/dist/components/ds-card-data-viz-donut.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js.map +1 -1
- package/dist/components/ds-card-data-viz-line.d.ts +11 -0
- package/dist/components/ds-card-data-viz-line.js +2 -0
- package/dist/components/ds-card-data-viz-line.js.map +1 -0
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-card-shell-data-viz.js +1 -1
- package/dist/components/ds-chart-bar-stacked.d.ts +11 -0
- package/dist/components/ds-chart-bar-stacked.js +2 -0
- package/dist/components/ds-chart-bar-stacked.js.map +1 -0
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-bar.js.map +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart-line.js +1 -1
- package/dist/components/ds-chart-line.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-bubble.js.map +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-modal.js.map +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-panel-tools.js.map +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-scroll-overlay.js.map +1 -1
- package/dist/components/ds-select-multi.js +1 -1
- package/dist/components/ds-select-multi.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-picker.js.map +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-shell-mobile-bar.d.ts +11 -0
- package/dist/components/ds-shell-mobile-bar.js +2 -0
- package/dist/components/ds-shell-mobile-bar.js.map +1 -0
- package/dist/components/ds-shell-mobile-nav.d.ts +11 -0
- package/dist/components/ds-shell-mobile-nav.js +2 -0
- package/dist/components/ds-shell-mobile-nav.js.map +1 -0
- package/dist/components/ds-shell-mobile-section-nav.d.ts +11 -0
- package/dist/components/ds-shell-mobile-section-nav.js +2 -0
- package/dist/components/ds-shell-mobile-section-nav.js.map +1 -0
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-page.js.map +1 -1
- package/dist/components/ds-shell-tools.d.ts +11 -0
- package/dist/components/ds-shell-tools.js +2 -0
- package/dist/components/ds-shell-tools.js.map +1 -0
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tab-group.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-toast.js.map +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/ds-typing-indicator.js.map +1 -1
- package/dist/components/{p-DcGpdIlT.js → p-9dQQSgwT.js} +2 -2
- package/dist/components/p-B3rbhRAk.js +2 -0
- package/dist/components/p-B3rbhRAk.js.map +1 -0
- package/dist/components/p-B6Vuayt6.js +2 -0
- package/dist/components/p-B6Vuayt6.js.map +1 -0
- package/dist/components/{p-BWUTr_XN.js → p-BJMRBHKW.js} +2 -2
- package/dist/components/p-BJMRBHKW.js.map +1 -0
- package/dist/components/p-BPS9VExm.js +2 -0
- package/dist/components/{p-CCHqsF_H.js.map → p-BPS9VExm.js.map} +1 -1
- package/dist/components/p-BVV_rlIP.js +2 -0
- package/dist/components/p-BVV_rlIP.js.map +1 -0
- package/dist/components/{p-GMDGgtY8.js → p-BhxwpOH8.js} +2 -2
- package/dist/components/{p-2W-ZjZCR.js → p-Biz6xo-z.js} +2 -2
- package/dist/components/p-BrusnEYP.js +2 -0
- package/dist/components/p-BrusnEYP.js.map +1 -0
- package/dist/components/{p-CG5EX4NW.js → p-BtEjlcB9.js} +2 -2
- package/dist/components/{p-C0_8K4y7.js → p-BwGnhInj.js} +2 -2
- package/dist/components/p-BwGnhInj.js.map +1 -0
- package/dist/components/{p-D6jK2Hyi.js → p-C7bZ-jiU.js} +2 -2
- package/dist/components/p-CH3w-P2H.js +2 -0
- package/dist/components/p-CH3w-P2H.js.map +1 -0
- package/dist/components/{p-DOCKtrS4.js → p-CH6cNXXF.js} +2 -2
- package/dist/components/{p-BE_CDJeL.js → p-CY19gMiz.js} +2 -2
- package/dist/components/p-C_0Q8Cnp.js +2 -0
- package/dist/components/{p-Dg3xLna0.js.map → p-C_0Q8Cnp.js.map} +1 -1
- package/dist/components/p-C_ewSXTT.js +2 -0
- package/dist/components/p-C_ewSXTT.js.map +1 -0
- package/dist/components/{p-CHkI3oIS.js → p-Ce52yVXF.js} +2 -2
- package/dist/components/p-CgHTNfC1.js +2 -0
- package/dist/components/p-CgHTNfC1.js.map +1 -0
- package/dist/components/p-Co8hD3P-.js +2 -0
- package/dist/components/{p-Cxpl-rzP.js.map → p-Co8hD3P-.js.map} +1 -1
- package/dist/components/{p-xY3TjBF5.js → p-CoYFJD-w.js} +2 -2
- package/dist/components/{p-DBi1bmOL.js → p-CtD24EyI.js} +2 -2
- package/dist/components/{p-BRLDJmkh.js → p-D-xttdpn.js} +2 -2
- package/dist/components/{p-CNffejay.js → p-DSa0Hnd3.js} +2 -2
- package/dist/components/p-DXewjzkM.js +2 -0
- package/dist/components/p-DXewjzkM.js.map +1 -0
- package/dist/components/p-DXnFhmZF.js +2 -0
- package/dist/components/{p-BpA9uYKX.js.map → p-DXnFhmZF.js.map} +1 -1
- package/dist/components/{p-DyGB97Oy.js → p-DYqReipj.js} +2 -2
- package/dist/components/{p-ky1msbJ8.js → p-DjPZxzIG.js} +2 -2
- package/dist/components/{p-ky1msbJ8.js.map → p-DjPZxzIG.js.map} +1 -1
- package/dist/components/p-NUNsefU1.js +2 -0
- package/dist/components/{p-8OOCLGph.js.map → p-NUNsefU1.js.map} +1 -1
- package/dist/components/p-PZ6R_nGI.js +2 -0
- package/dist/components/p-PZ6R_nGI.js.map +1 -0
- package/dist/components/{p-B8CubPgQ.js → p-g40DTeV8.js} +2 -2
- package/dist/components/p-jCWtxthA.js +2 -0
- package/dist/components/{p-XgIQ3oI_.js.map → p-jCWtxthA.js.map} +1 -1
- package/dist/components/p-yhj1lIPx.js +2 -0
- package/dist/components/p-yhj1lIPx.js.map +1 -0
- package/dist/docs/components.json +8860 -6021
- package/dist/lib/components/BarNav/bar-nav-types.d.ts +2 -0
- package/dist/lib/components/PanelNav/panel-nav-types.d.ts +29 -0
- package/dist/lib/components/PanelTools/panel-tools-types.d.ts +40 -0
- package/dist/lib/components/TabGroup/tab-item-utils.d.ts +31 -0
- package/dist/lib/shell/index.d.ts +5 -0
- package/dist/lib/shell/index.js +36 -0
- package/dist/lib/shell/index.js.map +3 -3
- package/dist/lib/shell/shell-responsive.d.ts +13 -0
- package/dist/lib/utils/index.js +3 -1
- package/dist/lib/utils/index.js.map +2 -2
- package/dist/mcp/cli.js +142 -18
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +68 -14
- package/dist/mcp-data/registry/breadcrumb.json +205 -0
- package/dist/mcp-data/registry/card-data-viz-bar.json +212 -0
- package/dist/mcp-data/registry/card-data-viz-line.json +206 -0
- package/dist/mcp-data/registry/card-shell-data-viz.json +7 -0
- package/dist/mcp-data/registry/chart-bar-stacked.json +225 -0
- package/dist/mcp-data/registry/chart-bar.json +9 -2
- package/dist/mcp-data/registry/chart-legend.json +29 -3
- package/dist/mcp-data/registry/chart-line.json +4 -2
- package/dist/mcp-data/registry/conversation-list-item.json +3 -3
- package/dist/mcp-data/registry/message-scroller.json +4 -2
- package/dist/mcp-data/registry/message.json +3 -2
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/registry.json +1107 -44
- package/dist/mcp-data/registry/shell-app.json +71 -11
- package/dist/mcp-data/registry/shell-mobile-bar.json +314 -0
- package/dist/mcp-data/registry/shell-mobile-nav.json +348 -0
- package/dist/mcp-data/registry/shell-mobile-section-nav.json +267 -0
- package/dist/mcp-data/registry/shell-page.json +31 -13
- package/dist/mcp-data/registry/shell-tools.json +450 -0
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +7 -7
- package/dist/react/components.d.ts +8 -0
- package/dist/react/components.js +8 -0
- package/dist/react/ds-bar-title.d.ts +2 -1
- package/dist/react/ds-bar-title.js +1 -0
- package/dist/react/ds-breadcrumb.d.ts +12 -0
- package/dist/react/ds-breadcrumb.js +12 -0
- package/dist/react/ds-card-data-viz-bar.d.ts +12 -0
- package/dist/react/ds-card-data-viz-bar.js +12 -0
- package/dist/react/ds-card-data-viz-line.d.ts +12 -0
- package/dist/react/ds-card-data-viz-line.js +12 -0
- package/dist/react/ds-chart-bar-stacked.d.ts +9 -0
- package/dist/react/ds-chart-bar-stacked.js +12 -0
- package/dist/react/ds-shell-app.d.ts +7 -2
- package/dist/react/ds-shell-app.js +1 -1
- package/dist/react/ds-shell-mobile-bar.d.ts +13 -0
- package/dist/react/ds-shell-mobile-bar.js +15 -0
- package/dist/react/ds-shell-mobile-nav.d.ts +15 -0
- package/dist/react/ds-shell-mobile-nav.js +17 -0
- package/dist/react/ds-shell-mobile-section-nav.d.ts +12 -0
- package/dist/react/ds-shell-mobile-section-nav.js +12 -0
- package/dist/react/ds-shell-tools.d.ts +25 -0
- package/dist/react/ds-shell-tools.js +17 -0
- package/dist/styles/prose.css +1 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +13 -1
- package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +31 -0
- package/dist/types/components/Breadcrumb/breadcrumb-types.d.ts +17 -0
- package/dist/types/components/CardDataVizBar/CardDataVizBar.d.ts +24 -0
- package/dist/types/components/CardDataVizBar/index.d.ts +2 -0
- package/dist/types/components/CardDataVizLine/CardDataVizLine.d.ts +24 -0
- package/dist/types/components/CardDataVizLine/index.d.ts +2 -0
- package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +15 -0
- package/dist/types/components/ChartBarStacked/index.d.ts +3 -0
- package/dist/types/components/ChartLegend/ChartLegend.d.ts +3 -0
- package/dist/types/components/ShellApp/ShellApp.d.ts +16 -0
- package/dist/types/components/ShellMobileBar/ShellMobileBar.d.ts +25 -0
- package/dist/types/components/ShellMobileBar/index.d.ts +4 -0
- package/dist/types/components/ShellMobileBar/shell-mobile-bar-types.d.ts +5 -0
- package/dist/types/components/ShellMobileNav/ShellMobileNav.d.ts +32 -0
- package/dist/types/components/ShellMobileNav/index.d.ts +2 -0
- package/dist/types/components/ShellMobileNav/shell-mobile-nav-types.d.ts +6 -0
- package/dist/types/components/ShellMobileSectionNav/ShellMobileSectionNav.d.ts +30 -0
- package/dist/types/components/ShellMobileSectionNav/index.d.ts +2 -0
- package/dist/types/components/ShellPage/ShellPage.d.ts +19 -7
- package/dist/types/components/ShellPage/shell-page-responsive.d.ts +0 -8
- package/dist/types/components/ShellTools/ShellTools.d.ts +61 -0
- package/dist/types/components/ShellTools/index.d.ts +3 -0
- package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +1 -1
- package/dist/types/components.d.ts +953 -19
- package/dist/types/shell/index.d.ts +5 -0
- package/dist/types/shell/shell-responsive.d.ts +14 -0
- package/package.json +1 -1
- package/dist/components/p-8OOCLGph.js +0 -2
- package/dist/components/p-BWUTr_XN.js.map +0 -1
- package/dist/components/p-BpA9uYKX.js +0 -2
- package/dist/components/p-C0_8K4y7.js.map +0 -1
- package/dist/components/p-CA3kLO7K.js +0 -2
- package/dist/components/p-CA3kLO7K.js.map +0 -1
- package/dist/components/p-CCHqsF_H.js +0 -2
- package/dist/components/p-Cxpl-rzP.js +0 -2
- package/dist/components/p-CzBnvtcz.js +0 -2
- package/dist/components/p-CzBnvtcz.js.map +0 -1
- package/dist/components/p-Dg3xLna0.js +0 -2
- package/dist/components/p-XgIQ3oI_.js +0 -2
- /package/dist/components/{p-DcGpdIlT.js.map → p-9dQQSgwT.js.map} +0 -0
- /package/dist/components/{p-GMDGgtY8.js.map → p-BhxwpOH8.js.map} +0 -0
- /package/dist/components/{p-2W-ZjZCR.js.map → p-Biz6xo-z.js.map} +0 -0
- /package/dist/components/{p-CG5EX4NW.js.map → p-BtEjlcB9.js.map} +0 -0
- /package/dist/components/{p-D6jK2Hyi.js.map → p-C7bZ-jiU.js.map} +0 -0
- /package/dist/components/{p-DOCKtrS4.js.map → p-CH6cNXXF.js.map} +0 -0
- /package/dist/components/{p-BE_CDJeL.js.map → p-CY19gMiz.js.map} +0 -0
- /package/dist/components/{p-CHkI3oIS.js.map → p-Ce52yVXF.js.map} +0 -0
- /package/dist/components/{p-xY3TjBF5.js.map → p-CoYFJD-w.js.map} +0 -0
- /package/dist/components/{p-DBi1bmOL.js.map → p-CtD24EyI.js.map} +0 -0
- /package/dist/components/{p-BRLDJmkh.js.map → p-D-xttdpn.js.map} +0 -0
- /package/dist/components/{p-CNffejay.js.map → p-DSa0Hnd3.js.map} +0 -0
- /package/dist/components/{p-DyGB97Oy.js.map → p-DYqReipj.js.map} +0 -0
- /package/dist/components/{p-B8CubPgQ.js.map → p-g40DTeV8.js.map} +0 -0
package/dist/agent.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@ds-mo/ui",
|
|
4
|
-
"packageVersion": "12.
|
|
4
|
+
"packageVersion": "12.4.0",
|
|
5
5
|
"kind": "components",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -777,16 +777,16 @@
|
|
|
777
777
|
"tag": "ds-bar-title",
|
|
778
778
|
"name": "bar-title",
|
|
779
779
|
"title": "BarTitle",
|
|
780
|
-
"summary": "Page-level title chrome with optional route
|
|
780
|
+
"summary": "Page-level title chrome with an optional expanded route breadcrumb, compact Back action, supporting description, inline active-section menu, one primary action, grouped overflow actions, and explicit expanded, compact, or constrained variants.",
|
|
781
781
|
"intentStatus": "complete",
|
|
782
782
|
"intent": {
|
|
783
783
|
"audience": "general",
|
|
784
784
|
"status": "stable",
|
|
785
|
-
"summary": "Page-level title chrome with optional route
|
|
785
|
+
"summary": "Page-level title chrome with an optional expanded route breadcrumb, compact Back action, supporting description, inline active-section menu, one primary action, grouped overflow actions, and explicit expanded, compact, or constrained variants.",
|
|
786
786
|
"useWhen": [
|
|
787
787
|
"A top-level page needs one h1 above its content.",
|
|
788
788
|
"A list or detail page has multiple route-level sections that belong in the inline active-section menu.",
|
|
789
|
-
"A detail page needs a page-level Back action.",
|
|
789
|
+
"A detail page needs route ancestors in expanded presentation and a page-level Back action in compact chrome.",
|
|
790
790
|
"A page needs one primary action plus optional secondary or destructive overflow commands."
|
|
791
791
|
],
|
|
792
792
|
"avoidWhen": [
|
|
@@ -817,6 +817,7 @@
|
|
|
817
817
|
"component:ds-shell-page",
|
|
818
818
|
"component:ds-button-filled",
|
|
819
819
|
"component:ds-button-unfilled",
|
|
820
|
+
"component:ds-breadcrumb",
|
|
820
821
|
"component:ds-menu",
|
|
821
822
|
"component:ds-text"
|
|
822
823
|
],
|
|
@@ -825,7 +826,8 @@
|
|
|
825
826
|
],
|
|
826
827
|
"accessibility": [
|
|
827
828
|
"Provide one concise heading; BarTitle renders exactly one h1 and changes only its visual recipe between variants.",
|
|
828
|
-
"Give Back a destination-specific accessible name such as Back to Drivers
|
|
829
|
+
"Give compact Back a destination-specific accessible name such as Back to Drivers and handle dsBack in the route owner.",
|
|
830
|
+
"Provide ordered breadcrumb items for deeper expanded paths and handle dsBreadcrumbSelect when native href navigation is not used; backLabel remains the single-parent expanded fallback.",
|
|
829
831
|
"Keep value synchronized with the current child route; dsSectionChange returns the selected section id.",
|
|
830
832
|
"Section and overflow triggers expose menu relationships and restore focus after selection or dismissal.",
|
|
831
833
|
"Use one filled primary action in the page decision area and mark destructive overflow actions explicitly."
|
|
@@ -834,7 +836,8 @@
|
|
|
834
836
|
"Omitting Back, sections, primaryAction, and actions produces the top-level title-only header.",
|
|
835
837
|
"Two or more selectable sections add the inline section trigger; one section does not render a redundant menu.",
|
|
836
838
|
"Dividers in sections or actions create separate Menu groups without becoming selectable rows.",
|
|
837
|
-
"
|
|
839
|
+
"The overflow trigger uses its bordered treatment whenever the primary action is visible beside it; overflow-only and auto-collapsed-primary presentations keep the trigger borderless.",
|
|
840
|
+
"expanded renders the larger heading, optional description, inset divider, and a full-width caption breadcrumb row above the title. The breadcrumb begins after 32px top padding; the following title and right-side actions share one top alignment. Compact renders 48px chrome with the existing icon Back action; constrained uses compact chrome and moves an auto-collapse primary action into overflow.",
|
|
838
841
|
"primaryAction collapse defaults to auto. Use never for exceptional actions whose hierarchy must remain visible in constrained layouts."
|
|
839
842
|
],
|
|
840
843
|
"responsiveBehavior": [
|
|
@@ -845,15 +848,15 @@
|
|
|
845
848
|
],
|
|
846
849
|
"frameworkCaveats": {
|
|
847
850
|
"customElements": [
|
|
848
|
-
"Assign sections, primaryAction, and actions as JavaScript properties and replace array or object identities when controlled state changes.",
|
|
849
|
-
"Handle dsBack
|
|
851
|
+
"Assign breadcrumbs, sections, primaryAction, and actions as JavaScript properties and replace array or object identities when controlled state changes.",
|
|
852
|
+
"Handle dsBack for compact navigation and dsBreadcrumbSelect for application-owned expanded breadcrumb navigation, update value after dsSectionChange, and execute product commands from dsAction."
|
|
850
853
|
],
|
|
851
854
|
"react": [
|
|
852
|
-
"Pass
|
|
855
|
+
"Pass breadcrumb, section, and action arrays directly to DsBarTitle and keep value controlled from route state.",
|
|
853
856
|
"Place DsBarTitle in DsShellPage with slot=header when automatic page behavior is required."
|
|
854
857
|
],
|
|
855
858
|
"angular": [
|
|
856
|
-
"Bind complex values on the standalone DsBarTitle adapter and handle
|
|
859
|
+
"Bind complex values on the standalone DsBarTitle adapter and handle Back, breadcrumb, section, and action intent events in the route shell.",
|
|
857
860
|
"Place ds-bar-title in ds-shell-page with slot=header; do not render router-outlet inside BarTitle."
|
|
858
861
|
]
|
|
859
862
|
},
|
|
@@ -890,6 +893,14 @@
|
|
|
890
893
|
"type": "string",
|
|
891
894
|
"required": false
|
|
892
895
|
},
|
|
896
|
+
"breadcrumbAriaLabel": {
|
|
897
|
+
"type": "string",
|
|
898
|
+
"required": false
|
|
899
|
+
},
|
|
900
|
+
"breadcrumbs": {
|
|
901
|
+
"type": "BreadcrumbItem[]",
|
|
902
|
+
"required": false
|
|
903
|
+
},
|
|
893
904
|
"description": {
|
|
894
905
|
"type": "string",
|
|
895
906
|
"required": false
|
|
@@ -932,6 +943,10 @@
|
|
|
932
943
|
"name": "dsBack",
|
|
933
944
|
"detail": "MouseEvent"
|
|
934
945
|
},
|
|
946
|
+
{
|
|
947
|
+
"name": "dsBreadcrumbSelect",
|
|
948
|
+
"detail": "BreadcrumbSelectDetail"
|
|
949
|
+
},
|
|
935
950
|
{
|
|
936
951
|
"name": "dsSectionChange",
|
|
937
952
|
"detail": "string"
|
|
@@ -950,6 +965,7 @@
|
|
|
950
965
|
"@ds-mo/icons"
|
|
951
966
|
],
|
|
952
967
|
"componentDependencies": [
|
|
968
|
+
"breadcrumb",
|
|
953
969
|
"button-filled",
|
|
954
970
|
"button-unfilled",
|
|
955
971
|
"icon",
|
|
@@ -1116,6 +1132,119 @@
|
|
|
1116
1132
|
"tooltip"
|
|
1117
1133
|
]
|
|
1118
1134
|
},
|
|
1135
|
+
{
|
|
1136
|
+
"id": "component:ds-breadcrumb",
|
|
1137
|
+
"tag": "ds-breadcrumb",
|
|
1138
|
+
"name": "breadcrumb",
|
|
1139
|
+
"title": "Breadcrumb",
|
|
1140
|
+
"summary": "Compact hierarchical page navigation with native links or application-owned selection, optional current-page semantics, and slash separators.",
|
|
1141
|
+
"intentStatus": "complete",
|
|
1142
|
+
"intent": {
|
|
1143
|
+
"audience": "general",
|
|
1144
|
+
"status": "stable",
|
|
1145
|
+
"summary": "Compact hierarchical page navigation with native links or application-owned selection, optional current-page semantics, and slash separators.",
|
|
1146
|
+
"useWhen": [
|
|
1147
|
+
"A page needs to expose its hierarchical ancestors above the current page title.",
|
|
1148
|
+
"Users need to move directly to a broader page in the current route hierarchy.",
|
|
1149
|
+
"BarTitle expanded presentation needs an ancestor path instead of a directional Back button."
|
|
1150
|
+
],
|
|
1151
|
+
"avoidWhen": [
|
|
1152
|
+
"The navigation represents primary application destinations; use PanelNav or BarNav.",
|
|
1153
|
+
"The choices switch peer views within the current page; use TabGroup or the BarTitle section selector.",
|
|
1154
|
+
"Only a directional return command is needed in compact chrome; use the owning header's Back action.",
|
|
1155
|
+
"The path would repeat the same current-page label already communicated by a nearby h1 without adding useful ancestors."
|
|
1156
|
+
],
|
|
1157
|
+
"alternatives": [
|
|
1158
|
+
{
|
|
1159
|
+
"when": "The title and breadcrumb belong to responsive page chrome with page-level actions.",
|
|
1160
|
+
"component": "component:ds-bar-title",
|
|
1161
|
+
"reason": "BarTitle composes Breadcrumb in expanded mode and preserves compact Back behavior."
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
"when": "A small set of peer content views should remain directly selectable.",
|
|
1165
|
+
"component": "component:ds-tab-group",
|
|
1166
|
+
"reason": "TabGroup communicates peer selection rather than route ancestry."
|
|
1167
|
+
}
|
|
1168
|
+
],
|
|
1169
|
+
"commonlyComposedWith": [
|
|
1170
|
+
"component:ds-bar-title",
|
|
1171
|
+
"component:ds-text",
|
|
1172
|
+
"component:ds-shell-page"
|
|
1173
|
+
],
|
|
1174
|
+
"accessibility": [
|
|
1175
|
+
"The component renders a named navigation landmark containing an ordered list.",
|
|
1176
|
+
"Provide href for native navigation or handle dsSelect when the application router owns navigation.",
|
|
1177
|
+
"Mark at most one item current; it renders without interaction and exposes aria-current=page.",
|
|
1178
|
+
"Visible caption labels use secondary foreground and slash separators are decorative and hidden from assistive technology.",
|
|
1179
|
+
"Every interactive item remains keyboard reachable and receives the shared focus ring."
|
|
1180
|
+
],
|
|
1181
|
+
"states": [
|
|
1182
|
+
"Items with href render native anchors; items without href render buttons and emit the same dsSelect detail.",
|
|
1183
|
+
"Preventing dsSelect cancels native anchor navigation.",
|
|
1184
|
+
"A current item is static text and never emits selection.",
|
|
1185
|
+
"Links have no resting underline and add a quaternary-foreground solid underline on hover; focus remains communicated by the shared focus ring."
|
|
1186
|
+
],
|
|
1187
|
+
"responsiveBehavior": [
|
|
1188
|
+
"The path stays on one caption line and truncates long labels within the available width.",
|
|
1189
|
+
"Width is protected newest-to-oldest: the oldest ancestor collapses to a literal ellipsis before the next ancestor yields width, and the current location truncates only after every ancestor reaches its minimum.",
|
|
1190
|
+
"A fully collapsed item keeps its complete label available to assistive technology while rendering only the literal ellipsis visually.",
|
|
1191
|
+
"Separators remain visible while labels yield width."
|
|
1192
|
+
],
|
|
1193
|
+
"frameworkCaveats": {
|
|
1194
|
+
"customElements": [
|
|
1195
|
+
"Assign items as a JavaScript property and replace its array identity when the route changes.",
|
|
1196
|
+
"Use relative or absolute href values for native navigation; omit href when the host router handles dsSelect."
|
|
1197
|
+
],
|
|
1198
|
+
"react": [
|
|
1199
|
+
"Pass items to DsBreadcrumb and handle onDsSelect when navigation is application-owned."
|
|
1200
|
+
],
|
|
1201
|
+
"angular": [
|
|
1202
|
+
"Bind items on the standalone DsBreadcrumb adapter and handle dsSelect when navigation is application-owned."
|
|
1203
|
+
]
|
|
1204
|
+
},
|
|
1205
|
+
"references": [
|
|
1206
|
+
{
|
|
1207
|
+
"label": "Storybook examples",
|
|
1208
|
+
"path": "src/wc/components/Breadcrumb/Breadcrumb.stories.ts"
|
|
1209
|
+
},
|
|
1210
|
+
{
|
|
1211
|
+
"label": "Expanded page-header composition",
|
|
1212
|
+
"path": "src/wc/components/BarTitle/BarTitle.tsx"
|
|
1213
|
+
}
|
|
1214
|
+
]
|
|
1215
|
+
},
|
|
1216
|
+
"api": {
|
|
1217
|
+
"props": {
|
|
1218
|
+
"ariaLabel": {
|
|
1219
|
+
"type": "string",
|
|
1220
|
+
"required": false
|
|
1221
|
+
},
|
|
1222
|
+
"items": {
|
|
1223
|
+
"type": "BreadcrumbItem[]",
|
|
1224
|
+
"required": false
|
|
1225
|
+
}
|
|
1226
|
+
},
|
|
1227
|
+
"events": [
|
|
1228
|
+
{
|
|
1229
|
+
"name": "dsSelect",
|
|
1230
|
+
"detail": "BreadcrumbSelectDetail"
|
|
1231
|
+
}
|
|
1232
|
+
],
|
|
1233
|
+
"slots": []
|
|
1234
|
+
},
|
|
1235
|
+
"exports": {
|
|
1236
|
+
"customElement": "ds-breadcrumb",
|
|
1237
|
+
"react": "DsBreadcrumb",
|
|
1238
|
+
"angular": "DsBreadcrumb"
|
|
1239
|
+
},
|
|
1240
|
+
"dependencies": [
|
|
1241
|
+
"@ds-mo/ui",
|
|
1242
|
+
"@ds-mo/tokens"
|
|
1243
|
+
],
|
|
1244
|
+
"componentDependencies": [
|
|
1245
|
+
"text"
|
|
1246
|
+
]
|
|
1247
|
+
},
|
|
1119
1248
|
{
|
|
1120
1249
|
"id": "component:ds-button-filled",
|
|
1121
1250
|
"tag": "ds-button-filled",
|
|
@@ -1475,6 +1604,120 @@
|
|
|
1475
1604
|
"text"
|
|
1476
1605
|
]
|
|
1477
1606
|
},
|
|
1607
|
+
{
|
|
1608
|
+
"id": "component:ds-card-data-viz-bar",
|
|
1609
|
+
"tag": "ds-card-data-viz-bar",
|
|
1610
|
+
"name": "card-data-viz-bar",
|
|
1611
|
+
"title": "CardDataVizBar",
|
|
1612
|
+
"summary": "Canonical bar-chart dashboard card with shared data-viz chrome, a filter action, a fill chart region, and an optional static legend.",
|
|
1613
|
+
"intentStatus": "complete",
|
|
1614
|
+
"intent": {
|
|
1615
|
+
"audience": "specialized",
|
|
1616
|
+
"status": "experimental",
|
|
1617
|
+
"summary": "Canonical bar-chart dashboard card with shared data-viz chrome, a filter action, a fill chart region, and an optional static legend.",
|
|
1618
|
+
"useWhen": [
|
|
1619
|
+
"A dashboard widget needs a regular, stacked, or percentage bar chart in the standard data-viz card.",
|
|
1620
|
+
"A stacked bar chart needs a visible static series key beneath the chart."
|
|
1621
|
+
],
|
|
1622
|
+
"avoidWhen": [
|
|
1623
|
+
"The visualization needs selectable legend rows or chart-to-legend hover synchronization.",
|
|
1624
|
+
"The product needs supporting metrics or an alternate chart layout beyond the chart and optional legend."
|
|
1625
|
+
],
|
|
1626
|
+
"alternatives": [
|
|
1627
|
+
{
|
|
1628
|
+
"when": "The bar chart needs a custom layout without card chrome.",
|
|
1629
|
+
"component": "component:ds-chart-bar",
|
|
1630
|
+
"reason": "Compose ChartBar directly in the product-owned layout."
|
|
1631
|
+
},
|
|
1632
|
+
{
|
|
1633
|
+
"when": "The visualization communicates change as continuous lines.",
|
|
1634
|
+
"component": "component:ds-card-data-viz-line",
|
|
1635
|
+
"reason": "CardDataVizLine owns the canonical line-chart card layout."
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
"when": "The visualization communicates parts of one total with synchronized slice emphasis.",
|
|
1639
|
+
"component": "component:ds-card-data-viz-donut",
|
|
1640
|
+
"reason": "CardDataVizDonut owns the donut layout and bidirectional hover synchronization."
|
|
1641
|
+
}
|
|
1642
|
+
],
|
|
1643
|
+
"commonlyComposedWith": [
|
|
1644
|
+
"component:ds-card-shell-data-viz",
|
|
1645
|
+
"component:ds-chart-bar",
|
|
1646
|
+
"component:ds-chart-bar-stacked",
|
|
1647
|
+
"component:ds-chart-legend",
|
|
1648
|
+
"component:ds-button-unfilled"
|
|
1649
|
+
],
|
|
1650
|
+
"accessibility": [
|
|
1651
|
+
"Provide a concise heading that identifies the measure and meaningful visible labels for every legend entry.",
|
|
1652
|
+
"Keep essential series and value context available textually rather than relying on bar color alone.",
|
|
1653
|
+
"The card disables decorative legend-row hover; genuine legend links retain native link semantics and affordances."
|
|
1654
|
+
],
|
|
1655
|
+
"states": [
|
|
1656
|
+
"The chart region fills the remaining card body while an optional legend remains content-sized.",
|
|
1657
|
+
"The card disables local hover highlighting on a slotted ChartLegend because bar legends are static keys.",
|
|
1658
|
+
"Chart and legend regions render only when their corresponding slots contain content, avoiding empty region spacing.",
|
|
1659
|
+
"The owning product controls data, filtering, loading, empty, and error state; the card emits the filter action only."
|
|
1660
|
+
],
|
|
1661
|
+
"responsiveBehavior": [
|
|
1662
|
+
"The selected sm, md, or lg shell size controls the card dimensions while the bar chart shrinks within its chart region.",
|
|
1663
|
+
"The horizontal legend wraps complete entries when the available width is constrained.",
|
|
1664
|
+
"The parent dashboard owns card wrapping and breakpoint changes."
|
|
1665
|
+
],
|
|
1666
|
+
"frameworkCaveats": {
|
|
1667
|
+
"customElements": [
|
|
1668
|
+
"Assign data or series and categories as JavaScript properties, then place the bar chart and optional legend in their named slots."
|
|
1669
|
+
],
|
|
1670
|
+
"react": [
|
|
1671
|
+
"Keep filter and dataset state in the owner; pass the chart and optional legend with chart and legend slot attributes."
|
|
1672
|
+
],
|
|
1673
|
+
"angular": [
|
|
1674
|
+
"Keep filter and dataset state in the owner; project the chart and optional legend into the chart and legend slots."
|
|
1675
|
+
]
|
|
1676
|
+
},
|
|
1677
|
+
"references": [
|
|
1678
|
+
{
|
|
1679
|
+
"label": "Storybook examples",
|
|
1680
|
+
"path": "src/wc/components/CardDataVizBar/CardDataVizBar.stories.ts"
|
|
1681
|
+
}
|
|
1682
|
+
]
|
|
1683
|
+
},
|
|
1684
|
+
"api": {
|
|
1685
|
+
"props": {
|
|
1686
|
+
"cardWidth": {
|
|
1687
|
+
"type": "CardDataVizBarWidth",
|
|
1688
|
+
"required": false
|
|
1689
|
+
},
|
|
1690
|
+
"filterLabel": {
|
|
1691
|
+
"type": "string",
|
|
1692
|
+
"required": false
|
|
1693
|
+
},
|
|
1694
|
+
"heading": {
|
|
1695
|
+
"type": "string",
|
|
1696
|
+
"required": true
|
|
1697
|
+
}
|
|
1698
|
+
},
|
|
1699
|
+
"events": [
|
|
1700
|
+
{
|
|
1701
|
+
"name": "dsFilterClick",
|
|
1702
|
+
"detail": "void"
|
|
1703
|
+
}
|
|
1704
|
+
],
|
|
1705
|
+
"slots": []
|
|
1706
|
+
},
|
|
1707
|
+
"exports": {
|
|
1708
|
+
"customElement": "ds-card-data-viz-bar",
|
|
1709
|
+
"react": "DsCardDataVizBar",
|
|
1710
|
+
"angular": "DsCardDataVizBar"
|
|
1711
|
+
},
|
|
1712
|
+
"dependencies": [
|
|
1713
|
+
"@ds-mo/ui",
|
|
1714
|
+
"@ds-mo/tokens"
|
|
1715
|
+
],
|
|
1716
|
+
"componentDependencies": [
|
|
1717
|
+
"button-unfilled",
|
|
1718
|
+
"card-shell-data-viz"
|
|
1719
|
+
]
|
|
1720
|
+
},
|
|
1478
1721
|
{
|
|
1479
1722
|
"id": "component:ds-card-data-viz-donut",
|
|
1480
1723
|
"tag": "ds-card-data-viz-donut",
|
|
@@ -1589,6 +1832,114 @@
|
|
|
1589
1832
|
"card-shell-data-viz"
|
|
1590
1833
|
]
|
|
1591
1834
|
},
|
|
1835
|
+
{
|
|
1836
|
+
"id": "component:ds-card-data-viz-line",
|
|
1837
|
+
"tag": "ds-card-data-viz-line",
|
|
1838
|
+
"name": "card-data-viz-line",
|
|
1839
|
+
"title": "CardDataVizLine",
|
|
1840
|
+
"summary": "Canonical line-chart dashboard card with shared data-viz chrome, a filter action, fill chart region, and a static horizontal legend.",
|
|
1841
|
+
"intentStatus": "complete",
|
|
1842
|
+
"intent": {
|
|
1843
|
+
"audience": "specialized",
|
|
1844
|
+
"status": "experimental",
|
|
1845
|
+
"summary": "Canonical line-chart dashboard card with shared data-viz chrome, a filter action, fill chart region, and a static horizontal legend.",
|
|
1846
|
+
"useWhen": [
|
|
1847
|
+
"A dashboard widget needs the standard line chart and visible series key in one data-viz card.",
|
|
1848
|
+
"The legend identifies static line series and should not highlight or dim rows on hover."
|
|
1849
|
+
],
|
|
1850
|
+
"avoidWhen": [
|
|
1851
|
+
"The visualization needs chart-to-legend hover synchronization or selectable series controls.",
|
|
1852
|
+
"The product needs a custom legend treatment, supporting metrics, or an alternate chart layout."
|
|
1853
|
+
],
|
|
1854
|
+
"alternatives": [
|
|
1855
|
+
{
|
|
1856
|
+
"when": "The line chart and legend need a custom layout without card chrome.",
|
|
1857
|
+
"component": "component:ds-chart-line",
|
|
1858
|
+
"reason": "Compose ChartLine and a static ChartLegend directly in the product-owned layout."
|
|
1859
|
+
},
|
|
1860
|
+
{
|
|
1861
|
+
"when": "The visualization communicates parts of a total with synchronized slice emphasis.",
|
|
1862
|
+
"component": "component:ds-card-data-viz-donut",
|
|
1863
|
+
"reason": "CardDataVizDonut owns the donut layout and bidirectional hover synchronization."
|
|
1864
|
+
}
|
|
1865
|
+
],
|
|
1866
|
+
"commonlyComposedWith": [
|
|
1867
|
+
"component:ds-card-shell-data-viz",
|
|
1868
|
+
"component:ds-chart-line",
|
|
1869
|
+
"component:ds-chart-legend",
|
|
1870
|
+
"component:ds-button-unfilled"
|
|
1871
|
+
],
|
|
1872
|
+
"accessibility": [
|
|
1873
|
+
"Provide a concise heading that identifies the trend and meaningful visible labels for every legend entry.",
|
|
1874
|
+
"Keep essential series and value context available textually rather than relying on line color alone.",
|
|
1875
|
+
"The card disables decorative legend-row hover; genuine legend links retain native link semantics and affordances."
|
|
1876
|
+
],
|
|
1877
|
+
"states": [
|
|
1878
|
+
"The chart region fills the remaining card body while the legend remains content-sized.",
|
|
1879
|
+
"The card disables local hover highlighting on a slotted ChartLegend because the line chart is static.",
|
|
1880
|
+
"Chart and legend regions render only when their corresponding slots contain content, avoiding empty region spacing.",
|
|
1881
|
+
"The owning product controls data, filtering, loading, empty, and error state; the card emits the filter action only."
|
|
1882
|
+
],
|
|
1883
|
+
"responsiveBehavior": [
|
|
1884
|
+
"The selected sm, md, or lg shell size controls the card dimensions while the line chart shrinks within its chart region.",
|
|
1885
|
+
"The horizontal legend wraps complete entries when the available width is constrained.",
|
|
1886
|
+
"The parent dashboard owns card wrapping and breakpoint changes."
|
|
1887
|
+
],
|
|
1888
|
+
"frameworkCaveats": {
|
|
1889
|
+
"customElements": [
|
|
1890
|
+
"Assign series, categories, and legend items as JavaScript properties, then place the chart and legend in their named slots."
|
|
1891
|
+
],
|
|
1892
|
+
"react": [
|
|
1893
|
+
"Keep filter and dataset state in the owner; pass the chart and legend with chart and legend slot attributes."
|
|
1894
|
+
],
|
|
1895
|
+
"angular": [
|
|
1896
|
+
"Keep filter and dataset state in the owner; project the chart and legend into the chart and legend slots."
|
|
1897
|
+
]
|
|
1898
|
+
},
|
|
1899
|
+
"references": [
|
|
1900
|
+
{
|
|
1901
|
+
"label": "Storybook examples",
|
|
1902
|
+
"path": "src/wc/components/CardDataVizLine/CardDataVizLine.stories.ts"
|
|
1903
|
+
}
|
|
1904
|
+
]
|
|
1905
|
+
},
|
|
1906
|
+
"api": {
|
|
1907
|
+
"props": {
|
|
1908
|
+
"cardWidth": {
|
|
1909
|
+
"type": "CardDataVizLineWidth",
|
|
1910
|
+
"required": false
|
|
1911
|
+
},
|
|
1912
|
+
"filterLabel": {
|
|
1913
|
+
"type": "string",
|
|
1914
|
+
"required": false
|
|
1915
|
+
},
|
|
1916
|
+
"heading": {
|
|
1917
|
+
"type": "string",
|
|
1918
|
+
"required": true
|
|
1919
|
+
}
|
|
1920
|
+
},
|
|
1921
|
+
"events": [
|
|
1922
|
+
{
|
|
1923
|
+
"name": "dsFilterClick",
|
|
1924
|
+
"detail": "void"
|
|
1925
|
+
}
|
|
1926
|
+
],
|
|
1927
|
+
"slots": []
|
|
1928
|
+
},
|
|
1929
|
+
"exports": {
|
|
1930
|
+
"customElement": "ds-card-data-viz-line",
|
|
1931
|
+
"react": "DsCardDataVizLine",
|
|
1932
|
+
"angular": "DsCardDataVizLine"
|
|
1933
|
+
},
|
|
1934
|
+
"dependencies": [
|
|
1935
|
+
"@ds-mo/ui",
|
|
1936
|
+
"@ds-mo/tokens"
|
|
1937
|
+
],
|
|
1938
|
+
"componentDependencies": [
|
|
1939
|
+
"button-unfilled",
|
|
1940
|
+
"card-shell-data-viz"
|
|
1941
|
+
]
|
|
1942
|
+
},
|
|
1592
1943
|
{
|
|
1593
1944
|
"id": "component:ds-card-setting",
|
|
1594
1945
|
"tag": "ds-card-setting",
|
|
@@ -1764,13 +2115,20 @@
|
|
|
1764
2115
|
"when": "The composition is the standard donut chart plus synchronized legend.",
|
|
1765
2116
|
"component": "component:ds-card-data-viz-donut",
|
|
1766
2117
|
"reason": "CardDataVizDonut composes this shell with donut-specific regions and hover synchronization."
|
|
2118
|
+
},
|
|
2119
|
+
{
|
|
2120
|
+
"when": "The composition is the standard line chart plus static horizontal legend.",
|
|
2121
|
+
"component": "component:ds-card-data-viz-line",
|
|
2122
|
+
"reason": "CardDataVizLine composes this shell with line-specific regions and disables decorative legend hover."
|
|
1767
2123
|
}
|
|
1768
2124
|
],
|
|
1769
2125
|
"commonlyComposedWith": [
|
|
1770
2126
|
"component:ds-chart-bar",
|
|
2127
|
+
"component:ds-chart-bar-stacked",
|
|
1771
2128
|
"component:ds-chart-donut",
|
|
1772
2129
|
"component:ds-chart-line",
|
|
1773
2130
|
"component:ds-chart-legend",
|
|
2131
|
+
"component:ds-card-data-viz-line",
|
|
1774
2132
|
"component:ds-button-unfilled"
|
|
1775
2133
|
],
|
|
1776
2134
|
"accessibility": [
|
|
@@ -1856,6 +2214,11 @@
|
|
|
1856
2214
|
"The data communicates a part-to-whole relationship."
|
|
1857
2215
|
],
|
|
1858
2216
|
"alternatives": [
|
|
2217
|
+
{
|
|
2218
|
+
"when": "Each category contains several additive series or needs normalized composition.",
|
|
2219
|
+
"component": "component:ds-chart-bar-stacked",
|
|
2220
|
+
"reason": "ChartBarStacked compares raw stacked totals or normalized 0–100% composition."
|
|
2221
|
+
},
|
|
1859
2222
|
{
|
|
1860
2223
|
"when": "Users need to follow one or more trends across ordered categories.",
|
|
1861
2224
|
"component": "component:ds-chart-line",
|
|
@@ -1868,6 +2231,7 @@
|
|
|
1868
2231
|
}
|
|
1869
2232
|
],
|
|
1870
2233
|
"commonlyComposedWith": [
|
|
2234
|
+
"component:ds-chart-bar-stacked",
|
|
1871
2235
|
"component:ds-card-shell-data-viz",
|
|
1872
2236
|
"component:ds-tooltip-data-viz"
|
|
1873
2237
|
],
|
|
@@ -1879,6 +2243,7 @@
|
|
|
1879
2243
|
"states": [
|
|
1880
2244
|
"The chart is currently a static single-series rendering without hover, selection, loading, or empty-state policy.",
|
|
1881
2245
|
"An empty dataset renders no bars; the owning card or product supplies meaningful empty-state messaging.",
|
|
2246
|
+
"Bars use 2px top corner radii while the lower corners touching the zero axis remain square.",
|
|
1882
2247
|
"Use one consistent bar color across time buckets when every bar is the same measure at a different interval; categorical color changes are for genuinely distinct categories.",
|
|
1883
2248
|
"Authored datum colors override the shared categorical palette."
|
|
1884
2249
|
],
|
|
@@ -1935,38 +2300,155 @@
|
|
|
1935
2300
|
"componentDependencies": []
|
|
1936
2301
|
},
|
|
1937
2302
|
{
|
|
1938
|
-
"id": "component:ds-chart-
|
|
1939
|
-
"tag": "ds-chart-
|
|
1940
|
-
"name": "chart-
|
|
1941
|
-
"title": "
|
|
1942
|
-
"summary": "
|
|
2303
|
+
"id": "component:ds-chart-bar-stacked",
|
|
2304
|
+
"tag": "ds-chart-bar-stacked",
|
|
2305
|
+
"name": "chart-bar-stacked",
|
|
2306
|
+
"title": "ChartBarStacked",
|
|
2307
|
+
"summary": "Multi-series stacked bar chart for comparing raw totals or normalized 0–100% composition across ordered categories and time buckets.",
|
|
1943
2308
|
"intentStatus": "complete",
|
|
1944
2309
|
"intent": {
|
|
1945
2310
|
"audience": "specialized",
|
|
1946
2311
|
"status": "experimental",
|
|
1947
|
-
"summary": "
|
|
2312
|
+
"summary": "Multi-series stacked bar chart for comparing raw totals or normalized 0–100% composition across ordered categories and time buckets.",
|
|
1948
2313
|
"useWhen": [
|
|
1949
|
-
"Users need to
|
|
1950
|
-
"A
|
|
1951
|
-
"
|
|
2314
|
+
"Users need to compare both a category total and the contribution of several consistent series.",
|
|
2315
|
+
"A time series needs to show how its composition changes across equal time buckets.",
|
|
2316
|
+
"Every category should normalize to 100% so proportional composition can be compared independently of total magnitude."
|
|
1952
2317
|
],
|
|
1953
2318
|
"avoidWhen": [
|
|
1954
|
-
"
|
|
1955
|
-
"The
|
|
1956
|
-
"
|
|
2319
|
+
"Users need to compare individual series values precisely across categories; use grouped bars or separate charts.",
|
|
2320
|
+
"The visualization has only one measure per category; use ChartBar.",
|
|
2321
|
+
"The primary task is following continuous trends; use ChartLine.",
|
|
2322
|
+
"Series contain negative values or do not align with the shared category list."
|
|
1957
2323
|
],
|
|
1958
2324
|
"alternatives": [
|
|
1959
2325
|
{
|
|
1960
|
-
"when": "
|
|
1961
|
-
"component": "component:ds-
|
|
1962
|
-
"reason": "
|
|
2326
|
+
"when": "Each category contains one independent value.",
|
|
2327
|
+
"component": "component:ds-chart-bar",
|
|
2328
|
+
"reason": "ChartBar provides the simpler single-series magnitude comparison."
|
|
1963
2329
|
},
|
|
1964
2330
|
{
|
|
1965
|
-
"when": "Users need to compare
|
|
1966
|
-
"component": "component:ds-chart-
|
|
1967
|
-
"reason": "
|
|
1968
|
-
}
|
|
1969
|
-
|
|
2331
|
+
"when": "Users need to follow one or more trends rather than compare stack composition.",
|
|
2332
|
+
"component": "component:ds-chart-line",
|
|
2333
|
+
"reason": "ChartLine preserves each series as a continuous path across the ordered axis."
|
|
2334
|
+
},
|
|
2335
|
+
{
|
|
2336
|
+
"when": "One category's parts-to-whole composition is the focus.",
|
|
2337
|
+
"component": "component:ds-chart-donut",
|
|
2338
|
+
"reason": "ChartDonut provides the dedicated single-total composition treatment."
|
|
2339
|
+
}
|
|
2340
|
+
],
|
|
2341
|
+
"commonlyComposedWith": [
|
|
2342
|
+
"component:ds-chart-legend",
|
|
2343
|
+
"component:ds-card-shell-data-viz",
|
|
2344
|
+
"component:ds-tooltip-data-viz"
|
|
2345
|
+
],
|
|
2346
|
+
"accessibility": [
|
|
2347
|
+
"Provide a visible legend or adjacent textual summary that names every series; do not rely on segment color alone.",
|
|
2348
|
+
"The chart image name includes each category and series value, using normalized percentages in percentage mode.",
|
|
2349
|
+
"Use an adjacent data table when exact cross-category comparisons are necessary to complete the task."
|
|
2350
|
+
],
|
|
2351
|
+
"states": [
|
|
2352
|
+
"Stacked mode preserves raw magnitudes and scales the y-axis to the largest category total.",
|
|
2353
|
+
"Percentage mode normalizes each non-empty category independently and renders a fixed 0%, 25%, 50%, 75%, and 100% axis.",
|
|
2354
|
+
"Series render bottom-to-top in authored order; keep that order and color mapping stable across categories.",
|
|
2355
|
+
"Stacked mode gives only the top visible segment 2px top corners. Percentage mode keeps every corner square because the normalized stack touches both axis edges.",
|
|
2356
|
+
"Adjacent segments are separated by a non-scaling 1px gap; the stack's outer edges do not receive that separator.",
|
|
2357
|
+
"Negative values are unsupported and render as zero; the owning product supplies loading, empty, and error states."
|
|
2358
|
+
],
|
|
2359
|
+
"responsiveBehavior": [
|
|
2360
|
+
"The SVG preserves its authored aspect ratio while shrinking to fit a narrower parent.",
|
|
2361
|
+
"The parent supplies dimensions and chooses how many time buckets remain legible at each width.",
|
|
2362
|
+
"Pre-format category labels and reduce bucket count before rendering when horizontal space becomes constrained."
|
|
2363
|
+
],
|
|
2364
|
+
"frameworkCaveats": {
|
|
2365
|
+
"customElements": [
|
|
2366
|
+
"Assign series and categories as JavaScript properties and keep every series aligned to the category count."
|
|
2367
|
+
],
|
|
2368
|
+
"react": [
|
|
2369
|
+
"Pass stable series and category arrays; choose percentage variant only when each category represents a meaningful whole."
|
|
2370
|
+
],
|
|
2371
|
+
"angular": [
|
|
2372
|
+
"Bind series and categories as properties; choose percentage variant only when each category represents a meaningful whole."
|
|
2373
|
+
]
|
|
2374
|
+
},
|
|
2375
|
+
"references": [
|
|
2376
|
+
{
|
|
2377
|
+
"label": "Storybook examples",
|
|
2378
|
+
"path": "src/wc/components/ChartBarStacked/ChartBarStacked.stories.ts"
|
|
2379
|
+
}
|
|
2380
|
+
]
|
|
2381
|
+
},
|
|
2382
|
+
"api": {
|
|
2383
|
+
"props": {
|
|
2384
|
+
"categories": {
|
|
2385
|
+
"type": "string[]",
|
|
2386
|
+
"required": false
|
|
2387
|
+
},
|
|
2388
|
+
"height": {
|
|
2389
|
+
"type": "number",
|
|
2390
|
+
"required": false
|
|
2391
|
+
},
|
|
2392
|
+
"series": {
|
|
2393
|
+
"type": "ChartSeries[]",
|
|
2394
|
+
"required": false
|
|
2395
|
+
},
|
|
2396
|
+
"variant": {
|
|
2397
|
+
"type": "ChartBarStackedVariant",
|
|
2398
|
+
"required": false
|
|
2399
|
+
},
|
|
2400
|
+
"width": {
|
|
2401
|
+
"type": "number",
|
|
2402
|
+
"required": false
|
|
2403
|
+
}
|
|
2404
|
+
},
|
|
2405
|
+
"events": [],
|
|
2406
|
+
"slots": []
|
|
2407
|
+
},
|
|
2408
|
+
"exports": {
|
|
2409
|
+
"customElement": "ds-chart-bar-stacked",
|
|
2410
|
+
"react": "DsChartBarStacked",
|
|
2411
|
+
"angular": "DsChartBarStacked"
|
|
2412
|
+
},
|
|
2413
|
+
"dependencies": [
|
|
2414
|
+
"@ds-mo/ui",
|
|
2415
|
+
"@ds-mo/tokens"
|
|
2416
|
+
],
|
|
2417
|
+
"componentDependencies": []
|
|
2418
|
+
},
|
|
2419
|
+
{
|
|
2420
|
+
"id": "component:ds-chart-donut",
|
|
2421
|
+
"tag": "ds-chart-donut",
|
|
2422
|
+
"name": "chart-donut",
|
|
2423
|
+
"title": "ChartDonut",
|
|
2424
|
+
"summary": "Part-to-whole donut chart with a center aggregate, responsive fill sizing, local slice tooltip feedback, and externally controlled legend highlighting.",
|
|
2425
|
+
"intentStatus": "complete",
|
|
2426
|
+
"intent": {
|
|
2427
|
+
"audience": "specialized",
|
|
2428
|
+
"status": "experimental",
|
|
2429
|
+
"summary": "Part-to-whole donut chart with a center aggregate, responsive fill sizing, local slice tooltip feedback, and externally controlled legend highlighting.",
|
|
2430
|
+
"useWhen": [
|
|
2431
|
+
"Users need to understand a small part-to-whole breakdown with a prominent total or status in the center.",
|
|
2432
|
+
"A standalone donut needs pointer and keyboard-focus value feedback through a chart-owned data-viz tooltip.",
|
|
2433
|
+
"A donut and visible ChartLegend should cross-highlight by matching stable labels."
|
|
2434
|
+
],
|
|
2435
|
+
"avoidWhen": [
|
|
2436
|
+
"The data is a trend, time sequence, or independent magnitude comparison.",
|
|
2437
|
+
"The category count creates slices too small to understand reliably.",
|
|
2438
|
+
"Hover is intended to select, filter, or navigate rather than temporarily highlight data."
|
|
2439
|
+
],
|
|
2440
|
+
"alternatives": [
|
|
2441
|
+
{
|
|
2442
|
+
"when": "The product needs the canonical card, filter action, visible legend, and built-in hover synchronization.",
|
|
2443
|
+
"component": "component:ds-card-data-viz-donut",
|
|
2444
|
+
"reason": "The dedicated card owns that complete composition and suppresses redundant slice tooltips."
|
|
2445
|
+
},
|
|
2446
|
+
{
|
|
2447
|
+
"when": "Users need to compare independent category magnitudes.",
|
|
2448
|
+
"component": "component:ds-chart-bar",
|
|
2449
|
+
"reason": "Bars make category magnitude differences easier to compare."
|
|
2450
|
+
}
|
|
2451
|
+
],
|
|
1970
2452
|
"commonlyComposedWith": [
|
|
1971
2453
|
"component:ds-chart-legend",
|
|
1972
2454
|
"component:ds-tooltip-data-viz",
|
|
@@ -2107,12 +2589,19 @@
|
|
|
2107
2589
|
"when": "The donut belongs in the canonical dashboard card.",
|
|
2108
2590
|
"component": "component:ds-card-data-viz-donut",
|
|
2109
2591
|
"reason": "The dedicated card places the legend and handles bidirectional highlight synchronization."
|
|
2592
|
+
},
|
|
2593
|
+
{
|
|
2594
|
+
"when": "A static line chart and series key belong in the canonical dashboard card.",
|
|
2595
|
+
"component": "component:ds-card-data-viz-line",
|
|
2596
|
+
"reason": "The dedicated card places the horizontal legend and disables decorative local hover highlighting."
|
|
2110
2597
|
}
|
|
2111
2598
|
],
|
|
2112
2599
|
"commonlyComposedWith": [
|
|
2113
2600
|
"component:ds-chart-donut",
|
|
2601
|
+
"component:ds-chart-bar-stacked",
|
|
2114
2602
|
"component:ds-chart-line",
|
|
2115
2603
|
"component:ds-card-data-viz-donut",
|
|
2604
|
+
"component:ds-card-data-viz-line",
|
|
2116
2605
|
"component:ds-card-shell-data-viz"
|
|
2117
2606
|
],
|
|
2118
2607
|
"accessibility": [
|
|
@@ -2122,7 +2611,8 @@
|
|
|
2122
2611
|
"Do not rely on swatch color alone; every entry requires a meaningful visible label."
|
|
2123
2612
|
],
|
|
2124
2613
|
"states": [
|
|
2125
|
-
"Local pointer or focus interaction and external chart highlight remain separate; both may dim peers, but only a real link row receives
|
|
2614
|
+
"Local pointer or focus interaction and external chart highlight remain separate; both may dim peers, but only a real link row receives navigation affordances.",
|
|
2615
|
+
"Disable local hover highlighting for static keys such as a line-chart legend; externally controlled activeLabel highlighting and genuine link affordances remain available.",
|
|
2126
2616
|
"Hover synchronization is temporary emphasis, never filtering, toggling, or selected state.",
|
|
2127
2617
|
"Percentage values use one consistent precision across the complete legend.",
|
|
2128
2618
|
"The list owns pointer leave so moving across row gaps does not clear and reapply highlight."
|
|
@@ -2164,6 +2654,10 @@
|
|
|
2164
2654
|
"type": "ChartLegendDirection",
|
|
2165
2655
|
"required": false
|
|
2166
2656
|
},
|
|
2657
|
+
"highlightOnHover": {
|
|
2658
|
+
"type": "boolean",
|
|
2659
|
+
"required": false
|
|
2660
|
+
},
|
|
2167
2661
|
"items": {
|
|
2168
2662
|
"type": "ChartLegendItem[]",
|
|
2169
2663
|
"required": false
|
|
@@ -2242,6 +2736,7 @@
|
|
|
2242
2736
|
],
|
|
2243
2737
|
"commonlyComposedWith": [
|
|
2244
2738
|
"component:ds-chart-legend",
|
|
2739
|
+
"component:ds-card-data-viz-line",
|
|
2245
2740
|
"component:ds-card-shell-data-viz",
|
|
2246
2741
|
"component:ds-tooltip-data-viz"
|
|
2247
2742
|
],
|
|
@@ -2252,11 +2747,12 @@
|
|
|
2252
2747
|
],
|
|
2253
2748
|
"states": [
|
|
2254
2749
|
"The chart is currently static and does not own hover, selection, loading, or empty-state policy.",
|
|
2750
|
+
"Its standard horizontal legend is a static key with local hover highlighting disabled.",
|
|
2255
2751
|
"Point markers may be shown or hidden without changing the underlying series meaning.",
|
|
2256
2752
|
"Authored series colors override the shared categorical palette."
|
|
2257
2753
|
],
|
|
2258
2754
|
"responsiveBehavior": [
|
|
2259
|
-
"The owner supplies dimensions
|
|
2755
|
+
"The owner supplies intrinsic dimensions; the SVG preserves its aspect ratio while shrinking to fit a narrower parent.",
|
|
2260
2756
|
"Category positions are always equally spaced, even when labels represent time.",
|
|
2261
2757
|
"Reduce or pre-format dense labels before passing them; the chart renders authored labels without a continuous time scale."
|
|
2262
2758
|
],
|
|
@@ -2766,7 +3262,7 @@
|
|
|
2766
3262
|
],
|
|
2767
3263
|
"states": [
|
|
2768
3264
|
"Rows reuse the md choice-item label/subtext recipe used by Menu, including 6px row padding, 2px text inset, and the shared content gap. The enclosing conversation-list scroll region supplies the larger 8px outer container padding.",
|
|
2769
|
-
"Busy and error are generic channel-neutral states; the owning product supplies suitable status wording. A busy row pairs its body-small status with the sm 16px Loader at
|
|
3265
|
+
"Busy and error are generic channel-neutral states; the owning product supplies suitable status wording. A busy row pairs its body-small status with the sm 16px Loader at a 4px gap.",
|
|
2770
3266
|
"Any positive unreadCount renders one dot on the title row rather than a visible counter; the accessible row name may still announce the exact unread quantity.",
|
|
2771
3267
|
"Hover and press use the shared interaction hover and pressed overlays. Only the selected conversation uses the persistent active fill.",
|
|
2772
3268
|
"The title uses body-medium, not title-small, and the body-small preview truncates after one line. Unread titles use emphasis with primary foreground; read titles use regular weight with secondary foreground.",
|
|
@@ -3982,10 +4478,11 @@
|
|
|
3982
4478
|
],
|
|
3983
4479
|
"accessibility": [
|
|
3984
4480
|
"Author and time metadata remain textual when they are necessary to interpret the transcript.",
|
|
3985
|
-
"Delivery failure uses negative Failed to send text in the footer while the message bubble keeps its normal outgoing treatment."
|
|
4481
|
+
"Delivery failure uses negative Failed to send text in the footer while the message bubble keeps its normal outgoing treatment; when time is also visible, a tertiary middle dot separates the failure label and timestamp."
|
|
3986
4482
|
],
|
|
3987
4483
|
"states": [
|
|
3988
4484
|
"Pass an ISO timestamp. Message keeps the full value in dateTime and formats the visible value as a localized time; applications must not render a raw ISO string as visible transcript metadata.",
|
|
4485
|
+
"A visible incoming author uses body-small emphasis with primary foreground; timestamp and delivery metadata remain caption text.",
|
|
3989
4486
|
"Visible author, bubble content, and timestamp or delivery footer use consistent 4px vertical gaps.",
|
|
3990
4487
|
"Grouping joins adjacent bubble corners, shows the incoming author only at the start, and shows delivery/time metadata only at the end. Outgoing author remains in the accessible message label without repeating a visible You label.",
|
|
3991
4488
|
"Set showAuthor false only when the product makes participant and assistant roles visually self-evident; continue passing author so the accessible message label remains specific."
|
|
@@ -4265,7 +4762,9 @@
|
|
|
4265
4762
|
"Place a composer container with 8px padding on every side in the overlay slot so messages scroll behind it; the shared scroll-overlay controller tracks every composer growth step, reserves matching transcript clearance, begins the fade 8px before the visible composer, and keeps scroll-to-latest above it."
|
|
4266
4763
|
],
|
|
4267
4764
|
"responsiveBehavior": [
|
|
4268
|
-
"Transcript width is readable while the scroll region fills available height."
|
|
4765
|
+
"Transcript width is readable while the scroll region fills available height.",
|
|
4766
|
+
"For a narrower fullscreen conversation lane, set --ds-message-scroller-content-max-width on the host instead of constraining the host; the full-width viewport then keeps its scrollbar at the outer edge while the transcript remains centered.",
|
|
4767
|
+
"The custom property sizes the padded transcript box. If the target is the usable conversation width, add the transcript's two 16px inline paddings and size the centered overlay container to the same target plus its two 8px paddings so messages and the visible composer align."
|
|
4269
4768
|
],
|
|
4270
4769
|
"references": [
|
|
4271
4770
|
{
|
|
@@ -6057,7 +6556,7 @@
|
|
|
6057
6556
|
"summary": "The single required workspace root for standard authenticated application pages, coordinating primary and secondary navigation, tools chrome, responsive composition, content geometry, shared styling, and shell behavior.",
|
|
6058
6557
|
"useWhen": [
|
|
6059
6558
|
"Building any standard authenticated product or workspace page with CompoMo.",
|
|
6060
|
-
"PanelNav, BarNav,
|
|
6559
|
+
"PanelNav, BarNav, ShellTools, mobile navigation, page content, shared chrome, responsive behavior, and shell shortcuts must be composed as one application frame.",
|
|
6061
6560
|
"Future application templates need the supported base-page composition boundary."
|
|
6062
6561
|
],
|
|
6063
6562
|
"avoidWhen": [
|
|
@@ -6069,6 +6568,10 @@
|
|
|
6069
6568
|
"component:ds-panel-nav",
|
|
6070
6569
|
"component:ds-bar-nav",
|
|
6071
6570
|
"component:ds-panel-tools",
|
|
6571
|
+
"component:ds-shell-tools",
|
|
6572
|
+
"component:ds-shell-mobile-nav",
|
|
6573
|
+
"component:ds-shell-mobile-section-nav",
|
|
6574
|
+
"component:ds-shell-mobile-bar",
|
|
6072
6575
|
"component:ds-shell-page",
|
|
6073
6576
|
"component:ds-swatch-picker"
|
|
6074
6577
|
],
|
|
@@ -6079,16 +6582,17 @@
|
|
|
6079
6582
|
"accessibility": [
|
|
6080
6583
|
"Keep primary destinations in PanelNav and secondary route sections in BarNav.",
|
|
6081
6584
|
"Ensure the default content region contains the page's single main landmark.",
|
|
6082
|
-
"Keep PanelNav, BarNav, and PanelTools chrome available in
|
|
6585
|
+
"Keep PanelNav, BarNav, and PanelTools-compatible chrome available in desktop and tablet compositions and the persistent mobile bar available below 768px.",
|
|
6083
6586
|
"Do not override browser keyboard chords when enabling shell shortcuts.",
|
|
6084
6587
|
"Require Search and Help as the minimum PanelTools actions and provide accessible labels for every tool.",
|
|
6085
6588
|
"Preserve focus and accessible names across navigation, collapse, overflow, and responsive presentation changes."
|
|
6086
6589
|
],
|
|
6087
6590
|
"states": [
|
|
6088
6591
|
"Render exactly one ShellApp as the workspace root and never nest it.",
|
|
6089
|
-
"PanelNav, BarNav, and
|
|
6592
|
+
"PanelNav, BarNav, and ShellTools are the responsive shell regions; ShellTools contains at least Search and Help even when no additional product tools apply.",
|
|
6090
6593
|
"The application router owns the current route, authorization filtering, Dashboard or Settings context, destination collections, section collections, and localized content labels.",
|
|
6091
|
-
"ShellApp propagates navStyle and coordinates layout, gradient alignment, transitions, metrics, shortcuts, and
|
|
6594
|
+
"ShellApp propagates navStyle and resolved responsive mode and coordinates layout, gradient alignment, transitions, metrics, shortcuts, and mobile-stage visibility.",
|
|
6595
|
+
"The application controls mobileDestination and mobileNavigationOpen and keeps router state independent from global tool-surface changes.",
|
|
6092
6596
|
"Set gradientPreset to the single resolved global chrome preference: neutral by default, none for solid chrome, or cool, neutral, warm, and fresh for token-based washes.",
|
|
6093
6597
|
"The application owns gradient preference persistence, cross-tab synchronization, and server or account precedence; ShellApp owns rendering the resolved preset across authenticated routes.",
|
|
6094
6598
|
"Dashboard represents day-to-day operational work while Settings represents administrative and configuration work; route state selects the context.",
|
|
@@ -6101,9 +6605,10 @@
|
|
|
6101
6605
|
"ShellApp owns the fixed system breakpoints and resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
|
|
6102
6606
|
"On desktop, PanelNav defaults expanded, permits user collapse or expansion, and respects the locally persisted desktop preference.",
|
|
6103
6607
|
"On tablet, ShellApp keeps PanelNav permanently collapsed and prevents user expansion without overwriting the desktop preference.",
|
|
6104
|
-
"On mobile, ShellApp
|
|
6608
|
+
"On mobile, ShellApp hides and inerts PanelNav and BarNav, uses a solid primary stage, and composes MobileNav, MobileSectionNav, ShellTools, and the persistent five-item MobileBar.",
|
|
6609
|
+
"Mobile global surfaces conceal and inert the routed workspace without unmounting it, preserving nested routes and scroll state.",
|
|
6105
6610
|
"Keep PanelNav width, BarNav height, PanelTools chrome, and main-content origin stable except during intentional responsive or collapse transitions.",
|
|
6106
|
-
"The
|
|
6611
|
+
"The bottom bar remains visible at all route and tool depths in the foundation release."
|
|
6107
6612
|
],
|
|
6108
6613
|
"frameworkCaveats": {
|
|
6109
6614
|
"customElements": [
|
|
@@ -6111,7 +6616,7 @@
|
|
|
6111
6616
|
"Stamp route-derived nav-style before components connect when deterministic first paint is required."
|
|
6112
6617
|
],
|
|
6113
6618
|
"react": [
|
|
6114
|
-
"Use generated wrappers and preserve native slot names for
|
|
6619
|
+
"Use generated wrappers and preserve native slot names for desktop navigation, responsive tools, mobile navigation, and main content.",
|
|
6115
6620
|
"Resolve all shell inputs from one router state before rendering the composition."
|
|
6116
6621
|
],
|
|
6117
6622
|
"angular": [
|
|
@@ -6145,6 +6650,14 @@
|
|
|
6145
6650
|
"type": "ShellGradientPreset",
|
|
6146
6651
|
"required": false
|
|
6147
6652
|
},
|
|
6653
|
+
"mobileDestination": {
|
|
6654
|
+
"type": "ShellMobileDestination",
|
|
6655
|
+
"required": false
|
|
6656
|
+
},
|
|
6657
|
+
"mobileNavigationOpen": {
|
|
6658
|
+
"type": "boolean",
|
|
6659
|
+
"required": false
|
|
6660
|
+
},
|
|
6148
6661
|
"navStyle": {
|
|
6149
6662
|
"type": "NavChromeStyle",
|
|
6150
6663
|
"required": false
|
|
@@ -6154,7 +6667,12 @@
|
|
|
6154
6667
|
"required": false
|
|
6155
6668
|
}
|
|
6156
6669
|
},
|
|
6157
|
-
"events": [
|
|
6670
|
+
"events": [
|
|
6671
|
+
{
|
|
6672
|
+
"name": "dsResponsiveModeChange",
|
|
6673
|
+
"detail": "{ mode: ShellResponsiveMode }"
|
|
6674
|
+
}
|
|
6675
|
+
],
|
|
6158
6676
|
"slots": []
|
|
6159
6677
|
},
|
|
6160
6678
|
"exports": {
|
|
@@ -6379,20 +6897,372 @@
|
|
|
6379
6897
|
],
|
|
6380
6898
|
"componentDependencies": []
|
|
6381
6899
|
},
|
|
6900
|
+
{
|
|
6901
|
+
"id": "component:ds-shell-mobile-bar",
|
|
6902
|
+
"tag": "ds-shell-mobile-bar",
|
|
6903
|
+
"name": "shell-mobile-bar",
|
|
6904
|
+
"title": "ShellMobileBar",
|
|
6905
|
+
"summary": "Persistent mobile shell navigation for Menu, the router-derived current area, Search, Agents, and Inbox.",
|
|
6906
|
+
"intentStatus": "complete",
|
|
6907
|
+
"intent": {
|
|
6908
|
+
"audience": "specialized",
|
|
6909
|
+
"status": "experimental",
|
|
6910
|
+
"summary": "Persistent mobile shell navigation for Menu, the router-derived current area, Search, Agents, and Inbox.",
|
|
6911
|
+
"useWhen": [
|
|
6912
|
+
"ShellApp is rendering its dedicated below-768px application composition."
|
|
6913
|
+
],
|
|
6914
|
+
"avoidWhen": [
|
|
6915
|
+
"Rendering desktop or tablet shell chrome.",
|
|
6916
|
+
"An arbitrary set of product tabs is required."
|
|
6917
|
+
],
|
|
6918
|
+
"commonlyComposedWith": [
|
|
6919
|
+
"component:ds-shell-app"
|
|
6920
|
+
],
|
|
6921
|
+
"patterns": [
|
|
6922
|
+
"pattern:application-shell"
|
|
6923
|
+
],
|
|
6924
|
+
"accessibility": [
|
|
6925
|
+
"Every item keeps a visible label and accessible name.",
|
|
6926
|
+
"Only the active destination exposes aria-current; Menu exposes its controlled pane through aria-expanded."
|
|
6927
|
+
],
|
|
6928
|
+
"states": [
|
|
6929
|
+
"The item order is fixed: Menu, current area, Search, Agents, Inbox.",
|
|
6930
|
+
"Reselecting an active destination does not reset its nested state."
|
|
6931
|
+
],
|
|
6932
|
+
"responsiveBehavior": [
|
|
6933
|
+
"Render only below the mobile breakpoint and preserve safe-area clearance."
|
|
6934
|
+
],
|
|
6935
|
+
"references": [
|
|
6936
|
+
{
|
|
6937
|
+
"label": "Storybook",
|
|
6938
|
+
"path": "src/wc/components/ShellMobileBar/ShellMobileBar.stories.ts"
|
|
6939
|
+
}
|
|
6940
|
+
]
|
|
6941
|
+
},
|
|
6942
|
+
"api": {
|
|
6943
|
+
"props": {
|
|
6944
|
+
"activeDestination": {
|
|
6945
|
+
"type": "ShellMobileDestination",
|
|
6946
|
+
"required": false
|
|
6947
|
+
},
|
|
6948
|
+
"agentsDot": {
|
|
6949
|
+
"type": "boolean",
|
|
6950
|
+
"required": false
|
|
6951
|
+
},
|
|
6952
|
+
"agentsLabel": {
|
|
6953
|
+
"type": "string",
|
|
6954
|
+
"required": false
|
|
6955
|
+
},
|
|
6956
|
+
"currentArea": {
|
|
6957
|
+
"type": "PanelNavItem",
|
|
6958
|
+
"required": false
|
|
6959
|
+
},
|
|
6960
|
+
"inboxDot": {
|
|
6961
|
+
"type": "boolean",
|
|
6962
|
+
"required": false
|
|
6963
|
+
},
|
|
6964
|
+
"inboxLabel": {
|
|
6965
|
+
"type": "string",
|
|
6966
|
+
"required": false
|
|
6967
|
+
},
|
|
6968
|
+
"menuLabel": {
|
|
6969
|
+
"type": "string",
|
|
6970
|
+
"required": false
|
|
6971
|
+
},
|
|
6972
|
+
"navigationExpanded": {
|
|
6973
|
+
"type": "boolean",
|
|
6974
|
+
"required": false
|
|
6975
|
+
},
|
|
6976
|
+
"searchDot": {
|
|
6977
|
+
"type": "boolean",
|
|
6978
|
+
"required": false
|
|
6979
|
+
},
|
|
6980
|
+
"searchLabel": {
|
|
6981
|
+
"type": "string",
|
|
6982
|
+
"required": false
|
|
6983
|
+
}
|
|
6984
|
+
},
|
|
6985
|
+
"events": [
|
|
6986
|
+
{
|
|
6987
|
+
"name": "dsDestinationChange",
|
|
6988
|
+
"detail": "ShellMobileBarDestinationDetail"
|
|
6989
|
+
},
|
|
6990
|
+
{
|
|
6991
|
+
"name": "dsNavigationToggle",
|
|
6992
|
+
"detail": "boolean"
|
|
6993
|
+
}
|
|
6994
|
+
],
|
|
6995
|
+
"slots": []
|
|
6996
|
+
},
|
|
6997
|
+
"exports": {
|
|
6998
|
+
"customElement": "ds-shell-mobile-bar",
|
|
6999
|
+
"react": "DsShellMobileBar",
|
|
7000
|
+
"angular": "DsShellMobileBar"
|
|
7001
|
+
},
|
|
7002
|
+
"dependencies": [
|
|
7003
|
+
"@ds-mo/ui",
|
|
7004
|
+
"@ds-mo/tokens",
|
|
7005
|
+
"@ds-mo/icons"
|
|
7006
|
+
],
|
|
7007
|
+
"componentDependencies": [
|
|
7008
|
+
"icon",
|
|
7009
|
+
"text"
|
|
7010
|
+
]
|
|
7011
|
+
},
|
|
7012
|
+
{
|
|
7013
|
+
"id": "component:ds-shell-mobile-nav",
|
|
7014
|
+
"tag": "ds-shell-mobile-nav",
|
|
7015
|
+
"name": "shell-mobile-nav",
|
|
7016
|
+
"title": "ShellMobileNav",
|
|
7017
|
+
"summary": "Full-height mobile primary navigation pane with local Dashboard and Settings browsing.",
|
|
7018
|
+
"intentStatus": "complete",
|
|
7019
|
+
"intent": {
|
|
7020
|
+
"audience": "specialized",
|
|
7021
|
+
"status": "experimental",
|
|
7022
|
+
"summary": "Full-height mobile primary navigation pane with local Dashboard and Settings browsing.",
|
|
7023
|
+
"useWhen": [
|
|
7024
|
+
"The mobile ShellApp Menu control needs to expose the complete primary navigation collection."
|
|
7025
|
+
],
|
|
7026
|
+
"avoidWhen": [
|
|
7027
|
+
"Rendering desktop PanelNav.",
|
|
7028
|
+
"Switching local page content."
|
|
7029
|
+
],
|
|
7030
|
+
"commonlyComposedWith": [
|
|
7031
|
+
"component:ds-shell-app",
|
|
7032
|
+
"component:ds-shell-mobile-bar"
|
|
7033
|
+
],
|
|
7034
|
+
"patterns": [
|
|
7035
|
+
"pattern:application-shell"
|
|
7036
|
+
],
|
|
7037
|
+
"accessibility": [
|
|
7038
|
+
"The pane is a named navigation landmark and retains visible labels for every destination.",
|
|
7039
|
+
"Escape requests dismissal and opening moves focus to the selected or first available area."
|
|
7040
|
+
],
|
|
7041
|
+
"states": [
|
|
7042
|
+
"Dashboard and Settings change only the collection being browsed.",
|
|
7043
|
+
"Area, Help, and Account events express intent while the application owns navigation and product behavior."
|
|
7044
|
+
],
|
|
7045
|
+
"responsiveBehavior": [
|
|
7046
|
+
"The pane fills the mobile content stage while the bottom bar remains available."
|
|
7047
|
+
],
|
|
7048
|
+
"references": [
|
|
7049
|
+
{
|
|
7050
|
+
"label": "Storybook",
|
|
7051
|
+
"path": "src/wc/components/ShellMobileNav/ShellMobileNav.stories.ts"
|
|
7052
|
+
}
|
|
7053
|
+
]
|
|
7054
|
+
},
|
|
7055
|
+
"api": {
|
|
7056
|
+
"props": {
|
|
7057
|
+
"accountLabel": {
|
|
7058
|
+
"type": "string",
|
|
7059
|
+
"required": false
|
|
7060
|
+
},
|
|
7061
|
+
"browseContext": {
|
|
7062
|
+
"type": "NavChromeStyle",
|
|
7063
|
+
"required": false
|
|
7064
|
+
},
|
|
7065
|
+
"currentUrl": {
|
|
7066
|
+
"type": "string",
|
|
7067
|
+
"required": false
|
|
7068
|
+
},
|
|
7069
|
+
"dashboardGroups": {
|
|
7070
|
+
"type": "PanelNavGroup[]",
|
|
7071
|
+
"required": false
|
|
7072
|
+
},
|
|
7073
|
+
"dashboardLabel": {
|
|
7074
|
+
"type": "string",
|
|
7075
|
+
"required": false
|
|
7076
|
+
},
|
|
7077
|
+
"heading": {
|
|
7078
|
+
"type": "string",
|
|
7079
|
+
"required": false
|
|
7080
|
+
},
|
|
7081
|
+
"helpLabel": {
|
|
7082
|
+
"type": "string",
|
|
7083
|
+
"required": false
|
|
7084
|
+
},
|
|
7085
|
+
"navigationLabel": {
|
|
7086
|
+
"type": "string",
|
|
7087
|
+
"required": false
|
|
7088
|
+
},
|
|
7089
|
+
"open": {
|
|
7090
|
+
"type": "boolean",
|
|
7091
|
+
"required": false
|
|
7092
|
+
},
|
|
7093
|
+
"settingsGroups": {
|
|
7094
|
+
"type": "PanelNavGroup[]",
|
|
7095
|
+
"required": false
|
|
7096
|
+
},
|
|
7097
|
+
"settingsLabel": {
|
|
7098
|
+
"type": "string",
|
|
7099
|
+
"required": false
|
|
7100
|
+
}
|
|
7101
|
+
},
|
|
7102
|
+
"events": [
|
|
7103
|
+
{
|
|
7104
|
+
"name": "dsAreaSelect",
|
|
7105
|
+
"detail": "string"
|
|
7106
|
+
},
|
|
7107
|
+
{
|
|
7108
|
+
"name": "dsAuxiliarySelect",
|
|
7109
|
+
"detail": "ShellMobileNavAuxiliaryDetail"
|
|
7110
|
+
},
|
|
7111
|
+
{
|
|
7112
|
+
"name": "dsBrowseContextChange",
|
|
7113
|
+
"detail": "NavChromeStyle"
|
|
7114
|
+
},
|
|
7115
|
+
{
|
|
7116
|
+
"name": "dsClose",
|
|
7117
|
+
"detail": "void"
|
|
7118
|
+
}
|
|
7119
|
+
],
|
|
7120
|
+
"slots": []
|
|
7121
|
+
},
|
|
7122
|
+
"exports": {
|
|
7123
|
+
"customElement": "ds-shell-mobile-nav",
|
|
7124
|
+
"react": "DsShellMobileNav",
|
|
7125
|
+
"angular": "DsShellMobileNav"
|
|
7126
|
+
},
|
|
7127
|
+
"dependencies": [
|
|
7128
|
+
"@ds-mo/ui",
|
|
7129
|
+
"@ds-mo/tokens",
|
|
7130
|
+
"@ds-mo/icons"
|
|
7131
|
+
],
|
|
7132
|
+
"componentDependencies": [
|
|
7133
|
+
"icon",
|
|
7134
|
+
"tab-group",
|
|
7135
|
+
"text"
|
|
7136
|
+
]
|
|
7137
|
+
},
|
|
7138
|
+
{
|
|
7139
|
+
"id": "component:ds-shell-mobile-section-nav",
|
|
7140
|
+
"tag": "ds-shell-mobile-section-nav",
|
|
7141
|
+
"name": "shell-mobile-section-nav",
|
|
7142
|
+
"title": "ShellMobileSectionNav",
|
|
7143
|
+
"summary": "Horizontally scrollable mobile route navigation corresponding to the active area's desktop BarNav.",
|
|
7144
|
+
"intentStatus": "complete",
|
|
7145
|
+
"intent": {
|
|
7146
|
+
"audience": "specialized",
|
|
7147
|
+
"status": "experimental",
|
|
7148
|
+
"summary": "Horizontally scrollable mobile route navigation corresponding to the active area's desktop BarNav.",
|
|
7149
|
+
"useWhen": [
|
|
7150
|
+
"ShellApp is rendering the below-768px routed workspace and the active area has peer route sections."
|
|
7151
|
+
],
|
|
7152
|
+
"avoidWhen": [
|
|
7153
|
+
"Choices switch local content without navigation; use TabGroup.",
|
|
7154
|
+
"Rendering the desktop or tablet secondary navigation; use BarNav."
|
|
7155
|
+
],
|
|
7156
|
+
"alternatives": [
|
|
7157
|
+
{
|
|
7158
|
+
"when": "The choices switch local content without changing routes.",
|
|
7159
|
+
"component": "component:ds-tab-group",
|
|
7160
|
+
"reason": "TabGroup owns local view selection."
|
|
7161
|
+
}
|
|
7162
|
+
],
|
|
7163
|
+
"commonlyComposedWith": [
|
|
7164
|
+
"component:ds-shell-app",
|
|
7165
|
+
"component:ds-shell-mobile-bar",
|
|
7166
|
+
"component:ds-bar-nav"
|
|
7167
|
+
],
|
|
7168
|
+
"patterns": [
|
|
7169
|
+
"pattern:application-shell"
|
|
7170
|
+
],
|
|
7171
|
+
"accessibility": [
|
|
7172
|
+
"The row is a named navigation landmark and the selected section exposes aria-current.",
|
|
7173
|
+
"Disabled route sections remain visible but cannot emit navigation intent."
|
|
7174
|
+
],
|
|
7175
|
+
"states": [
|
|
7176
|
+
"The host router owns the current URL and handles dsTabChange.",
|
|
7177
|
+
"Detail routes that do not match a section show the active-area heading."
|
|
7178
|
+
],
|
|
7179
|
+
"responsiveBehavior": [
|
|
7180
|
+
"The row scrolls horizontally without wrapping and centers the selected section when selection changes."
|
|
7181
|
+
],
|
|
7182
|
+
"frameworkCaveats": {
|
|
7183
|
+
"customElements": [
|
|
7184
|
+
"Assign tabs as a JavaScript property and update currentUrl and basePath with router state."
|
|
7185
|
+
],
|
|
7186
|
+
"react": [
|
|
7187
|
+
"Pass the same BarNavTab array used by the desktop BarNav through the generated React wrapper."
|
|
7188
|
+
],
|
|
7189
|
+
"angular": [
|
|
7190
|
+
"Import the generated standalone adapter and bind tabs as a property."
|
|
7191
|
+
]
|
|
7192
|
+
},
|
|
7193
|
+
"references": [
|
|
7194
|
+
{
|
|
7195
|
+
"label": "Storybook",
|
|
7196
|
+
"path": "src/wc/components/ShellMobileSectionNav/ShellMobileSectionNav.stories.ts"
|
|
7197
|
+
}
|
|
7198
|
+
]
|
|
7199
|
+
},
|
|
7200
|
+
"api": {
|
|
7201
|
+
"props": {
|
|
7202
|
+
"basePath": {
|
|
7203
|
+
"type": "string",
|
|
7204
|
+
"required": false
|
|
7205
|
+
},
|
|
7206
|
+
"currentUrl": {
|
|
7207
|
+
"type": "string",
|
|
7208
|
+
"required": false
|
|
7209
|
+
},
|
|
7210
|
+
"heading": {
|
|
7211
|
+
"type": "string | undefined",
|
|
7212
|
+
"required": false
|
|
7213
|
+
},
|
|
7214
|
+
"navigationLabel": {
|
|
7215
|
+
"type": "string",
|
|
7216
|
+
"required": false
|
|
7217
|
+
},
|
|
7218
|
+
"tabs": {
|
|
7219
|
+
"type": "BarNavTab[]",
|
|
7220
|
+
"required": false
|
|
7221
|
+
},
|
|
7222
|
+
"tabsJson": {
|
|
7223
|
+
"type": "string",
|
|
7224
|
+
"required": false
|
|
7225
|
+
},
|
|
7226
|
+
"value": {
|
|
7227
|
+
"type": "string",
|
|
7228
|
+
"required": false
|
|
7229
|
+
}
|
|
7230
|
+
},
|
|
7231
|
+
"events": [
|
|
7232
|
+
{
|
|
7233
|
+
"name": "dsTabChange",
|
|
7234
|
+
"detail": "string"
|
|
7235
|
+
}
|
|
7236
|
+
],
|
|
7237
|
+
"slots": []
|
|
7238
|
+
},
|
|
7239
|
+
"exports": {
|
|
7240
|
+
"customElement": "ds-shell-mobile-section-nav",
|
|
7241
|
+
"react": "DsShellMobileSectionNav",
|
|
7242
|
+
"angular": "DsShellMobileSectionNav"
|
|
7243
|
+
},
|
|
7244
|
+
"dependencies": [
|
|
7245
|
+
"@ds-mo/ui",
|
|
7246
|
+
"@ds-mo/tokens"
|
|
7247
|
+
],
|
|
7248
|
+
"componentDependencies": [
|
|
7249
|
+
"text"
|
|
7250
|
+
]
|
|
7251
|
+
},
|
|
6382
7252
|
{
|
|
6383
7253
|
"id": "component:ds-shell-page",
|
|
6384
7254
|
"tag": "ds-shell-page",
|
|
6385
7255
|
"name": "shell-page",
|
|
6386
7256
|
"title": "ShellPage",
|
|
6387
|
-
"summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement,
|
|
7257
|
+
"summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, application-supplied BarTitle capacity, stable scroll compaction, and optional page-content inset without creating a nested scroll container.",
|
|
6388
7258
|
"intentStatus": "complete",
|
|
6389
7259
|
"intent": {
|
|
6390
7260
|
"audience": "general",
|
|
6391
7261
|
"status": "stable",
|
|
6392
|
-
"summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement,
|
|
7262
|
+
"summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, application-supplied BarTitle capacity, stable scroll compaction, and optional page-content inset without creating a nested scroll container.",
|
|
6393
7263
|
"useWhen": [
|
|
6394
7264
|
"Rendering a standard routed page inside ShellApp's default content region.",
|
|
6395
|
-
"BarTitle should expand at a roomy page top, compact after scroll, or use constrained action layout when the
|
|
7265
|
+
"BarTitle should expand at a roomy page top, compact after scroll, or use constrained action layout when the application shell reports reduced capacity.",
|
|
6396
7266
|
"BarWorkflow needs sticky page-level placement while remaining compact.",
|
|
6397
7267
|
"Pages need consistent content gutters with an explicit full-bleed option."
|
|
6398
7268
|
],
|
|
@@ -6429,16 +7299,18 @@
|
|
|
6429
7299
|
"Responsive variant changes preserve the same heading, controls, accessible names, and keyboard focus targets."
|
|
6430
7300
|
],
|
|
6431
7301
|
"states": [
|
|
6432
|
-
"
|
|
7302
|
+
"headerCapacity=roomy, compact, or constrained is supplied before paint by the owning application shell and describes the page-header space available after viewport and shell-chrome policy are applied.",
|
|
7303
|
+
"headerPresentation=auto selects the matching header variant from headerCapacity and scroll position.",
|
|
6433
7304
|
"expanded, compact, and constrained are explicit overrides for exceptional layouts and deterministic examples.",
|
|
6434
7305
|
"contentInset=default supplies standard page gutters; none permits maps, canvases, and other full-bleed content.",
|
|
6435
7306
|
"The required header slot accepts one BarTitle or BarWorkflow. The default slot owns router output and all page product content."
|
|
6436
7307
|
],
|
|
6437
7308
|
"responsiveBehavior": [
|
|
6438
|
-
"
|
|
6439
|
-
"Roomy
|
|
6440
|
-
"A
|
|
6441
|
-
"
|
|
7309
|
+
"The owning application shell resolves viewport and persistent-chrome state into the explicit headerCapacity prop; ShellPage never guesses the cause of reduced width from its own rendered size.",
|
|
7310
|
+
"Roomy capacity expands at the top and compacts after scroll; compact capacity stays compact; constrained capacity uses the constrained action layout.",
|
|
7311
|
+
"A ShellPage-managed BarTitle remains concealed until headerCapacity is available and its rendered variant matches the resolved presentation, preventing a default-variant flash during route activation.",
|
|
7312
|
+
"Update headerCapacity synchronously with shell layout state so opening tools or crossing application breakpoints cannot briefly render the wrong presentation.",
|
|
7313
|
+
"On roomy pages, the expanded header scrolls upward until its title and action row reaches the compact row position, then snaps variants without moving that shared visual anchor.",
|
|
6442
7314
|
"Scroll compaction preserves the expanded page flow offset so content never jumps beneath the sticky header.",
|
|
6443
7315
|
"ShellPage relies on ShellApp's content scroller and never introduces nested scrolling.",
|
|
6444
7316
|
"BarWorkflow remains compact and is not assigned BarTitle's capacity or scroll variants."
|
|
@@ -6478,6 +7350,10 @@
|
|
|
6478
7350
|
"type": "ShellPageContentInset",
|
|
6479
7351
|
"required": false
|
|
6480
7352
|
},
|
|
7353
|
+
"headerCapacity": {
|
|
7354
|
+
"type": "ShellPageCapacity",
|
|
7355
|
+
"required": false
|
|
7356
|
+
},
|
|
6481
7357
|
"headerPresentation": {
|
|
6482
7358
|
"type": "ShellPageHeaderPresentation",
|
|
6483
7359
|
"required": false
|
|
@@ -6497,6 +7373,169 @@
|
|
|
6497
7373
|
],
|
|
6498
7374
|
"componentDependencies": []
|
|
6499
7375
|
},
|
|
7376
|
+
{
|
|
7377
|
+
"id": "component:ds-shell-tools",
|
|
7378
|
+
"tag": "ds-shell-tools",
|
|
7379
|
+
"name": "shell-tools",
|
|
7380
|
+
"title": "ShellTools",
|
|
7381
|
+
"summary": "Responsive persistent host for shell tools, adapting PanelTools rail and drawer chrome to full-stage mobile Search, Agents, and Inbox surfaces.",
|
|
7382
|
+
"intentStatus": "complete",
|
|
7383
|
+
"intent": {
|
|
7384
|
+
"audience": "specialized",
|
|
7385
|
+
"status": "experimental",
|
|
7386
|
+
"summary": "Responsive persistent host for shell tools, adapting PanelTools rail and drawer chrome to full-stage mobile Search, Agents, and Inbox surfaces.",
|
|
7387
|
+
"useWhen": [
|
|
7388
|
+
"A ShellApp must preserve the same Search, Agents, Messages, Stacks, Activity, and Help product owners across desktop, tablet, and mobile."
|
|
7389
|
+
],
|
|
7390
|
+
"avoidWhen": [
|
|
7391
|
+
"The tools exist only in desktop and tablet chrome; PanelTools remains supported for that case.",
|
|
7392
|
+
"The content is a routed primary application area."
|
|
7393
|
+
],
|
|
7394
|
+
"alternatives": [
|
|
7395
|
+
{
|
|
7396
|
+
"when": "Only legacy rail and drawer behavior is required.",
|
|
7397
|
+
"component": "component:ds-panel-tools",
|
|
7398
|
+
"reason": "PanelTools remains the backward-compatible desktop and tablet primitive."
|
|
7399
|
+
}
|
|
7400
|
+
],
|
|
7401
|
+
"commonlyComposedWith": [
|
|
7402
|
+
"component:ds-shell-app",
|
|
7403
|
+
"component:ds-panel-tool-header",
|
|
7404
|
+
"component:ds-shell-mobile-bar"
|
|
7405
|
+
],
|
|
7406
|
+
"patterns": [
|
|
7407
|
+
"pattern:application-shell"
|
|
7408
|
+
],
|
|
7409
|
+
"accessibility": [
|
|
7410
|
+
"Only the active mobile tool view participates in focus or the accessibility tree.",
|
|
7411
|
+
"Header Back and application-owned header actions preserve the PanelTools event contract.",
|
|
7412
|
+
"Inbox uses TabGroup semantics for Messages, Stacks, and Activity."
|
|
7413
|
+
],
|
|
7414
|
+
"states": [
|
|
7415
|
+
"The application owns open and activeTool and replaces headers when tool depth changes.",
|
|
7416
|
+
"Messages, Stacks, and Activity map to one mobile Inbox destination while retaining the actual active tool id.",
|
|
7417
|
+
"Switching responsive mode must not recreate application-owned slotted product elements."
|
|
7418
|
+
],
|
|
7419
|
+
"responsiveBehavior": [
|
|
7420
|
+
"Desktop and tablet compose PanelTools-compatible rail and drawer chrome.",
|
|
7421
|
+
"Mobile renders the active tool across the shell stage and groups available inbox tools in a segmented control."
|
|
7422
|
+
],
|
|
7423
|
+
"frameworkCaveats": {
|
|
7424
|
+
"customElements": [
|
|
7425
|
+
"Assign items and headers as JavaScript properties and place each persistent owner in its named *-view slot."
|
|
7426
|
+
],
|
|
7427
|
+
"react": [
|
|
7428
|
+
"Keep stable keyed product owner elements in the generated wrapper's named slots."
|
|
7429
|
+
],
|
|
7430
|
+
"angular": [
|
|
7431
|
+
"Bind structured items and headers as properties and keep each tool owner mounted under a named *-view slot."
|
|
7432
|
+
]
|
|
7433
|
+
},
|
|
7434
|
+
"references": [
|
|
7435
|
+
{
|
|
7436
|
+
"label": "Storybook",
|
|
7437
|
+
"path": "src/wc/components/ShellTools/ShellTools.stories.ts"
|
|
7438
|
+
},
|
|
7439
|
+
{
|
|
7440
|
+
"label": "PanelTools contract",
|
|
7441
|
+
"path": "src/wc/components/PanelTools/PanelTools.agent.json"
|
|
7442
|
+
}
|
|
7443
|
+
]
|
|
7444
|
+
},
|
|
7445
|
+
"api": {
|
|
7446
|
+
"props": {
|
|
7447
|
+
"activeTool": {
|
|
7448
|
+
"type": "PanelToolsToolId | ''",
|
|
7449
|
+
"required": false
|
|
7450
|
+
},
|
|
7451
|
+
"fullscreenHeaderMode": {
|
|
7452
|
+
"type": "'shared' | 'split'",
|
|
7453
|
+
"required": false
|
|
7454
|
+
},
|
|
7455
|
+
"headers": {
|
|
7456
|
+
"type": "PanelToolsHeaders",
|
|
7457
|
+
"required": false
|
|
7458
|
+
},
|
|
7459
|
+
"headersJson": {
|
|
7460
|
+
"type": "string",
|
|
7461
|
+
"required": false
|
|
7462
|
+
},
|
|
7463
|
+
"inboxLabel": {
|
|
7464
|
+
"type": "string",
|
|
7465
|
+
"required": false
|
|
7466
|
+
},
|
|
7467
|
+
"inboxNavigationLabel": {
|
|
7468
|
+
"type": "string",
|
|
7469
|
+
"required": false
|
|
7470
|
+
},
|
|
7471
|
+
"items": {
|
|
7472
|
+
"type": "PanelToolsItem[]",
|
|
7473
|
+
"required": false
|
|
7474
|
+
},
|
|
7475
|
+
"itemsJson": {
|
|
7476
|
+
"type": "string",
|
|
7477
|
+
"required": false
|
|
7478
|
+
},
|
|
7479
|
+
"open": {
|
|
7480
|
+
"type": "boolean",
|
|
7481
|
+
"required": false
|
|
7482
|
+
},
|
|
7483
|
+
"presentation": {
|
|
7484
|
+
"type": "'drawer' | 'fullscreen'",
|
|
7485
|
+
"required": false
|
|
7486
|
+
},
|
|
7487
|
+
"responsiveMode": {
|
|
7488
|
+
"type": "ShellResponsiveMode",
|
|
7489
|
+
"required": false
|
|
7490
|
+
},
|
|
7491
|
+
"storageKey": {
|
|
7492
|
+
"type": "string",
|
|
7493
|
+
"required": false
|
|
7494
|
+
},
|
|
7495
|
+
"toolShortcutsLabel": {
|
|
7496
|
+
"type": "string",
|
|
7497
|
+
"required": false
|
|
7498
|
+
},
|
|
7499
|
+
"toolsLabel": {
|
|
7500
|
+
"type": "string",
|
|
7501
|
+
"required": false
|
|
7502
|
+
}
|
|
7503
|
+
},
|
|
7504
|
+
"events": [
|
|
7505
|
+
{
|
|
7506
|
+
"name": "dsHeaderAction",
|
|
7507
|
+
"detail": "{\n tool: PanelToolsToolId;\n id: string;\n }"
|
|
7508
|
+
},
|
|
7509
|
+
{
|
|
7510
|
+
"name": "dsHeaderBack",
|
|
7511
|
+
"detail": "{\n tool: PanelToolsToolId;\n }"
|
|
7512
|
+
},
|
|
7513
|
+
{
|
|
7514
|
+
"name": "dsPresentationChange",
|
|
7515
|
+
"detail": "{\n presentation: 'drawer' | 'fullscreen';\n }"
|
|
7516
|
+
},
|
|
7517
|
+
{
|
|
7518
|
+
"name": "dsToolChange",
|
|
7519
|
+
"detail": "{\n id: PanelToolsToolId;\n selected: boolean;\n }"
|
|
7520
|
+
}
|
|
7521
|
+
],
|
|
7522
|
+
"slots": []
|
|
7523
|
+
},
|
|
7524
|
+
"exports": {
|
|
7525
|
+
"customElement": "ds-shell-tools",
|
|
7526
|
+
"react": "DsShellTools",
|
|
7527
|
+
"angular": "DsShellTools"
|
|
7528
|
+
},
|
|
7529
|
+
"dependencies": [
|
|
7530
|
+
"@ds-mo/ui",
|
|
7531
|
+
"@ds-mo/tokens"
|
|
7532
|
+
],
|
|
7533
|
+
"componentDependencies": [
|
|
7534
|
+
"panel-tool-header",
|
|
7535
|
+
"panel-tools",
|
|
7536
|
+
"tab-group"
|
|
7537
|
+
]
|
|
7538
|
+
},
|
|
6500
7539
|
{
|
|
6501
7540
|
"id": "component:ds-skeleton",
|
|
6502
7541
|
"tag": "ds-skeleton",
|
|
@@ -8014,12 +9053,12 @@
|
|
|
8014
9053
|
"pattern:conversation"
|
|
8015
9054
|
],
|
|
8016
9055
|
"accessibility": [
|
|
8017
|
-
"Provide concise localized status text
|
|
9056
|
+
"Provide concise localized status text; the standard label is Typing followed by a three-dot ellipsis.",
|
|
8018
9057
|
"The polite atomic status announces typing without representing it as a message bubble."
|
|
8019
9058
|
],
|
|
8020
9059
|
"states": [
|
|
8021
9060
|
"TypingIndicator is transient conversation status, never persisted message content.",
|
|
8022
|
-
"Its body-
|
|
9061
|
+
"Its body-medium secondary text may shimmer, while reduced-motion preferences retain a static readable status."
|
|
8023
9062
|
],
|
|
8024
9063
|
"responsiveBehavior": [
|
|
8025
9064
|
"The indicator fills the message content width and wraps only when localized status text requires it."
|