@howells/hairline 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 (455) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -2
  3. package/lib/charts/axes.js +5 -0
  4. package/lib/charts/basics/candlestick.data.js +44 -0
  5. package/lib/charts/basics/candlestick.js +180 -0
  6. package/lib/charts/basics/daily-empty.js +24 -0
  7. package/lib/charts/basics/daily-readings.js +16 -0
  8. package/lib/charts/basics/dot-heat.data.js +225 -0
  9. package/lib/charts/basics/dot-heat.js +174 -0
  10. package/lib/charts/basics/dumbbell-queue.js +203 -0
  11. package/lib/charts/basics/hairline-area.js +208 -0
  12. package/lib/charts/basics/hairline-line.js +195 -0
  13. package/lib/charts/basics/nested-treemap.data.js +55 -0
  14. package/lib/charts/basics/nested-treemap.js +191 -0
  15. package/lib/charts/basics/paired-rungs.data.js +31 -0
  16. package/lib/charts/basics/paired-rungs.js +151 -0
  17. package/lib/charts/basics/plumb-scatter.js +229 -0
  18. package/lib/charts/basics/rung-bars.js +178 -0
  19. package/lib/charts/basics/rung-geometry.js +6 -0
  20. package/lib/charts/basics/rung-histogram.data.js +73 -0
  21. package/lib/charts/basics/rung-histogram.js +153 -0
  22. package/lib/charts/basics/rung-waterfall.data.js +30 -0
  23. package/lib/charts/basics/rung-waterfall.js +150 -0
  24. package/lib/charts/basics/rungs.js +22 -0
  25. package/lib/charts/basics/series-key.js +26 -0
  26. package/lib/charts/basics/stacked-rungs.data.js +42 -0
  27. package/lib/charts/basics/stacked-rungs.js +174 -0
  28. package/lib/charts/basics/stream-ribbon.data.js +124 -0
  29. package/lib/charts/basics/stream-ribbon.js +336 -0
  30. package/lib/charts/basics/tick-box.data.js +50 -0
  31. package/lib/charts/basics/tick-box.js +226 -0
  32. package/lib/charts/basics/tick-donut.data.js +30 -0
  33. package/lib/charts/basics/tick-donut.js +210 -0
  34. package/lib/charts/basics/tick-gauge.data.js +8 -0
  35. package/lib/charts/basics/tick-gauge.js +169 -0
  36. package/lib/charts/basics/tick-rows.data.js +30 -0
  37. package/lib/charts/basics/tick-rows.js +121 -0
  38. package/lib/charts/basics/util-a.js +15 -0
  39. package/lib/charts/basics/util-b.js +13 -0
  40. package/lib/charts/big/circular-graph.data.js +827 -0
  41. package/lib/charts/big/circular-graph.js +289 -0
  42. package/lib/charts/big/force-galaxy-model.js +167 -0
  43. package/lib/charts/big/force-galaxy.data.js +813 -0
  44. package/lib/charts/big/force-galaxy.js +276 -0
  45. package/lib/charts/big/thread-triptych.data.js +204 -0
  46. package/lib/charts/big/thread-triptych.js +334 -0
  47. package/lib/charts/board/room.js +6 -0
  48. package/lib/charts/board/slope.js +176 -0
  49. package/lib/charts/board/spread.js +28 -0
  50. package/lib/charts/control.js +18 -0
  51. package/lib/charts/core.js +84 -0
  52. package/lib/charts/data-table.js +34 -0
  53. package/lib/charts/fills.js +153 -0
  54. package/lib/charts/forms/area-difference.data.js +62 -0
  55. package/lib/charts/forms/area-difference.js +192 -0
  56. package/lib/charts/forms/brush-math.js +42 -0
  57. package/lib/charts/forms/brush-strip.js +199 -0
  58. package/lib/charts/forms/brushed-overview.data.js +374 -0
  59. package/lib/charts/forms/brushed-overview.js +162 -0
  60. package/lib/charts/forms/chord-ring.data.js +140 -0
  61. package/lib/charts/forms/chord-ring.js +167 -0
  62. package/lib/charts/forms/circle-pack.data.js +80 -0
  63. package/lib/charts/forms/circle-pack.js +99 -0
  64. package/lib/charts/forms/hatched-stack.data.js +71 -0
  65. package/lib/charts/forms/hatched-stack.js +228 -0
  66. package/lib/charts/forms/radial-year.data.js +13 -0
  67. package/lib/charts/forms/radial-year.js +156 -0
  68. package/lib/charts/frame.js +73 -0
  69. package/lib/charts/glance/aggregate-sankey.data.js +74 -0
  70. package/lib/charts/glance/aggregate-sankey.js +242 -0
  71. package/lib/charts/glance/bar-race.data.js +122 -0
  72. package/lib/charts/glance/bar-race.js +246 -0
  73. package/lib/charts/glance/big-slice.data.js +41 -0
  74. package/lib/charts/glance/big-slice.js +238 -0
  75. package/lib/charts/glance/chunky-bars.data.js +22 -0
  76. package/lib/charts/glance/chunky-bars.js +113 -0
  77. package/lib/charts/glance/circular-graph.data.js +146 -0
  78. package/lib/charts/glance/circular-graph.js +138 -0
  79. package/lib/charts/glance/control-slot.js +9 -0
  80. package/lib/charts/glance/diverging-bar.data.js +34 -0
  81. package/lib/charts/glance/diverging-bar.js +154 -0
  82. package/lib/charts/glance/dot-waffle.data.js +26 -0
  83. package/lib/charts/glance/dot-waffle.js +179 -0
  84. package/lib/charts/glance/draw-in.data.js +9 -0
  85. package/lib/charts/glance/draw-in.goals.json.js +289 -0
  86. package/lib/charts/glance/draw-in.js +214 -0
  87. package/lib/charts/glance/dynamic-stream.data.js +6 -0
  88. package/lib/charts/glance/dynamic-stream.js +189 -0
  89. package/lib/charts/glance/force-graph.data.js +77 -0
  90. package/lib/charts/glance/force-graph.js +211 -0
  91. package/lib/charts/glance/jitter-strip.data.js +10 -0
  92. package/lib/charts/glance/jitter-strip.easter.json.js +430 -0
  93. package/lib/charts/glance/jitter-strip.js +157 -0
  94. package/lib/charts/glance/link-bundle.js +51 -0
  95. package/lib/charts/glance/matrix-heat-glance.data.js +108 -0
  96. package/lib/charts/glance/matrix-heat-glance.js +170 -0
  97. package/lib/charts/glance/pictorial-bar.data.js +22 -0
  98. package/lib/charts/glance/pictorial-bar.js +180 -0
  99. package/lib/charts/glance/rainfall-dual-area.data.js +177 -0
  100. package/lib/charts/glance/rainfall-dual-area.js +192 -0
  101. package/lib/charts/glance/rank-strip.data.js +76 -0
  102. package/lib/charts/glance/rank-strip.js +172 -0
  103. package/lib/charts/glance/scatter-labels.js +60 -0
  104. package/lib/charts/glance/scatter-morph.data.js +78 -0
  105. package/lib/charts/glance/scatter-morph.js +338 -0
  106. package/lib/charts/glance/single-axis.data.js +6 -0
  107. package/lib/charts/glance/single-axis.js +150 -0
  108. package/lib/charts/glance/single-axis.tides.json.js +180 -0
  109. package/lib/charts/glance/stagger-wave.data.js +66 -0
  110. package/lib/charts/glance/stagger-wave.js +132 -0
  111. package/lib/charts/glance/tree-lr.data.js +41 -0
  112. package/lib/charts/glance/tree-lr.js +135 -0
  113. package/lib/charts/glance/util-a.js +49 -0
  114. package/lib/charts/glance/util-b.js +19 -0
  115. package/lib/charts/glance/violin.data.js +9 -0
  116. package/lib/charts/glance/violin.js +185 -0
  117. package/lib/charts/glance/violin.tenors.json.js +5 -0
  118. package/lib/charts/hooks.js +154 -0
  119. package/lib/charts/hover.js +19 -0
  120. package/lib/charts/lupi/arc-matrix.data.js +83 -0
  121. package/lib/charts/lupi/arc-matrix.js +146 -0
  122. package/lib/charts/lupi/ballot-tally.data.js +22 -0
  123. package/lib/charts/lupi/ballot-tally.js +125 -0
  124. package/lib/charts/lupi/barcode-lollipop.data.js +195 -0
  125. package/lib/charts/lupi/barcode-lollipop.js +161 -0
  126. package/lib/charts/lupi/brand-spectrum.data.js +70 -0
  127. package/lib/charts/lupi/brand-spectrum.js +233 -0
  128. package/lib/charts/lupi/bubble-almanac.data.js +689 -0
  129. package/lib/charts/lupi/bubble-almanac.js +164 -0
  130. package/lib/charts/lupi/calendar-heat.data.js +399 -0
  131. package/lib/charts/lupi/calendar-heat.js +175 -0
  132. package/lib/charts/lupi/cluster-field.data.js +83 -0
  133. package/lib/charts/lupi/cluster-field.js +173 -0
  134. package/lib/charts/lupi/dot-cascade.data.js +54 -0
  135. package/lib/charts/lupi/dot-cascade.js +124 -0
  136. package/lib/charts/lupi/dotty-matrix.data.js +170 -0
  137. package/lib/charts/lupi/dotty-matrix.js +126 -0
  138. package/lib/charts/lupi/hourglass-stream.data.js +30 -0
  139. package/lib/charts/lupi/hourglass-stream.js +158 -0
  140. package/lib/charts/lupi/hundred-field.data.js +38 -0
  141. package/lib/charts/lupi/hundred-field.js +237 -0
  142. package/lib/charts/lupi/launch-fan.data.js +315 -0
  143. package/lib/charts/lupi/launch-fan.js +198 -0
  144. package/lib/charts/lupi/matrix-heat.data.js +97 -0
  145. package/lib/charts/lupi/matrix-heat.js +246 -0
  146. package/lib/charts/lupi/parallel-coordinates.data.js +54 -0
  147. package/lib/charts/lupi/parallel-coordinates.js +218 -0
  148. package/lib/charts/lupi/radial-convergence.data.js +178 -0
  149. package/lib/charts/lupi/radial-convergence.js +208 -0
  150. package/lib/charts/lupi/radial-patchwork.data.js +454 -0
  151. package/lib/charts/lupi/radial-patchwork.js +181 -0
  152. package/lib/charts/lupi/ridgeline.data.js +1834 -0
  153. package/lib/charts/lupi/ridgeline.js +195 -0
  154. package/lib/charts/lupi/trend-lineage.data.js +51 -0
  155. package/lib/charts/lupi/trend-lineage.js +198 -0
  156. package/lib/charts/lupi/type-colonnade.data.js +18 -0
  157. package/lib/charts/lupi/type-colonnade.js +198 -0
  158. package/lib/charts/lupi/util-a.js +14 -0
  159. package/lib/charts/lupi/util-b.js +12 -0
  160. package/lib/charts/maps/choropleth.js +295 -0
  161. package/lib/charts/maps/geo.js +84 -0
  162. package/lib/charts/maps/legend.js +83 -0
  163. package/lib/charts/maps/step-fill.js +9 -0
  164. package/lib/charts/maps/us-choropleth.data.js +249 -0
  165. package/lib/charts/maps/us-choropleth.js +41 -0
  166. package/lib/charts/maps/world-choropleth.data.js +681 -0
  167. package/lib/charts/maps/world-choropleth.js +46 -0
  168. package/lib/charts/markers.js +35 -0
  169. package/lib/charts/marks.js +31 -0
  170. package/lib/charts/motion.js +11 -0
  171. package/lib/charts/originals/daily-users.data.js +101 -0
  172. package/lib/charts/originals/daily-users.js +203 -0
  173. package/lib/charts/originals/feature-rank.data.js +92 -0
  174. package/lib/charts/originals/feature-rank.js +167 -0
  175. package/lib/charts/originals/format.js +5 -0
  176. package/lib/charts/originals/key.js +26 -0
  177. package/lib/charts/originals/response-time.data.js +98 -0
  178. package/lib/charts/originals/response-time.js +187 -0
  179. package/lib/charts/originals/revenue-by-plan.data.js +26 -0
  180. package/lib/charts/originals/revenue-by-plan.js +248 -0
  181. package/lib/charts/playback.js +68 -0
  182. package/lib/charts/plot-note.js +27 -0
  183. package/lib/charts/roles.js +5 -0
  184. package/lib/charts/rules.js +66 -0
  185. package/lib/charts/scale-context.js +6 -0
  186. package/lib/charts/shapes.js +8 -0
  187. package/lib/charts/shared-options.js +25 -0
  188. package/lib/charts/svg.js +43 -0
  189. package/lib/charts/text.js +30 -0
  190. package/lib/charts/texture-ids.js +20 -0
  191. package/lib/charts/texture.js +286 -0
  192. package/lib/charts/util.js +43 -0
  193. package/lib/charts/value-grid.js +26 -0
  194. package/lib/draw.js +27 -0
  195. package/lib/entries/dumbbell-queue.js +2 -0
  196. package/lib/entries/hairline-area.js +2 -0
  197. package/lib/entries/hairline-line.js +2 -0
  198. package/lib/entries/plumb-scatter.js +2 -0
  199. package/lib/entries/rung-bars.js +2 -0
  200. package/lib/entries/slope.js +2 -0
  201. package/lib/frame.js +2 -0
  202. package/lib/hairline.css +1385 -0
  203. package/lib/index.js +72 -0
  204. package/lib/json-schema/dumbbell-queue.json +258 -0
  205. package/lib/json-schema/hairline-area.json +262 -0
  206. package/lib/json-schema/hairline-line.json +256 -0
  207. package/lib/json-schema/index.json +50 -0
  208. package/lib/json-schema/plumb-scatter.json +363 -0
  209. package/lib/json-schema/rung-bars.json +230 -0
  210. package/lib/json-schema/slope.json +333 -0
  211. package/lib/kit.js +16 -0
  212. package/lib/lib/format.js +29 -0
  213. package/lib/lib/random.js +8 -0
  214. package/lib/maps.js +4 -0
  215. package/lib/schema/daily.js +9 -0
  216. package/lib/schema/dumbbell-queue.js +28 -0
  217. package/lib/schema/format.js +72 -0
  218. package/lib/schema/hairline-area.js +24 -0
  219. package/lib/schema/hairline-line.js +23 -0
  220. package/lib/schema/key.js +4 -0
  221. package/lib/schema/metrics.js +26 -0
  222. package/lib/schema/motion.js +12 -0
  223. package/lib/schema/options.js +21 -0
  224. package/lib/schema/plumb-scatter.js +48 -0
  225. package/lib/schema/registry.js +132 -0
  226. package/lib/schema/rung-bars.js +25 -0
  227. package/lib/schema/scale.js +9 -0
  228. package/lib/schema/slope.js +28 -0
  229. package/lib/schema/validate.js +25 -0
  230. package/lib/schema.js +16 -0
  231. package/lib/theme/derive.js +98 -0
  232. package/lib/theme.css +443 -0
  233. package/lib/theme.js +1 -0
  234. package/lib/tokens.css +306 -0
  235. package/lib/types/charts/axes.d.ts +14 -0
  236. package/lib/types/charts/basics/candlestick.d.ts +22 -0
  237. package/lib/types/charts/basics/candlestick.data.d.ts +10 -0
  238. package/lib/types/charts/basics/daily-empty.d.ts +7 -0
  239. package/lib/types/charts/basics/daily-readings.d.ts +38 -0
  240. package/lib/types/charts/basics/dot-heat.d.ts +19 -0
  241. package/lib/types/charts/basics/dot-heat.data.d.ts +28 -0
  242. package/lib/types/charts/basics/dumbbell-queue.d.ts +15 -0
  243. package/lib/types/charts/basics/hairline-area.d.ts +18 -0
  244. package/lib/types/charts/basics/hairline-line.d.ts +18 -0
  245. package/lib/types/charts/basics/nested-treemap.d.ts +18 -0
  246. package/lib/types/charts/basics/nested-treemap.data.d.ts +30 -0
  247. package/lib/types/charts/basics/paired-rungs.d.ts +21 -0
  248. package/lib/types/charts/basics/paired-rungs.data.d.ts +43 -0
  249. package/lib/types/charts/basics/plumb-scatter.d.ts +14 -0
  250. package/lib/types/charts/basics/rung-bars.d.ts +16 -0
  251. package/lib/types/charts/basics/rung-geometry.d.ts +6 -0
  252. package/lib/types/charts/basics/rung-histogram.d.ts +22 -0
  253. package/lib/types/charts/basics/rung-histogram.data.d.ts +34 -0
  254. package/lib/types/charts/basics/rung-waterfall.d.ts +19 -0
  255. package/lib/types/charts/basics/rung-waterfall.data.d.ts +31 -0
  256. package/lib/types/charts/basics/rungs.d.ts +28 -0
  257. package/lib/types/charts/basics/series-key.d.ts +19 -0
  258. package/lib/types/charts/basics/stacked-rungs.d.ts +20 -0
  259. package/lib/types/charts/basics/stacked-rungs.data.d.ts +26 -0
  260. package/lib/types/charts/basics/stream-ribbon.d.ts +19 -0
  261. package/lib/types/charts/basics/stream-ribbon.data.d.ts +29 -0
  262. package/lib/types/charts/basics/tick-box.d.ts +19 -0
  263. package/lib/types/charts/basics/tick-box.data.d.ts +30 -0
  264. package/lib/types/charts/basics/tick-donut.d.ts +24 -0
  265. package/lib/types/charts/basics/tick-donut.data.d.ts +25 -0
  266. package/lib/types/charts/basics/tick-gauge.d.ts +22 -0
  267. package/lib/types/charts/basics/tick-gauge.data.d.ts +24 -0
  268. package/lib/types/charts/basics/tick-rows.d.ts +18 -0
  269. package/lib/types/charts/basics/tick-rows.data.d.ts +23 -0
  270. package/lib/types/charts/basics/util-a.d.ts +10 -0
  271. package/lib/types/charts/basics/util-b.d.ts +13 -0
  272. package/lib/types/charts/big/circular-graph.d.ts +20 -0
  273. package/lib/types/charts/big/circular-graph.data.d.ts +46 -0
  274. package/lib/types/charts/big/force-galaxy-model.d.ts +109 -0
  275. package/lib/types/charts/big/force-galaxy.d.ts +18 -0
  276. package/lib/types/charts/big/force-galaxy.data.d.ts +48 -0
  277. package/lib/types/charts/big/thread-triptych.d.ts +17 -0
  278. package/lib/types/charts/big/thread-triptych.data.d.ts +41 -0
  279. package/lib/types/charts/board/room.d.ts +18 -0
  280. package/lib/types/charts/board/slope.d.ts +14 -0
  281. package/lib/types/charts/board/spread.d.ts +5 -0
  282. package/lib/types/charts/control.d.ts +17 -0
  283. package/lib/types/charts/core.d.ts +77 -0
  284. package/lib/types/charts/data-table.d.ts +18 -0
  285. package/lib/types/charts/fills.d.ts +103 -0
  286. package/lib/types/charts/forms/area-difference.d.ts +9 -0
  287. package/lib/types/charts/forms/area-difference.data.d.ts +26 -0
  288. package/lib/types/charts/forms/brush-math.d.ts +19 -0
  289. package/lib/types/charts/forms/brush-strip.d.ts +19 -0
  290. package/lib/types/charts/forms/brushed-overview.d.ts +12 -0
  291. package/lib/types/charts/forms/brushed-overview.data.d.ts +16 -0
  292. package/lib/types/charts/forms/chord-ring.d.ts +12 -0
  293. package/lib/types/charts/forms/chord-ring.data.d.ts +29 -0
  294. package/lib/types/charts/forms/circle-pack.d.ts +9 -0
  295. package/lib/types/charts/forms/circle-pack.data.d.ts +23 -0
  296. package/lib/types/charts/forms/hatched-stack.d.ts +10 -0
  297. package/lib/types/charts/forms/hatched-stack.data.d.ts +36 -0
  298. package/lib/types/charts/forms/radial-year.d.ts +8 -0
  299. package/lib/types/charts/forms/radial-year.data.d.ts +17 -0
  300. package/lib/types/charts/frame.d.ts +21 -0
  301. package/lib/types/charts/glance/aggregate-sankey.d.ts +23 -0
  302. package/lib/types/charts/glance/aggregate-sankey.data.d.ts +32 -0
  303. package/lib/types/charts/glance/bar-race.d.ts +20 -0
  304. package/lib/types/charts/glance/bar-race.data.d.ts +32 -0
  305. package/lib/types/charts/glance/big-slice.d.ts +27 -0
  306. package/lib/types/charts/glance/big-slice.data.d.ts +30 -0
  307. package/lib/types/charts/glance/chunky-bars.d.ts +18 -0
  308. package/lib/types/charts/glance/chunky-bars.data.d.ts +24 -0
  309. package/lib/types/charts/glance/circular-graph.d.ts +19 -0
  310. package/lib/types/charts/glance/circular-graph.data.d.ts +43 -0
  311. package/lib/types/charts/glance/control-slot.d.ts +9 -0
  312. package/lib/types/charts/glance/diverging-bar.d.ts +19 -0
  313. package/lib/types/charts/glance/diverging-bar.data.d.ts +27 -0
  314. package/lib/types/charts/glance/dot-waffle.d.ts +19 -0
  315. package/lib/types/charts/glance/dot-waffle.data.d.ts +31 -0
  316. package/lib/types/charts/glance/draw-in.d.ts +20 -0
  317. package/lib/types/charts/glance/draw-in.data.d.ts +6 -0
  318. package/lib/types/charts/glance/dynamic-stream.d.ts +22 -0
  319. package/lib/types/charts/glance/dynamic-stream.data.d.ts +7 -0
  320. package/lib/types/charts/glance/force-graph.d.ts +16 -0
  321. package/lib/types/charts/glance/force-graph.data.d.ts +45 -0
  322. package/lib/types/charts/glance/jitter-strip.d.ts +24 -0
  323. package/lib/types/charts/glance/jitter-strip.data.d.ts +27 -0
  324. package/lib/types/charts/glance/link-bundle.d.ts +22 -0
  325. package/lib/types/charts/glance/matrix-heat-glance.d.ts +22 -0
  326. package/lib/types/charts/glance/matrix-heat-glance.data.d.ts +35 -0
  327. package/lib/types/charts/glance/pictorial-bar.d.ts +20 -0
  328. package/lib/types/charts/glance/pictorial-bar.data.d.ts +27 -0
  329. package/lib/types/charts/glance/rainfall-dual-area.d.ts +19 -0
  330. package/lib/types/charts/glance/rainfall-dual-area.data.d.ts +32 -0
  331. package/lib/types/charts/glance/rank-strip.d.ts +19 -0
  332. package/lib/types/charts/glance/rank-strip.data.d.ts +36 -0
  333. package/lib/types/charts/glance/scatter-labels.d.ts +23 -0
  334. package/lib/types/charts/glance/scatter-morph.d.ts +22 -0
  335. package/lib/types/charts/glance/scatter-morph.data.d.ts +30 -0
  336. package/lib/types/charts/glance/single-axis.d.ts +27 -0
  337. package/lib/types/charts/glance/single-axis.data.d.ts +6 -0
  338. package/lib/types/charts/glance/stagger-wave.d.ts +18 -0
  339. package/lib/types/charts/glance/stagger-wave.data.d.ts +26 -0
  340. package/lib/types/charts/glance/tree-lr.d.ts +16 -0
  341. package/lib/types/charts/glance/tree-lr.data.d.ts +27 -0
  342. package/lib/types/charts/glance/util-a.d.ts +31 -0
  343. package/lib/types/charts/glance/util-b.d.ts +12 -0
  344. package/lib/types/charts/glance/violin.d.ts +22 -0
  345. package/lib/types/charts/glance/violin.data.d.ts +24 -0
  346. package/lib/types/charts/hooks.d.ts +109 -0
  347. package/lib/types/charts/hover.d.ts +26 -0
  348. package/lib/types/charts/lupi/arc-matrix.d.ts +18 -0
  349. package/lib/types/charts/lupi/arc-matrix.data.d.ts +28 -0
  350. package/lib/types/charts/lupi/ballot-tally.d.ts +19 -0
  351. package/lib/types/charts/lupi/ballot-tally.data.d.ts +28 -0
  352. package/lib/types/charts/lupi/barcode-lollipop.d.ts +19 -0
  353. package/lib/types/charts/lupi/barcode-lollipop.data.d.ts +26 -0
  354. package/lib/types/charts/lupi/brand-spectrum.d.ts +28 -0
  355. package/lib/types/charts/lupi/brand-spectrum.data.d.ts +34 -0
  356. package/lib/types/charts/lupi/bubble-almanac.d.ts +22 -0
  357. package/lib/types/charts/lupi/bubble-almanac.data.d.ts +45 -0
  358. package/lib/types/charts/lupi/calendar-heat.d.ts +19 -0
  359. package/lib/types/charts/lupi/calendar-heat.data.d.ts +20 -0
  360. package/lib/types/charts/lupi/cluster-field.d.ts +21 -0
  361. package/lib/types/charts/lupi/cluster-field.data.d.ts +52 -0
  362. package/lib/types/charts/lupi/dot-cascade.d.ts +22 -0
  363. package/lib/types/charts/lupi/dot-cascade.data.d.ts +24 -0
  364. package/lib/types/charts/lupi/dotty-matrix.d.ts +17 -0
  365. package/lib/types/charts/lupi/dotty-matrix.data.d.ts +32 -0
  366. package/lib/types/charts/lupi/hourglass-stream.d.ts +18 -0
  367. package/lib/types/charts/lupi/hourglass-stream.data.d.ts +27 -0
  368. package/lib/types/charts/lupi/hundred-field.d.ts +18 -0
  369. package/lib/types/charts/lupi/hundred-field.data.d.ts +24 -0
  370. package/lib/types/charts/lupi/launch-fan.d.ts +37 -0
  371. package/lib/types/charts/lupi/launch-fan.data.d.ts +41 -0
  372. package/lib/types/charts/lupi/matrix-heat.d.ts +20 -0
  373. package/lib/types/charts/lupi/matrix-heat.data.d.ts +29 -0
  374. package/lib/types/charts/lupi/parallel-coordinates.d.ts +23 -0
  375. package/lib/types/charts/lupi/parallel-coordinates.data.d.ts +40 -0
  376. package/lib/types/charts/lupi/radial-convergence.d.ts +15 -0
  377. package/lib/types/charts/lupi/radial-convergence.data.d.ts +24 -0
  378. package/lib/types/charts/lupi/radial-patchwork.d.ts +16 -0
  379. package/lib/types/charts/lupi/radial-patchwork.data.d.ts +35 -0
  380. package/lib/types/charts/lupi/ridgeline.d.ts +23 -0
  381. package/lib/types/charts/lupi/ridgeline.data.d.ts +19 -0
  382. package/lib/types/charts/lupi/trend-lineage.d.ts +18 -0
  383. package/lib/types/charts/lupi/trend-lineage.data.d.ts +56 -0
  384. package/lib/types/charts/lupi/type-colonnade.d.ts +20 -0
  385. package/lib/types/charts/lupi/type-colonnade.data.d.ts +30 -0
  386. package/lib/types/charts/lupi/util-a.d.ts +9 -0
  387. package/lib/types/charts/lupi/util-b.d.ts +11 -0
  388. package/lib/types/charts/maps/choropleth.d.ts +33 -0
  389. package/lib/types/charts/maps/geo.d.ts +48 -0
  390. package/lib/types/charts/maps/legend.d.ts +14 -0
  391. package/lib/types/charts/maps/step-fill.d.ts +6 -0
  392. package/lib/types/charts/maps/us-choropleth.d.ts +25 -0
  393. package/lib/types/charts/maps/us-choropleth.data.d.ts +23 -0
  394. package/lib/types/charts/maps/world-choropleth.d.ts +22 -0
  395. package/lib/types/charts/maps/world-choropleth.data.d.ts +35 -0
  396. package/lib/types/charts/markers.d.ts +42 -0
  397. package/lib/types/charts/marks.d.ts +58 -0
  398. package/lib/types/charts/motion.d.ts +12 -0
  399. package/lib/types/charts/originals/daily-users.d.ts +13 -0
  400. package/lib/types/charts/originals/daily-users.data.d.ts +17 -0
  401. package/lib/types/charts/originals/feature-rank.d.ts +13 -0
  402. package/lib/types/charts/originals/feature-rank.data.d.ts +29 -0
  403. package/lib/types/charts/originals/format.d.ts +2 -0
  404. package/lib/types/charts/originals/key.d.ts +16 -0
  405. package/lib/types/charts/originals/response-time.d.ts +11 -0
  406. package/lib/types/charts/originals/response-time.data.d.ts +24 -0
  407. package/lib/types/charts/originals/revenue-by-plan.d.ts +12 -0
  408. package/lib/types/charts/originals/revenue-by-plan.data.d.ts +26 -0
  409. package/lib/types/charts/playback.d.ts +42 -0
  410. package/lib/types/charts/plot-note.d.ts +37 -0
  411. package/lib/types/charts/roles.d.ts +28 -0
  412. package/lib/types/charts/rules.d.ts +62 -0
  413. package/lib/types/charts/scale-context.d.ts +3 -0
  414. package/lib/types/charts/shapes.d.ts +9 -0
  415. package/lib/types/charts/shared-options.d.ts +25 -0
  416. package/lib/types/charts/svg.d.ts +24 -0
  417. package/lib/types/charts/text.d.ts +36 -0
  418. package/lib/types/charts/texture-ids.d.ts +24 -0
  419. package/lib/types/charts/texture.d.ts +185 -0
  420. package/lib/types/charts/util.d.ts +66 -0
  421. package/lib/types/charts/value-grid.d.ts +22 -0
  422. package/lib/types/draw.d.ts +279 -0
  423. package/lib/types/entries/dumbbell-queue.d.ts +2 -0
  424. package/lib/types/entries/hairline-area.d.ts +2 -0
  425. package/lib/types/entries/hairline-line.d.ts +2 -0
  426. package/lib/types/entries/plumb-scatter.d.ts +2 -0
  427. package/lib/types/entries/rung-bars.d.ts +2 -0
  428. package/lib/types/entries/slope.d.ts +2 -0
  429. package/lib/types/frame.d.ts +2 -0
  430. package/lib/types/index.d.ts +82 -0
  431. package/lib/types/kit.d.ts +22 -0
  432. package/lib/types/lib/format.d.ts +58 -0
  433. package/lib/types/lib/random.d.ts +5 -0
  434. package/lib/types/maps.d.ts +2 -0
  435. package/lib/types/schema/daily.d.ts +14 -0
  436. package/lib/types/schema/dumbbell-queue.d.ts +91 -0
  437. package/lib/types/schema/format.d.ts +101 -0
  438. package/lib/types/schema/hairline-area.d.ts +83 -0
  439. package/lib/types/schema/hairline-line.d.ts +85 -0
  440. package/lib/types/schema/key.d.ts +12 -0
  441. package/lib/types/schema/metrics.d.ts +26 -0
  442. package/lib/types/schema/motion.d.ts +22 -0
  443. package/lib/types/schema/options.d.ts +51 -0
  444. package/lib/types/schema/plumb-scatter.d.ts +124 -0
  445. package/lib/types/schema/registry.d.ts +309 -0
  446. package/lib/types/schema/rung-bars.d.ts +84 -0
  447. package/lib/types/schema/scale.d.ts +34 -0
  448. package/lib/types/schema/slope.d.ts +120 -0
  449. package/lib/types/schema/validate.d.ts +29 -0
  450. package/lib/types/schema.d.ts +30 -0
  451. package/lib/types/theme/derive.d.ts +23 -0
  452. package/lib/types/theme.d.ts +2 -0
  453. package/lib/vendor/us-atlas/states-10m.json.js +13855 -0
  454. package/lib/vendor/world-atlas/countries-110m.json.js +9357 -0
  455. package/package.json +162 -4
