@ds-mo/ui 9.2.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/README.md +2 -81
  2. package/dist/.build-stamp +1 -1
  3. package/dist/agent-patterns.json +1 -1
  4. package/dist/agent.json +400 -135
  5. package/dist/angular/boolean-value-accessor.js +3 -3
  6. package/dist/angular/ds-agent-activity.js +3 -3
  7. package/dist/angular/ds-agent-response.js +3 -3
  8. package/dist/angular/ds-agent-source-list.js +3 -3
  9. package/dist/angular/ds-agent-tool-call.js +3 -3
  10. package/dist/angular/ds-app-shell.js +3 -3
  11. package/dist/angular/ds-attachment-list.js +3 -3
  12. package/dist/angular/ds-avatar.d.ts +1 -1
  13. package/dist/angular/ds-avatar.js +5 -5
  14. package/dist/angular/ds-badge.js +3 -3
  15. package/dist/angular/ds-bar-nav.js +3 -3
  16. package/dist/angular/ds-button-filled.js +3 -3
  17. package/dist/angular/ds-button-unfilled.js +3 -3
  18. package/dist/angular/ds-card-data-viz-donut.js +3 -3
  19. package/dist/angular/ds-card-setting.d.ts +5 -4
  20. package/dist/angular/ds-card-setting.js +6 -6
  21. package/dist/angular/ds-card-shell-data-viz.js +3 -3
  22. package/dist/angular/ds-chart-bar.js +3 -3
  23. package/dist/angular/ds-chart-donut.js +3 -3
  24. package/dist/angular/ds-chart-legend.js +3 -3
  25. package/dist/angular/ds-chart-line.js +3 -3
  26. package/dist/angular/ds-checkbox.js +3 -3
  27. package/dist/angular/ds-chip.js +3 -3
  28. package/dist/angular/ds-code-block.js +3 -3
  29. package/dist/angular/ds-conversation-list-item.d.ts +1 -1
  30. package/dist/angular/ds-conversation-list-item.js +5 -5
  31. package/dist/angular/ds-conversation-list-section.js +3 -3
  32. package/dist/angular/ds-conversation-list.js +3 -3
  33. package/dist/angular/ds-divider.js +3 -3
  34. package/dist/angular/ds-empty-state.js +3 -3
  35. package/dist/angular/ds-field.js +3 -3
  36. package/dist/angular/ds-icon.js +3 -3
  37. package/dist/angular/ds-input.js +3 -3
  38. package/dist/angular/ds-loader.js +3 -3
  39. package/dist/angular/ds-markdown.js +3 -3
  40. package/dist/angular/ds-menu.d.ts +6 -1
  41. package/dist/angular/ds-menu.js +7 -4
  42. package/dist/angular/ds-message-bubble.js +3 -3
  43. package/dist/angular/ds-message-composer.js +3 -3
  44. package/dist/angular/ds-message-scroller.js +3 -3
  45. package/dist/angular/ds-message.js +3 -3
  46. package/dist/angular/ds-modal.d.ts +12 -3
  47. package/dist/angular/ds-modal.js +9 -6
  48. package/dist/angular/ds-panel-nav.d.ts +1 -1
  49. package/dist/angular/ds-panel-nav.js +5 -5
  50. package/dist/angular/ds-panel-sub-nav.js +3 -3
  51. package/dist/angular/ds-panel-tool-header.js +3 -3
  52. package/dist/angular/ds-panel-tool-search.js +3 -3
  53. package/dist/angular/ds-panel-tools.js +3 -3
  54. package/dist/angular/ds-radio.js +3 -3
  55. package/dist/angular/ds-select-multi.js +3 -3
  56. package/dist/angular/ds-select.js +3 -3
  57. package/dist/angular/ds-shell-gradient-picker.js +3 -3
  58. package/dist/angular/ds-shell-gradient-swatch.js +3 -3
  59. package/dist/angular/ds-skeleton.js +3 -3
  60. package/dist/angular/ds-slider.js +3 -3
  61. package/dist/angular/ds-swatch-picker.js +3 -3
  62. package/dist/angular/ds-switch.js +3 -3
  63. package/dist/angular/ds-tab-group.js +3 -3
  64. package/dist/angular/ds-tag.js +3 -3
  65. package/dist/angular/ds-text.js +3 -3
  66. package/dist/angular/ds-toast.d.ts +22 -0
  67. package/dist/angular/{ds-banner.js → ds-toast.js} +21 -15
  68. package/dist/angular/ds-tooltip-data-viz.js +3 -3
  69. package/dist/angular/ds-tooltip.js +3 -3
  70. package/dist/angular/index.d.ts +1 -1
  71. package/dist/angular/index.js +1 -2
  72. package/dist/angular/proxies.d.ts +1 -2
  73. package/dist/angular/proxies.js +1 -2
  74. package/dist/angular/radio-value-accessor.js +3 -3
  75. package/dist/angular/select-value-accessor.js +3 -3
  76. package/dist/angular/text-value-accessor.js +3 -3
  77. package/dist/angular/value-accessor.js +3 -3
  78. package/dist/components/ds-agent-activity.js +1 -1
  79. package/dist/components/ds-agent-response.js +1 -1
  80. package/dist/components/ds-agent-response.js.map +1 -1
  81. package/dist/components/ds-agent-source-list.js +1 -1
  82. package/dist/components/ds-agent-tool-call.js +1 -1
  83. package/dist/components/ds-app-shell.js +1 -1
  84. package/dist/components/ds-attachment-list.js +1 -1
  85. package/dist/components/ds-avatar.js +1 -1
  86. package/dist/components/ds-avatar.js.map +1 -1
  87. package/dist/components/ds-badge.js +1 -1
  88. package/dist/components/ds-bar-nav.js +1 -1
  89. package/dist/components/ds-bar-nav.js.map +1 -1
  90. package/dist/components/ds-button-filled.js +1 -1
  91. package/dist/components/ds-button-unfilled.js +1 -1
  92. package/dist/components/ds-card-data-viz-donut.js +1 -1
  93. package/dist/components/ds-card-data-viz-donut.js.map +1 -1
  94. package/dist/components/ds-card-setting.js +1 -1
  95. package/dist/components/ds-card-setting.js.map +1 -1
  96. package/dist/components/ds-card-shell-data-viz.js +1 -1
  97. package/dist/components/ds-chart-bar.js +1 -1
  98. package/dist/components/ds-chart-donut.js +1 -1
  99. package/dist/components/ds-chart-legend.js +1 -1
  100. package/dist/components/ds-chart-line.js +1 -1
  101. package/dist/components/ds-checkbox.js +1 -1
  102. package/dist/components/ds-chip.js +1 -1
  103. package/dist/components/ds-code-block.js +1 -1
  104. package/dist/components/ds-conversation-list-item.js +1 -1
  105. package/dist/components/ds-conversation-list-item.js.map +1 -1
  106. package/dist/components/ds-conversation-list-section.js +1 -1
  107. package/dist/components/ds-conversation-list-section.js.map +1 -1
  108. package/dist/components/ds-conversation-list.js +1 -1
  109. package/dist/components/ds-conversation-list.js.map +1 -1
  110. package/dist/components/ds-divider.js +1 -1
  111. package/dist/components/ds-empty-state.js +1 -1
  112. package/dist/components/ds-field.js +1 -1
  113. package/dist/components/ds-icon.js +1 -1
  114. package/dist/components/ds-input.js +1 -1
  115. package/dist/components/ds-markdown.js +1 -1
  116. package/dist/components/ds-menu.js +1 -1
  117. package/dist/components/ds-message-bubble.js +1 -1
  118. package/dist/components/ds-message-composer.js +1 -1
  119. package/dist/components/ds-message-composer.js.map +1 -1
  120. package/dist/components/ds-message-scroller.js +1 -1
  121. package/dist/components/ds-message-scroller.js.map +1 -1
  122. package/dist/components/ds-message.js +1 -1
  123. package/dist/components/ds-modal.js +1 -1
  124. package/dist/components/ds-modal.js.map +1 -1
  125. package/dist/components/ds-panel-nav.js +1 -1
  126. package/dist/components/ds-panel-nav.js.map +1 -1
  127. package/dist/components/ds-panel-sub-nav.js +1 -1
  128. package/dist/components/ds-panel-tool-header.js +1 -1
  129. package/dist/components/ds-panel-tool-search.js +1 -1
  130. package/dist/components/ds-panel-tools.js +1 -1
  131. package/dist/components/ds-panel-tools.js.map +1 -1
  132. package/dist/components/ds-radio.js +1 -1
  133. package/dist/components/ds-select-multi.js +1 -1
  134. package/dist/components/ds-select.js +1 -1
  135. package/dist/components/ds-shell-gradient-picker.js +1 -1
  136. package/dist/components/ds-shell-gradient-picker.js.map +1 -1
  137. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  138. package/dist/components/ds-skeleton.js +1 -1
  139. package/dist/components/ds-slider.js +1 -1
  140. package/dist/components/ds-slider.js.map +1 -1
  141. package/dist/components/ds-swatch-picker.js +1 -1
  142. package/dist/components/ds-switch.js +1 -1
  143. package/dist/components/ds-tab-group.js +1 -1
  144. package/dist/components/ds-tag.js +1 -1
  145. package/dist/components/ds-tag.js.map +1 -1
  146. package/dist/components/ds-text.js +1 -1
  147. package/dist/components/{ds-card.d.ts → ds-toast.d.ts} +4 -4
  148. package/dist/components/ds-toast.js +2 -0
  149. package/dist/components/ds-toast.js.map +1 -0
  150. package/dist/components/ds-tooltip-data-viz.js +1 -1
  151. package/dist/components/ds-tooltip.js +1 -1
  152. package/dist/components/{p-Bo5wikia.js → p-0kEg-Z4f.js} +2 -2
  153. package/dist/components/p-B4RQoNmL.js +2 -0
  154. package/dist/components/p-B4RQoNmL.js.map +1 -0
  155. package/dist/components/p-B8C_yfLQ.js +2 -0
  156. package/dist/components/p-B8C_yfLQ.js.map +1 -0
  157. package/dist/components/{p-Di-ThR90.js → p-BJUcsBHt.js} +2 -2
  158. package/dist/components/p-BJUcsBHt.js.map +1 -0
  159. package/dist/components/{p-C0sq948W.js → p-BTo4pNdp.js} +2 -2
  160. package/dist/components/p-Bet_UjML.js +2 -0
  161. package/dist/components/{p-BFWC17em.js.map → p-Bet_UjML.js.map} +1 -1
  162. package/dist/components/{p-2br9YDbG.js → p-BkwBtZs3.js} +2 -2
  163. package/dist/components/{p-CZMEhdlA.js → p-CKnoWZd9.js} +2 -2
  164. package/dist/components/p-CKnoWZd9.js.map +1 -0
  165. package/dist/components/p-CLn7QnE0.js +2 -0
  166. package/dist/components/p-CLn7QnE0.js.map +1 -0
  167. package/dist/components/{p-Bx1G7P6W.js → p-CPPAndX2.js} +2 -2
  168. package/dist/components/{p-Di4HBckb.js → p-CS12e52R.js} +2 -2
  169. package/dist/components/{p-BSOZXagj.js → p-CZZYGqKz.js} +2 -2
  170. package/dist/components/p-C_0Q8Cnp.js +2 -0
  171. package/dist/components/p-C_0Q8Cnp.js.map +1 -0
  172. package/dist/components/{p-t9Ei1kHP.js → p-CxyjoTN1.js} +2 -2
  173. package/dist/components/p-CyoHRqy6.js +2 -0
  174. package/dist/components/p-CyoHRqy6.js.map +1 -0
  175. package/dist/components/p-DBJ2I3mH.js +2 -0
  176. package/dist/components/p-DBJ2I3mH.js.map +1 -0
  177. package/dist/components/p-DM-95BX1.js +2 -0
  178. package/dist/components/p-DM-95BX1.js.map +1 -0
  179. package/dist/components/p-DZAtgSZo.js +2 -0
  180. package/dist/components/p-DZAtgSZo.js.map +1 -0
  181. package/dist/components/{p--KbMQblZ.js → p-Dh4q5TSS.js} +2 -2
  182. package/dist/components/{p-DIsDiGcp.js → p-DhsO0939.js} +2 -2
  183. package/dist/components/p-DhsO0939.js.map +1 -0
  184. package/dist/components/{p-CiwdnKKp.js → p-DrDHC7V6.js} +2 -2
  185. package/dist/components/{p-BZAEZENv.js → p-DsbhBb5F.js} +2 -2
  186. package/dist/components/p-DuNZGFkV.js +2 -0
  187. package/dist/components/p-DuNZGFkV.js.map +1 -0
  188. package/dist/components/{p-B1pWGQn1.js → p-P_4vE1ub.js} +2 -2
  189. package/dist/docs/components.json +1647 -1435
  190. package/dist/framework/select-multi-value-accessor.js +3 -3
  191. package/dist/lib/toast/index.d.ts +2 -0
  192. package/dist/lib/toast/index.js +158 -0
  193. package/dist/lib/toast/index.js.map +7 -0
  194. package/dist/lib/toast/toast-manager.d.ts +3 -0
  195. package/dist/lib/toast/toast-types.d.ts +85 -0
  196. package/dist/mcp-data/registry/agent-activity.json +1 -1
  197. package/dist/mcp-data/registry/agent-response.json +3 -3
  198. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  199. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  200. package/dist/mcp-data/registry/app-shell.json +1 -1
  201. package/dist/mcp-data/registry/attachment-list.json +1 -1
  202. package/dist/mcp-data/registry/avatar.json +20 -2
  203. package/dist/mcp-data/registry/badge.json +1 -1
  204. package/dist/mcp-data/registry/bar-nav.json +2 -2
  205. package/dist/mcp-data/registry/button-filled.json +1 -1
  206. package/dist/mcp-data/registry/button-unfilled.json +3 -3
  207. package/dist/mcp-data/registry/card-data-viz-donut.json +2 -2
  208. package/dist/mcp-data/registry/card-setting.json +99 -13
  209. package/dist/mcp-data/registry/card-shell-data-viz.json +8 -8
  210. package/dist/mcp-data/registry/chart-bar.json +1 -1
  211. package/dist/mcp-data/registry/chart-donut.json +1 -1
  212. package/dist/mcp-data/registry/chart-legend.json +1 -1
  213. package/dist/mcp-data/registry/chart-line.json +1 -1
  214. package/dist/mcp-data/registry/checkbox.json +1 -1
  215. package/dist/mcp-data/registry/chip.json +1 -1
  216. package/dist/mcp-data/registry/code-block.json +2 -2
  217. package/dist/mcp-data/registry/conversation-list-item.json +22 -4
  218. package/dist/mcp-data/registry/conversation-list-section.json +2 -2
  219. package/dist/mcp-data/registry/conversation-list.json +2 -2
  220. package/dist/mcp-data/registry/divider.json +5 -5
  221. package/dist/mcp-data/registry/empty-state.json +1 -1
  222. package/dist/mcp-data/registry/field.json +1 -1
  223. package/dist/mcp-data/registry/icon.json +2 -2
  224. package/dist/mcp-data/registry/input.json +1 -1
  225. package/dist/mcp-data/registry/loader.json +1 -1
  226. package/dist/mcp-data/registry/markdown.json +2 -2
  227. package/dist/mcp-data/registry/menu.json +18 -2
  228. package/dist/mcp-data/registry/message-bubble.json +7 -7
  229. package/dist/mcp-data/registry/message-composer.json +3 -3
  230. package/dist/mcp-data/registry/message-scroller.json +3 -3
  231. package/dist/mcp-data/registry/message.json +7 -6
  232. package/dist/mcp-data/registry/modal.json +154 -24
  233. package/dist/mcp-data/registry/panel-nav.json +21 -3
  234. package/dist/mcp-data/registry/panel-sub-nav.json +2 -2
  235. package/dist/mcp-data/registry/panel-tool-header.json +2 -2
  236. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  237. package/dist/mcp-data/registry/panel-tools.json +2 -2
  238. package/dist/mcp-data/registry/radio.json +1 -1
  239. package/dist/mcp-data/registry/registry.json +403 -141
  240. package/dist/mcp-data/registry/select-multi.json +1 -1
  241. package/dist/mcp-data/registry/select.json +1 -1
  242. package/dist/mcp-data/registry/shell-gradient-picker.json +1 -1
  243. package/dist/mcp-data/registry/shell-gradient-swatch.json +1 -1
  244. package/dist/mcp-data/registry/skeleton.json +2 -2
  245. package/dist/mcp-data/registry/slider.json +2 -2
  246. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  247. package/dist/mcp-data/registry/switch.json +2 -2
  248. package/dist/mcp-data/registry/tab-group.json +1 -1
  249. package/dist/mcp-data/registry/tag.json +4 -4
  250. package/dist/mcp-data/registry/text.json +2 -2
  251. package/dist/mcp-data/registry/toast.json +318 -0
  252. package/dist/mcp-data/registry/tooltip-data-viz.json +1 -1
  253. package/dist/mcp-data/registry/tooltip.json +1 -1
  254. package/dist/react/components.d.ts +1 -2
  255. package/dist/react/components.js +1 -2
  256. package/dist/react/ds-card-setting.d.ts +2 -2
  257. package/dist/react/ds-card-setting.js +1 -1
  258. package/dist/react/ds-menu.d.ts +1 -0
  259. package/dist/react/ds-menu.js +1 -0
  260. package/dist/react/ds-modal.d.ts +3 -2
  261. package/dist/react/ds-modal.js +4 -1
  262. package/dist/react/ds-toast.d.ts +14 -0
  263. package/dist/react/ds-toast.js +16 -0
  264. package/dist/types/components/Avatar/Avatar.d.ts +3 -0
  265. package/dist/types/components/BarNav/BarNav.d.ts +2 -0
  266. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +2 -0
  267. package/dist/types/components/CardSetting/CardSetting.d.ts +9 -6
  268. package/dist/types/components/CardSetting/index.d.ts +1 -1
  269. package/dist/types/components/ConversationListItem/ConversationListItem.d.ts +2 -0
  270. package/dist/types/components/Menu/Menu.d.ts +6 -0
  271. package/dist/types/components/MessageBubble/MessageBubble.d.ts +1 -1
  272. package/dist/types/components/MessageScroller/MessageScroller.d.ts +4 -0
  273. package/dist/types/components/Modal/Modal.d.ts +21 -18
  274. package/dist/types/components/PanelNav/PanelNav.d.ts +2 -0
  275. package/dist/types/components/Toast/Toast.d.ts +106 -0
  276. package/dist/types/components/Toast/index.d.ts +2 -0
  277. package/dist/types/components.d.ts +180 -186
  278. package/dist/types/toast/index.d.ts +3 -0
  279. package/dist/types/toast/toast-manager.d.ts +4 -0
  280. package/dist/types/toast/toast-types.d.ts +86 -0
  281. package/package.json +19 -18
  282. package/dist/angular/ds-banner.d.ts +0 -15
  283. package/dist/angular/ds-card.d.ts +0 -12
  284. package/dist/angular/ds-card.js +0 -38
  285. package/dist/components/ds-banner.d.ts +0 -11
  286. package/dist/components/ds-banner.js +0 -2
  287. package/dist/components/ds-banner.js.map +0 -1
  288. package/dist/components/ds-card.js +0 -2
  289. package/dist/components/ds-card.js.map +0 -1
  290. package/dist/components/p-41UAx2eq.js +0 -2
  291. package/dist/components/p-41UAx2eq.js.map +0 -1
  292. package/dist/components/p-B7NbIYjS.js +0 -2
  293. package/dist/components/p-B7NbIYjS.js.map +0 -1
  294. package/dist/components/p-BEQB8EnB.js +0 -2
  295. package/dist/components/p-BEQB8EnB.js.map +0 -1
  296. package/dist/components/p-BFWC17em.js +0 -2
  297. package/dist/components/p-BO6C8abO.js +0 -2
  298. package/dist/components/p-BO6C8abO.js.map +0 -1
  299. package/dist/components/p-CC1C8s6m.js +0 -2
  300. package/dist/components/p-CC1C8s6m.js.map +0 -1
  301. package/dist/components/p-CZMEhdlA.js.map +0 -1
  302. package/dist/components/p-CnM9SW_8.js +0 -2
  303. package/dist/components/p-CnM9SW_8.js.map +0 -1
  304. package/dist/components/p-CuKn9I5f.js +0 -2
  305. package/dist/components/p-CuKn9I5f.js.map +0 -1
  306. package/dist/components/p-DFMM60My.js +0 -2
  307. package/dist/components/p-DFMM60My.js.map +0 -1
  308. package/dist/components/p-DIsDiGcp.js.map +0 -1
  309. package/dist/components/p-Di-ThR90.js.map +0 -1
  310. package/dist/components/p-drBA73M_.js +0 -2
  311. package/dist/components/p-drBA73M_.js.map +0 -1
  312. package/dist/mcp-data/registry/banner.json +0 -206
  313. package/dist/mcp-data/registry/card.json +0 -126
  314. package/dist/react/ds-banner.d.ts +0 -12
  315. package/dist/react/ds-banner.js +0 -12
  316. package/dist/react/ds-card.d.ts +0 -9
  317. package/dist/react/ds-card.js +0 -12
  318. package/dist/types/components/Banner/Banner.d.ts +0 -31
  319. package/dist/types/components/Card/Card.d.ts +0 -21
  320. package/dist/types/components/Card/index.d.ts +0 -2
  321. /package/dist/components/{p-Bo5wikia.js.map → p-0kEg-Z4f.js.map} +0 -0
  322. /package/dist/components/{p-C0sq948W.js.map → p-BTo4pNdp.js.map} +0 -0
  323. /package/dist/components/{p-2br9YDbG.js.map → p-BkwBtZs3.js.map} +0 -0
  324. /package/dist/components/{p-Bx1G7P6W.js.map → p-CPPAndX2.js.map} +0 -0
  325. /package/dist/components/{p-Di4HBckb.js.map → p-CS12e52R.js.map} +0 -0
  326. /package/dist/components/{p-BSOZXagj.js.map → p-CZZYGqKz.js.map} +0 -0
  327. /package/dist/components/{p-t9Ei1kHP.js.map → p-CxyjoTN1.js.map} +0 -0
  328. /package/dist/components/{p--KbMQblZ.js.map → p-Dh4q5TSS.js.map} +0 -0
  329. /package/dist/components/{p-CiwdnKKp.js.map → p-DrDHC7V6.js.map} +0 -0
  330. /package/dist/components/{p-BZAEZENv.js.map → p-DsbhBb5F.js.map} +0 -0
  331. /package/dist/components/{p-B1pWGQn1.js.map → p-P_4vE1ub.js.map} +0 -0
