@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,459 @@
1
+ {
2
+ "name": "calendar-heatmap",
3
+ "package": "@krizaka/charts",
4
+ "type": "chart",
5
+ "title": "Calendar heatmap",
6
+ "summary": "One cell a day over a year, weeks in columns, in one sequential hue: streaks, rhythms and gaps at a glance.",
7
+ "description": "One cell a day over a year, weeks in columns, in one sequential hue: streaks, rhythms and gaps at a glance.",
8
+ "status": "beta",
9
+ "category": "charts",
10
+ "platforms": "web",
11
+ "engine": "echarts",
12
+ "whenToUse": [
13
+ "A daily habit or activity over months: publications, contributions, active days."
14
+ ],
15
+ "whenNotToUse": [
16
+ {
17
+ "when": "Two categorical dimensions (weekday × hour).",
18
+ "use": "heatmap"
19
+ },
20
+ {
21
+ "when": "A trend over time.",
22
+ "use": "line-chart"
23
+ }
24
+ ],
25
+ "bestPractices": [
26
+ "Pass ISO dates (`2026-04-12`): the month and weekday names come from the locale.",
27
+ "Leave days without activity out of the data: they are drawn empty."
28
+ ],
29
+ "accessibility": {
30
+ "keyboard": [
31
+ {
32
+ "keys": "Tab",
33
+ "action": "Moves the focus to the plot (one tab stop), then to the data and export buttons."
34
+ },
35
+ {
36
+ "keys": "Arrow keys",
37
+ "action": "Walk the items one by one: each is announced and highlighted, its tooltip shown."
38
+ },
39
+ {
40
+ "keys": "Home / End",
41
+ "action": "Jump to the first or the last item."
42
+ },
43
+ {
44
+ "keys": "Esc",
45
+ "action": "Hides the tooltip and clears the highlight."
46
+ }
47
+ ],
48
+ "notes": [
49
+ "The plot is a group named by the title and described by a summary written from the data, read before anything else.",
50
+ "The data table is always in the page for assistive technology; “Show data” reveals it for everyone.",
51
+ "The engine (ECharts core and this one chart type) loads when the chart nears the screen; a skeleton of the same height holds its place, so nothing shifts.",
52
+ "Under reduced motion the chart is drawn without animation.",
53
+ "The summary says the total, the busiest day and the number of active days."
54
+ ]
55
+ },
56
+ "related": [
57
+ "heatmap",
58
+ "line-chart",
59
+ "bar-chart"
60
+ ],
61
+ "source": "packages/charts/src/meta/calendar-heatmap.ts",
62
+ "install": {
63
+ "web": "npm install @krizaka/charts",
64
+ "native": "npx expo install react-native-svg\nnpm install @krizaka/charts"
65
+ },
66
+ "web": {
67
+ "entry": "@krizaka/charts/heatmap",
68
+ "import": "import { CalendarHeatmap } from \"@krizaka/charts/heatmap\";",
69
+ "props": [
70
+ {
71
+ "component": "CalendarHeatmap",
72
+ "description": "",
73
+ "props": [
74
+ {
75
+ "name": "data",
76
+ "type": "readonly T[]",
77
+ "default": null,
78
+ "description": "One row per day (days without a row read as nothing).",
79
+ "required": true
80
+ },
81
+ {
82
+ "name": "date",
83
+ "type": "string | ((datum: T, index: number) => unknown)",
84
+ "default": null,
85
+ "description": "The field of the day: an ISO date (`2026-04-12`), a `Date` or an epoch.",
86
+ "required": true
87
+ },
88
+ {
89
+ "name": "title",
90
+ "type": "string",
91
+ "default": null,
92
+ "description": "What the chart shows, in a few words: its accessible name, and its heading unless `hideTitle`.",
93
+ "required": true
94
+ },
95
+ {
96
+ "name": "value",
97
+ "type": "string | ((datum: T, index: number) => number)",
98
+ "default": null,
99
+ "description": "The field of the day's value.",
100
+ "required": true
101
+ },
102
+ {
103
+ "name": "brand",
104
+ "type": "BrandId",
105
+ "default": null,
106
+ "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`).",
107
+ "required": false
108
+ },
109
+ {
110
+ "name": "className",
111
+ "type": "string",
112
+ "default": null,
113
+ "description": "A class on the figure (layout: margins, grid placement).",
114
+ "required": false
115
+ },
116
+ {
117
+ "name": "dataTable",
118
+ "type": "boolean",
119
+ "default": null,
120
+ "description": "The \"Show data\" button (the table is in the page for screen readers either way). Default true.",
121
+ "required": false
122
+ },
123
+ {
124
+ "name": "description",
125
+ "type": "ReactNode",
126
+ "default": null,
127
+ "description": "A sentence under the title: the period, the unit, the source.",
128
+ "required": false
129
+ },
130
+ {
131
+ "name": "empty",
132
+ "type": "ReactNode",
133
+ "default": null,
134
+ "description": "What to show when there is nothing to draw (default: the `empty` label). An `EmptyState` of\n@krizaka /ui fits.",
135
+ "required": false
136
+ },
137
+ {
138
+ "name": "error",
139
+ "type": "ReactNode",
140
+ "default": null,
141
+ "description": "The data could not be loaded: `true` says the default words, a node says yours (a retry button…).",
142
+ "required": false
143
+ },
144
+ {
145
+ "name": "exportable",
146
+ "type": "boolean | readonly ExportFormat[]",
147
+ "default": null,
148
+ "description": "Export buttons: `true` for PNG, SVG and CSV, or the formats you want.",
149
+ "required": false
150
+ },
151
+ {
152
+ "name": "format",
153
+ "type": "ValueFormat",
154
+ "default": null,
155
+ "description": "How the values are written.",
156
+ "required": false
157
+ },
158
+ {
159
+ "name": "height",
160
+ "type": "number",
161
+ "default": null,
162
+ "description": "The height of the plot in pixels. Default 280 (a sparkline: 32).",
163
+ "required": false
164
+ },
165
+ {
166
+ "name": "hideTitle",
167
+ "type": "boolean",
168
+ "default": null,
169
+ "description": "Visually hide the title (it stays the chart's accessible name): a card that already has its heading.",
170
+ "required": false
171
+ },
172
+ {
173
+ "name": "id",
174
+ "type": "string",
175
+ "default": null,
176
+ "description": "The id of the figure.",
177
+ "required": false
178
+ },
179
+ {
180
+ "name": "labels",
181
+ "type": "ChartLabelsInput",
182
+ "default": null,
183
+ "description": "The words, translated: the buttons, the states, the written summary.",
184
+ "required": false
185
+ },
186
+ {
187
+ "name": "live",
188
+ "type": "boolean",
189
+ "default": null,
190
+ "description": "Streaming data (a job queue, an auction): no entrance on updates, no announcement of every new point.",
191
+ "required": false
192
+ },
193
+ {
194
+ "name": "loading",
195
+ "type": "boolean",
196
+ "default": null,
197
+ "description": "The data is on its way: a skeleton of the chart, announced once.",
198
+ "required": false
199
+ },
200
+ {
201
+ "name": "locale",
202
+ "type": "Locale",
203
+ "default": null,
204
+ "description": "The locale of every figure and date (`\"fr-FR\"`). Default `\"en-US\"`.",
205
+ "required": false
206
+ },
207
+ {
208
+ "name": "range",
209
+ "type": "readonly [string, string]",
210
+ "default": null,
211
+ "description": "The first and last days shown. Default: the year before the last day of the data.",
212
+ "required": false
213
+ },
214
+ {
215
+ "name": "renderer",
216
+ "type": "Renderer",
217
+ "default": null,
218
+ "description": "`svg` (default): sharp, exportable as SVG. `canvas`: for tens of thousands of marks.",
219
+ "required": false
220
+ },
221
+ {
222
+ "name": "style",
223
+ "type": "CSSProperties",
224
+ "default": null,
225
+ "description": "Inline style on the figure (layout only: colours come from the tokens).",
226
+ "required": false
227
+ },
228
+ {
229
+ "name": "summary",
230
+ "type": "\"hidden\" | \"visible\"",
231
+ "default": null,
232
+ "description": "The written summary: read by screen readers only (`\"hidden\"`, default), or shown under the chart (`\"visible\"`).",
233
+ "required": false
234
+ },
235
+ {
236
+ "name": "summaryText",
237
+ "type": "string",
238
+ "default": null,
239
+ "description": "Your own summary instead of the generated one (still read first by screen readers).",
240
+ "required": false
241
+ },
242
+ {
243
+ "name": "valueLabel",
244
+ "type": "string",
245
+ "default": null,
246
+ "description": "The header of the values in the data table.",
247
+ "required": false
248
+ }
249
+ ]
250
+ }
251
+ ],
252
+ "examples": [
253
+ {
254
+ "name": "publishing",
255
+ "title": "A year of publishing",
256
+ "description": "A creator's videos published per day over a year.",
257
+ "path": "examples/calendar-heatmap/publishing.tsx",
258
+ "module": "@krizaka/charts/registry/examples/calendar-heatmap/publishing",
259
+ "code": "import { CalendarHeatmap } from \"@krizaka/charts/heatmap\";\n\n// A deterministic year: a rhythm of three videos a week, a summer break, a busy autumn.\nconst days = Array.from({ length: 365 }, (_, i) => {\n const date = new Date(Date.UTC(2025, 9, 12 + i));\n const weekday = date.getUTCDay();\n const summer = date.getUTCMonth() === 6;\n const videos = summer ? 0 : [1, 3, 5].includes(weekday) ? 1 + ((i * 7) % 3) : (i * 13) % 9 === 0 ? 1 : 0;\n return { date: date.toISOString().slice(0, 10), videos };\n}).filter((d) => d.videos > 0);\n\nexport default function Publishing() {\n return (\n <CalendarHeatmap\n title=\"Videos published, last 12 months\"\n data={days}\n date=\"date\"\n value=\"videos\"\n format=\"integer\"\n valueLabel=\"Videos\"\n />\n );\n}\n"
260
+ }
261
+ ]
262
+ },
263
+ "native": null,
264
+ "files": [],
265
+ "dependencies": [
266
+ "@krizaka/intl@workspace:^",
267
+ "d3-geo@^3.1.1",
268
+ "echarts@^6.1.0",
269
+ "topojson-client@^3.1.0"
270
+ ],
271
+ "registryDependencies": [],
272
+ "demo": {
273
+ "path": "examples/calendar-heatmap/publishing.tsx",
274
+ "content": "import { CalendarHeatmap } from \"@krizaka/charts/heatmap\";\n\n// A deterministic year: a rhythm of three videos a week, a summer break, a busy autumn.\nconst days = Array.from({ length: 365 }, (_, i) => {\n const date = new Date(Date.UTC(2025, 9, 12 + i));\n const weekday = date.getUTCDay();\n const summer = date.getUTCMonth() === 6;\n const videos = summer ? 0 : [1, 3, 5].includes(weekday) ? 1 + ((i * 7) % 3) : (i * 13) % 9 === 0 ? 1 : 0;\n return { date: date.toISOString().slice(0, 10), videos };\n}).filter((d) => d.videos > 0);\n\nexport default function Publishing() {\n return (\n <CalendarHeatmap\n title=\"Videos published, last 12 months\"\n data={days}\n date=\"date\"\n value=\"videos\"\n format=\"integer\"\n valueLabel=\"Videos\"\n />\n );\n}\n"
275
+ },
276
+ "props": [
277
+ {
278
+ "component": "CalendarHeatmap",
279
+ "description": "",
280
+ "props": [
281
+ {
282
+ "name": "data",
283
+ "type": "readonly T[]",
284
+ "default": null,
285
+ "description": "One row per day (days without a row read as nothing).",
286
+ "required": true
287
+ },
288
+ {
289
+ "name": "date",
290
+ "type": "string | ((datum: T, index: number) => unknown)",
291
+ "default": null,
292
+ "description": "The field of the day: an ISO date (`2026-04-12`), a `Date` or an epoch.",
293
+ "required": true
294
+ },
295
+ {
296
+ "name": "title",
297
+ "type": "string",
298
+ "default": null,
299
+ "description": "What the chart shows, in a few words: its accessible name, and its heading unless `hideTitle`.",
300
+ "required": true
301
+ },
302
+ {
303
+ "name": "value",
304
+ "type": "string | ((datum: T, index: number) => number)",
305
+ "default": null,
306
+ "description": "The field of the day's value.",
307
+ "required": true
308
+ },
309
+ {
310
+ "name": "brand",
311
+ "type": "BrandId",
312
+ "default": null,
313
+ "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`).",
314
+ "required": false
315
+ },
316
+ {
317
+ "name": "className",
318
+ "type": "string",
319
+ "default": null,
320
+ "description": "A class on the figure (layout: margins, grid placement).",
321
+ "required": false
322
+ },
323
+ {
324
+ "name": "dataTable",
325
+ "type": "boolean",
326
+ "default": null,
327
+ "description": "The \"Show data\" button (the table is in the page for screen readers either way). Default true.",
328
+ "required": false
329
+ },
330
+ {
331
+ "name": "description",
332
+ "type": "ReactNode",
333
+ "default": null,
334
+ "description": "A sentence under the title: the period, the unit, the source.",
335
+ "required": false
336
+ },
337
+ {
338
+ "name": "empty",
339
+ "type": "ReactNode",
340
+ "default": null,
341
+ "description": "What to show when there is nothing to draw (default: the `empty` label). An `EmptyState` of\n@krizaka /ui fits.",
342
+ "required": false
343
+ },
344
+ {
345
+ "name": "error",
346
+ "type": "ReactNode",
347
+ "default": null,
348
+ "description": "The data could not be loaded: `true` says the default words, a node says yours (a retry button…).",
349
+ "required": false
350
+ },
351
+ {
352
+ "name": "exportable",
353
+ "type": "boolean | readonly ExportFormat[]",
354
+ "default": null,
355
+ "description": "Export buttons: `true` for PNG, SVG and CSV, or the formats you want.",
356
+ "required": false
357
+ },
358
+ {
359
+ "name": "format",
360
+ "type": "ValueFormat",
361
+ "default": null,
362
+ "description": "How the values are written.",
363
+ "required": false
364
+ },
365
+ {
366
+ "name": "height",
367
+ "type": "number",
368
+ "default": null,
369
+ "description": "The height of the plot in pixels. Default 280 (a sparkline: 32).",
370
+ "required": false
371
+ },
372
+ {
373
+ "name": "hideTitle",
374
+ "type": "boolean",
375
+ "default": null,
376
+ "description": "Visually hide the title (it stays the chart's accessible name): a card that already has its heading.",
377
+ "required": false
378
+ },
379
+ {
380
+ "name": "id",
381
+ "type": "string",
382
+ "default": null,
383
+ "description": "The id of the figure.",
384
+ "required": false
385
+ },
386
+ {
387
+ "name": "labels",
388
+ "type": "ChartLabelsInput",
389
+ "default": null,
390
+ "description": "The words, translated: the buttons, the states, the written summary.",
391
+ "required": false
392
+ },
393
+ {
394
+ "name": "live",
395
+ "type": "boolean",
396
+ "default": null,
397
+ "description": "Streaming data (a job queue, an auction): no entrance on updates, no announcement of every new point.",
398
+ "required": false
399
+ },
400
+ {
401
+ "name": "loading",
402
+ "type": "boolean",
403
+ "default": null,
404
+ "description": "The data is on its way: a skeleton of the chart, announced once.",
405
+ "required": false
406
+ },
407
+ {
408
+ "name": "locale",
409
+ "type": "Locale",
410
+ "default": null,
411
+ "description": "The locale of every figure and date (`\"fr-FR\"`). Default `\"en-US\"`.",
412
+ "required": false
413
+ },
414
+ {
415
+ "name": "range",
416
+ "type": "readonly [string, string]",
417
+ "default": null,
418
+ "description": "The first and last days shown. Default: the year before the last day of the data.",
419
+ "required": false
420
+ },
421
+ {
422
+ "name": "renderer",
423
+ "type": "Renderer",
424
+ "default": null,
425
+ "description": "`svg` (default): sharp, exportable as SVG. `canvas`: for tens of thousands of marks.",
426
+ "required": false
427
+ },
428
+ {
429
+ "name": "style",
430
+ "type": "CSSProperties",
431
+ "default": null,
432
+ "description": "Inline style on the figure (layout only: colours come from the tokens).",
433
+ "required": false
434
+ },
435
+ {
436
+ "name": "summary",
437
+ "type": "\"hidden\" | \"visible\"",
438
+ "default": null,
439
+ "description": "The written summary: read by screen readers only (`\"hidden\"`, default), or shown under the chart (`\"visible\"`).",
440
+ "required": false
441
+ },
442
+ {
443
+ "name": "summaryText",
444
+ "type": "string",
445
+ "default": null,
446
+ "description": "Your own summary instead of the generated one (still read first by screen readers).",
447
+ "required": false
448
+ },
449
+ {
450
+ "name": "valueLabel",
451
+ "type": "string",
452
+ "default": null,
453
+ "description": "The header of the values in the data table.",
454
+ "required": false
455
+ }
456
+ ]
457
+ }
458
+ ]
459
+ }