@ds-mo/ui 13.6.1 → 13.8.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 (315) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +109 -371
  4. package/dist/angular/ds-card-chart.d.ts +18 -0
  5. package/dist/angular/{ds-card-data-viz.js → ds-card-chart.js} +10 -10
  6. package/dist/angular/ds-chart.d.ts +19 -0
  7. package/dist/angular/{ds-chart-donut.js → ds-chart.js} +15 -15
  8. package/dist/angular/ds-tooltip-chart.d.ts +12 -0
  9. package/dist/angular/{ds-chart-line.js → ds-tooltip-chart.js} +12 -12
  10. package/dist/angular/index.d.ts +1 -1
  11. package/dist/angular/index.js +3 -5
  12. package/dist/angular/proxies.d.ts +3 -5
  13. package/dist/angular/proxies.js +3 -5
  14. package/dist/components/ds-agent-activity.js +1 -1
  15. package/dist/components/ds-agent-response.js +1 -1
  16. package/dist/components/ds-agent-source-list.js +1 -1
  17. package/dist/components/ds-agent-tool-call.js +1 -1
  18. package/dist/components/ds-attachment-list.js +1 -1
  19. package/dist/components/ds-badge.js +1 -1
  20. package/dist/components/ds-banner.js +1 -1
  21. package/dist/components/ds-banner.js.map +1 -1
  22. package/dist/components/ds-bar-nav.js +1 -1
  23. package/dist/components/ds-bar-title.js +1 -1
  24. package/dist/components/ds-bar-workflow.js +1 -1
  25. package/dist/components/ds-breadcrumb.js +1 -1
  26. package/dist/components/ds-button-filled.js +1 -1
  27. package/dist/components/ds-button-unfilled.js +1 -1
  28. package/dist/components/{ds-chart-line.d.ts → ds-card-chart.d.ts} +4 -4
  29. package/dist/components/ds-card-chart.js +2 -0
  30. package/dist/components/ds-card-chart.js.map +1 -0
  31. package/dist/components/ds-card-overview.js +1 -1
  32. package/dist/components/ds-card-overview.js.map +1 -1
  33. package/dist/components/ds-card-setting.js +1 -1
  34. package/dist/components/ds-card-setting.js.map +1 -1
  35. package/dist/components/ds-chart-legend.js +1 -1
  36. package/dist/components/ds-chart-legend.js.map +1 -1
  37. package/dist/components/{ds-chart-bar.d.ts → ds-chart.d.ts} +4 -4
  38. package/dist/components/ds-chart.js +2 -0
  39. package/dist/components/ds-chart.js.map +1 -0
  40. package/dist/components/ds-checkbox.js +1 -1
  41. package/dist/components/ds-chip.js +1 -1
  42. package/dist/components/ds-code-block.js +1 -1
  43. package/dist/components/ds-conversation-list-item.js +1 -1
  44. package/dist/components/ds-conversation-list-section.js +1 -1
  45. package/dist/components/ds-conversation-list.js +1 -1
  46. package/dist/components/ds-divider.js +1 -1
  47. package/dist/components/ds-empty-state.js +1 -1
  48. package/dist/components/ds-field.js +1 -1
  49. package/dist/components/ds-input.js +1 -1
  50. package/dist/components/ds-markdown.js +1 -1
  51. package/dist/components/ds-menu.js +1 -1
  52. package/dist/components/ds-message-actions.js +1 -1
  53. package/dist/components/ds-message-bubble.js +1 -1
  54. package/dist/components/ds-message-composer.js +1 -1
  55. package/dist/components/ds-message-scroller.js +1 -1
  56. package/dist/components/ds-message.js +1 -1
  57. package/dist/components/ds-mobile-bar-nav.js +1 -1
  58. package/dist/components/ds-mobile-header.js +1 -1
  59. package/dist/components/ds-mobile-section-switcher.js +1 -1
  60. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  61. package/dist/components/ds-modal.js +1 -1
  62. package/dist/components/ds-modal.js.map +1 -1
  63. package/dist/components/ds-panel-nav.js +1 -1
  64. package/dist/components/ds-panel-sub-nav.js +1 -1
  65. package/dist/components/ds-panel-tool-header.js +1 -1
  66. package/dist/components/ds-panel-tool-search.js +1 -1
  67. package/dist/components/ds-panel-tools.js +1 -1
  68. package/dist/components/ds-radio.js +1 -1
  69. package/dist/components/ds-scroll-overlay.js +1 -1
  70. package/dist/components/ds-select.js +1 -1
  71. package/dist/components/ds-select.js.map +1 -1
  72. package/dist/components/ds-shell-app.js +1 -1
  73. package/dist/components/ds-shell-page.js +1 -1
  74. package/dist/components/ds-shell-tools.js +1 -1
  75. package/dist/components/ds-skeleton.js +1 -1
  76. package/dist/components/ds-slider.js +1 -1
  77. package/dist/components/ds-swatch-picker.js +1 -1
  78. package/dist/components/ds-switch.js +1 -1
  79. package/dist/components/ds-tab-group.js +1 -1
  80. package/dist/components/ds-tag.js +1 -1
  81. package/dist/components/ds-text.js +1 -1
  82. package/dist/components/ds-toast.js +1 -1
  83. package/dist/components/ds-toast.js.map +1 -1
  84. package/dist/components/{ds-card-data-viz.d.ts → ds-tooltip-chart.d.ts} +4 -4
  85. package/dist/components/ds-tooltip-chart.js +2 -0
  86. package/dist/components/ds-tooltip.js +1 -1
  87. package/dist/components/ds-typing-indicator.js +1 -1
  88. package/dist/components/{p-iCjUWcp7.js → p-2inC7Jm-.js} +2 -2
  89. package/dist/components/{p-iCjUWcp7.js.map → p-2inC7Jm-.js.map} +1 -1
  90. package/dist/components/{p-DaqFuVKZ.js → p-B16OuqyJ.js} +2 -2
  91. package/dist/components/{p-BmNpPyzf.js → p-B4VlfBNc.js} +2 -2
  92. package/dist/components/{p-og48Kh2i.js → p-B6z51yBf.js} +2 -2
  93. package/dist/components/{p-Bb4f5SuF.js → p-BNiIyZCn.js} +2 -2
  94. package/dist/components/{p-BFfHIu6y.js → p-BP-EtYbR.js} +2 -2
  95. package/dist/components/{p-DHF5cLzr.js → p-BQ7Nzx9A.js} +2 -2
  96. package/dist/components/{p-B-kRByho.js → p-BQDi0v_h.js} +2 -2
  97. package/dist/components/{p-BBtjABBS.js → p-BYB0f1_F.js} +2 -2
  98. package/dist/components/p-BjIYFiuQ.js +2 -0
  99. package/dist/components/{p-D0bM3cKj.js.map → p-BjIYFiuQ.js.map} +1 -1
  100. package/dist/components/{p-DfvDNcoq.js → p-BjoyHNaM.js} +2 -2
  101. package/dist/components/{p-Bl6A5AJq.js → p-BkWhTEqe.js} +2 -2
  102. package/dist/components/p-BnGJrBPG.js +2 -0
  103. package/dist/components/{p-1S9AW2MA.js.map → p-BnGJrBPG.js.map} +1 -1
  104. package/dist/components/p-BtS5na9O.js +2 -0
  105. package/dist/components/{p-DX4c3kZ1.js.map → p-BtS5na9O.js.map} +1 -1
  106. package/dist/components/p-CCYgBUUS.js +2 -0
  107. package/dist/components/{p-D2cjoj2r.js.map → p-CCYgBUUS.js.map} +1 -1
  108. package/dist/components/p-CXduurfd.js +2 -0
  109. package/dist/components/p-CXduurfd.js.map +1 -0
  110. package/dist/components/{p-CxgMUvqg.js → p-CnbrksLl.js} +2 -2
  111. package/dist/components/{p-Eep5mxtv.js → p-Cog5NTLa.js} +2 -2
  112. package/dist/components/{p-Bmo4T96l.js → p-D2dQyoyK.js} +2 -2
  113. package/dist/components/{p-BPyymeuR.js → p-D6g070eY.js} +2 -2
  114. package/dist/components/{p-wOOAzVMC.js → p-D8qgVmHn.js} +2 -2
  115. package/dist/components/{p-BR_oMaas.js → p-DJ0XMH9E.js} +2 -2
  116. package/dist/components/{p-B6RrZQqw.js → p-DK4PGrHm.js} +2 -2
  117. package/dist/components/{p-DVuxzrCC.js → p-DLwM1RNL.js} +2 -2
  118. package/dist/components/p-DW9p068S.js +2 -0
  119. package/dist/components/{p-CuJ3J6OJ.js.map → p-DW9p068S.js.map} +1 -1
  120. package/dist/components/{p-Bsfpxto1.js → p-Dg9qiMDa.js} +2 -2
  121. package/dist/components/p-Dg9qiMDa.js.map +1 -0
  122. package/dist/components/{p-B4_0Ys4w.js → p-DgglLVCj.js} +2 -2
  123. package/dist/components/p-DmblUQ4D.js +2 -0
  124. package/dist/components/p-DmblUQ4D.js.map +1 -0
  125. package/dist/components/{p-6B411hQA.js → p-Dv8_hmUZ.js} +2 -2
  126. package/dist/components/{p-IYy-jODg.js → p-DwKC_9u2.js} +2 -2
  127. package/dist/components/p-GbTasczF.js +2 -0
  128. package/dist/components/{p-CzraIk34.js → p-HIg1XX62.js} +2 -2
  129. package/dist/components/{p-Di81y9Q2.js → p-KFHFBznh.js} +2 -2
  130. package/dist/components/{p-CKRJX0Y0.js → p-PQgDzzn9.js} +2 -2
  131. package/dist/components/{p-Ca6s5fLR.js → p-iyiOFsws.js} +2 -2
  132. package/dist/docs/components.json +180 -662
  133. package/dist/lib/utils/chart-grammar.d.ts +359 -0
  134. package/dist/lib/utils/index.d.ts +2 -0
  135. package/dist/lib/utils/index.js +504 -0
  136. package/dist/lib/utils/index.js.map +4 -4
  137. package/dist/lib/utils/token-defaults.d.ts +3 -0
  138. package/dist/mcp-data/registry/agent-activity.json +1 -1
  139. package/dist/mcp-data/registry/agent-response.json +1 -1
  140. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  141. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  142. package/dist/mcp-data/registry/attachment-list.json +1 -1
  143. package/dist/mcp-data/registry/avatar.json +1 -1
  144. package/dist/mcp-data/registry/badge.json +1 -1
  145. package/dist/mcp-data/registry/banner.json +1 -1
  146. package/dist/mcp-data/registry/bar-nav.json +2 -2
  147. package/dist/mcp-data/registry/bar-title.json +1 -1
  148. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  149. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  150. package/dist/mcp-data/registry/button-filled.json +1 -1
  151. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  152. package/dist/mcp-data/registry/card-chart.json +238 -0
  153. package/dist/mcp-data/registry/card-overview.json +7 -7
  154. package/dist/mcp-data/registry/card-setting.json +5 -5
  155. package/dist/mcp-data/registry/chart-legend.json +12 -19
  156. package/dist/mcp-data/registry/chart.json +258 -0
  157. package/dist/mcp-data/registry/checkbox.json +1 -1
  158. package/dist/mcp-data/registry/chip.json +1 -1
  159. package/dist/mcp-data/registry/code-block.json +1 -1
  160. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  161. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  162. package/dist/mcp-data/registry/conversation-list.json +1 -1
  163. package/dist/mcp-data/registry/divider.json +1 -1
  164. package/dist/mcp-data/registry/empty-state.json +1 -1
  165. package/dist/mcp-data/registry/field.json +1 -1
  166. package/dist/mcp-data/registry/icon.json +1 -1
  167. package/dist/mcp-data/registry/input.json +1 -1
  168. package/dist/mcp-data/registry/loader.json +1 -1
  169. package/dist/mcp-data/registry/markdown.json +1 -1
  170. package/dist/mcp-data/registry/menu.json +1 -1
  171. package/dist/mcp-data/registry/message-actions.json +1 -1
  172. package/dist/mcp-data/registry/message-bubble.json +1 -1
  173. package/dist/mcp-data/registry/message-composer.json +1 -1
  174. package/dist/mcp-data/registry/message-scroller.json +1 -1
  175. package/dist/mcp-data/registry/message.json +1 -1
  176. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  177. package/dist/mcp-data/registry/mobile-header.json +1 -1
  178. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  179. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  180. package/dist/mcp-data/registry/modal.json +1 -1
  181. package/dist/mcp-data/registry/panel-nav.json +1 -1
  182. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  183. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  184. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  185. package/dist/mcp-data/registry/panel-tools.json +1 -1
  186. package/dist/mcp-data/registry/radio.json +1 -1
  187. package/dist/mcp-data/registry/registry.json +109 -377
  188. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  189. package/dist/mcp-data/registry/select.json +1 -1
  190. package/dist/mcp-data/registry/shell-app.json +1 -1
  191. package/dist/mcp-data/registry/shell-page.json +1 -1
  192. package/dist/mcp-data/registry/shell-tools.json +1 -1
  193. package/dist/mcp-data/registry/skeleton.json +3 -3
  194. package/dist/mcp-data/registry/slider.json +1 -1
  195. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  196. package/dist/mcp-data/registry/switch.json +1 -1
  197. package/dist/mcp-data/registry/tab-group.json +1 -1
  198. package/dist/mcp-data/registry/tag.json +1 -1
  199. package/dist/mcp-data/registry/text.json +1 -1
  200. package/dist/mcp-data/registry/toast.json +1 -1
  201. package/dist/mcp-data/registry/tooltip-chart.json +253 -0
  202. package/dist/mcp-data/registry/tooltip.json +3 -3
  203. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  204. package/dist/react/components.d.ts +3 -5
  205. package/dist/react/components.js +3 -5
  206. package/dist/react/ds-card-chart.d.ts +12 -0
  207. package/dist/react/ds-card-chart.js +12 -0
  208. package/dist/react/ds-chart.d.ts +12 -0
  209. package/dist/react/ds-chart.js +12 -0
  210. package/dist/react/{ds-chart-bar.d.ts → ds-tooltip-chart.d.ts} +3 -3
  211. package/dist/react/ds-tooltip-chart.js +12 -0
  212. package/dist/types/components/{CardDataViz/CardDataViz.d.ts → CardChart/CardChart.d.ts} +9 -13
  213. package/dist/types/components/CardChart/index.d.ts +2 -0
  214. package/dist/types/components/CardOverview/CardOverview.d.ts +2 -0
  215. package/dist/types/components/Chart/Chart.d.ts +66 -0
  216. package/dist/types/components/Chart/index.d.ts +2 -0
  217. package/dist/types/components/ChartLegend/ChartLegend.d.ts +1 -1
  218. package/dist/types/components/{TooltipDataViz/TooltipDataViz.d.ts → TooltipChart/TooltipChart.d.ts} +15 -6
  219. package/dist/types/components/TooltipChart/index.d.ts +2 -0
  220. package/dist/types/components.d.ts +129 -294
  221. package/dist/types/utils/chart-grammar.d.ts +360 -0
  222. package/dist/types/utils/chart-scene.d.ts +128 -0
  223. package/dist/types/utils/chart-theme.d.ts +27 -0
  224. package/dist/types/utils/chart-types.d.ts +0 -13
  225. package/dist/types/utils/index.d.ts +2 -0
  226. package/dist/types/utils/token-defaults.d.ts +3 -0
  227. package/package.json +3 -3
  228. package/dist/angular/ds-card-data-viz.d.ts +0 -18
  229. package/dist/angular/ds-chart-bar.d.ts +0 -12
  230. package/dist/angular/ds-chart-bar.js +0 -38
  231. package/dist/angular/ds-chart-donut.d.ts +0 -19
  232. package/dist/angular/ds-chart-line.d.ts +0 -12
  233. package/dist/angular/ds-tooltip-data-viz.d.ts +0 -12
  234. package/dist/angular/ds-tooltip-data-viz.js +0 -38
  235. package/dist/components/ds-card-data-viz.js +0 -2
  236. package/dist/components/ds-card-data-viz.js.map +0 -1
  237. package/dist/components/ds-chart-bar.js +0 -2
  238. package/dist/components/ds-chart-bar.js.map +0 -1
  239. package/dist/components/ds-chart-donut.d.ts +0 -11
  240. package/dist/components/ds-chart-donut.js +0 -2
  241. package/dist/components/ds-chart-donut.js.map +0 -1
  242. package/dist/components/ds-chart-line.js +0 -2
  243. package/dist/components/ds-chart-line.js.map +0 -1
  244. package/dist/components/ds-tooltip-data-viz.d.ts +0 -11
  245. package/dist/components/ds-tooltip-data-viz.js +0 -2
  246. package/dist/components/p-1S9AW2MA.js +0 -2
  247. package/dist/components/p-B6Vuayt6.js +0 -2
  248. package/dist/components/p-B6Vuayt6.js.map +0 -1
  249. package/dist/components/p-BBpASejH.js +0 -2
  250. package/dist/components/p-BBpASejH.js.map +0 -1
  251. package/dist/components/p-Bsfpxto1.js.map +0 -1
  252. package/dist/components/p-BybqPD8K.js +0 -2
  253. package/dist/components/p-BybqPD8K.js.map +0 -1
  254. package/dist/components/p-C4uYvyq6.js +0 -2
  255. package/dist/components/p-C4uYvyq6.js.map +0 -1
  256. package/dist/components/p-CbjFUpOj.js +0 -2
  257. package/dist/components/p-CbjFUpOj.js.map +0 -1
  258. package/dist/components/p-CrCGIx8s.js +0 -2
  259. package/dist/components/p-CrCGIx8s.js.map +0 -1
  260. package/dist/components/p-CuJ3J6OJ.js +0 -2
  261. package/dist/components/p-D0bM3cKj.js +0 -2
  262. package/dist/components/p-D2cjoj2r.js +0 -2
  263. package/dist/components/p-DX4c3kZ1.js +0 -2
  264. package/dist/components/p-DXewjzkM.js +0 -2
  265. package/dist/components/p-DXewjzkM.js.map +0 -1
  266. package/dist/components/p-yhj1lIPx.js +0 -2
  267. package/dist/mcp-data/registry/card-data-viz.json +0 -241
  268. package/dist/mcp-data/registry/chart-bar.json +0 -245
  269. package/dist/mcp-data/registry/chart-donut.json +0 -344
  270. package/dist/mcp-data/registry/chart-line.json +0 -223
  271. package/dist/mcp-data/registry/tooltip-data-viz.json +0 -224
  272. package/dist/react/ds-card-data-viz.d.ts +0 -12
  273. package/dist/react/ds-card-data-viz.js +0 -12
  274. package/dist/react/ds-chart-bar.js +0 -12
  275. package/dist/react/ds-chart-donut.d.ts +0 -12
  276. package/dist/react/ds-chart-donut.js +0 -12
  277. package/dist/react/ds-chart-line.d.ts +0 -9
  278. package/dist/react/ds-chart-line.js +0 -12
  279. package/dist/react/ds-tooltip-data-viz.d.ts +0 -9
  280. package/dist/react/ds-tooltip-data-viz.js +0 -12
  281. package/dist/types/components/CardDataViz/index.d.ts +0 -2
  282. package/dist/types/components/ChartBar/ChartBar.d.ts +0 -31
  283. package/dist/types/components/ChartBar/index.d.ts +0 -3
  284. package/dist/types/components/ChartDonut/ChartDonut.d.ts +0 -72
  285. package/dist/types/components/ChartDonut/index.d.ts +0 -2
  286. package/dist/types/components/ChartLine/ChartLine.d.ts +0 -23
  287. package/dist/types/components/ChartLine/index.d.ts +0 -2
  288. package/dist/types/components/TooltipDataViz/index.d.ts +0 -2
  289. /package/dist/components/{ds-tooltip-data-viz.js.map → ds-tooltip-chart.js.map} +0 -0
  290. /package/dist/components/{p-DaqFuVKZ.js.map → p-B16OuqyJ.js.map} +0 -0
  291. /package/dist/components/{p-BmNpPyzf.js.map → p-B4VlfBNc.js.map} +0 -0
  292. /package/dist/components/{p-og48Kh2i.js.map → p-B6z51yBf.js.map} +0 -0
  293. /package/dist/components/{p-Bb4f5SuF.js.map → p-BNiIyZCn.js.map} +0 -0
  294. /package/dist/components/{p-BFfHIu6y.js.map → p-BP-EtYbR.js.map} +0 -0
  295. /package/dist/components/{p-DHF5cLzr.js.map → p-BQ7Nzx9A.js.map} +0 -0
  296. /package/dist/components/{p-B-kRByho.js.map → p-BQDi0v_h.js.map} +0 -0
  297. /package/dist/components/{p-BBtjABBS.js.map → p-BYB0f1_F.js.map} +0 -0
  298. /package/dist/components/{p-DfvDNcoq.js.map → p-BjoyHNaM.js.map} +0 -0
  299. /package/dist/components/{p-Bl6A5AJq.js.map → p-BkWhTEqe.js.map} +0 -0
  300. /package/dist/components/{p-CxgMUvqg.js.map → p-CnbrksLl.js.map} +0 -0
  301. /package/dist/components/{p-Eep5mxtv.js.map → p-Cog5NTLa.js.map} +0 -0
  302. /package/dist/components/{p-Bmo4T96l.js.map → p-D2dQyoyK.js.map} +0 -0
  303. /package/dist/components/{p-BPyymeuR.js.map → p-D6g070eY.js.map} +0 -0
  304. /package/dist/components/{p-wOOAzVMC.js.map → p-D8qgVmHn.js.map} +0 -0
  305. /package/dist/components/{p-BR_oMaas.js.map → p-DJ0XMH9E.js.map} +0 -0
  306. /package/dist/components/{p-B6RrZQqw.js.map → p-DK4PGrHm.js.map} +0 -0
  307. /package/dist/components/{p-DVuxzrCC.js.map → p-DLwM1RNL.js.map} +0 -0
  308. /package/dist/components/{p-B4_0Ys4w.js.map → p-DgglLVCj.js.map} +0 -0
  309. /package/dist/components/{p-6B411hQA.js.map → p-Dv8_hmUZ.js.map} +0 -0
  310. /package/dist/components/{p-IYy-jODg.js.map → p-DwKC_9u2.js.map} +0 -0
  311. /package/dist/components/{p-yhj1lIPx.js.map → p-GbTasczF.js.map} +0 -0
  312. /package/dist/components/{p-CzraIk34.js.map → p-HIg1XX62.js.map} +0 -0
  313. /package/dist/components/{p-Di81y9Q2.js.map → p-KFHFBznh.js.map} +0 -0
  314. /package/dist/components/{p-CKRJX0Y0.js.map → p-PQgDzzn9.js.map} +0 -0
  315. /package/dist/components/{p-Ca6s5fLR.js.map → p-iyiOFsws.js.map} +0 -0
