@ds-mo/ui 16.1.3 → 16.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -0,0 +1,282 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "disclosure",
4
+ "title": "Disclosure",
5
+ "description": "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.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/disclosure",
11
+ "source": "src/wc/components/Disclosure/Disclosure.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "experimental",
16
+ "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.",
17
+ "useWhen": [
18
+ "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.",
19
+ "The reveal belongs inside a container the owner already styles."
20
+ ],
21
+ "avoidWhen": [
22
+ "Sections are peers the user switches between, with one visible at a time; use TabGroup.",
23
+ "The hidden content is critical to completing the task.",
24
+ "The content is a navigation tree or a filter list with its own selection semantics.",
25
+ "The trigger needs to open a floating surface rather than expand in place.",
26
+ "Rows of grouped data need collapsible group headers; use Table grouping."
27
+ ],
28
+ "alternatives": [
29
+ {
30
+ "when": "The user switches between peer views of the same area.",
31
+ "component": "component:ds-tab-group",
32
+ "reason": "TabGroup shows one panel at a time with tab semantics."
33
+ },
34
+ {
35
+ "when": "A trigger reveals content that should float over the page.",
36
+ "component": "component:ds-popover",
37
+ "reason": "Popover anchors content to its trigger without reflowing the page."
38
+ },
39
+ {
40
+ "when": "The section is an editable settings group with view and edit modes.",
41
+ "component": "component:ds-card-setting",
42
+ "reason": "CardSetting owns the view, edit, save, and cancel workflow."
43
+ },
44
+ {
45
+ "when": "Grouped data rows need collapsible group headers.",
46
+ "component": "component:ds-table",
47
+ "reason": "Table group rows own counts, sticky headers, and collapse state for grouped data."
48
+ }
49
+ ],
50
+ "commonlyComposedWith": [
51
+ "component:ds-text",
52
+ "component:ds-switch",
53
+ "component:ds-button-unfilled"
54
+ ],
55
+ "accessibility": [
56
+ "The trigger is a borderless ButtonUnfilled exposing aria-expanded and aria-controls for the revealed region, which is named by label.",
57
+ "headingLevel wraps the trigger in a heading when the label titles a document section; omit it for inline detail.",
58
+ "Collapsed content is inert and hidden so it is never focusable or announced.",
59
+ "Inactive disclosures cannot be toggled."
60
+ ],
61
+ "states": [
62
+ "open is reflected and mutable: the component toggles it on activation and emits dsToggle with the new state. Owners may also set it directly.",
63
+ "The chevron points right while collapsed and down while open.",
64
+ "Height and content opacity animate on toggle and are removed under reduced motion."
65
+ ],
66
+ "responsiveBehavior": [
67
+ "The trigger hugs its label; the revealed content fills the container width.",
68
+ "Content starts 8px below the trigger with no inline inset, so it aligns with the owner's content edge."
69
+ ],
70
+ "frameworkCaveats": {
71
+ "customElements": [
72
+ "Set open as a property or attribute; listen for dsToggle for user changes."
73
+ ],
74
+ "react": [
75
+ "Pass open to DsDisclosure and update it in onDsToggle when controlling it."
76
+ ],
77
+ "angular": [
78
+ "Bind [open] and update it from (dsToggle) when controlling it."
79
+ ]
80
+ },
81
+ "references": [
82
+ {
83
+ "label": "Storybook playground, in-card, section heading, and inactive examples",
84
+ "path": "src/wc/components/Disclosure/Disclosure.stories.ts"
85
+ }
86
+ ],
87
+ "styling": {
88
+ "rationale": "The component owns the trigger, which follows the ButtonUnfilled recipe, and the expand motion. Containers own surface, dividers, and content inset.",
89
+ "protected": [
90
+ {
91
+ "properties": [
92
+ "padding",
93
+ "border-radius",
94
+ "background"
95
+ ],
96
+ "reason": "Trigger hover, press, focus, and padding follow ButtonUnfilled; choose size instead.",
97
+ "props": [
98
+ "size"
99
+ ]
100
+ }
101
+ ],
102
+ "customProperties": []
103
+ }
104
+ },
105
+ "api": {
106
+ "props": {
107
+ "headingLevel": {
108
+ "type": "DisclosureHeadingLevel | undefined",
109
+ "resolvedType": "2 | 3 | 4 | 5 | 6 | undefined",
110
+ "attribute": "heading-level",
111
+ "required": false,
112
+ "mutable": false,
113
+ "description": "Wraps the trigger in a heading when the label titles a document section."
114
+ },
115
+ "isInactive": {
116
+ "type": "boolean",
117
+ "resolvedType": "boolean",
118
+ "attribute": "is-inactive",
119
+ "default": "false",
120
+ "required": false,
121
+ "mutable": false
122
+ },
123
+ "label": {
124
+ "type": "string",
125
+ "resolvedType": "string",
126
+ "attribute": "label",
127
+ "required": true,
128
+ "mutable": false,
129
+ "description": "Visible trigger label."
130
+ },
131
+ "open": {
132
+ "type": "boolean",
133
+ "resolvedType": "boolean",
134
+ "attribute": "open",
135
+ "default": "false",
136
+ "required": false,
137
+ "mutable": true,
138
+ "description": "Whether the content is shown. The component mutates this when the trigger is activated."
139
+ },
140
+ "size": {
141
+ "type": "DisclosureSize",
142
+ "resolvedType": "\"md\" | \"sm\"",
143
+ "attribute": "size",
144
+ "default": "'md'",
145
+ "required": false,
146
+ "mutable": false,
147
+ "description": "Trigger density, matching ButtonUnfilled."
148
+ }
149
+ },
150
+ "events": [
151
+ {
152
+ "name": "dsToggle",
153
+ "detail": "boolean",
154
+ "bubbles": true,
155
+ "cancelable": true,
156
+ "composed": true,
157
+ "description": "Emitted after the user toggles the content; detail is the new open state."
158
+ }
159
+ ],
160
+ "methods": [],
161
+ "slots": [
162
+ {
163
+ "name": "",
164
+ "description": "The default slot"
165
+ }
166
+ ]
167
+ },
168
+ "props": {
169
+ "headingLevel": {
170
+ "type": "DisclosureHeadingLevel | undefined",
171
+ "resolvedType": "2 | 3 | 4 | 5 | 6 | undefined",
172
+ "attribute": "heading-level",
173
+ "required": false,
174
+ "mutable": false,
175
+ "description": "Wraps the trigger in a heading when the label titles a document section."
176
+ },
177
+ "isInactive": {
178
+ "type": "boolean",
179
+ "resolvedType": "boolean",
180
+ "attribute": "is-inactive",
181
+ "default": "false",
182
+ "required": false,
183
+ "mutable": false
184
+ },
185
+ "label": {
186
+ "type": "string",
187
+ "resolvedType": "string",
188
+ "attribute": "label",
189
+ "required": true,
190
+ "mutable": false,
191
+ "description": "Visible trigger label."
192
+ },
193
+ "open": {
194
+ "type": "boolean",
195
+ "resolvedType": "boolean",
196
+ "attribute": "open",
197
+ "default": "false",
198
+ "required": false,
199
+ "mutable": true,
200
+ "description": "Whether the content is shown. The component mutates this when the trigger is activated."
201
+ },
202
+ "size": {
203
+ "type": "DisclosureSize",
204
+ "resolvedType": "\"md\" | \"sm\"",
205
+ "attribute": "size",
206
+ "default": "'md'",
207
+ "required": false,
208
+ "mutable": false,
209
+ "description": "Trigger density, matching ButtonUnfilled."
210
+ }
211
+ },
212
+ "events": [
213
+ {
214
+ "name": "dsToggle",
215
+ "detail": "boolean",
216
+ "bubbles": true,
217
+ "cancelable": true,
218
+ "composed": true,
219
+ "description": "Emitted after the user toggles the content; detail is the new open state."
220
+ }
221
+ ],
222
+ "methods": [],
223
+ "slots": [
224
+ {
225
+ "name": "",
226
+ "description": "The default slot"
227
+ }
228
+ ],
229
+ "exports": {
230
+ "customElement": "ds-disclosure",
231
+ "react": "DsDisclosure",
232
+ "vue": "DsDisclosure",
233
+ "angular": "DsDisclosure"
234
+ },
235
+ "consumption": {
236
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
237
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
238
+ "customElements": {
239
+ "import": "import '@ds-mo/ui/dist/components/ds-disclosure.js';",
240
+ "example": "<ds-disclosure></ds-disclosure>"
241
+ },
242
+ "react": {
243
+ "import": "import { DsDisclosure } from '@ds-mo/ui/react';",
244
+ "example": "<DsDisclosure />"
245
+ },
246
+ "vue": {
247
+ "import": "import { DsDisclosure } from '@ds-mo/ui/vue';",
248
+ "example": "<DsDisclosure />"
249
+ },
250
+ "angular": {
251
+ "import": "import { DsDisclosure } from '@ds-mo/ui/angular/ds-disclosure';",
252
+ "example": "<ds-disclosure></ds-disclosure>"
253
+ },
254
+ "peerDependencies": {
255
+ "required": [
256
+ "@ds-mo/tokens ^9.0.0",
257
+ "@ds-mo/icons ^8.2.2"
258
+ ],
259
+ "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
260
+ }
261
+ }
262
+ },
263
+ "dependencies": [
264
+ "@ds-mo/ui",
265
+ "@ds-mo/tokens"
266
+ ],
267
+ "registryDependencies": [
268
+ "button-unfilled"
269
+ ],
270
+ "files": [
271
+ {
272
+ "path": "src/wc/components/Disclosure/Disclosure.css",
273
+ "content": "/*\n * Disclosure owns the trigger and the reveal, not a container: no background,\n * border, divider, or content inset. The surrounding card or section supplies\n * those. The trigger is a borderless ButtonUnfilled, so hover, press, focus,\n * and padding follow the button recipe.\n */\n:host {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n min-width: 0;\n}\n\n.disclosure-heading {\n margin: 0;\n font: inherit;\n}\n\n/* Height animates through grid rows so content never needs measuring. */\n.disclosure-panel {\n display: grid;\n grid-template-rows: 0fr;\n align-self: stretch;\n transition:\n grid-template-rows var(--effect-animation-duration-short-3)\n var(--effect-animation-easing-ease-in-out),\n visibility 0s linear var(--effect-animation-duration-short-3);\n visibility: hidden;\n}\n\n.disclosure-panel--open {\n grid-template-rows: 1fr;\n transition:\n grid-template-rows var(--effect-animation-duration-short-3)\n var(--effect-animation-easing-ease-in-out),\n visibility 0s linear 0s;\n /* inherit, not visible, so a hiding ancestor such as a skeleton still wins. */\n visibility: inherit;\n}\n\n.disclosure-panel__clip {\n min-height: 0;\n overflow: hidden;\n}\n\n/* Content starts below the trigger; its own inset belongs to the owner. */\n.disclosure-content {\n padding-block-start: var(--dimension-space-100);\n opacity: 0;\n transition: opacity var(--effect-animation-duration-short-3)\n var(--effect-animation-easing-ease-out);\n}\n\n.disclosure-panel--open .disclosure-content {\n opacity: 1;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .disclosure-panel,\n .disclosure-panel--open,\n .disclosure-content {\n transition: none;\n }\n}\n",
274
+ "type": "registry:ui"
275
+ },
276
+ {
277
+ "path": "src/wc/components/Disclosure/Disclosure.tsx",
278
+ "content": "import { Component, Prop, Event, EventEmitter, Element, h, Host } from '@stencil/core';\nimport type { ButtonSize } from '../../utils/button-types';\n\nexport type DisclosureHeadingLevel = 2 | 3 | 4 | 5 | 6;\nexport type DisclosureSize = Extract<ButtonSize, 'sm' | 'md'>;\n\nlet disclosureIdCounter = 0;\n\n@Component({\n tag: 'ds-disclosure',\n styleUrl: 'Disclosure.css',\n scoped: true,\n})\nexport class Disclosure {\n @Element() el!: HTMLElement;\n\n /** Whether the content is shown. The component mutates this when the trigger is activated. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Visible trigger label. */\n @Prop() label!: string;\n /** Trigger density, matching ButtonUnfilled. */\n @Prop() size: DisclosureSize = 'md';\n /** Wraps the trigger in a heading when the label titles a document section. */\n @Prop() headingLevel: DisclosureHeadingLevel | undefined;\n @Prop() isInactive: boolean = false;\n\n /** Emitted after the user toggles the content; detail is the new open state. */\n @Event() dsToggle!: EventEmitter<boolean>;\n\n private readonly panelId = `ds-disclosure-${++disclosureIdCounter}-panel`;\n\n private handleTriggerClick = (event: CustomEvent<MouseEvent>) => {\n // The trigger's own dsClick is an implementation detail; owners listen for dsToggle.\n event.stopPropagation();\n if (this.isInactive) return;\n this.open = !this.open;\n this.dsToggle.emit(this.open);\n };\n\n render() {\n const trigger = (\n <ds-button-unfilled\n class=\"disclosure-trigger\"\n variant=\"icon-label\"\n size={this.size}\n icon={this.open ? 'ChevronDown' : 'ChevronRight'}\n label={this.label}\n hasBorder={false}\n pressScale={false}\n expanded={this.open}\n surfaceOpen={false}\n controls={this.panelId}\n isInactive={this.isInactive}\n onDsClick={this.handleTriggerClick}\n />\n );\n const HeadingTag = this.headingLevel ? (`h${this.headingLevel}` as 'h3') : null;\n\n return (\n <Host class={{ 'disclosure--open': this.open }}>\n {HeadingTag ? <HeadingTag class=\"disclosure-heading\">{trigger}</HeadingTag> : trigger}\n <div\n id={this.panelId}\n class={{ 'disclosure-panel': true, 'disclosure-panel--open': this.open }}\n role=\"region\"\n aria-label={this.label}\n inert={!this.open}\n >\n <div class=\"disclosure-panel__clip\">\n <div class=\"disclosure-content\">\n <slot />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n",
279
+ "type": "registry:ui"
280
+ }
281
+ ]
282
+ }