@howells/hairline 0.0.0-stage → 0.2.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 (456) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +148 -2
  4. package/lib/charts/axes.js +5 -0
  5. package/lib/charts/basics/candlestick.data.js +44 -0
  6. package/lib/charts/basics/candlestick.js +180 -0
  7. package/lib/charts/basics/daily-empty.js +24 -0
  8. package/lib/charts/basics/daily-readings.js +16 -0
  9. package/lib/charts/basics/dot-heat.data.js +225 -0
  10. package/lib/charts/basics/dot-heat.js +174 -0
  11. package/lib/charts/basics/dumbbell-queue.js +203 -0
  12. package/lib/charts/basics/hairline-area.js +208 -0
  13. package/lib/charts/basics/hairline-line.js +195 -0
  14. package/lib/charts/basics/nested-treemap.data.js +55 -0
  15. package/lib/charts/basics/nested-treemap.js +191 -0
  16. package/lib/charts/basics/paired-rungs.data.js +31 -0
  17. package/lib/charts/basics/paired-rungs.js +151 -0
  18. package/lib/charts/basics/plumb-scatter.js +229 -0
  19. package/lib/charts/basics/rung-bars.js +178 -0
  20. package/lib/charts/basics/rung-geometry.js +6 -0
  21. package/lib/charts/basics/rung-histogram.data.js +73 -0
  22. package/lib/charts/basics/rung-histogram.js +153 -0
  23. package/lib/charts/basics/rung-waterfall.data.js +30 -0
  24. package/lib/charts/basics/rung-waterfall.js +150 -0
  25. package/lib/charts/basics/rungs.js +22 -0
  26. package/lib/charts/basics/series-key.js +26 -0
  27. package/lib/charts/basics/stacked-rungs.data.js +42 -0
  28. package/lib/charts/basics/stacked-rungs.js +174 -0
  29. package/lib/charts/basics/stream-ribbon.data.js +124 -0
  30. package/lib/charts/basics/stream-ribbon.js +336 -0
  31. package/lib/charts/basics/tick-box.data.js +50 -0
  32. package/lib/charts/basics/tick-box.js +226 -0
  33. package/lib/charts/basics/tick-donut.data.js +30 -0
  34. package/lib/charts/basics/tick-donut.js +210 -0
  35. package/lib/charts/basics/tick-gauge.data.js +8 -0
  36. package/lib/charts/basics/tick-gauge.js +169 -0
  37. package/lib/charts/basics/tick-rows.data.js +30 -0
  38. package/lib/charts/basics/tick-rows.js +121 -0
  39. package/lib/charts/basics/util-a.js +15 -0
  40. package/lib/charts/basics/util-b.js +13 -0
  41. package/lib/charts/big/circular-graph.data.js +827 -0
  42. package/lib/charts/big/circular-graph.js +289 -0
  43. package/lib/charts/big/force-galaxy-model.js +167 -0
  44. package/lib/charts/big/force-galaxy.data.js +813 -0
  45. package/lib/charts/big/force-galaxy.js +276 -0
  46. package/lib/charts/big/thread-triptych.data.js +204 -0
  47. package/lib/charts/big/thread-triptych.js +334 -0
  48. package/lib/charts/board/room.js +6 -0
  49. package/lib/charts/board/slope.js +176 -0
  50. package/lib/charts/board/spread.js +28 -0
  51. package/lib/charts/control.js +18 -0
  52. package/lib/charts/core.js +84 -0
  53. package/lib/charts/data-table.js +34 -0
  54. package/lib/charts/fills.js +153 -0
  55. package/lib/charts/forms/area-difference.data.js +62 -0
  56. package/lib/charts/forms/area-difference.js +192 -0
  57. package/lib/charts/forms/brush-math.js +42 -0
  58. package/lib/charts/forms/brush-strip.js +199 -0
  59. package/lib/charts/forms/brushed-overview.data.js +374 -0
  60. package/lib/charts/forms/brushed-overview.js +162 -0
  61. package/lib/charts/forms/chord-ring.data.js +140 -0
  62. package/lib/charts/forms/chord-ring.js +167 -0
  63. package/lib/charts/forms/circle-pack.data.js +80 -0
  64. package/lib/charts/forms/circle-pack.js +99 -0
  65. package/lib/charts/forms/hatched-stack.data.js +71 -0
  66. package/lib/charts/forms/hatched-stack.js +228 -0
  67. package/lib/charts/forms/radial-year.data.js +13 -0
  68. package/lib/charts/forms/radial-year.js +156 -0
  69. package/lib/charts/frame.js +73 -0
  70. package/lib/charts/glance/aggregate-sankey.data.js +74 -0
  71. package/lib/charts/glance/aggregate-sankey.js +242 -0
  72. package/lib/charts/glance/bar-race.data.js +122 -0
  73. package/lib/charts/glance/bar-race.js +246 -0
  74. package/lib/charts/glance/big-slice.data.js +41 -0
  75. package/lib/charts/glance/big-slice.js +238 -0
  76. package/lib/charts/glance/chunky-bars.data.js +22 -0
  77. package/lib/charts/glance/chunky-bars.js +113 -0
  78. package/lib/charts/glance/circular-graph.data.js +146 -0
  79. package/lib/charts/glance/circular-graph.js +138 -0
  80. package/lib/charts/glance/control-slot.js +9 -0
  81. package/lib/charts/glance/diverging-bar.data.js +34 -0
  82. package/lib/charts/glance/diverging-bar.js +154 -0
  83. package/lib/charts/glance/dot-waffle.data.js +26 -0
  84. package/lib/charts/glance/dot-waffle.js +179 -0
  85. package/lib/charts/glance/draw-in.data.js +9 -0
  86. package/lib/charts/glance/draw-in.goals.json.js +289 -0
  87. package/lib/charts/glance/draw-in.js +214 -0
  88. package/lib/charts/glance/dynamic-stream.data.js +6 -0
  89. package/lib/charts/glance/dynamic-stream.js +189 -0
  90. package/lib/charts/glance/force-graph.data.js +77 -0
  91. package/lib/charts/glance/force-graph.js +211 -0
  92. package/lib/charts/glance/jitter-strip.data.js +10 -0
  93. package/lib/charts/glance/jitter-strip.easter.json.js +430 -0
  94. package/lib/charts/glance/jitter-strip.js +157 -0
  95. package/lib/charts/glance/link-bundle.js +51 -0
  96. package/lib/charts/glance/matrix-heat-glance.data.js +108 -0
  97. package/lib/charts/glance/matrix-heat-glance.js +170 -0
  98. package/lib/charts/glance/pictorial-bar.data.js +22 -0
  99. package/lib/charts/glance/pictorial-bar.js +180 -0
  100. package/lib/charts/glance/rainfall-dual-area.data.js +177 -0
  101. package/lib/charts/glance/rainfall-dual-area.js +192 -0
  102. package/lib/charts/glance/rank-strip.data.js +76 -0
  103. package/lib/charts/glance/rank-strip.js +172 -0
  104. package/lib/charts/glance/scatter-labels.js +60 -0
  105. package/lib/charts/glance/scatter-morph.data.js +78 -0
  106. package/lib/charts/glance/scatter-morph.js +338 -0
  107. package/lib/charts/glance/single-axis.data.js +6 -0
  108. package/lib/charts/glance/single-axis.js +150 -0
  109. package/lib/charts/glance/single-axis.tides.json.js +180 -0
  110. package/lib/charts/glance/stagger-wave.data.js +66 -0
  111. package/lib/charts/glance/stagger-wave.js +132 -0
  112. package/lib/charts/glance/tree-lr.data.js +41 -0
  113. package/lib/charts/glance/tree-lr.js +135 -0
  114. package/lib/charts/glance/util-a.js +49 -0
  115. package/lib/charts/glance/util-b.js +19 -0
  116. package/lib/charts/glance/violin.data.js +9 -0
  117. package/lib/charts/glance/violin.js +185 -0
  118. package/lib/charts/glance/violin.tenors.json.js +5 -0
  119. package/lib/charts/hooks.js +154 -0
  120. package/lib/charts/hover.js +19 -0
  121. package/lib/charts/lupi/arc-matrix.data.js +83 -0
  122. package/lib/charts/lupi/arc-matrix.js +146 -0
  123. package/lib/charts/lupi/ballot-tally.data.js +22 -0
  124. package/lib/charts/lupi/ballot-tally.js +125 -0
  125. package/lib/charts/lupi/barcode-lollipop.data.js +195 -0
  126. package/lib/charts/lupi/barcode-lollipop.js +161 -0
  127. package/lib/charts/lupi/brand-spectrum.data.js +70 -0
  128. package/lib/charts/lupi/brand-spectrum.js +233 -0
  129. package/lib/charts/lupi/bubble-almanac.data.js +689 -0
  130. package/lib/charts/lupi/bubble-almanac.js +164 -0
  131. package/lib/charts/lupi/calendar-heat.data.js +399 -0
  132. package/lib/charts/lupi/calendar-heat.js +175 -0
  133. package/lib/charts/lupi/cluster-field.data.js +83 -0
  134. package/lib/charts/lupi/cluster-field.js +173 -0
  135. package/lib/charts/lupi/dot-cascade.data.js +54 -0
  136. package/lib/charts/lupi/dot-cascade.js +124 -0
  137. package/lib/charts/lupi/dotty-matrix.data.js +170 -0
  138. package/lib/charts/lupi/dotty-matrix.js +126 -0
  139. package/lib/charts/lupi/hourglass-stream.data.js +30 -0
  140. package/lib/charts/lupi/hourglass-stream.js +158 -0
  141. package/lib/charts/lupi/hundred-field.data.js +38 -0
  142. package/lib/charts/lupi/hundred-field.js +237 -0
  143. package/lib/charts/lupi/launch-fan.data.js +315 -0
  144. package/lib/charts/lupi/launch-fan.js +198 -0
  145. package/lib/charts/lupi/matrix-heat.data.js +97 -0
  146. package/lib/charts/lupi/matrix-heat.js +246 -0
  147. package/lib/charts/lupi/parallel-coordinates.data.js +54 -0
  148. package/lib/charts/lupi/parallel-coordinates.js +218 -0
  149. package/lib/charts/lupi/radial-convergence.data.js +178 -0
  150. package/lib/charts/lupi/radial-convergence.js +208 -0
  151. package/lib/charts/lupi/radial-patchwork.data.js +454 -0
  152. package/lib/charts/lupi/radial-patchwork.js +181 -0
  153. package/lib/charts/lupi/ridgeline.data.js +1834 -0
  154. package/lib/charts/lupi/ridgeline.js +195 -0
  155. package/lib/charts/lupi/trend-lineage.data.js +51 -0
  156. package/lib/charts/lupi/trend-lineage.js +198 -0
  157. package/lib/charts/lupi/type-colonnade.data.js +18 -0
  158. package/lib/charts/lupi/type-colonnade.js +198 -0
  159. package/lib/charts/lupi/util-a.js +14 -0
  160. package/lib/charts/lupi/util-b.js +12 -0
  161. package/lib/charts/maps/choropleth.js +295 -0
  162. package/lib/charts/maps/geo.js +84 -0
  163. package/lib/charts/maps/legend.js +83 -0
  164. package/lib/charts/maps/step-fill.js +9 -0
  165. package/lib/charts/maps/us-choropleth.data.js +249 -0
  166. package/lib/charts/maps/us-choropleth.js +41 -0
  167. package/lib/charts/maps/world-choropleth.data.js +681 -0
  168. package/lib/charts/maps/world-choropleth.js +46 -0
  169. package/lib/charts/markers.js +35 -0
  170. package/lib/charts/marks.js +31 -0
  171. package/lib/charts/motion.js +11 -0
  172. package/lib/charts/originals/daily-users.data.js +101 -0
  173. package/lib/charts/originals/daily-users.js +203 -0
  174. package/lib/charts/originals/feature-rank.data.js +92 -0
  175. package/lib/charts/originals/feature-rank.js +167 -0
  176. package/lib/charts/originals/format.js +5 -0
  177. package/lib/charts/originals/key.js +26 -0
  178. package/lib/charts/originals/response-time.data.js +98 -0
  179. package/lib/charts/originals/response-time.js +187 -0
  180. package/lib/charts/originals/revenue-by-plan.data.js +26 -0
  181. package/lib/charts/originals/revenue-by-plan.js +248 -0
  182. package/lib/charts/playback.js +68 -0
  183. package/lib/charts/plot-note.js +27 -0
  184. package/lib/charts/roles.js +5 -0
  185. package/lib/charts/rules.js +66 -0
  186. package/lib/charts/scale-context.js +6 -0
  187. package/lib/charts/shapes.js +8 -0
  188. package/lib/charts/shared-options.js +25 -0
  189. package/lib/charts/svg.js +43 -0
  190. package/lib/charts/text.js +30 -0
  191. package/lib/charts/texture-ids.js +20 -0
  192. package/lib/charts/texture.js +286 -0
  193. package/lib/charts/util.js +43 -0
  194. package/lib/charts/value-grid.js +26 -0
  195. package/lib/draw.js +27 -0
  196. package/lib/entries/dumbbell-queue.js +2 -0
  197. package/lib/entries/hairline-area.js +2 -0
  198. package/lib/entries/hairline-line.js +2 -0
  199. package/lib/entries/plumb-scatter.js +2 -0
  200. package/lib/entries/rung-bars.js +2 -0
  201. package/lib/entries/slope.js +2 -0
  202. package/lib/frame.js +2 -0
  203. package/lib/hairline.css +1385 -0
  204. package/lib/index.js +72 -0
  205. package/lib/json-schema/dumbbell-queue.json +258 -0
  206. package/lib/json-schema/hairline-area.json +262 -0
  207. package/lib/json-schema/hairline-line.json +256 -0
  208. package/lib/json-schema/index.json +50 -0
  209. package/lib/json-schema/plumb-scatter.json +363 -0
  210. package/lib/json-schema/rung-bars.json +230 -0
  211. package/lib/json-schema/slope.json +333 -0
  212. package/lib/kit.js +16 -0
  213. package/lib/lib/format.js +29 -0
  214. package/lib/lib/random.js +8 -0
  215. package/lib/maps.js +4 -0
  216. package/lib/schema/daily.js +9 -0
  217. package/lib/schema/dumbbell-queue.js +28 -0
  218. package/lib/schema/format.js +72 -0
  219. package/lib/schema/hairline-area.js +24 -0
  220. package/lib/schema/hairline-line.js +23 -0
  221. package/lib/schema/key.js +4 -0
  222. package/lib/schema/metrics.js +26 -0
  223. package/lib/schema/motion.js +12 -0
  224. package/lib/schema/options.js +21 -0
  225. package/lib/schema/plumb-scatter.js +48 -0
  226. package/lib/schema/registry.js +132 -0
  227. package/lib/schema/rung-bars.js +25 -0
  228. package/lib/schema/scale.js +9 -0
  229. package/lib/schema/slope.js +28 -0
  230. package/lib/schema/validate.js +25 -0
  231. package/lib/schema.js +16 -0
  232. package/lib/theme/derive.js +98 -0
  233. package/lib/theme.css +443 -0
  234. package/lib/theme.js +1 -0
  235. package/lib/tokens.css +306 -0
  236. package/lib/types/charts/axes.d.ts +14 -0
  237. package/lib/types/charts/basics/candlestick.d.ts +22 -0
  238. package/lib/types/charts/basics/candlestick.data.d.ts +10 -0
  239. package/lib/types/charts/basics/daily-empty.d.ts +7 -0
  240. package/lib/types/charts/basics/daily-readings.d.ts +38 -0
  241. package/lib/types/charts/basics/dot-heat.d.ts +19 -0
  242. package/lib/types/charts/basics/dot-heat.data.d.ts +28 -0
  243. package/lib/types/charts/basics/dumbbell-queue.d.ts +15 -0
  244. package/lib/types/charts/basics/hairline-area.d.ts +18 -0
  245. package/lib/types/charts/basics/hairline-line.d.ts +18 -0
  246. package/lib/types/charts/basics/nested-treemap.d.ts +18 -0
  247. package/lib/types/charts/basics/nested-treemap.data.d.ts +30 -0
  248. package/lib/types/charts/basics/paired-rungs.d.ts +21 -0
  249. package/lib/types/charts/basics/paired-rungs.data.d.ts +43 -0
  250. package/lib/types/charts/basics/plumb-scatter.d.ts +14 -0
  251. package/lib/types/charts/basics/rung-bars.d.ts +16 -0
  252. package/lib/types/charts/basics/rung-geometry.d.ts +6 -0
  253. package/lib/types/charts/basics/rung-histogram.d.ts +22 -0
  254. package/lib/types/charts/basics/rung-histogram.data.d.ts +34 -0
  255. package/lib/types/charts/basics/rung-waterfall.d.ts +19 -0
  256. package/lib/types/charts/basics/rung-waterfall.data.d.ts +31 -0
  257. package/lib/types/charts/basics/rungs.d.ts +28 -0
  258. package/lib/types/charts/basics/series-key.d.ts +19 -0
  259. package/lib/types/charts/basics/stacked-rungs.d.ts +20 -0
  260. package/lib/types/charts/basics/stacked-rungs.data.d.ts +26 -0
  261. package/lib/types/charts/basics/stream-ribbon.d.ts +19 -0
  262. package/lib/types/charts/basics/stream-ribbon.data.d.ts +29 -0
  263. package/lib/types/charts/basics/tick-box.d.ts +19 -0
  264. package/lib/types/charts/basics/tick-box.data.d.ts +30 -0
  265. package/lib/types/charts/basics/tick-donut.d.ts +24 -0
  266. package/lib/types/charts/basics/tick-donut.data.d.ts +25 -0
  267. package/lib/types/charts/basics/tick-gauge.d.ts +22 -0
  268. package/lib/types/charts/basics/tick-gauge.data.d.ts +24 -0
  269. package/lib/types/charts/basics/tick-rows.d.ts +18 -0
  270. package/lib/types/charts/basics/tick-rows.data.d.ts +23 -0
  271. package/lib/types/charts/basics/util-a.d.ts +10 -0
  272. package/lib/types/charts/basics/util-b.d.ts +13 -0
  273. package/lib/types/charts/big/circular-graph.d.ts +20 -0
  274. package/lib/types/charts/big/circular-graph.data.d.ts +46 -0
  275. package/lib/types/charts/big/force-galaxy-model.d.ts +109 -0
  276. package/lib/types/charts/big/force-galaxy.d.ts +18 -0
  277. package/lib/types/charts/big/force-galaxy.data.d.ts +48 -0
  278. package/lib/types/charts/big/thread-triptych.d.ts +17 -0
  279. package/lib/types/charts/big/thread-triptych.data.d.ts +41 -0
  280. package/lib/types/charts/board/room.d.ts +18 -0
  281. package/lib/types/charts/board/slope.d.ts +14 -0
  282. package/lib/types/charts/board/spread.d.ts +5 -0
  283. package/lib/types/charts/control.d.ts +17 -0
  284. package/lib/types/charts/core.d.ts +77 -0
  285. package/lib/types/charts/data-table.d.ts +18 -0
  286. package/lib/types/charts/fills.d.ts +103 -0
  287. package/lib/types/charts/forms/area-difference.d.ts +9 -0
  288. package/lib/types/charts/forms/area-difference.data.d.ts +26 -0
  289. package/lib/types/charts/forms/brush-math.d.ts +19 -0
  290. package/lib/types/charts/forms/brush-strip.d.ts +19 -0
  291. package/lib/types/charts/forms/brushed-overview.d.ts +12 -0
  292. package/lib/types/charts/forms/brushed-overview.data.d.ts +16 -0
  293. package/lib/types/charts/forms/chord-ring.d.ts +12 -0
  294. package/lib/types/charts/forms/chord-ring.data.d.ts +29 -0
  295. package/lib/types/charts/forms/circle-pack.d.ts +9 -0
  296. package/lib/types/charts/forms/circle-pack.data.d.ts +23 -0
  297. package/lib/types/charts/forms/hatched-stack.d.ts +10 -0
  298. package/lib/types/charts/forms/hatched-stack.data.d.ts +36 -0
  299. package/lib/types/charts/forms/radial-year.d.ts +8 -0
  300. package/lib/types/charts/forms/radial-year.data.d.ts +17 -0
  301. package/lib/types/charts/frame.d.ts +21 -0
  302. package/lib/types/charts/glance/aggregate-sankey.d.ts +23 -0
  303. package/lib/types/charts/glance/aggregate-sankey.data.d.ts +32 -0
  304. package/lib/types/charts/glance/bar-race.d.ts +20 -0
  305. package/lib/types/charts/glance/bar-race.data.d.ts +32 -0
  306. package/lib/types/charts/glance/big-slice.d.ts +27 -0
  307. package/lib/types/charts/glance/big-slice.data.d.ts +30 -0
  308. package/lib/types/charts/glance/chunky-bars.d.ts +18 -0
  309. package/lib/types/charts/glance/chunky-bars.data.d.ts +24 -0
  310. package/lib/types/charts/glance/circular-graph.d.ts +19 -0
  311. package/lib/types/charts/glance/circular-graph.data.d.ts +43 -0
  312. package/lib/types/charts/glance/control-slot.d.ts +9 -0
  313. package/lib/types/charts/glance/diverging-bar.d.ts +19 -0
  314. package/lib/types/charts/glance/diverging-bar.data.d.ts +27 -0
  315. package/lib/types/charts/glance/dot-waffle.d.ts +19 -0
  316. package/lib/types/charts/glance/dot-waffle.data.d.ts +31 -0
  317. package/lib/types/charts/glance/draw-in.d.ts +20 -0
  318. package/lib/types/charts/glance/draw-in.data.d.ts +6 -0
  319. package/lib/types/charts/glance/dynamic-stream.d.ts +22 -0
  320. package/lib/types/charts/glance/dynamic-stream.data.d.ts +7 -0
  321. package/lib/types/charts/glance/force-graph.d.ts +16 -0
  322. package/lib/types/charts/glance/force-graph.data.d.ts +45 -0
  323. package/lib/types/charts/glance/jitter-strip.d.ts +24 -0
  324. package/lib/types/charts/glance/jitter-strip.data.d.ts +27 -0
  325. package/lib/types/charts/glance/link-bundle.d.ts +22 -0
  326. package/lib/types/charts/glance/matrix-heat-glance.d.ts +22 -0
  327. package/lib/types/charts/glance/matrix-heat-glance.data.d.ts +35 -0
  328. package/lib/types/charts/glance/pictorial-bar.d.ts +20 -0
  329. package/lib/types/charts/glance/pictorial-bar.data.d.ts +27 -0
  330. package/lib/types/charts/glance/rainfall-dual-area.d.ts +19 -0
  331. package/lib/types/charts/glance/rainfall-dual-area.data.d.ts +32 -0
  332. package/lib/types/charts/glance/rank-strip.d.ts +19 -0
  333. package/lib/types/charts/glance/rank-strip.data.d.ts +36 -0
  334. package/lib/types/charts/glance/scatter-labels.d.ts +23 -0
  335. package/lib/types/charts/glance/scatter-morph.d.ts +22 -0
  336. package/lib/types/charts/glance/scatter-morph.data.d.ts +30 -0
  337. package/lib/types/charts/glance/single-axis.d.ts +27 -0
  338. package/lib/types/charts/glance/single-axis.data.d.ts +6 -0
  339. package/lib/types/charts/glance/stagger-wave.d.ts +18 -0
  340. package/lib/types/charts/glance/stagger-wave.data.d.ts +26 -0
  341. package/lib/types/charts/glance/tree-lr.d.ts +16 -0
  342. package/lib/types/charts/glance/tree-lr.data.d.ts +27 -0
  343. package/lib/types/charts/glance/util-a.d.ts +31 -0
  344. package/lib/types/charts/glance/util-b.d.ts +12 -0
  345. package/lib/types/charts/glance/violin.d.ts +22 -0
  346. package/lib/types/charts/glance/violin.data.d.ts +24 -0
  347. package/lib/types/charts/hooks.d.ts +109 -0
  348. package/lib/types/charts/hover.d.ts +26 -0
  349. package/lib/types/charts/lupi/arc-matrix.d.ts +18 -0
  350. package/lib/types/charts/lupi/arc-matrix.data.d.ts +28 -0
  351. package/lib/types/charts/lupi/ballot-tally.d.ts +19 -0
  352. package/lib/types/charts/lupi/ballot-tally.data.d.ts +28 -0
  353. package/lib/types/charts/lupi/barcode-lollipop.d.ts +19 -0
  354. package/lib/types/charts/lupi/barcode-lollipop.data.d.ts +26 -0
  355. package/lib/types/charts/lupi/brand-spectrum.d.ts +28 -0
  356. package/lib/types/charts/lupi/brand-spectrum.data.d.ts +34 -0
  357. package/lib/types/charts/lupi/bubble-almanac.d.ts +22 -0
  358. package/lib/types/charts/lupi/bubble-almanac.data.d.ts +45 -0
  359. package/lib/types/charts/lupi/calendar-heat.d.ts +19 -0
  360. package/lib/types/charts/lupi/calendar-heat.data.d.ts +20 -0
  361. package/lib/types/charts/lupi/cluster-field.d.ts +21 -0
  362. package/lib/types/charts/lupi/cluster-field.data.d.ts +52 -0
  363. package/lib/types/charts/lupi/dot-cascade.d.ts +22 -0
  364. package/lib/types/charts/lupi/dot-cascade.data.d.ts +24 -0
  365. package/lib/types/charts/lupi/dotty-matrix.d.ts +17 -0
  366. package/lib/types/charts/lupi/dotty-matrix.data.d.ts +32 -0
  367. package/lib/types/charts/lupi/hourglass-stream.d.ts +18 -0
  368. package/lib/types/charts/lupi/hourglass-stream.data.d.ts +27 -0
  369. package/lib/types/charts/lupi/hundred-field.d.ts +18 -0
  370. package/lib/types/charts/lupi/hundred-field.data.d.ts +24 -0
  371. package/lib/types/charts/lupi/launch-fan.d.ts +37 -0
  372. package/lib/types/charts/lupi/launch-fan.data.d.ts +41 -0
  373. package/lib/types/charts/lupi/matrix-heat.d.ts +20 -0
  374. package/lib/types/charts/lupi/matrix-heat.data.d.ts +29 -0
  375. package/lib/types/charts/lupi/parallel-coordinates.d.ts +23 -0
  376. package/lib/types/charts/lupi/parallel-coordinates.data.d.ts +40 -0
  377. package/lib/types/charts/lupi/radial-convergence.d.ts +15 -0
  378. package/lib/types/charts/lupi/radial-convergence.data.d.ts +24 -0
  379. package/lib/types/charts/lupi/radial-patchwork.d.ts +16 -0
  380. package/lib/types/charts/lupi/radial-patchwork.data.d.ts +35 -0
  381. package/lib/types/charts/lupi/ridgeline.d.ts +23 -0
  382. package/lib/types/charts/lupi/ridgeline.data.d.ts +19 -0
  383. package/lib/types/charts/lupi/trend-lineage.d.ts +18 -0
  384. package/lib/types/charts/lupi/trend-lineage.data.d.ts +56 -0
  385. package/lib/types/charts/lupi/type-colonnade.d.ts +20 -0
  386. package/lib/types/charts/lupi/type-colonnade.data.d.ts +30 -0
  387. package/lib/types/charts/lupi/util-a.d.ts +9 -0
  388. package/lib/types/charts/lupi/util-b.d.ts +11 -0
  389. package/lib/types/charts/maps/choropleth.d.ts +33 -0
  390. package/lib/types/charts/maps/geo.d.ts +48 -0
  391. package/lib/types/charts/maps/legend.d.ts +14 -0
  392. package/lib/types/charts/maps/step-fill.d.ts +6 -0
  393. package/lib/types/charts/maps/us-choropleth.d.ts +25 -0
  394. package/lib/types/charts/maps/us-choropleth.data.d.ts +23 -0
  395. package/lib/types/charts/maps/world-choropleth.d.ts +22 -0
  396. package/lib/types/charts/maps/world-choropleth.data.d.ts +35 -0
  397. package/lib/types/charts/markers.d.ts +42 -0
  398. package/lib/types/charts/marks.d.ts +58 -0
  399. package/lib/types/charts/motion.d.ts +12 -0
  400. package/lib/types/charts/originals/daily-users.d.ts +13 -0
  401. package/lib/types/charts/originals/daily-users.data.d.ts +17 -0
  402. package/lib/types/charts/originals/feature-rank.d.ts +13 -0
  403. package/lib/types/charts/originals/feature-rank.data.d.ts +29 -0
  404. package/lib/types/charts/originals/format.d.ts +2 -0
  405. package/lib/types/charts/originals/key.d.ts +16 -0
  406. package/lib/types/charts/originals/response-time.d.ts +11 -0
  407. package/lib/types/charts/originals/response-time.data.d.ts +24 -0
  408. package/lib/types/charts/originals/revenue-by-plan.d.ts +12 -0
  409. package/lib/types/charts/originals/revenue-by-plan.data.d.ts +26 -0
  410. package/lib/types/charts/playback.d.ts +42 -0
  411. package/lib/types/charts/plot-note.d.ts +37 -0
  412. package/lib/types/charts/roles.d.ts +28 -0
  413. package/lib/types/charts/rules.d.ts +62 -0
  414. package/lib/types/charts/scale-context.d.ts +3 -0
  415. package/lib/types/charts/shapes.d.ts +9 -0
  416. package/lib/types/charts/shared-options.d.ts +25 -0
  417. package/lib/types/charts/svg.d.ts +24 -0
  418. package/lib/types/charts/text.d.ts +36 -0
  419. package/lib/types/charts/texture-ids.d.ts +24 -0
  420. package/lib/types/charts/texture.d.ts +185 -0
  421. package/lib/types/charts/util.d.ts +66 -0
  422. package/lib/types/charts/value-grid.d.ts +22 -0
  423. package/lib/types/draw.d.ts +279 -0
  424. package/lib/types/entries/dumbbell-queue.d.ts +2 -0
  425. package/lib/types/entries/hairline-area.d.ts +2 -0
  426. package/lib/types/entries/hairline-line.d.ts +2 -0
  427. package/lib/types/entries/plumb-scatter.d.ts +2 -0
  428. package/lib/types/entries/rung-bars.d.ts +2 -0
  429. package/lib/types/entries/slope.d.ts +2 -0
  430. package/lib/types/frame.d.ts +2 -0
  431. package/lib/types/index.d.ts +82 -0
  432. package/lib/types/kit.d.ts +22 -0
  433. package/lib/types/lib/format.d.ts +58 -0
  434. package/lib/types/lib/random.d.ts +5 -0
  435. package/lib/types/maps.d.ts +2 -0
  436. package/lib/types/schema/daily.d.ts +14 -0
  437. package/lib/types/schema/dumbbell-queue.d.ts +91 -0
  438. package/lib/types/schema/format.d.ts +101 -0
  439. package/lib/types/schema/hairline-area.d.ts +83 -0
  440. package/lib/types/schema/hairline-line.d.ts +85 -0
  441. package/lib/types/schema/key.d.ts +12 -0
  442. package/lib/types/schema/metrics.d.ts +26 -0
  443. package/lib/types/schema/motion.d.ts +22 -0
  444. package/lib/types/schema/options.d.ts +51 -0
  445. package/lib/types/schema/plumb-scatter.d.ts +124 -0
  446. package/lib/types/schema/registry.d.ts +309 -0
  447. package/lib/types/schema/rung-bars.d.ts +84 -0
  448. package/lib/types/schema/scale.d.ts +36 -0
  449. package/lib/types/schema/slope.d.ts +120 -0
  450. package/lib/types/schema/validate.d.ts +29 -0
  451. package/lib/types/schema.d.ts +30 -0
  452. package/lib/types/theme/derive.d.ts +23 -0
  453. package/lib/types/theme.d.ts +2 -0
  454. package/lib/vendor/us-atlas/states-10m.json.js +13855 -0
  455. package/lib/vendor/world-atlas/countries-110m.json.js +9357 -0
  456. package/package.json +160 -3