@@ -12,7 +12,7 @@
12
12
  "themeSetup": "Set data-theme=\"dark\" on <html> for dark mode. Light is default.",
13
13
  "peerDependencies": {
14
14
  "required": [
15
- "@ds-mo/tokens ^5.1.1",
15
+ "@ds-mo/tokens ^5.1.2",
16
16
  "@ds-mo/icons ^6.4.0"
17
17
  ],
18
18
  "optional": [],
@@ -1880,24 +1880,24 @@
1880
1880
  ]
1881
1881
  },
1882
1882
  {
1883
- "name": "card-data-viz",
1884
- "title": "CardDataViz",
1885
- "description": "Standard data-visualization card chrome with variant-owned chart and legend composition.",
1883
+ "name": "card-chart",
1884
+ "title": "CardChart",
1885
+ "description": "Standard chart card chrome with variant-owned chart and legend composition.",
1886
1886
  "type": "registry:ui",
1887
1887
  "meta": {
1888
1888
  "library": "@ds-mo/ui",
1889
1889
  "distribution": "npm",
1890
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-data-viz",
1891
- "source": "src/wc/components/CardDataViz/CardDataViz.tsx",
1890
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-chart",
1891
+ "source": "src/wc/components/CardChart/CardChart.tsx",
1892
1892
  "intentStatus": "complete",
1893
1893
  "intent": {
1894
1894
  "audience": "specialized",
1895
- "status": "experimental",
1896
- "summary": "Standard data-visualization card chrome with variant-owned chart and legend composition.",
1895
+ "status": "stable",
1896
+ "summary": "Standard chart card chrome with variant-owned chart and legend composition.",
1897
1897
  "useWhen": [
1898
- "A chart, legend, metric visualization, or custom data-viz composition needs standard card chrome.",
1899
- "Bar and line legends should remain static, or a donut and legend should cross-highlight without redundant donut tooltips.",
1900
- "A data-viz card needs a visible heading, optional filter action, and application-owned chart data."
1898
+ "A chart, legend, metric visualization, or custom chart composition needs standard card chrome.",
1899
+ "A chart and static external legend need one standard card layout.",
1900
+ "A chart card needs a visible heading, optional filter action, and application-owned chart data."
1901
1901
  ],
1902
1902
  "avoidWhen": [
1903
1903
  "The card contains editable settings; use CardSetting.",
@@ -1912,9 +1912,7 @@
1912
1912
  }
1913
1913
  ],
1914
1914
  "commonlyComposedWith": [
1915
- "component:ds-chart-bar",
1916
- "component:ds-chart-donut",
1917
- "component:ds-chart-line",
1915
+ "component:ds-chart",
1918
1916
  "component:ds-chart-legend",
1919
1917
  "component:ds-button-unfilled"
1920
1918
  ],
@@ -1922,22 +1920,21 @@
1922
1920
  "Provide a concise visible heading; the component renders it as a section heading.",
1923
1921
  "Slotted actions must provide accessible names and controlled-state semantics.",
1924
1922
  "Charts retain their own image names and data summaries.",
1925
- "A visible donut legend owns persistent labels and values, so donut mode suppresses the redundant slice tooltip."
1923
+ "A visible legend provides persistent labels while the chart retains its own accessible name and focus behavior."
1926
1924
  ],
1927
1925
  "states": [
1928
1926
  "Custom mode provides flexible body chrome and does not mutate chart or legend interaction.",
1929
- "Bar and line modes keep a slotted legend static by disabling hover emphasis.",
1930
- "Donut mode synchronizes active labels between chart and legend and shows chart tooltips only when no legend is present.",
1927
+ "Chart mode keeps a slotted external legend static by disabling hover emphasis.",
1931
1928
  "showFilter adds the standard filter action and emits dsFilterClick without owning filter state."
1932
1929
  ],
1933
1930
  "responsiveBehavior": [
1934
1931
  "The sm, md, or lg width sets a matching token-based minimum height and remains constrained by its parent.",
1935
- "The body allocates remaining height to the chart while legends retain content height.",
1932
+ "The body allocates remaining height to an unconfigured ds-chart while legends retain content height; authored chart height and aspectRatio remain authoritative.",
1936
1933
  "Parent layouts own wrapping, stacking, and breakpoint-dependent card width."
1937
1934
  ],
1938
1935
  "frameworkCaveats": {
1939
1936
  "customElements": [
1940
- "Set variant to bar, line, or donut when the component should manage legend interaction; slot chart, legend, actions, and supporting content by name."
1937
+ "Set variant to chart for the standard chart and static legend layout; slot chart, legend, actions, and supporting content by name."
1941
1938
  ],
1942
1939
  "react": [
1943
1940
  "Keep chart data in React and pass chart, legend, and action elements through named slots."
@@ -1949,13 +1946,13 @@
1949
1946
  "references": [
1950
1947
  {
1951
1948
  "label": "Storybook examples",
1952
- "path": "src/wc/components/CardDataViz/CardDataViz.stories.ts"
1949
+ "path": "src/wc/components/CardChart/CardChart.stories.ts"
1953
1950
  }
1954
1951
  ]
1955
1952
  },
1956
1953
  "props": {
1957
1954
  "cardWidth": {
1958
- "type": "CardDataVizWidth",
1955
+ "type": "CardChartWidth",
1959
1956
  "required": false
1960
1957
  },
1961
1958
  "filterLabel": {
@@ -1971,7 +1968,7 @@
1971
1968
  "required": false
1972
1969
  },
1973
1970
  "variant": {
1974
- "type": "CardDataVizVariant",
1971
+ "type": "CardChartVariant",
1975
1972
  "required": false
1976
1973
  }
1977
1974
  },
@@ -1983,9 +1980,9 @@
1983
1980
  ],
1984
1981
  "slots": [],
1985
1982
  "exports": {
1986
- "customElement": "ds-card-data-viz",
1987
- "react": "DsCardDataViz",
1988
- "angular": "DsCardDataViz"
1983
+ "customElement": "ds-card-chart",
1984
+ "react": "DsCardChart",
1985
+ "angular": "DsCardChart"
1989
1986
  }
1990
1987
  },
