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