@ds-mo/ui 14.27.0 → 14.28.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 (255) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +2 -2
  3. package/dist/agent.json +290 -10
  4. package/dist/angular/ds-card-navigation.d.ts +20 -0
  5. package/dist/angular/ds-card-navigation.js +42 -0
  6. package/dist/angular/ds-card-settings-scope.d.ts +19 -0
  7. package/dist/angular/ds-card-settings-scope.js +42 -0
  8. package/dist/angular/ds-menu.d.ts +1 -1
  9. package/dist/angular/ds-menu.js +3 -3
  10. package/dist/angular/ds-mobile-bar-nav.d.ts +1 -1
  11. package/dist/angular/ds-mobile-bar-nav.js +3 -3
  12. package/dist/angular/ds-mobile-header.d.ts +1 -1
  13. package/dist/angular/ds-mobile-header.js +3 -3
  14. package/dist/angular/ds-mobile-section-switcher.d.ts +1 -1
  15. package/dist/angular/ds-mobile-section-switcher.js +3 -3
  16. package/dist/angular/ds-mobile-sheet-nav.d.ts +7 -1
  17. package/dist/angular/ds-mobile-sheet-nav.js +7 -4
  18. package/dist/angular/index.d.ts +1 -1
  19. package/dist/angular/index.js +2 -0
  20. package/dist/angular/proxies.d.ts +2 -0
  21. package/dist/angular/proxies.js +2 -0
  22. package/dist/components/ds-agent-activity.js +1 -1
  23. package/dist/components/ds-agent-questionnaire.js +1 -1
  24. package/dist/components/ds-agent-response.js +1 -1
  25. package/dist/components/ds-agent-source-list.js +1 -1
  26. package/dist/components/ds-agent-tool-call.js +1 -1
  27. package/dist/components/ds-attachment-list.js +1 -1
  28. package/dist/components/ds-badge.js +1 -1
  29. package/dist/components/ds-banner.js +1 -1
  30. package/dist/components/ds-bar-action.js +1 -1
  31. package/dist/components/ds-bar-nav.js +1 -1
  32. package/dist/components/ds-bar-title.js +1 -1
  33. package/dist/components/ds-bar-workflow.js +1 -1
  34. package/dist/components/ds-breadcrumb.js +1 -1
  35. package/dist/components/ds-button-filled.js +1 -1
  36. package/dist/components/ds-button-unfilled.js +1 -1
  37. package/dist/components/ds-card-chart.js +1 -1
  38. package/dist/components/ds-card-navigation.d.ts +11 -0
  39. package/dist/components/ds-card-navigation.js +2 -0
  40. package/dist/components/ds-card-navigation.js.map +1 -0
  41. package/dist/components/ds-card-overview.js +1 -1
  42. package/dist/components/ds-card-setting.js +1 -1
  43. package/dist/components/ds-card-settings-scope.d.ts +11 -0
  44. package/dist/components/ds-card-settings-scope.js +2 -0
  45. package/dist/components/ds-card-settings-scope.js.map +1 -0
  46. package/dist/components/ds-chart-legend.js +1 -1
  47. package/dist/components/ds-chart.js +1 -1
  48. package/dist/components/ds-checkbox.js +1 -1
  49. package/dist/components/ds-chip.js +1 -1
  50. package/dist/components/ds-code-block.js +1 -1
  51. package/dist/components/ds-conversation-list-item.js +1 -1
  52. package/dist/components/ds-conversation-list-section.js +1 -1
  53. package/dist/components/ds-conversation-list.js +1 -1
  54. package/dist/components/ds-divider.js +1 -1
  55. package/dist/components/ds-empty-state.js +1 -1
  56. package/dist/components/ds-field.js +1 -1
  57. package/dist/components/ds-filter-menu.js +1 -1
  58. package/dist/components/ds-input.js +1 -1
  59. package/dist/components/ds-markdown.js +1 -1
  60. package/dist/components/ds-menu.js +1 -1
  61. package/dist/components/ds-message-actions.js +1 -1
  62. package/dist/components/ds-message-bubble.js +1 -1
  63. package/dist/components/ds-message-composer.js +1 -1
  64. package/dist/components/ds-message-scroller.js +1 -1
  65. package/dist/components/ds-message.js +1 -1
  66. package/dist/components/ds-mobile-bar-nav.js +1 -1
  67. package/dist/components/ds-mobile-header.js +1 -1
  68. package/dist/components/ds-mobile-section-switcher.js +1 -1
  69. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  70. package/dist/components/ds-modal.js +1 -1
  71. package/dist/components/ds-pagination.js +1 -1
  72. package/dist/components/ds-panel-nav.js +1 -1
  73. package/dist/components/ds-panel-sub-nav.js +1 -1
  74. package/dist/components/ds-panel-tool-header.js +1 -1
  75. package/dist/components/ds-panel-tool-search.js +1 -1
  76. package/dist/components/ds-panel-tools.js +1 -1
  77. package/dist/components/ds-paper-texture.js +1 -1
  78. package/dist/components/ds-radio.js +1 -1
  79. package/dist/components/ds-score.js +1 -1
  80. package/dist/components/ds-scroll-overlay.js +1 -1
  81. package/dist/components/ds-select.js +1 -1
  82. package/dist/components/ds-shell-app.js +1 -1
  83. package/dist/components/ds-shell-app.js.map +1 -1
  84. package/dist/components/ds-shell-page.js +1 -1
  85. package/dist/components/ds-shell-tools.js +1 -1
  86. package/dist/components/ds-skeleton.js +1 -1
  87. package/dist/components/ds-slider.js +1 -1
  88. package/dist/components/ds-swatch-picker.js +1 -1
  89. package/dist/components/ds-switch.js +1 -1
  90. package/dist/components/ds-tab-group.js +1 -1
  91. package/dist/components/ds-table-filter.js +1 -1
  92. package/dist/components/ds-table-group.js +1 -1
  93. package/dist/components/ds-table-saved-views.js +1 -1
  94. package/dist/components/ds-table-search.js +1 -1
  95. package/dist/components/ds-table-sort.js +1 -1
  96. package/dist/components/ds-table-toolbar.js +1 -1
  97. package/dist/components/ds-table.js +1 -1
  98. package/dist/components/ds-tag.js +1 -1
  99. package/dist/components/ds-text.js +1 -1
  100. package/dist/components/ds-textarea.js +1 -1
  101. package/dist/components/ds-toast.js +1 -1
  102. package/dist/components/ds-tooltip-chart.js +1 -1
  103. package/dist/components/ds-tooltip.js +1 -1
  104. package/dist/components/ds-typing-indicator.js +1 -1
  105. package/dist/components/{p-Is1lFmwp.js → p-1gt8QlyW.js} +2 -2
  106. package/dist/components/{p-CGQnHNuW.js → p-6iF6gdoc.js} +2 -2
  107. package/dist/components/{p-B3sRZBZk.js → p-8atLxerP.js} +2 -2
  108. package/dist/components/{p-DkxOEFHN.js → p-B3iy9Rl_.js} +2 -2
  109. package/dist/components/{p-Q7AOgrg5.js → p-BCFpqnAg.js} +2 -2
  110. package/dist/components/p-BFHWoNH3.js +2 -0
  111. package/dist/components/{p-BVz-r3g0.js.map → p-BFHWoNH3.js.map} +1 -1
  112. package/dist/components/p-BLTHIBsE.js +2 -0
  113. package/dist/components/p-BLTHIBsE.js.map +1 -0
  114. package/dist/components/p-BWDbER5T.js +2 -0
  115. package/dist/components/p-BWDbER5T.js.map +1 -0
  116. package/dist/components/{p-C68oSTb1.js → p-BXT2opmZ.js} +2 -2
  117. package/dist/components/{p-B9esvbYk.js → p-B_NN7k8H.js} +2 -2
  118. package/dist/components/p-BdU6FPu4.js +2 -0
  119. package/dist/components/{p-BXDLR072.js.map → p-BdU6FPu4.js.map} +1 -1
  120. package/dist/components/{p-BVpn_e-r.js → p-BdXUd-tK.js} +2 -2
  121. package/dist/components/p-BdXUd-tK.js.map +1 -0
  122. package/dist/components/{p-BRLDf-NK.js → p-Bj018KMC.js} +2 -2
  123. package/dist/components/{p-DGkn8FwV.js → p-Bl5wd3v3.js} +2 -2
  124. package/dist/components/{p-Bb9dA7sl.js → p-BpB2EF9g.js} +2 -2
  125. package/dist/components/{p-537t6oRD.js → p-BxLF8b8a.js} +2 -2
  126. package/dist/components/{p-BIGpc__9.js → p-C1BJgnHY.js} +2 -2
  127. package/dist/components/p-C78uTz-n.js +2 -0
  128. package/dist/components/p-C78uTz-n.js.map +1 -0
  129. package/dist/components/p-C82vesh_.js +2 -0
  130. package/dist/components/p-C82vesh_.js.map +1 -0
  131. package/dist/components/{p-DW8ssbfI.js → p-CN8PQLZu.js} +2 -2
  132. package/dist/components/{p-DQsFmleZ.js → p-COn7l__5.js} +2 -2
  133. package/dist/components/{p-Cf5Ai4xx.js → p-CW7JhWlS.js} +2 -2
  134. package/dist/components/{p-CaF5WCci.js → p-Cocq-utR.js} +2 -2
  135. package/dist/components/{p-to8BxxgT.js → p-CsW_2w-s.js} +2 -2
  136. package/dist/components/p-CvB76TJn.js +2 -0
  137. package/dist/components/p-CvB76TJn.js.map +1 -0
  138. package/dist/components/{p-2wIPUcSL.js → p-CxbGZJBU.js} +2 -2
  139. package/dist/components/p-D4-RkuER.js +2 -0
  140. package/dist/components/p-D4-RkuER.js.map +1 -0
  141. package/dist/components/{p-Bjt_8sLe.js → p-DB_tlJ2d.js} +2 -2
  142. package/dist/components/{p-VT-5XDkB.js → p-DDOuPq-N.js} +2 -2
  143. package/dist/components/{p-B3Z5sQin.js → p-DGHeKNfG.js} +2 -2
  144. package/dist/components/{p-DDqRCDXh.js → p-DSJSnQ1U.js} +2 -2
  145. package/dist/components/{p-Cr6pDY-e.js → p-DYK0slTb.js} +2 -2
  146. package/dist/components/{p-D9wZlB_N.js → p-D_QtZZR8.js} +2 -2
  147. package/dist/components/{p-Bv6FSDPR.js → p-DbDYEEWq.js} +2 -2
  148. package/dist/components/{p-Q0dkeoJ6.js → p-DmYZLH_L.js} +2 -2
  149. package/dist/components/{p-BEXkJ9lg.js → p-DnQN0pLp.js} +2 -2
  150. package/dist/components/{p-DIqAdmui.js → p-FiM3rF7B.js} +2 -2
  151. package/dist/components/{p-WFo1x6dN.js → p-Hzz2j1Je.js} +2 -2
  152. package/dist/components/{p-BZiGtBBk.js → p-Kp8ifB1g.js} +2 -2
  153. package/dist/components/{p-1604KY3B.js → p-NB-SoVpo.js} +2 -2
  154. package/dist/components/{p-GEi3hDJQ.js → p-P9My22Z1.js} +2 -2
  155. package/dist/components/{p-CQjUOHiN.js → p-WM1GTEun.js} +2 -2
  156. package/dist/components/{p-DQQsS9Rx.js → p-aMyflqva.js} +2 -2
  157. package/dist/components/{p-DZcIt_JJ.js → p-dgep63_i.js} +2 -2
  158. package/dist/components/{p-6_CNVbqa.js → p-oAbq-DLk.js} +2 -2
  159. package/dist/components/{p-BMzn2Cmw.js → p-rSC7ZUpy.js} +2 -2
  160. package/dist/docs/components.json +838 -39
  161. package/dist/mcp-data/registry/card-navigation.json +255 -0
  162. package/dist/mcp-data/registry/card-settings-scope.json +314 -0
  163. package/dist/mcp-data/registry/field.json +1 -1
  164. package/dist/mcp-data/registry/menu.json +21 -2
  165. package/dist/mcp-data/registry/mobile-bar-nav.json +20 -1
  166. package/dist/mcp-data/registry/mobile-header.json +23 -3
  167. package/dist/mcp-data/registry/mobile-section-switcher.json +45 -6
  168. package/dist/mcp-data/registry/mobile-sheet-nav.json +40 -3
  169. package/dist/mcp-data/registry/panel-nav.json +2 -2
  170. package/dist/mcp-data/registry/registry.json +295 -9
  171. package/dist/mcp-data/registry/shell-app.json +7 -6
  172. package/dist/react/components.d.ts +2 -0
  173. package/dist/react/components.js +2 -0
  174. package/dist/react/ds-card-navigation.d.ts +12 -0
  175. package/dist/react/ds-card-navigation.js +12 -0
  176. package/dist/react/ds-card-settings-scope.d.ts +12 -0
  177. package/dist/react/ds-card-settings-scope.js +12 -0
  178. package/dist/react/ds-mobile-sheet-nav.d.ts +2 -1
  179. package/dist/react/ds-mobile-sheet-nav.js +1 -0
  180. package/dist/types/components/CardNavigation/CardNavigation.d.ts +31 -0
  181. package/dist/types/components/CardNavigation/index.d.ts +2 -0
  182. package/dist/types/components/CardSettingsScope/CardSettingsScope.d.ts +33 -0
  183. package/dist/types/components/CardSettingsScope/index.d.ts +2 -0
  184. package/dist/types/components/Field/Field.d.ts +7 -0
  185. package/dist/types/components/Menu/Menu.d.ts +4 -0
  186. package/dist/types/components/MobileBarNav/MobileBarNav.d.ts +2 -0
  187. package/dist/types/components/MobileHeader/MobileHeader.d.ts +3 -0
  188. package/dist/types/components/MobileSectionSwitcher/MobileSectionSwitcher.d.ts +17 -0
  189. package/dist/types/components/MobileSheetNav/MobileSheetNav.d.ts +15 -2
  190. package/dist/types/components/ShellApp/ShellApp.d.ts +4 -2
  191. package/dist/types/components.d.ts +300 -2
  192. package/dist/vue/components.d.ts +2 -0
  193. package/dist/vue/components.js +2 -0
  194. package/dist/vue/ds-card-navigation.d.ts +3 -0
  195. package/dist/vue/ds-card-navigation.js +15 -0
  196. package/dist/vue/ds-card-settings-scope.d.ts +3 -0
  197. package/dist/vue/ds-card-settings-scope.js +20 -0
  198. package/dist/vue/ds-menu.js +1 -0
  199. package/dist/vue/ds-mobile-bar-nav.js +1 -0
  200. package/dist/vue/ds-mobile-header.js +1 -0
  201. package/dist/vue/ds-mobile-section-switcher.js +2 -0
  202. package/dist/vue/ds-mobile-sheet-nav.js +3 -0
  203. package/package.json +1 -1
  204. package/dist/components/p-BUh2GkPJ.js +0 -2
  205. package/dist/components/p-BUh2GkPJ.js.map +0 -1
  206. package/dist/components/p-BVpn_e-r.js.map +0 -1
  207. package/dist/components/p-BVz-r3g0.js +0 -2
  208. package/dist/components/p-BXDLR072.js +0 -2
  209. package/dist/components/p-BssZ4SbT.js +0 -2
  210. package/dist/components/p-BssZ4SbT.js.map +0 -1
  211. package/dist/components/p-Cy1oWIaV.js +0 -2
  212. package/dist/components/p-Cy1oWIaV.js.map +0 -1
  213. package/dist/components/p-DVLghmNY.js +0 -2
  214. package/dist/components/p-DVLghmNY.js.map +0 -1
  215. package/dist/components/p-DlbhmXjH.js +0 -2
  216. package/dist/components/p-DlbhmXjH.js.map +0 -1
  217. package/dist/components/p-LMmrjmI_.js +0 -2
  218. package/dist/components/p-LMmrjmI_.js.map +0 -1
  219. /package/dist/components/{p-Is1lFmwp.js.map → p-1gt8QlyW.js.map} +0 -0
  220. /package/dist/components/{p-CGQnHNuW.js.map → p-6iF6gdoc.js.map} +0 -0
  221. /package/dist/components/{p-B3sRZBZk.js.map → p-8atLxerP.js.map} +0 -0
  222. /package/dist/components/{p-DkxOEFHN.js.map → p-B3iy9Rl_.js.map} +0 -0
  223. /package/dist/components/{p-Q7AOgrg5.js.map → p-BCFpqnAg.js.map} +0 -0
  224. /package/dist/components/{p-C68oSTb1.js.map → p-BXT2opmZ.js.map} +0 -0
  225. /package/dist/components/{p-B9esvbYk.js.map → p-B_NN7k8H.js.map} +0 -0
  226. /package/dist/components/{p-BRLDf-NK.js.map → p-Bj018KMC.js.map} +0 -0
  227. /package/dist/components/{p-DGkn8FwV.js.map → p-Bl5wd3v3.js.map} +0 -0
  228. /package/dist/components/{p-Bb9dA7sl.js.map → p-BpB2EF9g.js.map} +0 -0
  229. /package/dist/components/{p-537t6oRD.js.map → p-BxLF8b8a.js.map} +0 -0
  230. /package/dist/components/{p-BIGpc__9.js.map → p-C1BJgnHY.js.map} +0 -0
  231. /package/dist/components/{p-DW8ssbfI.js.map → p-CN8PQLZu.js.map} +0 -0
  232. /package/dist/components/{p-DQsFmleZ.js.map → p-COn7l__5.js.map} +0 -0
  233. /package/dist/components/{p-Cf5Ai4xx.js.map → p-CW7JhWlS.js.map} +0 -0
  234. /package/dist/components/{p-CaF5WCci.js.map → p-Cocq-utR.js.map} +0 -0
  235. /package/dist/components/{p-to8BxxgT.js.map → p-CsW_2w-s.js.map} +0 -0
  236. /package/dist/components/{p-2wIPUcSL.js.map → p-CxbGZJBU.js.map} +0 -0
  237. /package/dist/components/{p-Bjt_8sLe.js.map → p-DB_tlJ2d.js.map} +0 -0
  238. /package/dist/components/{p-VT-5XDkB.js.map → p-DDOuPq-N.js.map} +0 -0
  239. /package/dist/components/{p-B3Z5sQin.js.map → p-DGHeKNfG.js.map} +0 -0
  240. /package/dist/components/{p-DDqRCDXh.js.map → p-DSJSnQ1U.js.map} +0 -0
  241. /package/dist/components/{p-Cr6pDY-e.js.map → p-DYK0slTb.js.map} +0 -0
  242. /package/dist/components/{p-D9wZlB_N.js.map → p-D_QtZZR8.js.map} +0 -0
  243. /package/dist/components/{p-Bv6FSDPR.js.map → p-DbDYEEWq.js.map} +0 -0
  244. /package/dist/components/{p-Q0dkeoJ6.js.map → p-DmYZLH_L.js.map} +0 -0
  245. /package/dist/components/{p-BEXkJ9lg.js.map → p-DnQN0pLp.js.map} +0 -0
  246. /package/dist/components/{p-DIqAdmui.js.map → p-FiM3rF7B.js.map} +0 -0
  247. /package/dist/components/{p-WFo1x6dN.js.map → p-Hzz2j1Je.js.map} +0 -0
  248. /package/dist/components/{p-BZiGtBBk.js.map → p-Kp8ifB1g.js.map} +0 -0
  249. /package/dist/components/{p-1604KY3B.js.map → p-NB-SoVpo.js.map} +0 -0
  250. /package/dist/components/{p-GEi3hDJQ.js.map → p-P9My22Z1.js.map} +0 -0
  251. /package/dist/components/{p-CQjUOHiN.js.map → p-WM1GTEun.js.map} +0 -0
  252. /package/dist/components/{p-DQQsS9Rx.js.map → p-aMyflqva.js.map} +0 -0
  253. /package/dist/components/{p-DZcIt_JJ.js.map → p-dgep63_i.js.map} +0 -0
  254. /package/dist/components/{p-6_CNVbqa.js.map → p-oAbq-DLk.js.map} +0 -0
  255. /package/dist/components/{p-BMzn2Cmw.js.map → p-rSC7ZUpy.js.map} +0 -0
