@ds-mo/ui 12.0.0 → 12.2.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 +18 -1
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +3 -2
- package/dist/agent.json +314 -41
- package/dist/angular/ds-avatar.d.ts +1 -1
- package/dist/angular/ds-avatar.js +3 -3
- package/dist/angular/ds-bar-workflow.d.ts +28 -0
- package/dist/angular/ds-bar-workflow.js +48 -0
- package/dist/angular/ds-conversation-list.d.ts +1 -1
- package/dist/angular/ds-conversation-list.js +4 -3
- package/dist/angular/ds-scroll-overlay.d.ts +19 -0
- package/dist/angular/ds-scroll-overlay.js +43 -0
- 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-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-avatar.js +1 -1
- package/dist/components/ds-avatar.js.map +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-nav.js.map +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.d.ts +11 -0
- package/dist/components/ds-bar-workflow.js +2 -0
- package/dist/components/ds-bar-workflow.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-donut.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js.map +1 -1
- 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.js +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-line.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +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-section.js.map +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-conversation-list.js.map +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-icon.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-input.js.map +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-composer.js.map +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-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-tools.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-radio.js.map +1 -1
- package/dist/components/ds-scroll-overlay.d.ts +11 -0
- package/dist/components/ds-scroll-overlay.js +2 -0
- package/dist/components/ds-scroll-overlay.js.map +1 -0
- 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-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-page.js.map +1 -1
- 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-tag.js.map +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +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/p-2W-ZjZCR.js +2 -0
- package/dist/components/{p-CwTVEAl2.js.map → p-2W-ZjZCR.js.map} +1 -1
- package/dist/components/p-8OOCLGph.js +2 -0
- package/dist/components/p-8OOCLGph.js.map +1 -0
- package/dist/components/{p-BYHKdFzV.js → p-B8CubPgQ.js} +2 -2
- package/dist/components/{p-DuNZGFkV.js → p-BAfG3M8z.js} +2 -2
- package/dist/components/p-BAfG3M8z.js.map +1 -0
- package/dist/components/p-BE_CDJeL.js +2 -0
- package/dist/components/p-BE_CDJeL.js.map +1 -0
- package/dist/components/{p-BH3es4p7.js → p-BRLDJmkh.js} +2 -2
- package/dist/components/p-BpA9uYKX.js +2 -0
- package/dist/components/p-BpA9uYKX.js.map +1 -0
- package/dist/components/{p-Bs6SS34m.js → p-C0_8K4y7.js} +2 -2
- package/dist/components/{p-BhKhX1er.js → p-CA3kLO7K.js} +2 -2
- package/dist/components/{p-DfIch2Dk.js → p-CCHqsF_H.js} +2 -2
- package/dist/components/p-CG5EX4NW.js +2 -0
- package/dist/components/{p-DABj3qTX.js.map → p-CG5EX4NW.js.map} +1 -1
- package/dist/components/{p-DVk0wxxX.js → p-CHkI3oIS.js} +2 -2
- package/dist/components/{p-liMPkhUP.js → p-CNffejay.js} +2 -2
- package/dist/components/{p-B3YvoGjS.js → p-Cxpl-rzP.js} +2 -2
- package/dist/components/p-CydY-v7X.js +2 -0
- package/dist/components/p-CydY-v7X.js.map +1 -0
- package/dist/components/{p-BkwBtZs3.js → p-D6jK2Hyi.js} +2 -2
- package/dist/components/{p-Cy04lXlc.js → p-DBi1bmOL.js} +2 -2
- package/dist/components/{p-DxeHimqk.js → p-DOCKtrS4.js} +2 -2
- package/dist/components/p-DbpfpeQT.js +2 -0
- package/dist/components/p-DbpfpeQT.js.map +1 -0
- package/dist/components/{p-6vj4kh70.js → p-DcGpdIlT.js} +2 -2
- package/dist/components/p-DyGB97Oy.js +2 -0
- package/dist/components/{p-Dy_sZ-dI.js.map → p-DyGB97Oy.js.map} +1 -1
- package/dist/components/p-GMDGgtY8.js +2 -0
- package/dist/components/{p-BUmDHPr3.js.map → p-GMDGgtY8.js.map} +1 -1
- package/dist/components/{p-Cf2J9MEo.js → p-XgIQ3oI_.js} +2 -2
- package/dist/components/{p-Cf-i-6aE.js → p-ky1msbJ8.js} +2 -2
- package/dist/components/p-xY3TjBF5.js +2 -0
- package/dist/components/{p-DUHcJWTQ.js.map → p-xY3TjBF5.js.map} +1 -1
- package/dist/docs/components.json +685 -56
- package/dist/lib/utils/anchored-popup.d.ts +5 -1
- package/dist/mcp-data/registry/agent-activity.json +1 -1
- package/dist/mcp-data/registry/agent-response.json +10 -5
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +27 -8
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +13 -8
- package/dist/mcp-data/registry/bar-workflow.json +368 -0
- package/dist/mcp-data/registry/button-filled.json +2 -2
- package/dist/mcp-data/registry/button-unfilled.json +2 -2
- package/dist/mcp-data/registry/card-data-viz-donut.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/card-shell-data-viz.json +1 -1
- package/dist/mcp-data/registry/chart-bar.json +1 -1
- package/dist/mcp-data/registry/chart-donut.json +1 -1
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart-line.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +2 -2
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +2 -2
- package/dist/mcp-data/registry/conversation-list-section.json +3 -3
- package/dist/mcp-data/registry/conversation-list.json +37 -10
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +1 -1
- package/dist/mcp-data/registry/icon.json +2 -2
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +16 -11
- package/dist/mcp-data/registry/menu.json +10 -8
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +1 -1
- package/dist/mcp-data/registry/message-scroller.json +4 -4
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +1 -1
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +2 -2
- package/dist/mcp-data/registry/panel-tools.json +1 -1
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +320 -41
- package/dist/mcp-data/registry/scroll-overlay.json +183 -0
- package/dist/mcp-data/registry/select-multi.json +1 -1
- package/dist/mcp-data/registry/select.json +1 -1
- package/dist/mcp-data/registry/shell-app.json +1 -1
- package/dist/mcp-data/registry/shell-gradient-picker.json +1 -1
- package/dist/mcp-data/registry/shell-gradient-swatch.json +2 -2
- package/dist/mcp-data/registry/shell-page.json +15 -11
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +2 -2
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +2 -2
- package/dist/mcp-data/registry/tab-group.json +2 -2
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-data-viz.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/components.d.ts +2 -0
- package/dist/react/components.js +2 -0
- package/dist/react/ds-bar-workflow.d.ts +14 -0
- package/dist/react/ds-bar-workflow.js +16 -0
- package/dist/react/ds-scroll-overlay.d.ts +12 -0
- package/dist/react/ds-scroll-overlay.js +12 -0
- package/dist/styles/prose.css +214 -0
- package/dist/types/components/Avatar/Avatar.d.ts +4 -1
- package/dist/types/components/BarTitle/BarTitle.d.ts +2 -0
- package/dist/types/components/BarWorkflow/BarWorkflow.d.ts +37 -0
- package/dist/types/components/BarWorkflow/bar-workflow-types.d.ts +12 -0
- package/dist/types/components/ConversationList/ConversationList.d.ts +12 -0
- package/dist/types/components/Menu/Menu.d.ts +1 -2
- package/dist/types/components/MessageScroller/MessageScroller.d.ts +1 -6
- package/dist/types/components/ScrollOverlay/ScrollOverlay.d.ts +28 -0
- package/dist/types/components/ShellPage/ShellPage.d.ts +5 -0
- package/dist/types/components.d.ts +231 -3
- package/dist/types/stories/isolated-overlay-docs.d.ts +13 -0
- package/dist/types/utils/anchored-popup.d.ts +5 -1
- package/dist/types/utils/scroll-overlay-controller.d.ts +35 -0
- package/package.json +6 -5
- package/dist/components/p-BUmDHPr3.js +0 -2
- package/dist/components/p-BZZwQfmN.js +0 -2
- package/dist/components/p-BZZwQfmN.js.map +0 -1
- package/dist/components/p-CUik7PCi.js +0 -2
- package/dist/components/p-CUik7PCi.js.map +0 -1
- package/dist/components/p-CwTVEAl2.js +0 -2
- package/dist/components/p-DABj3qTX.js +0 -2
- package/dist/components/p-DUHcJWTQ.js +0 -2
- package/dist/components/p-DuNZGFkV.js.map +0 -1
- package/dist/components/p-Dy_sZ-dI.js +0 -2
- package/dist/components/p-l6PmnW_P.js +0 -2
- package/dist/components/p-l6PmnW_P.js.map +0 -1
- package/dist/components/p-xFbUt9Tc.js +0 -2
- package/dist/components/p-xFbUt9Tc.js.map +0 -1
- /package/dist/components/{p-BYHKdFzV.js.map → p-B8CubPgQ.js.map} +0 -0
- /package/dist/components/{p-BH3es4p7.js.map → p-BRLDJmkh.js.map} +0 -0
- /package/dist/components/{p-Bs6SS34m.js.map → p-C0_8K4y7.js.map} +0 -0
- /package/dist/components/{p-BhKhX1er.js.map → p-CA3kLO7K.js.map} +0 -0
- /package/dist/components/{p-DfIch2Dk.js.map → p-CCHqsF_H.js.map} +0 -0
- /package/dist/components/{p-DVk0wxxX.js.map → p-CHkI3oIS.js.map} +0 -0
- /package/dist/components/{p-liMPkhUP.js.map → p-CNffejay.js.map} +0 -0
- /package/dist/components/{p-B3YvoGjS.js.map → p-Cxpl-rzP.js.map} +0 -0
- /package/dist/components/{p-BkwBtZs3.js.map → p-D6jK2Hyi.js.map} +0 -0
- /package/dist/components/{p-Cy04lXlc.js.map → p-DBi1bmOL.js.map} +0 -0
- /package/dist/components/{p-DxeHimqk.js.map → p-DOCKtrS4.js.map} +0 -0
- /package/dist/components/{p-6vj4kh70.js.map → p-DcGpdIlT.js.map} +0 -0
- /package/dist/components/{p-Cf2J9MEo.js.map → p-XgIQ3oI_.js.map} +0 -0
- /package/dist/components/{p-Cf-i-6aE.js.map → p-ky1msbJ8.js.map} +0 -0
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"peerDependencies": {
|
|
14
14
|
"required": [
|
|
15
15
|
"@ds-mo/tokens ^3.1.1",
|
|
16
|
-
"@ds-mo/icons ^6.
|
|
16
|
+
"@ds-mo/icons ^6.4.0"
|
|
17
17
|
],
|
|
18
18
|
"optional": [],
|
|
19
19
|
"frameworks": "None required for Custom Elements; generated React and Angular adapters are included."
|
|
@@ -136,15 +136,20 @@
|
|
|
136
136
|
],
|
|
137
137
|
"states": [
|
|
138
138
|
"The owner replaces immutable part arrays as scripted or live output changes.",
|
|
139
|
-
"AgentResponse renders directly in Message without borrowing a plain MessageBubble surface."
|
|
139
|
+
"AgentResponse renders directly in Message without borrowing a plain MessageBubble surface.",
|
|
140
|
+
"Markdown parts use the optional safe renderer; prose CSS owns only semantic-tree styling and never response ordering or streaming state."
|
|
140
141
|
],
|
|
141
142
|
"responsiveBehavior": [
|
|
142
|
-
"Rich content uses the available transcript width while respecting readable measure and overflow constraints."
|
|
143
|
+
"Rich content uses the available transcript width while respecting readable measure and local overflow constraints."
|
|
143
144
|
],
|
|
144
145
|
"references": [
|
|
145
146
|
{
|
|
146
|
-
"label": "
|
|
147
|
-
"path": "src/wc/components/
|
|
147
|
+
"label": "Representative streamed response",
|
|
148
|
+
"path": "src/wc/components/AgentResponse/AgentResponse.stories.ts"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"label": "Prose distribution decision",
|
|
152
|
+
"path": "docs/prose-foundation.md"
|
|
148
153
|
}
|
|
149
154
|
]
|
|
150
155
|
},
|
|
@@ -449,7 +454,7 @@
|
|
|
449
454
|
"status": "experimental",
|
|
450
455
|
"summary": "Compact icon avatar for visually identifying a person, group, channel, or conversation type.",
|
|
451
456
|
"useWhen": [
|
|
452
|
-
"A list or message composition needs a consistent
|
|
457
|
+
"A list or message composition needs a consistent circular identity marker represented by an icon at md, sm, or xs control density."
|
|
453
458
|
],
|
|
454
459
|
"avoidWhen": [
|
|
455
460
|
"The identity has a supplied photograph, initials, presence state, or editable profile behavior; those variants are not part of this primitive."
|
|
@@ -460,10 +465,11 @@
|
|
|
460
465
|
],
|
|
461
466
|
"accessibility": [
|
|
462
467
|
"Provide label only when the icon communicates meaning that surrounding text does not already convey.",
|
|
463
|
-
"Omit label when the owning row or message already provides an equivalent accessible name."
|
|
468
|
+
"Omit label when the owning row or message already provides an equivalent accessible name.",
|
|
469
|
+
"Treat primary and secondary as general icon hierarchy; an owning product may map that hierarchy to states such as unread and read, but Avatar does not own those states."
|
|
464
470
|
],
|
|
465
471
|
"responsiveBehavior": [
|
|
466
|
-
"The
|
|
472
|
+
"The selected size stays fixed across viewports: md is a 32px circle with a 20px icon, sm is 24px with 16px, and xs is 16px with 12px."
|
|
467
473
|
],
|
|
468
474
|
"references": [
|
|
469
475
|
{
|
|
@@ -484,6 +490,10 @@
|
|
|
484
490
|
"label": {
|
|
485
491
|
"type": "string | undefined",
|
|
486
492
|
"required": false
|
|
493
|
+
},
|
|
494
|
+
"size": {
|
|
495
|
+
"type": "AvatarSize",
|
|
496
|
+
"required": false
|
|
487
497
|
}
|
|
488
498
|
},
|
|
489
499
|
"events": [],
|
|
@@ -805,7 +815,7 @@
|
|
|
805
815
|
{
|
|
806
816
|
"name": "bar-title",
|
|
807
817
|
"title": "BarTitle",
|
|
808
|
-
"description": "Page-level title chrome with optional
|
|
818
|
+
"description": "Page-level title chrome with optional route navigation, supporting description, inline active-section menu, one primary action, grouped overflow actions, and explicit expanded, compact, or constrained variants.",
|
|
809
819
|
"type": "registry:ui",
|
|
810
820
|
"meta": {
|
|
811
821
|
"library": "@ds-mo/ui",
|
|
@@ -816,11 +826,11 @@
|
|
|
816
826
|
"intent": {
|
|
817
827
|
"audience": "general",
|
|
818
828
|
"status": "stable",
|
|
819
|
-
"summary": "Page-level title chrome with optional
|
|
829
|
+
"summary": "Page-level title chrome with optional route navigation, supporting description, inline active-section menu, one primary action, grouped overflow actions, and explicit expanded, compact, or constrained variants.",
|
|
820
830
|
"useWhen": [
|
|
821
831
|
"A top-level page needs one h1 above its content.",
|
|
822
832
|
"A list or detail page has multiple route-level sections that belong in the inline active-section menu.",
|
|
823
|
-
"A detail
|
|
833
|
+
"A detail page needs a page-level Back action.",
|
|
824
834
|
"A page needs one primary action plus optional secondary or destructive overflow commands."
|
|
825
835
|
],
|
|
826
836
|
"avoidWhen": [
|
|
@@ -831,6 +841,11 @@
|
|
|
831
841
|
"Automatic sticky or responsive page orchestration is required; compose BarTitle in ShellPage rather than implementing it in the header."
|
|
832
842
|
],
|
|
833
843
|
"alternatives": [
|
|
844
|
+
{
|
|
845
|
+
"when": "A create or edit workflow needs Exit, persistent step navigation, and a final Save or Submit action.",
|
|
846
|
+
"component": "component:ds-bar-workflow",
|
|
847
|
+
"reason": "BarWorkflow owns compact-only workflow progression rather than responsive page identity."
|
|
848
|
+
},
|
|
834
849
|
{
|
|
835
850
|
"when": "The header belongs to a PanelTools product view.",
|
|
836
851
|
"component": "component:ds-panel-tool-header",
|
|
@@ -863,8 +878,8 @@
|
|
|
863
878
|
"Omitting Back, sections, primaryAction, and actions produces the top-level title-only header.",
|
|
864
879
|
"Two or more selectable sections add the inline section trigger; one section does not render a redundant menu.",
|
|
865
880
|
"Dividers in sections or actions create separate Menu groups without becoming selectable rows.",
|
|
866
|
-
"expanded renders the larger heading, optional description, inset divider, and an xs icon-label Back breadcrumb
|
|
867
|
-
"primaryAction collapse defaults to auto. Use never for
|
|
881
|
+
"expanded renders the larger heading, optional description, inset divider, and an xs icon-label Back breadcrumb in the top inset. The title and right-side actions share one top alignment whether Back is present, while the description remains in the left title column; compact renders 48px chrome with inline Back; constrained uses compact chrome and moves an auto-collapse primary action into overflow.",
|
|
882
|
+
"primaryAction collapse defaults to auto. Use never for exceptional actions whose hierarchy must remain visible in constrained layouts."
|
|
868
883
|
],
|
|
869
884
|
"responsiveBehavior": [
|
|
870
885
|
"BarTitle does not observe viewport, shell, scroll, or container state. Its owner selects an explicit variant.",
|
|
@@ -986,6 +1001,167 @@
|
|
|
986
1001
|
"tooltip"
|
|
987
1002
|
]
|
|
988
1003
|
},
|
|
1004
|
+
{
|
|
1005
|
+
"name": "bar-workflow",
|
|
1006
|
+
"title": "BarWorkflow",
|
|
1007
|
+
"description": "Compact bold-brand create/edit workflow chrome with Exit, controlled previous and next step navigation, and a final Save or Submit action.",
|
|
1008
|
+
"type": "registry:ui",
|
|
1009
|
+
"meta": {
|
|
1010
|
+
"library": "@ds-mo/ui",
|
|
1011
|
+
"distribution": "npm",
|
|
1012
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/bar-workflow",
|
|
1013
|
+
"source": "src/wc/components/BarWorkflow/BarWorkflow.tsx",
|
|
1014
|
+
"intentStatus": "complete",
|
|
1015
|
+
"intent": {
|
|
1016
|
+
"audience": "general",
|
|
1017
|
+
"status": "stable",
|
|
1018
|
+
"summary": "Compact bold-brand create/edit workflow chrome with Exit, controlled previous and next step navigation, and a final Save or Submit action.",
|
|
1019
|
+
"useWhen": [
|
|
1020
|
+
"A create or edit flow needs persistent page-level Exit and step navigation.",
|
|
1021
|
+
"A single-step form needs the same compact workflow chrome and final Save or Submit action.",
|
|
1022
|
+
"Next or Submit must remain visible while the application owns validation and the current step."
|
|
1023
|
+
],
|
|
1024
|
+
"avoidWhen": [
|
|
1025
|
+
"The header identifies a routed page, list, or detail view; use BarTitle instead.",
|
|
1026
|
+
"The steps must be visibly enumerated or expose progress; BarWorkflow uses steps only to resolve its navigation controls.",
|
|
1027
|
+
"The header belongs to a PanelTools drawer or fullscreen pane; use PanelToolHeader through PanelTools instead.",
|
|
1028
|
+
"The interaction is a local wizard inside page content rather than page-level workflow chrome."
|
|
1029
|
+
],
|
|
1030
|
+
"alternatives": [
|
|
1031
|
+
{
|
|
1032
|
+
"when": "A routed page needs responsive title, section, Back, and page-action presentations.",
|
|
1033
|
+
"component": "component:ds-bar-title",
|
|
1034
|
+
"reason": "BarTitle owns page identity and capacity variants rather than workflow progression."
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
"when": "The workflow belongs to a tool drawer or fullscreen tool pane.",
|
|
1038
|
+
"component": "component:ds-panel-tool-header",
|
|
1039
|
+
"reason": "PanelToolHeader owns tool-pane navigation and actions within PanelTools."
|
|
1040
|
+
}
|
|
1041
|
+
],
|
|
1042
|
+
"commonlyComposedWith": [
|
|
1043
|
+
"component:ds-shell-page",
|
|
1044
|
+
"component:ds-button-filled",
|
|
1045
|
+
"component:ds-button-unfilled",
|
|
1046
|
+
"component:ds-text",
|
|
1047
|
+
"component:ds-tooltip"
|
|
1048
|
+
],
|
|
1049
|
+
"patterns": [],
|
|
1050
|
+
"accessibility": [
|
|
1051
|
+
"Provide one concise workflow heading; BarWorkflow renders exactly one h1 and appends the controlled current-step count as heading · X/N only for multi-step workflows.",
|
|
1052
|
+
"Provide a workflow-specific Exit accessible name that describes the consequence or destination.",
|
|
1053
|
+
"Give every step a stable id and concise label even though step labels are not rendered as visible progress.",
|
|
1054
|
+
"Previous is omitted on the first step; it appears from step two onward. Next remains visible on intermediate steps and becomes the final labeled Check action on the last step.",
|
|
1055
|
+
"Use submitAction.type=submit inside a form so the final action preserves native submission semantics."
|
|
1056
|
+
],
|
|
1057
|
+
"states": [
|
|
1058
|
+
"BarWorkflow always renders compact 48px bold-brand chrome and has no expanded, constrained, or responsive variant.",
|
|
1059
|
+
"An unrecognized value resolves navigation from the first step without mutating the controlled value.",
|
|
1060
|
+
"The first step omits Previous. Intermediate steps show Previous and Next. The last step replaces Next with the Check Save or Submit action.",
|
|
1061
|
+
"The default empty steps array is a single-step flow with the plain heading, no Previous control, and the final action visible. An explicit one-step array behaves the same way.",
|
|
1062
|
+
"isNextInactive blocks forward navigation while preserving the Next control; the target step's isInactive state also blocks entry.",
|
|
1063
|
+
"submitAction owns the final label, native button type, inactive state, and loading state."
|
|
1064
|
+
],
|
|
1065
|
+
"responsiveBehavior": [
|
|
1066
|
+
"BarWorkflow does not expose a presentation variant and never collapses its navigation actions.",
|
|
1067
|
+
"The heading truncates before Exit, Previous, and Next or Submit lose their complete hit targets.",
|
|
1068
|
+
"When slotted into ShellPage, BarWorkflow remains compact while ShellPage continues to provide sticky placement."
|
|
1069
|
+
],
|
|
1070
|
+
"frameworkCaveats": {
|
|
1071
|
+
"customElements": [
|
|
1072
|
+
"Assign steps and submitAction as JavaScript properties and replace their identities when controlled state changes.",
|
|
1073
|
+
"Update value after dsStepChange, handle dsExit in the workflow owner, and use dsSubmit only when product behavior supplements native form submission."
|
|
1074
|
+
],
|
|
1075
|
+
"react": [
|
|
1076
|
+
"Pass steps and submitAction directly to DsBarWorkflow and keep value controlled in the workflow route.",
|
|
1077
|
+
"Place DsBarWorkflow in DsShellPage with slot=header when sticky page placement is required."
|
|
1078
|
+
],
|
|
1079
|
+
"angular": [
|
|
1080
|
+
"Bind steps and submitAction on the standalone DsBarWorkflow adapter and update value from dsStepChange.",
|
|
1081
|
+
"Place ds-bar-workflow in ds-shell-page with slot=header and keep the form or router outlet in ShellPage content."
|
|
1082
|
+
]
|
|
1083
|
+
},
|
|
1084
|
+
"references": [
|
|
1085
|
+
{
|
|
1086
|
+
"label": "Workflow states and controlled navigation",
|
|
1087
|
+
"path": "src/wc/components/BarWorkflow/BarWorkflow.stories.ts"
|
|
1088
|
+
},
|
|
1089
|
+
{
|
|
1090
|
+
"label": "Cross-browser workflow behavior",
|
|
1091
|
+
"path": "tests/e2e/bar-workflow.spec.ts"
|
|
1092
|
+
}
|
|
1093
|
+
]
|
|
1094
|
+
},
|
|
1095
|
+
"props": {
|
|
1096
|
+
"exitAriaLabel": {
|
|
1097
|
+
"type": "string",
|
|
1098
|
+
"required": false
|
|
1099
|
+
},
|
|
1100
|
+
"exitLabel": {
|
|
1101
|
+
"type": "string",
|
|
1102
|
+
"required": false
|
|
1103
|
+
},
|
|
1104
|
+
"heading": {
|
|
1105
|
+
"type": "string",
|
|
1106
|
+
"required": true
|
|
1107
|
+
},
|
|
1108
|
+
"isNextInactive": {
|
|
1109
|
+
"type": "boolean",
|
|
1110
|
+
"required": false
|
|
1111
|
+
},
|
|
1112
|
+
"nextLabel": {
|
|
1113
|
+
"type": "string",
|
|
1114
|
+
"required": false
|
|
1115
|
+
},
|
|
1116
|
+
"previousLabel": {
|
|
1117
|
+
"type": "string",
|
|
1118
|
+
"required": false
|
|
1119
|
+
},
|
|
1120
|
+
"steps": {
|
|
1121
|
+
"type": "BarWorkflowStep[]",
|
|
1122
|
+
"required": false
|
|
1123
|
+
},
|
|
1124
|
+
"submitAction": {
|
|
1125
|
+
"type": "BarWorkflowSubmitAction",
|
|
1126
|
+
"required": false
|
|
1127
|
+
},
|
|
1128
|
+
"value": {
|
|
1129
|
+
"type": "string",
|
|
1130
|
+
"required": false
|
|
1131
|
+
}
|
|
1132
|
+
},
|
|
1133
|
+
"events": [
|
|
1134
|
+
{
|
|
1135
|
+
"name": "dsExit",
|
|
1136
|
+
"detail": "MouseEvent"
|
|
1137
|
+
},
|
|
1138
|
+
{
|
|
1139
|
+
"name": "dsStepChange",
|
|
1140
|
+
"detail": "string"
|
|
1141
|
+
},
|
|
1142
|
+
{
|
|
1143
|
+
"name": "dsSubmit",
|
|
1144
|
+
"detail": "MouseEvent"
|
|
1145
|
+
}
|
|
1146
|
+
],
|
|
1147
|
+
"slots": [],
|
|
1148
|
+
"exports": {
|
|
1149
|
+
"customElement": "ds-bar-workflow",
|
|
1150
|
+
"react": "DsBarWorkflow",
|
|
1151
|
+
"angular": "DsBarWorkflow"
|
|
1152
|
+
}
|
|
1153
|
+
},
|
|
1154
|
+
"dependencies": [
|
|
1155
|
+
"@ds-mo/ui",
|
|
1156
|
+
"@ds-mo/tokens"
|
|
1157
|
+
],
|
|
1158
|
+
"registryDependencies": [
|
|
1159
|
+
"button-filled",
|
|
1160
|
+
"button-unfilled",
|
|
1161
|
+
"text",
|
|
1162
|
+
"tooltip"
|
|
1163
|
+
]
|
|
1164
|
+
},
|
|
989
1165
|
{
|
|
990
1166
|
"name": "button-filled",
|
|
991
1167
|
"title": "ButtonFilled",
|
|
@@ -2575,7 +2751,7 @@
|
|
|
2575
2751
|
{
|
|
2576
2752
|
"name": "conversation-list",
|
|
2577
2753
|
"title": "ConversationList",
|
|
2578
|
-
"description": "Scrollable conversation-list region with dedicated empty and
|
|
2754
|
+
"description": "Scrollable conversation-list region with dedicated empty and persistent action placement.",
|
|
2579
2755
|
"type": "registry:ui",
|
|
2580
2756
|
"meta": {
|
|
2581
2757
|
"library": "@ds-mo/ui",
|
|
@@ -2586,7 +2762,7 @@
|
|
|
2586
2762
|
"intent": {
|
|
2587
2763
|
"audience": "general",
|
|
2588
2764
|
"status": "experimental",
|
|
2589
|
-
"summary": "Scrollable conversation-list region with dedicated empty and
|
|
2765
|
+
"summary": "Scrollable conversation-list region with dedicated empty and persistent action placement.",
|
|
2590
2766
|
"useWhen": [
|
|
2591
2767
|
"A messaging-like surface needs a reusable history list with empty and action regions."
|
|
2592
2768
|
],
|
|
@@ -2596,17 +2772,24 @@
|
|
|
2596
2772
|
"commonlyComposedWith": [
|
|
2597
2773
|
"component:ds-conversation-list-section",
|
|
2598
2774
|
"component:ds-conversation-list-item",
|
|
2599
|
-
"component:ds-empty-state"
|
|
2775
|
+
"component:ds-empty-state",
|
|
2776
|
+
"component:ds-scroll-overlay"
|
|
2600
2777
|
],
|
|
2601
2778
|
"patterns": [
|
|
2602
2779
|
"pattern:conversation"
|
|
2603
2780
|
],
|
|
2604
2781
|
"accessibility": [
|
|
2605
2782
|
"Provide an accessible list label through the surrounding heading or region.",
|
|
2606
|
-
"Keep the empty message descriptive and
|
|
2783
|
+
"Keep the empty message descriptive and every persistent action explicitly named."
|
|
2784
|
+
],
|
|
2785
|
+
"states": [
|
|
2786
|
+
"The default floating action stays at the lower end corner.",
|
|
2787
|
+
"actionLayout footer stretches a long action between 8px side and bottom insets.",
|
|
2788
|
+
"Both action layouts share the always-active scroll-overlay fade controller, reserve measured end clearance, and begin fading 8px before the visible action.",
|
|
2789
|
+
"ConversationList paints its measured fade on a separate surface-aware layer so contextual row actions retain a real backdrop for blur; hovered, focused, and menu-open rows rise above that decorative fade."
|
|
2607
2790
|
],
|
|
2608
2791
|
"responsiveBehavior": [
|
|
2609
|
-
"The list fills its owner, scrolls independently, and keeps its action
|
|
2792
|
+
"The list fills its owner, scrolls independently, and keeps its persistent action above scrolling rows."
|
|
2610
2793
|
],
|
|
2611
2794
|
"references": [
|
|
2612
2795
|
{
|
|
@@ -2615,7 +2798,12 @@
|
|
|
2615
2798
|
}
|
|
2616
2799
|
]
|
|
2617
2800
|
},
|
|
2618
|
-
"props": {
|
|
2801
|
+
"props": {
|
|
2802
|
+
"actionLayout": {
|
|
2803
|
+
"type": "ConversationListActionLayout",
|
|
2804
|
+
"required": false
|
|
2805
|
+
}
|
|
2806
|
+
},
|
|
2619
2807
|
"events": [],
|
|
2620
2808
|
"slots": [],
|
|
2621
2809
|
"exports": {
|
|
@@ -2776,7 +2964,7 @@
|
|
|
2776
2964
|
"The visible heading labels the section and must describe the relationship shared by its rows."
|
|
2777
2965
|
],
|
|
2778
2966
|
"responsiveBehavior": [
|
|
2779
|
-
"Rows remain full width while the heading stays visible in document order."
|
|
2967
|
+
"Rows remain full width with a 4px gap between adjacent items while the heading stays visible in document order."
|
|
2780
2968
|
],
|
|
2781
2969
|
"references": [
|
|
2782
2970
|
{
|
|
@@ -3612,7 +3800,7 @@
|
|
|
3612
3800
|
{
|
|
3613
3801
|
"name": "markdown",
|
|
3614
3802
|
"title": "Markdown",
|
|
3615
|
-
"description": "
|
|
3803
|
+
"description": "Optional safe CommonMark and GFM renderer that emits semantic nodes without raw HTML injection and consumes the shared prose CSS contract.",
|
|
3616
3804
|
"type": "registry:ui",
|
|
3617
3805
|
"meta": {
|
|
3618
3806
|
"library": "@ds-mo/ui",
|
|
@@ -3623,19 +3811,19 @@
|
|
|
3623
3811
|
"intent": {
|
|
3624
3812
|
"audience": "specialized",
|
|
3625
3813
|
"status": "experimental",
|
|
3626
|
-
"summary": "
|
|
3814
|
+
"summary": "Optional safe CommonMark and GFM renderer that emits semantic nodes without raw HTML injection and consumes the shared prose CSS contract.",
|
|
3627
3815
|
"useWhen": [
|
|
3628
|
-
"
|
|
3816
|
+
"A serializable Markdown string needs the design system's safe, opinionated renderer for headings, lists, links, tables, tasks, quotes, and code."
|
|
3629
3817
|
],
|
|
3630
3818
|
"avoidWhen": [
|
|
3819
|
+
"The application already owns a safe semantic-DOM renderer and only needs @ds-mo/ui/prose.css.",
|
|
3631
3820
|
"The application needs arbitrary HTML, custom plugins, or a full document CMS renderer."
|
|
3632
3821
|
],
|
|
3633
3822
|
"commonlyComposedWith": [
|
|
3634
|
-
"component:ds-
|
|
3635
|
-
"component:ds-
|
|
3823
|
+
"component:ds-agent-response",
|
|
3824
|
+
"component:ds-code-block"
|
|
3636
3825
|
],
|
|
3637
3826
|
"patterns": [
|
|
3638
|
-
"pattern:conversation",
|
|
3639
3827
|
"pattern:agent-chat"
|
|
3640
3828
|
],
|
|
3641
3829
|
"accessibility": [
|
|
@@ -3644,7 +3832,8 @@
|
|
|
3644
3832
|
"Link text must remain descriptive in authored content."
|
|
3645
3833
|
],
|
|
3646
3834
|
"states": [
|
|
3647
|
-
"Streaming updates are coalesced to one parse and render per animation frame."
|
|
3835
|
+
"Streaming updates are coalesced to one parse and render per animation frame.",
|
|
3836
|
+
"Typography, rhythm, opt-out, and overflow styling come from the renderer-neutral .ds-prose source rather than a Markdown-only recipe."
|
|
3648
3837
|
],
|
|
3649
3838
|
"responsiveBehavior": [
|
|
3650
3839
|
"Tables and code scroll horizontally instead of forcing the transcript wider."
|
|
@@ -3652,7 +3841,11 @@
|
|
|
3652
3841
|
"references": [
|
|
3653
3842
|
{
|
|
3654
3843
|
"label": "Storybook examples",
|
|
3655
|
-
"path": "src/wc/components/
|
|
3844
|
+
"path": "src/wc/components/AgentResponse/AgentResponse.stories.ts"
|
|
3845
|
+
},
|
|
3846
|
+
{
|
|
3847
|
+
"label": "Prose distribution decision",
|
|
3848
|
+
"path": "docs/prose-foundation.md"
|
|
3656
3849
|
}
|
|
3657
3850
|
]
|
|
3658
3851
|
},
|
|
@@ -3744,14 +3937,14 @@
|
|
|
3744
3937
|
"states": [
|
|
3745
3938
|
"The host owns open state and responds to selection and close events.",
|
|
3746
3939
|
"Use either flat items or sections, not both.",
|
|
3747
|
-
"After dsSelect from a switch row,
|
|
3748
|
-
"For selectionMode single, keep exactly one item isSelected and
|
|
3940
|
+
"After dsSelect from a switch row, replace the items or sections array with updated switchValue data so the controlled indicator reflects the new state.",
|
|
3941
|
+
"For selectionMode single, keep exactly one item isSelected and replace the items or sections array after dsSelect; Menu never mutates consumer-owned selection data.",
|
|
3749
3942
|
"Arrays, objects, and element anchors must be assigned as JavaScript properties.",
|
|
3750
3943
|
"Use a swatch-picker section for a small curated visual preference and apply dsSwatchSelect immediately without closing the popup; the legacy gradient-picker section and dsGradientSelect remain compatibility-only."
|
|
3751
3944
|
],
|
|
3752
3945
|
"responsiveBehavior": [
|
|
3753
3946
|
"Keep the default choice-cell anchor alignment so the first or last interactive row edge aligns with its trigger, matching Select; use popup-frame only for deliberate custom frame geometry.",
|
|
3754
|
-
"
|
|
3947
|
+
"Treat side as the preferred placement. When the popup cannot fit there and the opposite side offers more room, Menu flips on that main axis before clamping the final position to the viewport.",
|
|
3755
3948
|
"Avoid fixed widths that exceed narrow viewports."
|
|
3756
3949
|
],
|
|
3757
3950
|
"frameworkCaveats": {
|
|
@@ -4197,7 +4390,7 @@
|
|
|
4197
4390
|
"Selection and transcript interaction release automatic following.",
|
|
4198
4391
|
"Opening saved history, message jumps, and prepended history preserve deliberate position.",
|
|
4199
4392
|
"The scroll-to-latest action is absent at the live edge, appears only after the reader moves away, and disappears again after returning to the newest message.",
|
|
4200
|
-
"Place a composer container with 8px padding on every side in the overlay slot so messages scroll behind it; the
|
|
4393
|
+
"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."
|
|
4201
4394
|
],
|
|
4202
4395
|
"responsiveBehavior": [
|
|
4203
4396
|
"Transcript width is readable while the scroll region fills available height."
|
|
@@ -4921,7 +5114,7 @@
|
|
|
4921
5114
|
],
|
|
4922
5115
|
"accessibility": [
|
|
4923
5116
|
"Provide an aria-label that names the searched domain, such as Search agent chats or Search messages.",
|
|
4924
|
-
"The standard search clear action restores focus,
|
|
5117
|
+
"The standard search clear action restores focus, uses the concise localized clearLabel by itself for both its tooltip and accessible name, and emits both the empty query and dsClear.",
|
|
4925
5118
|
"When showFilter is enabled, provide stable filterTriggerId and filterControls values, synchronize filterExpanded with the controlled menu, and restore focus after selection; filterAriaLabel also labels its tooltip."
|
|
4926
5119
|
],
|
|
4927
5120
|
"states": [
|
|
@@ -5401,6 +5594,88 @@
|
|
|
5401
5594
|
"text"
|
|
5402
5595
|
]
|
|
5403
5596
|
},
|
|
5597
|
+
{
|
|
5598
|
+
"name": "scroll-overlay",
|
|
5599
|
+
"title": "ScrollOverlay",
|
|
5600
|
+
"description": "Generic scroll owner for content that moves behind a persistent footer action or composer with an always-active alpha fade.",
|
|
5601
|
+
"type": "registry:ui",
|
|
5602
|
+
"meta": {
|
|
5603
|
+
"library": "@ds-mo/ui",
|
|
5604
|
+
"distribution": "npm",
|
|
5605
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/scroll-overlay",
|
|
5606
|
+
"source": "src/wc/components/ScrollOverlay/ScrollOverlay.tsx",
|
|
5607
|
+
"intentStatus": "complete",
|
|
5608
|
+
"intent": {
|
|
5609
|
+
"audience": "general",
|
|
5610
|
+
"status": "experimental",
|
|
5611
|
+
"summary": "Generic scroll owner for content that moves behind a persistent footer action or composer with an always-active alpha fade.",
|
|
5612
|
+
"useWhen": [
|
|
5613
|
+
"A bounded region owns scrolling while footer actions remain overlaid and continuously visible.",
|
|
5614
|
+
"The final content must clear a live-height footer while earlier content can move behind it."
|
|
5615
|
+
],
|
|
5616
|
+
"avoidWhen": [
|
|
5617
|
+
"The footer belongs in normal document flow rather than overlaying content.",
|
|
5618
|
+
"Another component already owns scrolling and cannot delegate its scrollport to this component."
|
|
5619
|
+
],
|
|
5620
|
+
"commonlyComposedWith": [
|
|
5621
|
+
"component:ds-button-filled",
|
|
5622
|
+
"component:ds-message-composer"
|
|
5623
|
+
],
|
|
5624
|
+
"accessibility": [
|
|
5625
|
+
"Provide scrollLabel when the scrollport needs its own named, keyboard-focusable region.",
|
|
5626
|
+
"Keep footer actions keyboard accessible and explicitly named; the fade is decorative and never intercepts pointer input."
|
|
5627
|
+
],
|
|
5628
|
+
"states": [
|
|
5629
|
+
"The alpha mask remains active at every scroll position and moves in content coordinates so it stays pinned behind the footer without masking native scrollbars.",
|
|
5630
|
+
"The component measures the complete overlay for end clearance, measures its visible child for fade depth, and begins the fade 8px before that visible content.",
|
|
5631
|
+
"An md 32px footer action with 8px bottom inset therefore produces a 48px fade; variable-height composers produce a correspondingly taller measured fade."
|
|
5632
|
+
],
|
|
5633
|
+
"responsiveBehavior": [
|
|
5634
|
+
"The scrollport and overlay fill the available width and height; the owner supplies responsive sizing and overlay insets."
|
|
5635
|
+
],
|
|
5636
|
+
"frameworkCaveats": {
|
|
5637
|
+
"customElements": [
|
|
5638
|
+
"Place scrollable content in the default slot and one footer wrapper in the overlay slot; use dsScroll only when the application needs position data."
|
|
5639
|
+
],
|
|
5640
|
+
"react": [
|
|
5641
|
+
"Use DsScrollOverlay with ordinary children plus an element carrying slot=\"overlay\"."
|
|
5642
|
+
],
|
|
5643
|
+
"angular": [
|
|
5644
|
+
"Import DsScrollOverlay and project the persistent footer wrapper with slot=\"overlay\"."
|
|
5645
|
+
]
|
|
5646
|
+
},
|
|
5647
|
+
"references": [
|
|
5648
|
+
{
|
|
5649
|
+
"label": "Storybook examples",
|
|
5650
|
+
"path": "src/wc/components/ScrollOverlay/ScrollOverlay.stories.ts"
|
|
5651
|
+
}
|
|
5652
|
+
]
|
|
5653
|
+
},
|
|
5654
|
+
"props": {
|
|
5655
|
+
"scrollLabel": {
|
|
5656
|
+
"type": "string | undefined",
|
|
5657
|
+
"required": false
|
|
5658
|
+
}
|
|
5659
|
+
},
|
|
5660
|
+
"events": [
|
|
5661
|
+
{
|
|
5662
|
+
"name": "dsScroll",
|
|
5663
|
+
"detail": "ScrollOverlayScrollDetail"
|
|
5664
|
+
}
|
|
5665
|
+
],
|
|
5666
|
+
"slots": [],
|
|
5667
|
+
"exports": {
|
|
5668
|
+
"customElement": "ds-scroll-overlay",
|
|
5669
|
+
"react": "DsScrollOverlay",
|
|
5670
|
+
"angular": "DsScrollOverlay"
|
|
5671
|
+
}
|
|
5672
|
+
},
|
|
5673
|
+
"dependencies": [
|
|
5674
|
+
"@ds-mo/ui",
|
|
5675
|
+
"@ds-mo/tokens"
|
|
5676
|
+
],
|
|
5677
|
+
"registryDependencies": []
|
|
5678
|
+
},
|
|
5404
5679
|
{
|
|
5405
5680
|
"name": "select",
|
|
5406
5681
|
"title": "Select",
|
|
@@ -6273,7 +6548,7 @@
|
|
|
6273
6548
|
{
|
|
6274
6549
|
"name": "shell-page",
|
|
6275
6550
|
"title": "ShellPage",
|
|
6276
|
-
"description": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle placement, container-aware
|
|
6551
|
+
"description": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, container-aware BarTitle variants, stable scroll compaction, and optional page-content inset without creating a nested scroll container.",
|
|
6277
6552
|
"type": "registry:ui",
|
|
6278
6553
|
"meta": {
|
|
6279
6554
|
"library": "@ds-mo/ui",
|
|
@@ -6284,10 +6559,11 @@
|
|
|
6284
6559
|
"intent": {
|
|
6285
6560
|
"audience": "general",
|
|
6286
6561
|
"status": "stable",
|
|
6287
|
-
"summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle placement, container-aware
|
|
6562
|
+
"summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, container-aware BarTitle variants, stable scroll compaction, and optional page-content inset without creating a nested scroll container.",
|
|
6288
6563
|
"useWhen": [
|
|
6289
6564
|
"Rendering a standard routed page inside ShellApp's default content region.",
|
|
6290
6565
|
"BarTitle should expand at a roomy page top, compact after scroll, or use constrained action layout when the page column narrows.",
|
|
6566
|
+
"BarWorkflow needs sticky page-level placement while remaining compact.",
|
|
6291
6567
|
"Pages need consistent content gutters with an explicit full-bleed option."
|
|
6292
6568
|
],
|
|
6293
6569
|
"avoidWhen": [
|
|
@@ -6310,6 +6586,7 @@
|
|
|
6310
6586
|
"commonlyComposedWith": [
|
|
6311
6587
|
"component:ds-shell-app",
|
|
6312
6588
|
"component:ds-bar-title",
|
|
6589
|
+
"component:ds-bar-workflow",
|
|
6313
6590
|
"component:ds-tab-group"
|
|
6314
6591
|
],
|
|
6315
6592
|
"patterns": [
|
|
@@ -6317,7 +6594,7 @@
|
|
|
6317
6594
|
],
|
|
6318
6595
|
"accessibility": [
|
|
6319
6596
|
"ShellPage exposes the routed page as the main landmark; render exactly one active ShellPage inside ShellApp.",
|
|
6320
|
-
"Provide exactly one BarTitle through the header slot so the page has one h1.",
|
|
6597
|
+
"Provide exactly one BarTitle or BarWorkflow through the header slot so the page has one h1.",
|
|
6321
6598
|
"Keep loading, empty, validation, error, progress, success, and failure communication in the default product-content slot.",
|
|
6322
6599
|
"Responsive variant changes preserve the same heading, controls, accessible names, and keyboard focus targets."
|
|
6323
6600
|
],
|
|
@@ -6325,26 +6602,28 @@
|
|
|
6325
6602
|
"headerPresentation=auto selects expanded, compact, or constrained from ShellPage's own inline capacity and scroll position.",
|
|
6326
6603
|
"expanded, compact, and constrained are explicit overrides for exceptional layouts and deterministic examples.",
|
|
6327
6604
|
"contentInset=default supplies standard page gutters; none permits maps, canvases, and other full-bleed content.",
|
|
6328
|
-
"The required header slot accepts one BarTitle. The default slot owns router output and all page product content."
|
|
6605
|
+
"The required header slot accepts one BarTitle or BarWorkflow. The default slot owns router output and all page product content."
|
|
6329
6606
|
],
|
|
6330
6607
|
"responsiveBehavior": [
|
|
6331
6608
|
"ShellPage observes its own rendered width instead of viewport media queries or ShellApp desktop/tablet modes.",
|
|
6332
6609
|
"Roomy pages expand at the top and compact after scroll; medium-capacity pages start compact; narrow pages use the constrained header variant.",
|
|
6610
|
+
"A newly navigated header resolves current page capacity before it is revealed, so persistent tool or navigation chrome cannot flash the expanded presentation first.",
|
|
6333
6611
|
"Token-based capacity bands use hysteresis so opening tools or resizing navigation cannot oscillate near a boundary.",
|
|
6334
6612
|
"Scroll compaction preserves the expanded page flow offset so content never jumps beneath the sticky header.",
|
|
6335
|
-
"ShellPage relies on ShellApp's content scroller and never introduces nested scrolling."
|
|
6613
|
+
"ShellPage relies on ShellApp's content scroller and never introduces nested scrolling.",
|
|
6614
|
+
"BarWorkflow remains compact and is not assigned BarTitle's capacity or scroll variants."
|
|
6336
6615
|
],
|
|
6337
6616
|
"frameworkCaveats": {
|
|
6338
6617
|
"customElements": [
|
|
6339
|
-
"Import ShellPage
|
|
6618
|
+
"Import ShellPage with BarTitle or BarWorkflow, place one header in slot=header, and render route content as default children.",
|
|
6340
6619
|
"Do not set BarTitle.variant while ShellPage owns headerPresentation."
|
|
6341
6620
|
],
|
|
6342
6621
|
"react": [
|
|
6343
|
-
"Render DsBarTitle with slot=header inside DsShellPage and keep routed content as the remaining children.",
|
|
6622
|
+
"Render DsBarTitle or DsBarWorkflow with slot=header inside DsShellPage and keep routed content as the remaining children.",
|
|
6344
6623
|
"Use contentInset none only for deliberately full-bleed page products."
|
|
6345
6624
|
],
|
|
6346
6625
|
"angular": [
|
|
6347
|
-
"Import the generated standalone DsShellPage
|
|
6626
|
+
"Import the generated standalone DsShellPage adapter with DsBarTitle or DsBarWorkflow, preserve slot=header, and place router-outlet in the ShellPage default slot.",
|
|
6348
6627
|
"Do not add another overflow auto wrapper around the routed page."
|
|
6349
6628
|
]
|
|
6350
6629
|
},
|