@@ -0,0 +1,24 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { JitterGroup } from "./jitter-strip.data.js";
3
+ interface JitterStripProps extends NoteProps {
4
+ data?: JitterGroup[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Axis caption, e.g. "days after 21 March". */
8
+ axisLabel?: string;
9
+ /** Formats the labels on the scale; defaults to `format`. */
10
+ tickFormat?: (v: number) => string;
11
+ /** Unit for the tooltip noun when a record has no name, e.g. "year". */
12
+ unit?: string;
13
+ /** Index of the hero group (default the first: median and name in ink); a given one also inks its rings. */
14
+ highlight?: number;
15
+ }
16
+ /**
17
+ * G15 Easter dates. One hollow ring per record, set on a lattice: values
18
+ * snap to equal-pitch columns and stack outward from each band's centre
19
+ * line, so pile-ups read as taller columns, evenly spaced, with no random
20
+ * jitter. The hero row's median (the first group, or the highlight) is a
21
+ * 2px ink tick; every other median is a quiet 2px rule.
22
+ */
23
+ export declare const JitterStrip: (props: JitterStripProps) => import("react").JSX.Element;
24
+ export {};
@@ -0,0 +1,27 @@
1
+ export interface JitterGroup {
2
+ label: string;
3
+ /** One value per record. */
4
+ values: number[];
5
+ /** One name per record, in the same order as `values`, for the tooltip. */
6
+ names?: string[];
7
+ }
8
+ /**
9
+ * Easter dates: the date of Easter Sunday in every year of the 1800s, 1900s,
10
+ * 2000s and 2100s (100 years each), as days after 21 March (0 is 21 March, 35
11
+ * is 25 April), which are the earliest and latest it can fall. The days are
12
+ * in jitter-strip.easter.json, one list a century in year order.
13
+ *
14
+ * Source: computed with the Gregorian rule, the Meeus/Jones/Butcher
15
+ * algorithm (Jean Meeus, Astronomical Algorithms, 1991), as set out at
16
+ * https://en.wikipedia.org/wiki/Date_of_Easter#Anonymous_Gregorian_algorithm
17
+ * and checked against the Good Friday dates (2019 to 2028, ten of them) in
18
+ * gov.uk's bank holidays file for England and Wales (Open Government
19
+ * Licence v3.0), https://www.gov.uk/bank-holidays.json, fetched 2026-10-15.
20
+ *
21
+ * Transform: for each year, Easter Sunday minus 21 March of that year in
22
+ * days. The 2100s are a prediction.
23
+ * Sanity: the earliest Easter in the four centuries is 22 March (1818) and
24
+ * the latest 25 April (1886, 1943, 2038 and 2190); the median in the 2000s is
25
+ * 20 days after 21 March, 10 April.
26
+ */
27
+ export declare const jitterStripDemo: JitterGroup[];
@@ -0,0 +1,22 @@
1
+ import type { CSSProperties } from "react";
2
+ interface Point {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ interface LinkBundleProps {
7
+ /** Tone, motion and hover classes for the strands, e.g. "stroke-l4 draw". */
8
+ className: string;
9
+ /** Number of hairlines, 1–4: the link's weight. */
10
+ lines: number;
11
+ /** Control point of a bowed link; omit for a straight one. */
12
+ q?: Point;
13
+ s: Point;
14
+ style?: CSSProperties;
15
+ t: Point;
16
+ }
17
+ /**
18
+ * A link engraved as a bundle of 1px hairlines at a 2px pitch, centred on
19
+ * the link's path; the number of strands carries its weight.
20
+ */
21
+ export declare const LinkBundle: (props: LinkBundleProps) => import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,22 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { MatrixGlanceData } from "./matrix-heat-glance.data.js";
3
+ interface MatrixHeatGlanceProps extends NoteProps {
4
+ data?: MatrixGlanceData;
5
+ /** Overrides the natural height (which follows the cell size). */
6
+ height?: number;
7
+ /** Value domain for the five screens; defaults to 0 – 100. */
8
+ domain?: [number, number];
9
+ format?: (v: number) => string;
10
+ /** Suffix for the tooltip value, e.g. "% of households". */
11
+ unit?: string;
12
+ /** [row, column] of the hero cell; defaults to the highest value. */
13
+ highlight?: [number, number];
14
+ }
15
+ /**
16
+ * G20 Kit by income. One tile per row and column, each a halftone screen
17
+ * on paper whose dot grows a step per bin (five bins, pitch 4), the number
18
+ * centred on a paper plate. The one hero tile (the highest value) is solid
19
+ * ink, its number in paper.
20
+ */
21
+ export declare const MatrixHeatGlance: (props: MatrixHeatGlanceProps) => import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,35 @@
1
+ export interface MatrixGlanceData {
2
+ columns: string[];
3
+ rows: string[];
4
+ /** values[row][column]. */
5
+ values: number[][];
6
+ }
7
+ /**
8
+ * Kit by income: the percentage of UK households that own a car or van, a
9
+ * tumble dryer, a dishwasher, a home computer, an internet connection and a
10
+ * mobile phone, by tenth of gross household income, financial year ending 2019
11
+ * (April 2018 to March 2019). It is the last year the survey asked about
12
+ * dishwashers and tumble dryers.
13
+ *
14
+ * Source: Office for National Statistics, Family spending workbook 4:
15
+ * expenditure by household characteristic, financial years ending 2001 to
16
+ * 2019 (Living Costs and Food Survey; Open Government Licence v3.0), sheets
17
+ * A46 "Percentage of households with durable goods by income group and
18
+ * household composition" and A47 "Percentage of households with cars by income
19
+ * group":
20
+ * https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/expenditure/datasets/familyspendingworkbook4expenditurebyhouseholdcharacteristic
21
+ * file https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/personalandhouseholdfinances/expenditure/datasets/familyspendingworkbook4expenditurebyhouseholdcharacteristic/fye2001tofye2019/familyspendingworkbook4expenditurebyhouseholdcharacteristics.xlsx
22
+ * Fetched 2026-10-15.
23
+ *
24
+ * Transform: the ten rows "Lowest ten per cent" to "Highest ten per cent"
25
+ * under "Gross income decile group". Tumble dryer, Dishwasher, Computer
26
+ * (home computer), Internet (internet connection) and Mobile (mobile phone)
27
+ * are the A46 columns of those names; Car is the A47 column "All with
28
+ * cars/vans". Whole per cents, as published. Rows are labelled by tenth
29
+ * ("2nd" is the second decile group). The workbook for the year ending 2021
30
+ * (note 3 to its table A46) says the dishwasher and tumble dryer questions
31
+ * were removed from the questionnaire that year.
32
+ * Sanity: 20% of households in the lowest tenth have a dishwasher against 83%
33
+ * in the highest; the mobile phone is the flattest, 88% to 99%.
34
+ */
35
+ export declare const matrixHeatGlanceDemo: MatrixGlanceData;
@@ -0,0 +1,20 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { PictorialDatum } from "./pictorial-bar.data.js";
3
+ interface PictorialBarProps extends NoteProps {
4
+ data?: PictorialDatum[];
5
+ /** Amount one icon stands for (same units as `value`). */
6
+ unit?: number;
7
+ height?: number;
8
+ format?: (v: number) => string;
9
+ /** Footnote. */
10
+ /** Index of the row to draw in the hero colour. */
11
+ highlight?: number;
12
+ }
13
+ /**
14
+ * G5 Long novels. Each row is a track of page glyphs; one page =
15
+ * `unit`. Every page is a 1px outline; the counted pages are filled with
16
+ * the row's hatch and the last is cut to the remainder. Only the biggest
17
+ * row is inked; the others are engraved in one grey.
18
+ */
19
+ export declare const PictorialBar: (props: PictorialBarProps) => import("react").JSX.Element;
20
+ export {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * G5 Long novels: the length of four long novels in English, in thousands of
3
+ * words. One page glyph is 50 thousand words.
4
+ *
5
+ * Source: Project Gutenberg plain-text editions (public domain; the Project
6
+ * Gutenberg licence lets the texts be used for any purpose, and these counts
7
+ * are derived facts), fetched 2026-10-15 from https://www.gutenberg.org/cache/epub/<id>/pg<id>.txt :
8
+ * 2600 War and Peace, translated by Aylmer Maude
9
+ * 135 Les Misérables, translated by Isabel Florence Hapgood
10
+ * 996 Don Quixote, translated by John Ormsby
11
+ * 145 Middlemarch, by George Eliot (written in English)
12
+ *
13
+ * Transform: every whitespace-separated token containing a letter or digit,
14
+ * between the "*** START OF" and "*** END OF" marker lines, so the Gutenberg
15
+ * licence text is left out but any translator's preface or notes inside the
16
+ * book are counted. Raw counts: 563,001, 564,986, 427,245 and 316,339 words,
17
+ * rounded to the nearest thousand. These are English translations, so the
18
+ * counts belong to a particular translation, not to the original. Les
19
+ * Misérables (Hapgood) edges War and Peace (Maude) by about two thousand words.
20
+ */
21
+ export interface PictorialDatum {
22
+ label: string;
23
+ /** Thousands of words. */
24
+ value: number;
25
+ }
26
+ /** Words in four long novels, in thousands. */
27
+ export declare const pictorialBarDemo: PictorialDatum[];
@@ -0,0 +1,19 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { RainfallDatum } from "./rainfall-dual-area.data.js";
3
+ interface RainfallDualAreaProps extends NoteProps {
4
+ data?: RainfallDatum[];
5
+ height?: number;
6
+ formatInput?: (v: number) => string;
7
+ formatOutput?: (v: number) => string;
8
+ /** Names for the two series, used in the tooltip. */
9
+ inputName?: string;
10
+ outputName?: string;
11
+ }
12
+ /**
13
+ * G8 Rain and river. Hatched input bars hang from a hairline top rule like
14
+ * rain (millimetres a day); the output rises below as an area engraved in fine
15
+ * horizontal rules (river flow) under a 2px ink line. Two scales, stacked, one
16
+ * shared time axis. Scrub to read a day.
17
+ */
18
+ export declare const RainfallDualArea: (props: RainfallDualAreaProps) => import("react").JSX.Element;
19
+ export {};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * G8 Rain and river: the Ure in Wensleydale, 28 November to 21 December 2015.
3
+ * Rain hangs from the top; the river rises from the floor.
4
+ *
5
+ * Sources: Environment Agency Hydrology API (Open Government Licence v3.0),
6
+ * https://environment.data.gov.uk/hydrology/ , fetched 2026-10-15.
7
+ * - Flow: daily mean flow, m3/s, River Ure at Kilgram Bridge (station
8
+ * F2206, guid 41d13879-a145-4975-83bc-1aa9878d2fb5), measure
9
+ * 41d13879-a145-4975-83bc-1aa9878d2fb5-flow-m-86400-m3s-qualified:
10
+ * https://environment.data.gov.uk/hydrology/id/measures/41d13879-a145-4975-83bc-1aa9878d2fb5-flow-m-86400-m3s-qualified/readings.json?mineq-date=2015-11-28&maxeq-date=2015-12-21
11
+ * - Rain: daily total, mm, the Sedbusk rain gauge in Upper Wensleydale
12
+ * (guid 74d6a909-ad5a-4e66-8f2a-9ad42ec1dbb5), measure
13
+ * 74d6a909-ad5a-4e66-8f2a-9ad42ec1dbb5-rainfall-t-86400-mm-qualified:
14
+ * https://environment.data.gov.uk/hydrology/id/measures/74d6a909-ad5a-4e66-8f2a-9ad42ec1dbb5-rainfall-t-86400-mm-qualified/readings.json?mineq-date=2015-11-28&maxeq-date=2015-12-21
15
+ *
16
+ * Transform: the 24 days from 2015-11-28 to 2015-12-21, each date's rain
17
+ * total and mean flow side by side, flow rounded to 0.1 m3/s. All 48 readings
18
+ * are marked Complete. The rain gauge is one point, not a catchment average.
19
+ * The wettest day is 5 December (76.8
20
+ * mm); the river's daily mean peaks the same day (315.1 m3/s), so the two
21
+ * shapes line up bar for bar rather than lagging by days.
22
+ */
23
+ export interface RainfallDatum {
24
+ /** The day. */
25
+ date: Date;
26
+ /** Hangs from the top: rain, mm. */
27
+ input: number;
28
+ /** Rises from the floor: mean river flow, m3/s. */
29
+ output: number;
30
+ }
31
+ /** Rain at Sedbusk and flow of the Ure at Kilgram Bridge, a day at a time. */
32
+ export declare const rainfallDemo: RainfallDatum[];
@@ -0,0 +1,19 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { RankStripData } from "./rank-strip.data.js";
3
+ interface RankStripProps extends NoteProps {
4
+ data?: RankStripData;
5
+ /** Overrides the natural height (which follows the cell size). */
6
+ height?: number;
7
+ /** Label of the hero entity; defaults to the biggest climber. */
8
+ highlight?: string;
9
+ }
10
+ /**
11
+ * G21 Nobel countries. One row per entity, one tile per period, the tile
12
+ * carrying the rank small in its lower-left corner. Each tile is engraved:
13
+ * the higher the rank, the denser and darker its hatch, so a
14
+ * climb reads as a row darkening left to right. The hero entity's row has
15
+ * a 2px concentric outline and the net move is printed at the end of every
16
+ * row.
17
+ */
18
+ export declare const RankStrip: (props: RankStripProps) => import("react").JSX.Element;
19
+ export {};
@@ -0,0 +1,36 @@
1
+ export interface RankSeries {
2
+ label: string;
3
+ /** Rank in each period, 1 = top. */
4
+ ranks: number[];
5
+ }
6
+ export interface RankStripData {
7
+ periods: string[];
8
+ series: RankSeries[];
9
+ /** Size of the field the ranks are among, for the tooltip ("#3 of 6"); defaults to the number of series. */
10
+ outOf?: number;
11
+ }
12
+ /**
13
+ * Nobel countries: where six countries rank among themselves by Nobel Prizes
14
+ * won in five 15-year periods, 1951 to 2025.
15
+ *
16
+ * Source: Nobel Prize Outreach, Nobel Prize API v2.1, all laureates (CC0, per
17
+ * the API terms of use, https://www.nobelprize.org/about/terms-of-use-for-api-nobelprize-org-and-data-nobelprize-org/):
18
+ * https://api.nobelprize.org/2.1/laureates?limit=1200&format=json
19
+ * Fetched 2026-10-15.
20
+ *
21
+ * Transform, one rule throughout: a laureate's country is their country of
22
+ * birth in today's borders (birth.place.countryNow), not the country of their
23
+ * institution. Every laureate and prize pair counts 1, so a shared prize is
24
+ * counted whole for each laureate, and someone with two prizes counts twice.
25
+ * Organisations have no birthplace and are skipped (34 prizes, with a few
26
+ * laureates without a recorded birth country). A prize belongs to the period
27
+ * of its award year, and 2026 is not in the table. Counts, in period order:
28
+ * USA 30, 48, 52, 70, 61; United Kingdom 12, 17, 7, 14, 18; Germany 9, 11, 14,
29
+ * 7, 7; France 8, 8, 4, 4, 12; Japan 1, 3, 3, 9, 13; Sweden 3, 6, 5, 1, 3.
30
+ * Rank is among these six only (1 is most prizes). The six and the periods were
31
+ * chosen so that no two countries tie in any period, so no tie-break is
32
+ * needed (the script checks it).
33
+ * Sanity: Japan climbs from 6th to 3rd with 13 prizes in 2011 to 2025; Germany
34
+ * slips from 3rd to 5th.
35
+ */
36
+ export declare const rankStripDemo: RankStripData;
@@ -0,0 +1,23 @@
1
+ /** A name set beside one mark. */
2
+ export interface PlacedName {
3
+ id: string;
4
+ x: number;
5
+ y: number;
6
+ text: string;
7
+ anchor: "end" | "middle" | "start";
8
+ kind: "name";
9
+ }
10
+ /**
11
+ * Names for the circles of a scatter, largest first. Each goes right of its
12
+ * circle, else left, above or below, taking the first spot that is clear of
13
+ * every circle and every name already set; failing that, the first spot clear
14
+ * of the other names (over a smaller circle); failing that, it is left out
15
+ * (the tooltip still names it). `at` gives a datum's centre and radius.
16
+ */
17
+ export declare const placeNames: <T extends {
18
+ label: string;
19
+ value: number;
20
+ }>(data: T[], bounds: {
21
+ left: number;
22
+ right: number;
23
+ }, at: (d: T) => [number, number, number]) => PlacedName[];
@@ -0,0 +1,22 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { MorphDatum } from "./scatter-morph.data.js";
3
+ interface ScatterMorphProps extends NoteProps {
4
+ data?: MorphDatum[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Axis names for the scatter view. */
8
+ xLabel?: string;
9
+ yLabel?: string;
10
+ formatX?: (v: number) => string;
11
+ formatY?: (v: number) => string;
12
+ }
13
+ /**
14
+ * G9 Largest asteroids. One set of entities that cycles through three views,
15
+ * scatter → bars → ring, every few seconds; each mark flies smoothly into its
16
+ * new shape. Hover pauses the cycle; the view controls jump straight to a
17
+ * view. The biggest item is solid ink; the rest are hatched on paper inside
18
+ * a 1px rim, the pattern fixed to the page so marks glide across one
19
+ * continuous engraved screen.
20
+ */
21
+ export declare const ScatterMorph: (props: ScatterMorphProps) => import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * G9 Largest asteroids: the twelve largest asteroids of the main belt. Size is
3
+ * diameter in kilometres, x the tilt of the orbit (inclination, degrees), y how
4
+ * stretched it is (eccentricity, 0 a circle).
5
+ *
6
+ * Source: NASA/JPL Small-Body Database (SBDB) Query API,
7
+ * https://ssd-api.jpl.nasa.gov/doc/sbdb_query.html , fetched 2026-10-15:
8
+ * https://ssd-api.jpl.nasa.gov/sbdb_query.api?fields=full_name,name,diameter,a,i,e&sb-kind=a&sb-class=IMB,MBA,OMB&sort=-diameter&limit=12
9
+ * The API pages state no licence; NASA/JPL products are US government works,
10
+ * which is public domain in the US (an assumption, not a statement read there).
11
+ *
12
+ * Transform: sb-kind=a is asteroids; sb-class=IMB,MBA,OMB (inner, middle and
13
+ * outer main belt) leaves out the trans-Neptunian bodies and centaurs that
14
+ * the plain list puts among the largest, and the twelve largest by diameter
15
+ * are kept in the order the API gives. Value is the diameter rounded to whole
16
+ * kilometres; x is the inclination in degrees and y the eccentricity, as
17
+ * given. Ceres, 939 km, is the largest and is also classed a dwarf planet;
18
+ * Pallas, the third largest, has the most tilted orbit (34.93 degrees).
19
+ */
20
+ export interface MorphDatum {
21
+ label: string;
22
+ /** Size: area in the scatter, height in the bars, angle in the ring. */
23
+ value: number;
24
+ /** Scatter x: orbital inclination, degrees. */
25
+ x: number;
26
+ /** Scatter y: orbital eccentricity. */
27
+ y: number;
28
+ }
29
+ /** The twelve largest main-belt asteroids: diameter (km), inclination, eccentricity. */
30
+ export declare const scatterMorphDemo: MorphDatum[];
@@ -0,0 +1,27 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { SingleAxisRow } from "./single-axis.data.js";
3
+ interface SingleAxisProps extends NoteProps {
4
+ data?: SingleAxisRow[];
5
+ height?: number;
6
+ /** Labels for the columns; defaults to hours 00:00–23:00. */
7
+ columns?: string[];
8
+ /** Column indices that get an axis label. */
9
+ ticks?: number[];
10
+ format?: (v: number) => string;
11
+ /** Unit shown in the tooltip, e.g. "m". */
12
+ unit?: string;
13
+ /** Clock the hours are read on, shown after the axis and in the tooltip. */
14
+ zone?: string;
15
+ /** Index of the row to draw in the hero colour. */
16
+ highlight?: number;
17
+ }
18
+ /**
19
+ * G14 Up the Hudson (punch card). One row per station, each on its own
20
+ * hairline hour axis (local standard time); circle area = predicted tide
21
+ * height, rows in order up a river. The row with
22
+ * the highest tides (or the highlight) is solid ink; every other station's
23
+ * circles are hatched over a paper ground inside a 1px outline, so neighbours
24
+ * overlap cleanly.
25
+ */
26
+ export declare const SingleAxis: (props: SingleAxisProps) => import("react").JSX.Element;
27
+ export {};
@@ -0,0 +1,6 @@
1
+ export interface SingleAxisRow {
2
+ label: string;
3
+ /** One value per column (hour). */
4
+ values: number[];
5
+ }
6
+ export declare const singleAxisDemo: SingleAxisRow[];
@@ -0,0 +1,18 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { WaveDatum } from "./stagger-wave.data.js";
3
+ interface StaggerWaveProps extends NoteProps {
4
+ data?: WaveDatum[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Index of the bar to draw in the hero colour. */
8
+ highlight?: number;
9
+ }
10
+ /**
11
+ * G12 Cold December. Thirty to sixty narrow bars, one a day, squared off with
12
+ * a 2px corner, that enter as a wave, left to right. Bars stand on a zero
13
+ * line: up for a positive value, down for a negative one. The peak (or the
14
+ * highlight) is solid ink; every other bar is hatched inside a crisp 1px
15
+ * outline. The card's Replay re-runs it.
16
+ */
17
+ export declare const StaggerWave: (props: StaggerWaveProps) => import("react").JSX.Element;
18
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * G12 Cold December: the daily mean temperature of central England, 2 November
3
+ * to 27 December 2010, one bar a day.
4
+ *
5
+ * Source: Met Office Hadley Centre Central England Temperature (HadCET),
6
+ * daily mean, v2.1.1.0 + provisional,
7
+ * https://www.metoffice.gov.uk/hadobs/hadcet/data/download.html
8
+ * File: https://www.metoffice.gov.uk/hadobs/hadcet/data/meantemp_daily_totals.txt
9
+ * Fetched 2026-10-15. Licence: Open Government Licence v3.0, with the Met
10
+ * Office's attribution.
11
+ *
12
+ * Transform: the 56 values from 2010-11-02 to 2010-12-27, in degrees Celsius
13
+ * to one decimal place, exactly as they stand (none is missing). The coldest
14
+ * is 20 December, -7.0; 23 of the 56 days are below zero. December 2010 had
15
+ * a mean of -0.67 (the mean of its 31 daily values), the coldest December in
16
+ * the series since 1890 (-0.80).
17
+ */
18
+ export interface WaveDatum {
19
+ date: Date;
20
+ /** Daily mean temperature, degrees Celsius. */
21
+ value: number;
22
+ }
23
+ /** Daily mean central England temperature, 2 November to 27 December 2010. */
24
+ export declare const staggerWaveDemo: WaveDatum[];
25
+ /** Index of the coldest day, the bar drawn in ink. */
26
+ export declare const staggerWaveColdest: number;
@@ -0,0 +1,16 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { TreeDatum } from "./tree-lr.data.js";
3
+ interface TreeLRProps extends NoteProps {
4
+ data?: TreeDatum;
5
+ height?: number;
6
+ /** Name of a top-level branch to draw in the hero colour. */
7
+ highlight?: string;
8
+ }
9
+ /**
10
+ * G7 Indo-European. A two- or three-level hierarchy laid out left to right
11
+ * with smooth 1px hairline links; leaves are bare ends, named where the
12
+ * link stops. One branch (the highlight, else the first) is inked; the
13
+ * others share one grey. Hover any node to trace its path back to the root.
14
+ */
15
+ export declare const TreeLR: (props: TreeLRProps) => import("react").JSX.Element;
16
+ export {};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * G7 Indo-European: four branches of the Indo-European family and three
3
+ * languages under each.
4
+ *
5
+ * Source: Glottolog 5.3 (Hammarström, Forkel, Haspelmath and Bank, Max Planck
6
+ * Institute for Evolutionary Anthropology, Leipzig, 2026), CC BY 4.0,
7
+ * https://doi.org/10.5281/zenodo.15525265 . File glottolog_languoid.csv.zip,
8
+ * https://glottolog.org/meta/downloads , fetched 2026-10-15.
9
+ *
10
+ * Transform: Glottolog's tree is much deeper than this one. Indo-European
11
+ * (indo1319) has Classical Indo-European (clas1257) below it; Germanic
12
+ * (germ1287), Italic then Romance (roma1334) and Celtic (celt1248) sit under
13
+ * that, and Slavic (slav1255) sits under Balto-Slavic. This chart prunes the
14
+ * intermediate families and keeps the four branches directly under the root.
15
+ * The twelve languages were chosen by hand, spread across each branch's
16
+ * sub-branches, and each was checked in the file to have its branch among its
17
+ * ancestors (English stan1293, German stan1295 and Icelandic icel1247 under
18
+ * Germanic; French stan1290, Italian ital1282 and Romanian roma1327 under
19
+ * Romance; Irish iris1253, Welsh wels1247 and Breton bret1244 under Celtic;
20
+ * Russian russ1263, Polish poli1260 and Bulgarian bulg1262 under Slavic).
21
+ */
22
+ export interface TreeDatum {
23
+ name: string;
24
+ children?: TreeDatum[];
25
+ }
26
+ /** Twelve Indo-European languages under four of its branches. */
27
+ export declare const treeLRDemo: TreeDatum;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Rendered width of `text` in a text role (`t-label`, `t-axis`, ...), read
3
+ * from the page's own Inter. Falls back to the estimate until the font is in
4
+ * (and is not remembered then).
5
+ */
6
+ export declare const textWidth: (text: string, role: string) => number;
7
+ /** Width of the widest of `labels` in `role`, rounded up: room to reserve beside a plot. */
8
+ export declare const labelRoom: (labels: string[], role?: string) => number;
9
+ export declare const LADDER_FILL: string[];
10
+ export declare const LADDER_STROKE: string[];
11
+ /** Fill class for a ladder step, or the hero fill. */
12
+ export declare const fillFor: (i: number, hero?: boolean) => string;
13
+ /** Stroke class for a ladder step, or the hero stroke. */
14
+ export declare const strokeFor: (i: number, hero?: boolean) => string;
15
+ /**
16
+ * Ladder steps by rank: the largest value gets `steps[0]`, the next
17
+ * `steps[1]`, and so on (the last step repeats).
18
+ */
19
+ export declare const rankTones: (values: number[], steps: number[]) => number[];
20
+ /** Explicit plus and a true minus sign: +12, −18. */
21
+ export declare const fmtSigned: (v: number) => string;
22
+ export type Pt = [number, number];
23
+ export declare const rectPts: (x0: number, y0: number, x1: number, y1: number) => Pt[];
24
+ export declare const circlePts: (cx: number, cy: number, r: number) => Pt[];
25
+ /**
26
+ * Annular sector between radii r0 < r1 and angles a0 < a1 (clockwise from
27
+ * 12 o'clock), trimmed by a parallel gap `g` on each radial side.
28
+ */
29
+ export declare const sectorPts: (cx: number, cy: number, r0: number, r1: number, a0: number, a1: number, g: number) => Pt[];
30
+ export declare const ptsPath: (pts: Pt[]) => string;
31
+ export declare const blendPts: (a: Pt[], b: Pt[], t: number) => Pt[];
@@ -0,0 +1,12 @@
1
+ /** Ladder step for rank `rank` of `n`, spread so the last stays readable at step `lightest`. */
2
+ export declare const ladderStep: (rank: number, n: number, lightest?: number) => number;
3
+ /** Deterministic log-normal samples: the shared normal draws, exponentiated. */
4
+ export declare const logNormals: (seed: number, n: number, median: number, sigma: number) => number[];
5
+ /** Gaussian kernel density of `values`, sampled at `at`. */
6
+ export declare const density: (values: number[], at: number[], bandwidth: number) => number[];
7
+ /** Silverman's rule-of-thumb bandwidth. */
8
+ export declare const silverman: (values: number[]) => number;
9
+ /** Height of the glance control slot: one control's 44px hit area. */
10
+ export declare const CONTROL_SLOT_H = 44;
11
+ /** How many hairlines a link of `value` gets: one to four, by its share of the heaviest. */
12
+ export declare const bundleLines: (value: number, max: number) => number;
@@ -0,0 +1,22 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { ViolinGroup } from "./violin.data.js";
3
+ interface ViolinProps extends NoteProps {
4
+ data?: ViolinGroup[];
5
+ height?: number;
6
+ format?: (v: number) => string;
7
+ /** Unit noun for the tooltip, e.g. "towers". */
8
+ unit?: string;
9
+ /** Darkest = lowest median (true) or highest (false, e.g. the heaviest bells). */
10
+ lowIsBest?: boolean;
11
+ /** Index of the group to draw in the hero colour. */
12
+ highlight?: number;
13
+ }
14
+ /**
15
+ * G19 Tenor weights. One filled density silhouette per group, mirrored around
16
+ * its centre line; width = how many records sit at that value. A 2px
17
+ * paper-coloured rung marks the median, printed beside it. The lowest-median group
18
+ * (or the highlight, or the highest median when `lowIsBest` is false) is solid ink; the rest are hatched inside
19
+ * a 1px outline.
20
+ */
21
+ export declare const Violin: (props: ViolinProps) => import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,24 @@
1
+ export interface ViolinGroup {
2
+ label: string;
3
+ /** One value per record. */
4
+ values: number[];
5
+ }
6
+ /**
7
+ * Tenor weights: the weight of the heaviest bell, in hundredweight (cwt), for
8
+ * every full-circle ring of 6, 8, 10 and 12 bells, one value per tower.
9
+ *
10
+ * Source: Dove's Guide for Church Bell Ringers, Central Council of Church Bell
11
+ * Ringers, dove.csv, licensed Creative Commons Attribution-ShareAlike 4.0
12
+ * (credit the Central Council; data derived from it shares alike):
13
+ * https://dove.cccbr.org.uk/dove.csv (download page https://dove.cccbr.org.uk/downloads)
14
+ * Fetched 2026-10-15.
15
+ *
16
+ * Transform: rows with RingType "Full-circle ring" and Bells 6, 8, 10 or 12
17
+ * (2,958, 1,892, 303 and 139 towers); the column Wt, which is the tenor in
18
+ * pounds, was kept as given (blank weights dropped) and is in
19
+ * violin.tenors.json, sorted. Divided here by 112 to give hundredweight.
20
+ * Sanity: the heaviest tenor is Liverpool Cathedral's, 9,195 lb or 82 cwt, in
21
+ * the ring of 12; the median tenor is 10 cwt for six bells and 25.7 cwt for
22
+ * twelve. Dove marks some weights as approximate or estimated.
23
+ */
24
+ export declare const violinDemo: ViolinGroup[];