@ds-mo/ui 12.9.0 → 13.1.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 (470) hide show
  1. package/README.md +1 -0
  2. package/dist/.package-ready.json +1 -0
  3. package/dist/agent-patterns.json +124 -135
  4. package/dist/agent.json +249 -1108
  5. package/dist/angular/ds-bar-nav.d.ts +1 -1
  6. package/dist/angular/ds-bar-nav.js +3 -3
  7. package/dist/angular/ds-button-filled.d.ts +1 -1
  8. package/dist/angular/ds-button-filled.js +3 -3
  9. package/dist/angular/ds-card-data-viz.d.ts +18 -0
  10. package/dist/angular/{ds-card-data-viz-donut.js → ds-card-data-viz.js} +12 -12
  11. package/dist/angular/ds-card-overview.d.ts +1 -1
  12. package/dist/angular/ds-card-overview.js +3 -3
  13. package/dist/angular/ds-chart-bar.d.ts +1 -1
  14. package/dist/angular/ds-chart-bar.js +3 -3
  15. package/dist/angular/ds-menu.d.ts +1 -7
  16. package/dist/angular/ds-menu.js +2 -5
  17. package/dist/angular/ds-mobile-header.d.ts +1 -1
  18. package/dist/angular/ds-mobile-header.js +3 -3
  19. package/dist/angular/ds-mobile-section-switcher.d.ts +1 -1
  20. package/dist/angular/ds-mobile-section-switcher.js +3 -3
  21. package/dist/angular/ds-panel-tools.d.ts +1 -1
  22. package/dist/angular/ds-panel-tools.js +3 -3
  23. package/dist/angular/ds-select.d.ts +5 -4
  24. package/dist/angular/ds-select.js +3 -3
  25. package/dist/angular/ds-shell-app.d.ts +90 -1
  26. package/dist/angular/ds-shell-app.js +44 -4
  27. package/dist/angular/ds-shell-tools.d.ts +1 -1
  28. package/dist/angular/ds-shell-tools.js +3 -3
  29. package/dist/angular/index.d.ts +1 -1
  30. package/dist/angular/index.js +1 -8
  31. package/dist/angular/proxies.d.ts +1 -8
  32. package/dist/angular/proxies.js +1 -8
  33. package/dist/components/ds-agent-activity.js +1 -1
  34. package/dist/components/ds-agent-response.js +1 -1
  35. package/dist/components/ds-agent-source-list.js +1 -1
  36. package/dist/components/ds-agent-tool-call.js +1 -1
  37. package/dist/components/ds-attachment-list.js +1 -1
  38. package/dist/components/ds-badge.js +1 -1
  39. package/dist/components/ds-bar-nav.js +1 -1
  40. package/dist/components/ds-bar-nav.js.map +1 -1
  41. package/dist/components/ds-bar-title.js +1 -1
  42. package/dist/components/ds-bar-title.js.map +1 -1
  43. package/dist/components/ds-bar-workflow.js +1 -1
  44. package/dist/components/ds-breadcrumb.js +1 -1
  45. package/dist/components/ds-button-filled.js +1 -1
  46. package/dist/components/ds-button-unfilled.js +1 -1
  47. package/dist/components/{ds-select-multi.d.ts → ds-card-data-viz.d.ts} +4 -4
  48. package/dist/components/ds-card-data-viz.js +2 -0
  49. package/dist/components/ds-card-data-viz.js.map +1 -0
  50. package/dist/components/ds-card-overview.js +1 -1
  51. package/dist/components/ds-card-overview.js.map +1 -1
  52. package/dist/components/ds-card-setting.js +1 -1
  53. package/dist/components/ds-chart-bar.js +1 -1
  54. package/dist/components/ds-chart-bar.js.map +1 -1
  55. package/dist/components/ds-chart-donut.js +1 -1
  56. package/dist/components/ds-chart-donut.js.map +1 -1
  57. package/dist/components/ds-chart-legend.js +1 -1
  58. package/dist/components/ds-chart-legend.js.map +1 -1
  59. package/dist/components/ds-chart-line.js +1 -1
  60. package/dist/components/ds-chart-line.js.map +1 -1
  61. package/dist/components/ds-checkbox.js +1 -1
  62. package/dist/components/ds-chip.js +1 -1
  63. package/dist/components/ds-chip.js.map +1 -1
  64. package/dist/components/ds-code-block.js +1 -1
  65. package/dist/components/ds-conversation-list-item.js +1 -1
  66. package/dist/components/ds-conversation-list-item.js.map +1 -1
  67. package/dist/components/ds-conversation-list-section.js +1 -1
  68. package/dist/components/ds-conversation-list.js +1 -1
  69. package/dist/components/ds-divider.js +1 -1
  70. package/dist/components/ds-empty-state.js +1 -1
  71. package/dist/components/ds-field.js +1 -1
  72. package/dist/components/ds-input.js +1 -1
  73. package/dist/components/ds-input.js.map +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-bubble.js +1 -1
  77. package/dist/components/ds-message-composer.js +1 -1
  78. package/dist/components/ds-message-composer.js.map +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-bar-nav.js.map +1 -1
  83. package/dist/components/ds-mobile-header.js +1 -1
  84. package/dist/components/ds-mobile-section-switcher.js +1 -1
  85. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  86. package/dist/components/ds-mobile-sheet-nav.js.map +1 -1
  87. package/dist/components/ds-modal.js +1 -1
  88. package/dist/components/ds-panel-nav.js +1 -1
  89. package/dist/components/ds-panel-nav.js.map +1 -1
  90. package/dist/components/ds-panel-sub-nav.js +1 -1
  91. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  92. package/dist/components/ds-panel-tool-header.js +1 -1
  93. package/dist/components/ds-panel-tool-search.js +1 -1
  94. package/dist/components/ds-panel-tools.js +1 -1
  95. package/dist/components/ds-radio.js +1 -1
  96. package/dist/components/ds-radio.js.map +1 -1
  97. package/dist/components/ds-scroll-overlay.js +1 -1
  98. package/dist/components/ds-select.js +1 -1
  99. package/dist/components/ds-select.js.map +1 -1
  100. package/dist/components/ds-shell-app.js +1 -1
  101. package/dist/components/ds-shell-app.js.map +1 -1
  102. package/dist/components/ds-shell-page.js +1 -1
  103. package/dist/components/ds-shell-page.js.map +1 -1
  104. package/dist/components/ds-shell-tools.js +1 -1
  105. package/dist/components/ds-shell-tools.js.map +1 -1
  106. package/dist/components/ds-skeleton.js +1 -1
  107. package/dist/components/ds-slider.js +1 -1
  108. package/dist/components/ds-slider.js.map +1 -1
  109. package/dist/components/ds-swatch-picker.js +1 -1
  110. package/dist/components/ds-switch.js +1 -1
  111. package/dist/components/ds-tab-group.js +1 -1
  112. package/dist/components/ds-tag.js +1 -1
  113. package/dist/components/ds-tag.js.map +1 -1
  114. package/dist/components/ds-text.js +1 -1
  115. package/dist/components/ds-toast.js +1 -1
  116. package/dist/components/ds-tooltip-data-viz.js +1 -1
  117. package/dist/components/ds-tooltip.js +1 -1
  118. package/dist/components/ds-typing-indicator.js +1 -1
  119. package/dist/components/{p-CgEYdMee.js → p-6qXDqCj_.js} +2 -2
  120. package/dist/components/{p-Cr3tEx7o.js → p-Ay1AX7Ql.js} +2 -2
  121. package/dist/components/p-B-qDb_Zo.js +2 -0
  122. package/dist/components/p-B-qDb_Zo.js.map +1 -0
  123. package/dist/components/{p-BOCfICln.js → p-B1XW4VSn.js} +2 -2
  124. package/dist/components/p-B9p6w-_T.js +2 -0
  125. package/dist/components/p-B9p6w-_T.js.map +1 -0
  126. package/dist/components/p-BBFEhNzM.js +2 -0
  127. package/dist/components/p-BBFEhNzM.js.map +1 -0
  128. package/dist/components/p-BGUK8-Qm.js +2 -0
  129. package/dist/components/p-BGUK8-Qm.js.map +1 -0
  130. package/dist/components/p-BO4cj3iX.js +2 -0
  131. package/dist/components/{p-DCvA3Dc9.js.map → p-BO4cj3iX.js.map} +1 -1
  132. package/dist/components/{p-BKOlvCGS.js → p-BUZXuod2.js} +2 -2
  133. package/dist/components/p-BYWkksDO.js +2 -0
  134. package/dist/components/p-BYWkksDO.js.map +1 -0
  135. package/dist/components/p-BbMJTilO.js +2 -0
  136. package/dist/components/p-BbMJTilO.js.map +1 -0
  137. package/dist/components/{p-BO5aqZcf.js → p-BcTYhmku.js} +2 -2
  138. package/dist/components/p-BnQXAbif.js +2 -0
  139. package/dist/components/p-BnQXAbif.js.map +1 -0
  140. package/dist/components/p-BnbbnuVC.js +2 -0
  141. package/dist/components/p-BnbbnuVC.js.map +1 -0
  142. package/dist/components/{p-BDKtu6Wb.js → p-BroVnDzE.js} +2 -2
  143. package/dist/components/{p-CIiBpjCn.js → p-BsoqsbBh.js} +2 -2
  144. package/dist/components/p-BybqPD8K.js +2 -0
  145. package/dist/components/p-BybqPD8K.js.map +1 -0
  146. package/dist/components/{p-CCzG5xDD.js → p-C-aCzwhA.js} +2 -2
  147. package/dist/components/p-C-aCzwhA.js.map +1 -0
  148. package/dist/components/p-C-kzknkR.js +2 -0
  149. package/dist/components/p-C-kzknkR.js.map +1 -0
  150. package/dist/components/p-C-vRkDyn.js +2 -0
  151. package/dist/components/p-C-vRkDyn.js.map +1 -0
  152. package/dist/components/p-C4uYvyq6.js +2 -0
  153. package/dist/components/p-C4uYvyq6.js.map +1 -0
  154. package/dist/components/{p-C8HU4W8q.js → p-CBazaRlE.js} +2 -2
  155. package/dist/components/p-CH9yArA1.js +2 -0
  156. package/dist/components/p-CH9yArA1.js.map +1 -0
  157. package/dist/components/p-CHpNyAo1.js +2 -0
  158. package/dist/components/{p-CChcuL04.js.map → p-CHpNyAo1.js.map} +1 -1
  159. package/dist/components/{p-BhV5e6vF.js → p-CHuh71-U.js} +2 -2
  160. package/dist/components/p-CJDTh9Tg.js +2 -0
  161. package/dist/components/p-CJDTh9Tg.js.map +1 -0
  162. package/dist/components/p-CJbLY1tu.js +2 -0
  163. package/dist/components/p-CJbLY1tu.js.map +1 -0
  164. package/dist/components/p-CreGah0j.js +2 -0
  165. package/dist/components/p-Cvxm1OZB.js +2 -0
  166. package/dist/components/p-Cvxm1OZB.js.map +1 -0
  167. package/dist/components/p-D2xWcVv6.js +2 -0
  168. package/dist/components/p-D2xWcVv6.js.map +1 -0
  169. package/dist/components/p-DAW6G8Sl.js +2 -0
  170. package/dist/components/p-DAW6G8Sl.js.map +1 -0
  171. package/dist/components/p-DEaszb15.js +2 -0
  172. package/dist/components/p-DEaszb15.js.map +1 -0
  173. package/dist/components/{p-BgGP65Nn.js → p-DOUk4KoT.js} +1 -1
  174. package/dist/components/p-DOUk4KoT.js.map +1 -0
  175. package/dist/components/p-DbQr7Kwr.js +2 -0
  176. package/dist/components/p-DbQr7Kwr.js.map +1 -0
  177. package/dist/components/{p-Cuih680v.js → p-Df17mJqI.js} +2 -2
  178. package/dist/components/p-DhEdICfD.js +2 -0
  179. package/dist/components/p-DhEdICfD.js.map +1 -0
  180. package/dist/components/p-bxoryr-3.js +2 -0
  181. package/dist/components/p-bxoryr-3.js.map +1 -0
  182. package/dist/components/p-eAfNzlMa.js +2 -0
  183. package/dist/components/p-eAfNzlMa.js.map +1 -0
  184. package/dist/components/p-gZni7A2L.js +2 -0
  185. package/dist/components/p-gZni7A2L.js.map +1 -0
  186. package/dist/components/{p-YR1XeuZf.js → p-ohsLFap_.js} +2 -2
  187. package/dist/components/{p-DjbTFy2B.js → p-ymtdhOU5.js} +1 -1
  188. package/dist/components/p-ymtdhOU5.js.map +1 -0
  189. package/dist/docs/components.json +929 -2371
  190. package/dist/framework/angular.d.ts +0 -1
  191. package/dist/framework/angular.js +0 -1
  192. package/dist/lib/components/BarTitle/bar-title-types.d.ts +28 -0
  193. package/dist/lib/components/Breadcrumb/breadcrumb-types.d.ts +16 -0
  194. package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +83 -0
  195. package/dist/lib/components/MobileHeader/mobile-header-types.d.ts +4 -0
  196. package/dist/lib/components/PanelTools/panel-tools-types.d.ts +21 -7
  197. package/dist/lib/components/ShellApp/shell-app-types.d.ts +91 -0
  198. package/dist/lib/shell/index.d.ts +5 -13
  199. package/dist/lib/shell/index.js +87 -358
  200. package/dist/lib/shell/index.js.map +3 -3
  201. package/dist/lib/shell/shell-responsive.d.ts +2 -1
  202. package/dist/lib/utils/button-render.d.ts +17 -0
  203. package/dist/lib/utils/button-types.d.ts +10 -0
  204. package/dist/lib/utils/choice-list.d.ts +25 -0
  205. package/dist/lib/utils/control-press.d.ts +8 -0
  206. package/dist/lib/utils/form-association.d.ts +22 -0
  207. package/dist/lib/utils/index.d.ts +4 -0
  208. package/dist/lib/utils/index.js +63 -0
  209. package/dist/lib/utils/index.js.map +3 -3
  210. package/dist/lib/utils/required-validity.d.ts +1 -1
  211. package/dist/lib/utils/safe-url.d.ts +11 -0
  212. package/dist/mcp/cli.js +38 -10
  213. package/dist/mcp-data/registry/agent-activity.json +1 -1
  214. package/dist/mcp-data/registry/agent-response.json +1 -1
  215. package/dist/mcp-data/registry/agent-source-list.json +2 -2
  216. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  217. package/dist/mcp-data/registry/attachment-list.json +2 -2
  218. package/dist/mcp-data/registry/avatar.json +1 -1
  219. package/dist/mcp-data/registry/badge.json +1 -1
  220. package/dist/mcp-data/registry/bar-nav.json +4 -22
  221. package/dist/mcp-data/registry/bar-title.json +1 -1
  222. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  223. package/dist/mcp-data/registry/breadcrumb.json +2 -2
  224. package/dist/mcp-data/registry/button-filled.json +5 -20
  225. package/dist/mcp-data/registry/button-unfilled.json +15 -12
  226. package/dist/mcp-data/registry/card-data-viz.json +241 -0
  227. package/dist/mcp-data/registry/card-overview.json +39 -11
  228. package/dist/mcp-data/registry/card-setting.json +3 -3
  229. package/dist/mcp-data/registry/chart-bar.json +67 -19
  230. package/dist/mcp-data/registry/chart-donut.json +8 -8
  231. package/dist/mcp-data/registry/chart-legend.json +9 -11
  232. package/dist/mcp-data/registry/chart-line.json +2 -3
  233. package/dist/mcp-data/registry/checkbox.json +3 -3
  234. package/dist/mcp-data/registry/chip.json +1 -1
  235. package/dist/mcp-data/registry/code-block.json +1 -1
  236. package/dist/mcp-data/registry/conversation-list-item.json +2 -2
  237. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  238. package/dist/mcp-data/registry/conversation-list.json +1 -1
  239. package/dist/mcp-data/registry/divider.json +1 -1
  240. package/dist/mcp-data/registry/empty-state.json +1 -1
  241. package/dist/mcp-data/registry/field.json +3 -4
  242. package/dist/mcp-data/registry/icon.json +1 -1
  243. package/dist/mcp-data/registry/input.json +2 -2
  244. package/dist/mcp-data/registry/loader.json +1 -1
  245. package/dist/mcp-data/registry/markdown.json +2 -2
  246. package/dist/mcp-data/registry/menu.json +11 -22
  247. package/dist/mcp-data/registry/message-bubble.json +1 -1
  248. package/dist/mcp-data/registry/message-composer.json +1 -1
  249. package/dist/mcp-data/registry/message-scroller.json +1 -1
  250. package/dist/mcp-data/registry/message.json +1 -1
  251. package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
  252. package/dist/mcp-data/registry/mobile-header.json +2 -38
  253. package/dist/mcp-data/registry/mobile-section-switcher.json +2 -20
  254. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  255. package/dist/mcp-data/registry/modal.json +1 -1
  256. package/dist/mcp-data/registry/panel-nav.json +3 -3
  257. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  258. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  259. package/dist/mcp-data/registry/panel-tool-search.json +2 -2
  260. package/dist/mcp-data/registry/panel-tools.json +20 -56
  261. package/dist/mcp-data/registry/radio.json +2 -2
  262. package/dist/mcp-data/registry/registry.json +295 -1175
  263. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  264. package/dist/mcp-data/registry/select.json +60 -26
  265. package/dist/mcp-data/registry/shell-app.json +346 -21
  266. package/dist/mcp-data/registry/shell-page.json +2 -2
  267. package/dist/mcp-data/registry/shell-tools.json +13 -44
  268. package/dist/mcp-data/registry/skeleton.json +1 -1
  269. package/dist/mcp-data/registry/slider.json +2 -2
  270. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  271. package/dist/mcp-data/registry/switch.json +2 -2
  272. package/dist/mcp-data/registry/tab-group.json +1 -1
  273. package/dist/mcp-data/registry/tag.json +1 -1
  274. package/dist/mcp-data/registry/text.json +1 -1
  275. package/dist/mcp-data/registry/toast.json +1 -1
  276. package/dist/mcp-data/registry/tooltip-data-viz.json +1 -1
  277. package/dist/mcp-data/registry/tooltip.json +1 -1
  278. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  279. package/dist/react/components.d.ts +1 -8
  280. package/dist/react/components.js +1 -8
  281. package/dist/react/ds-card-data-viz.d.ts +12 -0
  282. package/dist/react/ds-card-data-viz.js +12 -0
  283. package/dist/react/ds-menu.d.ts +1 -2
  284. package/dist/react/ds-menu.js +0 -1
  285. package/dist/react/ds-select.d.ts +2 -2
  286. package/dist/react/ds-shell-app.d.ts +24 -1
  287. package/dist/react/ds-shell-app.js +16 -1
  288. package/dist/types/components/AgentSourceList/AgentSourceList.d.ts +0 -1
  289. package/dist/types/components/BarNav/BarNav.d.ts +0 -2
  290. package/dist/types/components/BarNav/bar-nav-utils.d.ts +2 -4
  291. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +5 -11
  292. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +13 -10
  293. package/dist/types/components/CardDataViz/CardDataViz.d.ts +32 -0
  294. package/dist/types/components/CardDataViz/index.d.ts +2 -0
  295. package/dist/types/components/CardOverview/CardOverview.d.ts +17 -0
  296. package/dist/types/components/CardOverview/card-overview-controller.d.ts +16 -0
  297. package/dist/types/components/ChartBar/ChartBar.d.ts +12 -1
  298. package/dist/types/components/ChartBar/index.d.ts +2 -1
  299. package/dist/types/components/Menu/Menu.d.ts +0 -4
  300. package/dist/types/components/Menu/menu-sections.d.ts +4 -0
  301. package/dist/types/components/Menu/menu-types.d.ts +2 -11
  302. package/dist/types/components/MobileHeader/MobileHeader.d.ts +0 -5
  303. package/dist/types/components/MobileSectionSwitcher/MobileSectionSwitcher.d.ts +0 -2
  304. package/dist/types/components/PanelTools/PanelTools.d.ts +0 -4
  305. package/dist/types/components/PanelTools/index.d.ts +1 -1
  306. package/dist/types/components/PanelTools/panel-tools-types.d.ts +21 -7
  307. package/dist/types/components/PanelTools/panel-tools-utils.d.ts +1 -1
  308. package/dist/types/components/Select/Select.d.ts +12 -4
  309. package/dist/types/components/Select/index.d.ts +1 -1
  310. package/dist/types/components/ShellApp/ShellApp.d.ts +98 -0
  311. package/dist/types/components/ShellApp/shell-app-types.d.ts +92 -0
  312. package/dist/types/components/ShellPage/ShellPage.d.ts +5 -0
  313. package/dist/types/components/ShellTools/ShellTools.d.ts +2 -2
  314. package/dist/types/components.d.ts +210 -889
  315. package/dist/types/shell/index.d.ts +5 -13
  316. package/dist/types/shell/shell-responsive.d.ts +2 -1
  317. package/dist/types/utils/button-render.d.ts +18 -0
  318. package/dist/types/utils/button-story-foundation.d.ts +9 -0
  319. package/dist/types/utils/button-types.d.ts +11 -0
  320. package/dist/types/utils/form-association.d.ts +23 -0
  321. package/dist/types/utils/index.d.ts +4 -0
  322. package/dist/types/utils/required-validity.d.ts +1 -1
  323. package/dist/types/utils/safe-url.d.ts +12 -0
  324. package/dist/types/utils/select-controller.d.ts +1 -1
  325. package/package.json +18 -10
  326. package/dist/.build-stamp +0 -1
  327. package/dist/angular/ds-card-data-viz-bar.d.ts +0 -18
  328. package/dist/angular/ds-card-data-viz-bar.js +0 -42
  329. package/dist/angular/ds-card-data-viz-donut.d.ts +0 -18
  330. package/dist/angular/ds-card-data-viz-line.d.ts +0 -18
  331. package/dist/angular/ds-card-data-viz-line.js +0 -42
  332. package/dist/angular/ds-card-shell-data-viz.d.ts +0 -12
  333. package/dist/angular/ds-card-shell-data-viz.js +0 -38
  334. package/dist/angular/ds-chart-bar-stacked.d.ts +0 -12
  335. package/dist/angular/ds-chart-bar-stacked.js +0 -38
  336. package/dist/angular/ds-select-multi.d.ts +0 -28
  337. package/dist/angular/ds-select-multi.js +0 -49
  338. package/dist/angular/ds-shell-gradient-picker.d.ts +0 -16
  339. package/dist/angular/ds-shell-gradient-picker.js +0 -42
  340. package/dist/angular/ds-shell-gradient-swatch.d.ts +0 -16
  341. package/dist/angular/ds-shell-gradient-swatch.js +0 -42
  342. package/dist/components/ds-card-data-viz-bar.d.ts +0 -11
  343. package/dist/components/ds-card-data-viz-bar.js +0 -2
  344. package/dist/components/ds-card-data-viz-bar.js.map +0 -1
  345. package/dist/components/ds-card-data-viz-donut.d.ts +0 -11
  346. package/dist/components/ds-card-data-viz-donut.js +0 -2
  347. package/dist/components/ds-card-data-viz-donut.js.map +0 -1
  348. package/dist/components/ds-card-data-viz-line.d.ts +0 -11
  349. package/dist/components/ds-card-data-viz-line.js +0 -2
  350. package/dist/components/ds-card-data-viz-line.js.map +0 -1
  351. package/dist/components/ds-card-shell-data-viz.d.ts +0 -11
  352. package/dist/components/ds-card-shell-data-viz.js +0 -2
  353. package/dist/components/ds-card-shell-data-viz.js.map +0 -1
  354. package/dist/components/ds-chart-bar-stacked.d.ts +0 -11
  355. package/dist/components/ds-chart-bar-stacked.js +0 -2
  356. package/dist/components/ds-chart-bar-stacked.js.map +0 -1
  357. package/dist/components/ds-select-multi.js +0 -2
  358. package/dist/components/ds-select-multi.js.map +0 -1
  359. package/dist/components/ds-shell-gradient-picker.d.ts +0 -11
  360. package/dist/components/ds-shell-gradient-picker.js +0 -2
  361. package/dist/components/ds-shell-gradient-picker.js.map +0 -1
  362. package/dist/components/ds-shell-gradient-swatch.d.ts +0 -11
  363. package/dist/components/ds-shell-gradient-swatch.js +0 -2
  364. package/dist/components/ds-shell-gradient-swatch.js.map +0 -1
  365. package/dist/components/p-2foAUsDN.js +0 -2
  366. package/dist/components/p-2foAUsDN.js.map +0 -1
  367. package/dist/components/p-8GK7B7K4.js +0 -2
  368. package/dist/components/p-8GK7B7K4.js.map +0 -1
  369. package/dist/components/p-B5tMlca-.js +0 -2
  370. package/dist/components/p-B5tMlca-.js.map +0 -1
  371. package/dist/components/p-B88n0pO3.js +0 -2
  372. package/dist/components/p-B88n0pO3.js.map +0 -1
  373. package/dist/components/p-BBePKRHC.js +0 -2
  374. package/dist/components/p-BBePKRHC.js.map +0 -1
  375. package/dist/components/p-BOQnc-M4.js +0 -2
  376. package/dist/components/p-BOQnc-M4.js.map +0 -1
  377. package/dist/components/p-BgGP65Nn.js.map +0 -1
  378. package/dist/components/p-BrusnEYP.js +0 -2
  379. package/dist/components/p-BrusnEYP.js.map +0 -1
  380. package/dist/components/p-C61yJkfr.js +0 -2
  381. package/dist/components/p-C61yJkfr.js.map +0 -1
  382. package/dist/components/p-CChcuL04.js +0 -2
  383. package/dist/components/p-CCzG5xDD.js.map +0 -1
  384. package/dist/components/p-CGVXbXv9.js +0 -2
  385. package/dist/components/p-CGVXbXv9.js.map +0 -1
  386. package/dist/components/p-CH3w-P2H.js +0 -2
  387. package/dist/components/p-CH3w-P2H.js.map +0 -1
  388. package/dist/components/p-Cuqxh-Tq.js +0 -2
  389. package/dist/components/p-Cuqxh-Tq.js.map +0 -1
  390. package/dist/components/p-D1HFMTdC.js +0 -2
  391. package/dist/components/p-D1HFMTdC.js.map +0 -1
  392. package/dist/components/p-D2x17ei-.js +0 -2
  393. package/dist/components/p-D2x17ei-.js.map +0 -1
  394. package/dist/components/p-DCvA3Dc9.js +0 -2
  395. package/dist/components/p-DLZm_-sU.js +0 -2
  396. package/dist/components/p-DLZm_-sU.js.map +0 -1
  397. package/dist/components/p-DRnIuCiT.js +0 -2
  398. package/dist/components/p-DjKkSqrG.js +0 -2
  399. package/dist/components/p-DjKkSqrG.js.map +0 -1
  400. package/dist/components/p-DjbTFy2B.js.map +0 -1
  401. package/dist/components/p-DlscFn2m.js +0 -2
  402. package/dist/components/p-DlscFn2m.js.map +0 -1
  403. package/dist/components/p-DxkEC0hR.js +0 -2
  404. package/dist/components/p-DxkEC0hR.js.map +0 -1
  405. package/dist/components/p-Re2kPrXm.js +0 -2
  406. package/dist/components/p-Re2kPrXm.js.map +0 -1
  407. package/dist/components/p-XMZCaXs7.js +0 -2
  408. package/dist/components/p-XMZCaXs7.js.map +0 -1
  409. package/dist/components/p-dyUp3Adm.js +0 -2
  410. package/dist/components/p-dyUp3Adm.js.map +0 -1
  411. package/dist/components/p-nkYN0Bub.js +0 -2
  412. package/dist/components/p-nkYN0Bub.js.map +0 -1
  413. package/dist/framework/select-multi-value-accessor.d.ts +0 -9
  414. package/dist/framework/select-multi-value-accessor.js +0 -40
  415. package/dist/lib/shell/badge-gradient-ring.d.ts +0 -27
  416. package/dist/lib/shell/chrome-transition.d.ts +0 -32
  417. package/dist/lib/shell/shell-chrome-metrics.d.ts +0 -11
  418. package/dist/lib/shell/shell-gradient.d.ts +0 -41
  419. package/dist/lib/shell/shell-view-transition.d.ts +0 -23
  420. package/dist/mcp-data/registry/card-data-viz-bar.json +0 -213
  421. package/dist/mcp-data/registry/card-data-viz-donut.json +0 -214
  422. package/dist/mcp-data/registry/card-data-viz-line.json +0 -207
  423. package/dist/mcp-data/registry/card-shell-data-viz.json +0 -180
  424. package/dist/mcp-data/registry/chart-bar-stacked.json +0 -230
  425. package/dist/mcp-data/registry/select-multi.json +0 -758
  426. package/dist/mcp-data/registry/shell-gradient-picker.json +0 -195
  427. package/dist/mcp-data/registry/shell-gradient-swatch.json +0 -215
  428. package/dist/react/ds-card-data-viz-bar.d.ts +0 -12
  429. package/dist/react/ds-card-data-viz-bar.js +0 -12
  430. package/dist/react/ds-card-data-viz-donut.d.ts +0 -12
  431. package/dist/react/ds-card-data-viz-donut.js +0 -12
  432. package/dist/react/ds-card-data-viz-line.d.ts +0 -12
  433. package/dist/react/ds-card-data-viz-line.js +0 -12
  434. package/dist/react/ds-card-shell-data-viz.d.ts +0 -9
  435. package/dist/react/ds-card-shell-data-viz.js +0 -12
  436. package/dist/react/ds-chart-bar-stacked.d.ts +0 -9
  437. package/dist/react/ds-chart-bar-stacked.js +0 -12
  438. package/dist/react/ds-select-multi.d.ts +0 -14
  439. package/dist/react/ds-select-multi.js +0 -16
  440. package/dist/react/ds-shell-gradient-picker.d.ts +0 -12
  441. package/dist/react/ds-shell-gradient-picker.js +0 -12
  442. package/dist/react/ds-shell-gradient-swatch.d.ts +0 -12
  443. package/dist/react/ds-shell-gradient-swatch.js +0 -12
  444. package/dist/types/components/CardDataVizBar/CardDataVizBar.d.ts +0 -24
  445. package/dist/types/components/CardDataVizBar/index.d.ts +0 -2
  446. package/dist/types/components/CardDataVizDonut/CardDataVizDonut.d.ts +0 -28
  447. package/dist/types/components/CardDataVizDonut/index.d.ts +0 -2
  448. package/dist/types/components/CardDataVizLine/CardDataVizLine.d.ts +0 -24
  449. package/dist/types/components/CardDataVizLine/index.d.ts +0 -2
  450. package/dist/types/components/CardShellDataViz/CardShellDataViz.d.ts +0 -13
  451. package/dist/types/components/CardShellDataViz/index.d.ts +0 -2
  452. package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +0 -26
  453. package/dist/types/components/ChartBarStacked/index.d.ts +0 -3
  454. package/dist/types/components/SelectMulti/SelectMulti.d.ts +0 -121
  455. package/dist/types/components/SelectMulti/index.d.ts +0 -2
  456. package/dist/types/components/ShellGradientPicker/ShellGradientPicker.d.ts +0 -12
  457. package/dist/types/components/ShellGradientSwatch/ShellGradientSwatch.d.ts +0 -15
  458. package/dist/types/components/ShellGradientSwatch/shell-gradient-swatch-types.d.ts +0 -4
  459. /package/dist/components/{p-CgEYdMee.js.map → p-6qXDqCj_.js.map} +0 -0
  460. /package/dist/components/{p-Cr3tEx7o.js.map → p-Ay1AX7Ql.js.map} +0 -0
  461. /package/dist/components/{p-BOCfICln.js.map → p-B1XW4VSn.js.map} +0 -0
  462. /package/dist/components/{p-BKOlvCGS.js.map → p-BUZXuod2.js.map} +0 -0
  463. /package/dist/components/{p-BO5aqZcf.js.map → p-BcTYhmku.js.map} +0 -0
  464. /package/dist/components/{p-BDKtu6Wb.js.map → p-BroVnDzE.js.map} +0 -0
  465. /package/dist/components/{p-CIiBpjCn.js.map → p-BsoqsbBh.js.map} +0 -0
  466. /package/dist/components/{p-C8HU4W8q.js.map → p-CBazaRlE.js.map} +0 -0
  467. /package/dist/components/{p-BhV5e6vF.js.map → p-CHuh71-U.js.map} +0 -0
  468. /package/dist/components/{p-DRnIuCiT.js.map → p-CreGah0j.js.map} +0 -0
  469. /package/dist/components/{p-Cuih680v.js.map → p-Df17mJqI.js.map} +0 -0
  470. /package/dist/components/{p-YR1XeuZf.js.map → p-ohsLFap_.js.map} +0 -0
