@krizaka/charts 0.0.0-stage → 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 (273) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +47 -2
  3. package/dist/bar.d.ts +17 -0
  4. package/dist/bar.js +16 -0
  5. package/dist/bar.js.map +1 -0
  6. package/dist/candlestick-IG626XL4.js +13 -0
  7. package/dist/candlestick-IG626XL4.js.map +1 -0
  8. package/dist/candlestick.d.ts +42 -0
  9. package/dist/candlestick.js +13 -0
  10. package/dist/candlestick.js.map +1 -0
  11. package/dist/canvas-4MSYDVFO.js +14 -0
  12. package/dist/canvas-4MSYDVFO.js.map +1 -0
  13. package/dist/cartesian-BRhNQ3ib.d.ts +34 -0
  14. package/dist/chart.d.ts +58 -0
  15. package/dist/chart.js +11 -0
  16. package/dist/chart.js.map +1 -0
  17. package/dist/chunk-3CJHBJXA.js +186 -0
  18. package/dist/chunk-3CJHBJXA.js.map +1 -0
  19. package/dist/chunk-6FINSUOS.js +49 -0
  20. package/dist/chunk-6FINSUOS.js.map +1 -0
  21. package/dist/chunk-7CSAGFBW.js +166 -0
  22. package/dist/chunk-7CSAGFBW.js.map +1 -0
  23. package/dist/chunk-7TIFCK5E.js +103 -0
  24. package/dist/chunk-7TIFCK5E.js.map +1 -0
  25. package/dist/chunk-AHQXJSAQ.js +38 -0
  26. package/dist/chunk-AHQXJSAQ.js.map +1 -0
  27. package/dist/chunk-ANUCSRUN.js +43 -0
  28. package/dist/chunk-ANUCSRUN.js.map +1 -0
  29. package/dist/chunk-BISL7DYW.js +66 -0
  30. package/dist/chunk-BISL7DYW.js.map +1 -0
  31. package/dist/chunk-BZ5CQFPH.js +19 -0
  32. package/dist/chunk-BZ5CQFPH.js.map +1 -0
  33. package/dist/chunk-DWJPPEMC.js +455 -0
  34. package/dist/chunk-DWJPPEMC.js.map +1 -0
  35. package/dist/chunk-DZB6HEVO.js +73 -0
  36. package/dist/chunk-DZB6HEVO.js.map +1 -0
  37. package/dist/chunk-EK3Z647J.js +133 -0
  38. package/dist/chunk-EK3Z647J.js.map +1 -0
  39. package/dist/chunk-I5QUZVU2.js +234 -0
  40. package/dist/chunk-I5QUZVU2.js.map +1 -0
  41. package/dist/chunk-OB5EFDDH.js +118 -0
  42. package/dist/chunk-OB5EFDDH.js.map +1 -0
  43. package/dist/chunk-OER6ETT4.js +155 -0
  44. package/dist/chunk-OER6ETT4.js.map +1 -0
  45. package/dist/chunk-PTSB3H5Q.js +205 -0
  46. package/dist/chunk-PTSB3H5Q.js.map +1 -0
  47. package/dist/chunk-TPJDOB7R.js +15 -0
  48. package/dist/chunk-TPJDOB7R.js.map +1 -0
  49. package/dist/chunk-UNK4MJVG.js +378 -0
  50. package/dist/chunk-UNK4MJVG.js.map +1 -0
  51. package/dist/chunk-VKO2OYYM.js +88 -0
  52. package/dist/chunk-VKO2OYYM.js.map +1 -0
  53. package/dist/chunk-VKTZD7UT.js +107 -0
  54. package/dist/chunk-VKTZD7UT.js.map +1 -0
  55. package/dist/chunk-W5FX4TU3.js +102 -0
  56. package/dist/chunk-W5FX4TU3.js.map +1 -0
  57. package/dist/chunk-WBH2QU77.js +178 -0
  58. package/dist/chunk-WBH2QU77.js.map +1 -0
  59. package/dist/chunk-WIRCIOLH.js +145 -0
  60. package/dist/chunk-WIRCIOLH.js.map +1 -0
  61. package/dist/chunk-XAJ3KCC4.js +116 -0
  62. package/dist/chunk-XAJ3KCC4.js.map +1 -0
  63. package/dist/chunk-XC6BQ3RN.js +92 -0
  64. package/dist/chunk-XC6BQ3RN.js.map +1 -0
  65. package/dist/chunk-XLLYNNC6.js +89 -0
  66. package/dist/chunk-XLLYNNC6.js.map +1 -0
  67. package/dist/chunk-XR4ZJDOV.js +15 -0
  68. package/dist/chunk-XR4ZJDOV.js.map +1 -0
  69. package/dist/context-BgYUymEO.d.ts +163 -0
  70. package/dist/frame-I7_xYGy5.d.ts +45 -0
  71. package/dist/full-S2MBPEEP.js +11 -0
  72. package/dist/full-S2MBPEEP.js.map +1 -0
  73. package/dist/funnel-QU5ZPC52.js +13 -0
  74. package/dist/funnel-QU5ZPC52.js.map +1 -0
  75. package/dist/funnel.d.ts +26 -0
  76. package/dist/funnel.js +13 -0
  77. package/dist/funnel.js.map +1 -0
  78. package/dist/gauge.d.ts +38 -0
  79. package/dist/gauge.js +12 -0
  80. package/dist/gauge.js.map +1 -0
  81. package/dist/geo.d.ts +37 -0
  82. package/dist/geo.js +13 -0
  83. package/dist/geo.js.map +1 -0
  84. package/dist/globe.d.ts +36 -0
  85. package/dist/globe.js +12 -0
  86. package/dist/globe.js.map +1 -0
  87. package/dist/heatmap-JWQOKUGM.js +13 -0
  88. package/dist/heatmap-JWQOKUGM.js.map +1 -0
  89. package/dist/heatmap.d.ts +47 -0
  90. package/dist/heatmap.js +15 -0
  91. package/dist/heatmap.js.map +1 -0
  92. package/dist/host-_F8RgiIz.d.ts +15 -0
  93. package/dist/index.d.ts +22 -0
  94. package/dist/index.js +101 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/line.d.ts +25 -0
  97. package/dist/line.js +18 -0
  98. package/dist/line.js.map +1 -0
  99. package/dist/native.d.ts +300 -0
  100. package/dist/native.js +875 -0
  101. package/dist/native.js.map +1 -0
  102. package/dist/pie.d.ts +37 -0
  103. package/dist/pie.js +16 -0
  104. package/dist/pie.js.map +1 -0
  105. package/dist/provider.d.ts +73 -0
  106. package/dist/provider.js +24 -0
  107. package/dist/provider.js.map +1 -0
  108. package/dist/radar-75GRJ2IK.js +13 -0
  109. package/dist/radar-75GRJ2IK.js.map +1 -0
  110. package/dist/radar.d.ts +22 -0
  111. package/dist/radar.js +13 -0
  112. package/dist/radar.js.map +1 -0
  113. package/dist/sankey-XQTX2EG6.js +13 -0
  114. package/dist/sankey-XQTX2EG6.js.map +1 -0
  115. package/dist/sankey.d.ts +28 -0
  116. package/dist/sankey.js +13 -0
  117. package/dist/sankey.js.map +1 -0
  118. package/dist/scatter-XSNG4OKD.js +13 -0
  119. package/dist/scatter-XSNG4OKD.js.map +1 -0
  120. package/dist/scatter.d.ts +41 -0
  121. package/dist/scatter.js +15 -0
  122. package/dist/scatter.js.map +1 -0
  123. package/dist/sparkline.d.ts +26 -0
  124. package/dist/sparkline.js +15 -0
  125. package/dist/sparkline.js.map +1 -0
  126. package/dist/svg-BJUHYX3B.js +14 -0
  127. package/dist/svg-BJUHYX3B.js.map +1 -0
  128. package/dist/treemap-OMGGGB5U.js +13 -0
  129. package/dist/treemap-OMGGGB5U.js.map +1 -0
  130. package/dist/treemap.d.ts +24 -0
  131. package/dist/treemap.js +14 -0
  132. package/dist/treemap.js.map +1 -0
  133. package/dist/world-110m-DVFWXS42.js +18 -0
  134. package/dist/world-110m-DVFWXS42.js.map +1 -0
  135. package/package.json +518 -3
  136. package/registry/area-chart.json +784 -0
  137. package/registry/bar-chart.json +783 -0
  138. package/registry/calendar-heatmap.json +459 -0
  139. package/registry/candlestick.json +552 -0
  140. package/registry/chart.json +440 -0
  141. package/registry/charts-provider.json +190 -0
  142. package/registry/examples/area-chart/credits-usage.d.ts +4 -0
  143. package/registry/examples/area-chart/credits-usage.js +38 -0
  144. package/registry/examples/area-chart/credits-usage.tsx +32 -0
  145. package/registry/examples/area-chart/native/credits-usage.d.ts +4 -0
  146. package/registry/examples/area-chart/native/credits-usage.dark.png +0 -0
  147. package/registry/examples/area-chart/native/credits-usage.js +33 -0
  148. package/registry/examples/area-chart/native/credits-usage.light.png +0 -0
  149. package/registry/examples/area-chart/native/credits-usage.tsx +27 -0
  150. package/registry/examples/area-chart/storage.d.ts +4 -0
  151. package/registry/examples/area-chart/storage.js +27 -0
  152. package/registry/examples/area-chart/storage.tsx +21 -0
  153. package/registry/examples/bar-chart/jobs-by-status.d.ts +4 -0
  154. package/registry/examples/bar-chart/jobs-by-status.js +37 -0
  155. package/registry/examples/bar-chart/jobs-by-status.tsx +31 -0
  156. package/registry/examples/bar-chart/native/jobs-by-status.d.ts +4 -0
  157. package/registry/examples/bar-chart/native/jobs-by-status.dark.png +0 -0
  158. package/registry/examples/bar-chart/native/jobs-by-status.js +32 -0
  159. package/registry/examples/bar-chart/native/jobs-by-status.light.png +0 -0
  160. package/registry/examples/bar-chart/native/jobs-by-status.tsx +26 -0
  161. package/registry/examples/bar-chart/plans-by-quarter.d.ts +4 -0
  162. package/registry/examples/bar-chart/plans-by-quarter.js +31 -0
  163. package/registry/examples/bar-chart/plans-by-quarter.tsx +26 -0
  164. package/registry/examples/bar-chart/top-supporters.d.ts +4 -0
  165. package/registry/examples/bar-chart/top-supporters.js +32 -0
  166. package/registry/examples/bar-chart/top-supporters.tsx +27 -0
  167. package/registry/examples/calendar-heatmap/publishing.d.ts +4 -0
  168. package/registry/examples/calendar-heatmap/publishing.js +28 -0
  169. package/registry/examples/calendar-heatmap/publishing.tsx +23 -0
  170. package/registry/examples/candlestick/auction-bids.d.ts +4 -0
  171. package/registry/examples/candlestick/auction-bids.js +37 -0
  172. package/registry/examples/candlestick/auction-bids.tsx +32 -0
  173. package/registry/examples/chart/polar-uploads.d.ts +4 -0
  174. package/registry/examples/chart/polar-uploads.js +34 -0
  175. package/registry/examples/chart/polar-uploads.tsx +30 -0
  176. package/registry/examples/charts-provider/french-orazaka.d.ts +4 -0
  177. package/registry/examples/charts-provider/french-orazaka.js +26 -0
  178. package/registry/examples/charts-provider/french-orazaka.tsx +22 -0
  179. package/registry/examples/charts-provider/native/french-orazaka.d.ts +4 -0
  180. package/registry/examples/charts-provider/native/french-orazaka.dark.png +0 -0
  181. package/registry/examples/charts-provider/native/french-orazaka.js +17 -0
  182. package/registry/examples/charts-provider/native/french-orazaka.light.png +0 -0
  183. package/registry/examples/charts-provider/native/french-orazaka.tsx +17 -0
  184. package/registry/examples/funnel/signup.d.ts +4 -0
  185. package/registry/examples/funnel/signup.js +30 -0
  186. package/registry/examples/funnel/signup.tsx +24 -0
  187. package/registry/examples/gauge/challenge-goal.d.ts +4 -0
  188. package/registry/examples/gauge/challenge-goal.js +24 -0
  189. package/registry/examples/gauge/challenge-goal.tsx +18 -0
  190. package/registry/examples/gauge/credits-quota.d.ts +4 -0
  191. package/registry/examples/gauge/credits-quota.js +26 -0
  192. package/registry/examples/gauge/credits-quota.tsx +19 -0
  193. package/registry/examples/gauge/native/credits-quota.d.ts +4 -0
  194. package/registry/examples/gauge/native/credits-quota.dark.png +0 -0
  195. package/registry/examples/gauge/native/credits-quota.js +25 -0
  196. package/registry/examples/gauge/native/credits-quota.light.png +0 -0
  197. package/registry/examples/gauge/native/credits-quota.tsx +18 -0
  198. package/registry/examples/geo-map/viewers.d.ts +4 -0
  199. package/registry/examples/geo-map/viewers.js +43 -0
  200. package/registry/examples/geo-map/viewers.tsx +29 -0
  201. package/registry/examples/globe/deployment-regions.d.ts +4 -0
  202. package/registry/examples/globe/deployment-regions.js +36 -0
  203. package/registry/examples/globe/deployment-regions.tsx +30 -0
  204. package/registry/examples/heatmap/upload-activity.d.ts +4 -0
  205. package/registry/examples/heatmap/upload-activity.js +30 -0
  206. package/registry/examples/heatmap/upload-activity.tsx +25 -0
  207. package/registry/examples/line-chart/creator-earnings.d.ts +4 -0
  208. package/registry/examples/line-chart/creator-earnings.js +35 -0
  209. package/registry/examples/line-chart/creator-earnings.tsx +30 -0
  210. package/registry/examples/line-chart/forecast.d.ts +4 -0
  211. package/registry/examples/line-chart/forecast.js +36 -0
  212. package/registry/examples/line-chart/forecast.tsx +30 -0
  213. package/registry/examples/line-chart/live-jobs.d.ts +4 -0
  214. package/registry/examples/line-chart/live-jobs.js +21 -0
  215. package/registry/examples/line-chart/live-jobs.tsx +23 -0
  216. package/registry/examples/line-chart/native/creator-earnings.d.ts +4 -0
  217. package/registry/examples/line-chart/native/creator-earnings.dark.png +0 -0
  218. package/registry/examples/line-chart/native/creator-earnings.js +32 -0
  219. package/registry/examples/line-chart/native/creator-earnings.light.png +0 -0
  220. package/registry/examples/line-chart/native/creator-earnings.tsx +26 -0
  221. package/registry/examples/line-chart/states.d.ts +4 -0
  222. package/registry/examples/line-chart/states.js +16 -0
  223. package/registry/examples/line-chart/states.tsx +13 -0
  224. package/registry/examples/pie-chart/credit-spend.d.ts +4 -0
  225. package/registry/examples/pie-chart/credit-spend.js +30 -0
  226. package/registry/examples/pie-chart/credit-spend.tsx +24 -0
  227. package/registry/examples/pie-chart/native/credit-spend.d.ts +4 -0
  228. package/registry/examples/pie-chart/native/credit-spend.dark.png +0 -0
  229. package/registry/examples/pie-chart/native/credit-spend.js +17 -0
  230. package/registry/examples/pie-chart/native/credit-spend.light.png +0 -0
  231. package/registry/examples/pie-chart/native/credit-spend.tsx +12 -0
  232. package/registry/examples/pie-chart/storage-by-kind.d.ts +4 -0
  233. package/registry/examples/pie-chart/storage-by-kind.js +31 -0
  234. package/registry/examples/pie-chart/storage-by-kind.tsx +26 -0
  235. package/registry/examples/radar-chart/model-comparison.d.ts +4 -0
  236. package/registry/examples/radar-chart/model-comparison.js +33 -0
  237. package/registry/examples/radar-chart/model-comparison.tsx +28 -0
  238. package/registry/examples/sankey/credit-flow.d.ts +4 -0
  239. package/registry/examples/sankey/credit-flow.js +37 -0
  240. package/registry/examples/sankey/credit-flow.tsx +32 -0
  241. package/registry/examples/scatter-chart/watch-time.d.ts +4 -0
  242. package/registry/examples/scatter-chart/watch-time.js +36 -0
  243. package/registry/examples/scatter-chart/watch-time.tsx +31 -0
  244. package/registry/examples/sparkline/bars.d.ts +4 -0
  245. package/registry/examples/sparkline/bars.js +12 -0
  246. package/registry/examples/sparkline/bars.tsx +7 -0
  247. package/registry/examples/sparkline/native/stat-trend.d.ts +4 -0
  248. package/registry/examples/sparkline/native/stat-trend.dark.png +0 -0
  249. package/registry/examples/sparkline/native/stat-trend.js +12 -0
  250. package/registry/examples/sparkline/native/stat-trend.light.png +0 -0
  251. package/registry/examples/sparkline/native/stat-trend.tsx +7 -0
  252. package/registry/examples/sparkline/stat-trend.d.ts +4 -0
  253. package/registry/examples/sparkline/stat-trend.js +18 -0
  254. package/registry/examples/sparkline/stat-trend.tsx +15 -0
  255. package/registry/examples/sparkline/table-rows.d.ts +4 -0
  256. package/registry/examples/sparkline/table-rows.js +23 -0
  257. package/registry/examples/sparkline/table-rows.tsx +26 -0
  258. package/registry/examples/treemap/storage.d.ts +4 -0
  259. package/registry/examples/treemap/storage.js +17 -0
  260. package/registry/examples/treemap/storage.tsx +13 -0
  261. package/registry/funnel.json +486 -0
  262. package/registry/gauge.json +599 -0
  263. package/registry/geo-map.json +483 -0
  264. package/registry/globe.json +468 -0
  265. package/registry/heatmap.json +530 -0
  266. package/registry/index.json +420 -0
  267. package/registry/line-chart.json +792 -0
  268. package/registry/pie-chart.json +1287 -0
  269. package/registry/radar-chart.json +458 -0
  270. package/registry/sankey.json +502 -0
  271. package/registry/scatter-chart.json +558 -0
  272. package/registry/sparkline.json +562 -0
  273. package/registry/treemap.json +431 -0
