@ds-mo/ui 13.6.1 → 13.7.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 (256) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +106 -368
  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-setting.js +1 -1
  33. package/dist/components/ds-card-setting.js.map +1 -1
  34. package/dist/components/ds-chart-legend.js +1 -1
  35. package/dist/components/ds-chart-legend.js.map +1 -1
  36. package/dist/components/{ds-chart-bar.d.ts → ds-chart.d.ts} +4 -4
  37. package/dist/components/ds-chart.js +2 -0
  38. package/dist/components/ds-chart.js.map +1 -0
  39. package/dist/components/ds-checkbox.js +1 -1
  40. package/dist/components/ds-chip.js +1 -1
  41. package/dist/components/ds-code-block.js +1 -1
  42. package/dist/components/ds-conversation-list-item.js +1 -1
  43. package/dist/components/ds-conversation-list-section.js +1 -1
  44. package/dist/components/ds-conversation-list.js +1 -1
  45. package/dist/components/ds-divider.js +1 -1
  46. package/dist/components/ds-empty-state.js +1 -1
  47. package/dist/components/ds-field.js +1 -1
  48. package/dist/components/ds-input.js +1 -1
  49. package/dist/components/ds-markdown.js +1 -1
  50. package/dist/components/ds-menu.js +1 -1
  51. package/dist/components/ds-message-actions.js +1 -1
  52. package/dist/components/ds-message-bubble.js +1 -1
  53. package/dist/components/ds-message-composer.js +1 -1
  54. package/dist/components/ds-message-composer.js.map +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-scroll-overlay.js.map +1 -1
  71. package/dist/components/ds-select.js +1 -1
  72. package/dist/components/ds-select.js.map +1 -1
  73. package/dist/components/ds-shell-app.js +1 -1
  74. package/dist/components/ds-shell-page.js +1 -1
  75. package/dist/components/ds-shell-tools.js +1 -1
  76. package/dist/components/ds-skeleton.js +1 -1
  77. package/dist/components/ds-slider.js +1 -1
  78. package/dist/components/ds-swatch-picker.js +1 -1
  79. package/dist/components/ds-switch.js +1 -1
  80. package/dist/components/ds-tab-group.js +1 -1
  81. package/dist/components/ds-tag.js +1 -1
  82. package/dist/components/ds-text.js +1 -1
  83. package/dist/components/ds-toast.js +1 -1
  84. package/dist/components/ds-toast.js.map +1 -1
  85. package/dist/components/{ds-card-data-viz.d.ts → ds-tooltip-chart.d.ts} +4 -4
  86. package/dist/components/ds-tooltip-chart.js +2 -0
  87. package/dist/components/ds-tooltip.js +1 -1
  88. package/dist/components/ds-typing-indicator.js +1 -1
  89. package/dist/components/{p-IYy-jODg.js → p-1Zbh1MRy.js} +2 -2
  90. package/dist/components/{p-wOOAzVMC.js → p-BVsLc3t5.js} +2 -2
  91. package/dist/components/p-BZCUFHYa.js +2 -0
  92. package/dist/components/{p-D0bM3cKj.js.map → p-BZCUFHYa.js.map} +1 -1
  93. package/dist/components/{p-BBtjABBS.js → p-BjiRqLtB.js} +2 -2
  94. package/dist/components/p-Bk1A9jLm.js +2 -0
  95. package/dist/components/p-Bk1A9jLm.js.map +1 -0
  96. package/dist/components/{p-Bsfpxto1.js → p-BsBw-w1q.js} +2 -2
  97. package/dist/components/p-ByfXC1wu.js +2 -0
  98. package/dist/components/{p-1S9AW2MA.js.map → p-ByfXC1wu.js.map} +1 -1
  99. package/dist/components/{p-B6RrZQqw.js → p-C-ENnZzq.js} +2 -2
  100. package/dist/components/{p-BPyymeuR.js → p-C2U48kDH.js} +2 -2
  101. package/dist/components/{p-CKRJX0Y0.js → p-C7mCjS2t.js} +2 -2
  102. package/dist/components/{p-6B411hQA.js → p-CL8XL1eh.js} +2 -2
  103. package/dist/components/{p-DfvDNcoq.js → p-CMZVPEZ_.js} +2 -2
  104. package/dist/components/{p-CzraIk34.js → p-CWL61nKt.js} +2 -2
  105. package/dist/components/p-CWLrXsDQ.js +2 -0
  106. package/dist/components/{p-D2cjoj2r.js.map → p-CWLrXsDQ.js.map} +1 -1
  107. package/dist/components/{p-Di81y9Q2.js → p-CX7QIytv.js} +2 -2
  108. package/dist/components/p-CXduurfd.js +2 -0
  109. package/dist/components/p-CXduurfd.js.map +1 -0
  110. package/dist/components/p-CbAfTqlb.js +2 -0
  111. package/dist/components/{p-CuJ3J6OJ.js.map → p-CbAfTqlb.js.map} +1 -1
  112. package/dist/components/{p-DVuxzrCC.js → p-CfTThRNX.js} +2 -2
  113. package/dist/components/{p-BmNpPyzf.js → p-CkLffZGn.js} +2 -2
  114. package/dist/components/{p-B4_0Ys4w.js → p-CkyXU1YX.js} +2 -2
  115. package/dist/components/{p-iCjUWcp7.js → p-CywKWfgD.js} +2 -2
  116. package/dist/components/{p-BR_oMaas.js → p-D3UKwTEo.js} +2 -2
  117. package/dist/components/{p-Bl6A5AJq.js → p-D7z9bJ6n.js} +2 -2
  118. package/dist/components/{p-DaqFuVKZ.js → p-DAftUxvL.js} +2 -2
  119. package/dist/components/{p-BFfHIu6y.js → p-DQ94PkZA.js} +2 -2
  120. package/dist/components/{p-B-kRByho.js → p-DSpq7xQF.js} +2 -2
  121. package/dist/components/{p-og48Kh2i.js → p-DzM3TcyQ.js} +2 -2
  122. package/dist/components/p-GbTasczF.js +2 -0
  123. package/dist/components/{p-Ca6s5fLR.js → p-Mmr9b1bB.js} +2 -2
  124. package/dist/components/p-UH2AGfR0.js +2 -0
  125. package/dist/components/{p-DX4c3kZ1.js.map → p-UH2AGfR0.js.map} +1 -1
  126. package/dist/components/{p-CxgMUvqg.js → p-Z2zfShlF.js} +2 -2
  127. package/dist/components/{p-Bmo4T96l.js → p-_mClULFL.js} +2 -2
  128. package/dist/components/{p-Bb4f5SuF.js → p-jf1zCsuw.js} +2 -2
  129. package/dist/components/{p-Eep5mxtv.js → p-oiR4IoH1.js} +2 -2
  130. package/dist/components/{p-DHF5cLzr.js → p-u2OZHaLY.js} +2 -2
  131. package/dist/docs/components.json +180 -662
  132. package/dist/lib/utils/chart-grammar.d.ts +359 -0
  133. package/dist/lib/utils/index.d.ts +2 -0
  134. package/dist/lib/utils/index.js +504 -0
  135. package/dist/lib/utils/index.js.map +4 -4
  136. package/dist/lib/utils/token-defaults.d.ts +3 -0
  137. package/dist/mcp-data/registry/card-chart.json +238 -0
  138. package/dist/mcp-data/registry/card-overview.json +2 -2
  139. package/dist/mcp-data/registry/card-setting.json +2 -2
  140. package/dist/mcp-data/registry/chart-legend.json +11 -18
  141. package/dist/mcp-data/registry/chart.json +258 -0
  142. package/dist/mcp-data/registry/registry.json +105 -373
  143. package/dist/mcp-data/registry/tooltip-chart.json +253 -0
  144. package/dist/mcp-data/registry/tooltip.json +2 -2
  145. package/dist/react/components.d.ts +3 -5
  146. package/dist/react/components.js +3 -5
  147. package/dist/react/ds-card-chart.d.ts +12 -0
  148. package/dist/react/ds-card-chart.js +12 -0
  149. package/dist/react/ds-chart.d.ts +12 -0
  150. package/dist/react/ds-chart.js +12 -0
  151. package/dist/react/{ds-chart-bar.d.ts → ds-tooltip-chart.d.ts} +3 -3
  152. package/dist/react/ds-tooltip-chart.js +12 -0
  153. package/dist/types/components/{CardDataViz/CardDataViz.d.ts → CardChart/CardChart.d.ts} +9 -13
  154. package/dist/types/components/CardChart/index.d.ts +2 -0
  155. package/dist/types/components/Chart/Chart.d.ts +66 -0
  156. package/dist/types/components/Chart/index.d.ts +2 -0
  157. package/dist/types/components/ChartLegend/ChartLegend.d.ts +1 -1
  158. package/dist/types/components/{TooltipDataViz/TooltipDataViz.d.ts → TooltipChart/TooltipChart.d.ts} +15 -6
  159. package/dist/types/components/TooltipChart/index.d.ts +2 -0
  160. package/dist/types/components.d.ts +129 -294
  161. package/dist/types/utils/chart-grammar.d.ts +360 -0
  162. package/dist/types/utils/chart-scene.d.ts +128 -0
  163. package/dist/types/utils/chart-theme.d.ts +27 -0
  164. package/dist/types/utils/chart-types.d.ts +0 -13
  165. package/dist/types/utils/index.d.ts +2 -0
  166. package/dist/types/utils/token-defaults.d.ts +3 -0
  167. package/package.json +1 -1
  168. package/dist/angular/ds-card-data-viz.d.ts +0 -18
  169. package/dist/angular/ds-chart-bar.d.ts +0 -12
  170. package/dist/angular/ds-chart-bar.js +0 -38
  171. package/dist/angular/ds-chart-donut.d.ts +0 -19
  172. package/dist/angular/ds-chart-line.d.ts +0 -12
  173. package/dist/angular/ds-tooltip-data-viz.d.ts +0 -12
  174. package/dist/angular/ds-tooltip-data-viz.js +0 -38
  175. package/dist/components/ds-card-data-viz.js +0 -2
  176. package/dist/components/ds-card-data-viz.js.map +0 -1
  177. package/dist/components/ds-chart-bar.js +0 -2
  178. package/dist/components/ds-chart-bar.js.map +0 -1
  179. package/dist/components/ds-chart-donut.d.ts +0 -11
  180. package/dist/components/ds-chart-donut.js +0 -2
  181. package/dist/components/ds-chart-donut.js.map +0 -1
  182. package/dist/components/ds-chart-line.js +0 -2
  183. package/dist/components/ds-chart-line.js.map +0 -1
  184. package/dist/components/ds-tooltip-data-viz.d.ts +0 -11
  185. package/dist/components/ds-tooltip-data-viz.js +0 -2
  186. package/dist/components/p-1S9AW2MA.js +0 -2
  187. package/dist/components/p-B6Vuayt6.js +0 -2
  188. package/dist/components/p-B6Vuayt6.js.map +0 -1
  189. package/dist/components/p-BBpASejH.js +0 -2
  190. package/dist/components/p-BBpASejH.js.map +0 -1
  191. package/dist/components/p-BybqPD8K.js +0 -2
  192. package/dist/components/p-BybqPD8K.js.map +0 -1
  193. package/dist/components/p-C4uYvyq6.js +0 -2
  194. package/dist/components/p-C4uYvyq6.js.map +0 -1
  195. package/dist/components/p-CbjFUpOj.js +0 -2
  196. package/dist/components/p-CbjFUpOj.js.map +0 -1
  197. package/dist/components/p-CrCGIx8s.js +0 -2
  198. package/dist/components/p-CrCGIx8s.js.map +0 -1
  199. package/dist/components/p-CuJ3J6OJ.js +0 -2
  200. package/dist/components/p-D0bM3cKj.js +0 -2
  201. package/dist/components/p-D2cjoj2r.js +0 -2
  202. package/dist/components/p-DX4c3kZ1.js +0 -2
  203. package/dist/components/p-DXewjzkM.js +0 -2
  204. package/dist/components/p-DXewjzkM.js.map +0 -1
  205. package/dist/components/p-yhj1lIPx.js +0 -2
  206. package/dist/mcp-data/registry/card-data-viz.json +0 -241
  207. package/dist/mcp-data/registry/chart-bar.json +0 -245
  208. package/dist/mcp-data/registry/chart-donut.json +0 -344
  209. package/dist/mcp-data/registry/chart-line.json +0 -223
  210. package/dist/mcp-data/registry/tooltip-data-viz.json +0 -224
  211. package/dist/react/ds-card-data-viz.d.ts +0 -12
  212. package/dist/react/ds-card-data-viz.js +0 -12
  213. package/dist/react/ds-chart-bar.js +0 -12
  214. package/dist/react/ds-chart-donut.d.ts +0 -12
  215. package/dist/react/ds-chart-donut.js +0 -12
  216. package/dist/react/ds-chart-line.d.ts +0 -9
  217. package/dist/react/ds-chart-line.js +0 -12
  218. package/dist/react/ds-tooltip-data-viz.d.ts +0 -9
  219. package/dist/react/ds-tooltip-data-viz.js +0 -12
  220. package/dist/types/components/CardDataViz/index.d.ts +0 -2
  221. package/dist/types/components/ChartBar/ChartBar.d.ts +0 -31
  222. package/dist/types/components/ChartBar/index.d.ts +0 -3
  223. package/dist/types/components/ChartDonut/ChartDonut.d.ts +0 -72
  224. package/dist/types/components/ChartDonut/index.d.ts +0 -2
  225. package/dist/types/components/ChartLine/ChartLine.d.ts +0 -23
  226. package/dist/types/components/ChartLine/index.d.ts +0 -2
  227. package/dist/types/components/TooltipDataViz/index.d.ts +0 -2
  228. /package/dist/components/{ds-tooltip-data-viz.js.map → ds-tooltip-chart.js.map} +0 -0
  229. /package/dist/components/{p-IYy-jODg.js.map → p-1Zbh1MRy.js.map} +0 -0
  230. /package/dist/components/{p-wOOAzVMC.js.map → p-BVsLc3t5.js.map} +0 -0
  231. /package/dist/components/{p-BBtjABBS.js.map → p-BjiRqLtB.js.map} +0 -0
  232. /package/dist/components/{p-Bsfpxto1.js.map → p-BsBw-w1q.js.map} +0 -0
  233. /package/dist/components/{p-B6RrZQqw.js.map → p-C-ENnZzq.js.map} +0 -0
  234. /package/dist/components/{p-BPyymeuR.js.map → p-C2U48kDH.js.map} +0 -0
  235. /package/dist/components/{p-CKRJX0Y0.js.map → p-C7mCjS2t.js.map} +0 -0
  236. /package/dist/components/{p-6B411hQA.js.map → p-CL8XL1eh.js.map} +0 -0
  237. /package/dist/components/{p-DfvDNcoq.js.map → p-CMZVPEZ_.js.map} +0 -0
  238. /package/dist/components/{p-CzraIk34.js.map → p-CWL61nKt.js.map} +0 -0
  239. /package/dist/components/{p-Di81y9Q2.js.map → p-CX7QIytv.js.map} +0 -0
  240. /package/dist/components/{p-DVuxzrCC.js.map → p-CfTThRNX.js.map} +0 -0
  241. /package/dist/components/{p-BmNpPyzf.js.map → p-CkLffZGn.js.map} +0 -0
  242. /package/dist/components/{p-B4_0Ys4w.js.map → p-CkyXU1YX.js.map} +0 -0
  243. /package/dist/components/{p-iCjUWcp7.js.map → p-CywKWfgD.js.map} +0 -0
  244. /package/dist/components/{p-BR_oMaas.js.map → p-D3UKwTEo.js.map} +0 -0
  245. /package/dist/components/{p-Bl6A5AJq.js.map → p-D7z9bJ6n.js.map} +0 -0
  246. /package/dist/components/{p-DaqFuVKZ.js.map → p-DAftUxvL.js.map} +0 -0
  247. /package/dist/components/{p-BFfHIu6y.js.map → p-DQ94PkZA.js.map} +0 -0
  248. /package/dist/components/{p-B-kRByho.js.map → p-DSpq7xQF.js.map} +0 -0
  249. /package/dist/components/{p-og48Kh2i.js.map → p-DzM3TcyQ.js.map} +0 -0
  250. /package/dist/components/{p-yhj1lIPx.js.map → p-GbTasczF.js.map} +0 -0
  251. /package/dist/components/{p-Ca6s5fLR.js.map → p-Mmr9b1bB.js.map} +0 -0
  252. /package/dist/components/{p-CxgMUvqg.js.map → p-Z2zfShlF.js.map} +0 -0
  253. /package/dist/components/{p-Bmo4T96l.js.map → p-_mClULFL.js.map} +0 -0
  254. /package/dist/components/{p-Bb4f5SuF.js.map → p-jf1zCsuw.js.map} +0 -0
  255. /package/dist/components/{p-Eep5mxtv.js.map → p-oiR4IoH1.js.map} +0 -0
  256. /package/dist/components/{p-DHF5cLzr.js.map → p-u2OZHaLY.js.map} +0 -0