@@ -13,7 +13,7 @@
13
13
  "peerDependencies": {
14
14
  "required": [
15
15
  "@ds-mo/tokens ^3.1.1",
16
- "@ds-mo/icons ^6.2.0"
16
+ "@ds-mo/icons ^6.3.0"
17
17
  ],
18
18
  "optional": [],
19
19
  "frameworks": "None required for Custom Elements; generated React and Angular adapters are included."
@@ -601,6 +601,10 @@
601
601
  "type": "string",
602
602
  "required": false
603
603
  },
604
+ "iconColor": {
605
+ "type": "IconColor",
606
+ "required": false
607
+ },
604
608
  "label": {
605
609
  "type": "string | undefined",
606
610
  "required": false
@@ -760,69 +764,6 @@
760
764
  "text"
761
765
  ]
762
766
  },
763
- {
764
- "name": "banner",
765
- "title": "Banner",
766
- "description": "Intent-colored message bar. Supports floating toast mode with auto-dismiss and fade-out animation.",
767
- "type": "registry:ui",
768
- "meta": {
769
- "library": "@ds-mo/ui",
770
- "distribution": "npm",
771
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/banner",
772
- "source": "src/wc/components/Banner/Banner.tsx",
773
- "intentStatus": "migration-pending",
774
- "intent": null,
775
- "props": {
776
- "contrast": {
777
- "type": "BannerContrast",
778
- "required": false
779
- },
780
- "dismissLabel": {
781
- "type": "string",
782
- "required": false
783
- },
784
- "floating": {
785
- "type": "boolean",
786
- "required": false
787
- },
788
- "header": {
789
- "type": "boolean",
790
- "required": false
791
- },
792
- "intent": {
793
- "type": "BannerIntent",
794
- "required": false
795
- },
796
- "message": {
797
- "type": "string",
798
- "required": false
799
- },
800
- "showDismiss": {
801
- "type": "boolean",
802
- "required": false
803
- }
804
- },
805
- "events": [
806
- {
807
- "name": "dsDismiss",
808
- "detail": "void"
809
- }
810
- ],
811
- "slots": [],
812
- "exports": {
813
- "customElement": "ds-banner",
814
- "react": "DsBanner",
815
- "angular": "DsBanner"
816
- }
817
- },
818
- "dependencies": [
819
- "@ds-mo/ui",
820
- "@ds-mo/tokens"
821
- ],
822
- "registryDependencies": [
823
- "text"
824
- ]
825
- },
826
767
  {
827
768
  "name": "bar-nav",
828
769
  "title": "BarNav",
@@ -1340,48 +1281,6 @@
1340
1281
  "text"
1341
1282
  ]
