@ds-mo/ui 11.1.0 → 12.0.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 +1 -1
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +150 -9
- package/dist/agent.json +481 -174
- package/dist/angular/ds-bar-title.d.ts +28 -0
- package/dist/angular/ds-bar-title.js +48 -0
- package/dist/angular/ds-panel-nav.d.ts +1 -1
- package/dist/angular/{ds-app-shell.d.ts → ds-shell-app.d.ts} +5 -5
- package/dist/angular/{ds-app-shell.js → ds-shell-app.js} +10 -10
- package/dist/angular/ds-shell-page.d.ts +12 -0
- package/dist/angular/ds-shell-page.js +38 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +3 -1
- package/dist/angular/proxies.d.ts +3 -1
- package/dist/angular/proxies.js +3 -1
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-response.js.map +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-app-shell.d.ts → ds-bar-title.d.ts} +4 -4
- package/dist/components/ds-bar-title.js +2 -0
- package/dist/components/ds-bar-title.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-setting.js +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-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-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-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-modal.js.map +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-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-panel-tools.js.map +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-select-multi.js +1 -1
- package/dist/components/ds-select-multi.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-app.d.ts +11 -0
- package/dist/components/ds-shell-app.js +2 -0
- package/dist/components/ds-shell-app.js.map +1 -0
- package/dist/components/ds-shell-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-picker.js.map +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-shell-page.d.ts +11 -0
- package/dist/components/ds-shell-page.js +2 -0
- package/dist/components/ds-shell-page.js.map +1 -0
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tag.js +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-DJ78wdNv.js → p-6vj4kh70.js} +2 -2
- package/dist/components/{p-bNpFhP5L.js → p-B3YvoGjS.js} +2 -2
- package/dist/components/{p-BEWtqFX7.js → p-BH3es4p7.js} +2 -2
- package/dist/components/{p-BaZRP4Oo.js → p-BUmDHPr3.js} +2 -2
- package/dist/components/p-BYHKdFzV.js +2 -0
- package/dist/components/p-BYHKdFzV.js.map +1 -0
- package/dist/components/p-BZZwQfmN.js +2 -0
- package/dist/components/{p-B_qVPsEU.js.map → p-BZZwQfmN.js.map} +1 -1
- package/dist/components/{p-Dh4q5TSS.js → p-BhKhX1er.js} +2 -2
- package/dist/components/{p-CZZYGqKz.js → p-Bs6SS34m.js} +2 -2
- package/dist/components/p-CUik7PCi.js +2 -0
- package/dist/components/p-CUik7PCi.js.map +1 -0
- package/dist/components/{p-CyoHRqy6.js → p-Cf-i-6aE.js} +2 -2
- package/dist/components/p-Cf2J9MEo.js +2 -0
- package/dist/components/{p-Bet_UjML.js.map → p-Cf2J9MEo.js.map} +1 -1
- package/dist/components/{p-P_4vE1ub.js → p-CwTVEAl2.js} +2 -2
- package/dist/components/p-Cy04lXlc.js +2 -0
- package/dist/components/p-Cy04lXlc.js.map +1 -0
- package/dist/components/{p-BKhG2xrW.js → p-D2x17ei-.js} +1 -1
- package/dist/components/{p-BKhG2xrW.js.map → p-D2x17ei-.js.map} +1 -1
- package/dist/components/{p-CjP8sYlo.js → p-DABj3qTX.js} +2 -2
- package/dist/components/{p-DTqCBjUj.js → p-DUHcJWTQ.js} +2 -2
- package/dist/components/{p-CPPAndX2.js → p-DVk0wxxX.js} +2 -2
- package/dist/components/p-DfIch2Dk.js +2 -0
- package/dist/components/{p-BCCt2eT_.js.map → p-DfIch2Dk.js.map} +1 -1
- package/dist/components/{p-CrwU83-g.js → p-Dg3xLna0.js} +2 -2
- package/dist/components/{p-DrDHC7V6.js → p-DxeHimqk.js} +2 -2
- package/dist/components/{p-DrDHC7V6.js.map → p-DxeHimqk.js.map} +1 -1
- package/dist/components/{p-CLn7QnE0.js → p-Dy_sZ-dI.js} +2 -2
- package/dist/components/{p-0kEg-Z4f.js → p-liMPkhUP.js} +2 -2
- package/dist/components/p-xFbUt9Tc.js +2 -0
- package/dist/components/p-xFbUt9Tc.js.map +1 -0
- package/dist/docs/components.json +1082 -336
- package/dist/lib/shell/chrome-transition.d.ts +1 -1
- package/dist/lib/shell/index.js +1 -1
- package/dist/lib/shell/index.js.map +1 -1
- package/dist/lib/shell/shell-gradient.d.ts +2 -2
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +4 -4
- package/dist/mcp-data/registry/bar-nav.json +8 -8
- package/dist/mcp-data/registry/bar-title.json +431 -0
- package/dist/mcp-data/registry/code-block.json +4 -3
- package/dist/mcp-data/registry/menu.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +7 -5
- package/dist/mcp-data/registry/message-scroller.json +4 -3
- package/dist/mcp-data/registry/modal.json +5 -4
- package/dist/mcp-data/registry/panel-nav.json +8 -8
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +4 -3
- package/dist/mcp-data/registry/panel-tool-search.json +6 -5
- package/dist/mcp-data/registry/panel-tools.json +13 -13
- package/dist/mcp-data/registry/registry.json +489 -176
- package/dist/mcp-data/registry/select-multi.json +2 -1
- package/dist/mcp-data/registry/select.json +2 -1
- package/dist/mcp-data/registry/shell-app.json +213 -0
- package/dist/mcp-data/registry/shell-gradient-picker.json +8 -8
- package/dist/mcp-data/registry/shell-gradient-swatch.json +2 -2
- package/dist/mcp-data/registry/shell-page.json +199 -0
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/react/components.d.ts +3 -1
- package/dist/react/components.js +3 -1
- package/dist/react/ds-bar-title.d.ts +14 -0
- package/dist/react/ds-bar-title.js +16 -0
- package/dist/react/{ds-app-shell.d.ts → ds-shell-app.d.ts} +3 -3
- package/dist/react/ds-shell-app.js +12 -0
- package/dist/react/ds-shell-page.d.ts +9 -0
- package/dist/react/ds-shell-page.js +12 -0
- package/dist/types/components/Badge/Badge.d.ts +1 -1
- package/dist/types/components/BarTitle/BarTitle.d.ts +71 -0
- package/dist/types/components/BarTitle/bar-title-types.d.ts +29 -0
- package/dist/types/components/BarTitle/index.d.ts +2 -0
- package/dist/types/components/Menu/Menu.d.ts +5 -0
- package/dist/types/components/PanelNav/PanelNav.d.ts +1 -1
- package/dist/types/components/{AppShell/AppShell.d.ts → ShellApp/ShellApp.d.ts} +3 -3
- package/dist/types/components/ShellPage/ShellPage.d.ts +37 -0
- package/dist/types/components/ShellPage/index.d.ts +3 -0
- package/dist/types/components/ShellPage/shell-page-responsive.d.ts +12 -0
- package/dist/types/components/ShellPage/shell-page-types.d.ts +5 -0
- package/dist/types/components.d.ts +267 -55
- package/dist/types/shell/chrome-transition.d.ts +1 -1
- package/dist/types/shell/shell-gradient.d.ts +2 -2
- package/dist/types/shell/shell-shortcuts.d.ts +1 -1
- package/package.json +1 -1
- package/dist/components/ds-app-shell.js +0 -2
- package/dist/components/ds-app-shell.js.map +0 -1
- package/dist/components/p-BCCt2eT_.js +0 -2
- package/dist/components/p-B_qVPsEU.js +0 -2
- package/dist/components/p-Bet_UjML.js +0 -2
- package/dist/components/p-BsnezUUC.js +0 -2
- package/dist/components/p-BsnezUUC.js.map +0 -1
- package/dist/components/p-C1K5QGUZ.js +0 -2
- package/dist/components/p-C1K5QGUZ.js.map +0 -1
- package/dist/components/p-CKaJx0IX.js +0 -2
- package/dist/components/p-CKaJx0IX.js.map +0 -1
- package/dist/components/p-ZTugT4as.js +0 -2
- package/dist/components/p-ZTugT4as.js.map +0 -1
- package/dist/mcp-data/registry/app-shell.json +0 -210
- package/dist/react/ds-app-shell.js +0 -12
- /package/dist/components/{p-DJ78wdNv.js.map → p-6vj4kh70.js.map} +0 -0
- /package/dist/components/{p-bNpFhP5L.js.map → p-B3YvoGjS.js.map} +0 -0
- /package/dist/components/{p-BEWtqFX7.js.map → p-BH3es4p7.js.map} +0 -0
- /package/dist/components/{p-BaZRP4Oo.js.map → p-BUmDHPr3.js.map} +0 -0
- /package/dist/components/{p-Dh4q5TSS.js.map → p-BhKhX1er.js.map} +0 -0
- /package/dist/components/{p-CZZYGqKz.js.map → p-Bs6SS34m.js.map} +0 -0
- /package/dist/components/{p-CyoHRqy6.js.map → p-Cf-i-6aE.js.map} +0 -0
- /package/dist/components/{p-P_4vE1ub.js.map → p-CwTVEAl2.js.map} +0 -0
- /package/dist/components/{p-CjP8sYlo.js.map → p-DABj3qTX.js.map} +0 -0
- /package/dist/components/{p-DTqCBjUj.js.map → p-DUHcJWTQ.js.map} +0 -0
- /package/dist/components/{p-CPPAndX2.js.map → p-DVk0wxxX.js.map} +0 -0
- /package/dist/components/{p-CrwU83-g.js.map → p-Dg3xLna0.js.map} +0 -0
- /package/dist/components/{p-CLn7QnE0.js.map → p-Dy_sZ-dI.js.map} +0 -0
- /package/dist/components/{p-0kEg-Z4f.js.map → p-liMPkhUP.js.map} +0 -0
package/README.md
CHANGED
|
@@ -94,7 +94,7 @@ All tags are `ds-*` custom elements. Grouped by role (see Storybook for props an
|
|
|
94
94
|
|
|
95
95
|
### Navigation
|
|
96
96
|
- **TabGroup** (horizontal local views), **PanelSubNav** (vertical local views)
|
|
97
|
-
- **
|
|
97
|
+
- **ShellApp**, **PanelNav**, **BarNav**, **PanelTools**
|
|
98
98
|
|
|
99
99
|
### Status & layout
|
|
100
100
|
- **EmptyState**, **Loader**, **Skeleton**, **CardSetting**, **CardDataVizDonut**
|
package/dist/.build-stamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1784701897260
|
package/dist/agent-patterns.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@ds-mo/ui",
|
|
4
|
-
"packageVersion": "
|
|
4
|
+
"packageVersion": "12.0.0",
|
|
5
5
|
"kind": "patterns",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
{
|
|
84
84
|
"id": "pattern:application-shell",
|
|
85
85
|
"status": "experimental",
|
|
86
|
-
"summary": "Required base-page composition for standard authenticated applications, with one
|
|
86
|
+
"summary": "Required base-page composition for standard authenticated applications, with one ShellApp coordinating primary destinations, secondary route sections, tools chrome, responsive modes, and stable main content geometry.",
|
|
87
87
|
"useWhen": [
|
|
88
88
|
"Building any standard authenticated product or workspace page with CompoMo.",
|
|
89
89
|
"Application navigation and tools must remain consistent around changing route content.",
|
|
@@ -91,12 +91,12 @@
|
|
|
91
91
|
],
|
|
92
92
|
"avoidWhen": [
|
|
93
93
|
"Building authentication, onboarding, public, marketing, print, error, or intentionally focused full-screen experiences.",
|
|
94
|
-
"The page is already rendered inside an
|
|
94
|
+
"The page is already rendered inside an ShellApp.",
|
|
95
95
|
"A nested or second application shell is being considered."
|
|
96
96
|
],
|
|
97
97
|
"components": [
|
|
98
98
|
{
|
|
99
|
-
"component": "component:ds-app
|
|
99
|
+
"component": "component:ds-shell-app",
|
|
100
100
|
"role": "Provides the single workspace root and coordinates shell composition, shared chrome, responsive modes, and stable content geometry.",
|
|
101
101
|
"required": true
|
|
102
102
|
},
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
],
|
|
119
119
|
"stateOwnership": [
|
|
120
120
|
"The application router owns the current route, Dashboard or Settings context, authorization filtering, destination and section collections, localized labels, and navigation execution.",
|
|
121
|
-
"
|
|
121
|
+
"ShellApp owns desktop, tablet, and mobile composition, shell geometry, navStyle propagation, gradient alignment, chrome transitions, metrics, and shell shortcuts.",
|
|
122
122
|
"PanelNav owns primary-destination presentation and the user-controlled desktop collapse preference.",
|
|
123
123
|
"BarNav derives the active secondary route from currentUrl and basePath and receives the active PanelNav destination label as heading.",
|
|
124
124
|
"PanelTools owns tool-rail and drawer interaction while the application owns available tool content and active-tool state.",
|
|
@@ -135,15 +135,15 @@
|
|
|
135
135
|
"Use fixed system breakpoints: desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
|
|
136
136
|
"Desktop permits PanelNav expansion and collapse and restores the persisted user preference.",
|
|
137
137
|
"Tablet keeps PanelNav permanently collapsed and does not overwrite the desktop preference.",
|
|
138
|
-
"Mobile keeps
|
|
138
|
+
"Mobile keeps ShellApp as the root while replacing desktop navigation with a future dedicated mobile navigation design.",
|
|
139
139
|
"Keep BarNav height, PanelTools chrome, and main-content origin stable across route changes.",
|
|
140
|
-
"Treat the complete responsive composition as an intended contract that is not yet fully implemented by the current
|
|
140
|
+
"Treat the complete responsive composition as an intended contract that is not yet fully implemented by the current ShellApp runtime."
|
|
141
141
|
],
|
|
142
142
|
"implementations": {
|
|
143
143
|
"customElements": {
|
|
144
144
|
"status": "verified",
|
|
145
145
|
"references": [
|
|
146
|
-
"src/wc/components/
|
|
146
|
+
"src/wc/components/ShellApp/ShellApp.stories.ts",
|
|
147
147
|
"docs/framework-integration.md"
|
|
148
148
|
]
|
|
149
149
|
},
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
}
|
|
164
164
|
},
|
|
165
165
|
"references": [
|
|
166
|
-
"src/wc/components/
|
|
166
|
+
"src/wc/components/ShellApp/ShellApp.mdx",
|
|
167
167
|
"docs/framework-integration.md"
|
|
168
168
|
]
|
|
169
169
|
},
|
|
@@ -398,6 +398,147 @@
|
|
|
398
398
|
"src/wc/components/Menu/Menu.agent.json",
|
|
399
399
|
"docs/framework-integration.md"
|
|
400
400
|
]
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"id": "pattern:shell-page",
|
|
404
|
+
"status": "stable",
|
|
405
|
+
"summary": "Compose one ShellPage inside ShellApp's content region with a slotted BarTitle and application-owned routed content.",
|
|
406
|
+
"useWhen": [
|
|
407
|
+
"A standard authenticated route needs shared page title chrome, sticky scroll compaction, and consistent content inset.",
|
|
408
|
+
"The page column can change width as global navigation or tools open and close."
|
|
409
|
+
],
|
|
410
|
+
"avoidWhen": [
|
|
411
|
+
"The experience does not use the standard authenticated ShellApp layout.",
|
|
412
|
+
"The content belongs to a drawer, modal, card, or fullscreen tool pane.",
|
|
413
|
+
"A ShellPage already owns the route; never nest ShellPages."
|
|
414
|
+
],
|
|
415
|
+
"components": [
|
|
416
|
+
{
|
|
417
|
+
"component": "component:ds-shell-app",
|
|
418
|
+
"role": "Owns global chrome and the single scrolling content region.",
|
|
419
|
+
"required": true
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"component": "component:ds-shell-page",
|
|
423
|
+
"role": "Owns the page main landmark, sticky header orchestration, responsive variants, and content inset.",
|
|
424
|
+
"required": true
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
"component": "component:ds-bar-title",
|
|
428
|
+
"role": "Provides the page h1, inline route-section selector, Back intent, and page actions.",
|
|
429
|
+
"required": true
|
|
430
|
+
}
|
|
431
|
+
],
|
|
432
|
+
"stateOwnership": [
|
|
433
|
+
"ShellApp owns global navigation, tools, and scrolling; ShellPage never creates another scroll container.",
|
|
434
|
+
"ShellPage owns automatic BarTitle variant selection. Consumers do not synchronize BarTitle.variant when headerPresentation is auto.",
|
|
435
|
+
"The route owner owns heading copy, Back consequences, selected section value, available actions, data, forms, and product outcomes.",
|
|
436
|
+
"Keep dsSectionChange controlled by updating the route and passing the resolved value back to BarTitle."
|
|
437
|
+
],
|
|
438
|
+
"accessibility": [
|
|
439
|
+
"Render one active ShellPage so the application contains one routed-page main landmark.",
|
|
440
|
+
"Provide one BarTitle in slot=header and one concise heading so the page contains one h1.",
|
|
441
|
+
"Use destination-specific Back labels and preserve action labels across inline and overflow presentations.",
|
|
442
|
+
"Keep route loading, error, empty, success, and validation communication in the ShellPage content slot."
|
|
443
|
+
],
|
|
444
|
+
"responsiveBehavior": [
|
|
445
|
+
"Let ShellPage select expanded, compact, and constrained variants from its own capacity and scroll position.",
|
|
446
|
+
"Set primaryAction.collapse to never only when the action must preserve visible hierarchy, such as Save in create and edit flows.",
|
|
447
|
+
"Use contentInset none only for deliberately full-bleed products such as maps and canvases.",
|
|
448
|
+
"Place TabGroup inside ShellPage content for inner-page panels; route-level sections remain in BarTitle."
|
|
449
|
+
],
|
|
450
|
+
"implementations": {
|
|
451
|
+
"customElements": {
|
|
452
|
+
"status": "verified",
|
|
453
|
+
"recipes": [
|
|
454
|
+
{
|
|
455
|
+
"id": "routed-page",
|
|
456
|
+
"title": "Routed page shell",
|
|
457
|
+
"summary": "A standard page with an inline section selector and application-owned content.",
|
|
458
|
+
"files": [
|
|
459
|
+
{
|
|
460
|
+
"path": "page.html",
|
|
461
|
+
"language": "html",
|
|
462
|
+
"content": "<ds-shell-app>\n <ds-shell-page>\n <ds-bar-title\n id=\"drivers-header\"\n slot=\"header\"\n heading=\"Drivers\"\n value=\"active\"\n ></ds-bar-title>\n <section aria-label=\"Driver results\">Page content</section>\n </ds-shell-page>\n</ds-shell-app>"
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
"path": "page.ts",
|
|
466
|
+
"language": "typescript",
|
|
467
|
+
"content": "import '@ds-mo/ui/dist/components/ds-shell-app.js'\nimport '@ds-mo/ui/dist/components/ds-shell-page.js'\nimport '@ds-mo/ui/dist/components/ds-bar-title.js'\n\nconst header = document.querySelector<HTMLDsBarTitleElement>('#drivers-header')!\nheader.sections = [\n { id: 'active', label: 'Active' },\n { id: 'inactive', label: 'Inactive' },\n]\nheader.primaryAction = { id: 'create', label: 'Create driver' }\nheader.addEventListener('dsSectionChange', event => {\n const value = (event as CustomEvent<string>).detail\n // Update the route, then pass the resolved route value back to the header.\n header.value = value\n})"
|
|
468
|
+
}
|
|
469
|
+
],
|
|
470
|
+
"notes": [
|
|
471
|
+
"The complete application also supplies PanelNav, BarNav, and PanelTools through ShellApp's named slots.",
|
|
472
|
+
"Do not put page content inside BarTitle."
|
|
473
|
+
]
|
|
474
|
+
}
|
|
475
|
+
],
|
|
476
|
+
"references": [
|
|
477
|
+
"src/wc/components/ShellPage/ShellPage.stories.ts",
|
|
478
|
+
"tests/e2e/fixtures/bar-title.html"
|
|
479
|
+
]
|
|
480
|
+
},
|
|
481
|
+
"react": {
|
|
482
|
+
"status": "verified",
|
|
483
|
+
"recipes": [
|
|
484
|
+
{
|
|
485
|
+
"id": "routed-page",
|
|
486
|
+
"title": "React routed page shell",
|
|
487
|
+
"summary": "Generated React wrappers with controlled route-section state.",
|
|
488
|
+
"files": [
|
|
489
|
+
{
|
|
490
|
+
"path": "DriversPage.tsx",
|
|
491
|
+
"language": "tsx",
|
|
492
|
+
"content": "import { useState } from 'react'\nimport { DsShellApp, DsBarTitle, DsShellPage } from '@ds-mo/ui/react'\n\nconst sections = [\n { id: 'active', label: 'Active' },\n { id: 'inactive', label: 'Inactive' },\n]\n\nexport function DriversPage() {\n const [value, setValue] = useState('active')\n return (\n <DsShellApp>\n <DsShellPage>\n <DsBarTitle\n slot=\"header\"\n heading=\"Drivers\"\n sections={sections}\n value={value}\n primaryAction={{ id: 'create', label: 'Create driver' }}\n onDsSectionChange={event => setValue(event.detail)}\n />\n <section aria-label=\"Driver results\">Page content</section>\n </DsShellPage>\n </DsShellApp>\n )\n}"
|
|
493
|
+
}
|
|
494
|
+
],
|
|
495
|
+
"notes": [
|
|
496
|
+
"Resolve value from router state in production rather than keeping duplicate local route state.",
|
|
497
|
+
"Use contentInset=\"none\" only for full-bleed pages."
|
|
498
|
+
]
|
|
499
|
+
}
|
|
500
|
+
],
|
|
501
|
+
"references": [
|
|
502
|
+
"src/react/ds-shell-page.ts",
|
|
503
|
+
"src/react/ds-bar-title.ts"
|
|
504
|
+
]
|
|
505
|
+
},
|
|
506
|
+
"angular": {
|
|
507
|
+
"status": "verified",
|
|
508
|
+
"recipes": [
|
|
509
|
+
{
|
|
510
|
+
"id": "routed-page",
|
|
511
|
+
"title": "Angular routed page shell",
|
|
512
|
+
"summary": "Generated standalone adapters with router-owned page content.",
|
|
513
|
+
"files": [
|
|
514
|
+
{
|
|
515
|
+
"path": "drivers-page.component.html",
|
|
516
|
+
"language": "html",
|
|
517
|
+
"content": "<ds-shell-page>\n <ds-bar-title\n slot=\"header\"\n heading=\"Drivers\"\n [sections]=\"sections\"\n [value]=\"selectedSection\"\n [primaryAction]=\"primaryAction\"\n (dsSectionChange)=\"selectSection($event.detail)\"\n ></ds-bar-title>\n <router-outlet />\n</ds-shell-page>"
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"path": "drivers-page.component.ts",
|
|
521
|
+
"language": "typescript",
|
|
522
|
+
"content": "import { Component } from '@angular/core'\nimport { RouterOutlet } from '@angular/router'\nimport { DsBarTitle } from '@ds-mo/ui/angular/ds-bar-title'\nimport { DsShellPage } from '@ds-mo/ui/angular/ds-shell-page'\n\n@Component({\n standalone: true,\n imports: [DsBarTitle, DsShellPage, RouterOutlet],\n templateUrl: './drivers-page.component.html',\n})\nexport class DriversPageComponent {\n readonly sections = [\n { id: 'active', label: 'Active' },\n { id: 'inactive', label: 'Inactive' },\n ]\n readonly primaryAction = { id: 'create', label: 'Create driver' }\n selectedSection = 'active'\n\n selectSection(id: string) {\n this.selectedSection = id\n // Navigate to the matching child route.\n }\n}"
|
|
523
|
+
}
|
|
524
|
+
],
|
|
525
|
+
"notes": [
|
|
526
|
+
"ShellApp belongs in the persistent application layout; routed page components render ShellPage in its default content slot.",
|
|
527
|
+
"Do not add an overflow-auto wrapper around ds-shell-page."
|
|
528
|
+
]
|
|
529
|
+
}
|
|
530
|
+
],
|
|
531
|
+
"references": [
|
|
532
|
+
"src/angular/ds-shell-page.ts",
|
|
533
|
+
"src/angular/ds-bar-title.ts"
|
|
534
|
+
]
|
|
535
|
+
}
|
|
536
|
+
},
|
|
537
|
+
"references": [
|
|
538
|
+
"src/wc/components/ShellPage/ShellPage.agent.json",
|
|
539
|
+
"src/wc/components/BarTitle/BarTitle.agent.json",
|
|
540
|
+
"src/wc/components/ShellApp/ShellApp.agent.json"
|
|
541
|
+
]
|
|
401
542
|
}
|
|
402
543
|
]
|
|
403
544
|
}
|