@@ -1,213 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "card-data-viz-bar",
4
- "title": "CardDataVizBar",
5
- "description": "Canonical bar-chart dashboard card with shared data-viz chrome, a filter action, a fill chart region, and an optional static legend.",
6
- "type": "registry:ui",
7
- "meta": {
8
- "library": "@ds-mo/ui",
9
- "distribution": "npm",
10
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-data-viz-bar",
11
- "source": "src/wc/components/CardDataVizBar/CardDataVizBar.tsx",
12
- "intentStatus": "complete",
13
- "intent": {
14
- "audience": "specialized",
15
- "status": "experimental",
16
- "summary": "Canonical bar-chart dashboard card with shared data-viz chrome, a filter action, a fill chart region, and an optional static legend.",
17
- "useWhen": [
18
- "A dashboard widget needs a regular, stacked, or percentage bar chart in the standard data-viz card.",
19
- "A stacked bar chart needs a visible static series key beneath the chart."
20
- ],
21
- "avoidWhen": [
22
- "The visualization needs selectable legend rows or chart-to-legend hover synchronization.",
23
- "The product needs supporting metrics or an alternate chart layout beyond the chart and optional legend."
24
- ],
25
- "alternatives": [
26
- {
27
- "when": "The bar chart needs a custom layout without card chrome.",
28
- "component": "component:ds-chart-bar",
29
- "reason": "Compose ChartBar directly in the product-owned layout."
30
- },
31
- {
32
- "when": "The visualization communicates change as continuous lines.",
33
- "component": "component:ds-card-data-viz-line",
34
- "reason": "CardDataVizLine owns the canonical line-chart card layout."
35
- },
36
- {
37
- "when": "The visualization communicates parts of one total with synchronized slice emphasis.",
38
- "component": "component:ds-card-data-viz-donut",
39
- "reason": "CardDataVizDonut owns the donut layout and bidirectional hover synchronization."
40
- }
41
- ],
42
- "commonlyComposedWith": [
43
- "component:ds-card-shell-data-viz",
44
- "component:ds-chart-bar",
45
- "component:ds-chart-bar-stacked",
46
- "component:ds-chart-legend",
47
- "component:ds-button-unfilled"
48
- ],
49
- "accessibility": [
50
- "Provide a concise heading that identifies the measure and meaningful visible labels for every legend entry.",
51
- "Keep essential series and value context available textually rather than relying on bar color alone.",
52
- "The card disables decorative legend-row hover; genuine legend links retain native link semantics and affordances."
53
- ],
54
- "states": [
55
- "Bar, Line, and Donut cards share the same fill-chart and content-sized-legend body contract so dashboard card geometry remains aligned across chart types.",
56
- "The chart region fills the remaining card body while an optional legend remains content-sized.",
57
- "The card disables local hover highlighting on a slotted ChartLegend because bar legends are static keys.",
58
- "Chart and legend regions render only when their corresponding slots contain content, avoiding empty region spacing.",
59
- "The owning product controls data, filtering, loading, empty, and error state; the card emits the filter action only."
60
- ],
61
- "responsiveBehavior": [
62
- "The selected sm, md, or lg shell size controls the card dimensions while the bar chart reflows to the chart region without visually scaling its primitives.",
63
- "The horizontal legend wraps complete entries when the available width is constrained.",
64
- "The parent dashboard owns card wrapping and breakpoint changes."
65
- ],
66
- "frameworkCaveats": {
67
- "customElements": [
68
- "Assign data or series and categories as JavaScript properties, then place the bar chart and optional legend in their named slots."
69
- ],
70
- "react": [
71
- "Keep filter and dataset state in the owner; pass the chart and optional legend with chart and legend slot attributes."
72
- ],
73
- "angular": [
74
- "Keep filter and dataset state in the owner; project the chart and optional legend into the chart and legend slots."
75
- ]
76
- },
77
- "references": [
78
- {
79
- "label": "Storybook examples",
80
- "path": "src/wc/components/CardDataVizBar/CardDataVizBar.stories.ts"
81
- }
82
- ]
83
- },
84
- "api": {
85
- "props": {
86
- "cardWidth": {
87
- "type": "CardDataVizBarWidth",
88
- "resolvedType": "\"lg\" | \"md\" | \"sm\"",
89
- "attribute": "card-width",
90
- "default": "'md'",
91
- "required": false,
92
- "mutable": false,
93
- "description": "Card width token — also sets matching min-height."
94
- },
95
- "filterLabel": {
96
- "type": "string",
97
- "resolvedType": "string",
98
- "attribute": "filter-label",
99
- "default": "'Filter'",
100
- "required": false,
101
- "mutable": false
102
- },
103
- "heading": {
104
- "type": "string",
105
- "resolvedType": "string",
106
- "attribute": "heading",
107
- "required": true,
108
- "mutable": false,
109
- "description": "Widget heading shown in the card header."
110
- }
111
- },
112
- "events": [
113
- {
114
- "name": "dsFilterClick",
115
- "detail": "void",
116
- "bubbles": true,
117
- "cancelable": true,
118
- "composed": true,
119
- "description": "Emits when the header filter control is activated."
120
- }
121
- ],
122
- "methods": [],
123
- "slots": []
124
- },
125
- "props": {
126
- "cardWidth": {
127
- "type": "CardDataVizBarWidth",
128
- "resolvedType": "\"lg\" | \"md\" | \"sm\"",
129
- "attribute": "card-width",
130
- "default": "'md'",
131
- "required": false,
132
- "mutable": false,
133
- "description": "Card width token — also sets matching min-height."
134
- },
135
- "filterLabel": {
136
- "type": "string",
137
- "resolvedType": "string",
138
- "attribute": "filter-label",
139
- "default": "'Filter'",
140
- "required": false,
141
- "mutable": false
142
- },
143
- "heading": {
144
- "type": "string",
145
- "resolvedType": "string",
146
- "attribute": "heading",
147
- "required": true,
148
- "mutable": false,
149
- "description": "Widget heading shown in the card header."
150
- }
151
- },
152
- "events": [
153
- {
154
- "name": "dsFilterClick",
155
- "detail": "void",
156
- "bubbles": true,
157
- "cancelable": true,
158
- "composed": true,
159
- "description": "Emits when the header filter control is activated."
160
- }
161
- ],
162
- "methods": [],
163
- "slots": [],
164
- "exports": {
165
- "customElement": "ds-card-data-viz-bar",
166
- "react": "DsCardDataVizBar",
167
- "angular": "DsCardDataVizBar"
168
- },
169
- "consumption": {
170
- "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
171
- "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
172
- "customElements": {
173
- "import": "import '@ds-mo/ui/dist/components/ds-card-data-viz-bar.js';",
174
- "example": "<ds-card-data-viz-bar></ds-card-data-viz-bar>"
175
- },
176
- "react": {
177
- "import": "import { DsCardDataVizBar } from '@ds-mo/ui/react';",
178
- "example": "<DsCardDataVizBar />"
179
- },
180
- "angular": {
181
- "import": "import { DsCardDataVizBar } from '@ds-mo/ui/angular/ds-card-data-viz-bar';",
182
- "example": "<ds-card-data-viz-bar></ds-card-data-viz-bar>"
183
- },
184
- "peerDependencies": {
185
- "required": [
186
- "@ds-mo/tokens ^5.0.0",
187
- "@ds-mo/icons ^6.4.0"
188
- ],
189
- "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
190
- }
191
- }
192
- },
193
- "dependencies": [
194
- "@ds-mo/ui",
195
- "@ds-mo/tokens"
196
- ],
197
- "registryDependencies": [
198
- "button-unfilled",
199
- "card-shell-data-viz"
200
- ],
201
- "files": [
202
- {
203
- "path": "src/wc/components/CardDataVizBar/CardDataVizBar.css",
204
- "content": "@import '../../utils/data-viz-card-layout.css';\n\n:host {\n display: contents;\n}\n",
205
- "type": "registry:ui"
206
- },
207
- {
208
- "path": "src/wc/components/CardDataVizBar/CardDataVizBar.tsx",
209
- "content": "import { Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core';\nimport type { CardShellDataVizWidth } from '../CardShellDataViz/CardShellDataViz';\n\nexport type CardDataVizBarWidth = CardShellDataVizWidth;\n\ntype StaticLegendSlot = HTMLElement & {\n highlightOnHover?: boolean;\n};\n\n/**\n * Bar-chart data-viz card — dedicated `ds-card-shell-data-viz` chrome with a fill chart\n * region and an optional, content-sized static legend.\n */\n@Component({\n tag: 'ds-card-data-viz-bar',\n styleUrl: 'CardDataVizBar.css',\n scoped: true,\n})\nexport class CardDataVizBar {\n @Element() el!: HTMLElement;\n\n /** Widget heading shown in the card header. */\n @Prop() heading!: string;\n\n /** Card width token — also sets matching min-height. */\n @Prop() cardWidth: CardDataVizBarWidth = 'md';\n @Prop() filterLabel: string = 'Filter';\n\n /** Emits when the header filter control is activated. */\n @Event() dsFilterClick!: EventEmitter<void>;\n\n @State() private hasChartSlot = false;\n @State() private hasLegendSlot = false;\n\n componentWillRender() {\n this.hasChartSlot = !!this.el.querySelector('[slot=\"chart\"]');\n this.hasLegendSlot = !!this.el.querySelector('[slot=\"legend\"]');\n }\n\n componentDidRender() {\n const legend = this.el.querySelector(\n 'ds-chart-legend[slot=\"legend\"]'\n ) as StaticLegendSlot | null;\n if (!legend) return;\n legend.setAttribute('highlight-on-hover', 'false');\n if ('highlightOnHover' in legend) legend.highlightOnHover = false;\n }\n\n private handleFilterClick = () => {\n this.dsFilterClick.emit();\n };\n\n render() {\n return (\n <Host class=\"card-data-viz-bar\">\n <ds-card-shell-data-viz heading={this.heading} cardWidth={this.cardWidth}>\n <ds-button-unfilled\n slot=\"actions\"\n variant=\"icon\"\n type=\"button\"\n icon=\"Filters\"\n aria-label={this.filterLabel}\n onDsClick={this.handleFilterClick}\n />\n <div class=\"ds-data-viz-card-layout\">\n {this.hasChartSlot && (\n <div class=\"ds-data-viz-card-chart\">\n <slot name=\"chart\" />\n </div>\n )}\n {this.hasLegendSlot && (\n <div class=\"ds-data-viz-card-legend\">\n <slot name=\"legend\" />\n </div>\n )}\n </div>\n </ds-card-shell-data-viz>\n </Host>\n );\n }\n}\n",
210
- "type": "registry:ui"
211
- }
212
- ]
213
- }
@@ -1,214 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "card-data-viz-donut",
4
- "title": "CardDataVizDonut",
5
- "description": "Canonical donut-plus-legend dashboard card with shared data-viz chrome, a filter action, fill chart region, content-sized legend, and built-in hover synchronization.",
6
- "type": "registry:ui",
7
- "meta": {
8
- "library": "@ds-mo/ui",
9
- "distribution": "npm",
10
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-data-viz-donut",
11
- "source": "src/wc/components/CardDataVizDonut/CardDataVizDonut.tsx",
12
- "intentStatus": "complete",
13
- "intent": {
14
- "audience": "specialized",
15
- "status": "experimental",
16
- "summary": "Canonical donut-plus-legend dashboard card with shared data-viz chrome, a filter action, fill chart region, content-sized legend, and built-in hover synchronization.",
17
- "useWhen": [
18
- "A dashboard widget needs the standard donut and visible legend composition in one data-viz card.",
19
- "Chart slices and legend rows should cross-highlight without application hover wiring.",
20
- "The card needs the shared header filter action while the application owns filter state and menu content."
21
- ],
22
- "avoidWhen": [
23
- "The visualization is a bar, line, metric, or custom chart; compose CardShellDataViz directly.",
24
- "The product needs a custom legend treatment such as chips, external stat callouts, or selectable filters.",
25
- "The surface is a settings section or generic content card."
26
- ],
27
- "alternatives": [
28
- {
29
- "when": "The visualization needs shared data-viz chrome without the canonical donut layout.",
30
- "component": "component:ds-card-shell-data-viz",
31
- "reason": "CardShellDataViz owns only the header, actions, width, and body boundary."
32
- },
33
- {
34
- "when": "A donut and legend need a custom layout without card chrome.",
35
- "component": "component:ds-chart-donut",
36
- "reason": "Compose the chart and ChartLegend directly and own their layout and hover synchronization."
37
- }
38
- ],
39
- "commonlyComposedWith": [
40
- "component:ds-card-shell-data-viz",
41
- "component:ds-chart-donut",
42
- "component:ds-chart-legend",
43
- "component:ds-empty-state",
44
- "component:ds-skeleton"
45
- ],
46
- "accessibility": [
47
- "Provide a concise card heading and a localized filter label for the icon-only header action.",
48
- "Keep essential values available through the chart and visible legend rather than encoding meaning through slice color alone.",
49
- "The application owns meaningful loading, empty, and error status copy when either content region is temporarily replaced or absent."
50
- ],
51
- "states": [
52
- "Bar, Line, and Donut cards share the same fill-chart and content-sized-legend body contract so dashboard card geometry remains aligned across chart types.",
53
- "The chart region fills remaining card height while the legend remains content-sized.",
54
- "Chart and legend regions render only when their corresponding slots contain content, allowing the owner to substitute loading, empty, or error presentations without dangling region padding.",
55
- "Hover synchronization changes highlight only; it never represents selection, filtering, or navigation.",
56
- "The filter action emits intent while the parent owns popup content, applied constraints, and data updates."
57
- ],
58
- "responsiveBehavior": [
59
- "Select the token-based card width appropriate to the parent grid; the matching minimum height preserves the chart region.",
60
- "The donut measures the chart region and changes radius within its shared size band while token thickness and typography remain fixed.",
61
- "The parent dashboard owns wrapping and column changes while the internal chart-over-legend arrangement remains stable."
62
- ],
63
- "frameworkCaveats": {
64
- "customElements": [
65
- "Assign chart data and legend items as JavaScript properties and place the components in the chart and legend slots."
66
- ],
67
- "react": [
68
- "Keep filter and dataset state in the owner; the card handles hover synchronization for the canonical slotted pair."
69
- ],
70
- "angular": [
71
- "Keep filter and dataset state in the owner; the card handles hover synchronization for the canonical slotted pair."
72
- ]
73
- },
74
- "references": [
75
- {
76
- "label": "Storybook examples",
77
- "path": "src/wc/components/CardDataVizDonut/CardDataVizDonut.stories.ts"
78
- },
79
- {
80
- "label": "Dashboard review examples",
81
- "path": "src/wc/stories/DataViz/OverviewReview.stories.ts"
82
- }
83
- ]
84
- },
85
- "api": {
86
- "props": {
87
- "cardWidth": {
88
- "type": "CardDataVizDonutWidth",
89
- "resolvedType": "\"lg\" | \"md\" | \"sm\"",
90
- "attribute": "card-width",
91
- "default": "'md'",
92
- "required": false,
93
- "mutable": false,
94
- "description": "Card width token — also sets matching min-height."
95
- },
96
- "filterLabel": {
97
- "type": "string",
98
- "resolvedType": "string",
99
- "attribute": "filter-label",
100
- "default": "'Filter'",
101
- "required": false,
102
- "mutable": false
103
- },
104
- "heading": {
105
- "type": "string",
106
- "resolvedType": "string",
107
- "attribute": "heading",
108
- "required": true,
109
- "mutable": false,
110
- "description": "Widget heading shown in the card header."
111
- }
112
- },
113
- "events": [
114
- {
115
- "name": "dsFilterClick",
116
- "detail": "void",
117
- "bubbles": true,
118
- "cancelable": true,
119
- "composed": true,
120
- "description": "Emits when the header filter control is activated."
121
- }
122
- ],
123
- "methods": [],
124
- "slots": []
125
- },
126
- "props": {
127
- "cardWidth": {
128
- "type": "CardDataVizDonutWidth",
129
- "resolvedType": "\"lg\" | \"md\" | \"sm\"",
130
- "attribute": "card-width",
131
- "default": "'md'",
132
- "required": false,
133
- "mutable": false,
134
- "description": "Card width token — also sets matching min-height."
135
- },
136
- "filterLabel": {
137
- "type": "string",
138
- "resolvedType": "string",
139
- "attribute": "filter-label",
140
- "default": "'Filter'",
141
- "required": false,
142
- "mutable": false
143
- },
144
- "heading": {
145
- "type": "string",
146
- "resolvedType": "string",
147
- "attribute": "heading",
148
- "required": true,
149
- "mutable": false,
150
- "description": "Widget heading shown in the card header."
151
- }
152
- },
153
- "events": [
154
- {
155
- "name": "dsFilterClick",
156
- "detail": "void",
157
- "bubbles": true,
158
- "cancelable": true,
159
- "composed": true,
160
- "description": "Emits when the header filter control is activated."
161
- }
162
- ],
163
- "methods": [],
164
- "slots": [],
165
- "exports": {
166
- "customElement": "ds-card-data-viz-donut",
167
- "react": "DsCardDataVizDonut",
168
- "angular": "DsCardDataVizDonut"
169
- },
170
- "consumption": {
171
- "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
172
- "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
173
- "customElements": {
174
- "import": "import '@ds-mo/ui/dist/components/ds-card-data-viz-donut.js';",
175
- "example": "<ds-card-data-viz-donut></ds-card-data-viz-donut>"
176
- },
177
- "react": {
178
- "import": "import { DsCardDataVizDonut } from '@ds-mo/ui/react';",
179
- "example": "<DsCardDataVizDonut />"
180
- },
181
- "angular": {
182
- "import": "import { DsCardDataVizDonut } from '@ds-mo/ui/angular/ds-card-data-viz-donut';",
183
- "example": "<ds-card-data-viz-donut></ds-card-data-viz-donut>"
184
- },
185
- "peerDependencies": {
186
- "required": [
187
- "@ds-mo/tokens ^5.0.0",
188
- "@ds-mo/icons ^6.4.0"
189
- ],
190
- "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
191
- }
192
- }
193
- },
194
- "dependencies": [
195
- "@ds-mo/ui",
196
- "@ds-mo/tokens"
197
- ],
198
- "registryDependencies": [
199
- "button-unfilled",
200
- "card-shell-data-viz"
201
- ],
202
- "files": [
203
- {
204
- "path": "src/wc/components/CardDataVizDonut/CardDataVizDonut.css",
205
- "content": "@import '../../utils/data-viz-card-layout.css';\n\n:host {\n display: contents;\n}\n",
206
- "type": "registry:ui"
207
- },
208
- {
209
- "path": "src/wc/components/CardDataVizDonut/CardDataVizDonut.tsx",
210
- "content": "import { Component, Element, Event, EventEmitter, State, h, Host, Prop } from '@stencil/core';\nimport type { CardShellDataVizWidth } from '../CardShellDataViz/CardShellDataViz';\n\nexport type CardDataVizDonutWidth = CardShellDataVizWidth;\n\n/** Matches the `dsSliceHover`/`dsItemHover` detail shape emitted by `ds-chart-*` and `ds-chart-legend`. */\ntype HoveredDatum = { label: string } | null;\n\n/** A slotted chart/legend that opts into composition behavior through public props. */\ntype SyncableSlot = HTMLElement & {\n activeLabel?: string | null;\n showTooltip?: boolean;\n};\n\n/**\n * Donut data-viz card — dedicated `ds-card-shell-data-viz` chrome with a fill chart region and\n * content-sized legend. Hover sync between chart and legend stays here.\n */\n@Component({\n tag: 'ds-card-data-viz-donut',\n styleUrl: 'CardDataVizDonut.css',\n scoped: true,\n})\nexport class CardDataVizDonut {\n @Element() el!: HTMLElement;\n\n /** Widget heading shown in the card header. */\n @Prop() heading!: string;\n\n /** Card width token — also sets matching min-height. */\n @Prop() cardWidth: CardDataVizDonutWidth = 'md';\n @Prop() filterLabel: string = 'Filter';\n\n /** Emits when the header filter control is activated. */\n @Event() dsFilterClick!: EventEmitter<void>;\n\n // Scoped (light-DOM) components have no native slot projection to detect emptiness from CSS —\n // check the actual children so an unused region (e.g. no legend) doesn't render a dangling\n // padded box plus a body gap next to nothing.\n @State() private hasChartSlot = false;\n @State() private hasLegendSlot = false;\n\n componentWillRender() {\n // Not `:scope >` — Stencil's scoped slot polyfill relocates slotted children into\n // region wrappers (and here into nested `ds-card-shell-data-viz`), so they may not stay direct\n // host children across renders.\n this.hasChartSlot = !!this.el.querySelector('[slot=\"chart\"]');\n this.hasLegendSlot = !!this.el.querySelector('[slot=\"legend\"]');\n }\n\n componentDidLoad() {\n // Sync the chart's and legend's `activeLabel` from each other's hover events, so any\n // ds-chart-donut + ds-chart-legend pair cross-highlights without every consumer having to\n // wire it up by hand. Delegated on the host (rather than bound to the specific slotted\n // elements) since Stencil events bubble and the slot content can be swapped at runtime.\n this.el.addEventListener('dsSliceHover', this.handleChartHover);\n this.el.addEventListener('dsItemHover', this.handleLegendHover);\n }\n\n componentDidRender() {\n const chart = this.el.querySelector('[slot=\"chart\"]') as SyncableSlot | null;\n if (!chart || !('showTooltip' in chart)) return;\n chart.showTooltip = !this.hasLegendSlot;\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('dsSliceHover', this.handleChartHover);\n this.el.removeEventListener('dsItemHover', this.handleLegendHover);\n }\n\n private handleChartHover = (e: Event) => {\n // Not `:scope >` — Stencil's slot polyfill for scoped (non-shadow) components relocates\n // slotted children into an inner region wrapper on render, so they're no longer direct\n // children of the host by the time this fires.\n const legend = this.el.querySelector('[slot=\"legend\"]') as SyncableSlot | null;\n if (!legend || !('activeLabel' in legend)) return;\n legend.activeLabel = (e as CustomEvent<HoveredDatum>).detail?.label ?? null;\n };\n\n private handleLegendHover = (e: Event) => {\n const chart = this.el.querySelector('[slot=\"chart\"]') as SyncableSlot | null;\n if (!chart || !('activeLabel' in chart)) return;\n chart.activeLabel = (e as CustomEvent<HoveredDatum>).detail?.label ?? null;\n };\n\n private handleFilterClick = () => {\n this.dsFilterClick.emit();\n };\n\n render() {\n return (\n <Host class=\"card-data-viz-donut\">\n <ds-card-shell-data-viz heading={this.heading} cardWidth={this.cardWidth}>\n <ds-button-unfilled\n slot=\"actions\"\n variant=\"icon\"\n type=\"button\"\n icon=\"Filters\"\n aria-label={this.filterLabel}\n onDsClick={this.handleFilterClick}\n />\n <div class=\"ds-data-viz-card-layout\">\n {this.hasChartSlot && (\n <div class=\"ds-data-viz-card-chart ds-data-viz-card-chart--fill\">\n <slot name=\"chart\" />\n </div>\n )}\n {this.hasLegendSlot && (\n <div class=\"ds-data-viz-card-legend\">\n <slot name=\"legend\" />\n </div>\n )}\n </div>\n </ds-card-shell-data-viz>\n </Host>\n );\n }\n}\n",
211
- "type": "registry:ui"
212
- }
213
- ]
214
- }
@@ -1,207 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "card-data-viz-line",
4
- "title": "CardDataVizLine",
5
- "description": "Canonical line-chart dashboard card with shared data-viz chrome, a filter action, fill chart region, and a static horizontal legend.",
6
- "type": "registry:ui",
7
- "meta": {
8
- "library": "@ds-mo/ui",
9
- "distribution": "npm",
10
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-data-viz-line",
11
- "source": "src/wc/components/CardDataVizLine/CardDataVizLine.tsx",
12
- "intentStatus": "complete",
13
- "intent": {
14
- "audience": "specialized",
15
- "status": "experimental",
16
- "summary": "Canonical line-chart dashboard card with shared data-viz chrome, a filter action, fill chart region, and a static horizontal legend.",
17
- "useWhen": [
18
- "A dashboard widget needs the standard line chart and visible series key in one data-viz card.",
19
- "The legend identifies static line series and should not highlight or dim rows on hover."
20
- ],
21
- "avoidWhen": [
22
- "The visualization needs chart-to-legend hover synchronization or selectable series controls.",
23
- "The product needs a custom legend treatment, supporting metrics, or an alternate chart layout."
24
- ],
25
- "alternatives": [
26
- {
27
- "when": "The line chart and legend need a custom layout without card chrome.",
28
- "component": "component:ds-chart-line",
29
- "reason": "Compose ChartLine and a static ChartLegend directly in the product-owned layout."
30
- },
31
- {
32
- "when": "The visualization communicates parts of a total with synchronized slice emphasis.",
33
- "component": "component:ds-card-data-viz-donut",
34
- "reason": "CardDataVizDonut owns the donut layout and bidirectional hover synchronization."
35
- }
36
- ],
37
- "commonlyComposedWith": [
38
- "component:ds-card-shell-data-viz",
39
- "component:ds-chart-line",
40
- "component:ds-chart-legend",
41
- "component:ds-button-unfilled"
42
- ],
43
- "accessibility": [
44
- "Provide a concise heading that identifies the trend and meaningful visible labels for every legend entry.",
45
- "Keep essential series and value context available textually rather than relying on line color alone.",
46
- "The card disables decorative legend-row hover; genuine legend links retain native link semantics and affordances."
47
- ],
48
- "states": [
49
- "Bar, Line, and Donut cards share the same fill-chart and content-sized-legend body contract so dashboard card geometry remains aligned across chart types.",
50
- "The chart region fills the remaining card body while the legend remains content-sized.",
51
- "The card disables local hover highlighting on a slotted ChartLegend because the line chart is static.",
52
- "Chart and legend regions render only when their corresponding slots contain content, avoiding empty region spacing.",
53
- "The owning product controls data, filtering, loading, empty, and error state; the card emits the filter action only."
54
- ],
55
- "responsiveBehavior": [
56
- "The selected sm, md, or lg shell size controls the card dimensions while the line chart reflows to the chart region without visually scaling its primitives.",
57
- "The horizontal legend wraps complete entries when the available width is constrained.",
58
- "The parent dashboard owns card wrapping and breakpoint changes."
59
- ],
60
- "frameworkCaveats": {
61
- "customElements": [
62
- "Assign series, categories, and legend items as JavaScript properties, then place the chart and legend in their named slots."
63
- ],
64
- "react": [
65
- "Keep filter and dataset state in the owner; pass the chart and legend with chart and legend slot attributes."
66
- ],
67
- "angular": [
68
- "Keep filter and dataset state in the owner; project the chart and legend into the chart and legend slots."
69
- ]
70
- },
71
- "references": [
72
- {
73
- "label": "Storybook examples",
74
- "path": "src/wc/components/CardDataVizLine/CardDataVizLine.stories.ts"
75
- }
76
- ]
77
- },
78
- "api": {
79
- "props": {
80
- "cardWidth": {
81
- "type": "CardDataVizLineWidth",
82
- "resolvedType": "\"lg\" | \"md\" | \"sm\"",
83
- "attribute": "card-width",
84
- "default": "'md'",
85
- "required": false,
86
- "mutable": false,
87
- "description": "Card width token — also sets matching min-height."
88
- },
89
- "filterLabel": {
90
- "type": "string",
91
- "resolvedType": "string",
92
- "attribute": "filter-label",
93
- "default": "'Filter'",
94
- "required": false,
95
- "mutable": false
96
- },
97
- "heading": {
98
- "type": "string",
99
- "resolvedType": "string",
100
- "attribute": "heading",
101
- "required": true,
102
- "mutable": false,
103
- "description": "Widget heading shown in the card header."
104
- }
105
- },
106
- "events": [
107
- {
108
- "name": "dsFilterClick",
109
- "detail": "void",
110
- "bubbles": true,
111
- "cancelable": true,
112
- "composed": true,
113
- "description": "Emits when the header filter control is activated."
114
- }
115
- ],
116
- "methods": [],
117
- "slots": []
118
- },
119
- "props": {
120
- "cardWidth": {
121
- "type": "CardDataVizLineWidth",
122
- "resolvedType": "\"lg\" | \"md\" | \"sm\"",
123
- "attribute": "card-width",
124
- "default": "'md'",
125
- "required": false,
126
- "mutable": false,
127
- "description": "Card width token — also sets matching min-height."
128
- },
129
- "filterLabel": {
130
- "type": "string",
131
- "resolvedType": "string",
132
- "attribute": "filter-label",
133
- "default": "'Filter'",
134
- "required": false,
135
- "mutable": false
136
- },
137
- "heading": {
138
- "type": "string",
139
- "resolvedType": "string",
140
- "attribute": "heading",
141
- "required": true,
142
- "mutable": false,
143
- "description": "Widget heading shown in the card header."
144
- }
145
- },
146
- "events": [
147
- {
148
- "name": "dsFilterClick",
149
- "detail": "void",
150
- "bubbles": true,
151
- "cancelable": true,
152
- "composed": true,
153
- "description": "Emits when the header filter control is activated."
154
- }
155
- ],
156
- "methods": [],
157
- "slots": [],
158
- "exports": {
159
- "customElement": "ds-card-data-viz-line",
160
- "react": "DsCardDataVizLine",
161
- "angular": "DsCardDataVizLine"
162
- },
163
- "consumption": {
164
- "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
165
- "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
166
- "customElements": {
167
- "import": "import '@ds-mo/ui/dist/components/ds-card-data-viz-line.js';",
168
- "example": "<ds-card-data-viz-line></ds-card-data-viz-line>"
169
- },
170
- "react": {
171
- "import": "import { DsCardDataVizLine } from '@ds-mo/ui/react';",
172
- "example": "<DsCardDataVizLine />"
173
- },
174
- "angular": {
175
- "import": "import { DsCardDataVizLine } from '@ds-mo/ui/angular/ds-card-data-viz-line';",
176
- "example": "<ds-card-data-viz-line></ds-card-data-viz-line>"
177
- },
178
- "peerDependencies": {
179
- "required": [
180
- "@ds-mo/tokens ^5.0.0",
181
- "@ds-mo/icons ^6.4.0"
182
- ],
183
- "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
184
- }
185
- }
186
- },
187
- "dependencies": [
188
- "@ds-mo/ui",
189
- "@ds-mo/tokens"
190
- ],
191
- "registryDependencies": [
192
- "button-unfilled",
193
- "card-shell-data-viz"
194
- ],
195
- "files": [
196
- {
197
- "path": "src/wc/components/CardDataVizLine/CardDataVizLine.css",
198
- "content": "@import '../../utils/data-viz-card-layout.css';\n\n:host {\n display: contents;\n}\n",
199
- "type": "registry:ui"
200
- },
201
- {
202
- "path": "src/wc/components/CardDataVizLine/CardDataVizLine.tsx",
203
- "content": "import { Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core';\nimport type { CardShellDataVizWidth } from '../CardShellDataViz/CardShellDataViz';\n\nexport type CardDataVizLineWidth = CardShellDataVizWidth;\n\ntype StaticLegendSlot = HTMLElement & {\n highlightOnHover?: boolean;\n};\n\n/**\n * Line-chart data-viz card — dedicated `ds-card-shell-data-viz` chrome with a fill chart\n * region and a content-sized, static legend.\n */\n@Component({\n tag: 'ds-card-data-viz-line',\n styleUrl: 'CardDataVizLine.css',\n scoped: true,\n})\nexport class CardDataVizLine {\n @Element() el!: HTMLElement;\n\n /** Widget heading shown in the card header. */\n @Prop() heading!: string;\n\n /** Card width token — also sets matching min-height. */\n @Prop() cardWidth: CardDataVizLineWidth = 'md';\n @Prop() filterLabel: string = 'Filter';\n\n /** Emits when the header filter control is activated. */\n @Event() dsFilterClick!: EventEmitter<void>;\n\n @State() private hasChartSlot = false;\n @State() private hasLegendSlot = false;\n\n componentWillRender() {\n this.hasChartSlot = !!this.el.querySelector('[slot=\"chart\"]');\n this.hasLegendSlot = !!this.el.querySelector('[slot=\"legend\"]');\n }\n\n componentDidRender() {\n const legend = this.el.querySelector(\n 'ds-chart-legend[slot=\"legend\"]'\n ) as StaticLegendSlot | null;\n if (!legend) return;\n legend.setAttribute('highlight-on-hover', 'false');\n if ('highlightOnHover' in legend) legend.highlightOnHover = false;\n }\n\n private handleFilterClick = () => {\n this.dsFilterClick.emit();\n };\n\n render() {\n return (\n <Host class=\"card-data-viz-line\">\n <ds-card-shell-data-viz heading={this.heading} cardWidth={this.cardWidth}>\n <ds-button-unfilled\n slot=\"actions\"\n variant=\"icon\"\n type=\"button\"\n icon=\"Filters\"\n aria-label={this.filterLabel}\n onDsClick={this.handleFilterClick}\n />\n <div class=\"ds-data-viz-card-layout\">\n {this.hasChartSlot && (\n <div class=\"ds-data-viz-card-chart\">\n <slot name=\"chart\" />\n </div>\n )}\n {this.hasLegendSlot && (\n <div class=\"ds-data-viz-card-legend\">\n <slot name=\"legend\" />\n </div>\n )}\n </div>\n </ds-card-shell-data-viz>\n </Host>\n );\n }\n}\n",
204
- "type": "registry:ui"
205
- }
206
- ]
207
- }