@@ -0,0 +1,253 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "tooltip-chart",
4
+ "title": "TooltipChart",
5
+ "description": "Chart-owned, non-interactive label and value callout positioned from pointer or focused-mark coordinates inside a visualization wrapper.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/tooltip-chart",
11
+ "source": "src/wc/components/TooltipChart/TooltipChart.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "specialized",
15
+ "status": "stable",
16
+ "summary": "Chart-owned, non-interactive label and value callout positioned from pointer or focused-mark coordinates inside a visualization wrapper.",
17
+ "useWhen": [
18
+ "A chart needs immediate visual value feedback for a genuinely hovered or keyboard-focused mark.",
19
+ "The anchor lives inside SVG or chart coordinates rather than on a slotted HTML trigger.",
20
+ "The owning chart can mount the callout for one interaction session and update its coordinates while tracking."
21
+ ],
22
+ "avoidWhen": [
23
+ "A normal control or text trigger needs supplemental explanation; use Tooltip.",
24
+ "The content needs links, actions, focus, or touch-primary disclosure.",
25
+ "An externally synchronized highlight has no genuine local pointer or keyboard interaction.",
26
+ "The callout would be the only accessible source of an essential value."
27
+ ],
28
+ "alternatives": [
29
+ {
30
+ "when": "A slotted control or text trigger needs a conventional tooltip.",
31
+ "component": "component:ds-tooltip",
32
+ "reason": "Tooltip owns trigger semantics, focus behavior, and anchored overlay lifecycle."
33
+ },
34
+ {
35
+ "when": "Donut details should remain continuously visible beside the chart.",
36
+ "component": "component:ds-chart-legend",
37
+ "reason": "A visible legend avoids redundant transient slice callouts."
38
+ }
39
+ ],
40
+ "commonlyComposedWith": [
41
+ "component:ds-chart"
42
+ ],
43
+ "accessibility": [
44
+ "The callout is presentation-only and never replaces the owning chart mark's accessible label or an adjacent data summary.",
45
+ "Keyboard-focused marks receive the same visual feedback as pointer-hovered marks.",
46
+ "The callout never receives focus or contains interactive descendants."
47
+ ],
48
+ "states": [
49
+ "The owning chart mounts the callout when a local interaction starts and unmounts it when that interaction ends.",
50
+ "Coordinate updates track within one mounted interaction session without restarting the show delay.",
51
+ "Placement flips horizontally or vertically when the rendered callout approaches a viewport edge.",
52
+ "Placement is chosen as a quadrant rather than computed as coordinates: the component measures its own rendered rect and flips its side and align props, which CSS consumes. It therefore does not use the shared anchored-position utilities, which resolve an anchor element into x and y.",
53
+ "This separation is deliberate. The callout follows the pointer instead of an element, so it has no anchor rect to resolve; adopting the shared geometry would mean rewriting its CSS to consume coordinates for no behavioral gain.",
54
+ "Reduced motion preserves the final visible state without an opacity transition."
55
+ ],
56
+ "responsiveBehavior": [
57
+ "Render inside a positioned chart wrapper and pass coordinates relative to that wrapper.",
58
+ "Keep labels concise enough for the single-line callout; persistent or long explanations belong outside the chart."
59
+ ],
60
+ "frameworkCaveats": {
61
+ "customElements": [
62
+ "The owning chart computes coordinates and conditionally mounts the component; applications should not use it as a standalone overlay."
63
+ ],
64
+ "react": [
65
+ "Keep callout lifecycle and coordinates inside the chart wrapper rather than application-global tooltip state."
66
+ ],
67
+ "angular": [
68
+ "Keep callout lifecycle and coordinates inside the chart wrapper rather than application-global tooltip state."
69
+ ]
70
+ },
71
+ "references": [
72
+ {
73
+ "label": "Storybook example",
74
+ "path": "src/wc/components/TooltipChart/TooltipChart.stories.ts"
75
+ }
76
+ ]
77
+ },
78
+ "api": {
79
+ "props": {
80
+ "delay": {
81
+ "type": "number | string",
82
+ "resolvedType": "number | string",
83
+ "attribute": "delay",
84
+ "default": "TOKEN_DEFAULTS.animationDelayInstant",
85
+ "required": false,
86
+ "mutable": false,
87
+ "description": "Show delay after mount before the callout appears.\nDefault: `--effect-animation-delay-instant` (0ms). Accepts a number (ms)\nor a TokoMo time token / `var(--effect-animation-delay-*)`. Charts need\nimmediate feedback while scrubbing; prefer the default. Mount once per\nhover session so any non-zero delay runs once, then track `x`/`y` instantly."
88
+ },
89
+ "heading": {
90
+ "type": "string",
91
+ "resolvedType": "string | undefined",
92
+ "attribute": "heading",
93
+ "required": false,
94
+ "mutable": false,
95
+ "description": "Optional heading for grouped chart focus."
96
+ },
97
+ "items": {
98
+ "type": "TooltipChartItem[]",
99
+ "resolvedType": "TooltipChartItem[] | undefined",
100
+ "required": false,
101
+ "mutable": false,
102
+ "description": "Multi-row content. When supplied, this replaces the legacy label/value row."
103
+ },
104
+ "label": {
105
+ "type": "string",
106
+ "resolvedType": "string",
107
+ "attribute": "label",
108
+ "default": "''",
109
+ "required": false,
110
+ "mutable": false
111
+ },
112
+ "value": {
113
+ "type": "string | number",
114
+ "resolvedType": "number | string",
115
+ "attribute": "value",
116
+ "default": "''",
117
+ "required": false,
118
+ "mutable": false
119
+ },
120
+ "x": {
121
+ "type": "number",
122
+ "resolvedType": "number",
123
+ "attribute": "x",
124
+ "default": "0",
125
+ "required": false,
126
+ "mutable": false,
127
+ "description": "Anchor point in px, relative to the nearest `position: relative` ancestor — e.g. the cursor."
128
+ },
129
+ "y": {
130
+ "type": "number",
131
+ "resolvedType": "number",
132
+ "attribute": "y",
133
+ "default": "0",
134
+ "required": false,
135
+ "mutable": false
136
+ }
137
+ },
138
+ "events": [],
139
+ "methods": [],
140
+ "slots": []
141
+ },
142
+ "props": {
143
+ "delay": {
144
+ "type": "number | string",
145
+ "resolvedType": "number | string",
146
+ "attribute": "delay",
147
+ "default": "TOKEN_DEFAULTS.animationDelayInstant",
148
+ "required": false,
149
+ "mutable": false,
150
+ "description": "Show delay after mount before the callout appears.\nDefault: `--effect-animation-delay-instant` (0ms). Accepts a number (ms)\nor a TokoMo time token / `var(--effect-animation-delay-*)`. Charts need\nimmediate feedback while scrubbing; prefer the default. Mount once per\nhover session so any non-zero delay runs once, then track `x`/`y` instantly."
151
+ },
152
+ "heading": {
153
+ "type": "string",
154
+ "resolvedType": "string | undefined",
155
+ "attribute": "heading",
156
+ "required": false,
157
+ "mutable": false,
158
+ "description": "Optional heading for grouped chart focus."
159
+ },
160
+ "items": {
161
+ "type": "TooltipChartItem[]",
162
+ "resolvedType": "TooltipChartItem[] | undefined",
163
+ "required": false,
164
+ "mutable": false,
165
+ "description": "Multi-row content. When supplied, this replaces the legacy label/value row."
166
+ },
167
+ "label": {
168
+ "type": "string",
169
+ "resolvedType": "string",
170
+ "attribute": "label",
171
+ "default": "''",
172
+ "required": false,
173
+ "mutable": false
174
+ },
175
+ "value": {
176
+ "type": "string | number",
177
+ "resolvedType": "number | string",
178
+ "attribute": "value",
179
+ "default": "''",
180
+ "required": false,
181
+ "mutable": false
182
+ },
183
+ "x": {
184
+ "type": "number",
185
+ "resolvedType": "number",
186
+ "attribute": "x",
187
+ "default": "0",
188
+ "required": false,
189
+ "mutable": false,
190
+ "description": "Anchor point in px, relative to the nearest `position: relative` ancestor — e.g. the cursor."
191
+ },
192
+ "y": {
193
+ "type": "number",
194
+ "resolvedType": "number",
195
+ "attribute": "y",
196
+ "default": "0",
197
+ "required": false,
198
+ "mutable": false
199
+ }
200
+ },
201
+ "events": [],
202
+ "methods": [],
203
+ "slots": [],
204
+ "exports": {
205
+ "customElement": "ds-tooltip-chart",
206
+ "react": "DsTooltipChart",
207
+ "angular": "DsTooltipChart"
208
+ },
209
+ "consumption": {
210
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
211
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
212
+ "customElements": {
213
+ "import": "import '@ds-mo/ui/dist/components/ds-tooltip-chart.js';",
214
+ "example": "<ds-tooltip-chart></ds-tooltip-chart>"
215
+ },
216
+ "react": {
217
+ "import": "import { DsTooltipChart } from '@ds-mo/ui/react';",
218
+ "example": "<DsTooltipChart />"
219
+ },
220
+ "angular": {
221
+ "import": "import { DsTooltipChart } from '@ds-mo/ui/angular/ds-tooltip-chart';",
222
+ "example": "<ds-tooltip-chart></ds-tooltip-chart>"
223
+ },
224
+ "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: items.",
225
+ "peerDependencies": {
226
+ "required": [
227
+ "@ds-mo/tokens ^5.1.1",
228
+ "@ds-mo/icons ^6.4.0"
229
+ ],
230
+ "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
231
+ }
232
+ }
233
+ },
234
+ "dependencies": [
235
+ "@ds-mo/ui",
236
+ "@ds-mo/tokens"
237
+ ],
238
+ "registryDependencies": [
239
+ "text"
240
+ ],
241
+ "files": [
242
+ {
243
+ "path": "src/wc/components/TooltipChart/TooltipChart.css",
244
+ "content": "@import '../../utils/control-density.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/forced-colors.css';\n\n:host {\n position: absolute;\n z-index: var(--dimension-z-index-tooltip);\n display: block;\n box-sizing: border-box;\n background-color: var(--color-translucent-translucent);\n backdrop-filter: blur(var(--effect-blur-md));\n -webkit-backdrop-filter: blur(var(--effect-blur-md));\n border-radius: var(--dimension-radius-075);\n box-shadow: var(--effect-elevation-elevated-floating);\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n padding: var(--dimension-space-050);\n}\n\n:host(.tooltip-chart--visible) {\n animation: tooltip-chart-fade-in var(--effect-motion-short-2) forwards;\n}\n\n.tooltip-chart__item {\n width: 100%;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n}\n\n.tooltip-chart__heading {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n height: var(--ds-control-height, var(--dimension-size-400));\n padding-inline: calc(\n var(--ds-control-padding-inline, var(--dimension-space-075)) +\n var(--ds-control-label-inset, var(--dimension-space-025))\n );\n}\n\n.tooltip-chart__items {\n display: grid;\n}\n\n.tooltip-chart__swatch-box {\n pointer-events: none;\n}\n\n.tooltip-chart__swatch {\n width: var(--dimension-size-100);\n height: var(--dimension-size-100);\n flex: none;\n border-radius: var(--dimension-radius-half);\n background: var(--ds-tooltip-chart-swatch);\n}\n\n.tooltip-chart__value {\n margin-inline-start: auto;\n text-align: end;\n}\n\n.tooltip-chart__label {\n margin-inline-end: var(--dimension-space-050);\n}\n\n.tooltip-chart__label,\n.tooltip-chart__value {\n flex: none;\n}\n\n@keyframes tooltip-chart-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host(.tooltip-chart--visible) {\n animation: none;\n opacity: 1;\n }\n}\n\n@media (forced-colors: active) {\n :host {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n",
245
+ "type": "registry:ui"
246
+ },
247
+ {
248
+ "path": "src/wc/components/TooltipChart/TooltipChart.tsx",
249
+ "content": "import { Component, Prop, State, Element, Watch, h, Host } from '@stencil/core';\nimport {\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n resolveCssTimeMs,\n TOKEN_DEFAULTS,\n} from '../../utils';\n\nconst CURSOR_OFFSET_PX = 12;\nconst VIEWPORT_PAD_PX = 8;\n\nexport type TooltipChartSide = 'left' | 'right';\nexport type TooltipChartAlign = 'top' | 'bottom';\n\nexport interface TooltipChartItem {\n label: string;\n value: string | number;\n color?: string;\n}\n\n/**\n * Positioned value/label callout for chart hover interactions (bar, line point,\n * polar arc, …). A composition may suppress it when a visible legend already\n * surfaces the same value.\n * Unlike `ds-tooltip`, this doesn't bind to a slotted anchor element —\n * charts hover-highlight data that lives inside an SVG, so the chart itself computes\n * the anchor point (e.g. the cursor position while hovering) and passes it in as `x`/`y`.\n *\n * Renders `position: absolute` — place inside a `position: relative` chart wrapper,\n * with `x`/`y` as pixel coordinates within that wrapper. Defaults to sitting below-right\n * of the anchor (matching cursor-following tooltips), flipping to whichever side/edge\n * keeps it on-screen.\n *\n * Mount (or remount) when a hover session starts so `delay` applies once per hover;\n * keep the instance mounted while the cursor moves so tracking stays instant.\n */\n@Component({\n tag: 'ds-tooltip-chart',\n styleUrl: 'TooltipChart.css',\n scoped: true,\n})\nexport class TooltipChart {\n @Element() el!: HTMLElement;\n\n @Prop() value: string | number = '';\n @Prop() label: string = '';\n /** Optional heading for grouped chart focus. */\n @Prop() heading?: string;\n /** Multi-row content. When supplied, this replaces the legacy label/value row. */\n @Prop() items?: TooltipChartItem[];\n /** Anchor point in px, relative to the nearest `position: relative` ancestor — e.g. the cursor. */\n @Prop() x: number = 0;\n @Prop() y: number = 0;\n\n /**\n * Show delay after mount before the callout appears.\n * Default: `--effect-animation-delay-instant` (0ms). Accepts a number (ms)\n * or a TokoMo time token / `var(--effect-animation-delay-*)`. Charts need\n * immediate feedback while scrubbing; prefer the default. Mount once per\n * hover session so any non-zero delay runs once, then track `x`/`y` instantly.\n */\n @Prop() delay: number | string = TOKEN_DEFAULTS.animationDelayInstant;\n\n @State() private side: TooltipChartSide = 'right';\n @State() private align: TooltipChartAlign = 'bottom';\n @State() private visible: boolean = false;\n\n private delayTimer: ReturnType<typeof setTimeout> | null = null;\n\n componentDidLoad() {\n this.scheduleShow();\n this.calculatePlacement();\n }\n\n disconnectedCallback() {\n this.clearDelayTimer();\n }\n\n @Watch('x')\n @Watch('y')\n onAnchorChange() {\n requestAnimationFrame(() => this.calculatePlacement());\n }\n\n @Watch('delay')\n onDelayChange() {\n if (!this.visible) this.scheduleShow();\n }\n\n private get showDelayMs(): number {\n return resolveCssTimeMs(this.delay, TOKEN_DEFAULTS.animationDelayInstant);\n }\n\n private clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n\n private scheduleShow() {\n this.clearDelayTimer();\n this.visible = false;\n const ms = this.showDelayMs;\n if (ms <= 0) {\n this.visible = true;\n return;\n }\n this.delayTimer = setTimeout(() => {\n this.delayTimer = null;\n this.visible = true;\n requestAnimationFrame(() => this.calculatePlacement());\n }, ms);\n }\n\n private calculatePlacement() {\n const rect = this.el.getBoundingClientRect();\n if (!rect.width || !rect.height) return;\n\n const nextSide: TooltipChartSide = rect.right > window.innerWidth - VIEWPORT_PAD_PX ? 'left' : 'right';\n const nextAlign: TooltipChartAlign = rect.bottom > window.innerHeight - VIEWPORT_PAD_PX ? 'top' : 'bottom';\n\n if (nextSide !== this.side) this.side = nextSide;\n if (nextAlign !== this.align) this.align = nextAlign;\n }\n\n render() {\n const translateX = this.side === 'right' ? `${CURSOR_OFFSET_PX}px` : `calc(-100% - ${CURSOR_OFFSET_PX}px)`;\n const translateY = this.align === 'bottom' ? `${CURSOR_OFFSET_PX}px` : `calc(-100% - ${CURSOR_OFFSET_PX}px)`;\n\n return (\n <Host\n class={{\n 'tooltip-chart': true,\n 'tooltip-chart--visible': this.visible,\n }}\n style={{ left: `${this.x}px`, top: `${this.y}px`, transform: `translate(${translateX}, ${translateY})` }}\n >\n {this.heading && (\n <ds-text\n class=\"tooltip-chart__heading\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT.md}\n emphasis\n color=\"var(--color-foreground-primary)\"\n >\n {this.heading}\n </ds-text>\n )}\n <div class=\"tooltip-chart__items\">\n {(this.items ?? [{ label: this.label, value: this.value }]).map((item, index) => (\n <div class=\"tooltip-chart__item ds-control-frame ds-control--md\" key={`${item.label}-${index}`}>\n {item.color && (\n <span class=\"tooltip-chart__swatch-box ds-control-icon-box\" aria-hidden=\"true\">\n <span\n class=\"tooltip-chart__swatch\"\n style={{ '--ds-tooltip-chart-swatch': item.color }}\n />\n </span>\n )}\n <ds-text\n class=\"tooltip-chart__label ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT.md}\n color=\"var(--color-foreground-secondary)\"\n >\n {item.label}\n </ds-text>\n <ds-text\n class=\"tooltip-chart__value ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT.md}\n emphasis\n color=\"var(--color-foreground-primary)\"\n >\n {item.value}\n </ds-text>\n </div>\n ))}\n </div>\n </Host>\n );\n }\n}\n",
250
+ "type": "registry:ui"
251
+ }
252
+ ]
253
+ }
@@ -37,8 +37,8 @@
37
37
  },
