@ds-mo/ui 16.1.3 → 16.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 (270) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +574 -3
  4. package/dist/angular/ds-disclosure.d.ts +18 -0
  5. package/dist/angular/ds-disclosure.js +42 -0
  6. package/dist/angular/ds-drawer.d.ts +40 -0
  7. package/dist/angular/ds-drawer.js +54 -0
  8. package/dist/angular/ds-popover.d.ts +24 -0
  9. package/dist/angular/ds-popover.js +45 -0
  10. package/dist/angular/index.d.ts +1 -1
  11. package/dist/angular/index.js +3 -0
  12. package/dist/angular/proxies.d.ts +3 -0
  13. package/dist/angular/proxies.js +3 -0
  14. package/dist/components/ds-agent-activity.js +1 -1
  15. package/dist/components/ds-agent-questionnaire.js +1 -1
  16. package/dist/components/ds-agent-response.js +1 -1
  17. package/dist/components/ds-agent-source-list.js +1 -1
  18. package/dist/components/ds-agent-tool-call.js +1 -1
  19. package/dist/components/ds-attachment-list.js +1 -1
  20. package/dist/components/ds-badge.js +1 -1
  21. package/dist/components/ds-banner.js +1 -1
  22. package/dist/components/ds-bar-action.js +1 -1
  23. package/dist/components/ds-bar-nav.js +1 -1
  24. package/dist/components/ds-bar-page-title.js +1 -1
  25. package/dist/components/ds-bar-title.js +1 -1
  26. package/dist/components/ds-bar-workflow.js +1 -1
  27. package/dist/components/ds-breadcrumb.js +1 -1
  28. package/dist/components/ds-button-filled.js +1 -1
  29. package/dist/components/ds-button-inverted.js +1 -1
  30. package/dist/components/ds-button-unfilled.js +1 -1
  31. package/dist/components/ds-calendar.js +1 -1
  32. package/dist/components/ds-card-action-center.js +1 -1
  33. package/dist/components/ds-card-chart.js +1 -1
  34. package/dist/components/ds-card-navigation.js +1 -1
  35. package/dist/components/ds-card-overview.js +1 -1
  36. package/dist/components/ds-card-setting.js +1 -1
  37. package/dist/components/ds-card-settings-scope.js +1 -1
  38. package/dist/components/ds-chart-legend.js +1 -1
  39. package/dist/components/ds-chart.js +1 -1
  40. package/dist/components/ds-checkbox-group.js +1 -1
  41. package/dist/components/ds-checkbox.js +1 -1
  42. package/dist/components/ds-chip.js +1 -1
  43. package/dist/components/ds-code-block.js +1 -1
  44. package/dist/components/ds-conversation-list-item.js +1 -1
  45. package/dist/components/ds-conversation-list-section.js +1 -1
  46. package/dist/components/ds-conversation-list.js +1 -1
  47. package/dist/components/ds-data-customize.js +1 -1
  48. package/dist/components/ds-data-filter.js +1 -1
  49. package/dist/components/ds-data-group.js +1 -1
  50. package/dist/components/ds-data-preferences.js +1 -1
  51. package/dist/components/ds-data-preferences.js.map +1 -1
  52. package/dist/components/ds-data-saved-views.js +1 -1
  53. package/dist/components/ds-data-search.js +1 -1
  54. package/dist/components/ds-data-search.js.map +1 -1
  55. package/dist/components/ds-data-sort.js +1 -1
  56. package/dist/components/ds-data-toolbar.js +1 -1
  57. package/dist/components/ds-disclosure.d.ts +11 -0
  58. package/dist/components/ds-disclosure.js +2 -0
  59. package/dist/components/ds-disclosure.js.map +1 -0
  60. package/dist/components/ds-divider.js +1 -1
  61. package/dist/components/ds-drawer.d.ts +11 -0
  62. package/dist/components/ds-drawer.js +2 -0
  63. package/dist/components/ds-drawer.js.map +1 -0
  64. package/dist/components/ds-empty-state.js +1 -1
  65. package/dist/components/ds-field.js +1 -1
  66. package/dist/components/ds-filter-menu.js +1 -1
  67. package/dist/components/ds-inline-banner-settings.js +1 -1
  68. package/dist/components/ds-input-date.js +1 -1
  69. package/dist/components/ds-input-time.js +1 -1
  70. package/dist/components/ds-input.js +1 -1
  71. package/dist/components/ds-map-cluster-marker.js +1 -1
  72. package/dist/components/ds-map-entity-marker.js +1 -1
  73. package/dist/components/ds-map-marker.js +1 -1
  74. package/dist/components/ds-markdown.js +1 -1
  75. package/dist/components/ds-menu.js +1 -1
  76. package/dist/components/ds-message-actions.js +1 -1
  77. package/dist/components/ds-message-bubble.js +1 -1
  78. package/dist/components/ds-message-composer.js +1 -1
  79. package/dist/components/ds-message-scroller.js +1 -1
  80. package/dist/components/ds-message.js +1 -1
  81. package/dist/components/ds-mobile-bar-nav.js +1 -1
  82. package/dist/components/ds-mobile-header.js +1 -1
  83. package/dist/components/ds-mobile-section-switcher.js +1 -1
  84. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  85. package/dist/components/ds-modal.js +1 -1
  86. package/dist/components/ds-navigation-tab-group.js +1 -1
  87. package/dist/components/ds-pagination.js +1 -1
  88. package/dist/components/ds-panel-nav.js +1 -1
  89. package/dist/components/ds-panel-sub-nav.js +1 -1
  90. package/dist/components/ds-panel-tool-header.js +1 -1
  91. package/dist/components/ds-panel-tool-search.js +1 -1
  92. package/dist/components/ds-panel-tools.js +1 -1
  93. package/dist/components/ds-paper-texture.js +1 -1
  94. package/dist/components/ds-popover.d.ts +11 -0
  95. package/dist/components/ds-popover.js +2 -0
  96. package/dist/components/ds-popover.js.map +1 -0
  97. package/dist/components/ds-radio-tile.js +1 -1
  98. package/dist/components/ds-radio.js +1 -1
  99. package/dist/components/ds-score.js +1 -1
  100. package/dist/components/ds-scroll-overlay.js +1 -1
  101. package/dist/components/ds-select-toggle.js +1 -1
  102. package/dist/components/ds-select.js +1 -1
  103. package/dist/components/ds-setting-row-checkbox.js +1 -1
  104. package/dist/components/ds-setting-row-radio.js +1 -1
  105. package/dist/components/ds-setting-row-radio.js.map +1 -1
  106. package/dist/components/ds-setting-row-toggle.js +1 -1
  107. package/dist/components/ds-shell-app.js +1 -1
  108. package/dist/components/ds-shell-app.js.map +1 -1
  109. package/dist/components/ds-shell-page.js +1 -1
  110. package/dist/components/ds-shell-tools.js +1 -1
  111. package/dist/components/ds-skeleton.js +1 -1
  112. package/dist/components/ds-slider.js +1 -1
  113. package/dist/components/ds-swatch-picker.js +1 -1
  114. package/dist/components/ds-switch.js +1 -1
  115. package/dist/components/ds-tab-group.js +1 -1
  116. package/dist/components/ds-table.js +1 -1
  117. package/dist/components/ds-tag.js +1 -1
  118. package/dist/components/ds-text.js +1 -1
  119. package/dist/components/ds-textarea.js +1 -1
  120. package/dist/components/ds-time-picker.js +1 -1
  121. package/dist/components/ds-toast.js +1 -1
  122. package/dist/components/ds-toast.js.map +1 -1
  123. package/dist/components/ds-tooltip-chart.js +1 -1
  124. package/dist/components/ds-tooltip.js +1 -1
  125. package/dist/components/ds-typing-indicator.js +1 -1
  126. package/dist/components/{p-D-Lo5uuI.js → p-3_LHRdqq.js} +2 -2
  127. package/dist/components/{p-Cc8p57pS.js → p-9EjkmESv.js} +2 -2
  128. package/dist/components/{p-CQnjpuMX.js → p-9PpepIfc.js} +2 -2
  129. package/dist/components/{p-C860ilDn.js → p-A47UHyiC.js} +2 -2
  130. package/dist/components/p-BCzvtlR2.js +2 -0
  131. package/dist/components/{p-D3FrQk7o.js.map → p-BCzvtlR2.js.map} +1 -1
  132. package/dist/components/{p-ClOvX8cD.js → p-BEj9uENH.js} +2 -2
  133. package/dist/components/{p-CtomYv1z.js → p-BJmAAyRk.js} +2 -2
  134. package/dist/components/{p-Bt1Ybvz-.js → p-BQ6p3LFP.js} +2 -2
  135. package/dist/components/{p-DiNEjFpy.js → p-BbndBzzZ.js} +2 -2
  136. package/dist/components/{p-hFe35P2l.js → p-Bg1UmSZn.js} +2 -2
  137. package/dist/components/{p-ClhfXMaD.js → p-Bn-cskPo.js} +2 -2
  138. package/dist/components/p-Bz9dI7nI.js +2 -0
  139. package/dist/components/{p-Dc_zSOKq.js.map → p-Bz9dI7nI.js.map} +1 -1
  140. package/dist/components/{p-D538svhW.js → p-C0-sabnr.js} +2 -2
  141. package/dist/components/{p-DQ-wfTOw.js → p-C11CnHDl.js} +2 -2
  142. package/dist/components/{p-xszHlNkG.js → p-C68nt4dl.js} +2 -2
  143. package/dist/components/p-C8UThLHd.js +2 -0
  144. package/dist/components/{p-CsGkdf4W.js.map → p-C8UThLHd.js.map} +1 -1
  145. package/dist/components/p-C8WKo0sf.js +2 -0
  146. package/dist/components/{p-D8iNLSCa.js.map → p-C8WKo0sf.js.map} +1 -1
  147. package/dist/components/p-CAYqnjyC.js +2 -0
  148. package/dist/components/{p-oBBzQpg_.js.map → p-CAYqnjyC.js.map} +1 -1
  149. package/dist/components/{p-G6r6yYg8.js → p-CBezgJ3r.js} +2 -2
  150. package/dist/components/p-CF6Px2b2.js +2 -0
  151. package/dist/components/{p-omfGVBEt.js.map → p-CF6Px2b2.js.map} +1 -1
  152. package/dist/components/{p-CMZAEySh.js → p-CVSE2Ool.js} +2 -2
  153. package/dist/components/{p-KTaiJztz.js → p-CVuSm1Sh.js} +2 -2
  154. package/dist/components/{p-BNvZM4jP.js → p-CZVoCdYE.js} +2 -2
  155. package/dist/components/{p-BYo1-6b5.js → p-CeACJYcU.js} +2 -2
  156. package/dist/components/{p-lnCWfvuA.js → p-Cjw63BmX.js} +2 -2
  157. package/dist/components/{p-N-2CZze7.js → p-CkUF45d_.js} +2 -2
  158. package/dist/components/{p-CbyZ7BDJ.js → p-ClRd39mR.js} +2 -2
  159. package/dist/components/{p-Nx52go85.js → p-Cn6Ud58k.js} +2 -2
  160. package/dist/components/{p-BFgJoeVV.js → p-D3r_5Fw-.js} +2 -2
  161. package/dist/components/p-DCqDQWVK.js +2 -0
  162. package/dist/components/{p-BuvVFyAA.js.map → p-DCqDQWVK.js.map} +1 -1
  163. package/dist/components/{p-CXrOGz7X.js → p-DIXpyBWB.js} +2 -2
  164. package/dist/components/{p-1lWK_LMY.js → p-DJtohrKV.js} +2 -2
  165. package/dist/components/{p-D5-hqLPK.js → p-DKL7n7NM.js} +2 -2
  166. package/dist/components/{p-DYI6UlOP.js → p-D_CfgH1L.js} +2 -2
  167. package/dist/components/{p-P2-eHQJU.js → p-D_N38YjY.js} +2 -2
  168. package/dist/components/p-Dalq5voO.js +2 -0
  169. package/dist/components/{p-ClgJZFkb.js.map → p-Dalq5voO.js.map} +1 -1
  170. package/dist/components/{p-DMPn_dt7.js → p-DcwgXLe-.js} +2 -2
  171. package/dist/components/{p-BckLHaey.js → p-DpA8UeSy.js} +2 -2
  172. package/dist/components/{p-hom6svhE.js → p-DtNCj4p0.js} +2 -2
  173. package/dist/components/{p-pkJ3X3s7.js → p-Dwga8azB.js} +2 -2
  174. package/dist/components/{p-CGtq7TnC.js → p-LFHrICnV.js} +2 -2
  175. package/dist/components/p-LQGcTdiv.js +2 -0
  176. package/dist/components/{p-BI-XuQKW.js.map → p-LQGcTdiv.js.map} +1 -1
  177. package/dist/components/{p-BoWpIl_m.js → p-N8tEOYt8.js} +2 -2
  178. package/dist/components/{p-CbJx9swS.js → p-QU-CyuBt.js} +2 -2
  179. package/dist/components/p-QYI9nW7a.js +2 -0
  180. package/dist/components/p-QYI9nW7a.js.map +1 -0
  181. package/dist/components/{p-DcvPY30Q.js → p-X-GPE9bP.js} +2 -2
  182. package/dist/components/{p-CnsuVR2e.js → p-cOkFnnZV.js} +2 -2
  183. package/dist/components/{p-BctjNfzt.js → p-c_qWiZ6V.js} +2 -2
  184. package/dist/components/{p-M-Sxsv7V.js → p-dVdTdZdu.js} +2 -2
  185. package/dist/components/{p-CE_S4oQ_.js → p-hHtKJMVu.js} +2 -2
  186. package/dist/components/{p-6r60E0i4.js → p-snYhfM1q.js} +2 -2
  187. package/dist/components/p-xHv_RGJh.js +2 -0
  188. package/dist/components/p-xHv_RGJh.js.map +1 -0
  189. package/dist/components/{p-cvVUXaen.js → p-zGd26CTX.js} +2 -2
  190. package/dist/docs/components.json +1291 -1
  191. package/dist/lint/index.js +1 -1
  192. package/dist/mcp-data/registry/disclosure.json +282 -0
  193. package/dist/mcp-data/registry/drawer.json +567 -0
  194. package/dist/mcp-data/registry/popover.json +385 -0
  195. package/dist/mcp-data/registry/registry.json +582 -2
  196. package/dist/mcp-data/registry/shell-app.json +6 -4
  197. package/dist/react/components.d.ts +3 -0
  198. package/dist/react/components.js +3 -0
  199. package/dist/react/ds-disclosure.d.ts +12 -0
  200. package/dist/react/ds-disclosure.js +12 -0
  201. package/dist/react/ds-drawer.d.ts +16 -0
  202. package/dist/react/ds-drawer.js +18 -0
  203. package/dist/react/ds-popover.d.ts +13 -0
  204. package/dist/react/ds-popover.js +15 -0
  205. package/dist/types/components/Disclosure/Disclosure.d.ts +22 -0
  206. package/dist/types/components/Drawer/Drawer.d.ts +123 -0
  207. package/dist/types/components/Popover/Popover.d.ts +64 -0
  208. package/dist/types/components.d.ts +423 -0
  209. package/dist/vue/components.d.ts +3 -0
  210. package/dist/vue/components.js +3 -0
  211. package/dist/vue/ds-disclosure.d.ts +3 -0
  212. package/dist/vue/ds-disclosure.js +15 -0
  213. package/dist/vue/ds-drawer.d.ts +3 -0
  214. package/dist/vue/ds-drawer.js +34 -0
  215. package/dist/vue/ds-popover.d.ts +3 -0
  216. package/dist/vue/ds-popover.js +21 -0
  217. package/package.json +1 -1
  218. package/dist/components/p-BI-XuQKW.js +0 -2
  219. package/dist/components/p-BuvVFyAA.js +0 -2
  220. package/dist/components/p-ClgJZFkb.js +0 -2
  221. package/dist/components/p-CsGkdf4W.js +0 -2
  222. package/dist/components/p-D3FrQk7o.js +0 -2
  223. package/dist/components/p-D8iNLSCa.js +0 -2
  224. package/dist/components/p-DTlNtCX1.js +0 -2
  225. package/dist/components/p-DTlNtCX1.js.map +0 -1
  226. package/dist/components/p-Dc_zSOKq.js +0 -2
  227. package/dist/components/p-oBBzQpg_.js +0 -2
  228. package/dist/components/p-omfGVBEt.js +0 -2
  229. /package/dist/components/{p-D-Lo5uuI.js.map → p-3_LHRdqq.js.map} +0 -0
  230. /package/dist/components/{p-Cc8p57pS.js.map → p-9EjkmESv.js.map} +0 -0
  231. /package/dist/components/{p-CQnjpuMX.js.map → p-9PpepIfc.js.map} +0 -0
  232. /package/dist/components/{p-C860ilDn.js.map → p-A47UHyiC.js.map} +0 -0
  233. /package/dist/components/{p-ClOvX8cD.js.map → p-BEj9uENH.js.map} +0 -0
  234. /package/dist/components/{p-CtomYv1z.js.map → p-BJmAAyRk.js.map} +0 -0
  235. /package/dist/components/{p-Bt1Ybvz-.js.map → p-BQ6p3LFP.js.map} +0 -0
  236. /package/dist/components/{p-DiNEjFpy.js.map → p-BbndBzzZ.js.map} +0 -0
  237. /package/dist/components/{p-hFe35P2l.js.map → p-Bg1UmSZn.js.map} +0 -0
  238. /package/dist/components/{p-ClhfXMaD.js.map → p-Bn-cskPo.js.map} +0 -0
  239. /package/dist/components/{p-D538svhW.js.map → p-C0-sabnr.js.map} +0 -0
  240. /package/dist/components/{p-DQ-wfTOw.js.map → p-C11CnHDl.js.map} +0 -0
  241. /package/dist/components/{p-xszHlNkG.js.map → p-C68nt4dl.js.map} +0 -0
  242. /package/dist/components/{p-G6r6yYg8.js.map → p-CBezgJ3r.js.map} +0 -0
  243. /package/dist/components/{p-CMZAEySh.js.map → p-CVSE2Ool.js.map} +0 -0
  244. /package/dist/components/{p-KTaiJztz.js.map → p-CVuSm1Sh.js.map} +0 -0
  245. /package/dist/components/{p-BNvZM4jP.js.map → p-CZVoCdYE.js.map} +0 -0
  246. /package/dist/components/{p-BYo1-6b5.js.map → p-CeACJYcU.js.map} +0 -0
  247. /package/dist/components/{p-lnCWfvuA.js.map → p-Cjw63BmX.js.map} +0 -0
  248. /package/dist/components/{p-N-2CZze7.js.map → p-CkUF45d_.js.map} +0 -0
  249. /package/dist/components/{p-CbyZ7BDJ.js.map → p-ClRd39mR.js.map} +0 -0
  250. /package/dist/components/{p-Nx52go85.js.map → p-Cn6Ud58k.js.map} +0 -0
  251. /package/dist/components/{p-BFgJoeVV.js.map → p-D3r_5Fw-.js.map} +0 -0
  252. /package/dist/components/{p-CXrOGz7X.js.map → p-DIXpyBWB.js.map} +0 -0
  253. /package/dist/components/{p-1lWK_LMY.js.map → p-DJtohrKV.js.map} +0 -0
  254. /package/dist/components/{p-D5-hqLPK.js.map → p-DKL7n7NM.js.map} +0 -0
  255. /package/dist/components/{p-DYI6UlOP.js.map → p-D_CfgH1L.js.map} +0 -0
  256. /package/dist/components/{p-P2-eHQJU.js.map → p-D_N38YjY.js.map} +0 -0
  257. /package/dist/components/{p-DMPn_dt7.js.map → p-DcwgXLe-.js.map} +0 -0
  258. /package/dist/components/{p-BckLHaey.js.map → p-DpA8UeSy.js.map} +0 -0
  259. /package/dist/components/{p-hom6svhE.js.map → p-DtNCj4p0.js.map} +0 -0
  260. /package/dist/components/{p-pkJ3X3s7.js.map → p-Dwga8azB.js.map} +0 -0
  261. /package/dist/components/{p-CGtq7TnC.js.map → p-LFHrICnV.js.map} +0 -0
  262. /package/dist/components/{p-BoWpIl_m.js.map → p-N8tEOYt8.js.map} +0 -0
  263. /package/dist/components/{p-CbJx9swS.js.map → p-QU-CyuBt.js.map} +0 -0
  264. /package/dist/components/{p-DcvPY30Q.js.map → p-X-GPE9bP.js.map} +0 -0
  265. /package/dist/components/{p-CnsuVR2e.js.map → p-cOkFnnZV.js.map} +0 -0
  266. /package/dist/components/{p-BctjNfzt.js.map → p-c_qWiZ6V.js.map} +0 -0
  267. /package/dist/components/{p-M-Sxsv7V.js.map → p-dVdTdZdu.js.map} +0 -0
  268. /package/dist/components/{p-CE_S4oQ_.js.map → p-hHtKJMVu.js.map} +0 -0
  269. /package/dist/components/{p-6r60E0i4.js.map → p-snYhfM1q.js.map} +0 -0
  270. /package/dist/components/{p-cvVUXaen.js.map → p-zGd26CTX.js.map} +0 -0