@@ -2385,6 +2385,136 @@
2385
2385
  "text"
2386
2386
  ]
2387
2387
  },
2388
+ {
2389
+ "name": "card-navigation",
2390
+ "title": "CardNavigation",
2391
+ "description": "Settings-style navigation surface with a native destination link, optional supporting copy, a fixed ChevronRight affordance, and an optional application-owned body.",
2392
+ "type": "registry:ui",
2393
+ "meta": {
2394
+ "library": "@ds-mo/ui",
2395
+ "distribution": "npm",
2396
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-navigation",
2397
+ "source": "src/wc/components/CardNavigation/CardNavigation.tsx",
2398
+ "intentStatus": "complete",
2399
+ "intent": {
2400
+ "audience": "general",
2401
+ "status": "stable",
2402
+ "summary": "Settings-style navigation surface with a native destination link, optional supporting copy, a fixed ChevronRight affordance, and an optional application-owned body.",
2403
+ "useWhen": [
2404
+ "A settings page needs a card that leads to a deeper settings destination.",
2405
+ "A compact destination card needs the complete surface to act as one link.",
2406
+ "A settings summary must remain visible in a body while only the card header navigates."
2407
+ ],
2408
+ "avoidWhen": [
2409
+ "The card edits its contents in place; use CardSetting for the edit-save-cancel workflow.",
2410
+ "The destination is an action without a navigable URL.",
2411
+ "The surface contains a chart, legend, metric visualization, or other data-visualization composition."
2412
+ ],
2413
+ "alternatives": [
2414
+ {
2415
+ "when": "The section switches between read-only and editable content in place.",
2416
+ "component": "component:ds-card-setting",
2417
+ "reason": "CardSetting owns the controlled edit-save-cancel workflow."
2418
+ },
2419
+ {
2420
+ "when": "The surface contains a chart or specialized data-visualization composition.",
2421
+ "component": "component:ds-card-chart",
2422
+ "reason": "CardChart owns the independently evolving chart-card contract."
2423
+ }
2424
+ ],
2425
+ "commonlyComposedWith": [
2426
+ "component:ds-text",
2427
+ "component:ds-card-setting"
2428
+ ],
2429
+ "accessibility": [
2430
+ "CardNavigation renders a native link whenever href resolves to an allowed URL, so Enter activation, link context menus, and modified-click behavior remain available.",
2431
+ "The heading is rendered as an h2 and the optional description contributes to the link's accessible name.",
2432
+ "The ChevronRight icon is decorative because the link text already names the destination.",
2433
+ "Use the content variant only when interactive body content must remain outside the header link; never place interactive descendants inside the navigation-only card.",
2434
+ "dsNavigate is cancelable so client-side routers can prevent native navigation after accepting an unmodified activation."
2435
+ ],
2436
+ "states": [
2437
+ "The native link owns hover, pressed, and focus-visible states across the complete card in navigation-only mode.",
2438
+ "In content mode, the native link owns those interaction states only across the header while the body remains application-owned.",
2439
+ "An empty or unsafe href renders non-interactive card chrome without a false keyboard target.",
2440
+ "The application owns destination loading, authorization, not-found, and recovery states after navigation."
2441
+ ],
2442
+ "responsiveBehavior": [
2443
+ "Choose sm, md, or lg from the parent layout; the surface never exceeds its parent width.",
2444
+ "Supporting copy wraps while the chevron remains visible at the trailing edge.",
2445
+ "The parent owns wrapping, columns, stacking, and breakpoint changes between cards."
2446
+ ],
2447
+ "frameworkCaveats": {
2448
+ "customElements": [
2449
+ "Set href to a valid relative or HTTP(S) URL.",
2450
+ "Prevent dsNavigate only when an application router takes ownership of the same activation."
2451
+ ],
2452
+ "react": [
2453
+ "Pass href for native link semantics and use onDsNavigate only when coordinating with a client-side router.",
2454
+ "Use variant content when projecting interactive body content so those controls stay outside the link."
2455
+ ],
2456
+ "angular": [
2457
+ "Bind href and prevent dsNavigate before calling Router.navigateByUrl for unmodified primary activations.",
2458
+ "Use variant content when projecting interactive body content so those controls stay outside the link."
2459
+ ]
2460
+ },
2461
+ "references": [
2462
+ {
2463
+ "label": "Storybook navigation-only and content examples",
2464
+ "path": "src/wc/components/CardNavigation/CardNavigation.stories.ts"
2465
+ },
2466
+ {
2467
+ "label": "Rendered navigation and interaction coverage",
2468
+ "path": "tests/e2e/card-navigation.spec.ts"
2469
+ }
2470
+ ]
2471
+ },
2472
+ "props": {
2473
+ "cardWidth": {
2474
+ "type": "CardNavigationWidth",
2475
+ "required": false
2476
+ },
2477
+ "description": {
2478
+ "type": "string | undefined",
2479
+ "required": false
2480
+ },
2481
+ "heading": {
2482
+ "type": "string",
2483
+ "required": true
2484
+ },
2485
+ "href": {
2486
+ "type": "string",
2487
+ "required": true
2488
+ },
2489
+ "variant": {
2490
+ "type": "CardNavigationVariant",
2491
+ "required": false
2492
+ }
2493
+ },
2494
+ "events": [
2495
+ {
2496
+ "name": "dsNavigate",
2497
+ "detail": "CardNavigationDetail"
2498
+ }
2499
+ ],
2500
+ "slots": [],
2501
+ "exports": {
2502
+ "customElement": "ds-card-navigation",
2503
+ "react": "DsCardNavigation",
2504
+ "vue": "DsCardNavigation",
2505
+ "angular": "DsCardNavigation"
2506
+ }
2507
+ },
2508
+ "dependencies": [
2509
+ "@ds-mo/ui",
2510
+ "@ds-mo/tokens",
2511
+ "@ds-mo/icons"
2512
+ ],
2513
+ "registryDependencies": [
2514
+ "icon",
2515
+ "text"
2516
+ ]
2517
+ },
2388
2518
  {
2389
2519
  "name": "card-overview",
2390
2520
  "title": "CardOverview",
@@ -2708,6 +2838,123 @@
2708
2838
  "text"
2709
2839
  ]
