@ds-mo/ui 12.1.0 → 12.3.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.
Files changed (287) hide show
  1. package/README.md +26 -3
  2. package/dist/.build-stamp +1 -1
  3. package/dist/agent-patterns.json +8 -7
  4. package/dist/agent.json +837 -66
  5. package/dist/angular/ds-avatar.d.ts +1 -1
  6. package/dist/angular/ds-avatar.js +3 -3
  7. package/dist/angular/ds-bar-title.d.ts +7 -1
  8. package/dist/angular/ds-bar-title.js +7 -4
  9. package/dist/angular/ds-bar-workflow.d.ts +28 -0
  10. package/dist/angular/ds-bar-workflow.js +48 -0
  11. package/dist/angular/ds-breadcrumb.d.ts +19 -0
  12. package/dist/angular/ds-breadcrumb.js +42 -0
  13. package/dist/angular/ds-card-data-viz-bar.d.ts +18 -0
  14. package/dist/angular/ds-card-data-viz-bar.js +42 -0
  15. package/dist/angular/ds-card-data-viz-line.d.ts +18 -0
  16. package/dist/angular/ds-card-data-viz-line.js +42 -0
  17. package/dist/angular/ds-chart-bar-stacked.d.ts +12 -0
  18. package/dist/angular/ds-chart-bar-stacked.js +38 -0
  19. package/dist/angular/ds-chart-legend.d.ts +1 -1
  20. package/dist/angular/ds-chart-legend.js +3 -3
  21. package/dist/angular/ds-conversation-list.d.ts +1 -1
  22. package/dist/angular/ds-conversation-list.js +4 -3
  23. package/dist/angular/ds-scroll-overlay.d.ts +19 -0
  24. package/dist/angular/ds-scroll-overlay.js +43 -0
  25. package/dist/angular/ds-shell-page.d.ts +1 -1
  26. package/dist/angular/ds-shell-page.js +3 -3
  27. package/dist/angular/index.d.ts +1 -1
  28. package/dist/angular/index.js +6 -0
  29. package/dist/angular/proxies.d.ts +6 -0
  30. package/dist/angular/proxies.js +6 -0
  31. package/dist/components/ds-agent-activity.js +1 -1
  32. package/dist/components/ds-agent-response.js +1 -1
  33. package/dist/components/ds-agent-source-list.js +1 -1
  34. package/dist/components/ds-agent-tool-call.js +1 -1
  35. package/dist/components/ds-attachment-list.js +1 -1
  36. package/dist/components/ds-avatar.js +1 -1
  37. package/dist/components/ds-avatar.js.map +1 -1
  38. package/dist/components/ds-badge.js +1 -1
  39. package/dist/components/ds-bar-nav.js +1 -1
  40. package/dist/components/ds-bar-nav.js.map +1 -1
  41. package/dist/components/ds-bar-title.js +1 -1
  42. package/dist/components/ds-bar-title.js.map +1 -1
  43. package/dist/components/ds-bar-workflow.d.ts +11 -0
  44. package/dist/components/ds-bar-workflow.js +2 -0
  45. package/dist/components/ds-bar-workflow.js.map +1 -0
  46. package/dist/components/ds-breadcrumb.d.ts +11 -0
  47. package/dist/components/ds-breadcrumb.js +2 -0
  48. package/dist/components/ds-breadcrumb.js.map +1 -0
  49. package/dist/components/ds-button-filled.js +1 -1
  50. package/dist/components/ds-button-unfilled.js +1 -1
  51. package/dist/components/ds-card-data-viz-bar.d.ts +11 -0
  52. package/dist/components/ds-card-data-viz-bar.js +2 -0
  53. package/dist/components/ds-card-data-viz-bar.js.map +1 -0
  54. package/dist/components/ds-card-data-viz-donut.js +1 -1
  55. package/dist/components/ds-card-data-viz-line.d.ts +11 -0
  56. package/dist/components/ds-card-data-viz-line.js +2 -0
  57. package/dist/components/ds-card-data-viz-line.js.map +1 -0
  58. package/dist/components/ds-card-setting.js +1 -1
  59. package/dist/components/ds-card-shell-data-viz.js +1 -1
  60. package/dist/components/ds-chart-bar-stacked.d.ts +11 -0
  61. package/dist/components/ds-chart-bar-stacked.js +2 -0
  62. package/dist/components/ds-chart-bar-stacked.js.map +1 -0
  63. package/dist/components/ds-chart-bar.js +1 -1
  64. package/dist/components/ds-chart-bar.js.map +1 -1
  65. package/dist/components/ds-chart-donut.js +1 -1
  66. package/dist/components/ds-chart-legend.js +1 -1
  67. package/dist/components/ds-chart-legend.js.map +1 -1
  68. package/dist/components/ds-chart-line.js +1 -1
  69. package/dist/components/ds-chart-line.js.map +1 -1
  70. package/dist/components/ds-checkbox.js +1 -1
  71. package/dist/components/ds-chip.js +1 -1
  72. package/dist/components/ds-chip.js.map +1 -1
  73. package/dist/components/ds-code-block.js +1 -1
  74. package/dist/components/ds-conversation-list-item.js +1 -1
  75. package/dist/components/ds-conversation-list-item.js.map +1 -1
  76. package/dist/components/ds-conversation-list-section.js +1 -1
  77. package/dist/components/ds-conversation-list-section.js.map +1 -1
  78. package/dist/components/ds-conversation-list.js +1 -1
  79. package/dist/components/ds-conversation-list.js.map +1 -1
  80. package/dist/components/ds-divider.js +1 -1
  81. package/dist/components/ds-empty-state.js +1 -1
  82. package/dist/components/ds-field.js +1 -1
  83. package/dist/components/ds-input.js +1 -1
  84. package/dist/components/ds-input.js.map +1 -1
  85. package/dist/components/ds-markdown.js +1 -1
  86. package/dist/components/ds-menu.js +1 -1
  87. package/dist/components/ds-message-bubble.js +1 -1
  88. package/dist/components/ds-message-bubble.js.map +1 -1
  89. package/dist/components/ds-message-composer.js +1 -1
  90. package/dist/components/ds-message-scroller.js +1 -1
  91. package/dist/components/ds-message-scroller.js.map +1 -1
  92. package/dist/components/ds-message.js +1 -1
  93. package/dist/components/ds-modal.js +1 -1
  94. package/dist/components/ds-panel-nav.js +1 -1
  95. package/dist/components/ds-panel-sub-nav.js +1 -1
  96. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  97. package/dist/components/ds-panel-tool-header.js +1 -1
  98. package/dist/components/ds-panel-tool-search.js +1 -1
  99. package/dist/components/ds-panel-tools.js +1 -1
  100. package/dist/components/ds-radio.js +1 -1
  101. package/dist/components/ds-radio.js.map +1 -1
  102. package/dist/components/ds-scroll-overlay.d.ts +11 -0
  103. package/dist/components/ds-scroll-overlay.js +2 -0
  104. package/dist/components/ds-scroll-overlay.js.map +1 -0
  105. package/dist/components/ds-select-multi.js +1 -1
  106. package/dist/components/ds-select-multi.js.map +1 -1
  107. package/dist/components/ds-select.js +1 -1
  108. package/dist/components/ds-select.js.map +1 -1
  109. package/dist/components/ds-shell-app.js +1 -1
  110. package/dist/components/ds-shell-gradient-picker.js +1 -1
  111. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  112. package/dist/components/ds-shell-gradient-swatch.js.map +1 -1
  113. package/dist/components/ds-shell-page.js +1 -1
  114. package/dist/components/ds-shell-page.js.map +1 -1
  115. package/dist/components/ds-skeleton.js +1 -1
  116. package/dist/components/ds-slider.js +1 -1
  117. package/dist/components/ds-slider.js.map +1 -1
  118. package/dist/components/ds-swatch-picker.js +1 -1
  119. package/dist/components/ds-switch.js +1 -1
  120. package/dist/components/ds-tab-group.js +1 -1
  121. package/dist/components/ds-tab-group.js.map +1 -1
  122. package/dist/components/ds-tag.js +1 -1
  123. package/dist/components/ds-tag.js.map +1 -1
  124. package/dist/components/ds-text.js +1 -1
  125. package/dist/components/ds-toast.js +1 -1
  126. package/dist/components/ds-tooltip-data-viz.js +1 -1
  127. package/dist/components/ds-tooltip.js +1 -1
  128. package/dist/components/ds-typing-indicator.js +1 -1
  129. package/dist/components/ds-typing-indicator.js.map +1 -1
  130. package/dist/components/{p-B9jvSGid.js → p-9dQQSgwT.js} +2 -2
  131. package/dist/components/p-B3rbhRAk.js +2 -0
  132. package/dist/components/p-B3rbhRAk.js.map +1 -0
  133. package/dist/components/{p-BWUTr_XN.js → p-BJMRBHKW.js} +2 -2
  134. package/dist/components/p-BJMRBHKW.js.map +1 -0
  135. package/dist/components/p-BVV_rlIP.js +2 -0
  136. package/dist/components/p-BVV_rlIP.js.map +1 -0
  137. package/dist/components/p-BhxwpOH8.js +2 -0
  138. package/dist/components/{p-DpyTrZa2.js.map → p-BhxwpOH8.js.map} +1 -1
  139. package/dist/components/p-Bi_bxbih.js +2 -0
  140. package/dist/components/{p-Dqwcw1-m.js.map → p-Bi_bxbih.js.map} +1 -1
  141. package/dist/components/p-BtEjlcB9.js +2 -0
  142. package/dist/components/{p-DABj3qTX.js.map → p-BtEjlcB9.js.map} +1 -1
  143. package/dist/components/{p-Bs6SS34m.js → p-BwGnhInj.js} +2 -2
  144. package/dist/components/p-BwGnhInj.js.map +1 -0
  145. package/dist/components/p-C0NPJ0h2.js +2 -0
  146. package/dist/components/p-C0NPJ0h2.js.map +1 -0
  147. package/dist/components/{p-BkwBtZs3.js → p-C7bZ-jiU.js} +2 -2
  148. package/dist/components/p-CH3w-P2H.js +2 -0
  149. package/dist/components/p-CH3w-P2H.js.map +1 -0
  150. package/dist/components/{p-DxeHimqk.js → p-CH6cNXXF.js} +2 -2
  151. package/dist/components/p-CWlh7HAg.js +2 -0
  152. package/dist/components/p-CWlh7HAg.js.map +1 -0
  153. package/dist/components/p-CY19gMiz.js +2 -0
  154. package/dist/components/p-CY19gMiz.js.map +1 -0
  155. package/dist/components/p-C_ewSXTT.js +2 -0
  156. package/dist/components/p-C_ewSXTT.js.map +1 -0
  157. package/dist/components/{p-tDXHTAJh.js → p-Ce52yVXF.js} +2 -2
  158. package/dist/components/p-CoYFJD-w.js +2 -0
  159. package/dist/components/{p-webARv8d.js.map → p-CoYFJD-w.js.map} +1 -1
  160. package/dist/components/{p-BzsITTZa.js → p-Cuw2Lo2g.js} +2 -2
  161. package/dist/components/p-CydY-v7X.js +2 -0
  162. package/dist/components/p-CydY-v7X.js.map +1 -0
  163. package/dist/components/{p-LFGbdi7Y.js → p-D-xttdpn.js} +2 -2
  164. package/dist/components/{p-DfIch2Dk.js → p-D3DYxbC5.js} +2 -2
  165. package/dist/components/{p-CR7yMitN.js → p-DC7yOUQx.js} +2 -2
  166. package/dist/components/{p-liMPkhUP.js → p-DSa0Hnd3.js} +2 -2
  167. package/dist/components/p-DXewjzkM.js +2 -0
  168. package/dist/components/p-DXewjzkM.js.map +1 -0
  169. package/dist/components/p-DYqReipj.js +2 -0
  170. package/dist/components/{p-Dy_sZ-dI.js.map → p-DYqReipj.js.map} +1 -1
  171. package/dist/components/p-DbpfpeQT.js +2 -0
  172. package/dist/components/p-DbpfpeQT.js.map +1 -0
  173. package/dist/components/{p-DszI94sZ.js → p-DjPZxzIG.js} +2 -2
  174. package/dist/components/{p-DszI94sZ.js.map → p-DjPZxzIG.js.map} +1 -1
  175. package/dist/components/{p-CTV_QWC5.js → p-J6xK6Ihq.js} +2 -2
  176. package/dist/components/{p-Dfxnxx7L.js → p-jCWtxthA.js} +2 -2
  177. package/dist/docs/components.json +2137 -743
  178. package/dist/lib/utils/anchored-popup.d.ts +5 -1
  179. package/dist/lib/utils/index.js +3 -1
  180. package/dist/lib/utils/index.js.map +2 -2
  181. package/dist/mcp/cli.js +142 -18
  182. package/dist/mcp-data/registry/agent-response.json +9 -4
  183. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  184. package/dist/mcp-data/registry/avatar.json +26 -7
  185. package/dist/mcp-data/registry/bar-title.json +76 -37
  186. package/dist/mcp-data/registry/bar-workflow.json +368 -0
  187. package/dist/mcp-data/registry/breadcrumb.json +205 -0
  188. package/dist/mcp-data/registry/button-filled.json +1 -1
  189. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  190. package/dist/mcp-data/registry/card-data-viz-bar.json +212 -0
  191. package/dist/mcp-data/registry/card-data-viz-line.json +206 -0
  192. package/dist/mcp-data/registry/card-shell-data-viz.json +7 -0
  193. package/dist/mcp-data/registry/chart-bar-stacked.json +225 -0
  194. package/dist/mcp-data/registry/chart-bar.json +9 -2
  195. package/dist/mcp-data/registry/chart-legend.json +29 -3
  196. package/dist/mcp-data/registry/chart-line.json +4 -2
  197. package/dist/mcp-data/registry/checkbox.json +1 -1
  198. package/dist/mcp-data/registry/conversation-list-item.json +2 -2
  199. package/dist/mcp-data/registry/conversation-list-section.json +2 -2
  200. package/dist/mcp-data/registry/conversation-list.json +36 -9
  201. package/dist/mcp-data/registry/markdown.json +15 -10
  202. package/dist/mcp-data/registry/menu.json +9 -7
  203. package/dist/mcp-data/registry/message-scroller.json +6 -4
  204. package/dist/mcp-data/registry/message.json +3 -2
  205. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  206. package/dist/mcp-data/registry/registry.json +863 -74
  207. package/dist/mcp-data/registry/scroll-overlay.json +183 -0
  208. package/dist/mcp-data/registry/shell-gradient-swatch.json +1 -1
  209. package/dist/mcp-data/registry/shell-page.json +40 -19
  210. package/dist/mcp-data/registry/slider.json +1 -1
  211. package/dist/mcp-data/registry/switch.json +1 -1
  212. package/dist/mcp-data/registry/tab-group.json +1 -1
  213. package/dist/mcp-data/registry/text.json +1 -1
  214. package/dist/mcp-data/registry/typing-indicator.json +7 -7
  215. package/dist/react/components.d.ts +6 -0
  216. package/dist/react/components.js +6 -0
  217. package/dist/react/ds-bar-title.d.ts +2 -1
  218. package/dist/react/ds-bar-title.js +1 -0
  219. package/dist/react/ds-bar-workflow.d.ts +14 -0
  220. package/dist/react/ds-bar-workflow.js +16 -0
  221. package/dist/react/ds-breadcrumb.d.ts +12 -0
  222. package/dist/react/ds-breadcrumb.js +12 -0
  223. package/dist/react/ds-card-data-viz-bar.d.ts +12 -0
  224. package/dist/react/ds-card-data-viz-bar.js +12 -0
  225. package/dist/react/ds-card-data-viz-line.d.ts +12 -0
  226. package/dist/react/ds-card-data-viz-line.js +12 -0
  227. package/dist/react/ds-chart-bar-stacked.d.ts +9 -0
  228. package/dist/react/ds-chart-bar-stacked.js +12 -0
  229. package/dist/react/ds-scroll-overlay.d.ts +12 -0
  230. package/dist/react/ds-scroll-overlay.js +12 -0
  231. package/dist/styles/prose.css +215 -0
  232. package/dist/types/components/Avatar/Avatar.d.ts +4 -1
  233. package/dist/types/components/BarTitle/BarTitle.d.ts +14 -5
  234. package/dist/types/components/BarTitle/bar-title-types.d.ts +0 -1
  235. package/dist/types/components/BarWorkflow/BarWorkflow.d.ts +37 -0
  236. package/dist/types/components/BarWorkflow/bar-workflow-types.d.ts +12 -0
  237. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +31 -0
  238. package/dist/types/components/Breadcrumb/breadcrumb-types.d.ts +17 -0
  239. package/dist/types/components/CardDataVizBar/CardDataVizBar.d.ts +24 -0
  240. package/dist/types/components/CardDataVizBar/index.d.ts +2 -0
  241. package/dist/types/components/CardDataVizLine/CardDataVizLine.d.ts +24 -0
  242. package/dist/types/components/CardDataVizLine/index.d.ts +2 -0
  243. package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +15 -0
  244. package/dist/types/components/ChartBarStacked/index.d.ts +3 -0
  245. package/dist/types/components/ChartLegend/ChartLegend.d.ts +3 -0
  246. package/dist/types/components/ConversationList/ConversationList.d.ts +12 -0
  247. package/dist/types/components/Menu/Menu.d.ts +1 -2
  248. package/dist/types/components/MessageScroller/MessageScroller.d.ts +1 -6
  249. package/dist/types/components/ScrollOverlay/ScrollOverlay.d.ts +28 -0
  250. package/dist/types/components/ShellPage/ShellPage.d.ts +19 -7
  251. package/dist/types/components/ShellPage/shell-page-responsive.d.ts +0 -8
  252. package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +1 -1
  253. package/dist/types/components.d.ts +572 -26
  254. package/dist/types/stories/isolated-overlay-docs.d.ts +13 -0
  255. package/dist/types/utils/anchored-popup.d.ts +5 -1
  256. package/dist/types/utils/scroll-overlay-controller.d.ts +35 -0
  257. package/package.json +4 -3
  258. package/dist/components/p-BWUTr_XN.js.map +0 -1
  259. package/dist/components/p-BfEjWe8U.js +0 -2
  260. package/dist/components/p-BfEjWe8U.js.map +0 -1
  261. package/dist/components/p-Bs6SS34m.js.map +0 -1
  262. package/dist/components/p-C3Zfn7hz.js +0 -2
  263. package/dist/components/p-C3Zfn7hz.js.map +0 -1
  264. package/dist/components/p-CUik7PCi.js +0 -2
  265. package/dist/components/p-CUik7PCi.js.map +0 -1
  266. package/dist/components/p-CzBnvtcz.js +0 -2
  267. package/dist/components/p-CzBnvtcz.js.map +0 -1
  268. package/dist/components/p-DABj3qTX.js +0 -2
  269. package/dist/components/p-DpyTrZa2.js +0 -2
  270. package/dist/components/p-Dqwcw1-m.js +0 -2
  271. package/dist/components/p-Dy3Skua8.js +0 -2
  272. package/dist/components/p-Dy3Skua8.js.map +0 -1
  273. package/dist/components/p-Dy_sZ-dI.js +0 -2
  274. package/dist/components/p-l6PmnW_P.js +0 -2
  275. package/dist/components/p-l6PmnW_P.js.map +0 -1
  276. package/dist/components/p-webARv8d.js +0 -2
  277. /package/dist/components/{p-B9jvSGid.js.map → p-9dQQSgwT.js.map} +0 -0
  278. /package/dist/components/{p-BkwBtZs3.js.map → p-C7bZ-jiU.js.map} +0 -0
  279. /package/dist/components/{p-DxeHimqk.js.map → p-CH6cNXXF.js.map} +0 -0
  280. /package/dist/components/{p-tDXHTAJh.js.map → p-Ce52yVXF.js.map} +0 -0
  281. /package/dist/components/{p-BzsITTZa.js.map → p-Cuw2Lo2g.js.map} +0 -0
  282. /package/dist/components/{p-LFGbdi7Y.js.map → p-D-xttdpn.js.map} +0 -0
  283. /package/dist/components/{p-DfIch2Dk.js.map → p-D3DYxbC5.js.map} +0 -0
  284. /package/dist/components/{p-CR7yMitN.js.map → p-DC7yOUQx.js.map} +0 -0
  285. /package/dist/components/{p-liMPkhUP.js.map → p-DSa0Hnd3.js.map} +0 -0
  286. /package/dist/components/{p-CTV_QWC5.js.map → p-J6xK6Ihq.js.map} +0 -0
  287. /package/dist/components/{p-Dfxnxx7L.js.map → p-jCWtxthA.js.map} +0 -0
