@ds-mo/ui 14.27.1 → 14.29.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/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +28 -18
- package/dist/agent.json +436 -33
- package/dist/angular/ds-button-filled.d.ts +1 -1
- package/dist/angular/ds-button-filled.js +3 -3
- package/dist/angular/ds-button-unfilled.d.ts +1 -1
- package/dist/angular/ds-button-unfilled.js +3 -3
- package/dist/angular/ds-card-navigation.d.ts +20 -0
- package/dist/angular/ds-card-navigation.js +42 -0
- package/dist/angular/ds-card-settings-scope.d.ts +19 -0
- package/dist/angular/ds-card-settings-scope.js +42 -0
- package/dist/angular/ds-menu.d.ts +1 -1
- package/dist/angular/ds-menu.js +3 -3
- package/dist/angular/ds-mobile-bar-nav.d.ts +1 -1
- package/dist/angular/ds-mobile-bar-nav.js +3 -3
- package/dist/angular/ds-mobile-header.d.ts +1 -1
- package/dist/angular/ds-mobile-header.js +3 -3
- package/dist/angular/ds-mobile-section-switcher.d.ts +1 -1
- package/dist/angular/ds-mobile-section-switcher.js +3 -3
- package/dist/angular/ds-mobile-sheet-nav.d.ts +7 -1
- package/dist/angular/ds-mobile-sheet-nav.js +7 -4
- package/dist/angular/ds-panel-nav.d.ts +1 -1
- package/dist/angular/ds-panel-nav.js +3 -3
- package/dist/angular/ds-panel-tool-header.d.ts +1 -1
- package/dist/angular/ds-panel-tool-header.js +3 -3
- package/dist/angular/ds-panel-tool-search.d.ts +1 -1
- package/dist/angular/ds-panel-tool-search.js +3 -3
- package/dist/angular/ds-table.d.ts +1 -1
- package/dist/angular/ds-table.js +3 -3
- package/dist/angular/ds-tag.d.ts +1 -1
- package/dist/angular/ds-tag.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +2 -0
- package/dist/angular/proxies.d.ts +2 -0
- package/dist/angular/proxies.js +2 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.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-banner.js +1 -1
- package/dist/components/ds-bar-action.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-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-navigation.d.ts +11 -0
- package/dist/components/ds-card-navigation.js +2 -0
- package/dist/components/ds-card-navigation.js.map +1 -0
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-overview.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-settings-scope.d.ts +11 -0
- package/dist/components/ds-card-settings-scope.js +2 -0
- package/dist/components/ds-card-settings-scope.js.map +1 -0
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart.js +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-filter-menu.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-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +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.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js.map +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-tool-search.js.map +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select.js +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-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +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-table-filter.js +1 -1
- package/dist/components/ds-table-group.js +1 -1
- package/dist/components/ds-table-group.js.map +1 -1
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-saved-views.js.map +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-search.js.map +1 -1
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table-sort.js.map +1 -1
- package/dist/components/ds-table-toolbar.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-textarea.js.map +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/p--yvQzZoO.js +2 -0
- package/dist/components/p--yvQzZoO.js.map +1 -0
- package/dist/components/{p-Is1lFmwp.js → p-1gt8QlyW.js} +2 -2
- package/dist/components/p-B5AZd41L.js +2 -0
- package/dist/components/p-B5AZd41L.js.map +1 -0
- package/dist/components/p-B5eMVBlz.js +2 -0
- package/dist/components/p-B5eMVBlz.js.map +1 -0
- package/dist/components/{p-Q7AOgrg5.js → p-BCFpqnAg.js} +2 -2
- package/dist/components/p-BFHWoNH3.js +2 -0
- package/dist/components/{p-BVz-r3g0.js.map → p-BFHWoNH3.js.map} +1 -1
- package/dist/components/p-BGnRFtBa.js +2 -0
- package/dist/components/p-BGnRFtBa.js.map +1 -0
- package/dist/components/p-BIDGQ4tc.js +2 -0
- package/dist/components/p-BIDGQ4tc.js.map +1 -0
- package/dist/components/{p-Ctnm9NJP.js → p-BLTHIBsE.js} +2 -2
- package/dist/components/{p-C68oSTb1.js → p-BXT2opmZ.js} +2 -2
- package/dist/components/p-BZDQLjE0.js +2 -0
- package/dist/components/p-BZDQLjE0.js.map +1 -0
- package/dist/components/{p-Q0dkeoJ6.js → p-BdC7wxhu.js} +2 -2
- package/dist/components/{p-Q0dkeoJ6.js.map → p-BdC7wxhu.js.map} +1 -1
- package/dist/components/p-BfVlFinS.js +2 -0
- package/dist/components/{p-CQjUOHiN.js.map → p-BfVlFinS.js.map} +1 -1
- package/dist/components/{p-DGkn8FwV.js → p-Bl5wd3v3.js} +2 -2
- package/dist/components/p-BmRHJ_jo.js +2 -0
- package/dist/components/p-BmRHJ_jo.js.map +1 -0
- package/dist/components/{p-Bb9dA7sl.js → p-BpB2EF9g.js} +2 -2
- package/dist/components/{p-2wIPUcSL.js → p-BwAWZAHk.js} +2 -2
- package/dist/components/{p-B3sRZBZk.js → p-By5TDnbF.js} +2 -2
- package/dist/components/{p-BVpn_e-r.js → p-CDXcINTO.js} +2 -2
- package/dist/components/p-CDXcINTO.js.map +1 -0
- package/dist/components/{p-B3Z5sQin.js → p-CE8gsv7V.js} +2 -2
- package/dist/components/p-CLcwh1kq.js +2 -0
- package/dist/components/p-CLcwh1kq.js.map +1 -0
- package/dist/components/{p-DW8ssbfI.js → p-CN8PQLZu.js} +2 -2
- package/dist/components/p-CcK3UiTu.js +2 -0
- package/dist/components/{p-1604KY3B.js.map → p-CcK3UiTu.js.map} +1 -1
- package/dist/components/{p-CaF5WCci.js → p-Cocq-utR.js} +2 -2
- package/dist/components/p-Cr5vn5JO.js +2 -0
- package/dist/components/{p-to8BxxgT.js.map → p-Cr5vn5JO.js.map} +1 -1
- package/dist/components/{p-Cf5Ai4xx.js → p-Crd3PEUx.js} +2 -2
- package/dist/components/{p-Cf5Ai4xx.js.map → p-Crd3PEUx.js.map} +1 -1
- package/dist/components/{p-BZiGtBBk.js → p-Ct90k-nz.js} +2 -2
- package/dist/components/p-Cx2dWjaW.js +2 -0
- package/dist/components/p-Cx2dWjaW.js.map +1 -0
- package/dist/components/p-CyoLh8su.js +2 -0
- package/dist/components/p-CyoLh8su.js.map +1 -0
- package/dist/components/{p-BXDLR072.js → p-CysCSinT.js} +2 -2
- package/dist/components/{p-BXDLR072.js.map → p-CysCSinT.js.map} +1 -1
- package/dist/components/p-CzbsTZt7.js.map +1 -1
- package/dist/components/p-D1pPq-y0.js +2 -0
- package/dist/components/p-D1pPq-y0.js.map +1 -0
- package/dist/components/{p-VT-5XDkB.js → p-DDOuPq-N.js} +2 -2
- package/dist/components/{p-DkxOEFHN.js → p-DF8W85Tz.js} +2 -2
- package/dist/components/{p-DDqRCDXh.js → p-DSJSnQ1U.js} +2 -2
- package/dist/components/{p-Cr6pDY-e.js → p-DYK0slTb.js} +2 -2
- package/dist/components/{p-D9wZlB_N.js → p-D_QtZZR8.js} +2 -2
- package/dist/components/{p-Bv6FSDPR.js → p-DbDYEEWq.js} +2 -2
- package/dist/components/{p-BEXkJ9lg.js → p-DnQN0pLp.js} +2 -2
- package/dist/components/{p-DIqAdmui.js → p-FiM3rF7B.js} +2 -2
- package/dist/components/p-GbtafFds.js +2 -0
- package/dist/components/p-GbtafFds.js.map +1 -0
- package/dist/components/{p-WFo1x6dN.js → p-Hzz2j1Je.js} +2 -2
- package/dist/components/{p-B9esvbYk.js → p-K39w53Bw.js} +2 -2
- package/dist/components/p-K39w53Bw.js.map +1 -0
- package/dist/components/{p-DQQsS9Rx.js → p-aMyflqva.js} +2 -2
- package/dist/components/{p-DZcIt_JJ.js → p-dgep63_i.js} +2 -2
- package/dist/components/p-frKsmPQn.js +2 -0
- package/dist/components/p-frKsmPQn.js.map +1 -0
- package/dist/components/{p-BMzn2Cmw.js → p-rSC7ZUpy.js} +2 -2
- package/dist/docs/components.json +1025 -44
- package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +11 -3
- package/dist/lib/components/PanelTools/panel-tools-types.d.ts +2 -0
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +2 -0
- package/dist/lib/shell/index.js.map +1 -1
- package/dist/lib/utils/choice-list.d.ts +2 -0
- package/dist/mcp-data/registry/bar-nav.json +7 -2
- package/dist/mcp-data/registry/bar-title.json +8 -3
- package/dist/mcp-data/registry/button-filled.json +26 -5
- package/dist/mcp-data/registry/button-unfilled.json +27 -6
- package/dist/mcp-data/registry/card-navigation.json +255 -0
- package/dist/mcp-data/registry/card-settings-scope.json +314 -0
- package/dist/mcp-data/registry/filter-menu.json +7 -2
- package/dist/mcp-data/registry/menu.json +21 -2
- package/dist/mcp-data/registry/mobile-bar-nav.json +20 -1
- package/dist/mcp-data/registry/mobile-header.json +23 -3
- package/dist/mcp-data/registry/mobile-section-switcher.json +50 -6
- package/dist/mcp-data/registry/mobile-sheet-nav.json +40 -3
- package/dist/mcp-data/registry/panel-nav.json +27 -6
- package/dist/mcp-data/registry/panel-tool-header.json +23 -2
- package/dist/mcp-data/registry/panel-tool-search.json +23 -2
- package/dist/mcp-data/registry/panel-tools.json +7 -2
- package/dist/mcp-data/registry/registry.json +441 -32
- package/dist/mcp-data/registry/select.json +8 -3
- package/dist/mcp-data/registry/shell-app.json +14 -8
- package/dist/mcp-data/registry/shell-tools.json +7 -2
- package/dist/mcp-data/registry/table-group.json +7 -2
- package/dist/mcp-data/registry/table-saved-views.json +7 -2
- package/dist/mcp-data/registry/table-search.json +7 -2
- package/dist/mcp-data/registry/table-sort.json +7 -2
- package/dist/mcp-data/registry/table.json +24 -3
- package/dist/mcp-data/registry/tag.json +24 -3
- package/dist/react/components.d.ts +2 -0
- package/dist/react/components.js +2 -0
- package/dist/react/ds-card-navigation.d.ts +12 -0
- package/dist/react/ds-card-navigation.js +12 -0
- package/dist/react/ds-card-settings-scope.d.ts +12 -0
- package/dist/react/ds-card-settings-scope.js +12 -0
- package/dist/react/ds-mobile-sheet-nav.d.ts +2 -1
- package/dist/react/ds-mobile-sheet-nav.js +1 -0
- package/dist/styles/table.css +1 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +3 -0
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +11 -3
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +11 -5
- package/dist/types/components/CardNavigation/CardNavigation.d.ts +31 -0
- package/dist/types/components/CardNavigation/index.d.ts +2 -0
- package/dist/types/components/CardSettingsScope/CardSettingsScope.d.ts +33 -0
- package/dist/types/components/CardSettingsScope/index.d.ts +2 -0
- package/dist/types/components/Menu/Menu.d.ts +4 -0
- package/dist/types/components/MobileBarNav/MobileBarNav.d.ts +2 -0
- package/dist/types/components/MobileHeader/MobileHeader.d.ts +3 -0
- package/dist/types/components/MobileSectionSwitcher/MobileSectionSwitcher.d.ts +19 -0
- package/dist/types/components/MobileSheetNav/MobileSheetNav.d.ts +15 -2
- package/dist/types/components/PanelNav/PanelNav.d.ts +4 -1
- package/dist/types/components/PanelToolHeader/PanelToolHeader.d.ts +2 -0
- package/dist/types/components/PanelToolSearch/PanelToolSearch.d.ts +2 -0
- package/dist/types/components/PanelTools/panel-tools-types.d.ts +2 -0
- package/dist/types/components/ShellApp/ShellApp.d.ts +5 -2
- package/dist/types/components/ShellApp/shell-app-types.d.ts +2 -0
- package/dist/types/components/Table/Table.d.ts +10 -0
- package/dist/types/components/Table/table-row-view.d.ts +6 -1
- package/dist/types/components/TableSort/TableSort.d.ts +1 -0
- package/dist/types/components/Tag/Tag.d.ts +3 -0
- package/dist/types/components.d.ts +369 -8
- package/dist/types/utils/choice-list.d.ts +2 -0
- package/dist/vue/components.d.ts +2 -0
- package/dist/vue/components.js +2 -0
- package/dist/vue/ds-button-filled.js +1 -0
- package/dist/vue/ds-button-unfilled.js +1 -0
- package/dist/vue/ds-card-navigation.d.ts +3 -0
- package/dist/vue/ds-card-navigation.js +15 -0
- package/dist/vue/ds-card-settings-scope.d.ts +3 -0
- package/dist/vue/ds-card-settings-scope.js +20 -0
- package/dist/vue/ds-menu.js +1 -0
- package/dist/vue/ds-mobile-bar-nav.js +1 -0
- package/dist/vue/ds-mobile-header.js +1 -0
- package/dist/vue/ds-mobile-section-switcher.js +2 -0
- package/dist/vue/ds-mobile-sheet-nav.js +3 -0
- package/dist/vue/ds-panel-nav.js +1 -0
- package/dist/vue/ds-panel-tool-header.js +1 -0
- package/dist/vue/ds-panel-tool-search.js +1 -0
- package/dist/vue/ds-table.js +1 -0
- package/dist/vue/ds-tag.js +1 -0
- package/package.json +1 -1
- package/dist/components/p-1604KY3B.js +0 -2
- package/dist/components/p-537t6oRD.js +0 -2
- package/dist/components/p-537t6oRD.js.map +0 -1
- package/dist/components/p-6_CNVbqa.js +0 -2
- package/dist/components/p-6_CNVbqa.js.map +0 -1
- package/dist/components/p-B9esvbYk.js.map +0 -1
- package/dist/components/p-BIGpc__9.js +0 -2
- package/dist/components/p-BIGpc__9.js.map +0 -1
- package/dist/components/p-BRLDf-NK.js +0 -2
- package/dist/components/p-BRLDf-NK.js.map +0 -1
- package/dist/components/p-BUh2GkPJ.js +0 -2
- package/dist/components/p-BUh2GkPJ.js.map +0 -1
- package/dist/components/p-BVpn_e-r.js.map +0 -1
- package/dist/components/p-BVz-r3g0.js +0 -2
- package/dist/components/p-Bjt_8sLe.js +0 -2
- package/dist/components/p-Bjt_8sLe.js.map +0 -1
- package/dist/components/p-BssZ4SbT.js +0 -2
- package/dist/components/p-BssZ4SbT.js.map +0 -1
- package/dist/components/p-CGQnHNuW.js +0 -2
- package/dist/components/p-CGQnHNuW.js.map +0 -1
- package/dist/components/p-CQjUOHiN.js +0 -2
- package/dist/components/p-Cy1oWIaV.js +0 -2
- package/dist/components/p-Cy1oWIaV.js.map +0 -1
- package/dist/components/p-DQsFmleZ.js +0 -2
- package/dist/components/p-DQsFmleZ.js.map +0 -1
- package/dist/components/p-DlbhmXjH.js +0 -2
- package/dist/components/p-DlbhmXjH.js.map +0 -1
- package/dist/components/p-GEi3hDJQ.js +0 -2
- package/dist/components/p-GEi3hDJQ.js.map +0 -1
- package/dist/components/p-LMmrjmI_.js +0 -2
- package/dist/components/p-LMmrjmI_.js.map +0 -1
- package/dist/components/p-to8BxxgT.js +0 -2
- /package/dist/components/{p-Is1lFmwp.js.map → p-1gt8QlyW.js.map} +0 -0
- /package/dist/components/{p-Q7AOgrg5.js.map → p-BCFpqnAg.js.map} +0 -0
- /package/dist/components/{p-Ctnm9NJP.js.map → p-BLTHIBsE.js.map} +0 -0
- /package/dist/components/{p-C68oSTb1.js.map → p-BXT2opmZ.js.map} +0 -0
- /package/dist/components/{p-DGkn8FwV.js.map → p-Bl5wd3v3.js.map} +0 -0
- /package/dist/components/{p-Bb9dA7sl.js.map → p-BpB2EF9g.js.map} +0 -0
- /package/dist/components/{p-2wIPUcSL.js.map → p-BwAWZAHk.js.map} +0 -0
- /package/dist/components/{p-B3sRZBZk.js.map → p-By5TDnbF.js.map} +0 -0
- /package/dist/components/{p-B3Z5sQin.js.map → p-CE8gsv7V.js.map} +0 -0
- /package/dist/components/{p-DW8ssbfI.js.map → p-CN8PQLZu.js.map} +0 -0
- /package/dist/components/{p-CaF5WCci.js.map → p-Cocq-utR.js.map} +0 -0
- /package/dist/components/{p-BZiGtBBk.js.map → p-Ct90k-nz.js.map} +0 -0
- /package/dist/components/{p-VT-5XDkB.js.map → p-DDOuPq-N.js.map} +0 -0
- /package/dist/components/{p-DkxOEFHN.js.map → p-DF8W85Tz.js.map} +0 -0
- /package/dist/components/{p-DDqRCDXh.js.map → p-DSJSnQ1U.js.map} +0 -0
- /package/dist/components/{p-Cr6pDY-e.js.map → p-DYK0slTb.js.map} +0 -0
- /package/dist/components/{p-D9wZlB_N.js.map → p-D_QtZZR8.js.map} +0 -0
- /package/dist/components/{p-Bv6FSDPR.js.map → p-DbDYEEWq.js.map} +0 -0
- /package/dist/components/{p-BEXkJ9lg.js.map → p-DnQN0pLp.js.map} +0 -0
- /package/dist/components/{p-DIqAdmui.js.map → p-FiM3rF7B.js.map} +0 -0
- /package/dist/components/{p-WFo1x6dN.js.map → p-Hzz2j1Je.js.map} +0 -0
- /package/dist/components/{p-DQQsS9Rx.js.map → p-aMyflqva.js.map} +0 -0
- /package/dist/components/{p-DZcIt_JJ.js.map → p-dgep63_i.js.map} +0 -0
- /package/dist/components/{p-BMzn2Cmw.js.map → p-rSC7ZUpy.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": "14.
|
|
4
|
+
"packageVersion": "14.29.0",
|
|
5
5
|
"kind": "components",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -1121,7 +1121,8 @@
|
|
|
1121
1121
|
"On non-tab detail routes, show the parent PanelNav destination label in BarNav while the detail-page title remains in page content.",
|
|
1122
1122
|
"Dividers and groups visually organize peer route sections only and do not create hierarchy.",
|
|
1123
1123
|
"The application filters unauthorized sections before passing tabs to BarNav.",
|
|
1124
|
-
"Dashboard and Settings route state updates PanelNav groups, BarNav tabs, heading, basePath, currentUrl, and navStyle as one coordinated change."
|
|
1124
|
+
"Dashboard and Settings route state updates PanelNav groups, BarNav tabs, heading, basePath, currentUrl, and navStyle as one coordinated change.",
|
|
1125
|
+
"The overflow trigger automatically retains the shared surface-open wash through menu exit, separately from the selected route."
|
|
1125
1126
|
],
|
|
1126
1127
|
"responsiveBehavior": [
|
|
1127
1128
|
"Keep the BarNav region present so shell height and main-content origin remain stable across routes.",
|
|
@@ -1154,6 +1155,10 @@
|
|
|
1154
1155
|
{
|
|
1155
1156
|
"label": "Application shell composition",
|
|
1156
1157
|
"path": "agent/patterns/application-shell/pattern.agent.json"
|
|
1158
|
+
},
|
|
1159
|
+
{
|
|
1160
|
+
"label": "Surface ownership and trigger state",
|
|
1161
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
1157
1162
|
}
|
|
1158
1163
|
]
|
|
1159
1164
|
},
|
|
@@ -1284,7 +1289,8 @@
|
|
|
1284
1289
|
"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.",
|
|
1285
1290
|
"The one visible ordered action collapses by default in constrained presentation. Use never for an exceptional action whose hierarchy must remain visible; explicit overflow actions never leave the shared menu.",
|
|
1286
1291
|
"showDivider=false removes the bottom divider when the surrounding page composition supplies the boundary; showCompactDivider can independently restore or remove that boundary in compact and constrained variants.",
|
|
1287
|
-
"placement=shell-bar is reserved for ShellApp panel section navigation. It remains compact, omits description and breadcrumb presentation, and preserves applicable Back, section, primary, and overflow controls."
|
|
1292
|
+
"placement=shell-bar is reserved for ShellApp panel section navigation. It remains compact, omits description and breadcrumb presentation, and preserves applicable Back, section, primary, and overflow controls.",
|
|
1293
|
+
"Section, action, split-menu, and overflow triggers automatically retain the shared surface-open wash through exit. The expanded header presentation is layout, not surface ownership, and does not itself acquire a pressed wash."
|
|
1288
1294
|
],
|
|
1289
1295
|
"responsiveBehavior": [
|
|
1290
1296
|
"BarTitle does not observe viewport, shell, scroll, or container state. Its owner selects an explicit variant.",
|
|
@@ -1321,6 +1327,10 @@
|
|
|
1321
1327
|
{
|
|
1322
1328
|
"label": "Cross-browser shell-page and header coverage",
|
|
1323
1329
|
"path": "tests/e2e/bar-title.spec.ts"
|
|
1330
|
+
},
|
|
1331
|
+
{
|
|
1332
|
+
"label": "Surface ownership and trigger state",
|
|
1333
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
1324
1334
|
}
|
|
1325
1335
|
]
|
|
1326
1336
|
},
|
|
@@ -1795,10 +1805,11 @@
|
|
|
1795
1805
|
"Physical press scaling is on by default. Disable it only when an owning composite must keep child or background geometry fixed; hover and pressed interaction washes remain available.",
|
|
1796
1806
|
"Visible labels are emphasized by default. Set labelEmphasis to false when a composed surface deliberately needs the button label to match adjacent regular-weight control labels; this does not change the action hierarchy, foreground, icon, or interaction states.",
|
|
1797
1807
|
"ButtonFilled has no active, pressed, or selected state; a filled action is a command, not a toggle or a persistent selection.",
|
|
1798
|
-
"An open popup is a transient pressed state instead. While
|
|
1808
|
+
"An open popup is a transient pressed state instead. While surfaceOpen is true the pressed wash is held for the popup's complete rendered lifecycle and survives hover, so the trigger reads as held open without introducing a selected treatment.",
|
|
1799
1809
|
"hasMenu supports only the label and icon-label variants. The chevron is what communicates that a menu will open, so an icon-only filled menu button would leave the affordance unstated.",
|
|
1800
1810
|
"Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick.",
|
|
1801
|
-
"Split mode keeps both segments flush and uses a tertiary on-background separator. Rounded changes the shared outer radius without separating the segments."
|
|
1811
|
+
"Split mode keeps both segments flush and uses a tertiary on-background separator. Rounded changes the shared outer radius without separating the segments.",
|
|
1812
|
+
"Use surfaceOpen to identify this command as the owner of a visible menu, picker, or panel, even when that surface is distant. Keep the pressed wash through exit motion without adding selected styling or sustained physical scaling. Inline expansion and completed commands do not acquire this treatment."
|
|
1802
1813
|
],
|
|
1803
1814
|
"responsiveBehavior": [
|
|
1804
1815
|
"Use fill width only when the parent layout calls for a full-width action, commonly on narrow form layouts."
|
|
@@ -1818,6 +1829,10 @@
|
|
|
1818
1829
|
{
|
|
1819
1830
|
"label": "Storybook examples",
|
|
1820
1831
|
"path": "src/wc/components/ButtonFilled/ButtonFilled.stories.ts"
|
|
1832
|
+
},
|
|
1833
|
+
{
|
|
1834
|
+
"label": "Surface ownership and trigger state",
|
|
1835
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
1821
1836
|
}
|
|
1822
1837
|
]
|
|
1823
1838
|
},
|
|
@@ -1907,6 +1922,10 @@
|
|
|
1907
1922
|
"type": "boolean",
|
|
1908
1923
|
"required": false
|
|
1909
1924
|
},
|
|
1925
|
+
"surfaceOpen": {
|
|
1926
|
+
"type": "boolean | undefined",
|
|
1927
|
+
"required": false
|
|
1928
|
+
},
|
|
1910
1929
|
"type": {
|
|
1911
1930
|
"type": "'button' | 'submit' | 'reset'",
|
|
1912
1931
|
"required": false
|
|
@@ -2002,7 +2021,7 @@
|
|
|
2002
2021
|
"accessibility": [
|
|
2003
2022
|
"Provide an explicit accessible name for every icon-only action.",
|
|
2004
2023
|
"In split mode, provide menuAriaLabel for the appended ChevronDown segment, pass controls with the Menu id, and synchronize expanded with the Menu open state.",
|
|
2005
|
-
"Set hasMenu when the button triggers a Menu; it implies aria-haspopup of menu. Pass controls with the Menu id and expanded from the same open state given to Menu.
|
|
2024
|
+
"Set hasMenu when the button triggers a Menu; it implies aria-haspopup of menu. Pass controls with the Menu id and expanded from the same open state given to Menu. Surface-open popup triggers hold only the pressed wash while rendered, without changing their resting foreground; expanded disclosure controls without popup semantics retain the normal resting appearance.",
|
|
2006
2025
|
"Give an icon-only menu button an accessible name that states the role, such as More options or Customize table, because no visible label or chevron carries it.",
|
|
2007
2026
|
"Use haspopup directly for a non-menu popup such as a listbox or dialog; those cases get no chevron.",
|
|
2008
2027
|
"Use pressed only for a genuine toggle button; it supplies aria-pressed and dsChange intent. Use isActive only for owner-controlled visual emphasis inside a composite whose selection semantics live on the owner.",
|
|
@@ -2027,9 +2046,10 @@
|
|
|
2027
2046
|
"Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width.",
|
|
2028
2047
|
"hasMenu covers two distinct menu-button shapes and the variant selects between them. With label or icon-label the action has a menu, and a trailing chevron carries the affordance. With icon the button is a menu and no chevron is added.",
|
|
2029
2048
|
"Because the icon-only shape has no chevron, its glyph must convey the menu on its own. Use Ellipses for a generic more-options or overflow control. Use a specific icon when the menu has a named purpose, such as Table for Customize table.",
|
|
2030
|
-
"An open popup is a transient pressed state rather than a selected one. While
|
|
2049
|
+
"An open popup is a transient pressed state rather than a selected one. While surfaceOpen is true, the pressed wash is held for the popup's complete rendered lifecycle and survives hover without promoting foreground or selected fill, including when chrome opts out of selected fills with activeFill set to false. Expanded disclosure buttons without popup semantics remain visually neutral.",
|
|
2031
2050
|
"Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick.",
|
|
2032
|
-
"Split mode keeps both segments flush and uses a tertiary surface-aware separator. Bordered mode also preserves the shared outer border; borderless mode limits the separator to the content line height."
|
|
2051
|
+
"Split mode keeps both segments flush and uses a tertiary surface-aware separator. Bordered mode also preserves the shared outer border; borderless mode limits the separator to the content line height.",
|
|
2052
|
+
"Use surfaceOpen to identify the owner of a visible menu, picker, or panel, even when it is distant. Preserve it through exit motion independently of expanded semantics, pressed toggles, and isActive selection. It preserves resting foreground and does not hold physical scaling. Inline expansion and last-click history do not acquire this treatment."
|
|
2033
2053
|
],
|
|
2034
2054
|
"responsiveBehavior": [
|
|
2035
2055
|
"The consuming layout decides when an icon-label action becomes icon-only and must provide an explicit accessible name after changing variants. Table caption Customize is one such layout: below 900px it uses the icon shape while keeping the same neutral resting foreground regardless of the controlled column configuration.",
|
|
@@ -2052,6 +2072,10 @@
|
|
|
2052
2072
|
{
|
|
2053
2073
|
"label": "Storybook examples",
|
|
2054
2074
|
"path": "src/wc/components/ButtonUnfilled/ButtonUnfilled.stories.ts"
|
|
2075
|
+
},
|
|
2076
|
+
{
|
|
2077
|
+
"label": "Surface ownership and trigger state",
|
|
2078
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
2055
2079
|
}
|
|
2056
2080
|
]
|
|
2057
2081
|
},
|
|
@@ -2157,6 +2181,10 @@
|
|
|
2157
2181
|
"type": "boolean",
|
|
2158
2182
|
"required": false
|
|
2159
2183
|
},
|
|
2184
|
+
"surfaceOpen": {
|
|
2185
|
+
"type": "boolean | undefined",
|
|
2186
|
+
"required": false
|
|
2187
|
+
},
|
|
2160
2188
|
"type": {
|
|
2161
2189
|
"type": "'button' | 'submit' | 'reset'",
|
|
2162
2190
|
"required": false
|
|
@@ -2318,6 +2346,133 @@
|
|
|
2318
2346
|
"text"
|
|
2319
2347
|
]
|
|
2320
2348
|
},
|
|
2349
|
+
{
|
|
2350
|
+
"id": "component:ds-card-navigation",
|
|
2351
|
+
"tag": "ds-card-navigation",
|
|
2352
|
+
"name": "card-navigation",
|
|
2353
|
+
"title": "CardNavigation",
|
|
2354
|
+
"summary": "Settings-style navigation surface with a native destination link, optional supporting copy, a fixed ChevronRight affordance, and an optional application-owned body.",
|
|
2355
|
+
"intentStatus": "complete",
|
|
2356
|
+
"intent": {
|
|
2357
|
+
"audience": "general",
|
|
2358
|
+
"status": "stable",
|
|
2359
|
+
"summary": "Settings-style navigation surface with a native destination link, optional supporting copy, a fixed ChevronRight affordance, and an optional application-owned body.",
|
|
2360
|
+
"useWhen": [
|
|
2361
|
+
"A settings page needs a card that leads to a deeper settings destination.",
|
|
2362
|
+
"A compact destination card needs the complete surface to act as one link.",
|
|
2363
|
+
"A settings summary must remain visible in a body while only the card header navigates."
|
|
2364
|
+
],
|
|
2365
|
+
"avoidWhen": [
|
|
2366
|
+
"The card edits its contents in place; use CardSetting for the edit-save-cancel workflow.",
|
|
2367
|
+
"The destination is an action without a navigable URL.",
|
|
2368
|
+
"The surface contains a chart, legend, metric visualization, or other data-visualization composition."
|
|
2369
|
+
],
|
|
2370
|
+
"alternatives": [
|
|
2371
|
+
{
|
|
2372
|
+
"when": "The section switches between read-only and editable content in place.",
|
|
2373
|
+
"component": "component:ds-card-setting",
|
|
2374
|
+
"reason": "CardSetting owns the controlled edit-save-cancel workflow."
|
|
2375
|
+
},
|
|
2376
|
+
{
|
|
2377
|
+
"when": "The surface contains a chart or specialized data-visualization composition.",
|
|
2378
|
+
"component": "component:ds-card-chart",
|
|
2379
|
+
"reason": "CardChart owns the independently evolving chart-card contract."
|
|
2380
|
+
}
|
|
2381
|
+
],
|
|
2382
|
+
"commonlyComposedWith": [
|
|
2383
|
+
"component:ds-text",
|
|
2384
|
+
"component:ds-card-setting"
|
|
2385
|
+
],
|
|
2386
|
+
"accessibility": [
|
|
2387
|
+
"CardNavigation renders a native link whenever href resolves to an allowed URL, so Enter activation, link context menus, and modified-click behavior remain available.",
|
|
2388
|
+
"The heading is rendered as an h2 and the optional description contributes to the link's accessible name.",
|
|
2389
|
+
"The ChevronRight icon is decorative because the link text already names the destination.",
|
|
2390
|
+
"Use the content variant only when interactive body content must remain outside the header link; never place interactive descendants inside the navigation-only card.",
|
|
2391
|
+
"dsNavigate is cancelable so client-side routers can prevent native navigation after accepting an unmodified activation."
|
|
2392
|
+
],
|
|
2393
|
+
"states": [
|
|
2394
|
+
"The native link owns hover, pressed, and focus-visible states across the complete card in navigation-only mode.",
|
|
2395
|
+
"In content mode, the native link owns those interaction states only across the header while the body remains application-owned.",
|
|
2396
|
+
"An empty or unsafe href renders non-interactive card chrome without a false keyboard target.",
|
|
2397
|
+
"The application owns destination loading, authorization, not-found, and recovery states after navigation."
|
|
2398
|
+
],
|
|
2399
|
+
"responsiveBehavior": [
|
|
2400
|
+
"Choose sm, md, or lg from the parent layout; the surface never exceeds its parent width.",
|
|
2401
|
+
"Supporting copy wraps while the chevron remains visible at the trailing edge.",
|
|
2402
|
+
"The parent owns wrapping, columns, stacking, and breakpoint changes between cards."
|
|
2403
|
+
],
|
|
2404
|
+
"frameworkCaveats": {
|
|
2405
|
+
"customElements": [
|
|
2406
|
+
"Set href to a valid relative or HTTP(S) URL.",
|
|
2407
|
+
"Prevent dsNavigate only when an application router takes ownership of the same activation."
|
|
2408
|
+
],
|
|
2409
|
+
"react": [
|
|
2410
|
+
"Pass href for native link semantics and use onDsNavigate only when coordinating with a client-side router.",
|
|
2411
|
+
"Use variant content when projecting interactive body content so those controls stay outside the link."
|
|
2412
|
+
],
|
|
2413
|
+
"angular": [
|
|
2414
|
+
"Bind href and prevent dsNavigate before calling Router.navigateByUrl for unmodified primary activations.",
|
|
2415
|
+
"Use variant content when projecting interactive body content so those controls stay outside the link."
|
|
2416
|
+
]
|
|
2417
|
+
},
|
|
2418
|
+
"references": [
|
|
2419
|
+
{
|
|
2420
|
+
"label": "Storybook navigation-only and content examples",
|
|
2421
|
+
"path": "src/wc/components/CardNavigation/CardNavigation.stories.ts"
|
|
2422
|
+
},
|
|
2423
|
+
{
|
|
2424
|
+
"label": "Rendered navigation and interaction coverage",
|
|
2425
|
+
"path": "tests/e2e/card-navigation.spec.ts"
|
|
2426
|
+
}
|
|
2427
|
+
]
|
|
2428
|
+
},
|
|
2429
|
+
"api": {
|
|
2430
|
+
"props": {
|
|
2431
|
+
"cardWidth": {
|
|
2432
|
+
"type": "CardNavigationWidth",
|
|
2433
|
+
"required": false
|
|
2434
|
+
},
|
|
2435
|
+
"description": {
|
|
2436
|
+
"type": "string | undefined",
|
|
2437
|
+
"required": false
|
|
2438
|
+
},
|
|
2439
|
+
"heading": {
|
|
2440
|
+
"type": "string",
|
|
2441
|
+
"required": true
|
|
2442
|
+
},
|
|
2443
|
+
"href": {
|
|
2444
|
+
"type": "string",
|
|
2445
|
+
"required": true
|
|
2446
|
+
},
|
|
2447
|
+
"variant": {
|
|
2448
|
+
"type": "CardNavigationVariant",
|
|
2449
|
+
"required": false
|
|
2450
|
+
}
|
|
2451
|
+
},
|
|
2452
|
+
"events": [
|
|
2453
|
+
{
|
|
2454
|
+
"name": "dsNavigate",
|
|
2455
|
+
"detail": "CardNavigationDetail"
|
|
2456
|
+
}
|
|
2457
|
+
],
|
|
2458
|
+
"slots": []
|
|
2459
|
+
},
|
|
2460
|
+
"exports": {
|
|
2461
|
+
"customElement": "ds-card-navigation",
|
|
2462
|
+
"react": "DsCardNavigation",
|
|
2463
|
+
"vue": "DsCardNavigation",
|
|
2464
|
+
"angular": "DsCardNavigation"
|
|
2465
|
+
},
|
|
2466
|
+
"dependencies": [
|
|
2467
|
+
"@ds-mo/ui",
|
|
2468
|
+
"@ds-mo/tokens",
|
|
2469
|
+
"@ds-mo/icons"
|
|
2470
|
+
],
|
|
2471
|
+
"componentDependencies": [
|
|
2472
|
+
"icon",
|
|
2473
|
+
"text"
|
|
2474
|
+
]
|
|
2475
|
+
},
|
|
2321
2476
|
{
|
|
2322
2477
|
"id": "component:ds-card-overview",
|
|
2323
2478
|
"tag": "ds-card-overview",
|
|
@@ -2635,6 +2790,120 @@
|
|
|
2635
2790
|
"text"
|
|
2636
2791
|
]
|
|
2637
2792
|
},
|
|
2793
|
+
{
|
|
2794
|
+
"id": "component:ds-card-settings-scope",
|
|
2795
|
+
"tag": "ds-card-settings-scope",
|
|
2796
|
+
"name": "card-settings-scope",
|
|
2797
|
+
"title": "CardSettingsScope",
|
|
2798
|
+
"summary": "Compact, theme-aware settings context card with inline product-area and profile menu triggers.",
|
|
2799
|
+
"intentStatus": "complete",
|
|
2800
|
+
"intent": {
|
|
2801
|
+
"audience": "general",
|
|
2802
|
+
"status": "stable",
|
|
2803
|
+
"summary": "Compact, theme-aware settings context card with inline product-area and profile menu triggers.",
|
|
2804
|
+
"useWhen": [
|
|
2805
|
+
"A settings workspace needs to show and change both its product area and the organization or profile being managed."
|
|
2806
|
+
],
|
|
2807
|
+
"avoidWhen": [
|
|
2808
|
+
"The content is a reporting period and metrics summary; use CardOverview.",
|
|
2809
|
+
"The card edits settings in place; use CardSetting."
|
|
2810
|
+
],
|
|
2811
|
+
"commonlyComposedWith": [
|
|
2812
|
+
"component:ds-menu",
|
|
2813
|
+
"component:ds-card-setting"
|
|
2814
|
+
],
|
|
2815
|
+
"accessibility": [
|
|
2816
|
+
"Both scope values are native buttons with popup relationships and controlled expanded state.",
|
|
2817
|
+
"Use the emitted native anchor for menu placement and focus return.",
|
|
2818
|
+
"An empty informational profiles popup uses dialog semantics.",
|
|
2819
|
+
"The shared text-action recipe supplies brand foreground, hover underline, and keyboard focus indication."
|
|
2820
|
+
],
|
|
2821
|
+
"states": [
|
|
2822
|
+
"The application owns the selected area, profile, available choices, permissions, and empty-state copy.",
|
|
2823
|
+
"The card reports popup requests without changing selection or expanded state.",
|
|
2824
|
+
"The surface follows the active theme rather than imposing always-dark colors."
|
|
2825
|
+
],
|
|
2826
|
+
"responsiveBehavior": [
|
|
2827
|
+
"The parent owns sticky positioning and shell offsets.",
|
|
2828
|
+
"The compact sentence wraps when space is constrained so both controls remain available."
|
|
2829
|
+
],
|
|
2830
|
+
"frameworkCaveats": {
|
|
2831
|
+
"angular": [
|
|
2832
|
+
"Import the generated standalone adapter; bind controlled labels and expanded states and handle dsScopeRequest."
|
|
2833
|
+
]
|
|
2834
|
+
},
|
|
2835
|
+
"references": [
|
|
2836
|
+
{
|
|
2837
|
+
"label": "Storybook examples",
|
|
2838
|
+
"path": "src/wc/components/CardSettingsScope/CardSettingsScope.stories.ts"
|
|
2839
|
+
}
|
|
2840
|
+
]
|
|
2841
|
+
},
|
|
2842
|
+
"api": {
|
|
2843
|
+
"props": {
|
|
2844
|
+
"areaControls": {
|
|
2845
|
+
"type": "string | undefined",
|
|
2846
|
+
"required": false
|
|
2847
|
+
},
|
|
2848
|
+
"areaExpanded": {
|
|
2849
|
+
"type": "boolean",
|
|
2850
|
+
"required": false
|
|
2851
|
+
},
|
|
2852
|
+
"areaLabel": {
|
|
2853
|
+
"type": "string",
|
|
2854
|
+
"required": false
|
|
2855
|
+
},
|
|
2856
|
+
"forLabel": {
|
|
2857
|
+
"type": "string",
|
|
2858
|
+
"required": false
|
|
2859
|
+
},
|
|
2860
|
+
"managingLabel": {
|
|
2861
|
+
"type": "string",
|
|
2862
|
+
"required": false
|
|
2863
|
+
},
|
|
2864
|
+
"profileControls": {
|
|
2865
|
+
"type": "string | undefined",
|
|
2866
|
+
"required": false
|
|
2867
|
+
},
|
|
2868
|
+
"profileExpanded": {
|
|
2869
|
+
"type": "boolean",
|
|
2870
|
+
"required": false
|
|
2871
|
+
},
|
|
2872
|
+
"profileLabel": {
|
|
2873
|
+
"type": "string",
|
|
2874
|
+
"required": false
|
|
2875
|
+
},
|
|
2876
|
+
"profilePopup": {
|
|
2877
|
+
"type": "'menu' | 'dialog'",
|
|
2878
|
+
"required": false
|
|
2879
|
+
},
|
|
2880
|
+
"scopeLabel": {
|
|
2881
|
+
"type": "string",
|
|
2882
|
+
"required": false
|
|
2883
|
+
}
|
|
2884
|
+
},
|
|
2885
|
+
"events": [
|
|
2886
|
+
{
|
|
2887
|
+
"name": "dsScopeRequest",
|
|
2888
|
+
"detail": "SettingsScopeRequest"
|
|
2889
|
+
}
|
|
2890
|
+
],
|
|
2891
|
+
"slots": []
|
|
2892
|
+
},
|
|
2893
|
+
"exports": {
|
|
2894
|
+
"customElement": "ds-card-settings-scope",
|
|
2895
|
+
"react": "DsCardSettingsScope",
|
|
2896
|
+
"vue": "DsCardSettingsScope",
|
|
2897
|
+
"angular": "DsCardSettingsScope"
|
|
2898
|
+
},
|
|
2899
|
+
"dependencies": [
|
|
2900
|
+
"@ds-mo/ui",
|
|
2901
|
+
"@ds-mo/tokens"
|
|
2902
|
+
],
|
|
2903
|
+
"componentDependencies": [
|
|
2904
|
+
"text"
|
|
2905
|
+
]
|
|
2906
|
+
},
|
|
2638
2907
|
{
|
|
2639
2908
|
"id": "component:ds-chart",
|
|
2640
2909
|
"tag": "ds-chart",
|
|
@@ -3911,7 +4180,8 @@
|
|
|
3911
4180
|
"Range selection applies the first date immediately as a one-day range; while an end is pending, that selected start retains its bold treatment and hovering or focusing another day paints the rest of the provisional inclusive span faint without emitting a value. A second activation completes an ordered inclusive range and gives both edges the bold treatment. A new activation after completion starts a replacement range.",
|
|
3912
4181
|
"Selection applies immediately and does not close the popup.",
|
|
3913
4182
|
"Changing category replaces the option-pane subtree so checkbox and other option visuals mount in their new state instead of transitioning from the previous category's row state.",
|
|
3914
|
-
"The trigger reports how many filter categories have selections. footerLayout=summary adds a full-width selected-count footer only while values are selected; footerLayout=categories-clear always reserves the category-pane footer height while keeping its inactive divider hidden, then reveals the divider and only its left-aligned Clear action while values are selected."
|
|
4183
|
+
"The trigger reports how many filter categories have selections. footerLayout=summary adds a full-width selected-count footer only while values are selected; footerLayout=categories-clear always reserves the category-pane footer height while keeping its inactive divider hidden, then reveals the divider and only its left-aligned Clear action while values are selected.",
|
|
4184
|
+
"The built-in trigger derives the shared surface-open wash from the rendered popup lifecycle, including closing. For an external trigger, the application owns that relationship and retains the wash until dsAfterClose; selected filter values remain independent."
|
|
3915
4185
|
],
|
|
3916
4186
|
"responsiveBehavior": [
|
|
3917
4187
|
"The popup defaults to the large menu-width token and clamps to the nearest data-ds-overlay-boundary rectangle or the viewport fallback.",
|
|
@@ -3934,6 +4204,10 @@
|
|
|
3934
4204
|
{
|
|
3935
4205
|
"label": "Storybook example",
|
|
3936
4206
|
"path": "src/wc/components/FilterMenu/FilterMenu.stories.ts"
|
|
4207
|
+
},
|
|
4208
|
+
{
|
|
4209
|
+
"label": "Surface ownership and trigger state",
|
|
4210
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
3937
4211
|
}
|
|
3938
4212
|
]
|
|
3939
4213
|
},
|
|
@@ -4725,6 +4999,7 @@
|
|
|
4725
4999
|
"pattern:menu-trigger"
|
|
4726
5000
|
],
|
|
4727
5001
|
"accessibility": [
|
|
5002
|
+
"An empty choice collection can show informational copy in a focusable non-modal dialog instead of rendering a fake disabled action. Escape and Tab retain the normal popup dismissal and anchor-focus behavior.",
|
|
4728
5003
|
"Anchor the menu to the control that opens it and return focus to that control when the menu closes.",
|
|
4729
5004
|
"Open with visible initial focus only when the trigger was activated from the keyboard.",
|
|
4730
5005
|
"Keep disabled items discoverable only when their unavailable state is meaningful.",
|
|
@@ -4807,6 +5082,10 @@
|
|
|
4807
5082
|
"type": "HTMLElement | undefined",
|
|
4808
5083
|
"required": false
|
|
4809
5084
|
},
|
|
5085
|
+
"emptyMessage": {
|
|
5086
|
+
"type": "string",
|
|
5087
|
+
"required": false
|
|
5088
|
+
},
|
|
4810
5089
|
"initialFocusVisible": {
|
|
4811
5090
|
"type": "boolean",
|
|
4812
5091
|
"required": false
|
|
@@ -5403,6 +5682,7 @@
|
|
|
5403
5682
|
],
|
|
5404
5683
|
"states": [
|
|
5405
5684
|
"The fixed groups are Menu plus current area, followed by Search, Activity, Messages, and Agents.",
|
|
5685
|
+
"The shell may retain Help in the context position while another global tool is selected; context identity and active selection are independent.",
|
|
5406
5686
|
"Consumers that intentionally group multiple review tools can replace the Activity destination with Inbox.",
|
|
5407
5687
|
"Selection promotes foreground to primary without painting a selected fill; unselected destinations use tertiary foreground.",
|
|
5408
5688
|
"Opening Mobile Sheet Nav replaces the Menu glyph with Cross while preserving its accessible name.",
|
|
@@ -5475,6 +5755,10 @@
|
|
|
5475
5755
|
"type": "string",
|
|
5476
5756
|
"required": false
|
|
5477
5757
|
},
|
|
5758
|
+
"primaryDestination": {
|
|
5759
|
+
"type": "'area' | 'help'",
|
|
5760
|
+
"required": false
|
|
5761
|
+
},
|
|
5478
5762
|
"searchDot": {
|
|
5479
5763
|
"type": "boolean",
|
|
5480
5764
|
"required": false
|
|
@@ -5552,8 +5836,10 @@
|
|
|
5552
5836
|
"states": [
|
|
5553
5837
|
"Without multiple sections the center renders heading.",
|
|
5554
5838
|
"With multiple sections the center renders the controlled MobileSectionSwitcher by default or an explicitly requested segmented TabGroup.",
|
|
5839
|
+
"Primary section switching without subordinate navigation uses the viewport-edge sheet. Headers exposing both peer sections and subordinate views retain their two-level navigation.",
|
|
5555
5840
|
"The segmented presentation uses the shared fill-width TabGroup contract and divides its centered two-thirds top-bar lane equally between options.",
|
|
5556
|
-
"Optional subsections
|
|
5841
|
+
"Optional subsections use a second row by default. When navigation already exposes peer sections, local views can sit beside a stable page title in one row; they never replace that title or its semantic heading.",
|
|
5842
|
+
"The combined local-view presentation joins the page identity and selected subsection in one outlined sheet trigger. The semantic heading remains the page identity, while Back and page actions stay outside the trigger.",
|
|
5557
5843
|
"Sections represent peer destinations at the current navigation level; subsections represent local views beneath the selected page or detail identity.",
|
|
5558
5844
|
"Brand tone changes surface and foreground without changing geometry or interaction ownership."
|
|
5559
5845
|
],
|
|
@@ -5602,6 +5888,10 @@
|
|
|
5602
5888
|
"type": "string",
|
|
5603
5889
|
"required": false
|
|
5604
5890
|
},
|
|
5891
|
+
"subsectionsPlacement": {
|
|
5892
|
+
"type": "'below' | 'inline' | 'combined'",
|
|
5893
|
+
"required": false
|
|
5894
|
+
},
|
|
5605
5895
|
"subvalue": {
|
|
5606
5896
|
"type": "string",
|
|
5607
5897
|
"required": false
|
|
@@ -5648,12 +5938,12 @@
|
|
|
5648
5938
|
"tag": "ds-mobile-section-switcher",
|
|
5649
5939
|
"name": "mobile-section-switcher",
|
|
5650
5940
|
"title": "MobileSectionSwitcher",
|
|
5651
|
-
"summary": "Controlled mobile section chooser
|
|
5941
|
+
"summary": "Controlled mobile section chooser with a viewport-edge sheet for primary pages and an anchored menu for local views.",
|
|
5652
5942
|
"intentStatus": "complete",
|
|
5653
5943
|
"intent": {
|
|
5654
5944
|
"audience": "specialized",
|
|
5655
5945
|
"status": "experimental",
|
|
5656
|
-
"summary": "Controlled mobile section chooser
|
|
5946
|
+
"summary": "Controlled mobile section chooser with a viewport-edge sheet for primary pages and an anchored menu for local views.",
|
|
5657
5947
|
"useWhen": [
|
|
5658
5948
|
"A mobile page or tool header must combine current-page identity with ordered peer-section navigation."
|
|
5659
5949
|
],
|
|
@@ -5670,13 +5960,17 @@
|
|
|
5670
5960
|
"accessibility": [
|
|
5671
5961
|
"The trigger exposes the current section, popup relationship, and expanded state.",
|
|
5672
5962
|
"Decorative previous and next position hints are hidden from assistive technology.",
|
|
5673
|
-
"The
|
|
5963
|
+
"The sheet is a native modal top-layer dialog: background content is inert, Escape and backdrop dismiss it, and focus returns to the trigger after exit motion. Arrow keys, Home, End, and initial-letter navigation move among enabled destinations.",
|
|
5964
|
+
"The sheet initially focuses the current enabled destination, uses emphasis for selection, and never adds decorative icons to its rows.",
|
|
5674
5965
|
"Peer destinations use menuitem semantics with aria-current on the active page; they do not present a radio-control affordance."
|
|
5675
5966
|
],
|
|
5676
5967
|
"states": [
|
|
5677
5968
|
"Selection is controlled and dsChange reports intent without mutating value.",
|
|
5678
5969
|
"Dividers group menu items but never participate in previous or next resolution.",
|
|
5679
|
-
"The
|
|
5970
|
+
"The anchored local-view menu retains its neighboring-direction hints; the primary-page sheet uses an unfilled perimeter trigger without hints.",
|
|
5971
|
+
"A sheet trigger can combine stable page identity and the current local view, separated by a decorative middle dot. The whole control opens only the supplied local destinations; long page names truncate before crowding out the active view.",
|
|
5972
|
+
"Sheet selection emits navigation intent immediately while exit motion runs independently, so the controlled title can update without waiting for dismissal. Removing the owner or hiding its header closes the top layer without leaving the application blocked.",
|
|
5973
|
+
"The trigger automatically retains the shared surface-open pressed wash through menu or sheet exit. Selecting a destination remains separate from owning the open surface."
|
|
5680
5974
|
],
|
|
5681
5975
|
"responsiveBehavior": [
|
|
5682
5976
|
"Use only in the dedicated mobile header presentation."
|
|
@@ -5685,6 +5979,10 @@
|
|
|
5685
5979
|
{
|
|
5686
5980
|
"label": "Storybook",
|
|
5687
5981
|
"path": "src/wc/components/MobileSectionSwitcher/MobileSectionSwitcher.stories.ts"
|
|
5982
|
+
},
|
|
5983
|
+
{
|
|
5984
|
+
"label": "Surface ownership and trigger state",
|
|
5985
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
5688
5986
|
}
|
|
5689
5987
|
]
|
|
5690
5988
|
},
|
|
@@ -5694,6 +5992,14 @@
|
|
|
5694
5992
|
"type": "string",
|
|
5695
5993
|
"required": false
|
|
5696
5994
|
},
|
|
5995
|
+
"pageLabel": {
|
|
5996
|
+
"type": "string",
|
|
5997
|
+
"required": false
|
|
5998
|
+
},
|
|
5999
|
+
"presentation": {
|
|
6000
|
+
"type": "'menu' | 'sheet'",
|
|
6001
|
+
"required": false
|
|
6002
|
+
},
|
|
5697
6003
|
"sections": {
|
|
5698
6004
|
"type": "TabItem[]",
|
|
5699
6005
|
"required": false
|
|
@@ -5757,7 +6063,10 @@
|
|
|
5757
6063
|
"Escape requests dismissal and opening moves focus to the selected or first available area."
|
|
5758
6064
|
],
|
|
5759
6065
|
"states": [
|
|
5760
|
-
"Dashboard and Settings change only the
|
|
6066
|
+
"Dashboard and Settings change only the destination collection being browsed.",
|
|
6067
|
+
"In nested mode, parents with child routes disclose inline without navigating. Only selecting a child emits route intent; parents without children retain direct navigation.",
|
|
6068
|
+
"Nested branches use the same positional divider and staggered child motion as expanded desktop navigation, without adding disclosure chevrons. Dividers separate an expanded branch from its siblings, not from the outside edge of its group.",
|
|
6069
|
+
"Opening the sheet reveals the current route's branch. Collapsed child groups are inert and hidden from assistive technology while the shared navigation motion runs; child targets keep the mobile row density.",
|
|
5761
6070
|
"Area, Help, and Account events express intent while the application owns navigation and product behavior.",
|
|
5762
6071
|
"Set routeSelectionActive to false while a global tool owns the mobile stage so the underlying router URL remains available without marking its area current.",
|
|
5763
6072
|
"Set showAccount to false when account and user preferences already live in the supplied Settings navigation."
|
|
@@ -5809,6 +6118,10 @@
|
|
|
5809
6118
|
"type": "boolean",
|
|
5810
6119
|
"required": false
|
|
5811
6120
|
},
|
|
6121
|
+
"presentation": {
|
|
6122
|
+
"type": "PanelNavPresentation",
|
|
6123
|
+
"required": false
|
|
6124
|
+
},
|
|
5812
6125
|
"routeSelectionActive": {
|
|
5813
6126
|
"type": "boolean",
|
|
5814
6127
|
"required": false
|
|
@@ -5838,6 +6151,10 @@
|
|
|
5838
6151
|
{
|
|
5839
6152
|
"name": "dsClose",
|
|
5840
6153
|
"detail": "void"
|
|
6154
|
+
},
|
|
6155
|
+
{
|
|
6156
|
+
"name": "dsNavChildSelect",
|
|
6157
|
+
"detail": "PanelNavChildSelectDetail"
|
|
5841
6158
|
}
|
|
5842
6159
|
],
|
|
5843
6160
|
"slots": []
|
|
@@ -6247,9 +6564,10 @@
|
|
|
6247
6564
|
"Dashboard presents day-to-day operational destinations; Settings presents administrative and configuration destinations.",
|
|
6248
6565
|
"The standard footer switches the entire destination collection and navStyle between Dashboard and Settings and exposes the user/account entry.",
|
|
6249
6566
|
"The host owns the external user menu opened from dsNavUserAction.",
|
|
6250
|
-
"While the external user menu is open or closing,
|
|
6567
|
+
"While the external user menu is open or closing, accountMenuSurfaceOpen keeps its trigger visibly pressed without applying selected-destination foreground treatment in either expanded or collapsed presentation.",
|
|
6251
6568
|
"Item and header controls inherit the shared md control radius while local shell geometry continues to own collapsed layout and footer animation positioning.",
|
|
6252
|
-
"On desktop, allow user-controlled expand and collapse and persist the preference with storageKey when cross-session persistence is appropriate."
|
|
6569
|
+
"On desktop, allow user-controlled expand and collapse and persist the preference with storageKey when cross-session persistence is appropriate.",
|
|
6570
|
+
"Flyout triggers automatically hold the shared surface-open wash through exit; expanded inline branches do not. For the external account surface, the application supplies accountMenuSurfaceOpen for its rendered lifetime and keeps accountMenuExpanded tied to disclosure semantics."
|
|
6253
6571
|
],
|
|
6254
6572
|
"responsiveBehavior": [
|
|
6255
6573
|
"At 1200px and wider, default to expanded, allow the user to expand or collapse, and restore the locally persisted desktop preference when available.",
|
|
@@ -6287,6 +6605,10 @@
|
|
|
6287
6605
|
{
|
|
6288
6606
|
"label": "Application shell composition",
|
|
6289
6607
|
"path": "agent/patterns/application-shell/pattern.agent.json"
|
|
6608
|
+
},
|
|
6609
|
+
{
|
|
6610
|
+
"label": "Surface ownership and trigger state",
|
|
6611
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
6290
6612
|
}
|
|
6291
6613
|
]
|
|
6292
6614
|
},
|
|
@@ -6300,6 +6622,10 @@
|
|
|
6300
6622
|
"type": "boolean",
|
|
6301
6623
|
"required": false
|
|
6302
6624
|
},
|
|
6625
|
+
"accountMenuSurfaceOpen": {
|
|
6626
|
+
"type": "boolean | undefined",
|
|
6627
|
+
"required": false
|
|
6628
|
+
},
|
|
6303
6629
|
"activeChildId": {
|
|
6304
6630
|
"type": "string",
|
|
6305
6631
|
"required": false
|
|
@@ -6591,7 +6917,8 @@
|
|
|
6591
6917
|
"Header chrome text is not selectable; actions remain keyboard focusable and interactive.",
|
|
6592
6918
|
"Adjacent trailing actions keep the shared 4px control gap in drawer and fullscreen presentations.",
|
|
6593
6919
|
"When fullscreen and overflow actions appear together, author fullscreen before overflow so Ellipses remains the rightmost action.",
|
|
6594
|
-
"PanelTools supplies application-owned actions and relays their ids through its shared dsHeaderAction event."
|
|
6920
|
+
"PanelTools supplies application-owned actions and relays their ids through its shared dsHeaderAction event.",
|
|
6921
|
+
"Application-owned action surfaces carry surfaceOpen independently from expanded disclosure and pressed toggle state. Retain surfaceOpen until the associated surface completes closing; the header forwards this relationship without owning the menu or panel."
|
|
6595
6922
|
],
|
|
6596
6923
|
"responsiveBehavior": [
|
|
6597
6924
|
"The title truncates between optional leading navigation and trailing action zones."
|
|
@@ -6600,6 +6927,10 @@
|
|
|
6600
6927
|
{
|
|
6601
6928
|
"label": "Standalone examples",
|
|
6602
6929
|
"path": "src/wc/components/PanelToolHeader/PanelToolHeader.stories.ts"
|
|
6930
|
+
},
|
|
6931
|
+
{
|
|
6932
|
+
"label": "Surface ownership and trigger state",
|
|
6933
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
6603
6934
|
}
|
|
6604
6935
|
]
|
|
6605
6936
|
},
|
|
@@ -6633,6 +6964,10 @@
|
|
|
6633
6964
|
"type": "boolean",
|
|
6634
6965
|
"required": false
|
|
6635
6966
|
},
|
|
6967
|
+
"menuSurfaceOpen": {
|
|
6968
|
+
"type": "boolean | undefined",
|
|
6969
|
+
"required": false
|
|
6970
|
+
},
|
|
6636
6971
|
"menuTriggerId": {
|
|
6637
6972
|
"type": "string",
|
|
6638
6973
|
"required": false
|
|
@@ -6713,7 +7048,8 @@
|
|
|
6713
7048
|
"The search icon stays foreground-secondary at rest, hover, focus, active, and while the query is filled.",
|
|
6714
7049
|
"The row and control surface remain transparent so the ShellApp chrome wash is visible behind them.",
|
|
6715
7050
|
"The row divider remains the same tertiary 1px boundary while the input is focused because it belongs to the 48px container rather than the input control.",
|
|
6716
|
-
"With filtering enabled, the md search control, decorative vertical divider, and borderless md Filter action are separated by 8px; filterActive promotes only the trigger foreground without adding a selected fill."
|
|
7051
|
+
"With filtering enabled, the md search control, decorative vertical divider, and borderless md Filter action are separated by 8px; filterActive promotes only the trigger foreground without adding a selected fill.",
|
|
7052
|
+
"Applied filters and an open filter surface are independent states. Use filterSurfaceOpen through the external surface exit while filterExpanded describes disclosure and filterActive describes applied values."
|
|
6717
7053
|
],
|
|
6718
7054
|
"responsiveBehavior": [
|
|
6719
7055
|
"The row fills the available drawer or fullscreen width, allows its search region to shrink inside a 300px drawer without pushing the filter trigger under the tool rail, and does not reduce its control below md density."
|
|
@@ -6736,6 +7072,10 @@
|
|
|
6736
7072
|
{
|
|
6737
7073
|
"label": "Storybook examples",
|
|
6738
7074
|
"path": "src/wc/components/PanelToolSearch/PanelToolSearch.stories.ts"
|
|
7075
|
+
},
|
|
7076
|
+
{
|
|
7077
|
+
"label": "Surface ownership and trigger state",
|
|
7078
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
6739
7079
|
}
|
|
6740
7080
|
]
|
|
6741
7081
|
},
|
|
@@ -6765,6 +7105,10 @@
|
|
|
6765
7105
|
"type": "boolean",
|
|
6766
7106
|
"required": false
|
|
6767
7107
|
},
|
|
7108
|
+
"filterSurfaceOpen": {
|
|
7109
|
+
"type": "boolean | undefined",
|
|
7110
|
+
"required": false
|
|
7111
|
+
},
|
|
6768
7112
|
"filterTriggerId": {
|
|
6769
7113
|
"type": "string",
|
|
6770
7114
|
"required": false
|
|
@@ -6908,7 +7252,8 @@
|
|
|
6908
7252
|
"The application owns slotted tool products and data while PanelTools owns rail ordering, drawer selection, open state, motion, and shell events.",
|
|
6909
7253
|
"Opening and closing clip an already-rendered fixed-width surface. Header and tool content remain fully opaque and retained during width motion; transition completion is accepted only at the measured terminal clip width, after which the closed surface becomes inert and paint-skipped.",
|
|
6910
7254
|
"Entering and exiting fullscreen snaps without borrowing the drawer open or close animation.",
|
|
6911
|
-
"When fullscreenHeaderMode is split, PanelTools suppresses only its fullscreen shared header. The application renders exactly two canonical ds-panel-tool-header instances: a tool-title/list-actions header over the 300px history pane and a chat-title/Exit-fullscreen/chat-actions header over the detail pane. The detail header omits Back because the list remains visible."
|
|
7255
|
+
"When fullscreenHeaderMode is split, PanelTools suppresses only its fullscreen shared header. The application renders exactly two canonical ds-panel-tool-header instances: a tool-title/list-actions header over the 300px history pane and a chat-title/Exit-fullscreen/chat-actions header over the detail pane. The detail header omits Back because the list remains visible.",
|
|
7256
|
+
"Header action surfaceOpen identifies the owner of an external menu or panel without turning that action into a selected tool or toggle. The application owns this surface lifecycle."
|
|
6912
7257
|
],
|
|
6913
7258
|
"responsiveBehavior": [
|
|
6914
7259
|
"The open drawer reduces main-content width and uses --dimension-panel-width-xs (300px) on every supported desktop and tablet viewport.",
|
|
@@ -6947,6 +7292,10 @@
|
|
|
6947
7292
|
{
|
|
6948
7293
|
"label": "Application shell composition",
|
|
6949
7294
|
"path": "agent/patterns/application-shell/pattern.agent.json"
|
|
7295
|
+
},
|
|
7296
|
+
{
|
|
7297
|
+
"label": "Surface ownership and trigger state",
|
|
7298
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
6950
7299
|
}
|
|
6951
7300
|
]
|
|
6952
7301
|
},
|
|
@@ -7539,7 +7888,7 @@
|
|
|
7539
7888
|
"Create sections only for categories that are meaningful to customers, not merely to break a long list into arbitrary chunks.",
|
|
7540
7889
|
"When any option supplies subtext, every row uses the same subtext structure and missing values render an em dash. Subtext should disambiguate or add decision-helpful information.",
|
|
7541
7890
|
"Option labels and the selected trigger label stay on one line and truncate when constrained. Option subtext may wrap to at most two lines.",
|
|
7542
|
-
"Use an option action only for a contextual menu about that user-managed option. The fixed ellipsis action appears on hover, keyboard activity, focus, and touch;
|
|
7891
|
+
"Use an option action only for a contextual menu about that user-managed option. The fixed ellipsis action appears on hover, keyboard activity, focus, and touch; surfaceOpen keeps it visible while its controlled menu is rendered. Activating it emits dsOptionAction without selecting the option or closing the Select popup.",
|
|
7543
7892
|
"Use option subtextActions for a compact set of immediate actions that belong to one option. They render beneath only that option's label using the standard supporting-text inset and rhythm, use action or negative semantic color, and emit dsOptionSubtextAction without selecting the option or closing the popup. Unlike descriptive subtext, they do not reserve a blank supporting line on neighboring options.",
|
|
7544
7893
|
"The optional prefix icon and trailing indicator always use the parent surface's secondary foreground color, including when a selected value promotes the label to primary. When collapseLabel compact icon-only chrome is active, a selected value promotes the prefix icon to primary instead. The default down indicator communicates disclosure; up-down is reserved for compact value steppers such as pagination page size.",
|
|
7545
7894
|
"While the popup is open, the trigger holds the pressed interaction wash without changing its resting foreground or selected-value treatment.",
|
|
@@ -7553,7 +7902,8 @@
|
|
|
7553
7902
|
"The error trigger uses a 1.5px bold-negative inset stroke so invalid state remains distinguishable from the normal 1px border without changing control geometry. Set hasBorder to false for chrome where the trigger must remain borderless at rest, when selected or focused, and when invalid; error semantics and supporting copy remain available.",
|
|
7554
7903
|
"An initially empty option set is not an expected Select use case. The no-results state describes a search with no matches, not a source with no choices.",
|
|
7555
7904
|
"Use options for a flat list or sections for grouped choices; when sections are present they take precedence.",
|
|
7556
|
-
"The background prop describes the actual parent surface and uses the same surface set as ButtonUnfilled."
|
|
7905
|
+
"The background prop describes the actual parent surface and uses the same surface set as ButtonUnfilled.",
|
|
7906
|
+
"Select owns its associated popup and automatically retains the shared surface-open pressed wash. Consumers do not synchronize a second flag for the built-in picker. Contextual option actions are externally owned: their surfaceOpen state keeps the action visible through the associated menu exit, independently of the selected option."
|
|
7557
7907
|
],
|
|
7558
7908
|
"responsiveBehavior": [
|
|
7559
7909
|
"Use width fill for form fields and width hug for compact filter bars. Override those defaults only when the owning layout has a clear constraint.",
|
|
@@ -7584,6 +7934,10 @@
|
|
|
7584
7934
|
{
|
|
7585
7935
|
"label": "Selection patterns",
|
|
7586
7936
|
"path": "src/docs/SelectionPatterns.mdx"
|
|
7937
|
+
},
|
|
7938
|
+
{
|
|
7939
|
+
"label": "Surface ownership and trigger state",
|
|
7940
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
7587
7941
|
}
|
|
7588
7942
|
]
|
|
7589
7943
|
},
|
|
@@ -7866,11 +8220,13 @@
|
|
|
7866
8220
|
"The optional paperTexture property adds a decorative Paper Design texture layer above the gradient or solid chrome frame; its color values are literal shader inputs rather than design tokens.",
|
|
7867
8221
|
"Dashboard represents day-to-day operational work while Settings represents administrative and configuration work; route state selects the context.",
|
|
7868
8222
|
"Replace navigation and pageChrome together from one completed route state.",
|
|
7869
|
-
"When pageChrome.showBack marks a detail depth, mobile chrome
|
|
8223
|
+
"When pageChrome.showBack marks a detail depth, mobile chrome combines the page heading and active local subsection in one sheet trigger; peer route tabs remain in desktop BarNav rather than replacing the detail identity.",
|
|
7870
8224
|
"Route-owned ordered page actions drive both BarTitle and MobileHeader. ShellApp forwards one flat page-action id and owns the derived mobile overflow menu so routes do not duplicate menu state or choices.",
|
|
8225
|
+
"Managed mobile Back and page-action controls use the same large touch density as the mobile navigation header without increasing the shared header height.",
|
|
7871
8226
|
"Managed ShellApp keeps the selected desktop section-navigation presentation and ShellPage present and owns page header stickiness and the content scroller.",
|
|
7872
8227
|
"Route-owned pageChrome independently selects ShellPage contentInset, page-header seams, scroll compaction, expanded and compact header-divider visibility, and contentSurface. ShellApp forwards them while resolving whether desktop title geometry is page-local or shell-bar-owned.",
|
|
7873
|
-
"The application filters unauthorized destinations, sections, and tools before passing them into shell components."
|
|
8228
|
+
"The application filters unauthorized destinations, sections, and tools before passing them into shell components.",
|
|
8229
|
+
"Application-owned header actions and the account trigger retain surface ownership across shell presentations. Supply surfaceOpen on header actions and accountMenuSurfaceOpen on navigation for rendered surface lifetimes; keep disclosure and selected-route state separate."
|
|
7874
8230
|
],
|
|
7875
8231
|
"responsiveBehavior": [
|
|
7876
8232
|
"ShellApp owns the fixed system breakpoints and resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
|
|
@@ -7879,9 +8235,9 @@
|
|
|
7879
8235
|
"On desktop and tablet, panel section navigation replaces BarNav with compact BarTitle; collapsed PanelNav exposes child sections through its anchored flyout.",
|
|
7880
8236
|
"When panel section navigation moves BarTitle into the shell bar, routed content starts at the standard 32px desktop or 16px tablet gutter and ShellPage reports no page-local sticky-header height.",
|
|
7881
8237
|
"On mobile, ShellApp hides and inerts desktop chrome, uses a solid primary stage, and composes MobileHeader, MobileSheetNav, ShellTools, and the persistent MobileBarNav around the same application-owned content.",
|
|
7882
|
-
"
|
|
8238
|
+
"The section-navigation preference also selects mobile navigation: bar preserves flat area selection and the header section picker; panel expands child routes inline in MobileSheetNav and combines the page title with any local subsection in one sheet trigger.",
|
|
7883
8239
|
"Opening MobileSheetNav temporarily overlays the active routed page or global tool; closing it without selecting an area restores that same destination and its nested state. The sheet exposes the router-derived current area only while the routed area owns the mobile stage, so a global tool never leaves an underlying route highlighted.",
|
|
7884
|
-
"Selecting Help from the managed mobile sheet activates the configured Help tool and
|
|
8240
|
+
"Selecting Help from the managed mobile sheet activates the configured Help tool and retains Help as the primary mobile destination across other tool selections until a routed area is selected or navigation changes. This mobile context does not alter desktop or tablet routing.",
|
|
7885
8241
|
"Set navigation.showMobileAccount to false when the Settings destination collection already includes account and user preferences.",
|
|
7886
8242
|
"When a suspended mobile document returns to the foreground, ShellApp refreshes the complete stage paint layer without remounting routed content or tool owners.",
|
|
7887
8243
|
"When the application enables viewport-fit=cover, ShellApp reserves the shared top safe-area inset once for the complete mobile stage; nested routed, sheet, and tool headers must not add a second top inset.",
|
|
@@ -7929,6 +8285,10 @@
|
|
|
7929
8285
|
{
|
|
7930
8286
|
"label": "Application shell contract",
|
|
7931
8287
|
"path": "agent/patterns/application-shell/pattern.agent.json"
|
|
8288
|
+
},
|
|
8289
|
+
{
|
|
8290
|
+
"label": "Surface ownership and trigger state",
|
|
8291
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
7932
8292
|
}
|
|
7933
8293
|
]
|
|
7934
8294
|
},
|
|
@@ -8287,7 +8647,8 @@
|
|
|
8287
8647
|
"Items with mobileDestination inbox map to one mobile Inbox destination while retaining the actual active tool id; the canonical recipe exposes Activity directly and keeps Inbox grouping opt-in.",
|
|
8288
8648
|
"Stable tool ids own named slots; label, order, rail placement, shortcut, and mobile destination are explicit item data.",
|
|
8289
8649
|
"Application-owned rail accessories are forwarded unchanged to PanelTools on desktop and tablet and remain independent from activeTool and open.",
|
|
8290
|
-
"Switching responsive mode must not recreate application-owned slotted product elements."
|
|
8650
|
+
"Switching responsive mode must not recreate application-owned slotted product elements.",
|
|
8651
|
+
"Header actions forward application-owned surfaceOpen through each presentation, independently of expanded semantics and pressed toggles."
|
|
8291
8652
|
],
|
|
8292
8653
|
"responsiveBehavior": [
|
|
8293
8654
|
"Desktop and tablet compose PanelTools-compatible rail and drawer chrome.",
|
|
@@ -8313,6 +8674,10 @@
|
|
|
8313
8674
|
{
|
|
8314
8675
|
"label": "PanelTools contract",
|
|
8315
8676
|
"path": "src/wc/components/PanelTools/PanelTools.agent.json"
|
|
8677
|
+
},
|
|
8678
|
+
{
|
|
8679
|
+
"label": "Surface ownership and trigger state",
|
|
8680
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
8316
8681
|
}
|
|
8317
8682
|
]
|
|
8318
8683
|
},
|
|
@@ -9268,7 +9633,8 @@
|
|
|
9268
9633
|
"Row selection owns the single sticky start lane. One explicitly sized application column can own the sticky end lane, or the start lane when selection is absent. Each sticky boundary owns one fixed divider and a row-clipped directional shadow that paints into the adjacent scrolling columns only while more inline content remains beyond that edge.",
|
|
9269
9634
|
"Cells accept scalar content, standard primary-and-secondary or dual-primary text primitives, declarative Tag, wrapping multiple-Tag content, icon-only, icon-and-text, 16:9 Image, or ButtonUnfilled Action content, or explicit Empty and Blank absence values. Text objects may declare an optional href (and target) on the primary track only; the table renders a native anchor with the shared brand text-action treatment when the URL is safe, and leaves scalars unlinked. Standard secondary copy defaults to the secondary foreground and may declare a semantic Text color when the application data carries intent; an optional tertiary track uses the same subdued body-small recipe as secondary. Secondary and tertiary may also be a short list of colorable runs, rendered on one line with the table's middle-dot separator. A run may supply help to add the shared dotted underline and a bottom-start Tooltip when compact visible copy summarizes supplementary details; explicit line breaks create a compact unbulleted list without obscuring the current cell's earlier tracks. Dual-primary copy keeps both tracks primary unless explicitly colored and does not gain a tertiary track. Body data cells share 8px outer padding; header and group rows keep their own geometry. Text tracks, including Empty, keep 4px inline padding so copy lines up with column-header labels; Tag and icon-only tracks stay on the 8px cell chrome alone. Icon-and-text cells (`kind: 'icon-text'`) place one md prefix icon beside the same copy stack as a text cell. The icon slot takes 2px padding on every side, then a 2px flex gap before the copy; text-track padding stays on the copy. Omit iconLabel when the glyph is decorative. 20px content (body-medium text, md icon, and the row checkbox) sits in a 24px track so it stays optically aligned with 24px Tag and Action content. Single-track text, selection, tag-only, icon-only, icon-and-text, Action, Empty, Blank, and 1-track Image cells resolve a 40px base contract while two-track cells grow to 64px and three-track cells grow to 88px. Every later track adds 24px, so four tracks resolve to 112px, five to 136px, and the sequence may continue. Tracks stack with no gap. Wrapping primary on a 1-track cell uses that same rhythm: two wrapped lines share the 64px row and three wrapped lines share the 88px row. Wrapping secondary keeps primary on the first track and consumes later tracks: two secondary lines share the 88px row and three secondary lines share a 112px fourth track. Keep the same track count in every row of a table or group when those rows should share one height. Tag cells use the inset Tag recipe: md double-inset is a 24px control for tag-only and tag-with-text, while text-with-tag uses sm single-inset at 20px so the second-track pill sits in the same 24px lane. Multiple-Tag cells use `kind: 'tags'`, a positive `tracks` count, and small single-inset Tags that wrap naturally at the column edge. Each wrap line is a 24px track with no stack gap, matching text. The tallest cell establishes the native row height, so all sibling cells match even at four, five, or more tracks; virtual tables use the declared count as the initial estimate and measure responsive wrapping after paint. Action cells primarily use an icon-only Ellipses treatment, render a 24px small ButtonUnfilled, default to unbordered, and emit row, column, and action identities through dsCellAction. When an action cell declares items, that Ellipses trigger opens the shared ds-menu for commands, dividers, inactive rows, and destructive rows instead of emitting on click; choosing a command emits dsCellAction with that item's actionId. Omit items to keep a single-shot control. Image cells declare tracks 1, 2, or 3 so the 16:9 bordered preview fills that body-row content box (cell height minus 8px padding) and the column hugs the resulting width; omit tracks for the 1-track recipe, and keep image tracks aligned with the other cells in the table or group. Image cells fall back to an accessible placeholder when no source is supplied. Empty means the data applies but has no value and renders an em dash with localized assistive text; Blank means the data is not applicable and renders no content. Nullish values remain backward-compatible Empty values. Stable type, variant, and track-count hooks keep every cell family independently styleable.",
|
|
9270
9635
|
"Score-and-text cells (`kind: score-text`) place the small 24px safety score at the top-right of the cell while the same one-, two-, or three-track copy stack as a standard text cell fills from the start edge. The score is top-aligned with the first text track, adds no inner padding, and defaults its accessible name prefix to Safety score. Score-and-text loading geometry uses the matching small score skeleton and declared copy tracks.",
|
|
9271
|
-
"The public @ds-mo/ui/table.css export is the authoritative zero-specificity visual recipe. Override its --ds-table-* properties or target its stable element classes for product-specific styling."
|
|
9636
|
+
"The public @ds-mo/ui/table.css export is the authoritative zero-specificity visual recipe. Override its --ds-table-* properties or target its stable element classes for product-specific styling.",
|
|
9637
|
+
"Use surfaceOpenRowId to identify the interactive row associated with a visible detail panel or other contextual surface. The application owns opening, same-row toggling, switching records, and closing; retain the identity through exit motion, then clear it. Move it when panel navigation changes the displayed record. This pressed wash spans sticky and scrolling cells, follows stable row identity through virtualization, and never checks a checkbox or changes selectedRowIds. Group expansion remains an inline disclosure."
|
|
9272
9638
|
],
|
|
9273
9639
|
"responsiveBehavior": [
|
|
9274
9640
|
"The table keeps native semantics at narrow widths and scrolls horizontally instead of transforming into cards.",
|
|
@@ -9311,6 +9677,10 @@
|
|
|
9311
9677
|
{
|
|
9312
9678
|
"label": "Menu trigger composition",
|
|
9313
9679
|
"path": "agent/patterns/menu-trigger/pattern.agent.json"
|
|
9680
|
+
},
|
|
9681
|
+
{
|
|
9682
|
+
"label": "Surface ownership and trigger state",
|
|
9683
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
9314
9684
|
}
|
|
9315
9685
|
]
|
|
9316
9686
|
},
|
|
@@ -9540,6 +9910,10 @@
|
|
|
9540
9910
|
"type": "boolean",
|
|
9541
9911
|
"required": false
|
|
9542
9912
|
},
|
|
9913
|
+
"surfaceOpenRowId": {
|
|
9914
|
+
"type": "string | undefined",
|
|
9915
|
+
"required": false
|
|
9916
|
+
},
|
|
9543
9917
|
"totalCount": {
|
|
9544
9918
|
"type": "number | undefined",
|
|
9545
9919
|
"required": false
|
|
@@ -9845,7 +10219,8 @@
|
|
|
9845
10219
|
"states": [
|
|
9846
10220
|
"options and grouping are controlled. A data option may supply product-owned orderOptions; otherwise Order defaults to Ascending and Descending. dsGroupChange reports a complete TableGroupingState and dsClear requests null grouping without mutating either input.",
|
|
9847
10221
|
"Selecting a new data point starts at its first custom order option, or ascending when it has no custom order options. Re-selecting the active data point preserves its complete order state.",
|
|
9848
|
-
"Selecting a data point or direction applies immediately and leaves the dialog open so the other pane can be changed."
|
|
10222
|
+
"Selecting a data point or direction applies immediately and leaves the dialog open so the other pane can be changed.",
|
|
10223
|
+
"The grouping picker automatically holds the shared surface-open wash through exit. Opening this picker is separate from expanding an inline table group."
|
|
9849
10224
|
],
|
|
9850
10225
|
"responsiveBehavior": [
|
|
9851
10226
|
"Use in the trailing region of ds-table-toolbar.",
|
|
@@ -9871,6 +10246,10 @@
|
|
|
9871
10246
|
{
|
|
9872
10247
|
"label": "Toolbar composition owner",
|
|
9873
10248
|
"path": "src/wc/components/TableToolbar/TableToolbar.agent.json"
|
|
10249
|
+
},
|
|
10250
|
+
{
|
|
10251
|
+
"label": "Surface ownership and trigger state",
|
|
10252
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
9874
10253
|
}
|
|
9875
10254
|
]
|
|
9876
10255
|
},
|
|
@@ -9971,7 +10350,8 @@
|
|
|
9971
10350
|
"states": [
|
|
9972
10351
|
"views, value, and dirty are controlled. Dirty state is presented only for a selected custom view; the default template never shows the trigger dot or save/discard actions even if dirty is supplied. Selection, create, save, discard, rename, and remove events communicate intent and never mutate application records.",
|
|
9973
10352
|
"The component owns only transient interaction state: the contextual menu, naming dialog, draft name, duplicate-name validation, and focus restoration.",
|
|
9974
|
-
"The default view is a non-editable template. Application-owned custom views appear in a separate section with Rename and Remove actions. New view opens the naming dialog. When an editable selected view is dirty, that view row shows Save and negative Discard supporting actions while the footer remains dedicated to New view. The application decides which table state to capture, restore, and persist."
|
|
10353
|
+
"The default view is a non-editable template. Application-owned custom views appear in a separate section with Rename and Remove actions. New view opens the naming dialog. When an editable selected view is dirty, that view row shows Save and negative Discard supporting actions while the footer remains dedicated to New view. The application decides which table state to capture, restore, and persist.",
|
|
10354
|
+
"The built-in picker and contextual option menu each retain their own surface-open treatment. Opening a view menu does not select that view."
|
|
9975
10355
|
],
|
|
9976
10356
|
"responsiveBehavior": [
|
|
9977
10357
|
"The control remains a single toolbar item and relies on Select, Menu, and Modal collision and viewport behavior. Its trigger hugs short view names and is capped at the compact menu-width token so long names truncate while the dirty dot stays visible. Its choice popup keeps that same token as the minimum width.",
|
|
@@ -9996,6 +10376,10 @@
|
|
|
9996
10376
|
{
|
|
9997
10377
|
"label": "Toolbar composition owner",
|
|
9998
10378
|
"path": "src/wc/components/TableToolbar/TableToolbar.agent.json"
|
|
10379
|
+
},
|
|
10380
|
+
{
|
|
10381
|
+
"label": "Surface ownership and trigger state",
|
|
10382
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
9999
10383
|
}
|
|
10000
10384
|
]
|
|
10001
10385
|
},
|
|
@@ -10123,7 +10507,8 @@
|
|
|
10123
10507
|
"Selected scopes render as neutral md Chips using the double-inset recipe so they remain 24px high inside the 32px md search control and each can be removed directly.",
|
|
10124
10508
|
"Backspace edits a non-empty field-picker query, then closes the open slash listbox when that query is empty. When the table query is empty and the listbox is already closed, the next Backspace removes the last selected field. Ordinary Backspace edits table query text when the listbox is closed.",
|
|
10125
10509
|
"Duplicate, blank, and unknown field identities are ignored for presentation. Selected fields preserve the consumer's order.",
|
|
10126
|
-
"Inactive search leaves the tab order, closes the field listbox, and does not emit query or field changes."
|
|
10510
|
+
"Inactive search leaves the tab order, closes the field listbox, and does not emit query or field changes.",
|
|
10511
|
+
"The field-picker action holds the shared surface-open wash while its listbox is visible; chosen search fields remain independent."
|
|
10127
10512
|
],
|
|
10128
10513
|
"responsiveBehavior": [
|
|
10129
10514
|
"The control fills the available inline size supplied by the table toolbar search slot. Selected Chips and the editable query share one horizontal editor lane so the md control does not grow vertically.",
|
|
@@ -10150,6 +10535,10 @@
|
|
|
10150
10535
|
{
|
|
10151
10536
|
"label": "Toolbar composition owner",
|
|
10152
10537
|
"path": "src/wc/components/TableToolbar/TableToolbar.agent.json"
|
|
10538
|
+
},
|
|
10539
|
+
{
|
|
10540
|
+
"label": "Surface ownership and trigger state",
|
|
10541
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
10153
10542
|
}
|
|
10154
10543
|
]
|
|
10155
10544
|
},
|
|
@@ -10271,7 +10660,8 @@
|
|
|
10271
10660
|
"columns and sort are controlled. dsSortChange reports the next TableSortState and never mutates those inputs. The same sort object is what column headers emit through the table.",
|
|
10272
10661
|
"Selecting a different data field keeps the current direction, or starts ascending when no sort exists. Selecting a direction applies it to the current field, or to the first sortable field when no sort exists. Selecting the already-active field or direction is a no-op and does not toggle the way a header click does.",
|
|
10273
10662
|
"The trigger stays Sort in regular-weight resting secondary chrome. Field and direction selection live in the menu and on column headers, so the trigger never uses active primary emphasis. It keeps pressed interaction paint without physically scaling inside the stable table caption row.",
|
|
10274
|
-
"Compound sortable headers contribute one Data row per segment. Action columns never appear."
|
|
10663
|
+
"Compound sortable headers contribute one Data row per segment. Action columns never appear.",
|
|
10664
|
+
"The trigger automatically holds the shared surface-open wash through menu exit while the selected sort remains independently controlled."
|
|
10275
10665
|
],
|
|
10276
10666
|
"responsiveBehavior": [
|
|
10277
10667
|
"Place the control in the trailing region of ds-table-toolbar with Filter and Group.",
|
|
@@ -10297,6 +10687,10 @@
|
|
|
10297
10687
|
{
|
|
10298
10688
|
"label": "Toolbar composition owner",
|
|
10299
10689
|
"path": "src/wc/components/TableToolbar/TableToolbar.agent.json"
|
|
10690
|
+
},
|
|
10691
|
+
{
|
|
10692
|
+
"label": "Surface ownership and trigger state",
|
|
10693
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
10300
10694
|
}
|
|
10301
10695
|
]
|
|
10302
10696
|
},
|
|
@@ -10496,7 +10890,8 @@
|
|
|
10496
10890
|
"isInset opts into reduced outer geometry only when Tag is nested inside a control of the same density. The default single inset removes 4px overall; insetDepth double removes 8px overall and falls back to single at xs to protect minimum icon geometry. Semantic styling, typography, icons, gaps, radius, and interaction remain unchanged.",
|
|
10497
10891
|
"Labels stay on one line and truncate only when the owner supplies a maximum width.",
|
|
10498
10892
|
"Omitted interactive renders static metadata with no focus, event, or suffix. Interactive adds the fixed ChevronUpDown suffix and emits dsClick without toggling expanded internally.",
|
|
10499
|
-
"isInactive disables only the interactive button and applies the shared inactive treatment."
|
|
10893
|
+
"isInactive disables only the interactive button and applies the shared inactive treatment.",
|
|
10894
|
+
"Interactive tags use surfaceOpen for the associated menu lifecycle, including exit motion. This holds the shared pressed wash without changing the intent that describes the metadata value. Static tags never acquire surface ownership."
|
|
10500
10895
|
],
|
|
10501
10896
|
"responsiveBehavior": [
|
|
10502
10897
|
"The owner selects md, sm, or xs density to match its local layout and owns collection wrapping, overflow, and condensation. Use isInset only for same-density control nesting.",
|
|
@@ -10517,6 +10912,10 @@
|
|
|
10517
10912
|
{
|
|
10518
10913
|
"label": "Storybook examples",
|
|
10519
10914
|
"path": "src/wc/components/Tag/Tag.stories.ts"
|
|
10915
|
+
},
|
|
10916
|
+
{
|
|
10917
|
+
"label": "Surface ownership and trigger state",
|
|
10918
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
10520
10919
|
}
|
|
10521
10920
|
]
|
|
10522
10921
|
},
|
|
@@ -10573,6 +10972,10 @@
|
|
|
10573
10972
|
"size": {
|
|
10574
10973
|
"type": "TagSize",
|
|
10575
10974
|
"required": false
|
|
10975
|
+
},
|
|
10976
|
+
"surfaceOpen": {
|
|
10977
|
+
"type": "boolean | undefined",
|
|
10978
|
+
"required": false
|
|
10576
10979
|
}
|
|
10577
10980
|
},
|
|
10578
10981
|
"events": [
|