@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,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-radial-bar` primitive (research/widget-registry.md §2): concentric
|
|
3
|
+
* progress rings (≤4 categories), each a stroke sweep of its percent, with a
|
|
4
|
+
* legend of colored dots + mono percents. Rings never mirror in RTL (rotation
|
|
5
|
+
* is direction-neutral, §7.4) — only the legend flips via flex + logical CSS.
|
|
6
|
+
* Colors are tokens only; geometry is pure (04 §7.1).
|
|
7
|
+
*/
|
|
8
|
+
import type { ReactNode } from 'react';
|
|
9
|
+
import type { RadialBarInput } from '../geometry/radialBar.js';
|
|
10
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
11
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
12
|
+
export interface RadialBarChartProps {
|
|
13
|
+
data: readonly RadialBarInput[];
|
|
14
|
+
labels: ChartLabels;
|
|
15
|
+
/** Ring diameter in px (default 168). */
|
|
16
|
+
size?: number;
|
|
17
|
+
thickness?: number;
|
|
18
|
+
showLegend?: boolean;
|
|
19
|
+
format?: (value: number) => string;
|
|
20
|
+
dir?: ChartDir;
|
|
21
|
+
a11yFallback?: ReactNode;
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function RadialBar({ data, labels, size, thickness, showLegend, format, dir, a11yFallback, className, }: RadialBarChartProps): import("react").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=RadialBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadialBar.d.ts","sourceRoot":"","sources":["../../src/components/RadialBar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,cAAc,EAAE,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,MAAM,EACN,IAAU,EACV,SAAc,EACd,UAAiB,EACjB,MAAsB,EACtB,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,mBAAmB,+BA8CrB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { radialBarRings } from '../geometry/radialBar.js';
|
|
3
|
+
import { useChartDir } from '../hooks/useRtl.js';
|
|
4
|
+
import { useMountAnimation } from '../hooks/useMountAnimation.js';
|
|
5
|
+
const defaultFormat = (value) => `${Math.round(value)}%`;
|
|
6
|
+
export function RadialBar({ data, labels, size = 168, thickness = 12, showLegend = true, format = defaultFormat, dir, a11yFallback, className, }) {
|
|
7
|
+
const resolvedDir = useChartDir(dir);
|
|
8
|
+
const mounted = useMountAnimation();
|
|
9
|
+
const rings = radialBarRings(data, { size, thickness });
|
|
10
|
+
return (_jsxs("div", { className: className === undefined ? 'adm-donut' : `adm-donut ${className}`, ...(dir !== undefined ? { dir: resolvedDir } : {}), "data-export-node": "", children: [_jsxs("svg", { role: "img", "aria-label": labels.label, width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [labels.description !== undefined && _jsx("desc", { children: labels.description }), _jsx("g", { transform: `translate(${size / 2}, ${size / 2})`, children: rings.map((ring, i) => (_jsxs("g", { "data-ring": ring.label, children: [_jsx("path", { d: ring.trackPath, fill: "var(--border)", opacity: 0.4 }), ring.valuePath !== '' && (_jsx("path", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0', '--adm-stagger': `${i * 90}ms` }, d: ring.valuePath, fill: ring.colorVar, "data-value": "" }))] }, ring.label))) })] }), showLegend && (_jsx("ul", { className: "adm-donut-legend", children: rings.map((ring) => (_jsxs("li", { className: "adm-donut-legend-row", children: [_jsx("span", { className: "adm-donut-legend-dot", style: { '--adm-dot': ring.colorVar }, "aria-hidden": "true" }), _jsx("span", { children: ring.label }), _jsx("span", { className: "adm-donut-legend-value", children: format(ring.value) })] }, ring.label))) })), a11yFallback !== undefined && _jsx("div", { className: "adm-chart-sr", children: a11yFallback })] }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=RadialBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadialBar.js","sourceRoot":"","sources":["../../src/components/RadialBar.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAgBlE,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAEzE,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,MAAM,EACN,IAAI,GAAG,GAAG,EACV,SAAS,GAAG,EAAE,EACd,UAAU,GAAG,IAAI,EACjB,MAAM,GAAG,aAAa,EACtB,GAAG,EACH,YAAY,EACZ,SAAS,GACW;IACpB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAExD,OAAO,CACL,eACE,SAAS,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,SAAS,EAAE,KACvE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,sBAClC,EAAE,aAEnB,eAAK,IAAI,EAAC,KAAK,gBAAa,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,IAAI,EAAE,aAChG,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,yBAAO,MAAM,CAAC,WAAW,GAAQ,EACtE,YAAG,SAAS,EAAE,aAAa,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,YAChD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,0BAA+B,IAAI,CAAC,KAAK,aACvC,eAAM,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAC,eAAe,EAAC,OAAO,EAAE,GAAG,GAAI,EAC7D,IAAI,CAAC,SAAS,KAAK,EAAE,IAAI,CACxB,eACE,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAC5E,CAAC,EAAE,IAAI,CAAC,SAAS,EACjB,IAAI,EAAE,IAAI,CAAC,QAAQ,gBACR,EAAE,GACb,CACH,KAVK,IAAI,CAAC,KAAK,CAWd,CACL,CAAC,GACA,IACA,EAEL,UAAU,IAAI,CACb,aAAI,SAAS,EAAC,kBAAkB,YAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,cAAqB,SAAS,EAAC,sBAAsB,aACnD,eAAM,SAAS,EAAC,sBAAsB,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAc,MAAM,GAAG,EACnG,yBAAO,IAAI,CAAC,KAAK,GAAQ,EACzB,eAAM,SAAS,EAAC,wBAAwB,YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAQ,KAH7D,IAAI,CAAC,KAAK,CAId,CACN,CAAC,GACC,CACN,EAEA,YAAY,KAAK,SAAS,IAAI,cAAK,SAAS,EAAC,cAAc,YAAE,YAAY,GAAO,IAC7E,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-ranking-bars` primitive (research/widget-registry.md §2): label +
|
|
3
|
+
* proportional horizontal bar (leader at full accent, the rest dimmed) + mono
|
|
4
|
+
* value. Composed from ChartSurface + pure `layoutRanking` geometry. Token-only
|
|
5
|
+
* colors, RTL-mirrored value axis, mount fade with reduced-motion fallback.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
import type { RankingInput } from '../geometry/ranking.js';
|
|
9
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
10
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
11
|
+
export interface RankingBarsProps {
|
|
12
|
+
data: readonly RankingInput[];
|
|
13
|
+
labels: ChartLabels;
|
|
14
|
+
/** Top-N cap (annex `n`). */
|
|
15
|
+
max?: number;
|
|
16
|
+
height?: number;
|
|
17
|
+
/** Inline-start label gutter width, px (default 104). */
|
|
18
|
+
labelGutter?: number;
|
|
19
|
+
/** Inline-end value gutter width, px (default 52). */
|
|
20
|
+
valueGutter?: number;
|
|
21
|
+
formatValue?: (value: number) => string;
|
|
22
|
+
dir?: ChartDir;
|
|
23
|
+
a11yFallback?: ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function RankingBars({ data, labels, max, height, labelGutter, valueGutter, formatValue, dir, a11yFallback, className, }: RankingBarsProps): import("react").JSX.Element;
|
|
27
|
+
//# sourceMappingURL=RankingBars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RankingBars.d.ts","sourceRoot":"","sources":["../../src/components/RankingBars.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,MAAM,EACN,GAAG,EACH,MAAY,EACZ,WAAiB,EACjB,WAAgB,EAChB,WAA2B,EAC3B,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,gBAAgB,+BAkElB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { layoutRanking } from '../geometry/ranking.js';
|
|
3
|
+
import { formatCompact } from '../utils/format.js';
|
|
4
|
+
import { ChartSurface } from './ChartSurface.js';
|
|
5
|
+
export function RankingBars({ data, labels, max, height = 220, labelGutter = 104, valueGutter = 52, formatValue = formatCompact, dir, a11yFallback, className, }) {
|
|
6
|
+
return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 4, bottom: 4, left: 2, right: 2 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {
|
|
7
|
+
const trackWidth = Math.max(0, innerWidth - labelGutter - valueGutter);
|
|
8
|
+
if (data.length === 0 || trackWidth <= 0 || innerHeight <= 0)
|
|
9
|
+
return null;
|
|
10
|
+
const trackStart = rtl ? valueGutter : labelGutter;
|
|
11
|
+
const layout = layoutRanking(data, {
|
|
12
|
+
width: trackWidth,
|
|
13
|
+
height: innerHeight,
|
|
14
|
+
rtl,
|
|
15
|
+
...(max !== undefined ? { max } : {}),
|
|
16
|
+
});
|
|
17
|
+
const labelEdge = rtl ? innerWidth : 0;
|
|
18
|
+
const valueEdge = rtl ? 0 : innerWidth;
|
|
19
|
+
return (_jsx("g", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0' }, children: layout.bars.map((bar) => {
|
|
20
|
+
const midY = bar.rowY + layout.rowHeight / 2 + 3;
|
|
21
|
+
return (_jsxs("g", { "data-rank": bar.index, children: [_jsx("rect", { x: trackStart + bar.x, y: bar.y, width: bar.width, height: bar.barHeight, rx: 3, fill: bar.isLeader ? 'var(--accent)' : 'var(--viz-ramp-3)', "data-leader": bar.isLeader ? '' : undefined }), _jsx("text", { className: "adm-chart-axis-label", x: labelEdge, y: midY, textAnchor: rtl ? 'end' : 'start', children: bar.label }), _jsx("text", { className: "adm-chart-num", x: valueEdge, y: midY, textAnchor: rtl ? 'start' : 'end', fontSize: 11, fontWeight: 700, fill: "var(--fg)", children: formatValue(bar.value) })] }, bar.label));
|
|
22
|
+
}) }));
|
|
23
|
+
} }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=RankingBars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RankingBars.js","sourceRoot":"","sources":["../../src/components/RankingBars.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-ridgeline` primitive (research/widget-registry.md §2): overlapping
|
|
3
|
+
* filled density ridges with decreasing alpha, one ridge per group (front row
|
|
4
|
+
* first). The value axis runs across the plot width and mirrors in RTL; group
|
|
5
|
+
* labels sit in the inline-start gutter. Token-only colors; fade-in on mount.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
import type { RidgeGroupInput } from '../geometry/distribution.js';
|
|
9
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
10
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
11
|
+
export interface RidgelineChartProps {
|
|
12
|
+
groups: readonly RidgeGroupInput[];
|
|
13
|
+
labels: ChartLabels;
|
|
14
|
+
height?: number;
|
|
15
|
+
/** Peak height as a multiple of the row step (annex `overlap`). */
|
|
16
|
+
overlap?: number;
|
|
17
|
+
showLabels?: boolean;
|
|
18
|
+
dir?: ChartDir;
|
|
19
|
+
a11yFallback?: ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function RidgelineChart({ groups, labels, height, overlap, showLabels, dir, a11yFallback, className, }: RidgelineChartProps): import("react").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=RidgelineChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RidgelineChart.d.ts","sourceRoot":"","sources":["../../src/components/RidgelineChart.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,MAAM,EACN,MAAY,EACZ,OAAa,EACb,UAAiB,EACjB,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,mBAAmB,+BA0DrB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ridgelineLayout } from '../geometry/distribution.js';
|
|
3
|
+
import { ChartSurface } from './ChartSurface.js';
|
|
4
|
+
export function RidgelineChart({ groups, labels, height = 260, overlap = 1.5, showLabels = true, dir, a11yFallback, className, }) {
|
|
5
|
+
return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 10, bottom: 8, left: 8, right: 8 }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {
|
|
6
|
+
if (groups.length === 0 || innerWidth <= 0 || innerHeight <= 0)
|
|
7
|
+
return null;
|
|
8
|
+
const layout = ridgelineLayout(groups, {
|
|
9
|
+
width: innerWidth,
|
|
10
|
+
height: innerHeight,
|
|
11
|
+
rtl,
|
|
12
|
+
overlap,
|
|
13
|
+
labelGutter: showLabels ? 52 : 8,
|
|
14
|
+
});
|
|
15
|
+
// Render back-to-front so nearer ridges overlap farther ones.
|
|
16
|
+
const ordered = [...layout.rows].reverse();
|
|
17
|
+
return (_jsx("g", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0' }, children: ordered.map((row) => (_jsxs("g", { "data-ridge": row.label, children: [_jsx("path", { d: row.areaPath, fill: "var(--accent)", fillOpacity: row.alpha * 0.55, "data-ridge-area": "" }), _jsx("path", { d: row.linePath, fill: "none", stroke: "var(--viz-1)", strokeWidth: 1.5, strokeOpacity: row.alpha, "data-ridge-line": "" }), showLabels && (_jsx("text", { className: "adm-chart-axis-label", x: rtl ? innerWidth : 0, y: row.labelY, textAnchor: rtl ? 'end' : 'start', children: row.label }))] }, row.label))) }));
|
|
18
|
+
} }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=RidgelineChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RidgelineChart.js","sourceRoot":"","sources":["../../src/components/RidgelineChart.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAejD,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,EACN,MAAM,EACN,MAAM,GAAG,GAAG,EACZ,OAAO,GAAG,GAAG,EACb,UAAU,GAAG,IAAI,EACjB,GAAG,EACH,YAAY,EACZ,SAAS,GACW;IACpB,OAAO,CACL,KAAC,YAAY,IACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAClC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACpD,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,YAEjD,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC5E,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE;gBACrC,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,WAAW;gBACnB,GAAG;gBACH,OAAO;gBACP,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACjC,CAAC,CAAC;YAEH,8DAA8D;YAC9D,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAE3C,OAAO,CACL,YAAG,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,YACvE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,2BAA+B,GAAG,CAAC,KAAK,aACtC,eACE,CAAC,EAAE,GAAG,CAAC,QAAQ,EACf,IAAI,EAAC,eAAe,EACpB,WAAW,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,qBACb,EAAE,GAClB,EACF,eACE,CAAC,EAAE,GAAG,CAAC,QAAQ,EACf,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,GAAG,EAChB,aAAa,EAAE,GAAG,CAAC,KAAK,qBACR,EAAE,GAClB,EACD,UAAU,IAAI,CACb,eACE,SAAS,EAAC,sBAAsB,EAChC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EACvB,CAAC,EAAE,GAAG,CAAC,MAAM,EACb,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,YAEhC,GAAG,CAAC,KAAK,GACL,CACR,KAxBK,GAAG,CAAC,KAAK,CAyBb,CACL,CAAC,GACA,CACL,CAAC;QACJ,CAAC,GACY,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-sankey` primitive (research/widget-registry.md §2): SVG bezier ribbons
|
|
3
|
+
* between layered node rects, source→target flows weighted by volume, per-flow
|
|
4
|
+
* tooltips. Responsive via ChartSurface. Token-only colors, mount fade with
|
|
5
|
+
* reduced-motion fallback, `data-export-node` raster marker (inherited from
|
|
6
|
+
* ChartSurface). Renders as an LTR island — the flow never mirrors in RTL
|
|
7
|
+
* (04 §7.4).
|
|
8
|
+
*/
|
|
9
|
+
import type { ReactNode } from 'react';
|
|
10
|
+
import type { SankeyLinkInput, SankeyNodeInput } from '../geometry/sankey.js';
|
|
11
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
12
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
13
|
+
export interface SankeyChartProps {
|
|
14
|
+
nodes: readonly SankeyNodeInput[];
|
|
15
|
+
links: readonly SankeyLinkInput[];
|
|
16
|
+
labels: ChartLabels;
|
|
17
|
+
height?: number;
|
|
18
|
+
nodeWidth?: number;
|
|
19
|
+
nodePad?: number;
|
|
20
|
+
/** Show node labels beside each column (default true). */
|
|
21
|
+
showLabels?: boolean;
|
|
22
|
+
/** Format a link weight for its tooltip (default `${w}`). */
|
|
23
|
+
format?: (weight: number) => string;
|
|
24
|
+
dir?: ChartDir;
|
|
25
|
+
a11yFallback?: ReactNode;
|
|
26
|
+
className?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function SankeyChart({ nodes, links, labels, height, nodeWidth, nodePad, showLabels, format, dir, a11yFallback, className, }: SankeyChartProps): import("react").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=SankeyChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SankeyChart.d.ts","sourceRoot":"","sources":["../../src/components/SankeyChart.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAY,EACZ,SAAc,EACd,OAAY,EACZ,UAAiB,EACjB,MAAe,EACf,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,gBAAgB,+BAsElB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { sankeyLayout } from '../geometry/sankey.js';
|
|
3
|
+
import { ChartSurface } from './ChartSurface.js';
|
|
4
|
+
export function SankeyChart({ nodes, links, labels, height = 300, nodeWidth = 14, nodePad = 12, showLabels = true, format = String, dir, a11yFallback, className, }) {
|
|
5
|
+
return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 10, bottom: 10, left: 6, right: 6 }, children: ({ innerWidth, innerHeight, mounted }) => {
|
|
6
|
+
if (nodes.length === 0 || innerWidth <= 0 || innerHeight <= 0)
|
|
7
|
+
return null;
|
|
8
|
+
const layout = sankeyLayout(nodes, links, {
|
|
9
|
+
width: innerWidth,
|
|
10
|
+
height: innerHeight,
|
|
11
|
+
nodeWidth,
|
|
12
|
+
nodePad,
|
|
13
|
+
});
|
|
14
|
+
const nodeById = new Map(layout.nodes.map((n) => [n.id, n]));
|
|
15
|
+
return (_jsxs("g", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0' }, children: [layout.links.map((link, i) => (_jsx("path", { d: link.path, fill: link.sourceColorVar, fillOpacity: 0.4, "data-sankey-link": "", children: _jsx("title", { children: `${nodeById.get(link.from)?.label ?? link.from} → ${nodeById.get(link.to)?.label ?? link.to}: ${format(link.weight)}` }) }, `${link.from}-${link.to}-${i}`))), layout.nodes.map((node) => {
|
|
16
|
+
const isLastLayer = node.layer === layout.layers - 1;
|
|
17
|
+
return (_jsxs("g", { children: [_jsx("rect", { x: node.x, y: node.y, width: node.w, height: node.h, rx: 2, fill: node.colorVar, "data-sankey-node": node.id, children: _jsx("title", { children: `${node.label}: ${format(node.value)}` }) }), showLabels && (_jsx("text", { className: "adm-chart-axis-label", x: isLastLayer ? node.x - 6 : node.x + node.w + 6, y: node.y + node.h / 2 + 3, textAnchor: isLastLayer ? 'end' : 'start', children: node.label }))] }, node.id));
|
|
18
|
+
})] }));
|
|
19
|
+
} }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=SankeyChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SankeyChart.js","sourceRoot":"","sources":["../../src/components/SankeyChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-scatter-bubble` primitive (research/widget-registry.md §2): SVG scatter
|
|
3
|
+
* with an optional bubble-radius dimension, gridlines, a dashed least-squares
|
|
4
|
+
* trend line, and segment colors. The x value axis mirrors in RTL; y stays
|
|
5
|
+
* pixel-down. Token-only colors; fade-in on mount (radius/opacity settle to
|
|
6
|
+
* final state immediately under reduced motion).
|
|
7
|
+
*/
|
|
8
|
+
import type { ReactNode } from 'react';
|
|
9
|
+
import type { ScatterPointInput } from '../geometry/correlation.js';
|
|
10
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
11
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
12
|
+
export declare function vizColorAt(index: number): string;
|
|
13
|
+
export interface ScatterBubbleChartProps {
|
|
14
|
+
points: readonly ScatterPointInput[];
|
|
15
|
+
labels: ChartLabels;
|
|
16
|
+
height?: number;
|
|
17
|
+
showAxis?: boolean;
|
|
18
|
+
trendLine?: boolean;
|
|
19
|
+
formatX?: (x: number) => string;
|
|
20
|
+
formatY?: (y: number) => string;
|
|
21
|
+
dir?: ChartDir;
|
|
22
|
+
a11yFallback?: ReactNode;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function ScatterBubbleChart({ points, labels, height, showAxis, trendLine, formatX, formatY, dir, a11yFallback, className, }: ScatterBubbleChartProps): import("react").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=ScatterBubbleChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScatterBubbleChart.d.ts","sourceRoot":"","sources":["../../src/components/ScatterBubbleChart.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAcrD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,MAAM,EACN,MAAY,EACZ,QAAe,EACf,SAAgB,EAChB,OAAuB,EACvB,OAAuB,EACvB,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,uBAAuB,+BAsFzB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { scatterLayout } from '../geometry/correlation.js';
|
|
3
|
+
import { formatCompact } from '../utils/format.js';
|
|
4
|
+
import { ChartSurface } from './ChartSurface.js';
|
|
5
|
+
/** Canonical 8-color viz palette (viz.css); series i → --viz-((i mod 8)+1). */
|
|
6
|
+
const VIZ_VARS = [
|
|
7
|
+
'var(--viz-1)',
|
|
8
|
+
'var(--viz-2)',
|
|
9
|
+
'var(--viz-3)',
|
|
10
|
+
'var(--viz-4)',
|
|
11
|
+
'var(--viz-5)',
|
|
12
|
+
'var(--viz-6)',
|
|
13
|
+
'var(--viz-7)',
|
|
14
|
+
'var(--viz-8)',
|
|
15
|
+
];
|
|
16
|
+
export function vizColorAt(index) {
|
|
17
|
+
return VIZ_VARS[((index % VIZ_VARS.length) + VIZ_VARS.length) % VIZ_VARS.length];
|
|
18
|
+
}
|
|
19
|
+
export function ScatterBubbleChart({ points, labels, height = 280, showAxis = true, trendLine = true, formatX = formatCompact, formatY = formatCompact, dir, a11yFallback, className, }) {
|
|
20
|
+
const pad = { top: 10, bottom: showAxis ? 22 : 8, near: showAxis ? 40 : 8, far: 14 };
|
|
21
|
+
return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: pad.top, bottom: pad.bottom, left: pad.near, right: pad.far }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {
|
|
22
|
+
if (points.length === 0 || innerWidth <= 0 || innerHeight <= 0)
|
|
23
|
+
return null;
|
|
24
|
+
const layout = scatterLayout(points, { width: innerWidth, height: innerHeight, rtl, trendLine });
|
|
25
|
+
const segmentColor = (segment) => segment === undefined ? 'var(--viz-1)' : vizColorAt(layout.segments.indexOf(segment));
|
|
26
|
+
return (_jsxs("g", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0' }, children: [showAxis &&
|
|
27
|
+
layout.yTicks.map((tick) => (_jsxs("g", { children: [_jsx("line", { className: "adm-chart-gridline", x1: 0, x2: innerWidth, y1: layout.yFor(tick), y2: layout.yFor(tick) }), _jsx("text", { className: "adm-chart-axis-label adm-chart-num", x: rtl ? innerWidth + 6 : -6, y: layout.yFor(tick) + 3, textAnchor: rtl ? 'start' : 'end', children: formatY(tick) })] }, `y${tick}`))), showAxis &&
|
|
28
|
+
layout.xTicks.map((tick) => (_jsx("text", { className: "adm-chart-axis-label adm-chart-num", x: layout.xFor(tick), y: innerHeight + 15, textAnchor: "middle", children: formatX(tick) }, `x${tick}`))), trendLine && layout.trend !== null && (_jsx("line", { x1: layout.trend.x1, y1: layout.trend.y1, x2: layout.trend.x2, y2: layout.trend.y2, stroke: "var(--fg-subtle)", strokeWidth: 1.5, strokeDasharray: "5 4", "data-trend": "" })), layout.marks.map((mark) => (_jsx("circle", { cx: mark.cx, cy: mark.cy, r: mark.r, fill: segmentColor(mark.segment), fillOpacity: 0.72, stroke: "var(--surface)", strokeWidth: 1, "data-point-index": mark.index, ...(mark.segment !== undefined ? { 'data-segment': mark.segment } : {}) }, mark.index)))] }));
|
|
29
|
+
} }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ScatterBubbleChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScatterBubbleChart.js","sourceRoot":"","sources":["../../src/components/ScatterBubbleChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-slope` primitive (research/widget-registry.md §2): two period axes
|
|
3
|
+
* (A → B) with one connecting line per record, colored pos/danger by direction,
|
|
4
|
+
* and end labels. Composed from ChartSurface + pure `layoutSlope` geometry
|
|
5
|
+
* (deterministic two-point paths). Token-only colors; the two period columns
|
|
6
|
+
* are categorical and mirror in RTL; lines fade in on mount.
|
|
7
|
+
*/
|
|
8
|
+
import type { ReactNode } from 'react';
|
|
9
|
+
import type { SlopeInput } from '../geometry/slope.js';
|
|
10
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
11
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
12
|
+
export interface SlopeChartProps {
|
|
13
|
+
data: readonly SlopeInput[];
|
|
14
|
+
labels: ChartLabels;
|
|
15
|
+
height?: number;
|
|
16
|
+
/** Period axis captions [A, B] (annex `periodLabels`). */
|
|
17
|
+
periodLabels?: readonly [string, string];
|
|
18
|
+
/** Inline-start label gutter width, px (default 84). */
|
|
19
|
+
labelGutter?: number;
|
|
20
|
+
/** Inline-end value gutter width, px (default 56). */
|
|
21
|
+
valueGutter?: number;
|
|
22
|
+
formatValue?: (value: number) => string;
|
|
23
|
+
dir?: ChartDir;
|
|
24
|
+
a11yFallback?: ReactNode;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function SlopeChart({ data, labels, height, periodLabels, labelGutter, valueGutter, formatValue, dir, a11yFallback, className, }: SlopeChartProps): import("react").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=SlopeChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlopeChart.d.ts","sourceRoot":"","sources":["../../src/components/SlopeChart.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,MAAM,EACN,MAAY,EACZ,YAAY,EACZ,WAAgB,EAChB,WAAgB,EAChB,WAA2B,EAC3B,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,eAAe,+BAwEjB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { layoutSlope } from '../geometry/slope.js';
|
|
3
|
+
import { formatCompact } from '../utils/format.js';
|
|
4
|
+
import { ChartSurface } from './ChartSurface.js';
|
|
5
|
+
export function SlopeChart({ data, labels, height = 260, periodLabels, labelGutter = 84, valueGutter = 56, formatValue = formatCompact, dir, a11yFallback, className, }) {
|
|
6
|
+
return (_jsx(ChartSurface, { labels: labels, height: height, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), ...(className !== undefined ? { className } : {}), padding: { top: 18, bottom: 8, left: labelGutter, right: valueGutter }, children: ({ innerWidth, innerHeight, rtl, mounted }) => {
|
|
7
|
+
if (data.length === 0 || innerWidth <= 0 || innerHeight <= 0)
|
|
8
|
+
return null;
|
|
9
|
+
const layout = layoutSlope(data, { width: innerWidth, height: innerHeight, rtl });
|
|
10
|
+
const captionA = periodLabels?.[0];
|
|
11
|
+
const captionB = periodLabels?.[1];
|
|
12
|
+
return (_jsxs("g", { children: [_jsx("line", { x1: layout.xA, x2: layout.xA, y1: 0, y2: innerHeight, stroke: "var(--border)", strokeWidth: 1 }), _jsx("line", { x1: layout.xB, x2: layout.xB, y1: 0, y2: innerHeight, stroke: "var(--border)", strokeWidth: 1 }), captionA !== undefined && (_jsx("text", { className: "adm-chart-axis-label", x: layout.xA, y: -6, textAnchor: "middle", children: captionA })), captionB !== undefined && (_jsx("text", { className: "adm-chart-axis-label", x: layout.xB, y: -6, textAnchor: "middle", children: captionB })), _jsx("g", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0' }, children: layout.lines.map((slope) => {
|
|
13
|
+
const stroke = slope.rising ? 'var(--pos)' : 'var(--danger)';
|
|
14
|
+
return (_jsxs("g", { "data-slope": slope.index, "data-rising": slope.rising ? '' : undefined, children: [slope.path !== null && (_jsx("path", { d: slope.path, fill: "none", stroke: stroke, strokeWidth: 2, strokeLinecap: "round" })), _jsx("circle", { cx: slope.xA, cy: slope.yA, r: 3, fill: stroke }), _jsx("circle", { cx: slope.xB, cy: slope.yB, r: 3, fill: stroke }), _jsx("text", { className: "adm-chart-axis-label", x: slope.xA + (rtl ? 8 : -8), y: slope.yA + 3, textAnchor: rtl ? 'start' : 'end', children: slope.label }), _jsx("text", { className: "adm-chart-num", x: slope.xB + (rtl ? -8 : 8), y: slope.yB + 3, textAnchor: rtl ? 'end' : 'start', fontSize: 10, fontWeight: 700, fill: stroke, children: formatValue(slope.b) })] }, slope.label));
|
|
15
|
+
}) })] }));
|
|
16
|
+
} }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=SlopeChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlopeChart.js","sourceRoot":"","sources":["../../src/components/SlopeChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type SparklineTone = 'accent' | 'positive' | 'danger' | 'muted';
|
|
2
|
+
export interface SparklineProps {
|
|
3
|
+
data: readonly number[];
|
|
4
|
+
variant?: 'bar' | 'line';
|
|
5
|
+
width?: number;
|
|
6
|
+
height?: number;
|
|
7
|
+
/** Full-tone last bar/point (default true). */
|
|
8
|
+
emphasisLast?: boolean;
|
|
9
|
+
tone?: SparklineTone;
|
|
10
|
+
/** Accessible name. Omitted → the sparkline is decorative (aria-hidden). */
|
|
11
|
+
label?: string;
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function Sparkline({ data, variant, width, height, emphasisLast, tone, label, className, }: SparklineProps): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=Sparkline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../src/components/Sparkline.tsx"],"names":[],"mappings":"AASA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AASvE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAe,EACf,KAAU,EACV,MAAW,EACX,YAAmB,EACnB,IAAe,EACf,KAAK,EACL,SAAS,GACV,EAAE,cAAc,+BAkDhB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* `chart-sparkline` primitive (research/widget-registry.md §2): inline 6–12
|
|
4
|
+
* point micro-chart, bar|line variant, last point emphasized. No axes, no
|
|
5
|
+
* tooltip — embeds in KPI cards, table cells and list rows. Decorative by
|
|
6
|
+
* default (aria-hidden) unless a label is provided.
|
|
7
|
+
*/
|
|
8
|
+
import { sparkBars, sparkLine } from '../geometry/sparkline.js';
|
|
9
|
+
import { useMountAnimation } from '../hooks/useMountAnimation.js';
|
|
10
|
+
const TONE_VAR = {
|
|
11
|
+
accent: 'var(--accent)',
|
|
12
|
+
positive: 'var(--pos)',
|
|
13
|
+
danger: 'var(--danger)',
|
|
14
|
+
muted: 'var(--fg-subtle)',
|
|
15
|
+
};
|
|
16
|
+
export function Sparkline({ data, variant = 'bar', width = 96, height = 28, emphasisLast = true, tone = 'accent', label, className, }) {
|
|
17
|
+
const mounted = useMountAnimation();
|
|
18
|
+
const color = TONE_VAR[tone];
|
|
19
|
+
const a11y = label !== undefined
|
|
20
|
+
? { role: 'img', 'aria-label': label }
|
|
21
|
+
: { 'aria-hidden': true };
|
|
22
|
+
return (_jsx("svg", { className: className === undefined ? 'adm-spark' : `adm-spark ${className}`, width: width, height: height, viewBox: `0 0 ${width} ${height}`, "data-export-node": "", ...a11y, children: variant === 'bar' ? (sparkBars(data, width, height).map((bar, i) => (_jsx("rect", { className: "adm-chart-grow", style: { '--adm-grow': mounted ? '1' : '0', '--adm-stagger': `${i * 40}ms` }, x: bar.x, y: bar.y, width: bar.width, height: bar.height, rx: 1.5, fill: color, opacity: emphasisLast && !bar.isLast ? 0.45 : 1, "data-last": bar.isLast ? '' : undefined }, i)))) : ((() => {
|
|
23
|
+
const layout = sparkLine(data, width, height);
|
|
24
|
+
return (_jsxs("g", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0' }, children: [layout.points !== '' && (_jsx("polyline", { points: layout.points, fill: "none", stroke: color, strokeWidth: 1.5, strokeLinejoin: "round" })), emphasisLast && layout.last !== null && (_jsx("circle", { cx: layout.last.x, cy: layout.last.y, r: 2.5, fill: color, "data-last": "" }))] }));
|
|
25
|
+
})()) }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=Sparkline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../src/components/Sparkline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-stacked-bar-100` primitive (research/widget-registry.md §2): a single
|
|
3
|
+
* horizontal 100% bar of gapped segments + a multi-column legend. Composed from
|
|
4
|
+
* ChartSurface (the bar) + pure `layoutStacked100` geometry; the legend is HTML
|
|
5
|
+
* (logical properties, mirrors under dir). Token-only colors; segment order
|
|
6
|
+
* mirrors in RTL; segments fade in on mount.
|
|
7
|
+
*/
|
|
8
|
+
import type { ReactNode } from 'react';
|
|
9
|
+
import type { StackedInput } from '../geometry/stacked100.js';
|
|
10
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
11
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
12
|
+
export interface StackedBar100Props {
|
|
13
|
+
data: readonly StackedInput[];
|
|
14
|
+
labels: ChartLabels;
|
|
15
|
+
/** Bar thickness in px (default 26). */
|
|
16
|
+
barHeight?: number;
|
|
17
|
+
/** Gap between segments in px (default 2). */
|
|
18
|
+
gapPx?: number;
|
|
19
|
+
showLegend?: boolean;
|
|
20
|
+
/** Legend column count (annex `legendColumns`, default 2). */
|
|
21
|
+
legendColumns?: number;
|
|
22
|
+
/** In-segment share label when the segment is wide enough. */
|
|
23
|
+
showSegmentLabels?: boolean;
|
|
24
|
+
formatValue?: (value: number) => string;
|
|
25
|
+
dir?: ChartDir;
|
|
26
|
+
a11yFallback?: ReactNode;
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function StackedBar100({ data, labels, barHeight, gapPx, showLegend, legendColumns, showSegmentLabels, formatValue, dir, a11yFallback, className, }: StackedBar100Props): import("react").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=StackedBar100.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StackedBar100.d.ts","sourceRoot":"","sources":["../../src/components/StackedBar100.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,MAAM,EACN,SAAc,EACd,KAAS,EACT,UAAiB,EACjB,aAAiB,EACjB,iBAAwB,EACxB,WAAW,EACX,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,kBAAkB,+BAqEpB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { layoutStacked100 } from '../geometry/stacked100.js';
|
|
3
|
+
import { useChartDir } from '../hooks/useRtl.js';
|
|
4
|
+
import { ChartSurface } from './ChartSurface.js';
|
|
5
|
+
function formatPercent(share) {
|
|
6
|
+
return `${Math.round(share * 100)}%`;
|
|
7
|
+
}
|
|
8
|
+
export function StackedBar100({ data, labels, barHeight = 26, gapPx = 2, showLegend = true, legendColumns = 2, showSegmentLabels = true, formatValue, dir, a11yFallback, className, }) {
|
|
9
|
+
const resolvedDir = useChartDir(dir);
|
|
10
|
+
return (_jsxs("div", { className: className === undefined ? 'adm-stacked' : `adm-stacked ${className}`, ...(dir !== undefined ? { dir: resolvedDir } : {}), children: [_jsx(ChartSurface, { labels: labels, height: barHeight, ...(dir !== undefined ? { dir } : {}), ...(a11yFallback !== undefined ? { a11yFallback } : {}), padding: { top: 0, bottom: 0, left: 0, right: 0 }, children: ({ innerWidth, rtl, mounted }) => {
|
|
11
|
+
if (data.length === 0 || innerWidth <= 0)
|
|
12
|
+
return null;
|
|
13
|
+
const layout = layoutStacked100(data, { width: innerWidth, rtl, gap: gapPx });
|
|
14
|
+
return (_jsx("g", { className: "adm-chart-fade", style: { '--adm-fade': mounted ? '1' : '0' }, children: layout.segments.map((segment) => (_jsxs("g", { "data-seg": segment.index, children: [_jsx("rect", { x: segment.x, y: 0, width: Math.max(0, segment.width), height: barHeight, rx: 4, fill: `var(--viz-${(segment.index % 8) + 1})` }), showSegmentLabels && segment.width >= 34 && (_jsx("text", { className: "adm-chart-num", x: segment.x + segment.width / 2, y: barHeight / 2 + 3, textAnchor: "middle", fontSize: 10, fontWeight: 700, fill: "var(--surface)", children: formatPercent(segment.share) }))] }, segment.key))) }));
|
|
15
|
+
} }), showLegend && (_jsx("ul", { className: "adm-legend", style: { '--adm-legend-cols': String(Math.max(1, legendColumns)) }, children: data.map((item, index) => {
|
|
16
|
+
const total = data.reduce((sum, entry) => sum + Math.max(0, entry.value), 0);
|
|
17
|
+
const share = total > 0 ? Math.max(0, item.value) / total : 0;
|
|
18
|
+
return (_jsxs("li", { className: "adm-legend-row", children: [_jsx("span", { className: "adm-legend-dot", style: { '--adm-dot': `var(--viz-${(index % 8) + 1})` }, "aria-hidden": "true" }), _jsx("span", { children: item.label }), _jsx("span", { className: "adm-legend-value", children: formatValue !== undefined ? formatValue(item.value) : formatPercent(share) })] }, item.key));
|
|
19
|
+
}) }))] }));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=StackedBar100.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StackedBar100.js","sourceRoot":"","sources":["../../src/components/StackedBar100.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `chart-stream` primitive (research/widget-registry.md §2): centered stacked
|
|
3
|
+
* "stream" bands over time with a legend (traffic composition). Time x never
|
|
4
|
+
* mirrors; categorical x mirrors in RTL, and the legend lays out in the
|
|
5
|
+
* reading direction (04 §7.4). Colors strictly from the viz palette.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
import type { ChartDir } from '../hooks/useRtl.js';
|
|
9
|
+
import type { MultiLineSeries } from './MultiLineChart.js';
|
|
10
|
+
import type { ChartLabels } from './ChartSurface.js';
|
|
11
|
+
export interface StreamChartProps {
|
|
12
|
+
series: readonly MultiLineSeries[];
|
|
13
|
+
labels: ChartLabels;
|
|
14
|
+
height?: number;
|
|
15
|
+
/** Smooth basis-spline bands (default true). */
|
|
16
|
+
smooth?: boolean;
|
|
17
|
+
showLegend?: boolean;
|
|
18
|
+
dir?: ChartDir;
|
|
19
|
+
a11yFallback?: ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function StreamChart({ series, labels, height, smooth, showLegend, dir, a11yFallback, className, }: StreamChartProps): import("react").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=StreamChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamChart.d.ts","sourceRoot":"","sources":["../../src/components/StreamChart.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,MAAM,EACN,MAAY,EACZ,MAAa,EACb,UAAiB,EACjB,GAAG,EACH,YAAY,EACZ,SAAS,GACV,EAAE,gBAAgB,+BA8FlB"}
|