package/README.md CHANGED
@@ -76,6 +76,12 @@ instruction telling agents to retrieve the applicable pattern before composing
76
76
  multiple design-system components; connecting the MCP makes recipes available,
77
77
  while the instruction makes their use consistent.
78
78
 
79
+ Registry-oriented tools return both readable Markdown and schema-validated
80
+ `structuredContent`. Compatible MCP clients can consume the generated component
81
+ API, authored design intent, dependencies, and executable pattern recipes as JSON
82
+ without reparsing prose; text content remains available for older clients. Every
83
+ tool is annotated as read-only, idempotent, and closed-world.
84
+
79
85
  ## Components
80
86
 
81
87
  All tags are `ds-*` custom elements. Grouped by role (see Storybook for props and stories):
@@ -93,16 +99,33 @@ All tags are `ds-*` custom elements. Grouped by role (see Storybook for props an
93
99
  - **Modal**, **Menu**, **Tooltip**, **Select**, **Toast**
94
100
 
95
101
  ### Navigation
96
- - **TabGroup** (horizontal local views), **PanelSubNav** (vertical local views)
97
- - **ShellApp**, **PanelNav**, **BarNav**, **PanelTools**
102
+ - **Breadcrumb** (hierarchical page ancestors), **TabGroup** (horizontal local views), **PanelSubNav** (vertical local views)
103
+ - **ShellApp**, **ShellPage**, **PanelNav**, **BarNav**, **BarTitle**, **BarWorkflow**, **PanelTools**
98
104
 
99
105
  ### Status & layout
100
- - **EmptyState**, **Loader**, **Skeleton**, **CardSetting**, **CardDataVizDonut**
106
+ - **EmptyState**, **Loader**, **Skeleton**, **CardSetting**, **CardDataVizDonut**, **CardDataVizLine**
101
107
 
102
108
  ## Token dependency
103
109
 
104
110
  All styling uses TokoMo CSS custom properties. No hardcoded colors, sizes, or shadows — everything maps to the token system. Components will render unstyled if `@ds-mo/tokens` is not imported.
105
111
 
112
+ ## Semantic prose
113
+
114
+ Safe semantic DOM produced by Markdown, CMS, or documentation renderers can use the renderer-neutral prose stylesheet:
115
+
116
+ ```css
117
+ @import '@ds-mo/ui/prose.css';
118
+ ```
119
+
120
+ ```html
121
+ <article class="ds-prose">
122
+ <h2>Summary</h2>
123
+ <p>Renderer-owned semantic content.</p>
124
+ </article>
125
+ ```
126
+
127
+ The application remains responsible for parsing and content safety. Use `data-ds-prose="off"` on embedded product UI, and wrap wide tables in `.ds-prose__table-scroll`. See the [prose foundation decision](docs/prose-foundation.md).
128
+
106
129
  ## Icon pattern
107
130
 
108
131
  Components that accept icons use a named `icon` slot:
package/dist/.build-stamp CHANGED
@@ -1 +1 @@
1
- 1784746307808
1
+ 1784842126322
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "package": "@ds-mo/ui",
4
- "packageVersion": "12.1.0",
4
+ "packageVersion": "12.3.0",
5
5
  "kind": "patterns",
6
6
  "entries": [
7
7
  {
@@ -45,6 +45,7 @@
45
45
  "The application owns scripted or real transport, immutable response parts, retry, stop, generated titles, and persistence.",
46
46
  "User-sent prompts use MessageBubble's user variant and body-medium regular default with secondary foreground; the application does not promote ordinary sent-message copy to body-large.",
47
47
  "AgentResponse renders directly in Message without a MessageBubble surface, owns ordered display only, and never reveals private reasoning.",
48
+ "Markdown parsing and safe node creation belong to the renderer; the renderer-neutral @ds-mo/ui/prose.css surface owns only semantic-tree styling.",
48
49
  "Tool-call components display execution state but do not request participant approval."
49
50
  ],
50
51
  "accessibility": [
@@ -442,8 +443,8 @@
442
443
  "Keep route loading, error, empty, success, and validation communication in the ShellPage content slot."
443
444
  ],
444
445
  "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.",
446
+ "Resolve viewport and persistent shell chrome into ShellPage.headerCapacity; ShellPage uses that explicit capacity plus scroll position to select expanded, compact, or constrained presentation.",
447
+ "Set primaryAction.collapse to never only when an ordinary routed-page action must preserve visible hierarchy; create and edit workflows use BarWorkflow instead.",
447
448
  "Use contentInset none only for deliberately full-bleed products such as maps and canvases.",
448
449
  "Place TabGroup inside ShellPage content for inner-page panels; route-level sections remain in BarTitle."
449
450
  ],
@@ -459,7 +460,7 @@
459
460
  {
460
461
  "path": "page.html",
461
462
  "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
+ "content": "<ds-shell-app>\n <ds-shell-page header-capacity=\"roomy\">\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
  },
464
465
  {
465
466
  "path": "page.ts",
@@ -489,7 +490,7 @@
489
490
  {
490
491
  "path": "DriversPage.tsx",
491
492
  "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
+ "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 headerCapacity=\"roomy\">\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
  }
494
495
  ],
495
496
  "notes": [
@@ -514,12 +515,12 @@
514
515
  {
515
516
  "path": "drivers-page.component.html",
516
517
  "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
+ "content": "<ds-shell-page [headerCapacity]=\"headerCapacity\">\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
  },
519
520
  {
520
521
  "path": "drivers-page.component.ts",
521
522
  "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
+ "content": "import { Component } from '@angular/core'\nimport { RouterOutlet } from '@angular/router'\nimport type { ShellPageCapacity } from '@ds-mo/ui'\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 headerCapacity: ShellPageCapacity = 'roomy'\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
  }
524
525
  ],
525
526
  "notes": [