@@ -0,0 +1,23 @@
1
+ /**
2
+ * O9 Towers by county: church towers with a ring of bells hung for full-circle
3
+ * ringing, by country and county.
4
+ * Source: Dove's Guide for Church Bell Ringers (Central Council of Church Bell
5
+ * Ringers), https://dove.cccbr.org.uk/downloads (CC BY-SA 4.0; changes made:
6
+ * counted and trimmed, below).
7
+ * Fetched 2026-10-15.
8
+ * File: dove.csv (one row per full-circle or lightweight ring). Transform:
9
+ * rows with RingType "Full-circle ring" only; the distinct TowerID values
10
+ * counted for each Country and County. Three countries are shown: England
11
+ * (the six counties with most towers, of 49 with any; 6,656 towers in all),
12
+ * Wales (the four with most, of 22; 228 in all) and Australia (the four with
13
+ * most, of 8; 70 in all). Each cut falls where the next county has fewer
14
+ * towers than the last one kept.
15
+ */
16
+ /** A node in the hierarchy: a country with counties, or a county with its tower count. */
17
+ export interface OrgNode {
18
+ children?: OrgNode[];
19
+ name: string;
20
+ value?: number;
21
+ }
22
+ /** Towers with a full-circle ring in the largest counties of England, Wales and Australia. */
23
+ export declare const orgDemo: OrgNode;
@@ -0,0 +1,10 @@
1
+ import type { ShareTable } from "./hatched-stack.data.js";
2
+ /**
3
+ * O10 Land by nation. Part-to-whole bars told apart by four engraving
4
+ * families at four greys, not by colour: dense upright rules, a halftone
5
+ * screen, crosshatch and sparse level rules. The largest share, England's
6
+ * farmland, is the one segment in ink.
7
+ */
8
+ export declare const HatchedStack: (props: {
9
+ data?: ShareTable;
10
+ }) => import("react").JSX.Element;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * O10 Land by nation: how the land of each UK nation is covered.
3
+ * Source: UK Centre for Ecology and Hydrology, Land Cover Map 2021 (LCM2021),
4
+ * Marston et al. 2023, Earth System Science Data 15, 4631-4649 (CC BY 4.0),
5
+ * Table 5, https://essd.copernicus.org/articles/15/4631/2023/essd-15-4631-2023.pdf
6
+ * Fetched 2026-10-15.
7
+ * Transform: Table 5 gives the area in km2 of 21 classes for the UK and each
8
+ * nation. Farmland is arable (3) plus improved grassland (4); Woodland is
9
+ * broadleaved (1) plus coniferous (2); Built is urban (20) plus suburban
10
+ * (21); Other is the remaining 15 classes (semi-natural grassland, heather,
11
+ * bog, fen, rock, water and the coast). Each share is the group's area over
12
+ * the sum of the 21 classes (which differs from the printed total by 0 to 5
13
+ * km2 of rounding), to one decimal, the four rounded by largest remainder so
14
+ * each row sums to 100.0.
15
+ */
16
+ /**
17
+ * The engraving that marks a kind of land, one of four families: upright
18
+ * rules, a halftone dot screen, crosshatch, and level rules.
19
+ */
20
+ export type WorkTexture = "cross" | "dots" | "level" | "upright";
21
+ /** One kind of land, and the engraving that marks it. */
22
+ export interface WorkKind {
23
+ name: string;
24
+ texture: WorkTexture;
25
+ }
26
+ /** One nation's land, as percentage shares in `kinds` order. */
27
+ export interface TeamShares {
28
+ shares: number[];
29
+ team: string;
30
+ }
31
+ export interface ShareTable {
32
+ kinds: WorkKind[];
33
+ rows: TeamShares[];
34
+ }
35
+ /** How the land of each UK nation is covered, in percent of its area. */
36
+ export declare const timeSharesDemo: ShareTable;
@@ -0,0 +1,8 @@
1
+ import type { MonthValue } from "./radial-year.data.js";
2
+ /**
3
+ * O7 Year in the round. Twelve months as one closed, hatched shape under
4
+ * evenly dotted rings; the peak month is the single ink mark, with its value.
5
+ */
6
+ export declare const RadialYear: (props: {
7
+ data?: MonthValue[];
8
+ }) => import("react").JSX.Element;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * O7 A year by month: the mean of O8's daily maxima for each month of 2022.
3
+ * Source: Met Office Hadley Centre Central England Temperature (HadCET),
4
+ * v2.1.1.0 + provisional, https://www.metoffice.gov.uk/hadobs/hadcet/data/download.html
5
+ * Fetched 2026-10-15.
6
+ * File: maxtemp_daily_totals.txt, as reduced in brushed-overview.data.ts.
7
+ * Transform: each month's mean of its daily maximum values (31 days, or 30,
8
+ * or 28), rounded to 0.1 °C.
9
+ */
10
+ /** One month's mean daily maximum temperature, in °C. */
11
+ export interface MonthValue {
12
+ /** The month's first day. */
13
+ date: Date;
14
+ value: number;
15
+ }
16
+ /** Central England mean daily maximum by month, 2022 (°C). */
17
+ export declare const signupMonthsDemo: MonthValue[];
@@ -0,0 +1,21 @@
1
+ import type { ReactNode } from "react";
2
+ export interface FrameProps {
3
+ /** The chart. */
4
+ children: ReactNode;
5
+ /** A line under the chart for what the plot cannot say: a caveat, a date. */
6
+ footnote?: ReactNode;
7
+ /** The chart's name, above it and the figure's accessible name. */
8
+ name: string;
9
+ /** What the (i) opens: one sentence on what the numbers are. Without it there is no (i). */
10
+ note?: ReactNode;
11
+ /** Where the data comes from, under the chart. */
12
+ source?: ReactNode;
13
+ }
14
+ /**
15
+ * The house frame, for hosts that want it: the chart's name and (i) above, the
16
+ * chart centred in the room left, and a source line and footnote under it.
17
+ * Charts draw only the plot, so a host that sets its own type can compose
18
+ * these itself; this is the gallery's cell, made available. The note opens in
19
+ * a native popover, so it needs no script.
20
+ */
21
+ export declare const Frame: (props: FrameProps) => import("react").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { AggregateSankeyData } from "./aggregate-sankey.data.js";
3
+ interface AggregateSankeyProps extends NoteProps {
4
+ data?: AggregateSankeyData;
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Unit noun for the tooltip, e.g. "MPs". */
8
+ unit?: string;
9
+ /** Source label to keep in the hero colour. */
10
+ highlight?: string;
11
+ }
12
+ /**
13
+ * G22 Free vote. Two columns: sources on the left, destinations on
14
+ * the right; ribbon width = amount. Each source's ribbons are engraved in
15
+ * its own grain on paper (hatches leaning alternately, then stipple and
16
+ * rules), keyed by its node bar; the biggest source (or the highlight) is
17
+ * the one ink node and its ribbons are crosshatched and laid on top. A
18
+ * crossing ribbon covers the one beneath, so screens never mix into moiré.
19
+ * Target totals sit inline with their names. Hover a node or a ribbon to
20
+ * trace it.
21
+ */
22
+ export declare const AggregateSankey: (props: AggregateSankeyProps) => import("react").JSX.Element;
23
+ export {};
@@ -0,0 +1,32 @@
1
+ export interface SankeyFlow {
2
+ from: string;
3
+ to: string;
4
+ value: number;
5
+ }
6
+ export interface AggregateSankeyData {
7
+ flows: SankeyFlow[];
8
+ /** Left column, top to bottom. */
9
+ sources: string[];
10
+ /** Right column, top to bottom. */
11
+ targets: string[];
12
+ }
13
+ /**
14
+ * Free vote: how the MPs of each party voted in the House of Commons on the
15
+ * second reading of the Terminally Ill Adults (End of Life) Bill, 29 November
16
+ * 2024, a free vote on which parties split (330 ayes, 275 noes).
17
+ *
18
+ * Source: UK Parliament Commons Votes API, division 1877 (Open Parliament
19
+ * Licence v3.0):
20
+ * https://commonsvotes-api.parliament.uk/data/division/1877.json
21
+ * (found with https://commonsvotes-api.parliament.uk/data/divisions.json/search?queryParameters.searchTerm=Terminally%20Ill%20Adults)
22
+ * Fetched 2026-10-15.
23
+ *
24
+ * Transform: each member in the lists Ayes, Noes and NoVoteRecorded counted by
25
+ * their Party: Labour, Conservative and Liberal Democrat kept apart, every
26
+ * other party and independent as Other. "Did not vote" is the NoVoteRecorded
27
+ * list, which also holds the Speaker and three deputies and the seven Sinn
28
+ * Fein MPs who do not take their seats.
29
+ * Sanity: ayes 330 and noes 275 match the division's counts; Labour split 234
30
+ * to 147, the Conservatives 23 to 92.
31
+ */
32
+ export declare const aggregateSankeyDemo: AggregateSankeyData;
@@ -0,0 +1,20 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { RaceData } from "./bar-race.data.js";
3
+ interface BarRaceProps extends NoteProps {
4
+ data?: RaceData;
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Milliseconds per period. */
8
+ speed?: number;
9
+ /** Label of a series to keep in the hero colour whatever its rank. */
10
+ highlight?: string;
11
+ }
12
+ /**
13
+ * G16 Busiest stations. A ranking that re-sorts as the values animate through
14
+ * the periods. Bars are squared with a 2px corner; the leader is solid ink
15
+ * and the rest are hatched inside a crisp 1px outline. The scrubber's current period is the only date. Starts
16
+ * when scrolled into view, pauses off-screen, and shows the final period
17
+ * under reduced motion.
18
+ */
19
+ export declare const BarRace: (props: BarRaceProps) => import("react").JSX.Element;
20
+ export {};
@@ -0,0 +1,32 @@
1
+ export interface RaceSeries {
2
+ label: string;
3
+ /** One value per period. */
4
+ values: number[];
5
+ }
6
+ export interface RaceData {
7
+ periods: string[];
8
+ series: RaceSeries[];
9
+ }
10
+ /**
11
+ * Busiest stations: passenger entries and exits in millions a year at eight
12
+ * London stations, financial years 2017-18 to 2024-25 (April to March).
13
+ *
14
+ * Source: Office of Rail and Road, Estimates of station usage, Table 1415
15
+ * "Time series of passenger entries, exits and interchanges by station",
16
+ * worksheet 1415a_Entries_and_Exits (Open Government Licence v3.0):
17
+ * https://dataportal.orr.gov.uk/statistics/usage/estimates-of-station-usage/
18
+ * file https://dataportal.orr.gov.uk/media/1908/table-1415-time-series-of-passenger-entries-and-exits-and-interchanges-by-station.ods
19
+ * Fetched 2026-10-15.
20
+ *
21
+ * Transform: for each of the eight stations (rows "London Waterloo", "London
22
+ * Victoria", "London Liverpool Street", "London Bridge", "Stratford (London)",
23
+ * "London Paddington", "London Euston", "Farringdon"), the eight columns
24
+ * "Apr 2017 to Mar 2018" to "Apr 2024 to Mar 2025", divided by 1,000,000 and
25
+ * rounded to one decimal. The stations were picked because their order
26
+ * changes: Waterloo is first until 2021-22 except in 2020-21, when Stratford
27
+ * leads, and Liverpool Street is first from 2022-23, the year the Elizabeth
28
+ * line opened. Station names
29
+ * are shortened ("London Waterloo" to "Waterloo"). The workbook marks 2022-23
30
+ * with a break in the series [b].
31
+ */
32
+ export declare const barRaceDemo: RaceData;
@@ -0,0 +1,27 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { SliceDatum } from "./big-slice.data.js";
3
+ interface BigSliceProps extends NoteProps {
4
+ data?: SliceDatum[];
5
+ height?: number;
6
+ /** Intensity values for the reference rings. */
7
+ rings?: number[];
8
+ /** Labels for the reference rings. */
9
+ ringFormat?: (v: number) => string;
10
+ /** Formats a share (already in percent). */
11
+ formatShare?: (v: number) => string;
12
+ /** Formats an intensity value. */
13
+ format?: (v: number) => string;
14
+ /** Words after the intensity in the tooltip, e.g. "a day". */
15
+ intensityLabel?: string;
16
+ /** Index of the slice to draw in the hero colour. */
17
+ highlight?: number;
18
+ }
19
+ /**
20
+ * G13 Free time. A pie where the angle is the share and the radius is
21
+ * the intensity. Radius runs on a radial (square-root) scale so slice area
22
+ * stays honest. Evenly dotted 1px rings mark the intensity scale; the most
23
+ * intense slice (or the highlight) is solid ink, the rest hatched on paper
24
+ * inside a 1px outline.
25
+ */
26
+ export declare const BigSlice: (props: BigSliceProps) => import("react").JSX.Element;
27
+ export {};
@@ -0,0 +1,30 @@
1
+ export interface SliceDatum {
2
+ /** How intense the slice is (drives the radius), e.g. minutes per day. */
3
+ intensity: number;
4
+ label: string;
5
+ /** Share of the whole (drives the angle). Any unit; normalised to the total. */
6
+ share: number;
7
+ }
8
+ /**
9
+ * Free time by age: adults in seven age bands (angle: each band's share of all
10
+ * adults in the United Kingdom) and the minutes a day each band spent on
11
+ * "entertainment, socialising and other free time" (radius), March 2024.
12
+ *
13
+ * Source: Office for National Statistics, Time use in the UK: 9 to 17 March
14
+ * 2024 (Online Time Use Survey, NatCen Opinion Panel; Open Government Licence
15
+ * v3.0), worksheet 7 "Average daily time (minutes) spent doing specified
16
+ * activities, all adults: by age group":
17
+ * https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/datasets/timeuseintheuk
18
+ * file https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/datasets/timeuseintheuk/march2024/timeuseintheukmarch24.xlsx
19
+ * Fetched 2026-10-15.
20
+ *
21
+ * Transform: in Table 7a the row "Entertainment, socialising and other free
22
+ * time", and in Table 7c the row "Weighted count", for the seven columns
23
+ * "Aged 18 to 24 March 2024" to "Aged 75 and over March 2024", as given. The
24
+ * weighted counts (adults) are the shares and add up to 53.1 million adults,
25
+ * the survey's total; the means (minutes a day) are the radii. Sample sizes run from 127
26
+ * (18 to 24) to 663 (55 to 64).
27
+ * Sanity: free time climbs with age, from 157 minutes (25 to 34) to 335
28
+ * (75 and over).
29
+ */
30
+ export declare const bigSliceDemo: SliceDatum[];
@@ -0,0 +1,18 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { ChunkyDatum } from "./chunky-bars.data.js";
3
+ interface ChunkyBarsProps extends NoteProps {
4
+ data?: ChunkyDatum[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Footnote under the labels. */
8
+ /** Index of the bar to draw in the hero colour. */
9
+ highlight?: number;
10
+ }
11
+ /**
12
+ * G3 A pint over time. A handful of wide bars, squared off with a 2px corner,
13
+ * standing on a hairline baseline with the value above each. The leader is
14
+ * solid ink; the rest are engraved: 45° hatching in one grey inside a crisp
15
+ * 1px outline.
16
+ */
17
+ export declare const ChunkyBars: (props: ChunkyBarsProps) => import("react").JSX.Element;
18
+ export {};
@@ -0,0 +1,24 @@
1
+ /**
2
+ * G3 A pint over time: the average price of a pint of draught lager, in
3
+ * pence, in four years ten years apart.
4
+ *
5
+ * Source: Office for National Statistics, "RPI: Ave price - Draught lager,
6
+ * per pint", series CZMS in dataset MM23 (Average prices of selected items),
7
+ * release of 16 September 2026, Open Government Licence v3.0:
8
+ * https://www.ons.gov.uk/economy/inflationandpriceindices/timeseries/czms/mm23
9
+ * File: https://www.ons.gov.uk/generator?format=csv&uri=/economy/inflationandpriceindices/timeseries/czms/mm23
10
+ * Fetched 2026-10-15.
11
+ *
12
+ * Transform: the annual values (the rows keyed by a bare year) for 1994, 2004,
13
+ * 2014 and 2024, in pence as they stand. The plan's 1995, 2005, 2015 and 2025
14
+ * would have ended on 2025, which has no annual value yet (the file holds only
15
+ * January 2025, 483p), and 2020 and 2021 are blank, so the span ends in 2024.
16
+ * A pint cost 158p in 1994 and 477p in 2024.
17
+ */
18
+ export interface ChunkyDatum {
19
+ label: string;
20
+ /** Pence. */
21
+ value: number;
22
+ }
23
+ /** Average price of a pint of draught lager, pence. */
24
+ export declare const chunkyBarsDemo: ChunkyDatum[];
@@ -0,0 +1,19 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { CircleLink, CircleNode } from "./circular-graph.data.js";
3
+ interface CircularGraphProps extends NoteProps {
4
+ nodes?: CircleNode[];
5
+ links?: CircleLink[];
6
+ height?: number;
7
+ format?: (v: number) => string;
8
+ /** Node id to draw in the hero colour. */
9
+ highlight?: string;
10
+ }
11
+ /**
12
+ * G6 Moving between regions. Up to a dozen nodes on a ring, area = size,
13
+ * links bowed through the middle, each a bundle of 1–4 hairlines by the moves
14
+ * between the pair. Hover a node to trace it. The biggest region is the one
15
+ * solid node and its strongest link the one ink bundle; the rest are hollow
16
+ * rings and l4 hairlines.
17
+ */
18
+ export declare const CircularGraph: (props: CircularGraphProps) => import("react").JSX.Element;
19
+ export {};
@@ -0,0 +1,43 @@
1
+ /**
2
+ * G6 Moving between regions: the nine regions of England, node size the moves
3
+ * in and out of each, links the moves between each pair, year ending June 2025.
4
+ *
5
+ * Source: Office for National Statistics, "Internal migration in England and
6
+ * Wales", moves by local authorities and regions by age and sex including
7
+ * origin and destination, year ending June 2025 (2023 local authority
8
+ * boundaries), Open Government Licence v3.0:
9
+ * https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates/datasets/internalmigrationinenglandandwales
10
+ * File: internalmigration2025tables.xlsx, fetched 2026-10-15 from
11
+ * https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/populationandmigration/populationestimates/datasets/internalmigrationinenglandandwales/movesbylocalauthoritiesandregionsbyageandsexincludingoriginanddestinationmovesyearendingjune20252023localauthorityboundaries/internalmigration2025tables.xlsx
12
+ *
13
+ * The region Yorkshire and The Humber is shortened to Yorkshire so the ring's
14
+ * names fit a phone.
15
+ *
16
+ * Transform: node value is Inflow plus Outflow for each English region from
17
+ * sheet IM2025-T5 (moves with every other part of England and Wales,
18
+ * including Wales), in thousands, rounded. Link value comes from sheet
19
+ * IM2025-T6, a square matrix of moves with rows the destination and columns
20
+ * the origin: for two regions it is the cell each way added together, in
21
+ * thousands, rounded. The 36 pairs of English regions were ranked and the
22
+ * twenty largest kept; the cut falls at North East and Yorkshire and The
23
+ * Humber (33,917 moves), which keeps every region linked. London and the
24
+ * South East swap 243,035 moves, the most of any pair; London lost 131,961
25
+ * more people to the rest of England and Wales than it gained.
26
+ */
27
+ export interface CircleNode {
28
+ id: string;
29
+ /** Moves in and out, thousands. */
30
+ value: number;
31
+ }
32
+ export interface CircleLink {
33
+ source: string;
34
+ target: string;
35
+ /** Moves between the two regions, both ways, thousands. */
36
+ value: number;
37
+ }
38
+ export interface CircleGraphData {
39
+ nodes: CircleNode[];
40
+ links: CircleLink[];
41
+ }
42
+ /** Moves between English regions in the year to June 2025. */
43
+ export declare const circularGraphDemo: CircleGraphData;
@@ -0,0 +1,9 @@
1
+ import type { ReactNode } from "react";
2
+ /**
3
+ * The one place a glance chart's controls sit (CONTROL_SLOT_H tall, in
4
+ * util-b): a 44px row at the top left,
5
+ * above the plot, the pills flush with the chart's left edge.
6
+ */
7
+ export declare const ControlSlot: (props: {
8
+ children: ReactNode;
9
+ }) => import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { DivergingDatum } from "./diverging-bar.data.js";
3
+ interface DivergingBarProps extends NoteProps {
4
+ data?: DivergingDatum[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Draw losses in the alert colour instead of a light ladder tone. */
8
+ alertLosses?: boolean;
9
+ /** Index of the bar to draw in the hero colour. */
10
+ highlight?: number;
11
+ }
12
+ /**
13
+ * G10 Names rising, falling. Signed values either side of a solid ink zero rule. The
14
+ * biggest gain (or the highlight) is solid ink; other gains are hatched and
15
+ * losses stippled, each inside a crisp 1px outline (or solid alert). Bar
16
+ * ends are squared with a 2px corner.
17
+ */
18
+ export declare const DivergingBar: (props: DivergingBarProps) => import("react").JSX.Element;
19
+ export {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * G10 Names rising, falling: the change in the number of babies given each of
3
+ * seven names in England and Wales, 2015 to 2025.
4
+ *
5
+ * Source: Office for National Statistics, "Baby names in England and Wales
6
+ * from 1996", Tables 1 (girls) and 2 (boys), counts by name for 2015 and
7
+ * 2025, Open Government Licence v3.0:
8
+ * https://www.ons.gov.uk/peoplepopulationandcommunity/birthsdeathsandmarriages/livebirths/datasets/babynamesinenglandandwalesfrom1996
9
+ * File: babynames1996to2025.xlsx, fetched 2026-10-15 from
10
+ * https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/birthsdeathsandmarriages/livebirths/datasets/babynamesinenglandandwalesfrom1996/1996to2025/babynames1996to2025.xlsx
11
+ *
12
+ * Transform: for every row of both tables, count 2025 minus count 2015 (a
13
+ * redacted count, 2 or fewer, is taken as 0). The four largest rises and the
14
+ * three largest falls are kept, largest rise first; all seven are boys' names.
15
+ * The plan's 2014 to 2024 became 2015 to 2025, the latest ten years in the
16
+ * file. The ONS counts the exact spelling registered, with similar spellings
17
+ * counted separately, so Muhammad is one spelling among several and a fall
18
+ * can partly be a split into other spellings. Oliver was given to 6,941 boys
19
+ * in 2015 and 3,154 in 2025.
20
+ */
21
+ export interface DivergingDatum {
22
+ label: string;
23
+ /** Change in the number of babies given the name. */
24
+ value: number;
25
+ }
26
+ /** Change in babies given each name, England and Wales, 2015 to 2025. */
27
+ export declare const divergingBarDemo: DivergingDatum[];
@@ -0,0 +1,19 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { WaffleDatum } from "./dot-waffle.data.js";
3
+ interface DotWaffleProps extends NoteProps {
4
+ data?: WaffleDatum[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Footnote under the grid. */
8
+ /** Index of the category to draw in the hero colour. */
9
+ highlight?: number;
10
+ }
11
+ /**
12
+ * G4 Pollen in honey. A 10 × 10 grid of small squares, one square = 1% of the
13
+ * whole, filled row by row in data order. The largest share is solid ink;
14
+ * each other category is engraved in its own grammar (crosshatch, hatch,
15
+ * rules, stipple) inside a crisp outline. The legend is one line per
16
+ * category, its share flush right.
17
+ */
18
+ export declare const DotWaffle: (props: DotWaffleProps) => import("react").JSX.Element;
19
+ export {};
@@ -0,0 +1,31 @@
1
+ /**
2
+ * G4 Pollen in honey: which plant families the pollen in UK honey came from,
3
+ * 2019. One square is one per cent of the DNA reads.
4
+ *
5
+ * Source: Woodcock, B.A., Oliver, A.E., Newbold, L.K., Gweon, H.S., Roy, D.B.
6
+ * and Pywell, R.F. (2022), "Data describing pollen identified from honey
7
+ * samples originating from the UKCEH National Honey Monitoring Scheme for
8
+ * 2019", NERC EDS Environmental Information Data Centre,
9
+ * https://doi.org/10.5285/e9ec63be-3f2b-4d1b-b9bf-77ca2b96c7f5 . Licence: Open
10
+ * Government Licence v3; "Contains data supplied by UK Centre for Ecology &
11
+ * Hydrology." Files data/nhms-2019-regional-data.csv and data/taxonomy.csv,
12
+ * fetched 2026-10-15 from
13
+ * https://data-package.ceh.ac.uk/data/e9ec63be-3f2b-4d1b-b9bf-77ca2b96c7f5.zip
14
+ *
15
+ * Transform: each of the 12 regional rows gives the average rarefied DNA reads
16
+ * of pollen per plant species (every row sums to about 15,000). The reads of
17
+ * each species were added over the 12 rows (equal weight per region, 180,566
18
+ * reads in all), grouped by Family from taxonomy.csv, and turned into shares.
19
+ * The four largest families are kept and the rest is "Everything else":
20
+ * Rosaceae 23.6, Brassicaceae 20.5, Fabaceae 16.1, Boraginaceae 7.9 and the
21
+ * remaining 31.9, which add up to 100.0. The names are the common names of
22
+ * the families (rose, cabbage, pea, borage). Reads count DNA, not grains or
23
+ * weight of pollen.
24
+ */
25
+ export interface WaffleDatum {
26
+ label: string;
27
+ /** Share of pollen DNA reads, %. */
28
+ value: number;
29
+ }
30
+ /** Share of the pollen DNA reads in UK honey, 2019, by plant family, %. */
31
+ export declare const dotWaffleDemo: WaffleDatum[];
@@ -0,0 +1,20 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { DrawInDatum } from "./draw-in.data.js";
3
+ interface DrawInProps extends NoteProps {
4
+ data?: DrawInDatum[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Caption under the big number, e.g. "2024-25". */
8
+ caption?: string;
9
+ /** Draw duration in ms. */
10
+ duration?: number;
11
+ }
12
+ /**
13
+ * G18 Premier League goals. One cumulative 2px line over a dot-screened area,
14
+ * drawn left to right while the big number counts up in step with the tip of
15
+ * the line. The scale reads at the right, each value on its rule.
16
+ * Plays once when scrolled into view; Replay runs it again. Reduced motion
17
+ * shows the end.
18
+ */
19
+ export declare const DrawIn: (props: DrawInProps) => import("react").JSX.Element;
20
+ export {};
@@ -0,0 +1,6 @@
1
+ export interface DrawInDatum {
2
+ date: Date;
3
+ /** Running total up to and including this date. */
4
+ value: number;
5
+ }
6
+ export declare const drawInDemo: DrawInDatum[];
@@ -0,0 +1,22 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { StreamFeed } from "./dynamic-stream.data.js";
3
+ interface DynamicStreamProps extends NoteProps {
4
+ /** Value for step n (n ≥ 0). Must be deterministic. */
5
+ feed?: StreamFeed;
6
+ /** Values visible at once. */
7
+ window?: number;
8
+ /** Milliseconds between values. */
9
+ interval?: number;
10
+ /** Fixed value domain; defaults to the range of the first 400 values. */
11
+ domain?: [number, number];
12
+ height?: number;
13
+ format?: (v: number) => string;
14
+ }
15
+ /**
16
+ * G17 Rolling swell. A line that keeps moving: a new value arrives every
17
+ * `interval` ms and the window scrolls left to make room. The latest value is
18
+ * printed beside the head, and the scale reads at the right, each value on its
19
+ * rule. Runs only while on screen; the Running control pauses and resumes.
20
+ */
21
+ export declare const DynamicStream: (props: DynamicStreamProps) => import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,7 @@
1
+ /** A rolling line: the value for step n (n ≥ 0). Must be deterministic. */
2
+ export type StreamFeed = (step: number) => number;
3
+ /**
4
+ * A slow swell with a quicker ripple and a little noise. Pure in `step`; not
5
+ * measured data.
6
+ */
7
+ export declare const dynamicStreamDemo: StreamFeed;
@@ -0,0 +1,16 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { ForceLink, ForceNode } from "./force-graph.data.js";
3
+ interface ForceGraphProps extends NoteProps {
4
+ nodes?: ForceNode[];
5
+ links?: ForceLink[];
6
+ height?: number;
7
+ format?: (v: number) => string;
8
+ }
9
+ /**
10
+ * G11 Into the Thames. A hub and its satellites in a d3-force layout, node
11
+ * area = flow, each link a bundle of 1–4 hairlines by strength. The hub is
12
+ * the one solid node and its strongest link the one ink bundle; satellites
13
+ * are hollow rings. Drag a node: the springs pull it back when you let go.
14
+ */
15
+ export declare const ForceGraph: (props: ForceGraphProps) => import("react").JSX.Element;
16
+ export {};
@@ -0,0 +1,45 @@
1
+ /**
2
+ * G11 Into the Thames: the Thames at Kingston as the hub, seven tributaries
3
+ * round it, each sized by its mean flow.
4
+ *
5
+ * Source: Environment Agency Hydrology API, daily mean flow in m3/s,
6
+ * Open Government Licence v3.0, https://environment.data.gov.uk/hydrology/ ,
7
+ * fetched 2026-10-15. For each station the measure
8
+ * <station guid>-flow-m-86400-m3s-qualified, read with
9
+ * https://environment.data.gov.uk/hydrology/id/measures/<measure>/readings.json?mineq-date=1996-10-01&maxeq-date=2024-09-30&_limit=20000
10
+ * Thames: Kingston (3400TH, 8496ce69-482c-406a-a2f0-ac418ef8f099)
11
+ * Wey: Weybridge (3090TH, 2629abeb-e504-49f7-9996-080f37e15930)
12
+ * Cherwell: Oxford (1490TH, 839866a2-80ca-42a8-a695-8e6d6b165fa6)
13
+ * Mole: Esher (3290TH, 024f218d-9a70-43b7-8ea2-7d038eeb2cff)
14
+ * Colne: Denham Colne (2870TH, cb5596d4-deb7-4784-ad4e-5c21279082ab)
15
+ * Evenlode: Cassington (1290TH, 8afc6e20-b0bd-4b79-bf65-345dac8cafee_1290TH)
16
+ * Thame: Wheatley (1980TH, b86817d4-c71b-4bd4-ab64-4982bf812b12)
17
+ * Windrush: Newbridge (1090TH, 37f9d60e-0bdc-4578-b03b-77103b250a09)
18
+ *
19
+ * Transform: the mean of all daily readings that have a value between
20
+ * 1996-10-01 and 2024-09-30 (28 water years), in m3/s. Stations differ in
21
+ * how many of the 10,227 days they cover: Thames, Colne and Thame all 10,227;
22
+ * Wey 10,221; Evenlode 10,103; Mole 10,077; Windrush 9,980 (its record stops
23
+ * in February 2024); Cherwell 8,842 (86%). A hub link carries the tributary's
24
+ * mean flow. The seven means add up to 36.5 m3/s against 65.4 m3/s at
25
+ * Kingston; the rest is the main river above the confluences and the
26
+ * tributaries not drawn. The Kennet, a larger tributary, reports level only
27
+ * at Theale and Knighton on this API, so it is left out.
28
+ */
29
+ export interface ForceNode {
30
+ id: string;
31
+ /** Mean flow, m3/s. */
32
+ value: number;
33
+ }
34
+ export interface ForceLink {
35
+ source: string;
36
+ target: string;
37
+ /** Mean flow of the tributary, m3/s. */
38
+ value: number;
39
+ }
40
+ export interface ForceGraphData {
41
+ nodes: ForceNode[];
42
+ links: ForceLink[];
43
+ }
44
+ /** The Thames at Kingston and seven tributaries, mean daily flow in m3/s. */
45
+ export declare const forceGraphDemo: ForceGraphData;