@silverpoint/react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/LICENSE +21 -0
  2. package/dist/activity-grid.d.ts +10 -0
  3. package/dist/activity-grid.js +9 -0
  4. package/dist/activity-grid.js.map +1 -0
  5. package/dist/area-chart.d.ts +10 -0
  6. package/dist/area-chart.js +9 -0
  7. package/dist/area-chart.js.map +1 -0
  8. package/dist/bar-chart.d.ts +10 -0
  9. package/dist/bar-chart.js +9 -0
  10. package/dist/bar-chart.js.map +1 -0
  11. package/dist/bubble-chart.d.ts +10 -0
  12. package/dist/bubble-chart.js +9 -0
  13. package/dist/bubble-chart.js.map +1 -0
  14. package/dist/bullet-chart.d.ts +10 -0
  15. package/dist/bullet-chart.js +9 -0
  16. package/dist/bullet-chart.js.map +1 -0
  17. package/dist/candlestick-chart.d.ts +10 -0
  18. package/dist/candlestick-chart.js +9 -0
  19. package/dist/candlestick-chart.js.map +1 -0
  20. package/dist/chord-ring.d.ts +10 -0
  21. package/dist/chord-ring.js +9 -0
  22. package/dist/chord-ring.js.map +1 -0
  23. package/dist/chunk-2JXPSUCK.js +13 -0
  24. package/dist/chunk-2JXPSUCK.js.map +1 -0
  25. package/dist/chunk-2OAPH7JN.js +13 -0
  26. package/dist/chunk-2OAPH7JN.js.map +1 -0
  27. package/dist/chunk-2Q2ZZTUW.js +13 -0
  28. package/dist/chunk-2Q2ZZTUW.js.map +1 -0
  29. package/dist/chunk-4DUH2UHE.js +13 -0
  30. package/dist/chunk-4DUH2UHE.js.map +1 -0
  31. package/dist/chunk-5LQGSI6N.js +13 -0
  32. package/dist/chunk-5LQGSI6N.js.map +1 -0
  33. package/dist/chunk-6FZO4SMF.js +13 -0
  34. package/dist/chunk-6FZO4SMF.js.map +1 -0
  35. package/dist/chunk-AQMWZQ2P.js +13 -0
  36. package/dist/chunk-AQMWZQ2P.js.map +1 -0
  37. package/dist/chunk-BHZNDYU3.js +257 -0
  38. package/dist/chunk-BHZNDYU3.js.map +1 -0
  39. package/dist/chunk-BIIINOXE.js +13 -0
  40. package/dist/chunk-BIIINOXE.js.map +1 -0
  41. package/dist/chunk-CCFFHU7V.js +13 -0
  42. package/dist/chunk-CCFFHU7V.js.map +1 -0
  43. package/dist/chunk-CI4PGKUI.js +13 -0
  44. package/dist/chunk-CI4PGKUI.js.map +1 -0
  45. package/dist/chunk-CXXCUD4B.js +13 -0
  46. package/dist/chunk-CXXCUD4B.js.map +1 -0
  47. package/dist/chunk-DYK3SUIZ.js +13 -0
  48. package/dist/chunk-DYK3SUIZ.js.map +1 -0
  49. package/dist/chunk-DZPDZGM7.js +13 -0
  50. package/dist/chunk-DZPDZGM7.js.map +1 -0
  51. package/dist/chunk-FDROMD5U.js +13 -0
  52. package/dist/chunk-FDROMD5U.js.map +1 -0
  53. package/dist/chunk-G2A5PWIR.js +13 -0
  54. package/dist/chunk-G2A5PWIR.js.map +1 -0
  55. package/dist/chunk-HH2RZCH6.js +13 -0
  56. package/dist/chunk-HH2RZCH6.js.map +1 -0
  57. package/dist/chunk-HYQLSAEO.js +13 -0
  58. package/dist/chunk-HYQLSAEO.js.map +1 -0
  59. package/dist/chunk-INZGRNO3.js +100 -0
  60. package/dist/chunk-INZGRNO3.js.map +1 -0
  61. package/dist/chunk-JCIEWEQC.js +13 -0
  62. package/dist/chunk-JCIEWEQC.js.map +1 -0
  63. package/dist/chunk-KPWHWNZH.js +13 -0
  64. package/dist/chunk-KPWHWNZH.js.map +1 -0
  65. package/dist/chunk-KTBGRGB7.js +13 -0
  66. package/dist/chunk-KTBGRGB7.js.map +1 -0
  67. package/dist/chunk-LOIVX5IV.js +13 -0
  68. package/dist/chunk-LOIVX5IV.js.map +1 -0
  69. package/dist/chunk-M3X7JONW.js +13 -0
  70. package/dist/chunk-M3X7JONW.js.map +1 -0
  71. package/dist/chunk-NAYUAF7O.js +13 -0
  72. package/dist/chunk-NAYUAF7O.js.map +1 -0
  73. package/dist/chunk-NOVLEZPR.js +13 -0
  74. package/dist/chunk-NOVLEZPR.js.map +1 -0
  75. package/dist/chunk-O2DNGRM7.js +13 -0
  76. package/dist/chunk-O2DNGRM7.js.map +1 -0
  77. package/dist/chunk-ORIH4UQP.js +13 -0
  78. package/dist/chunk-ORIH4UQP.js.map +1 -0
  79. package/dist/chunk-PBT76UXS.js +13 -0
  80. package/dist/chunk-PBT76UXS.js.map +1 -0
  81. package/dist/chunk-R6PUPQUI.js +13 -0
  82. package/dist/chunk-R6PUPQUI.js.map +1 -0
  83. package/dist/chunk-RUC577P7.js +13 -0
  84. package/dist/chunk-RUC577P7.js.map +1 -0
  85. package/dist/chunk-V3PBT4XB.js +13 -0
  86. package/dist/chunk-V3PBT4XB.js.map +1 -0
  87. package/dist/chunk-WLHXHAEV.js +13 -0
  88. package/dist/chunk-WLHXHAEV.js.map +1 -0
  89. package/dist/chunk-Y7WZS3VB.js +13 -0
  90. package/dist/chunk-Y7WZS3VB.js.map +1 -0
  91. package/dist/chunk-YS5YVHK5.js +13 -0
  92. package/dist/chunk-YS5YVHK5.js.map +1 -0
  93. package/dist/composed-chart.d.ts +10 -0
  94. package/dist/composed-chart.js +9 -0
  95. package/dist/composed-chart.js.map +1 -0
  96. package/dist/coxcomb-chart.d.ts +10 -0
  97. package/dist/coxcomb-chart.js +9 -0
  98. package/dist/coxcomb-chart.js.map +1 -0
  99. package/dist/create-chart-BIG9Wtek.d.ts +18 -0
  100. package/dist/create-server-chart-B0LbkpQP.d.ts +16 -0
  101. package/dist/donut-chart.d.ts +10 -0
  102. package/dist/donut-chart.js +9 -0
  103. package/dist/donut-chart.js.map +1 -0
  104. package/dist/funnel-chart.d.ts +10 -0
  105. package/dist/funnel-chart.js +9 -0
  106. package/dist/funnel-chart.js.map +1 -0
  107. package/dist/gauge-arc.d.ts +10 -0
  108. package/dist/gauge-arc.js +9 -0
  109. package/dist/gauge-arc.js.map +1 -0
  110. package/dist/heatmap-chart.d.ts +10 -0
  111. package/dist/heatmap-chart.js +9 -0
  112. package/dist/heatmap-chart.js.map +1 -0
  113. package/dist/index.d.ts +46 -0
  114. package/dist/index.js +146 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/kpi-card.d.ts +10 -0
  117. package/dist/kpi-card.js +9 -0
  118. package/dist/kpi-card.js.map +1 -0
  119. package/dist/line-chart.d.ts +11 -0
  120. package/dist/line-chart.js +9 -0
  121. package/dist/line-chart.js.map +1 -0
  122. package/dist/meter-chart.d.ts +10 -0
  123. package/dist/meter-chart.js +9 -0
  124. package/dist/meter-chart.js.map +1 -0
  125. package/dist/orbit-chart.d.ts +10 -0
  126. package/dist/orbit-chart.js +9 -0
  127. package/dist/orbit-chart.js.map +1 -0
  128. package/dist/polar-bar-chart.d.ts +10 -0
  129. package/dist/polar-bar-chart.js +9 -0
  130. package/dist/polar-bar-chart.js.map +1 -0
  131. package/dist/pyramid-chart.d.ts +10 -0
  132. package/dist/pyramid-chart.js +9 -0
  133. package/dist/pyramid-chart.js.map +1 -0
  134. package/dist/radar-chart.d.ts +10 -0
  135. package/dist/radar-chart.js +9 -0
  136. package/dist/radar-chart.js.map +1 -0
  137. package/dist/radial-arc-group.d.ts +10 -0
  138. package/dist/radial-arc-group.js +9 -0
  139. package/dist/radial-arc-group.js.map +1 -0
  140. package/dist/radial-rings.d.ts +10 -0
  141. package/dist/radial-rings.js +9 -0
  142. package/dist/radial-rings.js.map +1 -0
  143. package/dist/range-band-chart.d.ts +10 -0
  144. package/dist/range-band-chart.js +9 -0
  145. package/dist/range-band-chart.js.map +1 -0
  146. package/dist/sankey-chart.d.ts +10 -0
  147. package/dist/sankey-chart.js +9 -0
  148. package/dist/sankey-chart.js.map +1 -0
  149. package/dist/scatter-chart.d.ts +10 -0
  150. package/dist/scatter-chart.js +9 -0
  151. package/dist/scatter-chart.js.map +1 -0
  152. package/dist/server/activity-grid.d.ts +12 -0
  153. package/dist/server/activity-grid.js +11 -0
  154. package/dist/server/activity-grid.js.map +1 -0
  155. package/dist/server/area-chart.d.ts +12 -0
  156. package/dist/server/area-chart.js +11 -0
  157. package/dist/server/area-chart.js.map +1 -0
  158. package/dist/server/bar-chart.d.ts +12 -0
  159. package/dist/server/bar-chart.js +11 -0
  160. package/dist/server/bar-chart.js.map +1 -0
  161. package/dist/server/bubble-chart.d.ts +12 -0
  162. package/dist/server/bubble-chart.js +11 -0
  163. package/dist/server/bubble-chart.js.map +1 -0
  164. package/dist/server/bullet-chart.d.ts +12 -0
  165. package/dist/server/bullet-chart.js +11 -0
  166. package/dist/server/bullet-chart.js.map +1 -0
  167. package/dist/server/candlestick-chart.d.ts +12 -0
  168. package/dist/server/candlestick-chart.js +11 -0
  169. package/dist/server/candlestick-chart.js.map +1 -0
  170. package/dist/server/chord-ring.d.ts +12 -0
  171. package/dist/server/chord-ring.js +11 -0
  172. package/dist/server/chord-ring.js.map +1 -0
  173. package/dist/server/composed-chart.d.ts +12 -0
  174. package/dist/server/composed-chart.js +11 -0
  175. package/dist/server/composed-chart.js.map +1 -0
  176. package/dist/server/coxcomb-chart.d.ts +12 -0
  177. package/dist/server/coxcomb-chart.js +11 -0
  178. package/dist/server/coxcomb-chart.js.map +1 -0
  179. package/dist/server/donut-chart.d.ts +12 -0
  180. package/dist/server/donut-chart.js +11 -0
  181. package/dist/server/donut-chart.js.map +1 -0
  182. package/dist/server/funnel-chart.d.ts +12 -0
  183. package/dist/server/funnel-chart.js +11 -0
  184. package/dist/server/funnel-chart.js.map +1 -0
  185. package/dist/server/gauge-arc.d.ts +12 -0
  186. package/dist/server/gauge-arc.js +11 -0
  187. package/dist/server/gauge-arc.js.map +1 -0
  188. package/dist/server/heatmap-chart.d.ts +12 -0
  189. package/dist/server/heatmap-chart.js +11 -0
  190. package/dist/server/heatmap-chart.js.map +1 -0
  191. package/dist/server/kpi-card.d.ts +12 -0
  192. package/dist/server/kpi-card.js +11 -0
  193. package/dist/server/kpi-card.js.map +1 -0
  194. package/dist/server/line-chart.d.ts +12 -0
  195. package/dist/server/line-chart.js +11 -0
  196. package/dist/server/line-chart.js.map +1 -0
  197. package/dist/server/meter-chart.d.ts +12 -0
  198. package/dist/server/meter-chart.js +11 -0
  199. package/dist/server/meter-chart.js.map +1 -0
  200. package/dist/server/orbit-chart.d.ts +12 -0
  201. package/dist/server/orbit-chart.js +11 -0
  202. package/dist/server/orbit-chart.js.map +1 -0
  203. package/dist/server/polar-bar-chart.d.ts +12 -0
  204. package/dist/server/polar-bar-chart.js +11 -0
  205. package/dist/server/polar-bar-chart.js.map +1 -0
  206. package/dist/server/pyramid-chart.d.ts +12 -0
  207. package/dist/server/pyramid-chart.js +11 -0
  208. package/dist/server/pyramid-chart.js.map +1 -0
  209. package/dist/server/radar-chart.d.ts +12 -0
  210. package/dist/server/radar-chart.js +11 -0
  211. package/dist/server/radar-chart.js.map +1 -0
  212. package/dist/server/radial-arc-group.d.ts +12 -0
  213. package/dist/server/radial-arc-group.js +11 -0
  214. package/dist/server/radial-arc-group.js.map +1 -0
  215. package/dist/server/radial-rings.d.ts +12 -0
  216. package/dist/server/radial-rings.js +11 -0
  217. package/dist/server/radial-rings.js.map +1 -0
  218. package/dist/server/range-band-chart.d.ts +12 -0
  219. package/dist/server/range-band-chart.js +11 -0
  220. package/dist/server/range-band-chart.js.map +1 -0
  221. package/dist/server/sankey-chart.d.ts +12 -0
  222. package/dist/server/sankey-chart.js +11 -0
  223. package/dist/server/sankey-chart.js.map +1 -0
  224. package/dist/server/scatter-chart.d.ts +12 -0
  225. package/dist/server/scatter-chart.js +11 -0
  226. package/dist/server/scatter-chart.js.map +1 -0
  227. package/dist/server/sparkline-rows.d.ts +12 -0
  228. package/dist/server/sparkline-rows.js +11 -0
  229. package/dist/server/sparkline-rows.js.map +1 -0
  230. package/dist/server/stacked-bar-chart.d.ts +12 -0
  231. package/dist/server/stacked-bar-chart.js +11 -0
  232. package/dist/server/stacked-bar-chart.js.map +1 -0
  233. package/dist/server/step-chart.d.ts +12 -0
  234. package/dist/server/step-chart.js +11 -0
  235. package/dist/server/step-chart.js.map +1 -0
  236. package/dist/server/stream-chart.d.ts +12 -0
  237. package/dist/server/stream-chart.js +11 -0
  238. package/dist/server/stream-chart.js.map +1 -0
  239. package/dist/server/treemap-chart.d.ts +12 -0
  240. package/dist/server/treemap-chart.js +11 -0
  241. package/dist/server/treemap-chart.js.map +1 -0
  242. package/dist/server/volvelle-chart.d.ts +12 -0
  243. package/dist/server/volvelle-chart.js +11 -0
  244. package/dist/server/volvelle-chart.js.map +1 -0
  245. package/dist/server/waterfall-chart.d.ts +12 -0
  246. package/dist/server/waterfall-chart.js +11 -0
  247. package/dist/server/waterfall-chart.js.map +1 -0
  248. package/dist/server/wind-rose.d.ts +12 -0
  249. package/dist/server/wind-rose.js +11 -0
  250. package/dist/server/wind-rose.js.map +1 -0
  251. package/dist/sparkline-rows.d.ts +10 -0
  252. package/dist/sparkline-rows.js +9 -0
  253. package/dist/sparkline-rows.js.map +1 -0
  254. package/dist/stacked-bar-chart.d.ts +10 -0
  255. package/dist/stacked-bar-chart.js +9 -0
  256. package/dist/stacked-bar-chart.js.map +1 -0
  257. package/dist/step-chart.d.ts +10 -0
  258. package/dist/step-chart.js +9 -0
  259. package/dist/step-chart.js.map +1 -0
  260. package/dist/stream-chart.d.ts +10 -0
  261. package/dist/stream-chart.js +9 -0
  262. package/dist/stream-chart.js.map +1 -0
  263. package/dist/treemap-chart.d.ts +10 -0
  264. package/dist/treemap-chart.js +9 -0
  265. package/dist/treemap-chart.js.map +1 -0
  266. package/dist/volvelle-chart.d.ts +10 -0
  267. package/dist/volvelle-chart.js +9 -0
  268. package/dist/volvelle-chart.js.map +1 -0
  269. package/dist/waterfall-chart.d.ts +10 -0
  270. package/dist/waterfall-chart.js +9 -0
  271. package/dist/waterfall-chart.js.map +1 -0
  272. package/dist/wind-rose.d.ts +10 -0
  273. package/dist/wind-rose.js +9 -0
  274. package/dist/wind-rose.js.map +1 -0
  275. package/package.json +448 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ernesto Crespo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,10 @@