2710
2840
  },
2841
+ {
2842
+ "name": "card-settings-scope",
2843
+ "title": "CardSettingsScope",
2844
+ "description": "Compact, theme-aware settings context card with inline product-area and profile menu triggers.",
2845
+ "type": "registry:ui",
2846
+ "meta": {
2847
+ "library": "@ds-mo/ui",
2848
+ "distribution": "npm",
2849
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-settings-scope",
2850
+ "source": "src/wc/components/CardSettingsScope/CardSettingsScope.tsx",
2851
+ "intentStatus": "complete",
2852
+ "intent": {
2853
+ "audience": "general",
2854
+ "status": "stable",
2855
+ "summary": "Compact, theme-aware settings context card with inline product-area and profile menu triggers.",
2856
+ "useWhen": [
2857
+ "A settings workspace needs to show and change both its product area and the organization or profile being managed."
2858
+ ],
2859
+ "avoidWhen": [
2860
+ "The content is a reporting period and metrics summary; use CardOverview.",
2861
+ "The card edits settings in place; use CardSetting."
2862
+ ],
2863
+ "commonlyComposedWith": [
2864
+ "component:ds-menu",
2865
+ "component:ds-card-setting"
2866
+ ],
2867
+ "accessibility": [
2868
+ "Both scope values are native buttons with popup relationships and controlled expanded state.",
2869
+ "Use the emitted native anchor for menu placement and focus return.",
2870
+ "An empty informational profiles popup uses dialog semantics.",
2871
+ "The shared text-action recipe supplies brand foreground, hover underline, and keyboard focus indication."
2872
+ ],
2873
+ "states": [
2874
+ "The application owns the selected area, profile, available choices, permissions, and empty-state copy.",
2875
+ "The card reports popup requests without changing selection or expanded state.",
2876
+ "The surface follows the active theme rather than imposing always-dark colors."
2877
+ ],
2878
+ "responsiveBehavior": [
2879
+ "The parent owns sticky positioning and shell offsets.",
2880
+ "The compact sentence wraps when space is constrained so both controls remain available."
2881
+ ],
2882
+ "frameworkCaveats": {
2883
+ "angular": [
2884
+ "Import the generated standalone adapter; bind controlled labels and expanded states and handle dsScopeRequest."
2885
+ ]
2886
+ },
2887
+ "references": [
2888
+ {
2889
+ "label": "Storybook examples",
2890
+ "path": "src/wc/components/CardSettingsScope/CardSettingsScope.stories.ts"
2891
+ }
2892
+ ]
2893
+ },
2894
+ "props": {
2895
+ "areaControls": {
2896
+ "type": "string | undefined",
2897
+ "required": false
2898
+ },
2899
+ "areaExpanded": {
2900
+ "type": "boolean",
2901
+ "required": false
2902
+ },
2903
+ "areaLabel": {
2904
+ "type": "string",
2905
+ "required": false
2906
+ },
2907
+ "forLabel": {
2908
+ "type": "string",
2909
+ "required": false
2910
+ },
2911
+ "managingLabel": {
2912
+ "type": "string",
2913
+ "required": false
2914
+ },
2915
+ "profileControls": {
2916
+ "type": "string | undefined",
2917
+ "required": false
2918
+ },
2919
+ "profileExpanded": {
2920
+ "type": "boolean",
2921
+ "required": false
2922
+ },
2923
+ "profileLabel": {
2924
+ "type": "string",
2925
+ "required": false
2926
+ },
2927
+ "profilePopup": {
2928
+ "type": "'menu' | 'dialog'",
2929
+ "required": false
2930
+ },
2931
+ "scopeLabel": {
2932
+ "type": "string",
2933
+ "required": false
2934
+ }
2935
+ },
2936
+ "events": [
2937
+ {
2938
+ "name": "dsScopeRequest",
2939
+ "detail": "SettingsScopeRequest"
2940
+ }
2941
+ ],
2942
+ "slots": [],
2943
+ "exports": {
2944
+ "customElement": "ds-card-settings-scope",
2945
+ "react": "DsCardSettingsScope",
2946
+ "vue": "DsCardSettingsScope",
2947
+ "angular": "DsCardSettingsScope"
2948
+ }
2949
+ },
2950
+ "dependencies": [
2951
+ "@ds-mo/ui",
2952
+ "@ds-mo/tokens"
2953
+ ],
2954
+ "registryDependencies": [
2955
+ "text"
2956
+ ]
2957
+ },
2711
2958
  {
2712
2959
  "name": "chart",
2713
2960
  "title": "Chart",
@@ -4850,6 +5097,7 @@
4850
5097
  "pattern:menu-trigger"
4851
5098
  ],