@@ -1 +1 @@
1
- {"schemaVersion":1,"package":"@ds-mo/ui","version":"16.1.3","components":101,"digest":"3132277e0a608a095354b95eec712cb8c9bcae2209dc720e3df868e516a8fe22","completedAt":"2026-10-13T18:45:32.611Z"}
1
+ {"schemaVersion":1,"package":"@ds-mo/ui","version":"16.3.0","components":104,"digest":"2a41881b1ee2a051fde8c5e507d4d54aef257a040d74b91b03f363ece6801b2b","completedAt":"2026-10-20T16:03:30.542Z"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "package": "@ds-mo/ui",
4
- "packageVersion": "16.1.3",
4
+ "packageVersion": "16.3.0",
5
5
  "kind": "patterns",
6
6
  "entries": [
7
7
  {
package/dist/agent.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "package": "@ds-mo/ui",
4
- "packageVersion": "16.1.3",
4
+ "packageVersion": "16.3.0",
5
5
  "kind": "components",
6
6
  "entries": [
7
7
  {
@@ -6836,6 +6836,152 @@
6836
6836
  "divider"
6837
6837
  ]
6838
6838
  },
6839
+ {
6840
+ "id": "component:ds-disclosure",
6841
+ "tag": "ds-disclosure",
6842
+ "name": "disclosure",
6843
+ "title": "Disclosure",
6844
+ "summary": "Show-and-hide control for optional in-flow detail: a borderless ButtonUnfilled trigger with a leading chevron that reveals content below it. It owns the trigger and the reveal, not a container; the surrounding card or section supplies surface, dividers, and inset.",
6845
+ "intentStatus": "complete",
6846
+ "intent": {
6847
+ "audience": "general",
6848
+ "status": "stable",
6849
+ "summary": "Show-and-hide control for optional in-flow detail: a borderless ButtonUnfilled trigger with a leading chevron that reveals content below it. It owns the trigger and the reveal, not a container; the surrounding card or section supplies surface, dividers, and inset.",
6850
+ "useWhen": [
6851
+ "A card, page section, or tool panel has optional detail, such as a raw snapshot or advanced options, that should stay out of the way until requested.",
6852
+ "The reveal belongs inside a container the owner already styles."
6853
+ ],
6854
+ "avoidWhen": [
6855
+ "Sections are peers the user switches between, with one visible at a time; use TabGroup.",
6856
+ "The hidden content is critical to completing the task.",
6857
+ "The content is a navigation tree or a filter list with its own selection semantics.",
6858
+ "The trigger needs to open a floating surface rather than expand in place.",
6859
+ "Rows of grouped data need collapsible group headers; use Table grouping."
6860
+ ],
6861
+ "alternatives": [
6862
+ {
6863
+ "when": "The user switches between peer views of the same area.",
6864
+ "component": "component:ds-tab-group",
6865
+ "reason": "TabGroup shows one panel at a time with tab semantics."
6866
+ },
6867
+ {
6868
+ "when": "A trigger reveals content that should float over the page.",
6869
+ "component": "component:ds-popover",
6870
+ "reason": "Popover anchors content to its trigger without reflowing the page."
6871
+ },
6872
+ {
6873
+ "when": "The section is an editable settings group with view and edit modes.",
6874
+ "component": "component:ds-card-setting",
6875
+ "reason": "CardSetting owns the view, edit, save, and cancel workflow."
6876
+ },
6877
+ {
6878
+ "when": "Grouped data rows need collapsible group headers.",
6879
+ "component": "component:ds-table",
6880
+ "reason": "Table group rows own counts, sticky headers, and collapse state for grouped data."
6881
+ }
6882
+ ],
6883
+ "commonlyComposedWith": [
6884
+ "component:ds-text",
6885
+ "component:ds-switch",
6886
+ "component:ds-button-unfilled"
6887
+ ],
6888
+ "accessibility": [
6889
+ "The trigger is a borderless ButtonUnfilled exposing aria-expanded and aria-controls for the revealed region, which is named by label.",
6890
+ "headingLevel wraps the trigger in a heading when the label titles a document section; omit it for inline detail.",
6891
+ "Collapsed content is inert and hidden so it is never focusable or announced.",
6892
+ "Inactive disclosures cannot be toggled."
6893
+ ],
6894
+ "states": [
6895
+ "open is reflected and mutable: the component toggles it on activation and emits dsToggle with the new state. Owners may also set it directly.",
6896
+ "The chevron points right while collapsed and down while open.",
6897
+ "Height and content opacity animate on toggle and are removed under reduced motion."
6898
+ ],
6899
+ "responsiveBehavior": [
6900
+ "The trigger hugs its label; the revealed content fills the container width.",
6901
+ "Content starts 8px below the trigger with no inline inset, so it aligns with the owner's content edge."
6902
+ ],
6903
+ "frameworkCaveats": {
6904
+ "customElements": [
6905
+ "Set open as a property or attribute; listen for dsToggle for user changes."
6906
+ ],
6907
+ "react": [
6908
+ "Pass open to DsDisclosure and update it in onDsToggle when controlling it."
6909
+ ],
6910
+ "angular": [
6911
+ "Bind [open] and update it from (dsToggle) when controlling it."
6912
+ ]
6913
+ },
6914
+ "references": [
6915
+ {
6916
+ "label": "Storybook playground, in-card, section heading, and inactive examples",
6917
+ "path": "src/wc/components/Disclosure/Disclosure.stories.ts"
6918
+ }
6919
+ ],
6920
+ "styling": {
6921
+ "rationale": "The component owns the trigger, which follows the ButtonUnfilled recipe, and the expand motion. Containers own surface, dividers, and content inset.",
6922
+ "protected": [
6923
+ {
6924
+ "properties": [
6925
+ "padding",
6926
+ "border-radius",
6927
+ "background"
6928
+ ],
6929
+ "reason": "Trigger hover, press, focus, and padding follow ButtonUnfilled; choose size instead.",
6930
+ "props": [
6931
+ "size"
6932
+ ]
6933
+ }
6934
+ ],
6935
+ "customProperties": []
6936
+ }
6937
+ },
6938
+ "api": {
6939
+ "props": {
6940
+ "headingLevel": {
6941
+ "type": "DisclosureHeadingLevel | undefined",
6942
+ "required": false
6943
+ },
6944
+ "isInactive": {
6945
+ "type": "boolean",
6946
+ "required": false
6947
+ },
6948
+ "label": {
6949
+ "type": "string",
6950
+ "required": true
6951
+ },
6952
+ "open": {
6953
+ "type": "boolean",
6954
+ "required": false
6955
+ },
6956
+ "size": {
6957
+ "type": "DisclosureSize",
6958
+ "required": false
6959
+ }
6960
+ },
6961
+ "events": [
6962
+ {
6963
+ "name": "dsToggle",
6964
+ "detail": "boolean"
6965
+ }
6966
+ ],
6967
+ "slots": [
6968
+ ""
6969
+ ]
6970
+ },
6971
+ "exports": {
6972
+ "customElement": "ds-disclosure",
6973
+ "react": "DsDisclosure",
6974
+ "vue": "DsDisclosure",
6975
+ "angular": "DsDisclosure"
6976
+ },
6977
+ "dependencies": [
6978
+ "@ds-mo/ui",
6979
+ "@ds-mo/tokens"
6980
+ ],
6981
+ "componentDependencies": [
6982
+ "button-unfilled"
6983
+ ]
6984
+ },
6839
6985
  {
6840
6986
  "id": "component:ds-divider",
6841
6987
  "tag": "ds-divider",
@@ -6952,6 +7098,239 @@
6952
7098
  ],
6953
7099
  "componentDependencies": []
6954
7100
  },
7101
+ {
7102
+ "id": "component:ds-drawer",
7103
+ "tag": "ds-drawer",
7104
+ "name": "drawer",
7105
+ "title": "Drawer",
7106
+ "summary": "Edge-attached details panel beside the current page with a generic header, a composable content slot, and a footer for record actions and previous/next paging; non-modal by default with an optional modal presentation and a Back action for multi-depth content.",
7107
+ "intentStatus": "complete",
7108
+ "intent": {
7109
+ "audience": "general",
7110
+ "status": "stable",
7111
+ "summary": "Edge-attached details panel beside the current page with a generic header, a composable content slot, and a footer for record actions and previous/next paging; non-modal by default with an optional modal presentation and a Back action for multi-depth content.",
7112
+ "useWhen": [
7113
+ "The user inspects the details of an item selected from a list, table, or map while the page stays visible and interactive.",
7114
+ "The user steps through records in order from the details view; enable navigation for previous and next paging.",
7115
+ "Details drill into a related record, such as vehicle to driver; set backLabel and swap content in place.",
7116
+ "A contained task such as a multi-field edit needs more room than a Modal but not a new page; set modal."
7117
+ ],
7118
+ "avoidWhen": [
7119
+ "The user must confirm a single focused decision; Modal is more direct.",
7120
+ "The content is a short contextual control anchored to a trigger.",
7121
+ "The panel is persistent application navigation or a shell tool panel.",
7122
+ "The workflow is long enough to need its own URL, history, or deep links; offer an open-full-page header action instead.",
7123
+ "A second drawer would be stacked over an existing one; only one non-modal drawer is open per document, so swap content in place and use backLabel."
7124
+ ],
7125
+ "alternatives": [
7126
+ {
7127
+ "when": "The user confirms or cancels one focused decision.",
7128
+ "component": "component:ds-modal",
7129
+ "reason": "Modal centers a short blocking decision without moving the user's attention to a page edge."
7130
+ },
7131
+ {
7132
+ "when": "A trigger reveals short interactive content anchored to it.",
7133
+ "component": "component:ds-popover",
7134
+ "reason": "Popover keeps the content beside its trigger and dismisses on outside activation."
7135
+ },
7136
+ {
7137
+ "when": "Supplementary tools such as search, inbox, or agents live beside every page.",
7138
+ "component": "component:ds-shell-tools",
7139
+ "reason": "ShellTools owns the persistent application tool panel and its responsive layout."
7140
+ }
7141
+ ],
7142
+ "commonlyComposedWith": [
7143
+ "component:ds-shell-app",
7144
+ "component:ds-button-filled",
7145
+ "component:ds-button-unfilled",
7146
+ "component:ds-tooltip",
7147
+ "component:ds-text",
7148
+ "component:ds-divider"
7149
+ ],
7150
+ "accessibility": [
7151
+ "The heading is the dialog's accessible name. Keep it a generic label for what the panel shows, such as Event details or Vehicle details; record identity belongs in the content.",
7152
+ "Connect explanatory content through aria-describedby when the task needs context beyond the heading.",
7153
+ "Opening moves focus to the leading header action: Back when backLabel is set, otherwise Close. Changing backLabel while focus is in the drawer moves focus to the new leading action.",
7154
+ "A modal drawer makes the page inert, traps Tab, and shows a shade. A non-modal drawer leaves the page interactive, lets Tab leave the panel, and ignores outside clicks.",
7155
+ "Close, Escape, and shade activation emit dsClose with close-button, escape, or backdrop before dismissal. A non-modal drawer handles Escape at the document unless another handler prevented it or a modal dialog is open.",
7156
+ "With navigation enabled, ArrowLeft and ArrowRight page records from anywhere in the document, respecting writing direction, except inside text fields, selects, sliders, menus, listboxes, tablists, comboboxes, and editable content. Set navigationShortcutsBlocked while the page needs those keys.",
7157
+ "Focus return after close follows the presentation. A modal drawer returns focus to its trigger and reports restoreFocus false. A non-modal drawer moves no focus itself; dsAfterClose reports restoreFocus true unless another drawer replaced it, and the owner then focuses the record now shown, such as the current row or map marker, since paging may have moved past the original trigger.",
7158
+ "Header actions and footer navigation are icon buttons with tooltips; give header-actions their own accessible names and keep them to one or two."
7159
+ ],
7160
+ "states": [
7161
+ "The owner controls open, heading, content, and paging availability; the component mutates open to false on dismissal and emits dsAfterClose after exit motion.",
7162
+ "Only one non-modal drawer is open per document. Opening another closes the previous one with reason replaced and restoreFocus false.",
7163
+ "The header holds optional Back, the heading, optional header-actions such as open full page, a divider when actions exist, and Close. Back and Close appear together at depth.",
7164
+ "The default slot is composable content with a 16px inset; bodyInset none removes it for content that owns its edges.",
7165
+ "The footer holds slot footer actions at the start and, with navigation, previous and next at the end. It is hidden when both are empty.",
7166
+ "previousAvailable and nextAvailable make the paging actions inactive at list edges; the owner advances the selection on dsPrevious and dsNext.",
7167
+ "modal is read on open; changing it while open re-presents the same surface in the new mode.",
7168
+ "dsClose, dsAfterClose, dsBack, dsPrevious, and dsNext from slotted components, such as a footer ds-menu, stop at the drawer boundary, so owner listeners on the drawer only receive the drawer's own events; listen on the nested component directly."
7169
+ ],
7170
+ "responsiveBehavior": [
7171
+ "Rendered anywhere inside ShellApp page content, a non-modal drawer covers the page content lane only, below the shell bar and beside the navigation and tool panels, and stays in place while the page scrolls; outside a shell it attaches to the viewport edge.",
7172
+ "Modal drawers always present in the top layer against the viewport edge.",
7173
+ "Width comes from drawerWidth, defaulting to the small panel width, and is clamped to the available lane.",
7174
+ "Below 768px the panel spans the full width of its lane; header and footer stay fixed while content scrolls."
7175
+ ],
7176
+ "frameworkCaveats": {
7177
+ "customElements": [
7178
+ "Set open, modal, previousAvailable, and nextAvailable as JavaScript properties when controlling the drawer.",
7179
+ "Render a page details drawer in the page's own markup next to the list it describes; assign footer actions with slot=\"footer\" and icon actions with slot=\"header-actions\"."
7180
+ ],
7181
+ "react": [
7182
+ "Pass open, modal, previousAvailable, and nextAvailable to DsDrawer; handle onDsClose, onDsPrevious, onDsNext, onDsBack, and onDsAfterClose.",
7183
+ "Render the drawer inside the routed page component; assign footer and header-actions slots on its children."
7184
+ ],
7185
+ "angular": [
7186
+ "Bind [open], [modal], [previousAvailable], and [nextAvailable]; handle (dsClose), (dsPrevious), (dsNext), (dsBack), and (dsAfterClose) with $event.detail.",
7187
+ "Render the drawer in the routed page template; assign footer and header-actions slots on its children."
7188
+ ]
7189
+ },
7190
+ "references": [
7191
+ {
7192
+ "label": "Storybook event details, standalone, multi-depth, modal, and flush examples",
7193
+ "path": "src/wc/components/Drawer/Drawer.stories.ts"
7194
+ }
7195
+ ],
7196
+ "styling": {
7197
+ "rationale": "The component owns its panel surface, edge elevation, motion, and fixed header and footer chrome so every details drawer shares one rhythm; the content slot is application-owned.",
7198
+ "protected": [
7199
+ {
7200
+ "properties": [
7201
+ "background",
7202
+ "border",
7203
+ "box-shadow",
7204
+ "color"
7205
+ ],
7206
+ "reason": "The component owns its surface and edge elevation; compose an application-owned surface inside the content slot when needed.",
7207
+ "props": []
7208
+ },
7209
+ {
7210
+ "properties": [
7211
+ "width"
7212
+ ],
7213
+ "reason": "Width comes from panel-width tokens through drawerWidth and is clamped to the lane.",
7214
+ "props": [
7215
+ "drawerWidth"
7216
+ ]
7217
+ }
7218
+ ],
7219
+ "customProperties": []
7220
+ }
7221
+ },
7222
+ "api": {
7223
+ "props": {
7224
+ "ariaDescribedby": {
7225
+ "type": "string | undefined",
7226
+ "required": false
7227
+ },
7228
+ "backLabel": {
7229
+ "type": "string | undefined",
7230
+ "required": false
7231
+ },
7232
+ "bodyInset": {
7233
+ "type": "DrawerBodyInset",
7234
+ "required": false
7235
+ },
7236
+ "closeAriaLabel": {
7237
+ "type": "string",
7238
+ "required": false
7239
+ },
7240
+ "drawerWidth": {
7241
+ "type": "DrawerWidth | string",
7242
+ "required": false
7243
+ },
7244
+ "heading": {
7245
+ "type": "string",
7246
+ "required": true
7247
+ },
7248
+ "modal": {
7249
+ "type": "boolean",
7250
+ "required": false
7251
+ },
7252
+ "navigation": {
7253
+ "type": "boolean",
7254
+ "required": false
7255
+ },
7256
+ "navigationAriaLabel": {
7257
+ "type": "string",
7258
+ "required": false
7259
+ },
7260
+ "navigationShortcutsBlocked": {
7261
+ "type": "boolean",
7262
+ "required": false
7263
+ },
7264
+ "nextAriaLabel": {
7265
+ "type": "string",
7266
+ "required": false
7267
+ },
7268
+ "nextAvailable": {
7269
+ "type": "boolean",
7270
+ "required": false
7271
+ },
7272
+ "open": {
7273
+ "type": "boolean",
7274
+ "required": false
7275
+ },
7276
+ "previousAriaLabel": {
7277
+ "type": "string",
7278
+ "required": false
7279
+ },
7280
+ "previousAvailable": {
7281
+ "type": "boolean",
7282
+ "required": false
7283
+ },
7284
+ "side": {
7285
+ "type": "DrawerSide",
7286
+ "required": false
7287
+ }
7288
+ },
7289
+ "events": [
7290
+ {
7291
+ "name": "dsAfterClose",
7292
+ "detail": "DrawerAfterCloseDetail"
7293
+ },
7294
+ {
7295
+ "name": "dsBack",
7296
+ "detail": "MouseEvent"
7297
+ },
7298
+ {
7299
+ "name": "dsClose",
7300
+ "detail": "DrawerCloseDetail"
7301
+ },
7302
+ {
7303
+ "name": "dsNext",
7304
+ "detail": "void"
7305
+ },
7306
+ {
7307
+ "name": "dsPrevious",
7308
+ "detail": "void"
7309
+ }
7310
+ ],
7311
+ "slots": [
7312
+ "",
7313
+ "footer",
7314
+ "header-actions"
7315
+ ]
7316
+ },
7317
+ "exports": {
7318
+ "customElement": "ds-drawer",
7319
+ "react": "DsDrawer",
7320
+ "vue": "DsDrawer",
7321
+ "angular": "DsDrawer"
7322
+ },
7323
+ "dependencies": [
7324
+ "@ds-mo/ui",
7325
+ "@ds-mo/tokens"
7326
+ ],
7327
+ "componentDependencies": [
7328
+ "button-unfilled",
7329
+ "divider",
7330
+ "text",
7331
+ "tooltip"
7332
+ ]
7333
+ },
6955
7334
  {
6956
7335
  "id": "component:ds-empty-state",
6957
7336
  "tag": "ds-empty-state",
@@ -12457,6 +12836,196 @@
12457
12836
  ],
12458
12837
  "componentDependencies": []
12459
12838
  },
12839
+ {
12840
+ "id": "component:ds-popover",
12841
+ "tag": "ds-popover",
12842
+ "name": "popover",
12843
+ "title": "Popover",
12844
+ "summary": "Anchored non-modal dialog for short interactive content tied to a trigger. It uses the same choice-popup surface and placement as Menu, Select, and the date picker, with fully composable content and no built-in header or footer.",
12845
+ "intentStatus": "complete",
12846
+ "intent": {
12847
+ "audience": "general",
12848
+ "status": "experimental",
12849
+ "summary": "Anchored non-modal dialog for short interactive content tied to a trigger. It uses the same choice-popup surface and placement as Menu, Select, and the date picker, with fully composable content and no built-in header or footer.",
12850
+ "useWhen": [
12851
+ "A trigger reveals a few related controls, such as share options or display settings, that apply without leaving the page.",
12852
+ "Supplementary explanation is too long or needs a link, so a Tooltip is not enough.",
12853
+ "The content should dismiss on outside activation or Escape and return focus to its trigger."
12854
+ ],
12855
+ "avoidWhen": [
12856
+ "The content is a list of commands or one-of-many choices.",
12857
+ "The content picks a date.",
12858
+ "The content is a short non-interactive label for an icon control.",
12859
+ "The user must complete or confirm a blocking task.",
12860
+ "The content needs more than a few controls or scrolling sections."
12861
+ ],
12862
+ "alternatives": [
12863
+ {
12864
+ "when": "A trigger reveals commands or a choice list.",
12865
+ "component": "component:ds-menu",
12866
+ "reason": "Menu provides menu semantics, roving focus, and selection."
12867
+ },
12868
+ {
12869
+ "when": "The user picks a calendar date.",
12870
+ "component": "component:ds-input-date",
12871
+ "reason": "InputDate owns its calendar popup, anchored to the whole field and aligned to its end edge, with calendar keyboard behavior."
12872
+ },
12873
+ {
12874
+ "when": "An icon control needs a short non-interactive name.",
12875
+ "component": "component:ds-tooltip",
12876
+ "reason": "Tooltip shows supplementary labels on hover and keyboard focus without taking focus."
12877
+ },
12878
+ {
12879
+ "when": "The task is blocking or needs explicit completion.",
12880
+ "component": "component:ds-modal",
12881
+ "reason": "Modal contains focus and makes the page inert until the user decides."
12882
+ },
12883
+ {
12884
+ "when": "The content is a larger panel of detail or a multi-field task.",
12885
+ "component": "component:ds-drawer",
12886
+ "reason": "Drawer provides room for longer content beside the page."
12887
+ }
12888
+ ],
12889
+ "commonlyComposedWith": [
12890
+ "component:ds-button-unfilled",
12891
+ "component:ds-button-filled",
12892
+ "component:ds-field",
12893
+ "component:ds-switch",
12894
+ "component:ds-text"
12895
+ ],
12896
+ "accessibility": [
12897
+ "The surface is a non-modal dialog named by popoverLabel. Always set it.",
12898
+ "The owner marks the trigger with haspopup=\"dialog\" and mirrors open into expanded and surfaceOpen on ButtonUnfilled.",
12899
+ "Opening moves focus to an element marked autofocus in the content, otherwise to the surface itself.",
12900
+ "Escape returns focus to the anchor. Outside activation closes without moving focus. Tab past the last control closes the popover and continues to the control after the trigger.",
12901
+ "dsClose reports escape, outside, or tab so the owner can sync trigger state. Actions inside the content close the popover by setting open to false."
12902
+ ],
12903
+ "states": [
12904
+ "The owner sets open and an anchor or anchorId; the component mutates open to false for user dismissal and emits dsAfterClose after exit motion.",
12905
+ "Slotted content stays in the host while closed so authored nodes and their state persist between openings.",
12906
+ "Placement flips to the opposite side when the preferred side does not fit, and clamps within the viewport or the nearest overlay boundary."
12907
+ ],
12908
+ "responsiveBehavior": [
12909
+ "Unset, width follows content between menu-width-xs and panel-width-lg, clamped to the viewport. popoverWidth fixes it to a menu-width token or a CSS length.",
12910
+ "Height is limited to the space available on the resolved side; content scrolls when it exceeds it.",
12911
+ "The surface lives in the native top layer, escaping clipping containers and transformed ancestors."
12912
+ ],
12913
+ "frameworkCaveats": {
12914
+ "customElements": [
12915
+ "Set anchor as a JavaScript property or anchorId as an attribute, then set open.",
12916
+ "Listen for dsClose to update the trigger's expanded and surfaceOpen state."
12917
+ ],
12918
+ "react": [
12919
+ "Pass a trigger ref's element as anchor, or anchorId, and control open; update trigger state in onDsClose."
12920
+ ],
12921
+ "angular": [
12922
+ "Bind [anchor] to the trigger element or set anchorId, bind [open], and update trigger state in (dsClose)."
12923
+ ]
12924
+ },
12925
+ "references": [
12926
+ {
12927
+ "label": "Storybook share, help, trigger, and placement examples",
12928
+ "path": "src/wc/components/Popover/Popover.stories.ts"
12929
+ }
12930
+ ],
12931
+ "styling": {
12932
+ "rationale": "The component owns the anchored choice-popup surface shared with Menu, Select, and the date and time pickers so every anchored overlay reads as the same material. Content insets to the Menu label edge by default.",
12933
+ "protected": [
12934
+ {
12935
+ "properties": [
12936
+ "background",
12937
+ "border",
12938
+ "border-radius",
12939
+ "box-shadow"
12940
+ ],
12941
+ "reason": "The anchored surface recipe is shared across overlay families; compose application surfaces inside the content slot.",
12942
+ "props": []
12943
+ },
12944
+ {
12945
+ "properties": [
12946
+ "width"
12947
+ ],
12948
+ "reason": "Width follows content within the choice-popup bounds, or a menu-width token or length through popoverWidth.",
12949
+ "props": [
12950
+ "popoverWidth"
12951
+ ]
12952
+ },
12953
+ {
12954
+ "properties": [
12955
+ "padding"
12956
+ ],
12957
+ "reason": "The 4px frame and the content inset align content with Menu labels; compose lists and pickers with Menu, Select, or InputDate instead.",
12958
+ "props": []
12959
+ }
12960
+ ],
12961
+ "customProperties": []
12962
+ }
12963
+ },
12964
+ "api": {
12965
+ "props": {
12966
+ "align": {
12967
+ "type": "PopoverAlign",
12968
+ "required": false
12969
+ },
12970
+ "anchor": {
12971
+ "type": "HTMLElement | undefined",
12972
+ "required": false
12973
+ },
12974
+ "anchorId": {
12975
+ "type": "string | undefined",
12976
+ "required": false
12977
+ },
12978
+ "boundary": {
12979
+ "type": "HTMLElement | undefined",
12980
+ "required": false
12981
+ },
12982
+ "open": {
12983
+ "type": "boolean",
12984
+ "required": false
12985
+ },
12986
+ "popoverLabel": {
12987
+ "type": "string",
12988
+ "required": false
12989
+ },
12990
+ "popoverWidth": {
12991
+ "type": "PopoverWidth | string | undefined",
12992
+ "required": false
12993
+ },
12994
+ "side": {
12995
+ "type": "PopoverSide",
12996
+ "required": false
12997
+ },
12998
+ "sideOffset": {
12999
+ "type": "number | string",
13000
+ "required": false
13001
+ }
13002
+ },
13003
+ "events": [
13004
+ {
13005
+ "name": "dsAfterClose",
13006
+ "detail": "void"
13007
+ },
13008
+ {
13009
+ "name": "dsClose",
13010
+ "detail": "PopoverCloseDetail"
13011
+ }
13012
+ ],
13013
+ "slots": [
13014
+ ""
13015
+ ]
13016
+ },
13017
+ "exports": {
13018
+ "customElement": "ds-popover",
13019
+ "react": "DsPopover",
13020
+ "vue": "DsPopover",
13021
+ "angular": "DsPopover"
13022
+ },
13023
+ "dependencies": [
13024
+ "@ds-mo/ui",
13025
+ "@ds-mo/tokens"
13026
+ ],
13027
+ "componentDependencies": []
13028
+ },
12460
13029
  {
12461
13030
  "id": "component:ds-radio",
12462
13031
  "tag": "ds-radio",
@@ -14009,7 +14578,8 @@
14009
14578
  "component:ds-shell-page",
14010
14579
  "component:ds-banner",
14011
14580
  "component:ds-swatch-picker",
14012
- "component:ds-paper-texture"
14581
+ "component:ds-paper-texture",
14582
+ "component:ds-drawer"
14013
14583
  ],
14014
14584
  "patterns": [
14015
14585
  "pattern:application-shell",
@@ -14053,7 +14623,8 @@
14053
14623
  "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.",
14054
14624
  "The application filters unauthorized destinations, sections, and tools before passing them into shell components.",
14055
14625
  "Application-owned header actions and the account trigger retain surface ownership across shell presentations. Supply surfaceOpen on header actions and accountMenuSurfaceOpen on navigation for rendered surface lifetimes; keep disclosure and selected-route state separate.",
14056
- "Managed page chrome can explicitly choose page-local title presentation for pages that must remain compact rather than following capacity and scrolling."
14626
+ "Managed page chrome can explicitly choose page-local title presentation for pages that must remain compact rather than following capacity and scrolling.",
14627
+ "The page content lane is a non-scrolling frame around the page scroller that contains fixed descendants, so page-owned non-modal surfaces such as a details ds-drawer cover only the content lane, stay put while the page scrolls, and hide with the content in fullscreen tools and blocked mobile stages."
14057
14628
  ],
14058
14629
  "responsiveBehavior": [
14059
14630
  "ShellApp owns the fixed system breakpoints and resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
@@ -0,0 +1,18 @@
1
+ import { ChangeDetectorRef, ElementRef, NgZone, EventEmitter } from '@angular/core';
2
+ import type { Components } from '@ds-mo/ui/components';
3
+ import type { DsDisclosureCustomEvent } from '@ds-mo/ui/components';
4
+ import * as i0 from "@angular/core";
5
+ export declare class DsDisclosure {
6
+ protected z: NgZone;
7
+ protected el: HTMLDsDisclosureElement;
8
+ dsToggle: EventEmitter<DsDisclosureCustomEvent<boolean>>;
9
+ constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<DsDisclosure, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsDisclosure, "ds-disclosure", never, { "headingLevel": { "alias": "headingLevel"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "label": { "alias": "label"; "required": true; }; "open": { "alias": "open"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "dsToggle": "dsToggle"; }, never, ["*"], true, never>;
12
+ }
13
+ export declare interface DsDisclosure extends Components.DsDisclosure {
14
+ /**
15
+ * Emitted after the user toggles the content; detail is the new open state.
16
+ */
17
+ dsToggle: EventEmitter<DsDisclosureCustomEvent<boolean>>;
18
+ }