1
+ import { C as ClientChart, I as InteractionProps } from './create-chart-BIG9Wtek.js';
2
+ import { ActivityGridProps } from '@silverpoint/core';
3
+ export { ActivityGridProps, ChartHandle } from '@silverpoint/core';
4
+ import 'react';
5
+
6
+ type ClientActivityGridProps = ActivityGridProps & InteractionProps;
7
+ /** `ActivityGrid` (REQ-087): one cell per day, a column per week (API Spec §7). */
8
+ declare const ActivityGrid: ClientChart<ActivityGridProps>;
9
+
10
+ export { ActivityGrid, type ClientActivityGridProps, InteractionProps };
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import {
3
+ ActivityGrid
4
+ } from "./chunk-PBT76UXS.js";
5
+ import "./chunk-BHZNDYU3.js";
6
+ export {
7
+ ActivityGrid
8
+ };
9
+ //# sourceMappingURL=activity-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { C as ClientChart, I as InteractionProps } from './create-chart-BIG9Wtek.js';
2
+ import { AreaChartProps } from '@silverpoint/core';
3
+ export { AreaChartProps, ChartHandle } from '@silverpoint/core';
4
+ import 'react';
5
+
6
+ type ClientAreaChartProps = AreaChartProps & InteractionProps;
7
+ /** `AreaChart` (REQ-072): a curved, toned area under its line (API Spec §7). */
8
+ declare const AreaChart: ClientChart<AreaChartProps>;
9
+
10
+ export { AreaChart, type ClientAreaChartProps, InteractionProps };
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import {
3
+ AreaChart
4
+ } from "./chunk-ORIH4UQP.js";
5
+ import "./chunk-BHZNDYU3.js";
6
+ export {
7
+ AreaChart
8
+ };
9
+ //# sourceMappingURL=area-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { C as ClientChart, I as InteractionProps } from './create-chart-BIG9Wtek.js';
2
+ import { BarChartProps } from '@silverpoint/core';
3
+ export { BarChartProps, ChartHandle } from '@silverpoint/core';
4
+ import 'react';
5
+
6
+ type ClientBarChartProps = BarChartProps & InteractionProps;
7
+ /** `BarChart` (REQ-064): pill bars, columns or rows (API Spec §7). */
8
+ declare const BarChart: ClientChart<BarChartProps>;
9
+
10
+ export { BarChart, type ClientBarChartProps, InteractionProps };
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import {
3
+ BarChart
4
+ } from "./chunk-4DUH2UHE.js";
5
+ import "./chunk-BHZNDYU3.js";
6
+ export {
7
+ BarChart
8
+ };
9
+ //# sourceMappingURL=bar-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { C as ClientChart, I as InteractionProps } from './create-chart-BIG9Wtek.js';
2
+ import { BubbleChartProps } from '@silverpoint/core';
3
+ export { BubbleChartProps, ChartHandle } from '@silverpoint/core';
4
+ import 'react';
5
+
6
+ type ClientBubbleChartProps = BubbleChartProps & InteractionProps;
7
+ /** `BubbleChart` (REQ-083): circles whose area encodes size (API Spec §7). */
8
+ declare const BubbleChart: ClientChart<BubbleChartProps>;
9
+
10
+ export { BubbleChart, type ClientBubbleChartProps, InteractionProps };
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import {
3
+ BubbleChart
4
+ } from "./chunk-6FZO4SMF.js";
5
+ import "./chunk-BHZNDYU3.js";
6
+ export {
7
+ BubbleChart
8
+ };
9
+ //# sourceMappingURL=bubble-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { C as ClientChart, I as InteractionProps } from './create-chart-BIG9Wtek.js';
2
+ import { BulletChartProps } from '@silverpoint/core';
3
+ export { BulletChartProps, ChartHandle } from '@silverpoint/core';
4
+ import 'react';
5
+
6
+ type ClientBulletChartProps = BulletChartProps & InteractionProps;
7
+ /** `BulletChart` (REQ-069): a bar to the actual value and a marker at the target (API Spec §7). */
8
+ declare const BulletChart: ClientChart<BulletChartProps>;
9
+
10
+ export { BulletChart, type ClientBulletChartProps, InteractionProps };
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import {
3
+ BulletChart
4
+ } from "./chunk-O2DNGRM7.js";
5
+ import "./chunk-BHZNDYU3.js";
6
+ export {
7
+ BulletChart
8
+ };
9
+ //# sourceMappingURL=bullet-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { C as ClientChart, I as InteractionProps } from './create-chart-BIG9Wtek.js';
2
+ import { CandlestickChartProps } from '@silverpoint/core';
3
+ export { CandlestickChartProps, ChartHandle } from '@silverpoint/core';
4
+ import 'react';
5
+
6
+ type ClientCandlestickChartProps = CandlestickChartProps & InteractionProps;
7
+ /** `CandlestickChart` (REQ-071): OHLC bodies and wicks (API Spec §7). */
8
+ declare const CandlestickChart: ClientChart<CandlestickChartProps>;
9
+
10
+ export { CandlestickChart, type ClientCandlestickChartProps, InteractionProps };
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import {
3
+ CandlestickChart
4
+ } from "./chunk-KPWHWNZH.js";
5
+ import "./chunk-BHZNDYU3.js";
6
+ export {
7
+ CandlestickChart
8
+ };
9
+ //# sourceMappingURL=candlestick-chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ import { C as ClientChart, I as InteractionProps } from './create-chart-BIG9Wtek.js';
2
+ import { ChordRingProps } from '@silverpoint/core';
3
+ export { ChartHandle, ChordRingProps } from '@silverpoint/core';
4
+ import 'react';
5
+
6
+ type ClientChordRingProps = ChordRingProps & InteractionProps;
7
+ /** `ChordRing` (REQ-091): flows between categories, ribbons over d3-chord (API Spec §7). */
8
+ declare const ChordRing: ClientChart<ChordRingProps>;
9
+
10
+ export { ChordRing, type ClientChordRingProps, InteractionProps };
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import {
3
+ ChordRing
4
+ } from "./chunk-2OAPH7JN.js";
5
+ import "./chunk-BHZNDYU3.js";
6
+ export {
7
+ ChordRing
8
+ };
9
+ //# sourceMappingURL=chord-ring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import {
3
+ createClientChart
4
+ } from "./chunk-BHZNDYU3.js";
5
+
6
+ // src/stacked-bar-chart.tsx
7
+ import { stackedBarChart } from "@silverpoint/core";
8
+ var StackedBarChart = createClientChart(stackedBarChart);
9
+
10
+ export {
11
+ StackedBarChart
12
+ };
13
+ //# sourceMappingURL=chunk-2JXPSUCK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/stacked-bar-chart.tsx"],"sourcesContent":["import { stackedBarChart, type StackedBarChartProps } from '@silverpoint/core';\nimport { createClientChart, type InteractionProps } from './create-chart';\n\nexport type { ChartHandle, InteractionProps } from './create-chart';\nexport type { StackedBarChartProps } from '@silverpoint/core';\n\nexport type ClientStackedBarChartProps = StackedBarChartProps & InteractionProps;\n\n/** `StackedBarChart` (REQ-065): one stacked segment per key (API Spec §7). */\nexport const StackedBarChart = createClientChart<StackedBarChartProps>(stackedBarChart);\n"],"mappings":";;;;;;AAAA,SAAS,uBAAkD;AASpD,IAAM,kBAAkB,kBAAwC,eAAe;","names":[]}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import {
3
+ createClientChart
4
+ } from "./chunk-BHZNDYU3.js";
5
+
6
+ // src/chord-ring.tsx
7
+ import { chordRing } from "@silverpoint/core";
8
+ var ChordRing = createClientChart(chordRing);
9
+
10
+ export {
11
+ ChordRing
12
+ };
13
+ //# sourceMappingURL=chunk-2OAPH7JN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/chord-ring.tsx"],"sourcesContent":["import { chordRing, type ChordRingProps } from '@silverpoint/core';\nimport { createClientChart, type InteractionProps } from './create-chart';\n\nexport type { ChartHandle, InteractionProps } from './create-chart';\nexport type { ChordRingProps } from '@silverpoint/core';\n\nexport type ClientChordRingProps = ChordRingProps & InteractionProps;\n\n/** `ChordRing` (REQ-091): flows between categories, ribbons over d3-chord (API Spec §7). */\nexport const ChordRing = createClientChart<ChordRingProps>(chordRing);\n"],"mappings":";;;;;;AAAA,SAAS,iBAAsC;AASxC,IAAM,YAAY,kBAAkC,SAAS;","names":[]}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import {
3
+ createClientChart
4
+ } from "./chunk-BHZNDYU3.js";
5
+
6
+ // src/pyramid-chart.tsx
7
+ import { pyramidChart } from "@silverpoint/core";
8
+ var PyramidChart = createClientChart(pyramidChart);
9
+
10
+ export {
11
+ PyramidChart
12
+ };
13
+ //# sourceMappingURL=chunk-2Q2ZZTUW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pyramid-chart.tsx"],"sourcesContent":["import { pyramidChart, type PyramidChartProps } from '@silverpoint/core';\nimport { createClientChart, type InteractionProps } from './create-chart';\n\nexport type { ChartHandle, InteractionProps } from './create-chart';\nexport type { PyramidChartProps } from '@silverpoint/core';\n\nexport type ClientPyramidChartProps = PyramidChartProps & InteractionProps;\n\n/** `PyramidChart` (REQ-070): stacked, centred tiers whose width encodes the value (API Spec §7). */\nexport const PyramidChart = createClientChart<PyramidChartProps>(pyramidChart);\n"],"mappings":";;;;;;AAAA,SAAS,oBAA4C;AAS9C,IAAM,eAAe,kBAAqC,YAAY;","names":[]}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import {
3
+ createClientChart
4
+ } from "./chunk-BHZNDYU3.js";
5
+
6
+ // src/bar-chart.tsx
7
+ import { barChart } from "@silverpoint/core";
8
+ var BarChart = createClientChart(barChart);
9
+
10
+ export {
11
+ BarChart
12
+ };
13
+ //# sourceMappingURL=chunk-4DUH2UHE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bar-chart.tsx"],"sourcesContent":["import { barChart, type BarChartProps } from '@silverpoint/core';\nimport { createClientChart, type InteractionProps } from './create-chart';\n\nexport type { ChartHandle, InteractionProps } from './create-chart';\nexport type { BarChartProps } from '@silverpoint/core';\n\nexport type ClientBarChartProps = BarChartProps & InteractionProps;\n\n/** `BarChart` (REQ-064): pill bars, columns or rows (API Spec §7). */\nexport const BarChart = createClientChart<BarChartProps>(barChart);\n"],"mappings":";;;;;;AAAA,SAAS,gBAAoC;AAStC,IAAM,WAAW,kBAAiC,QAAQ;","names":[]}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import {
3
+ createClientChart
4
+ } from "./chunk-BHZNDYU3.js";
5
+
6
+ // src/polar-bar-chart.tsx
7
+ import { polarBarChart } from "@silverpoint/core";
8
+ var PolarBarChart = createClientChart(polarBarChart);
9
+
10
+ export {
11
+ PolarBarChart
12
+ };
13
+ //# sourceMappingURL=chunk-5LQGSI6N.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/polar-bar-chart.tsx"],"sourcesContent":["import { polarBarChart, type PolarBarChartProps } from '@silverpoint/core';\nimport { createClientChart, type InteractionProps } from './create-chart';\n\nexport type { ChartHandle, InteractionProps } from './create-chart';\nexport type { PolarBarChartProps } from '@silverpoint/core';\n\nexport type ClientPolarBarChartProps = PolarBarChartProps & InteractionProps;\n\n/** `PolarBarChart` (REQ-077): 360° bars, length ∝ value (API Spec §7). */\nexport const PolarBarChart = createClientChart<PolarBarChartProps>(polarBarChart);\n"],"mappings":";;;;;;AAAA,SAAS,qBAA8C;AAShD,IAAM,gBAAgB,kBAAsC,aAAa;","names":[]}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import {
3
+ createClientChart
4
+ } from "./chunk-BHZNDYU3.js";
5
+
6
+ // src/bubble-chart.tsx
7
+ import { bubbleChart } from "@silverpoint/core";
8
+ var BubbleChart = createClientChart(bubbleChart);
9
+
10
+ export {
11
+ BubbleChart
12
+ };
13
+ //# sourceMappingURL=chunk-6FZO4SMF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bubble-chart.tsx"],"sourcesContent":["import { bubbleChart, type BubbleChartProps } from '@silverpoint/core';\nimport { createClientChart, type InteractionProps } from './create-chart';\n\nexport type { ChartHandle, InteractionProps } from './create-chart';\nexport type { BubbleChartProps } from '@silverpoint/core';\n\nexport type ClientBubbleChartProps = BubbleChartProps & InteractionProps;\n\n/** `BubbleChart` (REQ-083): circles whose area encodes size (API Spec §7). */\nexport const BubbleChart = createClientChart<BubbleChartProps>(bubbleChart);\n"],"mappings":";;;;;;AAAA,SAAS,mBAA0C;AAS5C,IAAM,cAAc,kBAAoC,WAAW;","names":[]}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import {
3
+ createClientChart
4
+ } from "./chunk-BHZNDYU3.js";
5
+
6
+ // src/gauge-arc.tsx
7
+ import { gaugeArc } from "@silverpoint/core";
8
+ var GaugeArc = createClientChart(gaugeArc);
9
+
10
+ export {
11
+ GaugeArc
12
+ };
13
+ //# sourceMappingURL=chunk-AQMWZQ2P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gauge-arc.tsx"],"sourcesContent":["import { gaugeArc, type GaugeArcProps } from '@silverpoint/core';\nimport { createClientChart, type InteractionProps } from './create-chart';\n\nexport type { ChartHandle, InteractionProps } from './create-chart';\nexport type { GaugeArcProps } from '@silverpoint/core';\n\nexport type ClientGaugeArcProps = GaugeArcProps & InteractionProps;\n\n/** `GaugeArc` (REQ-080): a 240° arc swept to a percent (API Spec §7). */\nexport const GaugeArc = createClientChart<GaugeArcProps>(gaugeArc);\n"],"mappings":";;;;;;AAAA,SAAS,gBAAoC;AAStC,IAAM,WAAW,kBAAiC,QAAQ;","names":[]}
@@ -0,0 +1,257 @@
1
+ 'use client';
2
+
3
+ // src/create-chart.tsx
4
+ import {
5
+ instanceId,
6
+ reduceInteraction
7
+ } from "@silverpoint/core";
8
+ import { renderChart, toSVGString } from "@silverpoint/grounds";
9
+ import {
10
+ forwardRef,
11
+ useContext,
12
+ useEffect as useEffect2,
13
+ useId,
14
+ useImperativeHandle,
15
+ useMemo,
16
+ useRef,
17
+ useState as useState2
18
+ } from "react";
19
+
20
+ // src/chart-svg.tsx
21
+ import { jsx, jsxs } from "react/jsx-runtime";
22
+ function Path({ path }) {
23
+ return /* @__PURE__ */ jsx(
24
+ "path",
25
+ {
26
+ d: path.d,
27
+ part: path.part,
28
+ "data-role": path.role,
29
+ "data-paint": path.paint,
30
+ "data-dash": path.dash ?? void 0,
31
+ fill: path.fill ?? void 0
32
+ }
33
+ );
34
+ }
35
+ function ChartSvg({ view }) {
36
+ const { svg } = view;
37
+ return /* @__PURE__ */ jsxs(
38
+ "svg",
39
+ {
40
+ xmlns: "http://www.w3.org/2000/svg",
41
+ viewBox: svg.viewBox,
42
+ width: svg.width,
43
+ height: svg.height,
44
+ className: svg.class,
45
+ "data-substrate": svg.substrate,
46
+ "data-mode": svg.mode,
47
+ role: svg.role,
48
+ "aria-labelledby": svg.labelledby,
49
+ children: [
50
+ /* @__PURE__ */ jsx("title", { id: view.title.id, children: view.title.text }),
51
+ /* @__PURE__ */ jsx("desc", { id: view.desc.id, children: view.desc.text }),
52
+ view.patterns.length > 0 && /* @__PURE__ */ jsx("defs", { children: view.patterns.map((pattern) => /* @__PURE__ */ jsx(
53
+ "pattern",
54
+ {
55
+ id: pattern.id,
56
+ width: pattern.width,
57
+ height: pattern.height,
58
+ patternUnits: "userSpaceOnUse",
59
+ patternTransform: pattern.transform,
60
+ children: pattern.paths.map((path, index) => /* @__PURE__ */ jsx(Path, { path }, index))
61
+ },
62
+ pattern.id
63
+ )) }),
64
+ view.paths.map((path, index) => /* @__PURE__ */ jsx(Path, { path }, index)),
65
+ view.texts.map((text, index) => /* @__PURE__ */ jsx("text", { x: text.x, y: text.y, part: text.part, "data-kind": text.kind, textAnchor: text.anchor, children: text.text }, index))
66
+ ]
67
+ }
68
+ );
69
+ }
70
+
71
+ // src/chart-frame.tsx
72
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
73
+ function Table({ table, id, visibility }) {
74
+ return /* @__PURE__ */ jsx2("div", { className: "sp-table-box", "data-visibility": visibility, children: /* @__PURE__ */ jsxs2("table", { className: "sp-table", id, "data-visibility": visibility, children: [
75
+ /* @__PURE__ */ jsx2("caption", { children: table.caption }),
76
+ /* @__PURE__ */ jsx2("thead", { children: /* @__PURE__ */ jsx2("tr", { children: table.columns.map((column, index) => /* @__PURE__ */ jsx2("th", { scope: "col", children: column }, index)) }) }),
77
+ /* @__PURE__ */ jsx2("tbody", { children: table.rows.map((row, index) => /* @__PURE__ */ jsx2("tr", { children: row.map(
78
+ (cell, column) => column === 0 ? /* @__PURE__ */ jsx2("th", { scope: "row", children: cell }, column) : /* @__PURE__ */ jsx2("td", { children: cell }, column)
79
+ ) }, index)) })
80
+ ] }) });
81
+ }
82
+ function ChartFrame({ rendered, className, rootProps, rootRef, overlay }) {
83
+ const classes = ["sp-root", `sp-ground-${rendered.ground}`, className].filter(Boolean).join(" ");
84
+ return /* @__PURE__ */ jsxs2(
85
+ "div",
86
+ {
87
+ className: classes,
88
+ "data-substrate": rendered.substrate,
89
+ "data-chrome": rendered.chrome,
90
+ "data-status": rendered.status,
91
+ ref: rootRef,
92
+ ...rootProps,
93
+ children: [
94
+ /* @__PURE__ */ jsx2(ChartSvg, { view: rendered.view }),
95
+ overlay,
96
+ rendered.dataTable !== "none" && /* @__PURE__ */ jsx2(Table, { table: rendered.table, id: rendered.ids.table, visibility: rendered.dataTable })
97
+ ]
98
+ }
99
+ );
100
+ }
101
+
102
+ // src/context.ts
103
+ import { createContext } from "react";
104
+ var SilverpointContext = createContext({});
105
+
106
+ // src/environment.ts
107
+ import { checkTypeface, FORCED_PRECISION_QUERY } from "@silverpoint/core";
108
+ import { useEffect, useState } from "react";
109
+ function useForcedPrecision() {
110
+ const [forced, setForced] = useState(false);
111
+ useEffect(() => {
112
+ if (typeof matchMedia !== "function") return;
113
+ const query = matchMedia(FORCED_PRECISION_QUERY);
114
+ const update = () => setForced(query.matches);
115
+ update();
116
+ query.addEventListener?.("change", update);
117
+ return () => query.removeEventListener?.("change", update);
118
+ }, []);
119
+ return forced;
120
+ }
121
+ function useMeasuredWidth(ref, enabled) {
122
+ const [width, setWidth] = useState(void 0);
123
+ useEffect(() => {
124
+ const element = ref.current;
125
+ if (!enabled || !element || typeof ResizeObserver !== "function") return;
126
+ const observer = new ResizeObserver((entries) => {
127
+ const entry = entries[0];
128
+ if (entry) setWidth(entry.contentRect.width);
129
+ });
130
+ observer.observe(element);
131
+ return () => observer.disconnect();
132
+ }, [ref, enabled]);
133
+ return width;
134
+ }
135
+ function useTypefaceCheck(chart) {
136
+ useEffect(() => {
137
+ if (typeof document !== "undefined" && document.fonts) void checkTypeface(document.fonts, chart);
138
+ }, [chart]);
139
+ }
140
+
141
+ // src/overlay.tsx
142
+ import { readout } from "@silverpoint/core";
143
+ import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
144
+ function Overlay({
145
+ rendered,
146
+ active,
147
+ tooltip
148
+ }) {
149
+ const current = active ? readout(rendered, active) : null;
150
+ return /* @__PURE__ */ jsxs3(Fragment, { children: [
151
+ current && active && /* @__PURE__ */ jsxs3(Fragment, { children: [
152
+ /* @__PURE__ */ jsx3("svg", { className: "sp-marker", viewBox: rendered.view.svg.viewBox, "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx3("path", { d: current.marker.d }) }),
153
+ /* @__PURE__ */ jsx3("div", { className: "sp-readout", style: { left: current.left, top: current.top }, "aria-hidden": "true", children: tooltip ? tooltip(active, current) : /* @__PURE__ */ jsxs3(Fragment, { children: [
154
+ /* @__PURE__ */ jsx3("span", { className: "sp-readout-heading", children: current.heading }),
155
+ current.text
156
+ ] }) })
157
+ ] }),
158
+ /* @__PURE__ */ jsx3("div", { className: "sp-live", "aria-live": "polite", children: current ? current.announcement : "" })
159
+ ] });
160
+ }
161
+
162
+ // src/create-chart.tsx
163
+ import { jsx as jsx4 } from "react/jsx-runtime";
164
+ function createClientChart(recipe) {
165
+ const Chart = forwardRef(function Chart2(allProps, ref) {
166
+ const { onActiveChange, onSelect, tooltip } = allProps;
167
+ const provider = useContext(SilverpointContext);
168
+ const generated = useId();
169
+ const rootRef = useRef(null);
170
+ const forcedPrecision = useForcedPrecision();
171
+ useTypefaceCheck(recipe.name);
172
+ const measured = useMeasuredWidth(rootRef, allProps.width === void 0);
173
+ const rendered = useMemo(
174
+ () => renderChart(recipe, allProps, {
175
+ id: instanceId(recipe.name, generated),
176
+ width: measured,
177
+ provider,
178
+ forcedPrecision
179
+ }),
180
+ // Keyed on the props object React hands in, which is stable across this component's own
181
+ // state changes, so moving the pointer never re-inks the chart.
182
+ [allProps, generated, measured, provider, forcedPrecision]
183
+ );
184
+ const [active, setActive] = useState2(null);
185
+ const dispatch = (event) => {
186
+ const result = reduceInteraction(rendered.geometry, active, event);
187
+ if (result.changed) {
188
+ setActive(result.active);
189
+ onActiveChange?.(result.active);
190
+ }
191
+ if (result.selected) onSelect?.(result.selected);
192
+ return result.handled;
193
+ };
194
+ const latest = useRef(dispatch);
195
+ latest.current = dispatch;
196
+ const showing = active !== null;
197
+ useEffect2(() => {
198
+ if (!showing) return void 0;
199
+ const onKey = (event) => {
200
+ if (event.key === "Escape" && !rootRef.current?.contains(event.target)) latest.current({ type: "key", key: "Escape" });
201
+ };
202
+ document.addEventListener("keydown", onKey);
203
+ return () => document.removeEventListener("keydown", onKey);
204
+ }, [showing]);
205
+ const pointer = (type) => (event) => {
206
+ const svg = rootRef.current?.querySelector("svg.sp-chart");
207
+ if (!svg) return;
208
+ const box = svg.getBoundingClientRect();
209
+ dispatch({
210
+ type,
211
+ client: { x: event.clientX, y: event.clientY },
212
+ box: { left: box.left, top: box.top, width: box.width, height: box.height },
213
+ kind: event.pointerType || "mouse"
214
+ });
215
+ };
216
+ const rootProps = {
217
+ tabIndex: 0,
218
+ role: "group",
219
+ "aria-label": rendered.name,
220
+ onPointerMove: pointer("pointer"),
221
+ onPointerDown: pointer("pointer"),
222
+ onClick: pointer("click"),
223
+ onPointerLeave: () => dispatch({ type: "leave" }),
224
+ onFocus: () => dispatch({ type: "focus" }),
225
+ onBlur: () => dispatch({ type: "blur" }),
226
+ onKeyDown: (event) => {
227
+ if (dispatch({ type: "key", key: event.key })) event.preventDefault();
228
+ }
229
+ };
230
+ useImperativeHandle(
231
+ ref,
232
+ () => ({
233
+ getGeometry: () => rendered.geometry,
234
+ toSVGString: () => toSVGString(rendered)
235
+ }),
236
+ [rendered]
237
+ );
238
+ return /* @__PURE__ */ jsx4(
239
+ ChartFrame,
240
+ {
241
+ rendered,
242
+ className: allProps.className,
243
+ rootRef,
244
+ rootProps,
245
+ overlay: /* @__PURE__ */ jsx4(Overlay, { rendered, active, tooltip })
246
+ }
247
+ );
248
+ });
249
+ Chart.displayName = recipe.name;
250
+ return Chart;
251
+ }
252
+
253
+ export {
254
+ SilverpointContext,
255
+ createClientChart
256
+ };
257
+ //# sourceMappingURL=chunk-BHZNDYU3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/create-chart.tsx","../src/chart-svg.tsx","../src/chart-frame.tsx","../src/context.ts","../src/environment.ts","../src/overlay.tsx"],"sourcesContent":["import {\n instanceId,\n reduceInteraction,\n type ActiveItem,\n type ChartHandle,\n type ChartRecipe,\n type CommonChartProps,\n type InteractionEvent,\n type PointerKind,\n} from '@silverpoint/core';\nimport { renderChart, toSVGString } from '@silverpoint/grounds';\nimport {\n forwardRef,\n useContext,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type ForwardRefExoticComponent,\n type KeyboardEvent,\n type PointerEvent,\n type RefAttributes,\n} from 'react';\nimport { ChartFrame } from './chart-frame';\nimport { SilverpointContext } from './context';\nimport { useForcedPrecision, useMeasuredWidth, useTypefaceCheck } from './environment';\nimport { Overlay, type TooltipRenderer } from './overlay';\n\nexport type { ChartHandle };\n\n/** Interaction props of the client components (API Spec §9). */\nexport interface InteractionProps {\n /** The active item changed, or `null` when it cleared (REQ-141, REQ-143). */\n onActiveChange?: (item: ActiveItem | null) => void;\n /** An item was chosen by click, Enter or Space. */\n onSelect?: (item: ActiveItem) => void;\n /** Replaces the built-in readout (REQ-142). */\n tooltip?: TooltipRenderer;\n}\n\nexport type ClientChart<P> = ForwardRefExoticComponent<P & InteractionProps & RefAttributes<ChartHandle>>;\n\n/**\n * The client component of a recipe: it measures, renders through the core pipeline and forwards\n * interaction events to the core's reducer. Every client chart is this function applied to its\n * recipe, so the charts differ only in the recipe (Art. 2).\n */\nexport function createClientChart<P extends CommonChartProps>(recipe: ChartRecipe<P>): ClientChart<P> {\n const Chart = forwardRef<ChartHandle, P & InteractionProps>(function Chart(allProps, ref) {\n const { onActiveChange, onSelect, tooltip } = allProps;\n const provider = useContext(SilverpointContext);\n const generated = useId();\n const rootRef = useRef<HTMLDivElement>(null);\n const forcedPrecision = useForcedPrecision();\n useTypefaceCheck(recipe.name);\n const measured = useMeasuredWidth(rootRef, allProps.width === undefined);\n\n const rendered = useMemo(\n () =>\n renderChart(recipe, allProps as P, {\n id: instanceId(recipe.name, generated),\n width: measured,\n provider,\n forcedPrecision,\n }),\n // Keyed on the props object React hands in, which is stable across this component's own\n // state changes, so moving the pointer never re-inks the chart.\n [allProps, generated, measured, provider, forcedPrecision],\n );\n\n const [active, setActive] = useState<ActiveItem | null>(null);\n const dispatch = (event: InteractionEvent): boolean => {\n const result = reduceInteraction(rendered.geometry, active, event);\n if (result.changed) {\n setActive(result.active);\n onActiveChange?.(result.active);\n }\n if (result.selected) onSelect?.(result.selected);\n return result.handled;\n };\n // WCAG 1.4.13: a readout shown by the pointer is dismissible with Escape wherever focus is.\n const latest = useRef(dispatch);\n latest.current = dispatch;\n const showing = active !== null;\n useEffect(() => {\n if (!showing) return undefined;\n const onKey = (event: globalThis.KeyboardEvent) => {\n if (event.key === 'Escape' && !rootRef.current?.contains(event.target as Node)) latest.current({ type: 'key', key: 'Escape' });\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [showing]);\n const pointer = (type: 'pointer' | 'click') => (event: PointerEvent<HTMLDivElement>) => {\n const svg = rootRef.current?.querySelector('svg.sp-chart');\n if (!svg) return;\n const box = svg.getBoundingClientRect();\n dispatch({\n type,\n client: { x: event.clientX, y: event.clientY },\n box: { left: box.left, top: box.top, width: box.width, height: box.height },\n kind: (event.pointerType || 'mouse') as PointerKind,\n });\n };\n const rootProps = {\n tabIndex: 0,\n role: 'group',\n 'aria-label': rendered.name,\n onPointerMove: pointer('pointer'),\n onPointerDown: pointer('pointer'),\n onClick: pointer('click'),\n onPointerLeave: () => dispatch({ type: 'leave' }),\n onFocus: () => dispatch({ type: 'focus' }),\n onBlur: () => dispatch({ type: 'blur' }),\n onKeyDown: (event: KeyboardEvent<HTMLDivElement>) => {\n if (dispatch({ type: 'key', key: event.key })) event.preventDefault();\n },\n };\n\n useImperativeHandle(\n ref,\n () => ({\n getGeometry: () => rendered.geometry,\n toSVGString: () => toSVGString(rendered),\n }),\n [rendered],\n );\n\n return (\n <ChartFrame\n rendered={rendered}\n className={allProps.className}\n rootRef={rootRef}\n rootProps={rootProps}\n overlay={<Overlay rendered={rendered} active={active} tooltip={tooltip} />}\n />\n );\n });\n Chart.displayName = recipe.name;\n return Chart as ClientChart<P>;\n}\n","import type { PathView, SvgView } from '@silverpoint/core';\n\nfunction Path({ path }: { readonly path: PathView }) {\n return (\n <path\n d={path.d}\n part={path.part}\n data-role={path.role}\n data-paint={path.paint}\n data-dash={path.dash ?? undefined}\n fill={path.fill ?? undefined}\n />\n );\n}\n\n/** Writes the core's SVG view one field to one attribute; computes nothing (Art. 2). */\nexport function ChartSvg({ view }: { readonly view: SvgView }) {\n const { svg } = view;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={svg.viewBox}\n width={svg.width}\n height={svg.height}\n className={svg.class}\n data-substrate={svg.substrate}\n data-mode={svg.mode}\n role={svg.role}\n aria-labelledby={svg.labelledby}\n >\n <title id={view.title.id}>{view.title.text}</title>\n <desc id={view.desc.id}>{view.desc.text}</desc>\n {view.patterns.length > 0 && (\n <defs>\n {view.patterns.map((pattern) => (\n <pattern\n key={pattern.id}\n id={pattern.id}\n width={pattern.width}\n height={pattern.height}\n patternUnits=\"userSpaceOnUse\"\n patternTransform={pattern.transform}\n >\n {pattern.paths.map((path, index) => (\n <Path key={index} path={path} />\n ))}\n </pattern>\n ))}\n </defs>\n )}\n {view.paths.map((path, index) => (\n <Path key={index} path={path} />\n ))}\n {view.texts.map((text, index) => (\n <text key={index} x={text.x} y={text.y} part={text.part} data-kind={text.kind} textAnchor={text.anchor}>\n {text.text}\n </text>\n ))}\n </svg>\n );\n}\n","import type { DataTable } from '@silverpoint/core';\nimport type { RenderedChart } from '@silverpoint/grounds';\nimport type { HTMLAttributes, ReactNode, Ref } from 'react';\nimport { ChartSvg } from './chart-svg';\n\nfunction Table({ table, id, visibility }: { readonly table: DataTable; readonly id: string; readonly visibility: string }) {\n return (\n <div className=\"sp-table-box\" data-visibility={visibility}>\n <table className=\"sp-table\" id={id} data-visibility={visibility}>\n <caption>{table.caption}</caption>\n <thead>\n <tr>\n {table.columns.map((column, index) => (\n <th key={index} scope=\"col\">\n {column}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {table.rows.map((row, index) => (\n <tr key={index}>\n {row.map((cell, column) =>\n column === 0 ? (\n <th key={column} scope=\"row\">\n {cell}\n </th>\n ) : (\n <td key={column}>{cell}</td>\n ),\n )}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport interface ChartFrameProps {\n readonly rendered: RenderedChart;\n readonly className?: string;\n /** Interaction handlers and focus attributes, supplied by the client component only. */\n readonly rootProps?: HTMLAttributes<HTMLDivElement>;\n readonly rootRef?: Ref<HTMLDivElement>;\n /** Readout and marker, drawn over the chart by the client component. */\n readonly overlay?: ReactNode;\n}\n\n/** The chart's DOM: root, SVG, overlay and tabular alternative (API Spec §10). */\nexport function ChartFrame({ rendered, className, rootProps, rootRef, overlay }: ChartFrameProps) {\n const classes = ['sp-root', `sp-ground-${rendered.ground}`, className].filter(Boolean).join(' ');\n return (\n <div\n className={classes}\n data-substrate={rendered.substrate}\n data-chrome={rendered.chrome}\n data-status={rendered.status}\n ref={rootRef}\n {...rootProps}\n >\n <ChartSvg view={rendered.view} />\n {overlay}\n {rendered.dataTable !== 'none' && (\n <Table table={rendered.table} id={rendered.ids.table} visibility={rendered.dataTable} />\n )}\n </div>\n );\n}\n","import type { ProviderConfig } from '@silverpoint/core';\nimport { createContext } from 'react';\n\n/** Application-wide configuration (API Spec §8.1); a chart prop always wins over it. */\nexport const SilverpointContext = createContext<ProviderConfig>({});\n","import { checkTypeface, FORCED_PRECISION_QUERY } from '@silverpoint/core';\nimport { useEffect, useState, type RefObject } from 'react';\n\n/**\n * Whether the environment forces `precision` (REQ-123). Read after hydration, so the server\n * render and the first client render agree (REQ-103).\n */\nexport function useForcedPrecision(): boolean {\n const [forced, setForced] = useState(false);\n useEffect(() => {\n if (typeof matchMedia !== 'function') return;\n const query = matchMedia(FORCED_PRECISION_QUERY);\n const update = () => setForced(query.matches);\n update();\n query.addEventListener?.('change', update);\n return () => query.removeEventListener?.('change', update);\n }, []);\n return forced;\n}\n\n/** Width of the container, measured with ResizeObserver; `undefined` until measured (REQ-009). */\nexport function useMeasuredWidth(ref: RefObject<HTMLElement | null>, enabled: boolean): number | undefined {\n const [width, setWidth] = useState<number | undefined>(undefined);\n useEffect(() => {\n const element = ref.current;\n if (!enabled || !element || typeof ResizeObserver !== 'function') return;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) setWidth(entry.contentRect.width);\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, [ref, enabled]);\n return width;\n}\n\n/** Reports SP013 when the display typeface fails to load; never blocks the render (REQ-032). */\nexport function useTypefaceCheck(chart: string): void {\n useEffect(() => {\n if (typeof document !== 'undefined' && document.fonts) void checkTypeface(document.fonts, chart);\n }, [chart]);\n}\n","import { readout, type ActiveItem, type Readout } from '@silverpoint/core';\nimport type { RenderedChart } from '@silverpoint/grounds';\nimport type { ReactNode } from 'react';\n\n/** A consumer-supplied readout renderer (REQ-142). */\nexport type TooltipRenderer = (active: ActiveItem, readout: Readout) => ReactNode;\n\n/**\n * Marker, readout and live region of the active item (REQ-141, REQ-122). Every number comes from\n * the core's `readout`; this component only places it.\n */\nexport function Overlay({\n rendered,\n active,\n tooltip,\n}: {\n readonly rendered: RenderedChart;\n readonly active: ActiveItem | null;\n readonly tooltip?: TooltipRenderer;\n}) {\n const current = active ? readout(rendered, active) : null;\n return (\n <>\n {current && active && (\n <>\n <svg className=\"sp-marker\" viewBox={rendered.view.svg.viewBox} aria-hidden=\"true\" focusable=\"false\">\n <path d={current.marker.d} />\n </svg>\n <div className=\"sp-readout\" style={{ left: current.left, top: current.top }} aria-hidden=\"true\">\n {tooltip ? (\n tooltip(active, current)\n ) : (\n <>\n <span className=\"sp-readout-heading\">{current.heading}</span>\n {current.text}\n </>\n )}\n </div>\n </>\n )}\n <div className=\"sp-live\" aria-live=\"polite\">\n {current ? current.announcement : ''}\n </div>\n </>\n );\n}\n"],"mappings":"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","names":["useEffect","useState","jsx","jsxs","jsx","jsxs","jsx","Chart","useState","useEffect"]}