4852
5099
  "accessibility": [
5100
+ "An empty choice collection can show informational copy in a focusable non-modal dialog instead of rendering a fake disabled action. Escape and Tab retain the normal popup dismissal and anchor-focus behavior.",
4853
5101
  "Anchor the menu to the control that opens it and return focus to that control when the menu closes.",
4854
5102
  "Open with visible initial focus only when the trigger was activated from the keyboard.",
4855
5103
  "Keep disabled items discoverable only when their unavailable state is meaningful.",
@@ -4931,6 +5179,10 @@
4931
5179
  "type": "HTMLElement | undefined",
4932
5180
  "required": false
4933
5181
  },
5182
+ "emptyMessage": {
5183
+ "type": "string",
5184
+ "required": false
5185
+ },
4934
5186
  "initialFocusVisible": {
4935
5187
  "type": "boolean",
4936
5188
  "required": false
@@ -5546,6 +5798,7 @@
5546
5798
  ],
5547
5799
  "states": [
5548
5800
  "The fixed groups are Menu plus current area, followed by Search, Activity, Messages, and Agents.",
5801
+ "The shell may retain Help in the context position while another global tool is selected; context identity and active selection are independent.",
5549
5802
  "Consumers that intentionally group multiple review tools can replace the Activity destination with Inbox.",
5550
5803
  "Selection promotes foreground to primary without painting a selected fill; unselected destinations use tertiary foreground.",
5551
5804
  "Opening Mobile Sheet Nav replaces the Menu glyph with Cross while preserving its accessible name.",
@@ -5617,6 +5870,10 @@
5617
5870
  "type": "string",
5618
5871
  "required": false
5619
5872
  },
