@adminiumjs/charts 0.1.0-rc.1
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 +661 -0
- package/dist/components/AnomalyChart.d.ts +30 -0
- package/dist/components/AnomalyChart.d.ts.map +1 -0
- package/dist/components/AnomalyChart.js +32 -0
- package/dist/components/AnomalyChart.js.map +1 -0
- package/dist/components/BarChart.d.ts +33 -0
- package/dist/components/BarChart.d.ts.map +1 -0
- package/dist/components/BarChart.js +40 -0
- package/dist/components/BarChart.js.map +1 -0
- package/dist/components/BoxPlotChart.d.ts +23 -0
- package/dist/components/BoxPlotChart.d.ts.map +1 -0
- package/dist/components/BoxPlotChart.js +24 -0
- package/dist/components/BoxPlotChart.js.map +1 -0
- package/dist/components/BulletChart.d.ts +27 -0
- package/dist/components/BulletChart.d.ts.map +1 -0
- package/dist/components/BulletChart.js +24 -0
- package/dist/components/BulletChart.js.map +1 -0
- package/dist/components/BumpChart.d.ts +27 -0
- package/dist/components/BumpChart.d.ts.map +1 -0
- package/dist/components/BumpChart.js +17 -0
- package/dist/components/BumpChart.js.map +1 -0
- package/dist/components/CandlestickChart.d.ts +26 -0
- package/dist/components/CandlestickChart.d.ts.map +1 -0
- package/dist/components/CandlestickChart.js +22 -0
- package/dist/components/CandlestickChart.js.map +1 -0
- package/dist/components/ChartSurface.d.ts +52 -0
- package/dist/components/ChartSurface.d.ts.map +1 -0
- package/dist/components/ChartSurface.js +15 -0
- package/dist/components/ChartSurface.js.map +1 -0
- package/dist/components/Chord.d.ts +30 -0
- package/dist/components/Chord.d.ts.map +1 -0
- package/dist/components/Chord.js +14 -0
- package/dist/components/Chord.js.map +1 -0
- package/dist/components/ChoroplethGridChart.d.ts +32 -0
- package/dist/components/ChoroplethGridChart.d.ts.map +1 -0
- package/dist/components/ChoroplethGridChart.js +15 -0
- package/dist/components/ChoroplethGridChart.js.map +1 -0
- package/dist/components/CohortMatrixChart.d.ts +30 -0
- package/dist/components/CohortMatrixChart.d.ts.map +1 -0
- package/dist/components/CohortMatrixChart.js +13 -0
- package/dist/components/CohortMatrixChart.js.map +1 -0
- package/dist/components/CorrelationMatrixChart.d.ts +24 -0
- package/dist/components/CorrelationMatrixChart.d.ts.map +1 -0
- package/dist/components/CorrelationMatrixChart.js +29 -0
- package/dist/components/CorrelationMatrixChart.js.map +1 -0
- package/dist/components/DonutChart.d.ts +31 -0
- package/dist/components/DonutChart.d.ts.map +1 -0
- package/dist/components/DonutChart.js +19 -0
- package/dist/components/DonutChart.js.map +1 -0
- package/dist/components/ForecastChart.d.ts +37 -0
- package/dist/components/ForecastChart.d.ts.map +1 -0
- package/dist/components/ForecastChart.js +39 -0
- package/dist/components/ForecastChart.js.map +1 -0
- package/dist/components/Funnel.d.ts +27 -0
- package/dist/components/Funnel.d.ts.map +1 -0
- package/dist/components/Funnel.js +25 -0
- package/dist/components/Funnel.js.map +1 -0
- package/dist/components/HeatCalendarChart.d.ts +39 -0
- package/dist/components/HeatCalendarChart.d.ts.map +1 -0
- package/dist/components/HeatCalendarChart.js +37 -0
- package/dist/components/HeatCalendarChart.js.map +1 -0
- package/dist/components/HeatMonthChart.d.ts +30 -0
- package/dist/components/HeatMonthChart.d.ts.map +1 -0
- package/dist/components/HeatMonthChart.js +14 -0
- package/dist/components/HeatMonthChart.js.map +1 -0
- package/dist/components/HexbinChart.d.ts +22 -0
- package/dist/components/HexbinChart.d.ts.map +1 -0
- package/dist/components/HexbinChart.js +31 -0
- package/dist/components/HexbinChart.js.map +1 -0
- package/dist/components/LineAreaChart.d.ts +26 -0
- package/dist/components/LineAreaChart.d.ts.map +1 -0
- package/dist/components/LineAreaChart.js +62 -0
- package/dist/components/LineAreaChart.js.map +1 -0
- package/dist/components/MarimekkoChart.d.ts +24 -0
- package/dist/components/MarimekkoChart.d.ts.map +1 -0
- package/dist/components/MarimekkoChart.js +20 -0
- package/dist/components/MarimekkoChart.js.map +1 -0
- package/dist/components/MultiLineChart.d.ts +36 -0
- package/dist/components/MultiLineChart.d.ts.map +1 -0
- package/dist/components/MultiLineChart.js +62 -0
- package/dist/components/MultiLineChart.js.map +1 -0
- package/dist/components/ParallelCoordinatesChart.d.ts +22 -0
- package/dist/components/ParallelCoordinatesChart.d.ts.map +1 -0
- package/dist/components/ParallelCoordinatesChart.js +16 -0
- package/dist/components/ParallelCoordinatesChart.js.map +1 -0
- package/dist/components/ParetoChart.d.ts +26 -0
- package/dist/components/ParetoChart.d.ts.map +1 -0
- package/dist/components/ParetoChart.js +26 -0
- package/dist/components/ParetoChart.js.map +1 -0
- package/dist/components/Radar.d.ts +27 -0
- package/dist/components/Radar.d.ts.map +1 -0
- package/dist/components/Radar.js +19 -0
- package/dist/components/Radar.js.map +1 -0
- package/dist/components/RadialBar.d.ts +25 -0
- package/dist/components/RadialBar.d.ts.map +1 -0
- package/dist/components/RadialBar.js +12 -0
- package/dist/components/RadialBar.js.map +1 -0
- package/dist/components/RankingBars.d.ts +27 -0
- package/dist/components/RankingBars.d.ts.map +1 -0
- package/dist/components/RankingBars.js +25 -0
- package/dist/components/RankingBars.js.map +1 -0
- package/dist/components/RidgelineChart.d.ts +23 -0
- package/dist/components/RidgelineChart.d.ts.map +1 -0
- package/dist/components/RidgelineChart.js +20 -0
- package/dist/components/RidgelineChart.js.map +1 -0
- package/dist/components/SankeyChart.d.ts +29 -0
- package/dist/components/SankeyChart.d.ts.map +1 -0
- package/dist/components/SankeyChart.js +21 -0
- package/dist/components/SankeyChart.js.map +1 -0
- package/dist/components/ScatterBubbleChart.d.ts +26 -0
- package/dist/components/ScatterBubbleChart.d.ts.map +1 -0
- package/dist/components/ScatterBubbleChart.js +31 -0
- package/dist/components/ScatterBubbleChart.js.map +1 -0
- package/dist/components/SlopeChart.d.ts +28 -0
- package/dist/components/SlopeChart.d.ts.map +1 -0
- package/dist/components/SlopeChart.js +18 -0
- package/dist/components/SlopeChart.js.map +1 -0
- package/dist/components/Sparkline.d.ts +15 -0
- package/dist/components/Sparkline.d.ts.map +1 -0
- package/dist/components/Sparkline.js +27 -0
- package/dist/components/Sparkline.js.map +1 -0
- package/dist/components/StackedBar100.d.ts +30 -0
- package/dist/components/StackedBar100.d.ts.map +1 -0
- package/dist/components/StackedBar100.js +21 -0
- package/dist/components/StackedBar100.js.map +1 -0
- package/dist/components/StreamChart.d.ts +23 -0
- package/dist/components/StreamChart.d.ts.map +1 -0
- package/dist/components/StreamChart.js +56 -0
- package/dist/components/StreamChart.js.map +1 -0
- package/dist/components/Sunburst.d.ts +24 -0
- package/dist/components/Sunburst.d.ts.map +1 -0
- package/dist/components/Sunburst.js +13 -0
- package/dist/components/Sunburst.js.map +1 -0
- package/dist/components/TimelineLanesChart.d.ts +25 -0
- package/dist/components/TimelineLanesChart.d.ts.map +1 -0
- package/dist/components/TimelineLanesChart.js +41 -0
- package/dist/components/TimelineLanesChart.js.map +1 -0
- package/dist/components/Treemap.d.ts +28 -0
- package/dist/components/Treemap.d.ts.map +1 -0
- package/dist/components/Treemap.js +22 -0
- package/dist/components/Treemap.js.map +1 -0
- package/dist/components/ViolinChart.d.ts +22 -0
- package/dist/components/ViolinChart.d.ts.map +1 -0
- package/dist/components/ViolinChart.js +21 -0
- package/dist/components/ViolinChart.js.map +1 -0
- package/dist/components/WaterfallChart.d.ts +23 -0
- package/dist/components/WaterfallChart.d.ts.map +1 -0
- package/dist/components/WaterfallChart.js +29 -0
- package/dist/components/WaterfallChart.js.map +1 -0
- package/dist/components/WordCloud.d.ts +24 -0
- package/dist/components/WordCloud.d.ts.map +1 -0
- package/dist/components/WordCloud.js +22 -0
- package/dist/components/WordCloud.js.map +1 -0
- package/dist/demo/barsRanking.d.ts +26 -0
- package/dist/demo/barsRanking.d.ts.map +1 -0
- package/dist/demo/barsRanking.js +80 -0
- package/dist/demo/barsRanking.js.map +1 -0
- package/dist/demo/generators.d.ts +44 -0
- package/dist/demo/generators.d.ts.map +1 -0
- package/dist/demo/generators.js +72 -0
- package/dist/demo/generators.js.map +1 -0
- package/dist/demo/mulberry32.d.ts +10 -0
- package/dist/demo/mulberry32.d.ts.map +1 -0
- package/dist/demo/mulberry32.js +26 -0
- package/dist/demo/mulberry32.js.map +1 -0
- package/dist/geometry/anomaly.d.ts +22 -0
- package/dist/geometry/anomaly.d.ts.map +1 -0
- package/dist/geometry/anomaly.js +52 -0
- package/dist/geometry/anomaly.js.map +1 -0
- package/dist/geometry/bars.d.ts +46 -0
- package/dist/geometry/bars.d.ts.map +1 -0
- package/dist/geometry/bars.js +68 -0
- package/dist/geometry/bars.js.map +1 -0
- package/dist/geometry/bullet.d.ts +53 -0
- package/dist/geometry/bullet.d.ts.map +1 -0
- package/dist/geometry/bullet.js +67 -0
- package/dist/geometry/bullet.js.map +1 -0
- package/dist/geometry/bump.d.ts +42 -0
- package/dist/geometry/bump.d.ts.map +1 -0
- package/dist/geometry/bump.js +29 -0
- package/dist/geometry/bump.js.map +1 -0
- package/dist/geometry/candles.d.ts +39 -0
- package/dist/geometry/candles.d.ts.map +1 -0
- package/dist/geometry/candles.js +42 -0
- package/dist/geometry/candles.js.map +1 -0
- package/dist/geometry/chord.d.ts +53 -0
- package/dist/geometry/chord.d.ts.map +1 -0
- package/dist/geometry/chord.js +111 -0
- package/dist/geometry/chord.js.map +1 -0
- package/dist/geometry/choropleth.d.ts +58 -0
- package/dist/geometry/choropleth.d.ts.map +1 -0
- package/dist/geometry/choropleth.js +101 -0
- package/dist/geometry/choropleth.js.map +1 -0
- package/dist/geometry/cohort.d.ts +54 -0
- package/dist/geometry/cohort.d.ts.map +1 -0
- package/dist/geometry/cohort.js +70 -0
- package/dist/geometry/cohort.js.map +1 -0
- package/dist/geometry/correlation.d.ts +138 -0
- package/dist/geometry/correlation.d.ts.map +1 -0
- package/dist/geometry/correlation.js +161 -0
- package/dist/geometry/correlation.js.map +1 -0
- package/dist/geometry/distribution.d.ts +115 -0
- package/dist/geometry/distribution.d.ts.map +1 -0
- package/dist/geometry/distribution.js +131 -0
- package/dist/geometry/distribution.js.map +1 -0
- package/dist/geometry/donut.d.ts +37 -0
- package/dist/geometry/donut.d.ts.map +1 -0
- package/dist/geometry/donut.js +46 -0
- package/dist/geometry/donut.js.map +1 -0
- package/dist/geometry/forecast.d.ts +30 -0
- package/dist/geometry/forecast.d.ts.map +1 -0
- package/dist/geometry/forecast.js +75 -0
- package/dist/geometry/forecast.js.map +1 -0
- package/dist/geometry/funnel.d.ts +37 -0
- package/dist/geometry/funnel.d.ts.map +1 -0
- package/dist/geometry/funnel.js +42 -0
- package/dist/geometry/funnel.js.map +1 -0
- package/dist/geometry/heat.d.ts +34 -0
- package/dist/geometry/heat.d.ts.map +1 -0
- package/dist/geometry/heat.js +50 -0
- package/dist/geometry/heat.js.map +1 -0
- package/dist/geometry/heatCalendar.d.ts +43 -0
- package/dist/geometry/heatCalendar.d.ts.map +1 -0
- package/dist/geometry/heatCalendar.js +82 -0
- package/dist/geometry/heatCalendar.js.map +1 -0
- package/dist/geometry/heatMonth.d.ts +47 -0
- package/dist/geometry/heatMonth.d.ts.map +1 -0
- package/dist/geometry/heatMonth.js +72 -0
- package/dist/geometry/heatMonth.js.map +1 -0
- package/dist/geometry/lineArea.d.ts +17 -0
- package/dist/geometry/lineArea.d.ts.map +1 -0
- package/dist/geometry/lineArea.js +37 -0
- package/dist/geometry/lineArea.js.map +1 -0
- package/dist/geometry/marimekko.d.ts +43 -0
- package/dist/geometry/marimekko.d.ts.map +1 -0
- package/dist/geometry/marimekko.js +45 -0
- package/dist/geometry/marimekko.js.map +1 -0
- package/dist/geometry/multiLine.d.ts +19 -0
- package/dist/geometry/multiLine.d.ts.map +1 -0
- package/dist/geometry/multiLine.js +25 -0
- package/dist/geometry/multiLine.js.map +1 -0
- package/dist/geometry/pareto.d.ts +44 -0
- package/dist/geometry/pareto.d.ts.map +1 -0
- package/dist/geometry/pareto.js +65 -0
- package/dist/geometry/pareto.js.map +1 -0
- package/dist/geometry/radar.d.ts +60 -0
- package/dist/geometry/radar.d.ts.map +1 -0
- package/dist/geometry/radar.js +67 -0
- package/dist/geometry/radar.js.map +1 -0
- package/dist/geometry/radialBar.d.ts +31 -0
- package/dist/geometry/radialBar.d.ts.map +1 -0
- package/dist/geometry/radialBar.js +53 -0
- package/dist/geometry/radialBar.js.map +1 -0
- package/dist/geometry/ranking.d.ts +48 -0
- package/dist/geometry/ranking.d.ts.map +1 -0
- package/dist/geometry/ranking.js +42 -0
- package/dist/geometry/ranking.js.map +1 -0
- package/dist/geometry/sankey.d.ts +60 -0
- package/dist/geometry/sankey.d.ts.map +1 -0
- package/dist/geometry/sankey.js +130 -0
- package/dist/geometry/sankey.js.map +1 -0
- package/dist/geometry/scales.d.ts +14 -0
- package/dist/geometry/scales.d.ts.map +1 -0
- package/dist/geometry/scales.js +33 -0
- package/dist/geometry/scales.js.map +1 -0
- package/dist/geometry/slope.d.ts +34 -0
- package/dist/geometry/slope.d.ts.map +1 -0
- package/dist/geometry/slope.js +44 -0
- package/dist/geometry/slope.js.map +1 -0
- package/dist/geometry/sparkline.d.ts +20 -0
- package/dist/geometry/sparkline.d.ts.map +1 -0
- package/dist/geometry/sparkline.js +43 -0
- package/dist/geometry/sparkline.js.map +1 -0
- package/dist/geometry/stacked100.d.ts +33 -0
- package/dist/geometry/stacked100.d.ts.map +1 -0
- package/dist/geometry/stacked100.js +34 -0
- package/dist/geometry/stacked100.js.map +1 -0
- package/dist/geometry/streamStack.d.ts +32 -0
- package/dist/geometry/streamStack.d.ts.map +1 -0
- package/dist/geometry/streamStack.js +56 -0
- package/dist/geometry/streamStack.js.map +1 -0
- package/dist/geometry/sunburst.d.ts +37 -0
- package/dist/geometry/sunburst.d.ts.map +1 -0
- package/dist/geometry/sunburst.js +84 -0
- package/dist/geometry/sunburst.js.map +1 -0
- package/dist/geometry/timelineLanes.d.ts +46 -0
- package/dist/geometry/timelineLanes.d.ts.map +1 -0
- package/dist/geometry/timelineLanes.js +52 -0
- package/dist/geometry/timelineLanes.js.map +1 -0
- package/dist/geometry/treemap.d.ts +42 -0
- package/dist/geometry/treemap.d.ts.map +1 -0
- package/dist/geometry/treemap.js +134 -0
- package/dist/geometry/treemap.js.map +1 -0
- package/dist/geometry/waterfall.d.ts +40 -0
- package/dist/geometry/waterfall.d.ts.map +1 -0
- package/dist/geometry/waterfall.js +80 -0
- package/dist/geometry/waterfall.js.map +1 -0
- package/dist/geometry/wordcloud.d.ts +46 -0
- package/dist/geometry/wordcloud.d.ts.map +1 -0
- package/dist/geometry/wordcloud.js +79 -0
- package/dist/geometry/wordcloud.js.map +1 -0
- package/dist/hooks/useChartSize.d.ts +6 -0
- package/dist/hooks/useChartSize.d.ts.map +1 -0
- package/dist/hooks/useChartSize.js +32 -0
- package/dist/hooks/useChartSize.js.map +1 -0
- package/dist/hooks/useMountAnimation.d.ts +4 -0
- package/dist/hooks/useMountAnimation.d.ts.map +1 -0
- package/dist/hooks/useMountAnimation.js +40 -0
- package/dist/hooks/useMountAnimation.js.map +1 -0
- package/dist/hooks/useRtl.d.ts +7 -0
- package/dist/hooks/useRtl.d.ts.map +1 -0
- package/dist/hooks/useRtl.js +18 -0
- package/dist/hooks/useRtl.js.map +1 -0
- package/dist/index.d.ts +110 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/format.d.ts +5 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +24 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/stats.d.ts +23 -0
- package/dist/utils/stats.d.ts.map +1 -0
- package/dist/utils/stats.js +82 -0
- package/dist/utils/stats.js.map +1 -0
- package/package.json +36 -0
- package/src/styles.css +205 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-package stats helpers (~60 LOC) so @adminium/charts never pulls d3-array
|
|
3
|
+
* (workplan/04-widget-registry.md §7 — only d3-scale and d3-shape are allowed
|
|
4
|
+
* as math dependencies).
|
|
5
|
+
*/
|
|
6
|
+
/** Min/max of a numeric iterable, ignoring NaN. Returns null when empty. */
|
|
7
|
+
export function extent(values) {
|
|
8
|
+
let min = Infinity;
|
|
9
|
+
let max = -Infinity;
|
|
10
|
+
for (const v of values) {
|
|
11
|
+
if (Number.isNaN(v))
|
|
12
|
+
continue;
|
|
13
|
+
if (v < min)
|
|
14
|
+
min = v;
|
|
15
|
+
if (v > max)
|
|
16
|
+
max = v;
|
|
17
|
+
}
|
|
18
|
+
return min <= max ? [min, max] : null;
|
|
19
|
+
}
|
|
20
|
+
/** d3-style tick step: powers of 10 refined by 1/2/5. Always > 0. */
|
|
21
|
+
export function tickStep(start, stop, count) {
|
|
22
|
+
const span = Math.abs(stop - start);
|
|
23
|
+
if (span === 0 || count <= 0)
|
|
24
|
+
return 1;
|
|
25
|
+
const rawStep = span / count;
|
|
26
|
+
const power = Math.floor(Math.log10(rawStep));
|
|
27
|
+
const error = rawStep / 10 ** power;
|
|
28
|
+
const factor = error >= Math.sqrt(50) ? 10 : error >= Math.sqrt(10) ? 5 : error >= Math.SQRT2 ? 2 : 1;
|
|
29
|
+
return factor * 10 ** power;
|
|
30
|
+
}
|
|
31
|
+
/** Round, human-friendly tick values covering [min, max] (endpoints included). */
|
|
32
|
+
export function niceTicks(min, max, count = 4) {
|
|
33
|
+
if (min === max)
|
|
34
|
+
return [min];
|
|
35
|
+
const step = tickStep(min, max, count);
|
|
36
|
+
const start = Math.floor(min / step) * step;
|
|
37
|
+
const stop = Math.ceil(max / step) * step;
|
|
38
|
+
const ticks = [];
|
|
39
|
+
// Guard float drift with a half-step epsilon.
|
|
40
|
+
for (let v = start; v <= stop + step / 2; v += step) {
|
|
41
|
+
ticks.push(Math.abs(v) < step * 1e-10 ? 0 : Number(v.toPrecision(12)));
|
|
42
|
+
}
|
|
43
|
+
return ticks;
|
|
44
|
+
}
|
|
45
|
+
/** Linear-interpolated quantile over an ASCENDING-sorted array; p in [0, 1]. */
|
|
46
|
+
export function quantileSorted(sorted, p) {
|
|
47
|
+
const n = sorted.length;
|
|
48
|
+
if (n === 0)
|
|
49
|
+
return null;
|
|
50
|
+
if (p <= 0 || n === 1)
|
|
51
|
+
return sorted[0] ?? null;
|
|
52
|
+
if (p >= 1)
|
|
53
|
+
return sorted[n - 1] ?? null;
|
|
54
|
+
const i = (n - 1) * p;
|
|
55
|
+
const lo = Math.floor(i);
|
|
56
|
+
const a = sorted[lo] ?? 0;
|
|
57
|
+
const b = sorted[lo + 1] ?? a;
|
|
58
|
+
return a + (b - a) * (i - lo);
|
|
59
|
+
}
|
|
60
|
+
/** Equal-width histogram bins over the data extent. */
|
|
61
|
+
export function bins(values, binCount = 10) {
|
|
62
|
+
const domain = extent(values);
|
|
63
|
+
if (domain === null || binCount <= 0)
|
|
64
|
+
return [];
|
|
65
|
+
const [min, max] = domain;
|
|
66
|
+
const width = (max - min) / binCount || 1;
|
|
67
|
+
const out = Array.from({ length: binCount }, (_, i) => ({
|
|
68
|
+
x0: min + i * width,
|
|
69
|
+
x1: min + (i + 1) * width,
|
|
70
|
+
count: 0,
|
|
71
|
+
}));
|
|
72
|
+
for (const v of values) {
|
|
73
|
+
if (Number.isNaN(v))
|
|
74
|
+
continue;
|
|
75
|
+
const i = Math.min(binCount - 1, Math.max(0, Math.floor((v - min) / width)));
|
|
76
|
+
const bin = out[i];
|
|
77
|
+
if (bin)
|
|
78
|
+
bin.count += 1;
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/utils/stats.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@adminiumjs/charts",
|
|
3
|
+
"version": "0.1.0-rc.1",
|
|
4
|
+
"license": "AGPL-3.0-only",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/MoSofi/Adminium.git",
|
|
8
|
+
"directory": "packages/charts"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://adminium.dev",
|
|
11
|
+
"bugs": "https://github.com/MoSofi/Adminium/issues",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"description": "SVG chart primitives (d3-scale/d3-shape math only)",
|
|
14
|
+
"sideEffects": [
|
|
15
|
+
"**/*.css"
|
|
16
|
+
],
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"default": "./dist/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./styles.css": "./src/styles.css"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@adminium/tokens": "npm:@adminiumjs/tokens@0.1.0-rc.1",
|
|
28
|
+
"d3-scale": "^4.0.2",
|
|
29
|
+
"d3-shape": "^3.2.0",
|
|
30
|
+
"react": "^19.1.0"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"src/styles.css"
|
|
35
|
+
]
|
|
36
|
+
}
|
package/src/styles.css
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/* @adminium/charts — structural + motion classes.
|
|
2
|
+
Colors and @keyframes come from @adminium/tokens (viz.css / motion.css);
|
|
3
|
+
this file only wires them to chart elements. Logical properties only.
|
|
4
|
+
Custom properties set from JSX (the sanctioned '--*' style escape hatch):
|
|
5
|
+
--adm-grow 0|1 bar entrance scale (pairs with tokens' nb-grow policy)
|
|
6
|
+
--adm-fade 0|1 path/arc entrance opacity
|
|
7
|
+
--adm-stagger <time> per-element entrance delay
|
|
8
|
+
--adm-dot <color> legend swatch color
|
|
9
|
+
Reduced motion: the hooks render final state immediately AND tokens'
|
|
10
|
+
motion.css zeroes animation/transition durations globally. */
|
|
11
|
+
|
|
12
|
+
.adm-chart {
|
|
13
|
+
position: relative;
|
|
14
|
+
display: block;
|
|
15
|
+
inline-size: 100%;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.adm-chart-svg {
|
|
19
|
+
display: block;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Visually-hidden slot for the accessible table fallback. */
|
|
23
|
+
.adm-chart-sr {
|
|
24
|
+
position: absolute;
|
|
25
|
+
inline-size: 1px;
|
|
26
|
+
block-size: 1px;
|
|
27
|
+
padding: 0;
|
|
28
|
+
margin: -1px;
|
|
29
|
+
overflow: hidden;
|
|
30
|
+
clip-path: inset(50%);
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
border: 0;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Entrance: bars grow from the baseline (nb-grow-style scale transition). */
|
|
36
|
+
.adm-chart-grow {
|
|
37
|
+
transform: scale(1, var(--adm-grow, 1));
|
|
38
|
+
transform-box: fill-box;
|
|
39
|
+
transform-origin: 50% 100%;
|
|
40
|
+
transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
|
|
41
|
+
transition-delay: var(--adm-stagger, 0s);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Entrance: paths, arcs and markers fade in. */
|
|
45
|
+
.adm-chart-fade {
|
|
46
|
+
opacity: var(--adm-fade, 1);
|
|
47
|
+
transition: opacity 0.6s ease;
|
|
48
|
+
transition-delay: var(--adm-stagger, 0s);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* SVG text styling (SVG presentation attrs can't carry var() font stacks). */
|
|
52
|
+
.adm-chart-axis-label {
|
|
53
|
+
font-family: var(--font-sans, system-ui, sans-serif);
|
|
54
|
+
font-size: 10px;
|
|
55
|
+
font-weight: 600;
|
|
56
|
+
fill: var(--fg-subtle);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.adm-chart-num {
|
|
60
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
61
|
+
font-variant-numeric: tabular-nums;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.adm-chart-gridline {
|
|
65
|
+
stroke: var(--border);
|
|
66
|
+
stroke-width: 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.adm-chart-tooltip-bg {
|
|
70
|
+
fill: var(--surface);
|
|
71
|
+
stroke: var(--border-strong);
|
|
72
|
+
stroke-width: 1;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.adm-chart-tooltip-label {
|
|
76
|
+
font-family: var(--font-sans, system-ui, sans-serif);
|
|
77
|
+
font-size: 10px;
|
|
78
|
+
font-weight: 600;
|
|
79
|
+
fill: var(--fg-muted);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.adm-chart-tooltip-value {
|
|
83
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
84
|
+
font-variant-numeric: tabular-nums;
|
|
85
|
+
font-size: 11px;
|
|
86
|
+
font-weight: 700;
|
|
87
|
+
fill: var(--fg);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Donut: ring + legend side by side; mirrors under dir="rtl" automatically. */
|
|
91
|
+
.adm-donut {
|
|
92
|
+
display: flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
gap: 20px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.adm-donut-center-value {
|
|
98
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
99
|
+
font-variant-numeric: tabular-nums;
|
|
100
|
+
font-size: 21px;
|
|
101
|
+
font-weight: 700;
|
|
102
|
+
letter-spacing: -0.02em;
|
|
103
|
+
fill: var(--fg);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.adm-donut-center-label {
|
|
107
|
+
font-family: var(--font-sans, system-ui, sans-serif);
|
|
108
|
+
font-size: 10.5px;
|
|
109
|
+
font-weight: 600;
|
|
110
|
+
fill: var(--fg-subtle);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.adm-donut-legend {
|
|
114
|
+
display: flex;
|
|
115
|
+
flex-direction: column;
|
|
116
|
+
gap: 8px;
|
|
117
|
+
min-inline-size: 8rem;
|
|
118
|
+
margin: 0;
|
|
119
|
+
padding: 0;
|
|
120
|
+
list-style: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.adm-donut-legend-row {
|
|
124
|
+
display: flex;
|
|
125
|
+
align-items: center;
|
|
126
|
+
gap: 8px;
|
|
127
|
+
font-family: var(--font-sans, system-ui, sans-serif);
|
|
128
|
+
font-size: 12.5px;
|
|
129
|
+
font-weight: 600;
|
|
130
|
+
color: var(--fg-muted);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.adm-donut-legend-dot {
|
|
134
|
+
flex: none;
|
|
135
|
+
inline-size: 8px;
|
|
136
|
+
block-size: 8px;
|
|
137
|
+
border-radius: 999px;
|
|
138
|
+
background: var(--adm-dot, var(--viz-1));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.adm-donut-legend-value {
|
|
142
|
+
margin-inline-start: auto;
|
|
143
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
144
|
+
font-variant-numeric: tabular-nums;
|
|
145
|
+
font-weight: 700;
|
|
146
|
+
color: var(--fg);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Sparkline: inline micro-chart for KPI cards, table cells, list rows. */
|
|
150
|
+
.adm-spark {
|
|
151
|
+
display: inline-block;
|
|
152
|
+
vertical-align: middle;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* --- Bars & ranking group (04-T09) ------------------------------------------
|
|
156
|
+
In-SVG sans label with NO fill so the fill presentation attribute controls
|
|
157
|
+
color (e.g. on-segment labels use var(--surface) for contrast); plus the
|
|
158
|
+
shared horizontal-bar legend. Reuses the sanctioned --adm-dot custom prop
|
|
159
|
+
and the --adm-legend-cols column count set from JSX. */
|
|
160
|
+
.adm-chart-label {
|
|
161
|
+
font-family: var(--font-sans, system-ui, sans-serif);
|
|
162
|
+
font-size: 10px;
|
|
163
|
+
font-weight: 600;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.adm-stacked {
|
|
167
|
+
display: block;
|
|
168
|
+
inline-size: 100%;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.adm-legend {
|
|
172
|
+
display: grid;
|
|
173
|
+
grid-template-columns: repeat(var(--adm-legend-cols, 2), minmax(0, 1fr));
|
|
174
|
+
gap: 6px 16px;
|
|
175
|
+
margin: 10px 0 0;
|
|
176
|
+
padding: 0;
|
|
177
|
+
list-style: none;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.adm-legend-row {
|
|
181
|
+
display: flex;
|
|
182
|
+
align-items: center;
|
|
183
|
+
gap: 8px;
|
|
184
|
+
min-inline-size: 0;
|
|
185
|
+
font-family: var(--font-sans, system-ui, sans-serif);
|
|
186
|
+
font-size: 12px;
|
|
187
|
+
font-weight: 600;
|
|
188
|
+
color: var(--fg-muted);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.adm-legend-dot {
|
|
192
|
+
flex: none;
|
|
193
|
+
inline-size: 8px;
|
|
194
|
+
block-size: 8px;
|
|
195
|
+
border-radius: 3px;
|
|
196
|
+
background: var(--adm-dot, var(--viz-1));
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.adm-legend-value {
|
|
200
|
+
margin-inline-start: auto;
|
|
201
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
202
|
+
font-variant-numeric: tabular-nums;
|
|
203
|
+
font-weight: 700;
|
|
204
|
+
color: var(--fg);
|
|
205
|
+
}
|