1342
1283
  },
1343
- {
1344
- "name": "card",
1345
- "title": "Card",
1346
- "description": "General and settings-compatible card chrome — width + matching min-height tokens, header (title + actions slot), and a flex body that fills leftover space.",
1347
- "type": "registry:ui",
1348
- "meta": {
1349
- "library": "@ds-mo/ui",
1350
- "distribution": "npm",
1351
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/card",
1352
- "source": "src/wc/components/Card/Card.tsx",
1353
- "intentStatus": "migration-pending",
1354
- "intent": null,
1355
- "props": {
1356
- "appearance": {
1357
- "type": "CardAppearance",
1358
- "required": false
1359
- },
1360
- "cardWidth": {
1361
- "type": "CardWidth",
1362
- "required": false
1363
- },
1364
- "heading": {
1365
- "type": "string",
1366
- "required": true
1367
- }
1368
- },
1369
- "events": [],
1370
- "slots": [],
1371
- "exports": {
1372
- "customElement": "ds-card",
1373
- "react": "DsCard",
1374
- "angular": "DsCard"
1375
- }
1376
- },
1377
- "dependencies": [
1378
- "@ds-mo/ui",
1379
- "@ds-mo/tokens"
1380
- ],
1381
- "registryDependencies": [
1382
- "text"
1383
- ]
1384
- },
1385
1284
  {
1386
1285
  "name": "card-data-viz-donut",
1387
1286
  "title": "CardDataVizDonut",
@@ -1433,15 +1332,101 @@
1433
1332
  {
1434
1333
  "name": "card-setting",
1435
1334
  "title": "CardSetting",
1436
- "description": "Settings page section shell composed on ds-card with view/edit header actions. Edit state is controlled by the parent.",
1335
+ "description": "Persistent settings-section surface with a heading, controlled view/edit chrome, fixed edit-save-cancel actions, and application-owned body content.",
1437
1336
  "type": "registry:ui",
1438
1337
  "meta": {
1439
1338
  "library": "@ds-mo/ui",
1440
1339
  "distribution": "npm",
1441
1340
  "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-setting",
1442
1341
  "source": "src/wc/components/CardSetting/CardSetting.tsx",
1443
- "intentStatus": "migration-pending",
1444
- "intent": null,
1342
+ "intentStatus": "complete",
1343
+ "intent": {
1344
+ "audience": "general",
1345
+ "status": "stable",
1346
+ "summary": "Persistent settings-section surface with a heading, controlled view/edit chrome, fixed edit-save-cancel actions, and application-owned body content.",
1347
+ "useWhen": [
1348
+ "A settings page needs a persistent section that switches between read-only and editable content.",
1349
+ "The parent can control one active editing section and owns validation, persistence, cancellation, and body content.",
1350
+ "The section uses the standard Pencil, Save, and Cancel header workflow."
1351
+ ],
1352
+ "avoidWhen": [
1353
+ "The surface contains a chart, legend, metric visualization, or other data-visualization composition.",
1354
+ "The content is a general-purpose read-only card with no settings edit workflow.",
1355
+ "The task must block the rest of the interface or requires confirmation in a modal.",
1356
+ "Several sections must remain editable at the same time.",
1357
+ "The header requires custom actions beyond the fixed edit-save-cancel workflow."
1358
+ ],
1359
+ "alternatives": [
1360
+ {
1361
+ "when": "The surface contains a chart or specialized data-visualization composition.",
1362
+ "component": "component:ds-card-shell-data-viz",
1363
+ "reason": "CardShellDataViz owns the independently evolving data-visualization shell contract."
1364
+ },
1365
+ {
1366
+ "when": "The task must block the interface for one focused decision or short workflow.",
1367
+ "component": "component:ds-modal",
1368
+ "reason": "Modal provides top-layer focus containment and explicit blocking-task dismissal."
1369
+ },
1370
+ {
1371
+ "when": "Only one labeled form control is needed without a section surface.",
1372
+ "component": "component:ds-field",
1373
+ "reason": "Field provides the control label, supporting copy, and validation relationship without card chrome."
1374
+ }
1375
+ ],
1376
+ "commonlyComposedWith": [
1377
+ "component:ds-field",
1378
+ "component:ds-input",
1379
+ "component:ds-select",
1380
+ "component:ds-switch",
1381
+ "component:ds-text"
1382
+ ],
1383
+ "accessibility": [
1384
+ "Provide a concise heading that identifies the settings section; CardSetting renders it as an h2.",
1385
+ "Edit, Save, and Cancel are icon-only controls with localized accessible labels supplied by the matching label props. When several sections share a page, include the section name in each label.",
1386
+ "The owner must expose persistent field labels, descriptions, and validation messages inside the body.",
1387
+ "Save must not remove validation errors or exit editing until the parent accepts the action and updates the controlled editing state.",
1388
+ "Cancel must restore or retain the last persisted values according to product policy before the parent exits editing.",
1389
+ "Keep only one CardSetting in edit mode so keyboard and screen-reader users have one unambiguous set of Save and Cancel actions.",
1390
+ "When another section requests editing, resolve dirty changes in the current section before switching; never silently discard user input."
1391
+ ],
1392
+ "states": [
1393
+ "The editing property is controlled; CardSetting never changes it internally.",
1394
+ "dsAction emits edit, save, or cancel with the original pointer event. The parent decides whether and when editing changes.",
1395
+ "When another section requests edit, the parent keeps one active section and resolves any dirty current section before switching.",
1396
+ "The parent owns read-only versus editable body composition, dirty state, validation, persistence, loading, success, and error consequences.",
1397
+ "A save request keeps the section editing while validation or persistence is pending; the parent exits only after success.",
1398
+ "A cancel request does not persist changes; the parent restores its chosen value snapshot and exits editing."
1399
+ ],
1400
+ "responsiveBehavior": [
1401
+ "Choose sm, md, or lg from the parent layout; each width uses its matching token-based minimum height.",
1402
+ "The surface never exceeds its parent width, while the parent owns wrapping, columns, stacking, and breakpoint changes.",
1403
+ "At narrow widths, keep the fixed header actions visible and let application-owned body layouts collapse before allowing horizontal overflow."
1404
+ ],
1405
+ "frameworkCaveats": {
1406
+ "customElements": [
1407
+ "Set editing as a JavaScript property and inspect dsAction.detail.action before updating the controlled state.",
1408
+ "When one section emits edit, update every sibling CardSetting so only the requested section remains editing."
1409
+ ],
1410
+ "react": [
1411
+ "Pass editing from parent state and inspect onDsAction event detail; do not treat Save as successful until validation and persistence complete.",
1412
+ "Store one active section id and derive each CardSetting editing prop from that id."
1413
+ ],
1414
+ "angular": [
1415
+ "Bind [editing] and inspect $event.detail.action from (dsAction); do not treat Save as successful until validation and persistence complete.",
1416
+ "Store one active section id and derive each CardSetting editing binding from that id."
1417
+ ]
1418
+ },
1419
+ "references": [
1420
+ {
1421
+ "label": "Storybook controlled and single-edit examples",
1422
+ "path": "src/wc/components/CardSetting/CardSetting.stories.ts"
1423
+ },
1424
+ {
1425
+ "label": "Cross-browser shell and action coverage",
1426
+ "path": "tests/e2e/card-setting.spec.ts"
1427
+ }
1428
+ ]
1429
+ },
1445
1430
  "props": {
1446
1431
  "cancelLabel": {
1447
1432
  "type": "string",
@@ -1470,8 +1455,8 @@
1470
1455
  },
1471
1456
  "events": [
1472
1457
  {
1473
- "name": "dsEditingChange",
1474
- "detail": "boolean"
1458
+ "name": "dsAction",
1459
+ "detail": "CardSettingActionDetail"
1475
1460
  }
1476
1461
  ],
1477
1462
  "slots": [],
@@ -1488,13 +1473,13 @@
1488
1473
  "registryDependencies": [
1489
1474
  "button-filled",
1490
1475
  "button-unfilled",
1491
- "card"
1476
+ "text"
1492
1477
  ]
1493
1478
  },
1494
1479
  {
1495
1480
  "name": "card-shell-data-viz",
1496
1481
  "title": "CardShellDataViz",
1497
- "description": "Dedicated header, action, sizing, and body chrome for data-visualization cards whose layouts will evolve independently from general and settings cards.",
1482
+ "description": "Dedicated header, action, sizing, and body chrome for data-visualization cards whose layouts evolve independently from settings sections.",
1498
1483
  "type": "registry:ui",
1499
1484
  "meta": {
1500
1485
  "library": "@ds-mo/ui",
@@ -1505,22 +1490,22 @@
1505
1490
  "intent": {
1506
1491
  "audience": "specialized",
1507
1492
  "status": "experimental",
1508
- "summary": "Dedicated header, action, sizing, and body chrome for data-visualization cards whose layouts will evolve independently from general and settings cards.",
1493
+ "summary": "Dedicated header, action, sizing, and body chrome for data-visualization cards whose layouts evolve independently from settings sections.",
1509
1494
  "useWhen": [
1510
1495
  "A card contains a chart, data-visualization legend, metric visualization, or a specialized data-viz composition.",
1511
1496
  "A data-visualization card needs a heading and optional header actions while retaining a flexible body for its composing component.",
1512
- "Several chart-specific cards need one shell boundary that can evolve without changing general or settings cards."
1497
+ "Several chart-specific cards need one shell boundary that can evolve without changing settings sections."
1513
1498
  ],
1514
1499
  "avoidWhen": [
1515
1500
  "The card contains settings or editable form content; use the settings card composition.",
1516
- "The surface is ordinary content without data visualization; use the general card shell.",
1501
+ "The surface is ordinary content without data visualization; use a product-owned layout rather than data-viz card chrome.",
1517
1502
  "The shell would own chart-specific layout, hover synchronization, legends, or empty-state policy; keep those in the composing data-viz card."
1518
1503
  ],
1519
1504
  "alternatives": [
1520
1505
  {
1521
- "when": "The card contains general content rather than data visualization.",
1522
- "component": "component:ds-card",
1523
- "reason": "Card owns the existing general and settings-compatible chrome contract."
1506
+ "when": "The surface contains editable settings rather than data visualization.",
1507
+ "component": "component:ds-card-setting",
1508
+ "reason": "CardSetting owns the persistent controlled settings-section workflow."
1524
1509
  },
1525
1510
  {
1526
1511
  "when": "The composition is the standard donut chart plus synchronized legend.",
@@ -2272,7 +2257,7 @@
2272
2257
  ],
2273
2258
  "states": [
2274
2259
  "Rows reuse the md choice-item label/subtext recipe used by Menu, including 6px row padding, 2px text inset, and the shared content gap. The enclosing conversation-list scroll region supplies the larger 8px outer container padding.",
2275
- "Busy and error are generic channel-neutral states; the owning product supplies suitable status wording.",
2260
+ "Busy and error are generic channel-neutral states; the owning product supplies suitable status wording. A busy row pairs its body-small status with the sm 16px Loader at an 8px gap.",
2276
2261
  "Any positive unreadCount renders one dot on the title row rather than a visible counter; the accessible row name may still announce the exact unread quantity.",
2277
2262
  "Hover and press use the shared interaction hover and pressed overlays. Only the selected conversation uses the persistent active fill.",
2278
2263
  "The title uses body-medium emphasis, not title-small, and the body-small preview truncates after one line. Unread titles use primary foreground; read titles use secondary foreground.",
@@ -2289,6 +2274,10 @@
2289
2274
  ]
2290
2275
  },
2291
2276
  "props": {
2277
+ "actionsOpen": {
2278
+ "type": "boolean",
2279
+ "required": false
2280
+ },
2292
2281
  "conversationId": {
2293
2282
  "type": "string",
2294
2283
  "required": false
@@ -2440,9 +2429,9 @@
2440
2429
  ],
2441
2430
  "alternatives": [
2442
2431
  {
2443
- "when": "Content needs an enclosing surface and outer boundary.",
2444
- "component": "component:ds-card",
2445
- "reason": "Card owns container chrome, structure, and edge treatment."
2432
+ "when": "Editable settings need an enclosing section surface and outer boundary.",
2433
+ "component": "component:ds-card-setting",
2434
+ "reason": "CardSetting owns settings-section chrome, structure, and edge treatment."
2446
2435
  },
2447
2436
  {
2448
2437
  "when": "A static compact label is being used to name a group.",
@@ -2451,7 +2440,7 @@
2451
2440
  }
2452
2441
  ],
2453
2442
  "commonlyComposedWith": [
2454
- "component:ds-card",
2443
+ "component:ds-card-setting",
2455
2444
  "component:ds-menu",
2456
2445
  "component:ds-panel-sub-nav"
2457
2446
  ],
@@ -3440,6 +3429,10 @@
3440
3429
  }
3441
3430
  },
3442
3431
  "events": [
3432
+ {
3433
+ "name": "dsAfterClose",
3434
+ "detail": "void"
3435
+ },
3443
3436
  {
3444
3437
  "name": "dsClose",
3445
3438
  "detail": "void"
@@ -3478,7 +3471,7 @@
3478
3471
  {
3479
3472
  "name": "message",
3480
3473
  "title": "Message",
3481
- "description": "Channel-neutral message row owning direction, grouping, author, time, delivery metadata, and accessory regions.",
3474
+ "description": "Channel-neutral message row owning direction, grouping, author, time, delivery metadata, and header, footer, or action accessory regions.",
3482
3475
  "type": "registry:ui",
3483
3476
  "meta": {
3484
3477
  "library": "@ds-mo/ui",
@@ -3489,7 +3482,7 @@
3489
3482
  "intent": {
3490
3483
  "audience": "general",
3491
3484
  "status": "experimental",
3492
- "summary": "Channel-neutral message row owning direction, grouping, author, time, delivery metadata, and accessory regions.",
3485
+ "summary": "Channel-neutral message row owning direction, grouping, author, time, delivery metadata, and header, footer, or action accessory regions.",
3493
3486
  "useWhen": [
3494
3487
  "A transcript contains messages that need consistent incoming, outgoing, or system layout."
3495
3488
  ],
@@ -3505,10 +3498,11 @@
3505
3498
  ],
3506
3499
  "accessibility": [
3507
3500
  "Author and time metadata remain textual when they are necessary to interpret the transcript.",
3508
- "Delivery failure must be expressed in text rather than color alone."
3501
+ "Delivery failure uses negative Failed to send text in the footer while the message bubble keeps its normal outgoing treatment."
3509
3502
  ],
3510
3503
  "states": [
3511
3504
  "Pass an ISO timestamp. Message keeps the full value in dateTime and formats the visible value as a localized time; applications must not render a raw ISO string as visible transcript metadata.",
3505
+ "Visible author, bubble content, and timestamp or delivery footer use consistent 4px vertical gaps.",
3512
3506
  "Grouping joins adjacent bubble corners, shows the incoming author only at the start, and shows delivery/time metadata only at the end. Outgoing author remains in the accessible message label without repeating a visible You label.",
3513
3507
  "Set showAuthor false only when the product makes participant and assistant roles visually self-evident; continue passing author so the accessible message label remains specific."
3514
3508
  ],
@@ -3592,7 +3586,7 @@
3592
3586
  "status": "experimental",
3593
3587
  "summary": "Visible message content surface with a body-medium default, separated from message-row direction and metadata.",
3594
3588
  "useWhen": [
3595
- "Message content needs a primary, secondary, ghost, or error surface within a Message row.",
3589
+ "Message content needs a primary, secondary, or ghost surface within a Message row.",
3596
3590
  "Plain incoming or outgoing message copy should use the shared body-medium regular typography recipe without application styling."
3597
3591
  ],
3598
3592
  "avoidWhen": [
@@ -3607,7 +3601,7 @@
3607
3601
  "pattern:conversation"
3608
3602
  ],
3609
3603
  "accessibility": [
3610
- "Surface styling does not add semantics; meaningful error or status copy belongs in message content or metadata."
3604
+ "Surface styling does not add semantics; failed delivery belongs in Message metadata below the unchanged bubble rather than in an error bubble treatment."
3611
3605
  ],
3612
3606
  "responsiveBehavior": [
3613
3607
  "The bubble wraps content and allows wide ghost responses to use more transcript width."
@@ -3838,16 +3832,117 @@
3838
3832
  {
3839
3833
  "name": "modal",
3840
3834
  "title": "Modal",
3841
- "description": "Dialog overlay with portal rendering, escape-to-close, backdrop click, focus management, and entry/exit animations.",
3835
+ "description": "Dismissible native top-layer dialog for a focused confirmation or short blocking task, with a fixed title-and-close header, composable content, and an optional two-action footer.",
3842
3836
  "type": "registry:ui",
3843
3837
  "meta": {
3844
3838
  "library": "@ds-mo/ui",
3845
3839
  "distribution": "npm",
3846
3840
  "storybook": "https://zainadeel.github.io/compomo/?path=/story/modal",
3847
3841
  "source": "src/wc/components/Modal/Modal.tsx",
3848
- "intentStatus": "migration-pending",
3849
- "intent": null,
3842
+ "intentStatus": "complete",
3843
+ "intent": {
3844
+ "audience": "general",
3845
+ "status": "stable",
3846
+ "summary": "Dismissible native top-layer dialog for a focused confirmation or short blocking task, with a fixed title-and-close header, composable content, and an optional two-action footer.",
3847
+ "useWhen": [
3848
+ "The user must confirm or cancel one focused decision before returning to the underlying interface.",
3849
+ "A short blocking task or compact form needs dialog semantics, focus containment, and explicit completion actions.",
3850
+ "The content can be safely dismissed through Close, Escape, or the backdrop."
3851
+ ],
3852
+ "avoidWhen": [
3853
+ "The message is non-blocking feedback or a transient status update.",
3854
+ "The interaction is a contextual list of commands anchored to a trigger.",
3855
+ "The workflow is multi-step, long-form, or requires substantial navigation.",
3856
+ "Dismissal would lose work or leave an irreversible operation in an unsafe state.",
3857
+ "A second modal would be opened over an existing modal."
3858
+ ],
3859
+ "alternatives": [
3860
+ {
3861
+ "when": "The user needs non-blocking feedback or a transient status message.",
3862
+ "component": "component:ds-toast",
3863
+ "reason": "Toast communicates transient status without trapping focus or blocking the page."
3864
+ },
3865
+ {
3866
+ "when": "A trigger reveals a short contextual list of commands.",
3867
+ "component": "component:ds-menu",
3868
+ "reason": "Menu provides anchored command semantics without creating a blocking dialog."
3869
+ },
3870
+ {
3871
+ "when": "Editable settings should remain visible without blocking the rest of the interface.",
3872
+ "component": "component:ds-card-setting",
3873
+ "reason": "CardSetting provides a persistent controlled settings workflow without modal focus containment."
3874
+ }
3875
+ ],
3876
+ "commonlyComposedWith": [
3877
+ "component:ds-button-filled",
3878
+ "component:ds-button-unfilled",
3879
+ "component:ds-field",
3880
+ "component:ds-text"
3881
+ ],
3882
+ "accessibility": [
3883
+ "Provide a concise visible heading; the component uses it as the dialog's accessible name.",
3884
+ "Give the primary explanatory copy a stable id and pass it through aria-describedby so assistive technology receives the decision context.",
3885
+ "Opening the native modal dialog moves focus to the header Close action, traps Tab navigation inside the top layer, and makes outside content inert.",
3886
+ "Close, Escape, and backdrop activation emit dsClose with close-button, escape, or backdrop reason before beginning dismissal; use the component only when every dismissal path is safe.",
3887
+ "After exit motion completes, the native dialog leaves the top layer, focus returns to the previously focused element, and dsAfterClose emits.",
3888
+ "Use visible label-only footer buttons. Keep at most two actions: one bold filled primary action followed by one bordered unfilled action, or two bordered unfilled actions.",
3889
+ "Use negative intent for a filled destructive action and state the irreversible consequence in the content.",
3890
+ "Do not open a modal from another modal; keep one blocking decision in focus at a time."
3891
+ ],
3892
+ "states": [
3893
+ "The owner opens the modal through the open property and responds to the typed dsClose detail for application state synchronization or dismissal analytics.",
3894
+ "The component mutates open to false for Close, Escape, and backdrop dismissal while retaining its rendered surface through exit motion.",
3895
+ "The default slot owns task content; the named footer slot is optional and is hidden when no actions are assigned.",
3896
+ "Primary actions use a bold filled button with semantic intent. Secondary and cancel actions use bordered label-only unfilled buttons.",
3897
+ "The owner performs save, delete, cancel, and other product consequences before or while closing the modal."
3898
+ ],
3899
+ "responsiveBehavior": [
3900
+ "Choose the smallest sm, md, or lg width that fits the focused task; the top-layer dialog clamps to the viewport with token-based outer space.",
3901
+ "Content scrolls independently when needed while the 64px header and optional 64px footer remain fixed.",
3902
+ "Avoid layouts whose minimum content width exceeds the narrow viewport clamp.",
3903
+ "The native top layer escapes transformed ancestors, clipping containers, and application stacking contexts without moving slotted content."
3904
+ ],
3905
+ "frameworkCaveats": {
3906
+ "customElements": [
3907
+ "Set open as a JavaScript property when controlling the modal; inspect dsClose.detail.reason and use dsAfterClose for cleanup that must wait for exit motion and focus restoration.",
3908
+ "Connect the most relevant slotted explanatory text through aria-describedby.",
3909
+ "Footer actions are slotted application-owned controls and must implement their own product consequence."
3910
+ ],
3911
+ "react": [
3912
+ "Pass open to DsModal, inspect onDsClose event detail, and use onDsAfterClose only for cleanup after exit motion and focus restoration.",
3913
+ "Connect the most relevant slotted explanatory text through aria-describedby.",
3914
+ "Assign footer controls with slot=\"footer\" and handle each action before updating open."
3915
+ ],
3916
+ "angular": [
3917
+ "Bind [open], inspect $event.detail from (dsClose), and use (dsAfterClose) only for cleanup after exit motion and focus restoration.",
3918
+ "Connect the most relevant slotted explanatory text through aria-describedby.",
3919
+ "Assign footer controls with slot=\"footer\" and handle each action before updating open."
3920
+ ]
3921
+ },
3922
+ "references": [
3923
+ {
3924
+ "label": "Storybook confirmation and footer examples",
3925
+ "path": "src/wc/components/Modal/Modal.stories.ts"
3926
+ },
3927
+ {
3928
+ "label": "Cross-browser focus, dismissal, geometry, and accessibility coverage",
3929
+ "path": "tests/e2e/accessibility-overlays.spec.ts"
3930
+ },
3931
+ {
3932
+ "label": "Reduced-motion overlay coverage",
3933
+ "path": "tests/e2e/reduced-motion.spec.ts"
3934
+ }
3935
+ ]
3936
+ },
3850
3937
  "props": {
3938
+ "ariaDescribedby": {
3939
+ "type": "string | undefined",
3940
+ "required": false
3941
+ },
3942
+ "closeAriaLabel": {
3943
+ "type": "string",
3944
+ "required": false
3945
+ },
3851
3946
  "heading": {
3852
3947
  "type": "string",
3853
3948
  "required": true
@@ -3859,16 +3954,16 @@
3859
3954
  "open": {
3860
3955
  "type": "boolean",
3861
3956
  "required": false
3862
- },
3863
- "subtitle": {
3864
- "type": "string | undefined",
3865
- "required": false
3866
3957
  }
3867
3958
  },
3868
3959
  "events": [
3869
3960
  {
3870
- "name": "dsClose",
3961
+ "name": "dsAfterClose",
3871
3962
  "detail": "void"
3963
+ },
3964
+ {
3965
+ "name": "dsClose",
3966
+ "detail": "ModalCloseDetail"
3872
3967
  }
3873
3968
  ],
3874
3969
  "slots": [],
@@ -3883,6 +3978,7 @@
3883
3978
  "@ds-mo/tokens"
3884
3979
  ],
3885
3980
  "registryDependencies": [
3981
+ "button-unfilled",
3886
3982
  "text"
3887
3983
  ]
3888
3984
  },
@@ -4000,6 +4096,10 @@
4000
4096
  "type": "string",
4001
4097
  "required": false
4002
4098
  },
4099
+ "accountMenuExpanded": {
4100
+ "type": "boolean",
4101
+ "required": false
4102
+ },
4003
4103
  "activeId": {
4004
4104
  "type": "string",
4005
4105
  "required": false
@@ -4168,7 +4268,7 @@
4168
4268
  }
4169
4269
  ],
4170
4270
  "commonlyComposedWith": [
4171
- "component:ds-card",
4271
+ "component:ds-card-setting",
4172
4272
  "component:ds-text"
4173
4273
  ],
4174
4274
  "accessibility": [
@@ -5661,7 +5761,7 @@
5661
5761
  }
5662
5762
  ],
5663
5763
  "commonlyComposedWith": [
5664
- "component:ds-card",
5764
+ "component:ds-card-setting",
5665
5765
  "component:ds-text",
5666
5766
  "component:ds-icon"
5667
5767
  ],
@@ -6442,7 +6542,7 @@
6442
6542
  }
6443
6543
  ],
6444
6544
  "commonlyComposedWith": [
6445
- "component:ds-card",
6545
+ "component:ds-card-setting",
6446
6546
  "component:ds-text",
6447
6547
  "component:ds-icon",
6448
6548
  "component:ds-menu"
@@ -6596,7 +6696,7 @@
6596
6696
  ],
6597
6697
  "commonlyComposedWith": [
6598
6698
  "component:ds-icon",
6599
- "component:ds-card",
6699
+ "component:ds-card-setting",
6600
6700
  "component:ds-field",
6601
6701
  "component:ds-button-filled"
6602
6702
  ],
@@ -6714,6 +6814,168 @@
6714
6814
  ],
6715
6815
  "registryDependencies": []
6716
6816
  },
6817
+ {
6818
+ "name": "toast",
6819
+ "title": "Toast",
6820
+ "description": "Application-level floating notification system with a global manager, queued bottom-end stack, anchored feedback, actions, promise states, priority announcements, pauseable timers, keyboard access, and swipe dismissal.",
6821
+ "type": "registry:ui",
6822
+ "meta": {
6823
+ "library": "@ds-mo/ui",
6824
+ "distribution": "npm",
6825
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/toast",
6826
+ "source": "src/wc/components/Toast/Toast.tsx",
6827
+ "intentStatus": "complete",
6828
+ "intent": {
6829
+ "audience": "general",
6830
+ "status": "stable",
6831
+ "summary": "Application-level floating notification system with a global manager, queued bottom-end stack, anchored feedback, actions, promise states, priority announcements, pauseable timers, keyboard access, and swipe dismissal.",
6832
+ "useWhen": [
6833
+ "A completed or failed operation needs brief non-blocking feedback without moving page content.",
6834
+ "An application needs one coordinated notification queue that can be triggered outside the current component tree.",
6835
+ "A short-lived undo or recovery action belongs directly with transient feedback.",
6836
+ "Contextual feedback such as Copy confirmation should appear near the control that caused it."
6837
+ ],
6838
+ "avoidWhen": [
6839
+ "The message must remain visible as part of page content or contains information users need later.",
6840
+ "The user must make a decision before continuing; use Modal for a blocking workflow.",
6841
+ "Validation belongs to a specific field or form section; keep the error adjacent to that content.",
6842
+ "The notification would contain long prose, several actions, navigation, or a complete workflow.",
6843
+ "Repeated background events would create a noisy stream instead of one updated or deduplicated toast."
6844
+ ],
6845
+ "alternatives": [
6846
+ {
6847
+ "when": "The user must respond before continuing or an irreversible action needs confirmation.",
6848
+ "component": "component:ds-modal",
6849
+ "reason": "Modal owns blocking focus containment and explicit decision actions."
6850
+ },
6851
+ {
6852
+ "when": "A form control needs persistent validation or supporting guidance.",
6853
+ "component": "component:ds-field",
6854
+ "reason": "Field keeps actionable feedback associated with the control that needs correction."
6855
+ },
6856
+ {
6857
+ "when": "A compact status must remain visible in the page hierarchy.",
6858
+ "component": "component:ds-tag",
6859
+ "reason": "Tag represents persistent static metadata rather than transient feedback."
6860
+ }
6861
+ ],
6862
+ "commonlyComposedWith": [
6863
+ "component:ds-button-filled",
6864
+ "component:ds-button-unfilled",
6865
+ "component:ds-modal",
6866
+ "component:ds-field"
6867
+ ],
6868
+ "accessibility": [
6869
+ "Mount one ds-toast near the application root. New notifications never move focus.",
6870
+ "Provide a concise title, description, or both. Do not place the only recovery instructions in an automatically expiring toast.",
6871
+ "Use low priority for ordinary feedback. Reserve high priority for urgent interruptions that warrant assertive announcement.",
6872
+ "F6 moves focus into the Notifications region; Escape dismisses the focused toast and focus returns to a surviving toast or the previous control.",
6873
+ "Timers pause while users hover, focus, swipe, or leave the document, preserving the remaining reading time.",
6874
+ "Use timeout 0 for feedback that must remain until explicitly dismissed. Keep action labels concise and uniquely understandable.",
6875
+ "Anchored feedback supplements the triggering control but does not replace its accessible name, state, or persistent result.",
6876
+ "Do not include secrets, customer PII, or sensitive operational details in transient notification text."
6877
+ ],
6878
+ "states": [
6879
+ "The manager owns add, ID-based upsert, update, close, closeAll, and promise transitions. The component renders the manager snapshot.",
6880
+ "Loading promise records remain persistent until the same id updates to success or error and begins its resulting timeout.",
6881
+ "Only the newest records up to the limit are visible in the global stack. The collapsed trail insets each successive toast by 8px per side; hover or keyboard focus expands all visible records to full width. Older records remain mounted and inert until promoted.",
6882
+ "All timers pause together on hover, focus, touch swipe, window blur, or hidden-document state and resume from their exact remainder.",
6883
+ "Closing records remain rendered through exit motion before removal callbacks and dsToastRemove.",
6884
+ "One optional bordered unfilled action sits below the text at bottom-left, emits dsToastAction, and runs the supplied callback without dismissing automatically.",
6885
+ "Swipe state exposes movement and direction hooks; down and right are the default dismissal directions.",
6886
+ "Anchored records use trigger-relative positioning and do not consume the global stack limit."
6887
+ ],
6888
+ "responsiveBehavior": [
6889
+ "The global stack stays at the viewport bottom-end with token-based inset and never exceeds the available viewport width.",
6890
+ "Anchored toasts flip on their placement axis and clamp to viewport padding when the preferred side does not fit.",
6891
+ "The owner does not create separate mobile and desktop managers; one queue preserves ordering across responsive layouts.",
6892
+ "Pointer swipe remains optional input. Close and action controls retain keyboard access through the notification region."
6893
+ ],
6894
+ "frameworkCaveats": {
6895
+ "customElements": [
6896
+ "Import ds-toast once and call toastManager from @ds-mo/ui/toast. Assign a custom manager and swipeDirections through JavaScript properties.",
6897
+ "Mount one ds-toast per manager; a second connected viewport for the same manager remains inactive."
6898
+ ],
6899
+ "react": [
6900
+ "Render one DsToast near the application root and import toastManager or createToastManager from @ds-mo/ui/toast.",
6901
+ "Pass custom manager, action callbacks, data, positioner anchors, and swipe directions as properties rather than string attributes."
6902
+ ],
6903
+ "angular": [
6904
+ "Import DsToast once near the application root and import toastManager or createToastManager from @ds-mo/ui/toast.",
6905
+ "Use property binding for manager, action callbacks, data, positioner anchors, and swipeDirections."
6906
+ ]
6907
+ },
6908
+ "references": [
6909
+ {
6910
+ "label": "Storybook examples",
6911
+ "path": "src/wc/components/Toast/Toast.stories.ts"
6912
+ },
6913
+ {
6914
+ "label": "Manager unit coverage",
6915
+ "path": "tests/toast-manager.test.ts"
6916
+ },
6917
+ {
6918
+ "label": "Cross-browser behavior coverage",
6919
+ "path": "tests/e2e/toast.spec.ts"
6920
+ }
6921
+ ]
6922
+ },
6923
+ "props": {
6924
+ "closeLabel": {
6925
+ "type": "string",
6926
+ "required": false
6927
+ },
6928
+ "label": {
6929
+ "type": "string",
6930
+ "required": false
6931
+ },
6932
+ "limit": {
6933
+ "type": "number",
6934
+ "required": false
6935
+ },
6936
+ "manager": {
6937
+ "type": "ToastManager",
6938
+ "required": false
6939
+ },
6940
+ "swipeDirections": {
6941
+ "type": "ToastSwipeDirection[]",
6942
+ "required": false
6943
+ },
6944
+ "timeout": {
6945
+ "type": "number | string",
6946
+ "required": false
6947
+ }
6948
+ },
6949
+ "events": [
6950
+ {
6951
+ "name": "dsToastAction",
6952
+ "detail": "ToastActionEventDetail"
6953
+ },
6954
+ {
6955
+ "name": "dsToastClose",
6956
+ "detail": "ToastCloseEventDetail"
6957
+ },
6958
+ {
6959
+ "name": "dsToastRemove",
6960
+ "detail": "ToastEventDetail"
6961
+ }
6962
+ ],
6963
+ "slots": [],
6964
+ "exports": {
6965
+ "customElement": "ds-toast",
6966
+ "react": "DsToast",
6967
+ "angular": "DsToast"
6968
+ }
6969
+ },
6970
+ "dependencies": [
6971
+ "@ds-mo/ui",
6972
+ "@ds-mo/tokens"
6973
+ ],
6974
+ "registryDependencies": [
6975
+ "button-unfilled",
6976
+ "text"
6977
+ ]
6978
+ },
6717
6979
  {
6718
6980
  "name": "tooltip",
6719
6981
  "title": "Tooltip",