5873
+ "primaryDestination": {
5874
+ "type": "'area' | 'help'",
5875
+ "required": false
5876
+ },
5620
5877
  "searchDot": {
5621
5878
  "type": "boolean",
5622
5879
  "required": false
@@ -5698,8 +5955,10 @@
5698
5955
  "states": [
5699
5956
  "Without multiple sections the center renders heading.",
5700
5957
  "With multiple sections the center renders the controlled MobileSectionSwitcher by default or an explicitly requested segmented TabGroup.",
5958
+ "Primary section switching without subordinate navigation uses the viewport-edge sheet. Headers exposing both peer sections and subordinate views retain their two-level navigation.",
5701
5959
  "The segmented presentation uses the shared fill-width TabGroup contract and divides its centered two-thirds top-bar lane equally between options.",
5702
- "Optional subsections render in a second row and emit dsSubsectionChange without changing the primary section.",
5960
+ "Optional subsections use a second row by default. When navigation already exposes peer sections, local views can sit beside a stable page title in one row; they never replace that title or its semantic heading.",
5961
+ "The combined local-view presentation joins the page identity and selected subsection in one outlined sheet trigger. The semantic heading remains the page identity, while Back and page actions stay outside the trigger.",
5703
5962
  "Sections represent peer destinations at the current navigation level; subsections represent local views beneath the selected page or detail identity.",
5704
5963
  "Brand tone changes surface and foreground without changing geometry or interaction ownership."
5705
5964
  ],
@@ -5747,6 +6006,10 @@
5747
6006
  "type": "string",
5748
6007
  "required": false
5749
6008
  },
