@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
package/lib/tokens.css ADDED
@@ -0,0 +1,306 @@
1
+ /*
2
+ * Palettes. Charts never use hex values: only the semantic variables below.
3
+ *
4
+ * --hl-paper page and card surface
5
+ * --hl-ink strongest mark and headline colour
6
+ * --hl-text / --hl-muted / --hl-faint text hierarchy
7
+ * --hl-grid / --hl-rule hairlines: the faint grid and quiet rules
8
+ * --hl-l0 … --hl-l6 importance ladder, most important first ("lightness is data")
9
+ * --hl-hero the one highlighted element per chart
10
+ * --hl-alert thresholds, regressions, over-budget
11
+ * --hl-cat-1 … --hl-cat-4 categorical series
12
+ * --hl-heat-1 … --hl-heat-5 sequential ramp, low → high
13
+ *
14
+ * Every name is --hl- prefixed and scoped under a Hairline root (.hl-root);
15
+ * the library sets nothing on :root, so it never collides with a host's own
16
+ * variables. A host themes a root with deriveTheme (@howells/hairline/theme)
17
+ * or by overriding these on its own rule. Three house modes are set by
18
+ * data-palette on the root: paper, pink and dark. `.surface-dark` (the dark
19
+ * cell) remaps the same names, so a chart inverts without knowing it is on a
20
+ * dark card.
21
+ */
22
+
23
+ .hl-root,
24
+ .hl-root[data-palette="paper"] {
25
+ /* Paper: patternmode's paper and ink; the ramp steps evenly between them in OKLCH. */
26
+ --hl-paper: #fbfbf9;
27
+ --hl-ink: #1d1d1b;
28
+ --hl-text: #1d1d1b;
29
+ --hl-muted: #727068;
30
+ --hl-faint: #9f9e9a;
31
+ --hl-grid: #eeece7;
32
+ --hl-rule: #e3e1dc;
33
+
34
+ --hl-l0: #1d1d1b;
35
+ --hl-l1: #41403c;
36
+ --hl-l2: #5f5e5a;
37
+ --hl-l3: #7e7d79;
38
+ --hl-l4: #9f9e9a;
39
+ --hl-l5: #bfbeb9;
40
+ --hl-l6: #dad9d5;
41
+
42
+ --hl-hero: #1d1d1b;
43
+ --hl-alert: #c05951;
44
+
45
+ --hl-cat-1: var(--hl-l0);
46
+ --hl-cat-2: var(--hl-l2);
47
+ --hl-cat-3: var(--hl-l4);
48
+ --hl-cat-4: var(--hl-l6);
49
+
50
+ --hl-heat-1: #dad9d5;
51
+ --hl-heat-2: #9f9e9a;
52
+ --hl-heat-3: #7e7d79;
53
+ --hl-heat-4: #41403c;
54
+ --hl-heat-5: #1d1d1b;
55
+
56
+ /* The paper's grain: noise in the ink's colour at a whisper of opacity. */
57
+ --hl-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.000 0 0 0 0 0.000 0 0 0 0 0.000 0 0 0 0.045 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url%28%23g%29'/%3E%3C/svg%3E");
58
+
59
+ --hl-dk-paper: #1d1d1b;
60
+ --hl-dk-ink: #fbfbf9;
61
+ --hl-dk-muted: #9f9e9a;
62
+ --hl-dk-faint: #5f5e5a;
63
+ --hl-dk-grid: #34332f;
64
+ --hl-dk-rule: #2b2a27;
65
+ --hl-dk-l0: #fbfbf9;
66
+ --hl-dk-l1: #dad9d5;
67
+ --hl-dk-l2: #bfbeb9;
68
+ --hl-dk-l3: #9f9e9a;
69
+ --hl-dk-l4: #7e7d79;
70
+ --hl-dk-l5: #5f5e5a;
71
+ --hl-dk-l6: #41403c;
72
+ --hl-dk-hero: #fbfbf9;
73
+ --hl-dk-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1.000 0 0 0 0 0.980 0 0 0 0 0.941 0 0 0 0.036 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url%28%23g%29'/%3E%3C/svg%3E");
74
+ }
75
+
76
+ .hl-root[data-palette="pink"] {
77
+ /* Pink: a dusty, dusky broadsheet pink (a greyed rose, deeper than any trademark salmon), with a warm ink ramp drawn toward its hue. */
78
+ --hl-paper: #f1dfdc;
79
+ --hl-ink: #27201e;
80
+ --hl-text: #27201e;
81
+ --hl-muted: #6c605e;
82
+ --hl-faint: #a59895;
83
+ --hl-grid: #e4d3cf;
84
+ --hl-rule: #dccbc7;
85
+
86
+ --hl-l0: #27201e;
87
+ --hl-l1: #443b39;
88
+ --hl-l2: #635856;
89
+ --hl-l3: #837775;
90
+ --hl-l4: #a59895;
91
+ --hl-l5: #c4b5b2;
92
+ --hl-l6: #dccbc8;
93
+
94
+ --hl-hero: #27201e;
95
+ --hl-alert: #9c433e;
96
+
97
+ --hl-cat-1: var(--hl-l0);
98
+ --hl-cat-2: var(--hl-l2);
99
+ --hl-cat-3: var(--hl-l4);
100
+ --hl-cat-4: var(--hl-l6);
101
+
102
+ --hl-heat-1: #dccbc8;
103
+ --hl-heat-2: #a59895;
104
+ --hl-heat-3: #837775;
105
+ --hl-heat-4: #443b39;
106
+ --hl-heat-5: #27201e;
107
+
108
+ /* The paper's grain: noise in the ink's colour at a whisper of opacity. */
109
+ --hl-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.275 0 0 0 0 0.137 0 0 0 0 0.098 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url%28%23g%29'/%3E%3C/svg%3E");
110
+
111
+ --hl-dk-paper: #1d1d1b;
112
+ --hl-dk-ink: #fbfbf9;
113
+ --hl-dk-muted: #9f9e9a;
114
+ --hl-dk-faint: #5f5e5a;
115
+ --hl-dk-grid: #34332f;
116
+ --hl-dk-rule: #2b2a27;
117
+ --hl-dk-l0: #fbfbf9;
118
+ --hl-dk-l1: #dad9d5;
119
+ --hl-dk-l2: #bfbeb9;
120
+ --hl-dk-l3: #9f9e9a;
121
+ --hl-dk-l4: #7e7d79;
122
+ --hl-dk-l5: #5f5e5a;
123
+ --hl-dk-l6: #41403c;
124
+ --hl-dk-hero: #fbfbf9;
125
+ --hl-dk-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1.000 0 0 0 0 0.980 0 0 0 0 0.941 0 0 0 0.036 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url%28%23g%29'/%3E%3C/svg%3E");
126
+ }
127
+
128
+ .hl-root[data-palette="dark"] {
129
+ /* Dark: a warm near-black page; contrast rebuilt, not inverted. Light ink leads, the ramp descends toward the page. */
130
+ --hl-paper: #181715;
131
+ --hl-ink: #f0eeeb;
132
+ --hl-text: #f0eeeb;
133
+ --hl-muted: #888683;
134
+ --hl-faint: #686663;
135
+ --hl-grid: #242321;
136
+ --hl-rule: #2c2b29;
137
+
138
+ --hl-l0: #f0eeeb;
139
+ --hl-l1: #cccac7;
140
+ --hl-l2: #a9a7a4;
141
+ --hl-l3: #888683;
142
+ --hl-l4: #686663;
143
+ --hl-l5: #4c4a47;
144
+ --hl-l6: #373533;
145
+
146
+ /* A shade below the text ink, so large solid heroes glow rather than glare. */
147
+ --hl-hero: #d8d6d2;
148
+ --hl-alert: #d87a6e;
149
+
150
+ --hl-cat-1: var(--hl-l0);
151
+ --hl-cat-2: var(--hl-l2);
152
+ --hl-cat-3: var(--hl-l4);
153
+ --hl-cat-4: var(--hl-l6);
154
+
155
+ --hl-heat-1: #373533;
156
+ --hl-heat-2: #686663;
157
+ --hl-heat-3: #888683;
158
+ --hl-heat-4: #cccac7;
159
+ --hl-heat-5: #f0eeeb;
160
+
161
+ /* The paper's grain: noise in the ink's colour at a whisper of opacity. */
162
+ --hl-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1.000 0 0 0 0 0.980 0 0 0 0 0.941 0 0 0 0.036 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url%28%23g%29'/%3E%3C/svg%3E");
163
+ --hl-dk-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1.000 0 0 0 0 0.980 0 0 0 0 0.941 0 0 0 0.036 0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url%28%23g%29'/%3E%3C/svg%3E");
164
+
165
+ /* The one dark cell sits a step deeper than the dark page. */
166
+ --hl-dk-paper: #0e0d0b;
167
+ --hl-dk-ink: #f0eeeb;
168
+ --hl-dk-muted: #888683;
169
+ --hl-dk-faint: #4c4a47;
170
+ --hl-dk-grid: #1f1e1c;
171
+ --hl-dk-rule: #262523;
172
+ --hl-dk-l0: #f0eeeb;
173
+ --hl-dk-l1: #cccac7;
174
+ --hl-dk-l2: #a9a7a4;
175
+ --hl-dk-l3: #888683;
176
+ --hl-dk-l4: #686663;
177
+ --hl-dk-l5: #4c4a47;
178
+ --hl-dk-l6: #373533;
179
+ --hl-dk-hero: #d8d6d2;
180
+ }
181
+
182
+ /* Dark cards: same names, inverted values. */
183
+ .hl-root .surface-dark,
184
+ .hl-root.surface-dark {
185
+ --hl-paper: var(--hl-dk-paper);
186
+ --hl-ink: var(--hl-dk-ink);
187
+ --hl-text: var(--hl-dk-ink);
188
+ --hl-muted: var(--hl-dk-muted);
189
+ --hl-faint: var(--hl-dk-faint);
190
+ --hl-grid: var(--hl-dk-grid);
191
+ --hl-rule: var(--hl-dk-rule);
192
+ --hl-l0: var(--hl-dk-l0);
193
+ --hl-l1: var(--hl-dk-l1);
194
+ --hl-l2: var(--hl-dk-l2);
195
+ --hl-l3: var(--hl-dk-l3);
196
+ --hl-l4: var(--hl-dk-l4);
197
+ --hl-l5: var(--hl-dk-l5);
198
+ --hl-l6: var(--hl-dk-l6);
199
+ --hl-hero: var(--hl-dk-hero);
200
+ --hl-cat-1: var(--hl-dk-l0);
201
+ --hl-cat-2: var(--hl-dk-l2);
202
+ --hl-cat-3: var(--hl-dk-l4);
203
+ --hl-cat-4: var(--hl-dk-l6);
204
+ --hl-grain: var(--hl-dk-grain);
205
+ background: var(--hl-grain), var(--hl-paper);
206
+ color: var(--hl-text);
207
+ }
208
+
209
+ /* Derived tones, valid in every palette (and on dark cards). */
210
+ .hl-root,
211
+ .hl-root .surface-dark,
212
+ .hl-root.surface-dark {
213
+ --hl-alert-soft: color-mix(in oklab, var(--hl-alert) 22%, transparent);
214
+ --hl-alert-faded: color-mix(in oklab, var(--hl-alert) 45%, var(--hl-paper));
215
+ --hl-alert-rule: color-mix(in oklab, var(--hl-alert) 55%, var(--hl-paper));
216
+ --hl-hero-soft: color-mix(in oklab, var(--hl-hero) 25%, var(--hl-paper));
217
+ --hl-panel: color-mix(in oklab, var(--hl-paper) 96%, var(--hl-ink));
218
+ }
219
+
220
+ /*
221
+ * Dashboard boards (the dense, scrubbable style). They sit on the same paper
222
+ * as every other chart and read the palette's own text, muted, faint, grid
223
+ * and rule. Series tones are steps on the ramp: past, the cursor's month
224
+ * (active) and future.
225
+ */
226
+ .hl-root .surface-board,
227
+ .hl-root.surface-board {
228
+ --hl-bg: var(--hl-paper);
229
+ --hl-board-panel: var(--hl-paper);
230
+
231
+ /*
232
+ * Series tones: the fill taxonomy's tones only (src/charts/fills.ts): hero,
233
+ * l2, l3, l4, l5 and alert. No mixes, no alpha, no l0, l1 or l6.
234
+ */
235
+ --hl-s1: var(--hl-l2);
236
+ --hl-s1-active: var(--hl-hero);
237
+ --hl-s1-future: var(--hl-l4);
238
+ --hl-s2: var(--hl-l4);
239
+ --hl-s2-active: var(--hl-l3);
240
+ --hl-s2-future: var(--hl-l5);
241
+ --hl-s3: var(--hl-l5);
242
+ --hl-s3-active: var(--hl-l4);
243
+ --hl-s3-future: var(--hl-l5);
244
+
245
+ --hl-line1: var(--hl-hero);
246
+ --hl-line1-future: var(--hl-l4);
247
+ --hl-line2: var(--hl-l3);
248
+ --hl-line2-future: var(--hl-l5);
249
+
250
+ --hl-area1: var(--hl-l5);
251
+ --hl-area2: var(--hl-l5);
252
+ --hl-area3: var(--hl-l5);
253
+ --hl-band-past: var(--hl-l5);
254
+ --hl-band-future: var(--hl-l5);
255
+
256
+ /* Red marks one exceptional thing per chart: one solid alert tone. */
257
+ --hl-red: var(--hl-alert);
258
+ --hl-red-past: var(--hl-alert);
259
+ --hl-red-future: var(--hl-alert);
260
+ --hl-red-soft: var(--hl-alert);
261
+ --hl-red-rule: var(--hl-alert);
262
+
263
+ --hl-board-bar: var(--hl-l3);
264
+ --hl-board-label-2: var(--hl-l3);
265
+ --hl-board-swatch-3: var(--hl-l4);
266
+ --hl-board-link: var(--hl-l5);
267
+ --hl-board-link-hot: var(--hl-l4);
268
+ --hl-board-hot: var(--hl-alert);
269
+ --hl-board-heat-1: var(--hl-l5);
270
+ --hl-board-heat-2: var(--hl-l4);
271
+ --hl-board-heat-3: var(--hl-l3);
272
+ --hl-board-heat-4: var(--hl-l2);
273
+ --hl-board-heat-5: var(--hl-hero);
274
+
275
+ --hl-panel: var(--hl-board-panel);
276
+ background: var(--hl-grain), var(--hl-bg);
277
+ color: var(--hl-text);
278
+ }
279
+
280
+ /*
281
+ * Motion. Every chart moves with these and nothing else; charts/motion.ts
282
+ * mirrors them for the few charts animated from script.
283
+ */
284
+ .hl-root {
285
+ /* Arrivals: bars, dots and labels appearing in place (ease-out-quint). */
286
+ --hl-ease-enter: cubic-bezier(0.23, 1, 0.32, 1);
287
+ /* Crossing the chart: lines drawing on, wipes, marks moving (ease-in-out-quart). */
288
+ --hl-ease-travel: cubic-bezier(0.77, 0, 0.175, 1);
289
+ /* Tone changes: hover dims, highlights, palettes. */
290
+ --hl-ease-tone: ease;
291
+
292
+ --hl-duration-hover: 150ms; /* dims and highlights under the pointer */
293
+ --hl-duration-change: 400ms; /* data or palette changing in place */
294
+ --hl-duration-enter: 600ms; /* dots and text arriving */
295
+ --hl-duration-grow: 800ms; /* bars and areas rising from their baseline */
296
+ --hl-duration-long: 1200ms; /* lines drawing on, marks crossing a chart */
297
+
298
+ /* Labels and furniture trail the marks they describe. */
299
+ --hl-fade-lag: 150ms;
300
+
301
+ /* Steps between neighbours in a group, by how many there are. */
302
+ --hl-stagger-dense: 8ms; /* hundreds: cells, ticks, dots */
303
+ --hl-stagger-fine: 16ms; /* dozens */
304
+ --hl-stagger-mark: 40ms; /* a handful of bars or points */
305
+ --hl-stagger-series: 80ms; /* a few series, rows or phases */
306
+ }
@@ -0,0 +1,14 @@
1
+ export interface Margin {
2
+ bottom: number;
3
+ left: number;
4
+ right: number;
5
+ top: number;
6
+ }
7
+ export interface TickMark {
8
+ label: string;
9
+ x: number;
10
+ }
11
+ /** Where a mark sits relative to the scrub cursor. */
12
+ export declare const phase: (i: number, cursor: number) => "active" | "future" | "past";
13
+ /** Snap a coordinate to the pixel grid for crisp 1px lines. */
14
+ export declare const crisp: (v: number) => number;
@@ -0,0 +1,22 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { CandleDatum } from "./candlestick.data.js";
3
+ interface CandlestickProps extends NoteProps {
4
+ data?: CandleDatum[];
5
+ /** Formats prices on the value axis. Defaults to the house money format. */
6
+ format?: (v: number) => string;
7
+ /**
8
+ * Formats an exact price: the labelled highest high and lowest low, the
9
+ * tooltip and the description. Defaults to dollars and cents, which an
10
+ * exact price needs and the whole-dollar money format would round away.
11
+ */
12
+ formatPrice?: (v: number) => string;
13
+ height?: number;
14
+ }
15
+ /**
16
+ * F17 Daily price. Open-high-low-close per period: the body runs open to
17
+ * close (hollow = closed up, hatched = closed down), the wick is the full
18
+ * reach. Every candle is one grey; the latest is in ink. The highest high and
19
+ * lowest low carry their price.
20
+ */
21
+ export declare const Candlestick: (props: CandlestickProps) => import("react").JSX.Element;
22
+ export {};
@@ -0,0 +1,10 @@
1
+ /** One trading day. */
2
+ export interface CandleDatum {
3
+ close: number;
4
+ date: Date;
5
+ high: number;
6
+ low: number;
7
+ open: number;
8
+ }
9
+ /** A made-up price, daily, 24 August to 2 October 2026 (see above). */
10
+ export declare const candlestickDemo: CandleDatum[];
@@ -0,0 +1,7 @@
1
+ /** What a daily chart draws when there is nothing to draw: a quiet axis. */
2
+ export declare const DailyEmpty: ({ floor, height, name, width, }: {
3
+ floor: number;
4
+ height: number;
5
+ name?: string;
6
+ width: number;
7
+ }) => import("react").JSX.Element;
@@ -0,0 +1,38 @@
1
+ import type { DailyDatum } from "../../schema/daily.js";
2
+ /**
3
+ * One reading as the daily charts draw it: the date parsed, the key it is
4
+ * addressed by, and a value that is null for a gap (null, NaN or infinite).
5
+ */
6
+ export interface Reading {
7
+ date: Date;
8
+ key: string;
9
+ value: number | null;
10
+ }
11
+ /**
12
+ * The payload as readings in date order (the sort is stable, so readings on
13
+ * one day keep their order). A date that does not parse is dropped; a value
14
+ * that is not a finite number becomes a gap.
15
+ */
16
+ export declare const readingsOf: (data: DailyDatum[]) => Reading[];
17
+ /** Every reading as table rows: its date and value, a gap saying so. */
18
+ export declare const readingRows: (readings: Reading[], fmtDate: (d: Date) => string, format: (v: number) => string) => string[][];
19
+ /** The indexes of the readings that have a value. */
20
+ export declare const liveOf: (readings: Reading[]) => number[];
21
+ /** The readings, with the indexes of those that have a value: they travel together. */
22
+ export interface Series {
23
+ live: number[];
24
+ readings: Reading[];
25
+ }
26
+ /** The readings as a `Series`. */
27
+ export declare const seriesOf: (readings: Reading[]) => Series;
28
+ /** React keys: each reading's key, numbered by position so repeats stay unique. */
29
+ export declare const reactKeyOf: (reading: Reading, index: number) => string;
30
+ /** The value at `index`, which the caller knows is live. */
31
+ export declare const valueAt: (readings: Reading[], index: number) => number;
32
+ /**
33
+ * The reading to draw in ink: the live one whose key is `emphasis`, else
34
+ * `fallback`. A key that names a gap or no reading emphasises none (-1).
35
+ */
36
+ export declare const heroOf: (readings: Reading[], live: number[], emphasis: string | undefined, fallback: number) => number;
37
+ /** A reading that has a value: the line and area break where it is false. */
38
+ export declare const isLive: (reading: Reading) => boolean;
@@ -0,0 +1,19 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { DotHeatData } from "./dot-heat.data.js";
3
+ interface DotHeatProps extends NoteProps {
4
+ data?: DotHeatData;
5
+ format?: (v: number) => string;
6
+ height?: number;
7
+ /** [row, column] of the cell to ring; defaults to the largest. */
8
+ highlight?: readonly [number, number];
9
+ /** Label every nth column on the axis. */
10
+ labelEvery?: number;
11
+ }
12
+ /**
13
+ * F10 Hour of birth. One dot per cell, its area and tone stretched across
14
+ * the span from the smallest value to the largest (tone in thirds); the peak is the one dot in ink, inside an evenly dotted ring.
15
+ * Empty cells keep a pinpoint so silence stays visible. The tooltip sits
16
+ * above the grid, over the hovered column, clear of every dot.
17
+ */
18
+ export declare const DotHeat: (props: DotHeatProps) => import("react").JSX.Element;
19
+ export {};
@@ -0,0 +1,28 @@
1
+ /** A rows × columns grid of values, e.g. weekday × hour. */
2
+ export interface DotHeatData {
3
+ columns: string[];
4
+ rows: string[];
5
+ values: number[][];
6
+ }
7
+ /**
8
+ * Share of US births by weekday and hour of delivery, 2013.
9
+ *
10
+ * Source: CDC/NCHS, Data Brief 200, "When Are Babies Born: Morning, Noon, or
11
+ * Night? Birth Certificate Data for 2013". The brief's data table (Figure 1)
12
+ * only splits Monday to Friday from the weekend, so the hour by weekday
13
+ * counts come from the file behind it, the 2013 natality public use file
14
+ * (Nat2013us.zip, record fields DOB_TT time of birth and DOB_WK weekday).
15
+ * Brief: https://www.cdc.gov/nchs/products/databriefs/db200.htm
16
+ * Table: https://www.cdc.gov/nchs/data/databriefs/db200_table.pdf
17
+ * File: https://ftp.cdc.gov/pub/Health_Statistics/NCHS/Datasets/DVS/natality/Nat2013us.zip
18
+ * Fetched 2026-10-15.
19
+ *
20
+ * Transform: the records with a stated time of birth (the 41 states and the
21
+ * District of Columbia on the 2003 certificate; DOB_TT 9999 or blank is
22
+ * dropped, leaving 3,563,505 of 3,940,764 records) are counted by DOB_WK and
23
+ * the hour of DOB_TT. Each weekday's 24 counts are divided by that weekday's
24
+ * total and given as a per cent to one decimal place.
25
+ * Check: pooling Monday to Friday, and Saturday with Sunday, reproduces the
26
+ * brief's table at 8 a.m. (6.7 and 4.6) and noon (6.3 and 5.0).
27
+ */
28
+ export declare const dotHeatDemo: DotHeatData;
@@ -0,0 +1,15 @@
1
+ import type { DumbbellQueueProps } from "../../schema/dumbbell-queue.js";
2
+ /**
3
+ * Props are the `dumbbellQueueSchema` payload (src/schema/dumbbell-queue.ts);
4
+ * `data` is required and never defaults to demo data. Give `width` and
5
+ * `height` for a fixed-size chart that is complete on the first (server)
6
+ * render. Bad input is tolerated: a row with a value that is not a finite
7
+ * number is skipped, negatives extend the axis below zero, equal ends draw
8
+ * no rungs, duplicate labels each get a row (give them `id`s to tell them
9
+ * apart), and no data draws a quiet empty axis.
10
+ *
11
+ * F12 Before and after. Hollow dot = before, solid dot = after, and the gap
12
+ * between them holds one 2px rung per unit of change, so it can be counted.
13
+ * The biggest change is in ink; a row that changed the alert way (a rise by default) rungs in the alert colour.
14
+ */
15
+ export declare const DumbbellQueue: (props: DumbbellQueueProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
@@ -0,0 +1,18 @@
1
+ import type { HairlineAreaProps } from "../../schema/hairline-area.js";
2
+ /**
3
+ * F3 Daily area. The area under the line is an engraved stipple, one 1px dot
4
+ * per 4px cell, with a 2px stem every seventh day (every month over a year). The peak stands in ink,
5
+ * labelled, with its label kept inside the frame when it is the first day;
6
+ * hovering a day raises its stem.
7
+ *
8
+ * Props are the `hairlineAreaSchema` payload (src/schema/hairline-area.ts);
9
+ * `data` is required and never defaults to demo data; dates are ISO strings.
10
+ * Give `width` and `height` for a fixed-size chart that is complete on the
11
+ * first (server) render. Bad input is tolerated: readings are drawn in date
12
+ * order, spaced evenly; a reading whose value is null, NaN or infinite is a
13
+ * gap, with the area and line broken there; one reading draws a lone dot;
14
+ * negatives are drawn below the zero line; no readings (or only gaps) draw a
15
+ * quiet empty axis; `emphasis` is a reading's `id` or date, and one that names
16
+ * no live reading emphasises none.
17
+ */
18
+ export declare const HairlineArea: (props: HairlineAreaProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
@@ -0,0 +1,18 @@
1
+ import type { HairlineLineProps } from "../../schema/hairline-line.js";
2
+ /**
3
+ * F2 Daily line. One dot per reading on a grey line, placed by its date so a
4
+ * missing day leaves a gap. Weekend days are hollow rings on an evenly dotted
5
+ * stem to the floor; the peak (or, with `extreme="trough"`, the lowest) is in
6
+ * ink on a solid ink stem, with its value. The latest day carries its value
7
+ * quietly.
8
+ *
9
+ * Props are the `hairlineLineSchema` payload (src/schema/hairline-line.ts);
10
+ * `data` is required and never defaults to demo data; dates are ISO strings.
11
+ * Give `width` and `height` for a fixed-size chart that is complete on the
12
+ * first (server) render. Bad input is tolerated: readings are drawn in date
13
+ * order; a reading whose value is null, NaN or infinite is a gap, with no dot
14
+ * and a break in the line; one reading draws a lone dot; no readings (or only
15
+ * gaps) draw a quiet empty axis; `emphasis` is a reading's `id` or date, and
16
+ * one that names no live reading emphasises none.
17
+ */
18
+ export declare const HairlineLine: (props: HairlineLineProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
@@ -0,0 +1,18 @@
1
+ import type { TreemapGroup } from "./nested-treemap.data.js";
2
+ interface NestedTreemapProps {
3
+ data?: TreemapGroup[];
4
+ /** Formats a leaf's value, bare: the chart's name carries the unit. */
5
+ format?: (v: number) => string;
6
+ height?: number;
7
+ /** Leaf to draw in the hero colour, as "Group/Leaf" or a leaf name. Defaults to the largest leaf. */
8
+ highlight?: string;
9
+ }
10
+ /**
11
+ * F13 Treemap. Two levels: each parent is a title band with its share, its
12
+ * children tile the space under it with area = value. Each parent's tiles
13
+ * share one engraving (stipple, hatch or rules) on paper inside a 1px rule,
14
+ * so area carries the comparison and texture the family; the largest leaf is
15
+ * ink.
16
+ */
17
+ export declare const NestedTreemap: (props: NestedTreemapProps) => import("react").JSX.Element;
18
+ export {};
@@ -0,0 +1,30 @@
1
+ export interface TreemapLeaf {
2
+ name: string;
3
+ value: number;
4
+ }
5
+ export interface TreemapGroup {
6
+ children: TreemapLeaf[];
7
+ name: string;
8
+ }
9
+ /**
10
+ * F13 Milk by use. Where the United Kingdom's milk went in 2025: the milk
11
+ * dairies put into each product, in millions of litres, grouped by kind of
12
+ * product. Cheddar takes 3,372 of the 12,515 drawn, drinking milk 6,035.
13
+ *
14
+ * Source: Defra, "Milk utilisation by dairies in England and Wales", Milk
15
+ * availability, usage and production dataset (Milkutil_dataset_20261001.ods,
16
+ * sheet UK_Annual; Open Government Licence v3.0).
17
+ * https://www.gov.uk/government/statistics/milk-utilisation-by-dairies-in-england-and-wales
18
+ * https://assets.publishing.service.gov.uk/media/6abd090155bc01d752a7f14d/Milkutil_dataset_20261001.ods
19
+ * Fetched 2026-10-15.
20
+ *
21
+ * Transform: the last row of UK_Annual, which is 2025 (its year cell is stored
22
+ * as the date 2025-07-17); the twelve months of 2025 in UK_Monthly sum to the
23
+ * same liquid milk and cheddar figures, to 0.1. Columns "Disposals of milk
24
+ * for ..." in million litres, rounded to whole numbers. Territorials are "other
25
+ * long life" plus "short life" territorial cheese. Butter is in million cream
26
+ * litres, as the file gives it. Left out: milk powders (suppressed in the file
27
+ * as [x]) and the file's catch-all "other products" (1,987 million litres).
28
+ * Scripts: reference/scripts/F13/gen.py.
29
+ */
30
+ export declare const nestedTreemapDemo: TreemapGroup[];
@@ -0,0 +1,21 @@
1
+ import type { NoteProps } from "../../schema/options.js";
2
+ import type { PairDatum } from "./paired-rungs.data.js";
3
+ interface PairedRungsProps extends NoteProps {
4
+ data?: PairDatum[];
5
+ /** Units per rung. */
6
+ unit?: number;
7
+ height?: number;
8
+ format?: (v: number) => string;
9
+ /** Period names for the tooltip, earlier first. */
10
+ periods?: [string, string];
11
+ /** Index of the category whose current ladder is drawn in the hero colour. */
12
+ highlight?: number;
13
+ }
14
+ /**
15
+ * F6 Getting to work. Per category, the earlier period is a quiet column of
16
+ * hatch on paper inside a 1px rule, and the current period a stack of grey
17
+ * 2px rungs (one per unit, every fifth darker). Only the leader's current
18
+ * stack is in ink; a two-swatch key names the periods.
19
+ */
20
+ export declare const PairedRungs: (props: PairedRungsProps) => import("react").JSX.Element;
21
+ export {};
@@ -0,0 +1,43 @@
1
+ /** One category measured in two periods. */
2
+ export interface PairDatum {
3
+ current: number;
4
+ label: string;
5
+ previous: number;
6
+ }
7
+ /**
8
+ * How people in England and Wales usually travel to work, as a percentage of
9
+ * residents in employment: Census Day 2011 (previous) against Census Day 2021
10
+ * (current).
11
+ *
12
+ * Source: Office for National Statistics, Census 2021 TS061 "Method used to
13
+ * travel to work" (2001 specification) and Census 2011 QS703EW "Method of
14
+ * Travel to Work (2001 specification)", both via Nomis (Open Government Licence).
15
+ * 2021: https://www.nomisweb.co.uk/api/v01/dataset/NM_2078_1.data.csv?geography=2092957703&c2021_ttwmeth_12=0...11&measures=20100
16
+ * 2011: https://www.nomisweb.co.uk/api/v01/dataset/NM_576_1.data.csv?geography=2092957703&cell=0...12&measures=20100
17
+ * Quality note: https://www.ons.gov.uk/employmentandlabourmarket/peopleinwork/employmentandemployeetypes/methodologies/traveltoworkqualityinformationforcensus2021
18
+ * Fetched 2026-10-15. Geography: England and Wales (K04000001).
19
+ *
20
+ * Why QS703EW and not QS701EW: both TS061 and QS703EW use the 2001
21
+ * specification, in which someone whose workplace is their home counts as
22
+ * "Work mainly at or from home" even if they also drive (for example to visit
23
+ * clients). QS701EW (2011 specification) ranks the travel method first and
24
+ * gives about 1.42 million home workers in 2011 against 2.72 million in
25
+ * QS703EW, so it is not comparable with TS061. ONS publishes the same headline
26
+ * for the compatible pair: 10.3% in 2011 and 31.2% in 2021.
27
+ *
28
+ * Base population: 2021 is residents aged 16 and over in employment the week
29
+ * before the census (27,773,666). 2011 is residents aged 16 to 74 (41,126,540)
30
+ * less the "Not in employment" cell (14,600,204), which leaves 26,526,336 in
31
+ * employment. The age ceiling differs slightly, so shares are shown, not counts.
32
+ *
33
+ * Transform: per category, 100 * cell / employed base for each census, rounded
34
+ * to one decimal place. Categories kept: "Driving a car or van" (Driving),
35
+ * "Work mainly at or from home" (At home), "On foot", "Bus, minibus or coach"
36
+ * (Bus) and "Train"; the rest are dropped, so the five do not sum to 100.
37
+ *
38
+ * Caveat: Census Day 2021 (21 March 2021) fell in a national lockdown with
39
+ * about 5.6 million people on furlough, so the home-working jump is partly a
40
+ * snapshot of the pandemic. ONS: "census travel to work data are a mixture of
41
+ * pandemic and pre-pandemic travel behaviours".
42
+ */
43
+ export declare const pairedRungsDemo: PairDatum[];
@@ -0,0 +1,14 @@
1
+ import type { PlumbScatterProps } from "../../schema/plumb-scatter.js";
2
+ /**
3
+ * F8 Stem scatter. Up to twenty points, each on a stem to the floor so x can
4
+ * be read where the stem lands: dotted at pitch 3, solid ink for the hero.
5
+ * The highest point is the hero; the highest and lowest are named.
6
+ *
7
+ * Props are the `plumbScatterSchema` payload (src/schema/plumb-scatter.ts);
8
+ * `data` is required and never defaults to demo data. Give `width` and
9
+ * `height` for a fixed-size chart that is complete on the first (server)
10
+ * render. Bad input is tolerated: a point with a coordinate that is not a
11
+ * finite number is skipped, coincident points each get a dot, negatives are
12
+ * drawn on the axes, and no data draws a quiet empty axis.
13
+ */
14
+ export declare const PlumbScatter: (props: PlumbScatterProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
@@ -0,0 +1,16 @@
1
+ import type { RungBarsProps } from "../../schema/rung-bars.js";
2
+ /**
3
+ * F1 Counted bars. Each bar is a carved column of solid 2px rungs at one
4
+ * pitch, one per unit, every tenth long and dark like the marks on a rule,
5
+ * casting an engraved hatch shadow behind and to its right. The largest bar
6
+ * is in ink and its shadow is crosshatched.
7
+ *
8
+ * Props are the `rungBarsSchema` payload (src/schema/rung-bars.ts); `data` is
9
+ * required and never defaults to demo data. Give `width` and `height` for a
10
+ * fixed-size chart that is complete on the first (server) render. Bad input
11
+ * is tolerated: a datum whose value is not a finite number is skipped,
12
+ * a negative value stands as an empty column with its figure, duplicate
13
+ * labels each get a bar (give them `id`s to tell them apart), and no data
14
+ * draws a quiet empty axis.
15
+ */
16
+ export declare const RungBars: (props: RungBarsProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;