@@ -0,0 +1,792 @@
1
+ {
2
+ "name": "line-chart",
3
+ "package": "@krizaka/charts",
4
+ "type": "chart",
5
+ "title": "Line chart",
6
+ "summary": "Change over time: one line per series, the last value written at its end, thresholds, markers and a crosshair tooltip.",
7
+ "description": "Change over time: one line per series, the last value written at its end, thresholds, markers and a crosshair tooltip.",
8
+ "status": "beta",
9
+ "category": "charts",
10
+ "platforms": "both",
11
+ "engine": "svg",
12
+ "whenToUse": [
13
+ "A trend over time: a creator's earnings per month, credits used per day, latency per hour.",
14
+ "Two or three series compared over the same period (this year and last, two plans).",
15
+ "A goal or a limit to read against the trend: a payout threshold, an objective, with `thresholds`."
16
+ ],
17
+ "whenNotToUse": [
18
+ {
19
+ "when": "Amounts compared across categories that are not time.",
20
+ "use": "bar-chart"
21
+ },
22
+ {
23
+ "when": "A volume whose parts add up to a total over time.",
24
+ "use": "area-chart"
25
+ },
26
+ {
27
+ "when": "A trend in a sentence, a table cell or a stat tile.",
28
+ "use": "sparkline"
29
+ }
30
+ ],
31
+ "bestPractices": [
32
+ "Give dates as ISO strings (`2026-04`, `2026-04-12`): the axis writes them in the reader's locale, by their precision.",
33
+ "Store money as integer minor units and say so with `format={{ style: \"money\", currency }}`: the axis goes compact, the tooltip exact.",
34
+ "Keep to three series or fewer; past that, split into small multiples or fold the rest into one series.",
35
+ "Dash a forecast or a previous period (`dashed`), never a different colour for the same measure.",
36
+ "Write the title as what the chart answers (“Earnings, last 6 months”): it is the accessible name."
37
+ ],
38
+ "accessibility": {
39
+ "keyboard": [
40
+ {
41
+ "keys": "Tab",
42
+ "action": "Moves the focus to the plot (one tab stop), then to the data and export buttons."
43
+ },
44
+ {
45
+ "keys": "Arrow keys",
46
+ "action": "Walk the points one by one: each is announced and its tooltip shown."
47
+ },
48
+ {
49
+ "keys": "Home / End",
50
+ "action": "Jump to the first or the last point."
51
+ },
52
+ {
53
+ "keys": "Esc",
54
+ "action": "Hides the tooltip and clears the active point."
55
+ },
56
+ {
57
+ "keys": "Enter",
58
+ "action": "Selects the active point (calls `onSelect` with its row)."
59
+ }
60
+ ],
61
+ "notes": [
62
+ "The plot is a group named by the title and described by a summary written from the data (extremes, trend), read before anything else.",
63
+ "The data table is always in the page for assistive technology; “Show data” reveals it for everyone.",
64
+ "Colour never carries a meaning alone: a legend from two series, direct labels, the table.",
65
+ "The entrance plays once, when the chart comes on screen, and never under reduced motion."
66
+ ]
67
+ },
68
+ "related": [
69
+ "area-chart",
70
+ "bar-chart",
71
+ "sparkline",
72
+ "charts-provider"
73
+ ],
74
+ "source": "packages/charts/src/meta/line-chart.ts",
75
+ "install": {
76
+ "web": "npm install @krizaka/charts",
77
+ "native": "npx expo install react-native-svg\nnpm install @krizaka/charts"
78
+ },
79
+ "web": {
80
+ "entry": "@krizaka/charts/line",
81
+ "import": "import { LineChart } from \"@krizaka/charts/line\";",
82
+ "props": [
83
+ {
84
+ "component": "LineChart",
85
+ "description": "Change over time: one line per series, the last value written at its end, a crosshair tooltip, the keyboard.",
86
+ "props": [
87
+ {
88
+ "name": "data",
89
+ "type": "readonly T[]",
90
+ "default": null,
91
+ "description": "The rows, in the order of the x axis.",
92
+ "required": true
93
+ },
94
+ {
95
+ "name": "title",
96
+ "type": "string",
97
+ "default": null,
98
+ "description": "What the chart shows, in a few words: its accessible name, and its heading unless `hideTitle`.",
99
+ "required": true
100
+ },
101
+ {
102
+ "name": "brand",
103
+ "type": "BrandId",
104
+ "default": null,
105
+ "description": "The brand whose palette the charts use. Without it, a chart follows a `.brand-<id>` ancestor, else Krizaka. Set it\nwhen the app loads a brand stylesheet on `:root` (`@krizaka/tokens/brands/orazaka.css`).",
106
+ "required": false
107
+ },
108
+ {
109
+ "name": "className",
110
+ "type": "string",
111
+ "default": null,
112
+ "description": "A class on the figure (layout: margins, grid placement).",
113
+ "required": false
114
+ },
115
+ {
116
+ "name": "curve",
117
+ "type": "Curve",
118
+ "default": null,
119
+ "description": "The shape between points: `monotone` (default, never overshoots), `linear`, `step` (a value that holds).",
120
+ "required": false
121
+ },
122
+ {
123
+ "name": "dataTable",
124
+ "type": "boolean",
125
+ "default": null,
126
+ "description": "The \"Show data\" button (the table is in the page for screen readers either way). Default true.",
127
+ "required": false
128
+ },
129
+ {
130
+ "name": "description",
131
+ "type": "ReactNode",
132
+ "default": null,
133
+ "description": "A sentence under the title: the period, the unit, the source.",
134
+ "required": false
135
+ },
136
+ {
137
+ "name": "dots",
138
+ "type": "boolean",
139
+ "default": null,
140
+ "description": "A dot on every point (short series). Default false: the end of each line carries one.",
141
+ "required": false
142
+ },
143
+ {
144
+ "name": "empty",
145
+ "type": "ReactNode",
146
+ "default": null,
147
+ "description": "What to show when there is nothing to draw (default: the `empty` label). An `EmptyState` of\n@krizaka /ui fits.",
148
+ "required": false
149
+ },
150
+ {
151
+ "name": "endLabels",
152
+ "type": "boolean",
153
+ "default": "true",
154
+ "description": "Write the last value at the end of each line (up to three series). Default true.",
155
+ "required": false
156
+ },
157
+ {
158
+ "name": "error",
159
+ "type": "ReactNode",
160
+ "default": null,
161
+ "description": "The data could not be loaded: `true` says the default words, a node says yours (a retry button…).",
162
+ "required": false
163
+ },
164
+ {
165
+ "name": "exportable",
166
+ "type": "boolean | readonly ExportFormat[]",
167
+ "default": null,
168
+ "description": "Export buttons: `true` for PNG, SVG and CSV, or the formats you want.",
169
+ "required": false
170
+ },
171
+ {
172
+ "name": "format",
173
+ "type": "ValueFormat",
174
+ "default": null,
175
+ "description": "How the values are written (axis, tooltip, table, summary). Default `\"number\"`.",
176
+ "required": false
177
+ },
178
+ {
179
+ "name": "height",
180
+ "type": "number",
181
+ "default": null,
182
+ "description": "The height of the plot in pixels. Default 280 (a sparkline: 32).",
183
+ "required": false
184
+ },
185
+ {
186
+ "name": "hideTitle",
187
+ "type": "boolean",
188
+ "default": null,
189
+ "description": "Visually hide the title (it stays the chart's accessible name): a card that already has its heading.",
190
+ "required": false
191
+ },
192
+ {
193
+ "name": "id",
194
+ "type": "string",
195
+ "default": null,
196
+ "description": "The id of the figure.",
197
+ "required": false
198
+ },
199
+ {
200
+ "name": "labels",
201
+ "type": "ChartLabelsInput",
202
+ "default": null,
203
+ "description": "The words, translated: the buttons, the states, the written summary.",
204
+ "required": false
205
+ },
206
+ {
207
+ "name": "legend",
208
+ "type": "boolean",
209
+ "default": null,
210
+ "description": "Show the legend (from two series). Default true.",
211
+ "required": false
212
+ },
213
+ {
214
+ "name": "live",
215
+ "type": "boolean",
216
+ "default": null,
217
+ "description": "Streaming data (a job queue, an auction): no entrance on updates, no announcement of every new point.",
218
+ "required": false
219
+ },
220
+ {
221
+ "name": "loading",
222
+ "type": "boolean",
223
+ "default": null,
224
+ "description": "The data is on its way: a skeleton of the chart, announced once.",
225
+ "required": false
226
+ },
227
+ {
228
+ "name": "locale",
229
+ "type": "Locale",
230
+ "default": null,
231
+ "description": "The locale of every figure and date (`\"fr-FR\"`). Default `\"en-US\"`.",
232
+ "required": false
233
+ },
234
+ {
235
+ "name": "markers",
236
+ "type": "readonly Marker[]",
237
+ "default": null,
238
+ "description": "Vertical markers at a category: a launch, an incident.",
239
+ "required": false
240
+ },
241
+ {
242
+ "name": "onSelect",
243
+ "type": "((datum: T, index: number) => void)",
244
+ "default": null,
245
+ "description": "Called with the row when a point or a bar is clicked (or Enter is pressed on it).",
246
+ "required": false
247
+ },
248
+ {
249
+ "name": "series",
250
+ "type": "readonly SeriesSpec<T>[]",
251
+ "default": null,
252
+ "description": "The series to draw, each with its field and its name; the palette follows their order.",
253
+ "required": false
254
+ },
255
+ {
256
+ "name": "style",
257
+ "type": "CSSProperties",
258
+ "default": null,
259
+ "description": "Inline style on the figure (layout only: colours come from the tokens).",
260
+ "required": false
261
+ },
262
+ {
263
+ "name": "summary",
264
+ "type": "\"hidden\" | \"visible\"",
265
+ "default": null,
266
+ "description": "The written summary: read by screen readers only (`\"hidden\"`, default), or shown under the chart (`\"visible\"`).",
267
+ "required": false
268
+ },
269
+ {
270
+ "name": "summaryText",
271
+ "type": "string",
272
+ "default": null,
273
+ "description": "Your own summary instead of the generated one (still read first by screen readers).",
274
+ "required": false
275
+ },
276
+ {
277
+ "name": "thresholds",
278
+ "type": "readonly Threshold[]",
279
+ "default": null,
280
+ "description": "Horizontal lines at a value: a goal, a payout threshold.",
281
+ "required": false
282
+ },
283
+ {
284
+ "name": "x",
285
+ "type": "string | ((datum: T, index: number) => unknown)",
286
+ "default": null,
287
+ "description": "The field (or function) of the category: a month (`\"2026-04\"`), a day, a label. Default: the row's position.",
288
+ "required": false
289
+ },
290
+ {
291
+ "name": "xFormat",
292
+ "type": "CategoryFormat",
293
+ "default": null,
294
+ "description": "How the categories are written. Default: dates by their precision (`2026-04` → `Apr 2026`), text as is.",
295
+ "required": false
296
+ },
297
+ {
298
+ "name": "xLabel",
299
+ "type": "string",
300
+ "default": null,
301
+ "description": "The header of the categories in the data table (`Month`).",
302
+ "required": false
303
+ },
304
+ {
305
+ "name": "y",
306
+ "type": "string | ((datum: T, index: number) => number | null)",
307
+ "default": null,
308
+ "description": "A single series: its field. Use `series` for several.",
309
+ "required": false
310
+ },
311
+ {
312
+ "name": "yLabel",
313
+ "type": "string",
314
+ "default": null,
315
+ "description": "The name of the single `y` series (legend, tooltip, table). Default: the field's name.",
316
+ "required": false
317
+ },
318
+ {
319
+ "name": "zero",
320
+ "type": "boolean",
321
+ "default": null,
322
+ "description": "Start the value axis at zero. Default: true for bars and areas; for lines, unless the values sit far from zero.",
323
+ "required": false
324
+ }
325
+ ]
326
+ }
327
+ ],
328
+ "examples": [
329
+ {
330
+ "name": "creator-earnings",
331
+ "title": "Creator earnings",
332
+ "description": "Six months of a creator's earnings and tips in euros, with the payout threshold.",
333
+ "path": "examples/line-chart/creator-earnings.tsx",
334
+ "module": "@krizaka/charts/registry/examples/line-chart/creator-earnings",
335
+ "code": "import { LineChart } from \"@krizaka/charts/line\";\n\n// Amounts in cents, as the ledger stores them.\nconst earnings = [\n { month: \"2026-04\", earnings: 182_000, tips: 21_000 },\n { month: \"2026-05\", earnings: 164_000, tips: 18_500 },\n { month: \"2026-06\", earnings: 231_000, tips: 26_000 },\n { month: \"2026-07\", earnings: 298_000, tips: 31_000 },\n { month: \"2026-08\", earnings: 276_000, tips: 35_500 },\n { month: \"2026-09\", earnings: 342_000, tips: 41_000 },\n];\n\nexport default function CreatorEarnings() {\n return (\n <LineChart\n title=\"Earnings, last 6 months\"\n description=\"Video sales and tips, before fees\"\n data={earnings}\n x=\"month\"\n xLabel=\"Month\"\n series={[\n { key: \"earnings\", label: \"Video sales\" },\n { key: \"tips\", label: \"Tips\" },\n ]}\n format={{ style: \"money\", currency: \"EUR\" }}\n thresholds={[{ value: 250_000, label: \"Payout threshold\", tone: \"success\" }]}\n exportable\n />\n );\n}\n"
336
+ },
337
+ {
338
+ "name": "forecast",
339
+ "title": "Forecast",
340
+ "description": "The months to come dashed after the actual ones, a marker on a launch.",
341
+ "path": "examples/line-chart/forecast.tsx",
342
+ "module": "@krizaka/charts/registry/examples/line-chart/forecast",
343
+ "code": "import { LineChart } from \"@krizaka/charts/line\";\n\nconst requests = [\n { week: \"2026-07-06\", actual: 41_200 },\n { week: \"2026-07-13\", actual: 43_900 },\n { week: \"2026-07-20\", actual: 47_100 },\n { week: \"2026-07-27\", actual: 52_800, forecast: 52_800 },\n { week: \"2026-08-03\", forecast: 57_400 },\n { week: \"2026-08-10\", forecast: 61_000 },\n { week: \"2026-08-17\", forecast: 66_300 },\n];\n\nexport default function Forecast() {\n return (\n <LineChart\n title=\"Inference requests per week\"\n description=\"Actual, then forecast\"\n data={requests}\n x=\"week\"\n xFormat=\"day\"\n series={[\n { key: \"actual\", label: \"Actual\" },\n { key: \"forecast\", label: \"Forecast\", color: 1, dashed: true },\n ]}\n format=\"compact\"\n markers={[{ x: \"2026-07-27\", label: \"Studio launch\", tone: \"accent\" }]}\n dots\n />\n );\n}\n"
344
+ },
345
+ {
346
+ "name": "live-jobs",
347
+ "title": "Live data",
348
+ "description": "A sliding window of jobs per minute, appended as they arrive (`useSlidingWindow`, `live`).",
349
+ "path": "examples/line-chart/live-jobs.tsx",
350
+ "module": "@krizaka/charts/registry/examples/line-chart/live-jobs",
351
+ "code": "\"use client\";\nimport { LineChart } from \"@krizaka/charts/line\";\nimport { useSlidingWindow } from \"@krizaka/charts/provider\";\n\ntype Minute = { at: string; completed: number };\nconst start: Minute[] = [18, 22, 19, 25, 31, 28, 26, 33, 37, 35].map((completed, i) => ({ at: `2026-10-11T14:${String(20 + i).padStart(2, \"0\")}Z`, completed }));\n\nexport default function LiveJobs() {\n // The last 10 minutes; in an app, `push` is called by a server-sent event.\n const { data, push } = useSlidingWindow<Minute>(10, start);\n const next = () => {\n const last = new Date(data[data.length - 1]!.at);\n push({ at: new Date(last.getTime() + 60_000).toISOString(), completed: 20 + ((data.length * 7) % 19) });\n };\n return (\n <div style={{ display: \"grid\", gap: 8 }}>\n <LineChart title=\"Jobs completed per minute\" data={data} x=\"at\" xFormat=\"time\" y=\"completed\" yLabel=\"Jobs\" format=\"integer\" live dots />\n <button type=\"button\" onClick={next} style={{ justifySelf: \"start\", padding: \"4px 10px\", borderRadius: 8, border: \"1px solid var(--kz-border-default)\", background: \"var(--kz-surface-2)\", color: \"var(--kz-text-primary)\" }}>\n Next minute\n </button>\n </div>\n );\n}\n"
352
+ },
353
+ {
354
+ "name": "states",
355
+ "title": "Loading, empty, error",
356
+ "description": "The three states at the chart's own height: no layout shift when the data arrives.",
357
+ "path": "examples/line-chart/states.tsx",
358
+ "module": "@krizaka/charts/registry/examples/line-chart/states",
359
+ "code": "import { LineChart } from \"@krizaka/charts/line\";\n\nconst series = [{ key: \"views\", label: \"Views\" }] as const;\n\nexport default function States() {\n return (\n <div style={{ display: \"grid\", gap: 24 }}>\n <LineChart title=\"Views (loading)\" data={[]} x=\"day\" series={series} height={140} loading />\n <LineChart title=\"Views (no data yet)\" data={[]} x=\"day\" series={series} height={140} />\n <LineChart title=\"Views (failed)\" data={[]} x=\"day\" series={series} height={140} error />\n </div>\n );\n}\n"
360
+ }
361
+ ]
362
+ },
363
+ "native": {
364
+ "entry": "@krizaka/charts/native",
365
+ "import": "import { LineChart } from \"@krizaka/charts/native\";",
366
+ "differences": [
367
+ "No data table or export: the plot is one adjustable element whose label is the title and the summary; swipe up and down to hear each point.",
368
+ "A tap selects the nearest point and writes it under the chart; no hover.",
369
+ "No markers, no end labels; `scheme` and `theme` (from @krizaka/ui/native's `useTheme()`) follow the app's theme."
370
+ ],
371
+ "props": [
372
+ {
373
+ "component": "LineChart",
374
+ "description": "Change over time (React Native): one line per series.",
375
+ "props": [
376
+ {
377
+ "name": "data",
378
+ "type": "readonly T[]",
379
+ "default": null,
380
+ "description": "The rows, in the order of the x axis.",
381
+ "required": true
382
+ },
383
+ {
384
+ "name": "title",
385
+ "type": "string",
386
+ "default": null,
387
+ "description": "What the chart shows: its heading and accessible name.",
388
+ "required": true
389
+ },
390
+ {
391
+ "name": "brand",
392
+ "type": "BrandId",
393
+ "default": null,
394
+ "description": "The brand whose palette leads. Default Krizaka.",
395
+ "required": false
396
+ },
397
+ {
398
+ "name": "curve",
399
+ "type": "Curve",
400
+ "default": "monotone",
401
+ "description": "`monotone` (default), `linear` or `step`.",
402
+ "required": false
403
+ },
404
+ {
405
+ "name": "empty",
406
+ "type": "ReactNode",
407
+ "default": null,
408
+ "description": "Shown instead of the plot when there is nothing to draw. Default: the `empty` label.",
409
+ "required": false
410
+ },
411
+ {
412
+ "name": "format",
413
+ "type": "ValueFormat",
414
+ "default": null,
415
+ "description": "How the values are written.",
416
+ "required": false
417
+ },
418
+ {
419
+ "name": "height",
420
+ "type": "number",
421
+ "default": null,
422
+ "description": "The plot's height.",
423
+ "required": false
424
+ },
425
+ {
426
+ "name": "hideTitle",
427
+ "type": "boolean",
428
+ "default": null,
429
+ "description": "Hide the heading (it stays the accessible name).",
430
+ "required": false
431
+ },
432
+ {
433
+ "name": "labels",
434
+ "type": "ChartLabelsInput",
435
+ "default": null,
436
+ "description": "The words: the readout, the summary.",
437
+ "required": false
438
+ },
439
+ {
440
+ "name": "loading",
441
+ "type": "boolean",
442
+ "default": null,
443
+ "description": "The data is on its way.",
444
+ "required": false
445
+ },
446
+ {
447
+ "name": "locale",
448
+ "type": "Locale",
449
+ "default": null,
450
+ "description": "The locale of every figure and date. Default `\"en-US\"`.",
451
+ "required": false
452
+ },
453
+ {
454
+ "name": "scheme",
455
+ "type": "Mode",
456
+ "default": null,
457
+ "description": "Dark or light. Default: the device's (pass `useTheme().scheme` of\n@krizaka /ui/native to follow the app).",
458
+ "required": false
459
+ },
460
+ {
461
+ "name": "series",
462
+ "type": "readonly SeriesSpec<T>[]",
463
+ "default": null,
464
+ "description": "The series, each with its field and name.",
465
+ "required": false
466
+ },
467
+ {
468
+ "name": "style",
469
+ "type": "ViewStyle",
470
+ "default": null,
471
+ "description": "The style of the chart's container (layout only: colours come from the theme).",
472
+ "required": false
473
+ },
474
+ {
475
+ "name": "theme",
476
+ "type": "Partial<ChartTheme>",
477
+ "default": null,
478
+ "description": "The app's colour roles (`useTheme().theme` of\n@krizaka /ui/native): a product's brand overrides apply.",
479
+ "required": false
480
+ },
481
+ {
482
+ "name": "thresholds",
483
+ "type": "readonly Threshold[]",
484
+ "default": null,
485
+ "description": "Horizontal lines at a value.",
486
+ "required": false
487
+ },
488
+ {
489
+ "name": "x",
490
+ "type": "string | ((datum: T, index: number) => unknown)",
491
+ "default": null,
492
+ "description": "The field (or function) of the category.",
493
+ "required": false
494
+ },
495
+ {
496
+ "name": "xFormat",
497
+ "type": "CategoryFormat",
498
+ "default": null,
499
+ "description": "How the categories are written.",
500
+ "required": false
501
+ },
502
+ {
503
+ "name": "y",
504
+ "type": "string | ((datum: T, index: number) => number | null)",
505
+ "default": null,
506
+ "description": "A single series: its field.",
507
+ "required": false
508
+ },
509
+ {
510
+ "name": "yLabel",
511
+ "type": "string",
512
+ "default": null,
513
+ "description": "The name of the single `y` series.",
514
+ "required": false
515
+ }
516
+ ]
517
+ }
518
+ ],
519
+ "examples": [
520
+ {
521
+ "name": "creator-earnings",
522
+ "title": "Creator earnings",
523
+ "description": "Six months of earnings and tips, the payout threshold.",
524
+ "path": "examples/line-chart/native/creator-earnings.tsx",
525
+ "module": "@krizaka/charts/registry/examples/line-chart/native/creator-earnings",
526
+ "code": "import { LineChart } from \"@krizaka/charts/native\";\n\nconst earnings = [\n { month: \"2026-04\", earnings: 182_000, tips: 21_000 },\n { month: \"2026-05\", earnings: 164_000, tips: 18_500 },\n { month: \"2026-06\", earnings: 231_000, tips: 26_000 },\n { month: \"2026-07\", earnings: 298_000, tips: 31_000 },\n { month: \"2026-08\", earnings: 276_000, tips: 35_500 },\n { month: \"2026-09\", earnings: 342_000, tips: 41_000 },\n];\n\nexport default function CreatorEarnings() {\n return (\n <LineChart\n title=\"Earnings, last 6 months\"\n data={earnings}\n x=\"month\"\n series={[\n { key: \"earnings\", label: \"Video sales\" },\n { key: \"tips\", label: \"Tips\" },\n ]}\n format={{ style: \"money\", currency: \"EUR\" }}\n thresholds={[{ value: 250_000, label: \"Payout threshold\", tone: \"success\" }]}\n />\n );\n}\n",
527
+ "screenshots": {
528
+ "dark": "examples/line-chart/native/creator-earnings.dark.png",
529
+ "light": "examples/line-chart/native/creator-earnings.light.png"
530
+ }
531
+ }
532
+ ]
533
+ },
534
+ "files": [],
535
+ "dependencies": [
536
+ "@krizaka/intl@workspace:^",
537
+ "d3-geo@^3.1.1",
538
+ "echarts@^6.1.0",
539
+ "topojson-client@^3.1.0"
540
+ ],
541
+ "registryDependencies": [],
542
+ "demo": {
543
+ "path": "examples/line-chart/creator-earnings.tsx",
544
+ "content": "import { LineChart } from \"@krizaka/charts/line\";\n\n// Amounts in cents, as the ledger stores them.\nconst earnings = [\n { month: \"2026-04\", earnings: 182_000, tips: 21_000 },\n { month: \"2026-05\", earnings: 164_000, tips: 18_500 },\n { month: \"2026-06\", earnings: 231_000, tips: 26_000 },\n { month: \"2026-07\", earnings: 298_000, tips: 31_000 },\n { month: \"2026-08\", earnings: 276_000, tips: 35_500 },\n { month: \"2026-09\", earnings: 342_000, tips: 41_000 },\n];\n\nexport default function CreatorEarnings() {\n return (\n <LineChart\n title=\"Earnings, last 6 months\"\n description=\"Video sales and tips, before fees\"\n data={earnings}\n x=\"month\"\n xLabel=\"Month\"\n series={[\n { key: \"earnings\", label: \"Video sales\" },\n { key: \"tips\", label: \"Tips\" },\n ]}\n format={{ style: \"money\", currency: \"EUR\" }}\n thresholds={[{ value: 250_000, label: \"Payout threshold\", tone: \"success\" }]}\n exportable\n />\n );\n}\n"
545
+ },
546
+ "props": [
547
+ {
548
+ "component": "LineChart",
549
+ "description": "Change over time: one line per series, the last value written at its end, a crosshair tooltip, the keyboard.",
550
+ "props": [
551
+ {
552
+ "name": "data",
553
+ "type": "readonly T[]",
554
+ "default": null,
555
+ "description": "The rows, in the order of the x axis.",
556
+ "required": true
557
+ },
558
+ {
559
+ "name": "title",
560
+ "type": "string",
561
+ "default": null,
562
+ "description": "What the chart shows, in a few words: its accessible name, and its heading unless `hideTitle`.",
563
+ "required": true
564
+ },
565
+ {
566
+ "name": "brand",
567
+ "type": "BrandId",
568
+ "default": null,
569
+ "description": "The brand whose palette the charts use. Without it, a chart follows a `.brand-<id>` ancestor, else Krizaka. Set it\nwhen the app loads a brand stylesheet on `:root` (`@krizaka/tokens/brands/orazaka.css`).",
570
+ "required": false
571
+ },
572
+ {
573
+ "name": "className",
574
+ "type": "string",
575
+ "default": null,
576
+ "description": "A class on the figure (layout: margins, grid placement).",
577
+ "required": false
578
+ },
579
+ {
580
+ "name": "curve",
581
+ "type": "Curve",
582
+ "default": null,
583
+ "description": "The shape between points: `monotone` (default, never overshoots), `linear`, `step` (a value that holds).",
584
+ "required": false
585
+ },
586
+ {
587
+ "name": "dataTable",
588
+ "type": "boolean",
589
+ "default": null,
590
+ "description": "The \"Show data\" button (the table is in the page for screen readers either way). Default true.",
591
+ "required": false
592
+ },
593
+ {
594
+ "name": "description",
595
+ "type": "ReactNode",
596
+ "default": null,
597
+ "description": "A sentence under the title: the period, the unit, the source.",
598
+ "required": false
599
+ },
600
+ {
601
+ "name": "dots",
602
+ "type": "boolean",
603
+ "default": null,
604
+ "description": "A dot on every point (short series). Default false: the end of each line carries one.",
605
+ "required": false
606
+ },
607
+ {
608
+ "name": "empty",
609
+ "type": "ReactNode",
610
+ "default": null,
611
+ "description": "What to show when there is nothing to draw (default: the `empty` label). An `EmptyState` of\n@krizaka /ui fits.",
612
+ "required": false
613
+ },
614
+ {
615
+ "name": "endLabels",
616
+ "type": "boolean",
617
+ "default": "true",
618
+ "description": "Write the last value at the end of each line (up to three series). Default true.",
619
+ "required": false
620
+ },
621
+ {
622
+ "name": "error",
623
+ "type": "ReactNode",
624
+ "default": null,
625
+ "description": "The data could not be loaded: `true` says the default words, a node says yours (a retry button…).",
626
+ "required": false
627
+ },
628
+ {
629
+ "name": "exportable",
630
+ "type": "boolean | readonly ExportFormat[]",
631
+ "default": null,
632
+ "description": "Export buttons: `true` for PNG, SVG and CSV, or the formats you want.",
633
+ "required": false
634
+ },
635
+ {
636
+ "name": "format",
637
+ "type": "ValueFormat",
638
+ "default": null,
639
+ "description": "How the values are written (axis, tooltip, table, summary). Default `\"number\"`.",
640
+ "required": false
641
+ },
642
+ {
643
+ "name": "height",
644
+ "type": "number",
645
+ "default": null,
646
+ "description": "The height of the plot in pixels. Default 280 (a sparkline: 32).",
647
+ "required": false
648
+ },
649
+ {
650
+ "name": "hideTitle",
651
+ "type": "boolean",
652
+ "default": null,
653
+ "description": "Visually hide the title (it stays the chart's accessible name): a card that already has its heading.",
654
+ "required": false
655
+ },
656
+ {
657
+ "name": "id",
658
+ "type": "string",
659
+ "default": null,
660
+ "description": "The id of the figure.",
661
+ "required": false
662
+ },
663
+ {
664
+ "name": "labels",
665
+ "type": "ChartLabelsInput",
666
+ "default": null,
667
+ "description": "The words, translated: the buttons, the states, the written summary.",
668
+ "required": false
669
+ },
670
+ {
671
+ "name": "legend",
672
+ "type": "boolean",
673
+ "default": null,
674
+ "description": "Show the legend (from two series). Default true.",
675
+ "required": false
676
+ },
677
+ {
678
+ "name": "live",
679
+ "type": "boolean",
680
+ "default": null,
681
+ "description": "Streaming data (a job queue, an auction): no entrance on updates, no announcement of every new point.",
682
+ "required": false
683
+ },
684
+ {
685
+ "name": "loading",
686
+ "type": "boolean",
687
+ "default": null,
688
+ "description": "The data is on its way: a skeleton of the chart, announced once.",
689
+ "required": false
690
+ },
691
+ {
692
+ "name": "locale",
693
+ "type": "Locale",
694
+ "default": null,
695
+ "description": "The locale of every figure and date (`\"fr-FR\"`). Default `\"en-US\"`.",
696
+ "required": false
697
+ },
698
+ {
699
+ "name": "markers",
700
+ "type": "readonly Marker[]",
701
+ "default": null,
702
+ "description": "Vertical markers at a category: a launch, an incident.",
703
+ "required": false
704
+ },
705
+ {
706
+ "name": "onSelect",
707
+ "type": "((datum: T, index: number) => void)",
708
+ "default": null,
709
+ "description": "Called with the row when a point or a bar is clicked (or Enter is pressed on it).",
710
+ "required": false
711
+ },
712
+ {
713
+ "name": "series",
714
+ "type": "readonly SeriesSpec<T>[]",
715
+ "default": null,
716
+ "description": "The series to draw, each with its field and its name; the palette follows their order.",
717
+ "required": false
718
+ },
719
+ {
720
+ "name": "style",
721
+ "type": "CSSProperties",
722
+ "default": null,
723
+ "description": "Inline style on the figure (layout only: colours come from the tokens).",
724
+ "required": false
725
+ },
726
+ {
727
+ "name": "summary",
728
+ "type": "\"hidden\" | \"visible\"",
729
+ "default": null,
730
+ "description": "The written summary: read by screen readers only (`\"hidden\"`, default), or shown under the chart (`\"visible\"`).",
731
+ "required": false
732
+ },
733
+ {
734
+ "name": "summaryText",
735
+ "type": "string",
736
+ "default": null,
737
+ "description": "Your own summary instead of the generated one (still read first by screen readers).",
738
+ "required": false
739
+ },
740
+ {
741
+ "name": "thresholds",
742
+ "type": "readonly Threshold[]",
743
+ "default": null,
744
+ "description": "Horizontal lines at a value: a goal, a payout threshold.",
745
+ "required": false
746
+ },
747
+ {
748
+ "name": "x",
749
+ "type": "string | ((datum: T, index: number) => unknown)",
750
+ "default": null,
751
+ "description": "The field (or function) of the category: a month (`\"2026-04\"`), a day, a label. Default: the row's position.",
752
+ "required": false
753
+ },
754
+ {
755
+ "name": "xFormat",
756
+ "type": "CategoryFormat",
757
+ "default": null,
758
+ "description": "How the categories are written. Default: dates by their precision (`2026-04` → `Apr 2026`), text as is.",
759
+ "required": false
760
+ },
761
+ {
762
+ "name": "xLabel",
763
+ "type": "string",
764
+ "default": null,
765
+ "description": "The header of the categories in the data table (`Month`).",
766
+ "required": false
767
+ },
768
+ {
769
+ "name": "y",
770
+ "type": "string | ((datum: T, index: number) => number | null)",
771
+ "default": null,
772
+ "description": "A single series: its field. Use `series` for several.",
773
+ "required": false
774
+ },
775
+ {
776
+ "name": "yLabel",
777
+ "type": "string",
778
+ "default": null,
779
+ "description": "The name of the single `y` series (legend, tooltip, table). Default: the field's name.",
780
+ "required": false
781
+ },
782
+ {
783
+ "name": "zero",
784
+ "type": "boolean",
785
+ "default": null,
786
+ "description": "Start the value axis at zero. Default: true for bars and areas; for lines, unless the values sit far from zero.",
787
+ "required": false
788
+ }
789
+ ]
790
+ }
791
+ ]
792
+ }