6009
+ "subsectionsPlacement": {
6010
+ "type": "'below' | 'inline' | 'combined'",
6011
+ "required": false
6012
+ },
5750
6013
  "subvalue": {
5751
6014
  "type": "string",
5752
6015
  "required": false
@@ -5791,7 +6054,7 @@
5791
6054
  {
5792
6055
  "name": "mobile-section-switcher",
5793
6056
  "title": "MobileSectionSwitcher",
5794
- "description": "Controlled mobile section chooser showing the current section, adjacent-position hints, and a complete tap menu.",
6057
+ "description": "Controlled mobile section chooser with a viewport-edge sheet for primary pages and an anchored menu for local views.",
5795
6058
  "type": "registry:ui",
5796
6059
  "meta": {
5797
6060
  "library": "@ds-mo/ui",
@@ -5802,7 +6065,7 @@
5802
6065
  "intent": {
5803
6066
  "audience": "specialized",
5804
6067
  "status": "experimental",
5805
- "summary": "Controlled mobile section chooser showing the current section, adjacent-position hints, and a complete tap menu.",
6068
+ "summary": "Controlled mobile section chooser with a viewport-edge sheet for primary pages and an anchored menu for local views.",
5806
6069
  "useWhen": [
5807
6070
  "A mobile page or tool header must combine current-page identity with ordered peer-section navigation."
5808
6071
  ],
@@ -5819,13 +6082,16 @@
5819
6082
  "accessibility": [
5820
6083
  "The trigger exposes the current section, popup relationship, and expanded state.",
5821
6084
  "Decorative previous and next position hints are hidden from assistive technology.",
5822
- "The menu is always available so a future swipe gesture is never the only navigation mechanism.",
6085
+ "The sheet is a native modal top-layer dialog: background content is inert, Escape and backdrop dismiss it, and focus returns to the trigger after exit motion. Arrow keys, Home, End, and initial-letter navigation move among enabled destinations.",
6086
+ "The sheet initially focuses the current enabled destination, uses emphasis for selection, and never adds decorative icons to its rows.",
5823
6087
  "Peer destinations use menuitem semantics with aria-current on the active page; they do not present a radio-control affordance."
5824
6088
  ],
5825
6089
  "states": [
5826
6090
  "Selection is controlled and dsChange reports intent without mutating value.",
5827
6091
  "Dividers group menu items but never participate in previous or next resolution.",
5828
- "The first and last selectable sections expose only the available neighboring direction."
6092
+ "The anchored local-view menu retains its neighboring-direction hints; the primary-page sheet uses an unfilled perimeter trigger without hints.",
6093
+ "A sheet trigger can combine stable page identity and the current local view, separated by a decorative middle dot. The whole control opens only the supplied local destinations; long page names truncate before crowding out the active view.",
6094
+ "Sheet selection emits navigation intent immediately while exit motion runs independently, so the controlled title can update without waiting for dismissal. Removing the owner or hiding its header closes the top layer without leaving the application blocked."
5829
6095
  ],
5830
6096
  "responsiveBehavior": [
5831
6097
  "Use only in the dedicated mobile header presentation."
@@ -5842,6 +6108,14 @@
5842
6108
  "type": "string",
5843
6109
  "required": false
5844
6110
  },
6111
+ "pageLabel": {
6112
+ "type": "string",
6113
+ "required": false
6114
+ },
6115
+ "presentation": {
6116
+ "type": "'menu' | 'sheet'",
6117
+ "required": false
6118
+ },
5845
6119
  "sections": {
5846
6120
  "type": "TabItem[]",
5847
6121
  "required": false
@@ -5909,7 +6183,10 @@
5909
6183
  "Escape requests dismissal and opening moves focus to the selected or first available area."
5910
6184
  ],
5911
6185
  "states": [
5912
- "Dashboard and Settings change only the flat destination collection being browsed.",
6186
+ "Dashboard and Settings change only the destination collection being browsed.",
6187
+ "In nested mode, parents with child routes disclose inline without navigating. Only selecting a child emits route intent; parents without children retain direct navigation.",
6188
+ "Nested branches use the same positional divider and staggered child motion as expanded desktop navigation, without adding disclosure chevrons. Dividers separate an expanded branch from its siblings, not from the outside edge of its group.",
6189
+ "Opening the sheet reveals the current route's branch. Collapsed child groups are inert and hidden from assistive technology while the shared navigation motion runs; child targets keep the mobile row density.",
5913
6190
  "Area, Help, and Account events express intent while the application owns navigation and product behavior.",
5914
6191
  "Set routeSelectionActive to false while a global tool owns the mobile stage so the underlying router URL remains available without marking its area current.",
5915
6192
  "Set showAccount to false when account and user preferences already live in the supplied Settings navigation."
@@ -5960,6 +6237,10 @@
5960
6237
  "type": "boolean",
5961
6238
  "required": false
5962
6239
  },
6240
+ "presentation": {
6241
+ "type": "PanelNavPresentation",
6242
+ "required": false
6243
+ },
5963
6244
  "routeSelectionActive": {
5964
6245
  "type": "boolean",
5965
6246
  "required": false
@@ -5989,6 +6270,10 @@
5989
6270
  {
5990
6271
  "name": "dsClose",
5991
6272
  "detail": "void"
6273
+ },
6274
+ {
6275
+ "name": "dsNavChildSelect",
6276
+ "detail": "PanelNavChildSelectDetail"
5992
6277
  }
5993
6278
  ],
5994
6279
  "slots": [],
@@ -8057,8 +8342,9 @@
8057
8342
  "The optional paperTexture property adds a decorative Paper Design texture layer above the gradient or solid chrome frame; its color values are literal shader inputs rather than design tokens.",
8058
8343
  "Dashboard represents day-to-day operational work while Settings represents administrative and configuration work; route state selects the context.",
8059
8344
  "Replace navigation and pageChrome together from one completed route state.",
8060
- "When pageChrome.showBack marks a detail depth, mobile chrome keeps the page heading as its identity and presents only local subsections; peer route tabs remain in desktop BarNav rather than replacing the detail heading.",
8345
+ "When pageChrome.showBack marks a detail depth, mobile chrome combines the page heading and active local subsection in one sheet trigger; peer route tabs remain in desktop BarNav rather than replacing the detail identity.",
8061
8346
  "Route-owned ordered page actions drive both BarTitle and MobileHeader. ShellApp forwards one flat page-action id and owns the derived mobile overflow menu so routes do not duplicate menu state or choices.",
8347
+ "Managed mobile Back and page-action controls use the same large touch density as the mobile navigation header without increasing the shared header height.",
8062
8348
  "Managed ShellApp keeps the selected desktop section-navigation presentation and ShellPage present and owns page header stickiness and the content scroller.",
8063
8349
  "Route-owned pageChrome independently selects ShellPage contentInset, page-header seams, scroll compaction, expanded and compact header-divider visibility, and contentSurface. ShellApp forwards them while resolving whether desktop title geometry is page-local or shell-bar-owned.",
8064
8350
  "The application filters unauthorized destinations, sections, and tools before passing them into shell components."
@@ -8070,9 +8356,9 @@
8070
8356
  "On desktop and tablet, panel section navigation replaces BarNav with compact BarTitle; collapsed PanelNav exposes child sections through its anchored flyout.",
8071
8357
  "When panel section navigation moves BarTitle into the shell bar, routed content starts at the standard 32px desktop or 16px tablet gutter and ShellPage reports no page-local sticky-header height.",
8072
8358
  "On mobile, ShellApp hides and inerts desktop chrome, uses a solid primary stage, and composes MobileHeader, MobileSheetNav, ShellTools, and the persistent MobileBarNav around the same application-owned content.",
8073
- "Changing sectionNavigation never changes mobile chrome; the preference may still be edited by an application Settings page.",
8359
+ "The section-navigation preference also selects mobile navigation: bar preserves flat area selection and the header section picker; panel expands child routes inline in MobileSheetNav and combines the page title with any local subsection in one sheet trigger.",
8074
8360
  "Opening MobileSheetNav temporarily overlays the active routed page or global tool; closing it without selecting an area restores that same destination and its nested state. The sheet exposes the router-derived current area only while the routed area owns the mobile stage, so a global tool never leaves an underlying route highlighted.",
8075
- "Selecting Help from the managed mobile sheet activates the configured Help tool and promotes Help to the primary mobile destination instead of forwarding it as route navigation.",
8361
+ "Selecting Help from the managed mobile sheet activates the configured Help tool and retains Help as the primary mobile destination across other tool selections until a routed area is selected or navigation changes. This mobile context does not alter desktop or tablet routing.",
8076
8362
  "Set navigation.showMobileAccount to false when the Settings destination collection already includes account and user preferences.",
8077
8363
  "When a suspended mobile document returns to the foreground, ShellApp refreshes the complete stage paint layer without remounting routed content or tool owners.",
8078
8364
  "When the application enables viewport-fit=cover, ShellApp reserves the shared top safe-area inset once for the complete mobile stage; nested routed, sheet, and tool headers must not add a second top inset.",