1991
1988
  "dependencies": [
@@ -2026,8 +2023,8 @@
2026
2023
  "alternatives": [
2027
2024
  {
2028
2025
  "when": "A measure needs a chart or other data visualization.",
2029
- "component": "component:ds-card-data-viz",
2030
- "reason": "CardDataViz owns the data-visualization card contract; the overview grid presents values and change only."
2026
+ "component": "component:ds-card-chart",
2027
+ "reason": "CardChart owns the data-visualization card contract; the overview grid presents values and change only."
2031
2028
  },
2032
2029
  {
2033
2030
  "when": "The surface is a settings section with an edit workflow.",
@@ -2053,11 +2050,11 @@
2053
2050
  "Trend is supplied already resolved as a direction, a formatted value, and a tone. Whether a rise reads well is a product decision, so the component never infers tone from the numbers. Derive it with resolveMetricTrend.",
2054
2051
  "Omit a trend when there is nothing to report; resolveMetricTrend returns null in that case so no zero change is rendered.",
2055
2052
  "Omit score to render a centered Score unavailable cell with a tertiary border and no score fill. Set scoreErrorMessage to replace that copy while the measures remain readable.",
2056
- "Loading replaces the score and the measures with skeletons and does not alter the slotted period control.",
2053
+ "Loading replaces the score and measures with skeletons and does not alter the slotted period control. When measures are already supplied, their count preserves the resolved grid shape; otherwise five measure placeholders join the score in the standard six-cell grid.",
2057
2054
  "At most seven measures are shown. Keep larger collections outside the summary bar rather than turning it into a dense dashboard.",
2058
2055
  "The period and filter controls are slotted rather than owned. Use the period slot when the current range is selectable; otherwise periodLabel supplies fixed current copy in the same md control-frame and label-inset anatomy. Use the filter slot for the application-owned comparison-window control. Slotted Selects use hasBorder false so the 48px bar owns their surrounding boundary.",
2059
2056
  "A numeric safety score infers fair from 0–50, good from 51–80, and excellent from 81–100. The level can be supplied explicitly when the displayed value is not numeric. The deprecated band field is ignored.",
2060
- "The safety score is the first grid cell and uses the same track, 8px outer inset, 6px inner padding, dividers, and responsive behavior as metric cells. The display value removes 12px from both block edges of its line box so it does not increase the shared row height. Score remains nonselectable and excluded from metric roving focus.",
2057
+ "The safety score is the first grid cell and uses the same track, 8px outer inset, 6px inner padding, dividers, and responsive behavior as metric cells. The display value removes 8px from both block edges of its line box so it does not increase the shared row height. Score remains nonselectable and excluded from metric roving focus.",
2061
2058
  "During page-controlled scroll collapse, the component preserves its expanded flow height and stationary reporting bar while the metric grid moves and clips beneath it. Elevation remains fitted to the visible surface.",
2062
2059
  "compact is exactly 48px high and renders only the reporting bar. It omits Score, measures, and footer."
2063
2060
  ],
@@ -2199,8 +2196,8 @@
2199
2196
  "alternatives": [
2200
2197
  {
2201
2198
  "when": "The surface contains a chart or specialized data-visualization composition.",
2202
- "component": "component:ds-card-data-viz",
2203
- "reason": "CardDataViz owns the independently evolving data-visualization card contract."
2199
+ "component": "component:ds-card-chart",
2200
+ "reason": "CardChart owns the independently evolving chart-card contract."
2204
2201
  },
2205
2202
  {
2206
2203
  "when": "The task must block the interface for one focused decision or short workflow.",
@@ -2317,263 +2314,113 @@
2317
2314
  ]
2318
2315
  },
2319
2316
  {
2320
- "name": "chart-bar",
2321
- "title": "ChartBar",
2322
- "description": "Bar chart for single-series magnitude, additive stacked totals, or normalized 0–100% composition across categories.",
2317
+ "name": "chart",
2318
+ "title": "Chart",
2319
+ "description": "Responsive chart grammar for Cartesian, polar, heatmap, and distribution compositions with one keyed scene and centralized focus.",
2323
2320
  "type": "registry:ui",
2324
2321
  "meta": {
2325
2322
  "library": "@ds-mo/ui",
2326
2323
  "distribution": "npm",
2327
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-bar",
2328
- "source": "src/wc/components/ChartBar/ChartBar.tsx",
2324
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/chart",
2325
+ "source": "src/wc/components/Chart/Chart.tsx",
2329
2326
  "intentStatus": "complete",
2330
2327
  "intent": {
2331
2328
  "audience": "specialized",
2332
- "status": "experimental",
2333
- "summary": "Bar chart for single-series magnitude, additive stacked totals, or normalized 0–100% composition across categories.",
2329
+ "status": "stable",
2330
+ "summary": "Responsive chart grammar for Cartesian, polar, heatmap, and distribution compositions with one keyed scene and centralized focus.",
2334
2331
  "useWhen": [
2335
- "Users need to compare one numeric measure across a small set of categories.",
2336
- "Values are grouped into ordered time buckets such as hours, days, weeks, or months and equal visual spacing is appropriate.",
2337
- "A data-viz card needs a compact magnitude comparison rather than a continuous trend.",
2338
- "Several consistent series contribute to each category total or its normalized composition."
2332
+ "A product needs a responsive line, area, bar, scatter, pie, donut, gauge, radar, heatmap, histogram, density, or boxplot visualization.",
2333
+ "Several mark layers must share scales and semantic interaction points."
2339
2334
  ],
2340
2335
  "avoidWhen": [
2341
- "Timestamp positions must reflect irregular elapsed time; pre-bucket the data or use a future continuous time-scale chart.",
2342
- "The visualization needs grouped bars or precise comparison of each individual series across categories.",
2343
- "The interaction requires selection, drill-down, brushing, or zoom.",
2344
- "The data communicates a part-to-whole relationship."
2345
- ],
2346
- "alternatives": [
2347
- {
2348
- "when": "Users need to follow one or more trends across ordered categories.",
2349
- "component": "component:ds-chart-line",
2350
- "reason": "ChartLine connects ordered observations and supports multiple named series."
2351
- },
2352
- {
2353
- "when": "The data communicates parts of a total.",
2354
- "component": "component:ds-chart-donut",
2355
- "reason": "ChartDonut provides the part-to-whole composition and center aggregate."
2356
- }
2336
+ "The visualization needs maps, networks, brushing, zooming, selection, or Canvas."
2357
2337
  ],
2338
+ "alternatives": [],
2358
2339
  "commonlyComposedWith": [
2359
2340
  "component:ds-chart-legend",
2360
- "component:ds-card-data-viz",
2361
- "component:ds-tooltip-data-viz"
2341
+ "component:ds-card-chart",
2342
+ "component:ds-tooltip-chart"
2362
2343
  ],
2363
2344
  "accessibility": [
2364
- "Keep category labels concise and provide an adjacent textual summary when exact values are critical to completing a task.",
2365
- "Do not rely on bar color alone to communicate category meaning.",
2366
- "A future interactive tooltip must supplement rather than replace the chart's accessible value representation."
2345
+ "Provide the required label and an adjacent exact-value summary when exact values are essential.",
2346
+ "The SVG is one tab stop; arrow keys, Home, End, and Escape control semantic focus.",
2347
+ "Pointer and keyboard input resolve through the same interaction points and polite status output."
2367
2348
  ],
2368
2349
  "states": [
2369
- "The chart is static without hover, selection, loading, or empty-state policy.",
2370
- "Single mode reads data. Stacked and percentage modes read aligned series and categories.",
2371
- "Stacked mode preserves raw totals; percentage mode normalizes every non-empty category to 100%.",
2372
- "An empty dataset renders no bars; the owning card or product supplies meaningful empty-state messaging.",
2373
- "Bars use 2px top corner radii while the lower corners touching the zero axis remain square.",
2374
- "Use one consistent bar color across time buckets when every bar is the same measure at a different interval; categorical color changes are for genuinely distinct categories.",
2375
- "Authored datum colors override the shared categorical palette."
2350
+ "Definition compilation is renderer-independent and regenerates when data, locale, width, or height changes.",
2351
+ "Stable mark and datum keys preserve focus across responsive recompilation and reordered data.",
2352
+ "Tooltip rows are chart-owned while legends remain external and static.",
2353
+ "Pie and donut pointer tooltips require direct slice containment and follow the pointer; keyboard tooltips remain anchored to the semantic slice.",
2354
+ "Polar center content defaults to its authored total and may opt into focused content."
2376
2355
  ],
2377
2356
  "responsiveBehavior": [
2378
- "Width and height provide the standalone intrinsic viewport; container constraints are measured and reflow the plot across the available pixels.",
2379
- "Responsive layout changes bar positions and plot extents without scaling SVG text, strokes, corner radii, or margins.",
2380
- "Limit or pre-format long category labels so they remain legible at the chosen width.",
2381
- "Time labels remain ordered, pre-formatted buckets with equal spacing rather than raw continuous timestamps."
2357
+ "The chart observes its container unless width is fixed and recompiles geometry at CSS pixel dimensions.",
2358
+ "Height uses an authored height or aspectRatio, fills the chart region supplied by CardChart, and otherwise defaults to 320px.",
2359
+ "Measured guide labels reserve margins and thin colliding ticks while retaining boundary ticks."
2382
2360
  ],
2383
2361
  "frameworkCaveats": {
2384
2362
  "customElements": [
2385
- "Assign data, series, and categories as JavaScript properties; arrays are not supported as HTML attributes."
2363
+ "Assign definition as a JavaScript property and import D3 scale factories from granular D3 packages."
2386
2364
  ],
2387
2365
  "react": [
2388
- "Pass stable data or series/category arrays; width and height provide standalone intrinsic dimensions while constrained containers reflow automatically."
2366
+ "Pass the typed definition object as a property; do not serialize it to an attribute."
2389
2367
  ],
2390
2368
  "angular": [
2391
- "Bind data or series/categories as properties; width and height provide standalone intrinsic dimensions while constrained containers reflow automatically."
2369
+ "Bind definition as a property so accessors and D3 factories remain intact."
2392
2370
  ]
2393
2371
  },
2394
2372
  "references": [
2395
2373
  {
2396
2374
  "label": "Storybook examples",
2397
- "path": "src/wc/components/ChartBar/ChartBar.stories.ts"
2398
- }
2399
- ]
2400
- },
2401
- "props": {
2402
- "categories": {
2403
- "type": "string[]",
2404
- "required": false
2405
- },
2406
- "data": {
2407
- "type": "ChartDatum[]",
2408
- "required": false
2409
- },
2410
- "height": {
2411
- "type": "number",
2412
- "required": false
2413
- },
2414
- "series": {
2415
- "type": "ChartSeries[]",
2416
- "required": false
2417
- },
2418
- "variant": {
2419
- "type": "ChartBarVariant",
2420
- "required": false
2421
- },
2422
- "width": {
2423
- "type": "number",
2424
- "required": false
2425
- }
2426
- },
2427
- "events": [],
2428
- "slots": [],
2429
- "exports": {
2430
- "customElement": "ds-chart-bar",
2431
- "react": "DsChartBar",
2432
- "angular": "DsChartBar"
2433
- }
2434
- },
2435
- "dependencies": [
2436
- "@ds-mo/ui",
2437
- "@ds-mo/tokens"
2438
- ],
2439
- "registryDependencies": []
2440
- },
2441
- {
2442
- "name": "chart-donut",
2443
- "title": "ChartDonut",
2444
- "description": "Part-to-whole donut chart with a center aggregate, responsive fill sizing, local slice tooltip feedback, and externally controlled legend highlighting.",
2445
- "type": "registry:ui",
2446
- "meta": {
2447
- "library": "@ds-mo/ui",
2448
- "distribution": "npm",
2449
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-donut",
2450
- "source": "src/wc/components/ChartDonut/ChartDonut.tsx",
2451
- "intentStatus": "complete",
2452
- "intent": {
2453
- "audience": "specialized",
2454
- "status": "experimental",
2455
- "summary": "Part-to-whole donut chart with a center aggregate, responsive fill sizing, local slice tooltip feedback, and externally controlled legend highlighting.",
2456
- "useWhen": [
2457
- "Users need to understand a small part-to-whole breakdown with a prominent total or status in the center.",
2458
- "A standalone donut needs pointer and keyboard-focus value feedback through a chart-owned data-viz tooltip.",
2459
- "A donut and visible ChartLegend should cross-highlight by matching stable labels."
2460
- ],
2461
- "avoidWhen": [
2462
- "The data is a trend, time sequence, or independent magnitude comparison.",
2463
- "The category count creates slices too small to understand reliably.",
2464
- "Hover is intended to select, filter, or navigate rather than temporarily highlight data."
2465
- ],
2466
- "alternatives": [
2467
- {
2468
- "when": "The product needs the canonical card, filter action, visible legend, and built-in hover synchronization.",
2469
- "component": "component:ds-card-data-viz",
2470
- "reason": "The donut card variant owns that complete composition and suppresses redundant slice tooltips."
2375
+ "path": "src/wc/components/Chart/Chart.stories.ts"
2471
2376
  },
2472
2377
  {
2473
- "when": "Users need to compare independent category magnitudes.",
2474
- "component": "component:ds-chart-bar",
2475
- "reason": "Bars make category magnitude differences easier to compare."
2476
- }
2477
- ],
2478
- "commonlyComposedWith": [
2479
- "component:ds-chart-legend",
2480
- "component:ds-tooltip-data-viz",
2481
- "component:ds-card-data-viz"
2482
- ],
2483
- "accessibility": [
2484
- "Every non-empty slice remains keyboard focusable and exposes its label and value without depending on the visual tooltip.",
2485
- "Use a visible legend when the full set of labels, values, or percentages must remain continuously available.",
2486
- "Provide localized no-data text for the neutral empty ring.",
2487
- "Center text is a visual summary and must not be the only source of essential category detail."
2488
- ],
2489
- "states": [
2490
- "Genuine local pointer or keyboard focus may show a chart-owned tooltip; externally synchronized highlight never opens it.",
2491
- "When a visible legend already owns label and value detail, suppress the redundant donut tooltip. CardDataViz donut mode does this automatically.",
2492
- "Local hover and external highlight remain separate while both may dim non-matching slices.",
2493
- "Zero or negative totals render a neutral empty ring without interactive slices.",
2494
- "Center value and caption truncate when they exceed the safe inner-circle measure."
2495
- ],
2496
- "responsiveBehavior": [
2497
- "Prefer container-fill sizing inside data-viz cards and explicit sizing only in layouts that own a stable diameter.",
2498
- "Fill sizing remains centered and constrained to the shared donut size band.",
2499
- "Changing the measured diameter changes the ring radius without scaling its token-based thickness, typography, focus stroke, or corner treatment.",
2500
- "The owner adapts category count and legend placement for available space."
2501
- ],
2502
- "frameworkCaveats": {
2503
- "customElements": [
2504
- "Assign data as a JavaScript property and wire slice-hover detail to a sibling legend only when not using CardDataViz donut mode."
2505
- ],
2506
- "react": [
2507
- "Keep synchronized highlight controlled by the composition and disable slice tooltips when a sibling legend continuously shows the same details."
2508
- ],
2509
- "angular": [
2510
- "Keep synchronized highlight controlled by the composition and disable slice tooltips when a sibling legend continuously shows the same details."
2511
- ]
2512
- },
2513
- "references": [
2514
- {
2515
- "label": "Storybook examples",
2516
- "path": "src/wc/components/ChartDonut/ChartDonut.stories.ts"
2378
+ "label": "Chart guide",
2379
+ "path": "src/docs/Charts.mdx"
2517
2380
  }
2518
2381
  ]
2519
2382
  },
2520
2383
  "props": {
2521
- "activeLabel": {
2522
- "type": "string | null",
2523
- "required": false
2524
- },
2525
- "centerCaption": {
2526
- "type": "string | undefined",
2527
- "required": false
2528
- },
2529
- "centerValue": {
2530
- "type": "string | undefined",
2384
+ "aspectRatio": {
2385
+ "type": "number",
2531
2386
  "required": false
2532
2387
  },
2533
- "cornerRadius": {
2534
- "type": "number | string",
2535
- "required": false
2388
+ "definition": {
2389
+ "type": "ChartDefinition",
2390
+ "required": true
2536
2391
  },
2537
- "data": {
2538
- "type": "ChartDatum[]",
2392
+ "description": {
2393
+ "type": "string",
2539
2394
  "required": false
2540
2395
  },
2541
- "gap": {
2396
+ "height": {
2542
2397
  "type": "number",
2543
2398
  "required": false
2544
2399
  },
2545
- "locale": {
2546
- "type": "string | undefined",
2547
- "required": false
2548
- },
2549
- "noDataLabel": {
2400
+ "label": {
2550
2401
  "type": "string",
2551
- "required": false
2552
- },
2553
- "showTooltip": {
2554
- "type": "boolean",
2555
- "required": false
2402
+ "required": true
2556
2403
  },
2557
- "size": {
2558
- "type": "number | undefined",
2404
+ "locale": {
2405
+ "type": "string",
2559
2406
  "required": false
2560
2407
  },
2561
- "thickness": {
2562
- "type": "number | string",
2408
+ "width": {
2409
+ "type": "number",
2563
2410
  "required": false
2564
2411
  }
2565
2412
  },
2566
2413
  "events": [
2567
2414
  {
2568
- "name": "dsSliceHover",
2569
- "detail": "ChartDatum | null"
2415
+ "name": "dsChartFocusChange",
2416
+ "detail": "ChartFocusChangeDetail"
2570
2417
  }
2571
2418
  ],
2572
2419
  "slots": [],
2573
2420
  "exports": {
2574
- "customElement": "ds-chart-donut",
2575
- "react": "DsChartDonut",
2576
- "angular": "DsChartDonut"
2421
+ "customElement": "ds-chart",
2422
+ "react": "DsChart",
2423
+ "angular": "DsChart"
2577
2424
  }
2578
2425
  },
2579
2426
  "dependencies": [
@@ -2581,13 +2428,13 @@
2581
2428
  "@ds-mo/tokens"
2582
2429
  ],
2583
2430
  "registryDependencies": [
2584
- "tooltip-data-viz"
2431
+ "tooltip-chart"
2585
2432
  ]
2586
2433
  },
2587
2434
  {
2588
2435
  "name": "chart-legend",
2589
2436
  "title": "ChartLegend",
2590
- "description": "Display-first chart legend with swatches, labels, optional values and percentages, explicit deep links, and highlight-only chart synchronization.",
2437
+ "description": "External chart legend with swatches, labels, optional values and percentages, and explicit deep links.",
2591
2438
  "type": "registry:ui",
2592
2439
  "meta": {
2593
2440
  "library": "@ds-mo/ui",
@@ -2597,11 +2444,11 @@
2597
2444
  "intentStatus": "complete",
2598
2445
  "intent": {
2599
2446
  "audience": "specialized",
2600
- "status": "experimental",
2601
- "summary": "Display-first chart legend with swatches, labels, optional values and percentages, explicit deep links, and highlight-only chart synchronization.",
2447
+ "status": "stable",
2448
+ "summary": "External chart legend with swatches, labels, optional values and percentages, and explicit deep links.",
2602
2449
  "useWhen": [
2603
2450
  "A chart needs the standard swatch, label, and optional numeric-detail legend.",
2604
- "Donut slices or line series need a continuously visible key beside or below the visualization.",
2451
+ "Polar slices or Cartesian series need a continuously visible key beside or below the visualization.",
2605
2452
  "A category has an explicit deep-link destination and should render as an accessible link."
2606
2453
  ],
2607
2454
  "avoidWhen": [
@@ -2616,25 +2463,18 @@
2616
2463
  "reason": "Compose product-owned semantic markup from the same chart data rather than forcing it into this row recipe."
2617
2464
  },
2618
2465
  {
2619
- "when": "The donut belongs in the canonical dashboard card.",
2620
- "component": "component:ds-card-data-viz",
2621
- "reason": "The donut variant places the legend and handles bidirectional highlight synchronization."
2622
- },
2623
- {
2624
- "when": "A static line chart and series key belong in the canonical dashboard card.",
2625
- "component": "component:ds-card-data-viz",
2626
- "reason": "The line variant places the horizontal legend and disables decorative local hover highlighting."
2466
+ "when": "A chart and static series key belong in the canonical dashboard card.",
2467
+ "component": "component:ds-card-chart",
2468
+ "reason": "The chart variant places the external legend and disables decorative local hover highlighting."
2627
2469
  }
2628
2470
  ],
2629
2471
  "commonlyComposedWith": [
2630
- "component:ds-chart-donut",
2631
- "component:ds-chart-bar",
2632
- "component:ds-chart-line",
2633
- "component:ds-card-data-viz"
2472
+ "component:ds-chart",
2473
+ "component:ds-card-chart"
2634
2474
  ],
2635
2475
  "accessibility": [
2636
2476
  "Rows remain non-interactive unless the item supplies an actual link destination.",
2637
- "Synced highlight changes opacity only and never moves focus or announces selection.",
2477
+ "Optional highlight changes opacity only and never moves focus or announces selection.",
2638
2478
  "Keep full labels available when visible text truncates, and retain stable tabular numeric columns.",
2639
2479
  "Do not rely on swatch color alone; every entry requires a meaningful visible label."
2640
2480
  ],
@@ -2727,120 +2567,6 @@
2727
2567
  "text"
2728
2568
  ]
2729
2569
  },
2730
- {
2731
- "name": "chart-line",
2732
- "title": "ChartLine",
2733
- "description": "Static single- or multi-series line chart for trends across ordered, evenly spaced categories, including preformatted time-period labels.",
2734
- "type": "registry:ui",
2735
- "meta": {
2736
- "library": "@ds-mo/ui",
2737
- "distribution": "npm",
2738
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-line",
2739
- "source": "src/wc/components/ChartLine/ChartLine.tsx",
2740
- "intentStatus": "complete",
2741
- "intent": {
2742
- "audience": "specialized",
2743
- "status": "experimental",
2744
- "summary": "Static single- or multi-series line chart for trends across ordered, evenly spaced categories, including preformatted time-period labels.",
2745
- "useWhen": [
2746
- "Users need to follow one or more numeric trends across a shared ordered x-axis.",
2747
- "Time periods are already grouped into equally spaced labels such as months, weeks, or days.",
2748
- "A horizontal ChartLegend should identify multiple series."
2749
- ],
2750
- "avoidWhen": [
2751
- "Pixel position must reflect irregular elapsed time or continuous timestamps.",
2752
- "The primary task is comparing unrelated category magnitudes rather than following a trend.",
2753
- "The chart needs built-in zoom, brushing, selection, or drill-down.",
2754
- "Series lengths do not align with the shared category list."
2755
- ],
2756
- "alternatives": [
2757
- {
2758
- "when": "Users need to compare one measure across discrete categories or time buckets.",
2759
- "component": "component:ds-chart-bar",
2760
- "reason": "Bars emphasize independent bucket magnitudes."
2761
- },
2762
- {
2763
- "when": "The data communicates parts of a total.",
2764
- "component": "component:ds-chart-donut",
2765
- "reason": "Donut provides the part-to-whole and center-summary treatment."
2766
- }
2767
- ],
2768
- "commonlyComposedWith": [
2769
- "component:ds-chart-legend",
2770
- "component:ds-card-data-viz",
2771
- "component:ds-tooltip-data-viz"
2772
- ],
2773
- "accessibility": [
2774
- "Provide a visible legend or adjacent textual summary when exact series values are important; the chart image name alone is not a complete data table.",
2775
- "Do not rely on series color alone to communicate meaning.",
2776
- "A future point tooltip must supplement rather than replace accessible series and value context."
2777
- ],
2778
- "states": [
2779
- "The chart is currently static and does not own hover, selection, loading, or empty-state policy.",
2780
- "Its standard horizontal legend is a static key with local hover highlighting disabled.",
2781
- "Point markers may be shown or hidden without changing the underlying series meaning.",
2782
- "Authored series colors override the shared categorical palette."
2783
- ],
2784
- "responsiveBehavior": [
2785
- "Width and height provide the standalone intrinsic viewport; constrained card regions are measured and reflow both axes to their rendered pixel dimensions.",
2786
- "Responsive layout changes point positions and plot extents without scaling SVG text, line strokes, point markers, or margins.",
2787
- "Category positions are always equally spaced, even when labels represent time.",
2788
- "Reduce or pre-format dense labels before passing them; the chart renders authored labels without a continuous time scale."
2789
- ],
2790
- "frameworkCaveats": {
2791
- "customElements": [
2792
- "Assign series and categories as JavaScript properties and keep every series aligned to the category count."
2793
- ],
2794
- "react": [
2795
- "Pass stable series and category arrays; width and height provide standalone intrinsic dimensions while constrained containers reflow automatically."
2796
- ],
2797
- "angular": [
2798
- "Bind series and categories as properties; width and height provide standalone intrinsic dimensions while constrained containers reflow automatically."
2799
- ]
2800
- },
2801
- "references": [
2802
- {
2803
- "label": "Storybook examples",
2804
- "path": "src/wc/components/ChartLine/ChartLine.stories.ts"
2805
- }
2806
- ]
2807
- },
2808
- "props": {
2809
- "categories": {
2810
- "type": "string[]",
2811
- "required": false
2812
- },
2813
- "height": {
2814
- "type": "number",
2815
- "required": false
2816
- },
2817
- "series": {
2818
- "type": "ChartSeries[]",
2819
- "required": false
2820
- },
2821
- "showPoints": {
2822
- "type": "boolean",
2823
- "required": false
2824
- },
2825
- "width": {
2826
- "type": "number",
2827
- "required": false
2828
- }
2829
- },
2830
- "events": [],
2831
- "slots": [],
2832
- "exports": {
2833
- "customElement": "ds-chart-line",
2834
- "react": "DsChartLine",
2835
- "angular": "DsChartLine"
2836
- }
2837
- },
2838
- "dependencies": [
2839
- "@ds-mo/ui",
2840
- "@ds-mo/tokens"
2841
- ],
2842
- "registryDependencies": []
2843
- },
2844
2570
  {
2845
2571
  "name": "checkbox",
2846
2572
  "title": "Checkbox",
@@ -7543,7 +7269,7 @@
7543
7269
  "The owner preserves focus and meaningful reading order when replacing placeholders with real content."
7544
7270
  ],
7545
7271
  "states": [
7546
- "Text, icon, and control variants are atomic metric canvases aligned to their corresponding design-system recipes; control atoms inherit the selected control density's default radius.",
7272
+ "Text, icon, and control variants are atomic metric canvases aligned to their corresponding design-system recipes. Text bars occupy 75% of their line-height canvas, while icon shapes occupy 75% of their square canvas; both remain centered with a proportional 12.5% inset per applicable edge. Control atoms inherit the selected control density's default radius.",
7547
7273
  "Compose approximate line count, hierarchy, widths, and control placement without simulating actual values.",
7548
7274
  "Shimmer is on by default and may be disabled for a static placeholder. Reduced motion always produces the static final shape.",
7549
7275
  "Rounded is an optional visual treatment for icon and control atoms rather than a semantic state.",
@@ -8791,8 +8517,8 @@
8791
8517
  },
8792
8518
  {
8793
8519
  "when": "A chart needs a cursor- or data-point-positioned value callout.",
8794
- "component": "component:ds-tooltip-data-viz",
8795
- "reason": "TooltipDataViz accepts chart coordinates and is designed for data visualization hover feedback."
8520
+ "component": "component:ds-tooltip-chart",
8521
+ "reason": "TooltipChart accepts chart coordinates and is designed for data visualization hover feedback."
8796
8522
  }
8797
8523
  ],
8798
8524
  "commonlyComposedWith": [
@@ -8902,19 +8628,19 @@
8902
8628
  ]
8903
8629
  },
8904
8630
  {
8905
- "name": "tooltip-data-viz",
8906
- "title": "TooltipDataViz",
8631
+ "name": "tooltip-chart",
8632
+ "title": "TooltipChart",
8907
8633
  "description": "Chart-owned, non-interactive label and value callout positioned from pointer or focused-mark coordinates inside a visualization wrapper.",
8908
8634
  "type": "registry:ui",
8909
8635
  "meta": {
8910
8636
  "library": "@ds-mo/ui",
8911
8637
  "distribution": "npm",
8912
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/tooltip-data-viz",
8913
- "source": "src/wc/components/TooltipDataViz/TooltipDataViz.tsx",
8638
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/tooltip-chart",
8639
+ "source": "src/wc/components/TooltipChart/TooltipChart.tsx",
8914
8640
  "intentStatus": "complete",
8915
8641
  "intent": {
8916
8642
  "audience": "specialized",
8917
- "status": "experimental",
8643
+ "status": "stable",
8918
8644
  "summary": "Chart-owned, non-interactive label and value callout positioned from pointer or focused-mark coordinates inside a visualization wrapper.",
8919
8645
  "useWhen": [
8920
8646
  "A chart needs immediate visual value feedback for a genuinely hovered or keyboard-focused mark.",
@@ -8940,9 +8666,7 @@
8940
8666
  }
8941
8667
  ],
8942
8668
  "commonlyComposedWith": [
8943
- "component:ds-chart-bar",
8944
- "component:ds-chart-line",
8945
- "component:ds-chart-donut"
8669
+ "component:ds-chart"
8946
8670
  ],
8947
8671
  "accessibility": [
8948
8672
  "The callout is presentation-only and never replaces the owning chart mark's accessible label or an adjacent data summary.",
@@ -8975,7 +8699,7 @@
8975
8699
  "references": [
8976
8700
  {
8977
8701
  "label": "Storybook example",
8978
- "path": "src/wc/components/TooltipDataViz/TooltipDataViz.stories.ts"
8702
+ "path": "src/wc/components/TooltipChart/TooltipChart.stories.ts"
8979
8703
  }
8980
8704
  ]
8981
8705
  },
@@ -8984,6 +8708,14 @@
8984
8708
  "type": "number | string",
8985
8709
  "required": false
8986
8710
  },
8711
+ "heading": {
8712
+ "type": "string",
8713
+ "required": false
8714
+ },
8715
+ "items": {
8716
+ "type": "TooltipChartItem[]",
8717
+ "required": false
8718
+ },
8987
8719
  "label": {
8988
8720
  "type": "string",
8989
8721
  "required": false
@@ -9004,9 +8736,9 @@
9004
8736
  "events": [],
9005
8737
  "slots": [],
9006
8738
  "exports": {
9007
- "customElement": "ds-tooltip-data-viz",
9008
- "react": "DsTooltipDataViz",
9009
- "angular": "DsTooltipDataViz"
8739
+ "customElement": "ds-tooltip-chart",
8740
+ "react": "DsTooltipChart",
8741
+ "angular": "DsTooltipChart"
9010
8742
  }
9011
8743
  },
9012
8744
  "dependencies": [