38
38
  {
39
39
  "when": "A chart needs a cursor- or data-point-positioned value callout.",
40
- "component": "component:ds-tooltip-data-viz",
41
- "reason": "TooltipDataViz accepts chart coordinates and is designed for data visualization hover feedback."
40
+ "component": "component:ds-tooltip-chart",
41
+ "reason": "TooltipChart accepts chart coordinates and is designed for data visualization hover feedback."
42
42
  }
43
43
  ],
44
44
  "commonlyComposedWith": [
@@ -16,13 +16,11 @@ export { DsBarWorkflow } from "./ds-bar-workflow.js";
16
16
  export { DsBreadcrumb } from "./ds-breadcrumb.js";
17
17
  export { DsButtonFilled } from "./ds-button-filled.js";
18
18
  export { DsButtonUnfilled } from "./ds-button-unfilled.js";
19
- export { DsCardDataViz } from "./ds-card-data-viz.js";
19
+ export { DsCardChart } from "./ds-card-chart.js";
20
20
  export { DsCardOverview } from "./ds-card-overview.js";
21
21
  export { DsCardSetting } from "./ds-card-setting.js";
22
- export { DsChartBar } from "./ds-chart-bar.js";
23
- export { DsChartDonut } from "./ds-chart-donut.js";
24
22
  export { DsChartLegend } from "./ds-chart-legend.js";
25
- export { DsChartLine } from "./ds-chart-line.js";
23
+ export { DsChart } from "./ds-chart.js";
26
24
  export { DsCheckbox } from "./ds-checkbox.js";
27
25
  export { DsChip } from "./ds-chip.js";
28
26
  export { DsCodeBlock } from "./ds-code-block.js";
@@ -66,6 +64,6 @@ export { DsTabGroup } from "./ds-tab-group.js";
66
64
  export { DsTag } from "./ds-tag.js";
67
65
  export { DsText } from "./ds-text.js";
68
66
  export { DsToast } from "./ds-toast.js";
69
- export { DsTooltipDataViz } from "./ds-tooltip-data-viz.js";
67
+ export { DsTooltipChart } from "./ds-tooltip-chart.js";
70
68
  export { DsTooltip } from "./ds-tooltip.js";
71
69
  export { DsTypingIndicator } from "./ds-typing-indicator.js";
@@ -17,13 +17,11 @@ export { DsBarWorkflow } from "./ds-bar-workflow.js";
17
17
  export { DsBreadcrumb } from "./ds-breadcrumb.js";
18
18
  export { DsButtonFilled } from "./ds-button-filled.js";
19
19
  export { DsButtonUnfilled } from "./ds-button-unfilled.js";
20
- export { DsCardDataViz } from "./ds-card-data-viz.js";
20
+ export { DsCardChart } from "./ds-card-chart.js";
21
21
  export { DsCardOverview } from "./ds-card-overview.js";
22
22
  export { DsCardSetting } from "./ds-card-setting.js";
23
- export { DsChartBar } from "./ds-chart-bar.js";
24
- export { DsChartDonut } from "./ds-chart-donut.js";
25
23
  export { DsChartLegend } from "./ds-chart-legend.js";
26
- export { DsChartLine } from "./ds-chart-line.js";
24
+ export { DsChart } from "./ds-chart.js";
27
25
  export { DsCheckbox } from "./ds-checkbox.js";
28
26
  export { DsChip } from "./ds-chip.js";
29
27
  export { DsCodeBlock } from "./ds-code-block.js";
@@ -67,6 +65,6 @@ export { DsTabGroup } from "./ds-tab-group.js";
67
65
  export { DsTag } from "./ds-tag.js";
68
66
  export { DsText } from "./ds-text.js";
69
67
  export { DsToast } from "./ds-toast.js";
70
- export { DsTooltipDataViz } from "./ds-tooltip-data-viz.js";
68
+ export { DsTooltipChart } from "./ds-tooltip-chart.js";
71
69
  export { DsTooltip } from "./ds-tooltip.js";
72
70
  export { DsTypingIndicator } from "./ds-typing-indicator.js";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This file was automatically generated by the Stencil React Output Target.
3
+ * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
4
+ */
5
+ import type { EventName, StencilReactComponent } from './react-runtime.js';
6
+ import { type DsCardChartCustomEvent } from "@ds-mo/ui";
7
+ import type { Components } from "@ds-mo/ui/dist/components";
8
+ import { DsCardChart as DsCardChartElement } from "@ds-mo/ui/dist/components/ds-card-chart.js";
9
+ export type DsCardChartEvents = {
10
+ onDsFilterClick: EventName<DsCardChartCustomEvent<void>>;
11
+ };
12
+ export declare const DsCardChart: StencilReactComponent<DsCardChartElement, DsCardChartEvents, Components.DsCardChart, 'heading'>;
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { createComponent } from './react-runtime.js';
3
+ import React from 'react';
4
+ import { DsCardChart as DsCardChartElement, defineCustomElement as defineDsCardChart } from "@ds-mo/ui/dist/components/ds-card-chart.js";
5
+ export const DsCardChart = /*@__PURE__*/ createComponent({
6
+ tagName: 'ds-card-chart',
7
+ elementClass: DsCardChartElement,
8
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
9
+ react: React,
10
+ events: { onDsFilterClick: 'dsFilterClick' },
11
+ defineCustomElement: defineDsCardChart
12
+ });
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This file was automatically generated by the Stencil React Output Target.
3
+ * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
4
+ */
5
+ import type { EventName, StencilReactComponent } from './react-runtime.js';
6
+ import { type ChartFocusChangeDetail, type DsChartCustomEvent } from "@ds-mo/ui";
7
+ import type { Components } from "@ds-mo/ui/dist/components";
8
+ import { DsChart as DsChartElement } from "@ds-mo/ui/dist/components/ds-chart.js";
9
+ export type DsChartEvents = {
10
+ onDsChartFocusChange: EventName<DsChartCustomEvent<ChartFocusChangeDetail>>;
11
+ };
12
+ export declare const DsChart: StencilReactComponent<DsChartElement, DsChartEvents, Components.DsChart, 'definition' | 'label'>;
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { createComponent } from './react-runtime.js';
3
+ import React from 'react';
4
+ import { DsChart as DsChartElement, defineCustomElement as defineDsChart } from "@ds-mo/ui/dist/components/ds-chart.js";
5
+ export const DsChart = /*@__PURE__*/ createComponent({
6
+ tagName: 'ds-chart',
7
+ elementClass: DsChartElement,
8
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
9
+ react: React,
10
+ events: { onDsChartFocusChange: 'dsChartFocusChange' },
11
+ defineCustomElement: defineDsChart
12
+ });
@@ -4,6 +4,6 @@
4
4
  */
5
5
  import type { StencilReactComponent } from './react-runtime.js';
6
6
  import type { Components } from "@ds-mo/ui/dist/components";
7
- import { DsChartBar as DsChartBarElement } from "@ds-mo/ui/dist/components/ds-chart-bar.js";
8
- export type DsChartBarEvents = NonNullable<unknown>;
9
- export declare const DsChartBar: StencilReactComponent<DsChartBarElement, DsChartBarEvents, Components.DsChartBar>;
7
+ import { DsTooltipChart as DsTooltipChartElement } from "@ds-mo/ui/dist/components/ds-tooltip-chart.js";
8
+ export type DsTooltipChartEvents = NonNullable<unknown>;
9
+ export declare const DsTooltipChart: StencilReactComponent<DsTooltipChartElement, DsTooltipChartEvents, Components.DsTooltipChart>;
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { createComponent } from './react-runtime.js';
3
+ import React from 'react';
4
+ import { DsTooltipChart as DsTooltipChartElement, defineCustomElement as defineDsTooltipChart } from "@ds-mo/ui/dist/components/ds-tooltip-chart.js";
5
+ export const DsTooltipChart = /*@__PURE__*/ createComponent({
6
+ tagName: 'ds-tooltip-chart',
7
+ elementClass: DsTooltipChartElement,
8
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
9
+ react: React,
10
+ events: {},
11
+ defineCustomElement: defineDsTooltipChart
12
+ });
@@ -1,18 +1,18 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
- export type CardDataVizWidth = 'sm' | 'md' | 'lg';
3
- export type CardDataVizVariant = 'custom' | 'bar' | 'line' | 'donut';
2
+ export type CardChartWidth = 'sm' | 'md' | 'lg';
3
+ export type CardChartVariant = 'custom' | 'chart';
4
4
  /**
5
- * Standard data-visualization card chrome and composition. The variant owns
5
+ * Standard chart card chrome and composition. The variant owns
6
6
  * only the chart/legend relationship; applications continue to own data.
7
7
  */
8
- export declare class CardDataViz {
8
+ export declare class CardChart {
9
9
  el: HTMLElement;
10
- /** Data-visualization heading shown in the card header. */
10
+ /** Chart heading shown in the card header. */
11
11
  heading: string;
12
12
  /** Chart composition behavior. */
13
- variant: CardDataVizVariant;
14
- /** Width token with the matching data-visualization card min-height. */
15
- cardWidth: CardDataVizWidth;
13
+ variant: CardChartVariant;
14
+ /** Width token with the matching chart-card min-height. */
15
+ cardWidth: CardChartWidth;
16
16
  /** Renders the standard filter action before custom actions. */
17
17
  showFilter: boolean;
18
18
  filterLabel: string;
@@ -21,12 +21,8 @@ export declare class CardDataViz {
21
21
  private hasChartSlot;
22
22
  private hasLegendSlot;
23
23
  componentWillRender(): void;
24
- componentDidLoad(): void;
25
24
  componentDidRender(): void;
26
- disconnectedCallback(): void;
27
- private handleChartHover;
28
- private handleLegendHover;
29
25
  private handleFilterClick;
30
26
  render(): any;
31
27
  }
32
- //# sourceMappingURL=CardDataViz.d.ts.map
28
+ //# sourceMappingURL=CardChart.d.ts.map
@@ -0,0 +1,2 @@
1
+ export type { CardChartVariant, CardChartWidth } from './CardChart';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,66 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ import type { ChartDefinition, ChartPoint } from '../../utils/chart-grammar';
3
+ export type ChartFocusSource = 'pointer' | 'keyboard';
4
+ export interface ChartFocusChangeDetail {
5
+ primary: ChartPoint | null;
6
+ points: readonly ChartPoint[];
7
+ source: ChartFocusSource;
8
+ }
9
+ export declare class Chart {
10
+ el: HTMLElement;
11
+ /** Typed chart definition. Set as a JavaScript property, not an HTML attribute. */
12
+ definition: ChartDefinition;
13
+ /** Required accessible name for the visualization. */
14
+ label: string;
15
+ /** Optional longer accessible description. */
16
+ description?: string;
17
+ /** Locale used by axes and default tooltip formatters. */
18
+ locale?: string;
19
+ /** Fixed surface width. Otherwise the chart observes its container. */
20
+ width?: number;
21
+ /** Product-owned surface height. Wins over aspectRatio. */
22
+ height?: number;
23
+ /** Derives height from the current width when height is not supplied. */
24
+ aspectRatio?: number;
25
+ /** Fires whenever pointer or keyboard focus resolves to semantic chart points. */
26
+ dsChartFocusChange: EventEmitter<ChartFocusChangeDetail>;
27
+ private surfaceWidth;
28
+ private containerHeight?;
29
+ private scene?;
30
+ private focusState?;
31
+ private pointerAnchor?;
32
+ private resizeObserver?;
33
+ private resizeFrame?;
34
+ private compileFrame?;
35
+ private warnedConflictingHeight;
36
+ private measuredLabels;
37
+ private descriptionId;
38
+ private clipId;
39
+ componentWillLoad(): void;
40
+ componentDidLoad(): void;
41
+ componentDidRender(): void;
42
+ disconnectedCallback(): void;
43
+ onDefinitionInputChange(): void;
44
+ onWidthChange(): void;
45
+ private get surfaceHeight();
46
+ private connectResizeObserver;
47
+ private measureHost;
48
+ private applyMeasuredSize;
49
+ private scheduleCompile;
50
+ private compile;
51
+ private waitForFonts;
52
+ private measureRenderedLabels;
53
+ private resolveFocus;
54
+ private clearFocus;
55
+ private onPointerMove;
56
+ private onPointerLeave;
57
+ private keyboardPoints;
58
+ private onKeyDown;
59
+ private renderNode;
60
+ private renderMarkLayers;
61
+ private focusedDotPoints;
62
+ private tooltipContent;
63
+ private statusText;
64
+ render(): any;
65
+ }
66
+ //# sourceMappingURL=Chart.d.ts.map
@@ -0,0 +1,2 @@
1
+ export type { ChartFocusChangeDetail, ChartFocusSource } from './Chart';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -7,7 +7,7 @@ export type ChartLegendPercentageDecimals = 1 | 2;
7
7
  * legends differently (list w/ values, compact chips, bare swatches, external
8
8
  * stat callouts) — this covers the common "swatch + label + optional value" case.
9
9
  * Consumers who need a different treatment skip this component entirely and
10
- * render their own markup against the same `ChartDatum[]` data.
10
+ * render their own markup against the same `ChartLegendItem[]` data.
11
11
  */
12
12
  export declare class ChartLegend {
13
13
  locale: string | undefined;
@@ -1,9 +1,14 @@
1
- export type TooltipDataVizSide = 'left' | 'right';
2
- export type TooltipDataVizAlign = 'top' | 'bottom';
1
+ export type TooltipChartSide = 'left' | 'right';
2
+ export type TooltipChartAlign = 'top' | 'bottom';
3
+ export interface TooltipChartItem {
4
+ label: string;
5
+ value: string | number;
6
+ color?: string;
7
+ }
3
8
  /**
4
9
  * Positioned value/label callout for chart hover interactions (bar, line point,
5
- * standalone donut slice, …). Donut compositions suppress it when a visible
6
- * legend already surfaces the hovered slice.
10
+ * polar arc, …). A composition may suppress it when a visible legend already
11
+ * surfaces the same value.
7
12
  * Unlike `ds-tooltip`, this doesn't bind to a slotted anchor element —
8
13
  * charts hover-highlight data that lives inside an SVG, so the chart itself computes
9
14
  * the anchor point (e.g. the cursor position while hovering) and passes it in as `x`/`y`.
@@ -16,10 +21,14 @@ export type TooltipDataVizAlign = 'top' | 'bottom';
16
21
  * Mount (or remount) when a hover session starts so `delay` applies once per hover;
17
22
  * keep the instance mounted while the cursor moves so tracking stays instant.
18
23
  */
19
- export declare class TooltipDataViz {
24
+ export declare class TooltipChart {
20
25
  el: HTMLElement;
21
26
  value: string | number;
22
27
  label: string;
28
+ /** Optional heading for grouped chart focus. */
29
+ heading?: string;
30
+ /** Multi-row content. When supplied, this replaces the legacy label/value row. */
31
+ items?: TooltipChartItem[];
23
32
  /** Anchor point in px, relative to the nearest `position: relative` ancestor — e.g. the cursor. */
24
33
  x: number;
25
34
  y: number;
@@ -45,4 +54,4 @@ export declare class TooltipDataViz {
45
54
  private calculatePlacement;
46
55
  render(): any;
47
56
  }
48
- //# sourceMappingURL=TooltipDataViz.d.ts.map
57
+ //# sourceMappingURL=TooltipChart.d.ts.map
@@ -0,0 +1,2 @@
1
+ export type { TooltipChartSide, TooltipChartAlign, TooltipChartItem, } from './TooltipChart';
2
+ //# sourceMappingURL=index.d.ts.map