@sentropic/design-system-svelte 0.22.1 → 0.24.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/dist/BarChart.svelte +19 -2
- package/dist/BarChart.svelte.d.ts +7 -0
- package/dist/BarChart.svelte.d.ts.map +1 -1
- package/dist/Grid.svelte +69 -0
- package/dist/Grid.svelte.d.ts +23 -0
- package/dist/Grid.svelte.d.ts.map +1 -0
- package/dist/LollipopChart.svelte +438 -0
- package/dist/LollipopChart.svelte.d.ts +40 -0
- package/dist/LollipopChart.svelte.d.ts.map +1 -0
- package/dist/ParetoChart.svelte +424 -0
- package/dist/ParetoChart.svelte.d.ts +30 -0
- package/dist/ParetoChart.svelte.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/package.json +2 -2
package/dist/BarChart.svelte
CHANGED
|
@@ -25,6 +25,13 @@
|
|
|
25
25
|
height?: number;
|
|
26
26
|
orientation?: "vertical" | "horizontal";
|
|
27
27
|
label: string;
|
|
28
|
+
/**
|
|
29
|
+
* Fixed value-axis domain `[min, max]`. When provided (and finite), the
|
|
30
|
+
* value scale uses it instead of the data-derived min/max — letting several
|
|
31
|
+
* BarCharts in a grid share one scale (small multiples). When absent or
|
|
32
|
+
* invalid, the scale falls back to the auto data range (unchanged).
|
|
33
|
+
*/
|
|
34
|
+
domain?: [number, number];
|
|
28
35
|
/**
|
|
29
36
|
* Keys of the currently selected bars (a bar's key is its `label`).
|
|
30
37
|
* CONTROLLED — the parent owns the toggle; the component never stores
|
|
@@ -50,6 +57,7 @@
|
|
|
50
57
|
height = 240,
|
|
51
58
|
orientation = "vertical",
|
|
52
59
|
label,
|
|
60
|
+
domain,
|
|
53
61
|
selectedKeys = [],
|
|
54
62
|
onSelect,
|
|
55
63
|
class: className
|
|
@@ -99,10 +107,19 @@
|
|
|
99
107
|
const hasSelection = $derived(selectedSet.size > 0);
|
|
100
108
|
const interactive = $derived(typeof onSelect === "function");
|
|
101
109
|
|
|
110
|
+
// A domain is honoured only when both bounds are finite and ordered (min<max).
|
|
111
|
+
// Otherwise we fall back to the auto data range.
|
|
112
|
+
const validDomain = $derived.by<[number, number] | null>(() => {
|
|
113
|
+
if (!domain) return null;
|
|
114
|
+
const [d0, d1] = domain;
|
|
115
|
+
if (!Number.isFinite(d0) || !Number.isFinite(d1) || d0 >= d1) return null;
|
|
116
|
+
return [d0, d1];
|
|
117
|
+
});
|
|
118
|
+
|
|
102
119
|
const scales = $derived.by(() => {
|
|
103
120
|
const values = data.map((d) => d.value);
|
|
104
|
-
const minRaw = Math.min(0, ...values);
|
|
105
|
-
const maxRaw = Math.max(0, ...values);
|
|
121
|
+
const minRaw = validDomain ? validDomain[0] : Math.min(0, ...values);
|
|
122
|
+
const maxRaw = validDomain ? validDomain[1] : Math.max(0, ...values);
|
|
106
123
|
const ticks = niceTicks(minRaw, maxRaw, 5);
|
|
107
124
|
const domainMin = ticks[0];
|
|
108
125
|
const domainMax = ticks[ticks.length - 1];
|
|
@@ -10,6 +10,13 @@ type BarChartProps = {
|
|
|
10
10
|
height?: number;
|
|
11
11
|
orientation?: "vertical" | "horizontal";
|
|
12
12
|
label: string;
|
|
13
|
+
/**
|
|
14
|
+
* Fixed value-axis domain `[min, max]`. When provided (and finite), the
|
|
15
|
+
* value scale uses it instead of the data-derived min/max — letting several
|
|
16
|
+
* BarCharts in a grid share one scale (small multiples). When absent or
|
|
17
|
+
* invalid, the scale falls back to the auto data range (unchanged).
|
|
18
|
+
*/
|
|
19
|
+
domain?: [number, number];
|
|
13
20
|
/**
|
|
14
21
|
* Keys of the currently selected bars (a bar's key is its `label`).
|
|
15
22
|
* CONTROLLED — the parent owns the toggle; the component never stores
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BarChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/BarChart.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AAMF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"BarChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/BarChart.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AAMF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAyPJ,QAAA,MAAM,QAAQ,mDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
package/dist/Grid.svelte
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
4
|
+
import { spacingToken } from "./Flex.svelte";
|
|
5
|
+
|
|
6
|
+
export type GridProps = Omit<HTMLAttributes<HTMLElement>, "class"> & {
|
|
7
|
+
/** Number of equal columns: `repeat(columns, minmax(0, 1fr))`. */
|
|
8
|
+
columns?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Responsive auto mode: `repeat(auto-fill, minmax(minItemWidth, 1fr))`.
|
|
11
|
+
* Takes priority over `columns` when provided.
|
|
12
|
+
*/
|
|
13
|
+
minItemWidth?: string;
|
|
14
|
+
/** Spacing scale step (0..12) mapped to `--st-spacing-*`. */
|
|
15
|
+
gap?: number;
|
|
16
|
+
as?: string;
|
|
17
|
+
class?: string;
|
|
18
|
+
children?: Snippet;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/** Resolve the `grid-template-columns` value. `minItemWidth` (responsive
|
|
22
|
+
auto-fill) wins over a fixed column count. */
|
|
23
|
+
export function gridTemplateColumns(
|
|
24
|
+
columns: number | undefined,
|
|
25
|
+
minItemWidth: string | undefined
|
|
26
|
+
): string | undefined {
|
|
27
|
+
if (minItemWidth != null && minItemWidth !== "") {
|
|
28
|
+
return `repeat(auto-fill, minmax(${minItemWidth}, 1fr))`;
|
|
29
|
+
}
|
|
30
|
+
if (columns != null) {
|
|
31
|
+
const clamped = Math.max(1, Math.round(columns));
|
|
32
|
+
return `repeat(${clamped}, minmax(0, 1fr))`;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<script lang="ts">
|
|
39
|
+
let {
|
|
40
|
+
columns,
|
|
41
|
+
minItemWidth,
|
|
42
|
+
gap,
|
|
43
|
+
as = "div",
|
|
44
|
+
class: className,
|
|
45
|
+
children,
|
|
46
|
+
...rest
|
|
47
|
+
}: GridProps = $props();
|
|
48
|
+
|
|
49
|
+
const classes = $derived(["st-grid", className].filter(Boolean).join(" "));
|
|
50
|
+
const templateColumns = $derived(gridTemplateColumns(columns, minItemWidth));
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<svelte:element
|
|
54
|
+
this={as}
|
|
55
|
+
{...rest}
|
|
56
|
+
class={classes}
|
|
57
|
+
style:display="grid"
|
|
58
|
+
style:grid-template-columns={templateColumns}
|
|
59
|
+
style:gap={spacingToken(gap)}
|
|
60
|
+
>
|
|
61
|
+
{@render children?.()}
|
|
62
|
+
</svelte:element>
|
|
63
|
+
|
|
64
|
+
<style>
|
|
65
|
+
.st-grid {
|
|
66
|
+
box-sizing: border-box;
|
|
67
|
+
min-width: 0;
|
|
68
|
+
}
|
|
69
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Snippet } from "svelte";
|
|
2
|
+
import type { HTMLAttributes } from "svelte/elements";
|
|
3
|
+
export type GridProps = Omit<HTMLAttributes<HTMLElement>, "class"> & {
|
|
4
|
+
/** Number of equal columns: `repeat(columns, minmax(0, 1fr))`. */
|
|
5
|
+
columns?: number;
|
|
6
|
+
/**
|
|
7
|
+
* Responsive auto mode: `repeat(auto-fill, minmax(minItemWidth, 1fr))`.
|
|
8
|
+
* Takes priority over `columns` when provided.
|
|
9
|
+
*/
|
|
10
|
+
minItemWidth?: string;
|
|
11
|
+
/** Spacing scale step (0..12) mapped to `--st-spacing-*`. */
|
|
12
|
+
gap?: number;
|
|
13
|
+
as?: string;
|
|
14
|
+
class?: string;
|
|
15
|
+
children?: Snippet;
|
|
16
|
+
};
|
|
17
|
+
/** Resolve the `grid-template-columns` value. `minItemWidth` (responsive
|
|
18
|
+
auto-fill) wins over a fixed column count. */
|
|
19
|
+
export declare function gridTemplateColumns(columns: number | undefined, minItemWidth: string | undefined): string | undefined;
|
|
20
|
+
declare const Grid: import("svelte").Component<GridProps, {}, "">;
|
|
21
|
+
type Grid = ReturnType<typeof Grid>;
|
|
22
|
+
export default Grid;
|
|
23
|
+
//# sourceMappingURL=Grid.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.svelte.d.ts","sourceRoot":"","sources":["../src/lib/Grid.svelte.ts"],"names":[],"mappings":"AAGE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG;IACnE,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;iDACiD;AACjD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,GAAG,SAAS,CASpB;AA2BH,QAAA,MAAM,IAAI,+CAAwC,CAAC;AACnD,KAAK,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;AACpC,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* LollipopChart — tige fine (ligne) + cercle au sommet, par catégorie.
|
|
4
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner).
|
|
5
|
+
*
|
|
6
|
+
* Props obligatoires :
|
|
7
|
+
* data LollipopChartDatum[] - tableau {label, value, tone?}
|
|
8
|
+
* label string - aria-label du graphique
|
|
9
|
+
*
|
|
10
|
+
* Props optionnelles :
|
|
11
|
+
* orientation "vertical"|"horizontal" (défaut "vertical")
|
|
12
|
+
* width number (défaut 480)
|
|
13
|
+
* height number (défaut 240)
|
|
14
|
+
* domain [number, number] - domaine fixe de l'axe des valeurs
|
|
15
|
+
* class string
|
|
16
|
+
*/
|
|
17
|
+
export type LollipopChartTone =
|
|
18
|
+
| "category1"
|
|
19
|
+
| "category2"
|
|
20
|
+
| "category3"
|
|
21
|
+
| "category4"
|
|
22
|
+
| "category5"
|
|
23
|
+
| "category6"
|
|
24
|
+
| "category7"
|
|
25
|
+
| "category8";
|
|
26
|
+
|
|
27
|
+
export type LollipopChartDatum = {
|
|
28
|
+
label: string;
|
|
29
|
+
value: number;
|
|
30
|
+
tone?: LollipopChartTone;
|
|
31
|
+
};
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<script lang="ts">
|
|
35
|
+
import ChartDataList from "./ChartDataList.svelte";
|
|
36
|
+
import { contrastTextForTone } from "./chartContrast.js";
|
|
37
|
+
|
|
38
|
+
type LollipopChartProps = {
|
|
39
|
+
data: LollipopChartDatum[];
|
|
40
|
+
width?: number;
|
|
41
|
+
height?: number;
|
|
42
|
+
orientation?: "vertical" | "horizontal";
|
|
43
|
+
label: string;
|
|
44
|
+
/**
|
|
45
|
+
* Domaine fixe de l'axe des valeurs `[min, max]`. Quand fourni (et fini),
|
|
46
|
+
* l'échelle l'utilise au lieu du min/max dérivé des données — laissant
|
|
47
|
+
* plusieurs LollipopCharts d'une grille partager une échelle. Absent ou
|
|
48
|
+
* invalide → repli sur la plage auto (inchangé).
|
|
49
|
+
*/
|
|
50
|
+
domain?: [number, number];
|
|
51
|
+
class?: string;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
let {
|
|
55
|
+
data = [],
|
|
56
|
+
width = 480,
|
|
57
|
+
height = 240,
|
|
58
|
+
orientation = "vertical",
|
|
59
|
+
label,
|
|
60
|
+
domain,
|
|
61
|
+
class: className
|
|
62
|
+
}: LollipopChartProps = $props();
|
|
63
|
+
|
|
64
|
+
const MARGIN = { top: 12, right: 16, bottom: 32, left: 44 };
|
|
65
|
+
const DOT_RADIUS = 5;
|
|
66
|
+
|
|
67
|
+
function niceTicks(min: number, max: number, target = 5): number[] {
|
|
68
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || min === max) {
|
|
69
|
+
const base = Number.isFinite(max) ? max : 0;
|
|
70
|
+
return [base];
|
|
71
|
+
}
|
|
72
|
+
const range = max - min;
|
|
73
|
+
const rough = range / Math.max(target - 1, 1);
|
|
74
|
+
const pow = Math.pow(10, Math.floor(Math.log10(rough)));
|
|
75
|
+
const norm = rough / pow;
|
|
76
|
+
let step: number;
|
|
77
|
+
if (norm < 1.5) step = 1 * pow;
|
|
78
|
+
else if (norm < 3) step = 2 * pow;
|
|
79
|
+
else if (norm < 7) step = 5 * pow;
|
|
80
|
+
else step = 10 * pow;
|
|
81
|
+
const start = Math.floor(min / step) * step;
|
|
82
|
+
const end = Math.ceil(max / step) * step;
|
|
83
|
+
const ticks: number[] = [];
|
|
84
|
+
for (let v = start; v <= end + step / 2; v += step) {
|
|
85
|
+
ticks.push(Number(v.toFixed(10)));
|
|
86
|
+
}
|
|
87
|
+
return ticks;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function scaleLinear(v: number, d0: number, d1: number, r0: number, r1: number) {
|
|
91
|
+
if (d1 === d0) return r0;
|
|
92
|
+
return r0 + ((v - d0) * (r1 - r0)) / (d1 - d0);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function formatTick(v: number): string {
|
|
96
|
+
if (Math.abs(v) >= 1000) return `${(v / 1000).toFixed(v % 1000 === 0 ? 0 : 1)}k`;
|
|
97
|
+
if (Number.isInteger(v)) return String(v);
|
|
98
|
+
return v.toFixed(1);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
let hoveredIndex: number | null = $state(null);
|
|
102
|
+
|
|
103
|
+
// Données valides : value finie.
|
|
104
|
+
const validData = $derived(data.filter((d) => Number.isFinite(d.value)));
|
|
105
|
+
|
|
106
|
+
// Un domaine n'est honoré que si fini et ordonné (min < max).
|
|
107
|
+
const validDomain = $derived.by<[number, number] | null>(() => {
|
|
108
|
+
if (!domain) return null;
|
|
109
|
+
const [d0, d1] = domain;
|
|
110
|
+
if (!Number.isFinite(d0) || !Number.isFinite(d1) || d0 >= d1) return null;
|
|
111
|
+
return [d0, d1];
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const scales = $derived.by(() => {
|
|
115
|
+
const values = validData.map((d) => d.value);
|
|
116
|
+
const minRaw = validDomain ? validDomain[0] : Math.min(0, ...values);
|
|
117
|
+
const maxRaw = validDomain ? validDomain[1] : Math.max(0, ...values);
|
|
118
|
+
const ticks = niceTicks(minRaw, maxRaw, 5);
|
|
119
|
+
const domainMin = ticks[0];
|
|
120
|
+
const domainMax = ticks[ticks.length - 1];
|
|
121
|
+
const plotWidth = Math.max(width - MARGIN.left - MARGIN.right, 1);
|
|
122
|
+
const plotHeight = Math.max(height - MARGIN.top - MARGIN.bottom, 1);
|
|
123
|
+
return { ticks, domainMin, domainMax, plotWidth, plotHeight };
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
const lollipops = $derived.by(() => {
|
|
127
|
+
const { domainMin, domainMax, plotWidth, plotHeight } = scales;
|
|
128
|
+
if (validData.length === 0) return [];
|
|
129
|
+
if (orientation === "vertical") {
|
|
130
|
+
const band = plotWidth / validData.length;
|
|
131
|
+
const zeroY = scaleLinear(0, domainMin, domainMax, plotHeight, 0);
|
|
132
|
+
return validData.map((d, i) => {
|
|
133
|
+
const valueY = scaleLinear(d.value, domainMin, domainMax, plotHeight, 0);
|
|
134
|
+
const cx = MARGIN.left + band * (i + 0.5);
|
|
135
|
+
return {
|
|
136
|
+
datum: d,
|
|
137
|
+
tone: d.tone ?? "category1",
|
|
138
|
+
// tige : du zéro jusqu'au point
|
|
139
|
+
stemX1: cx,
|
|
140
|
+
stemY1: MARGIN.top + zeroY,
|
|
141
|
+
stemX2: cx,
|
|
142
|
+
stemY2: MARGIN.top + valueY,
|
|
143
|
+
cx,
|
|
144
|
+
cy: MARGIN.top + valueY,
|
|
145
|
+
labelX: cx,
|
|
146
|
+
labelY: height - MARGIN.bottom + 16
|
|
147
|
+
};
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// horizontal
|
|
151
|
+
const band = plotHeight / validData.length;
|
|
152
|
+
const zeroX = scaleLinear(0, domainMin, domainMax, 0, plotWidth);
|
|
153
|
+
return validData.map((d, i) => {
|
|
154
|
+
const valueX = scaleLinear(d.value, domainMin, domainMax, 0, plotWidth);
|
|
155
|
+
const cy = MARGIN.top + band * (i + 0.5);
|
|
156
|
+
return {
|
|
157
|
+
datum: d,
|
|
158
|
+
tone: d.tone ?? "category1",
|
|
159
|
+
stemX1: MARGIN.left + zeroX,
|
|
160
|
+
stemY1: cy,
|
|
161
|
+
stemX2: MARGIN.left + valueX,
|
|
162
|
+
stemY2: cy,
|
|
163
|
+
cx: MARGIN.left + valueX,
|
|
164
|
+
cy,
|
|
165
|
+
labelX: MARGIN.left - 6,
|
|
166
|
+
labelY: cy
|
|
167
|
+
};
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
const dataValueItems = $derived(validData.map((d) => `${d.label}: ${d.value}`));
|
|
172
|
+
|
|
173
|
+
const valueAxisTicks = $derived.by(() => {
|
|
174
|
+
const { ticks, domainMin, domainMax, plotWidth, plotHeight } = scales;
|
|
175
|
+
if (orientation === "vertical") {
|
|
176
|
+
return ticks.map((tick) => ({
|
|
177
|
+
value: tick,
|
|
178
|
+
x1: MARGIN.left,
|
|
179
|
+
x2: MARGIN.left + plotWidth,
|
|
180
|
+
y: MARGIN.top + scaleLinear(tick, domainMin, domainMax, plotHeight, 0),
|
|
181
|
+
x: undefined,
|
|
182
|
+
y1: undefined,
|
|
183
|
+
y2: undefined
|
|
184
|
+
}));
|
|
185
|
+
}
|
|
186
|
+
return ticks.map((tick) => ({
|
|
187
|
+
value: tick,
|
|
188
|
+
x: MARGIN.left + scaleLinear(tick, domainMin, domainMax, 0, plotWidth),
|
|
189
|
+
y1: MARGIN.top,
|
|
190
|
+
y2: MARGIN.top + plotHeight,
|
|
191
|
+
x1: undefined,
|
|
192
|
+
x2: undefined,
|
|
193
|
+
y: undefined
|
|
194
|
+
}));
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
function handleLeave() {
|
|
198
|
+
hoveredIndex = null;
|
|
199
|
+
}
|
|
200
|
+
function handleVisualPointerMove(event: PointerEvent) {
|
|
201
|
+
const target = event.target;
|
|
202
|
+
if (!(target instanceof Element)) {
|
|
203
|
+
hoveredIndex = null;
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const index = Number(target.getAttribute("data-chart-index"));
|
|
207
|
+
hoveredIndex = Number.isInteger(index) ? index : null;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const classes = () => ["st-lollipopChart", className].filter(Boolean).join(" ");
|
|
211
|
+
</script>
|
|
212
|
+
|
|
213
|
+
<div class={classes()}>
|
|
214
|
+
<div
|
|
215
|
+
class="st-lollipopChart__visual"
|
|
216
|
+
role="img"
|
|
217
|
+
aria-label={label}
|
|
218
|
+
onpointermove={handleVisualPointerMove}
|
|
219
|
+
onpointerleave={handleLeave}
|
|
220
|
+
>
|
|
221
|
+
<svg
|
|
222
|
+
viewBox="0 0 {width} {height}"
|
|
223
|
+
preserveAspectRatio="xMidYMid meet"
|
|
224
|
+
width="100%"
|
|
225
|
+
height="100%"
|
|
226
|
+
focusable="false"
|
|
227
|
+
aria-hidden="true"
|
|
228
|
+
>
|
|
229
|
+
<!-- gridlines + value axis ticks -->
|
|
230
|
+
{#if orientation === "vertical"}
|
|
231
|
+
{#each valueAxisTicks as tick (tick.value)}
|
|
232
|
+
<line class="st-lollipopChart__grid" x1={tick.x1} x2={tick.x2} y1={tick.y} y2={tick.y} />
|
|
233
|
+
<text
|
|
234
|
+
class="st-lollipopChart__tickLabel"
|
|
235
|
+
x={MARGIN.left - 6}
|
|
236
|
+
y={tick.y}
|
|
237
|
+
text-anchor="end"
|
|
238
|
+
dominant-baseline="middle"
|
|
239
|
+
>
|
|
240
|
+
{formatTick(tick.value)}
|
|
241
|
+
</text>
|
|
242
|
+
{/each}
|
|
243
|
+
{:else}
|
|
244
|
+
{#each valueAxisTicks as tick (tick.value)}
|
|
245
|
+
<line class="st-lollipopChart__grid" x1={tick.x} x2={tick.x} y1={tick.y1} y2={tick.y2} />
|
|
246
|
+
<text
|
|
247
|
+
class="st-lollipopChart__tickLabel"
|
|
248
|
+
x={tick.x}
|
|
249
|
+
y={height - MARGIN.bottom + 16}
|
|
250
|
+
text-anchor="middle"
|
|
251
|
+
>
|
|
252
|
+
{formatTick(tick.value)}
|
|
253
|
+
</text>
|
|
254
|
+
{/each}
|
|
255
|
+
{/if}
|
|
256
|
+
|
|
257
|
+
<!-- axes -->
|
|
258
|
+
<line
|
|
259
|
+
class="st-lollipopChart__axis"
|
|
260
|
+
x1={MARGIN.left}
|
|
261
|
+
x2={MARGIN.left}
|
|
262
|
+
y1={MARGIN.top}
|
|
263
|
+
y2={height - MARGIN.bottom}
|
|
264
|
+
/>
|
|
265
|
+
<line
|
|
266
|
+
class="st-lollipopChart__axis"
|
|
267
|
+
x1={MARGIN.left}
|
|
268
|
+
x2={width - MARGIN.right}
|
|
269
|
+
y1={height - MARGIN.bottom}
|
|
270
|
+
y2={height - MARGIN.bottom}
|
|
271
|
+
/>
|
|
272
|
+
|
|
273
|
+
<!-- category labels -->
|
|
274
|
+
{#each lollipops as pop (pop.datum.label)}
|
|
275
|
+
{#if orientation === "vertical"}
|
|
276
|
+
<text
|
|
277
|
+
class="st-lollipopChart__categoryLabel"
|
|
278
|
+
x={pop.labelX}
|
|
279
|
+
y={pop.labelY}
|
|
280
|
+
text-anchor="middle"
|
|
281
|
+
>
|
|
282
|
+
{pop.datum.label}
|
|
283
|
+
</text>
|
|
284
|
+
{:else}
|
|
285
|
+
<text
|
|
286
|
+
class="st-lollipopChart__categoryLabel"
|
|
287
|
+
x={pop.labelX}
|
|
288
|
+
y={pop.labelY}
|
|
289
|
+
text-anchor="end"
|
|
290
|
+
dominant-baseline="middle"
|
|
291
|
+
>
|
|
292
|
+
{pop.datum.label}
|
|
293
|
+
</text>
|
|
294
|
+
{/if}
|
|
295
|
+
{/each}
|
|
296
|
+
|
|
297
|
+
<!-- stems + dots (decorative, inside aria-hidden SVG) -->
|
|
298
|
+
{#each lollipops as pop, i (pop.datum.label)}
|
|
299
|
+
<line
|
|
300
|
+
class="st-lollipopChart__stem"
|
|
301
|
+
x1={pop.stemX1}
|
|
302
|
+
y1={pop.stemY1}
|
|
303
|
+
x2={pop.stemX2}
|
|
304
|
+
y2={pop.stemY2}
|
|
305
|
+
/>
|
|
306
|
+
<circle
|
|
307
|
+
class="st-lollipopChart__dot st-lollipopChart__dot--{pop.tone}"
|
|
308
|
+
cx={pop.cx}
|
|
309
|
+
cy={pop.cy}
|
|
310
|
+
r={DOT_RADIUS}
|
|
311
|
+
data-chart-index={i}
|
|
312
|
+
/>
|
|
313
|
+
<!-- value label near the dot, colour kept readable via contrastTextForTone -->
|
|
314
|
+
<text
|
|
315
|
+
class="st-lollipopChart__valueLabel"
|
|
316
|
+
x={pop.cx}
|
|
317
|
+
y={orientation === "vertical" ? pop.cy - DOT_RADIUS - 4 : pop.cy}
|
|
318
|
+
dx={orientation === "vertical" ? 0 : DOT_RADIUS + 4}
|
|
319
|
+
text-anchor={orientation === "vertical" ? "middle" : "start"}
|
|
320
|
+
dominant-baseline={orientation === "vertical" ? "auto" : "middle"}
|
|
321
|
+
style="fill: {contrastTextForTone(pop.tone)}"
|
|
322
|
+
>
|
|
323
|
+
{formatTick(pop.datum.value)}
|
|
324
|
+
</text>
|
|
325
|
+
{/each}
|
|
326
|
+
</svg>
|
|
327
|
+
</div>
|
|
328
|
+
|
|
329
|
+
<ChartDataList {label} items={dataValueItems} />
|
|
330
|
+
|
|
331
|
+
{#if hoveredIndex !== null && lollipops[hoveredIndex]}
|
|
332
|
+
{@const pop = lollipops[hoveredIndex]}
|
|
333
|
+
<div
|
|
334
|
+
class="st-lollipopChart__tooltip"
|
|
335
|
+
role="presentation"
|
|
336
|
+
style="left: {(pop.cx / width) * 100}%; top: {(pop.cy / height) * 100}%"
|
|
337
|
+
>
|
|
338
|
+
<span class="st-lollipopChart__tooltipLabel">{pop.datum.label}</span>
|
|
339
|
+
<span class="st-lollipopChart__tooltipValue">{pop.datum.value}</span>
|
|
340
|
+
</div>
|
|
341
|
+
{/if}
|
|
342
|
+
</div>
|
|
343
|
+
|
|
344
|
+
<style>
|
|
345
|
+
.st-lollipopChart {
|
|
346
|
+
color: var(--st-semantic-text-secondary);
|
|
347
|
+
display: block;
|
|
348
|
+
font-family: inherit;
|
|
349
|
+
position: relative;
|
|
350
|
+
width: 100%;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.st-lollipopChart svg {
|
|
354
|
+
display: block;
|
|
355
|
+
overflow: visible;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.st-lollipopChart__visual {
|
|
359
|
+
display: block;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.st-lollipopChart__grid {
|
|
363
|
+
stroke: var(--st-component-lollipopChart-gridStroke, var(--st-semantic-border-subtle));
|
|
364
|
+
stroke-dasharray: 2 3;
|
|
365
|
+
stroke-width: 1;
|
|
366
|
+
opacity: 0.7;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.st-lollipopChart__axis {
|
|
370
|
+
stroke: var(--st-component-lollipopChart-axisStroke, var(--st-semantic-border-subtle));
|
|
371
|
+
stroke-width: 1;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
.st-lollipopChart__tickLabel,
|
|
375
|
+
.st-lollipopChart__categoryLabel {
|
|
376
|
+
fill: var(--st-component-lollipopChart-labelColor, var(--st-semantic-text-secondary));
|
|
377
|
+
font-size: 0.6875rem;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.st-lollipopChart__valueLabel {
|
|
381
|
+
font-size: 0.625rem;
|
|
382
|
+
font-weight: 600;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.st-lollipopChart__stem {
|
|
386
|
+
stroke: var(--st-semantic-border-interactive, var(--st-semantic-border-subtle));
|
|
387
|
+
stroke-width: 1.5;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.st-lollipopChart__dot {
|
|
391
|
+
cursor: pointer;
|
|
392
|
+
transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.st-lollipopChart__dot:hover {
|
|
396
|
+
opacity: 0.82;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.st-lollipopChart__dot--category1 { fill: var(--st-semantic-data-category1); }
|
|
400
|
+
.st-lollipopChart__dot--category2 { fill: var(--st-semantic-data-category2); }
|
|
401
|
+
.st-lollipopChart__dot--category3 { fill: var(--st-semantic-data-category3); }
|
|
402
|
+
.st-lollipopChart__dot--category4 { fill: var(--st-semantic-data-category4); }
|
|
403
|
+
.st-lollipopChart__dot--category5 { fill: var(--st-semantic-data-category5); }
|
|
404
|
+
.st-lollipopChart__dot--category6 { fill: var(--st-semantic-data-category6); }
|
|
405
|
+
.st-lollipopChart__dot--category7 { fill: var(--st-semantic-data-category7); }
|
|
406
|
+
.st-lollipopChart__dot--category8 { fill: var(--st-semantic-data-category8); }
|
|
407
|
+
|
|
408
|
+
.st-lollipopChart__tooltip {
|
|
409
|
+
background: var(--st-component-lollipopChart-tooltipBackground, var(--st-semantic-surface-inverse));
|
|
410
|
+
border-radius: var(--st-radius-sm, 0.25rem);
|
|
411
|
+
color: var(--st-component-lollipopChart-tooltipText, var(--st-semantic-text-inverse));
|
|
412
|
+
display: inline-flex;
|
|
413
|
+
flex-direction: column;
|
|
414
|
+
font-size: 0.75rem;
|
|
415
|
+
gap: 0.125rem;
|
|
416
|
+
line-height: 1.2;
|
|
417
|
+
padding: 0.375rem 0.5rem;
|
|
418
|
+
pointer-events: none;
|
|
419
|
+
position: absolute;
|
|
420
|
+
transform: translate(-50%, calc(-100% - 8px));
|
|
421
|
+
white-space: nowrap;
|
|
422
|
+
z-index: 1;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.st-lollipopChart__tooltipLabel {
|
|
426
|
+
font-weight: 600;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.st-lollipopChart__tooltipValue {
|
|
430
|
+
opacity: 0.85;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
@media (prefers-reduced-motion: reduce) {
|
|
434
|
+
.st-lollipopChart__dot {
|
|
435
|
+
transition: none;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
</style>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LollipopChart — tige fine (ligne) + cercle au sommet, par catégorie.
|
|
3
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner).
|
|
4
|
+
*
|
|
5
|
+
* Props obligatoires :
|
|
6
|
+
* data LollipopChartDatum[] - tableau {label, value, tone?}
|
|
7
|
+
* label string - aria-label du graphique
|
|
8
|
+
*
|
|
9
|
+
* Props optionnelles :
|
|
10
|
+
* orientation "vertical"|"horizontal" (défaut "vertical")
|
|
11
|
+
* width number (défaut 480)
|
|
12
|
+
* height number (défaut 240)
|
|
13
|
+
* domain [number, number] - domaine fixe de l'axe des valeurs
|
|
14
|
+
* class string
|
|
15
|
+
*/
|
|
16
|
+
export type LollipopChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
|
|
17
|
+
export type LollipopChartDatum = {
|
|
18
|
+
label: string;
|
|
19
|
+
value: number;
|
|
20
|
+
tone?: LollipopChartTone;
|
|
21
|
+
};
|
|
22
|
+
type LollipopChartProps = {
|
|
23
|
+
data: LollipopChartDatum[];
|
|
24
|
+
width?: number;
|
|
25
|
+
height?: number;
|
|
26
|
+
orientation?: "vertical" | "horizontal";
|
|
27
|
+
label: string;
|
|
28
|
+
/**
|
|
29
|
+
* Domaine fixe de l'axe des valeurs `[min, max]`. Quand fourni (et fini),
|
|
30
|
+
* l'échelle l'utilise au lieu du min/max dérivé des données — laissant
|
|
31
|
+
* plusieurs LollipopCharts d'une grille partager une échelle. Absent ou
|
|
32
|
+
* invalide → repli sur la plage auto (inchangé).
|
|
33
|
+
*/
|
|
34
|
+
domain?: [number, number];
|
|
35
|
+
class?: string;
|
|
36
|
+
};
|
|
37
|
+
declare const LollipopChart: import("svelte").Component<LollipopChartProps, {}, "">;
|
|
38
|
+
type LollipopChart = ReturnType<typeof LollipopChart>;
|
|
39
|
+
export default LollipopChart;
|
|
40
|
+
//# sourceMappingURL=LollipopChart.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LollipopChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/LollipopChart.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAOF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAuOJ,QAAA,MAAM,aAAa,wDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* ParetoChart — barres triées décroissantes + courbe cumulée en % (2e axe).
|
|
4
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner).
|
|
5
|
+
*
|
|
6
|
+
* Props obligatoires :
|
|
7
|
+
* data ParetoChartDatum[] - tableau {label, value, tone?}
|
|
8
|
+
* label string - aria-label du graphique
|
|
9
|
+
*
|
|
10
|
+
* Props optionnelles :
|
|
11
|
+
* width number (défaut 480)
|
|
12
|
+
* height number (défaut 240)
|
|
13
|
+
* class string
|
|
14
|
+
*/
|
|
15
|
+
export type ParetoChartTone =
|
|
16
|
+
| "category1"
|
|
17
|
+
| "category2"
|
|
18
|
+
| "category3"
|
|
19
|
+
| "category4"
|
|
20
|
+
| "category5"
|
|
21
|
+
| "category6"
|
|
22
|
+
| "category7"
|
|
23
|
+
| "category8";
|
|
24
|
+
|
|
25
|
+
export type ParetoChartDatum = {
|
|
26
|
+
label: string;
|
|
27
|
+
value: number;
|
|
28
|
+
tone?: ParetoChartTone;
|
|
29
|
+
};
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<script lang="ts">
|
|
33
|
+
import ChartDataList from "./ChartDataList.svelte";
|
|
34
|
+
|
|
35
|
+
type ParetoChartProps = {
|
|
36
|
+
data: ParetoChartDatum[];
|
|
37
|
+
width?: number;
|
|
38
|
+
height?: number;
|
|
39
|
+
label: string;
|
|
40
|
+
class?: string;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
let {
|
|
44
|
+
data = [],
|
|
45
|
+
width = 480,
|
|
46
|
+
height = 240,
|
|
47
|
+
label,
|
|
48
|
+
class: className
|
|
49
|
+
}: ParetoChartProps = $props();
|
|
50
|
+
|
|
51
|
+
// Right margin larger than BarChart's to host the % axis labels.
|
|
52
|
+
const MARGIN = { top: 12, right: 44, bottom: 32, left: 44 };
|
|
53
|
+
const DOT_RADIUS = 4;
|
|
54
|
+
|
|
55
|
+
function niceTicks(min: number, max: number, target = 5): number[] {
|
|
56
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || min === max) {
|
|
57
|
+
const base = Number.isFinite(max) ? max : 0;
|
|
58
|
+
return [base];
|
|
59
|
+
}
|
|
60
|
+
const range = max - min;
|
|
61
|
+
const rough = range / Math.max(target - 1, 1);
|
|
62
|
+
const pow = Math.pow(10, Math.floor(Math.log10(rough)));
|
|
63
|
+
const norm = rough / pow;
|
|
64
|
+
let step: number;
|
|
65
|
+
if (norm < 1.5) step = 1 * pow;
|
|
66
|
+
else if (norm < 3) step = 2 * pow;
|
|
67
|
+
else if (norm < 7) step = 5 * pow;
|
|
68
|
+
else step = 10 * pow;
|
|
69
|
+
const start = Math.floor(min / step) * step;
|
|
70
|
+
const end = Math.ceil(max / step) * step;
|
|
71
|
+
const ticks: number[] = [];
|
|
72
|
+
for (let v = start; v <= end + step / 2; v += step) {
|
|
73
|
+
ticks.push(Number(v.toFixed(10)));
|
|
74
|
+
}
|
|
75
|
+
return ticks;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function scaleLinear(v: number, d0: number, d1: number, r0: number, r1: number) {
|
|
79
|
+
if (d1 === d0) return r0;
|
|
80
|
+
return r0 + ((v - d0) * (r1 - r0)) / (d1 - d0);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function formatTick(v: number): string {
|
|
84
|
+
if (Math.abs(v) >= 1000) return `${(v / 1000).toFixed(v % 1000 === 0 ? 0 : 1)}k`;
|
|
85
|
+
if (Number.isInteger(v)) return String(v);
|
|
86
|
+
return v.toFixed(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
let hoveredIndex: number | null = $state(null);
|
|
90
|
+
|
|
91
|
+
// Valid data: finite, non-negative value (Pareto cumulative % assumes
|
|
92
|
+
// non-negative magnitudes). Sorted descending by value.
|
|
93
|
+
const sortedData = $derived(
|
|
94
|
+
data
|
|
95
|
+
.filter((d) => Number.isFinite(d.value) && d.value >= 0)
|
|
96
|
+
.slice()
|
|
97
|
+
.sort((a, b) => b.value - a.value)
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
const total = $derived(sortedData.reduce((acc, d) => acc + d.value, 0));
|
|
101
|
+
|
|
102
|
+
const scales = $derived.by(() => {
|
|
103
|
+
const values = sortedData.map((d) => d.value);
|
|
104
|
+
const ticks = niceTicks(0, Math.max(0, ...values), 5);
|
|
105
|
+
const domainMin = ticks[0];
|
|
106
|
+
const domainMax = ticks[ticks.length - 1];
|
|
107
|
+
const plotWidth = Math.max(width - MARGIN.left - MARGIN.right, 1);
|
|
108
|
+
const plotHeight = Math.max(height - MARGIN.top - MARGIN.bottom, 1);
|
|
109
|
+
return { ticks, domainMin, domainMax, plotWidth, plotHeight };
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
type ParetoEntry = {
|
|
113
|
+
datum: ParetoChartDatum;
|
|
114
|
+
tone: ParetoChartTone;
|
|
115
|
+
// bar geometry
|
|
116
|
+
x: number;
|
|
117
|
+
y: number;
|
|
118
|
+
width: number;
|
|
119
|
+
height: number;
|
|
120
|
+
// cumulative point geometry
|
|
121
|
+
cumPercent: number;
|
|
122
|
+
cx: number;
|
|
123
|
+
cy: number;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const entries = $derived.by<ParetoEntry[]>(() => {
|
|
127
|
+
const { domainMin, domainMax, plotWidth, plotHeight } = scales;
|
|
128
|
+
if (sortedData.length === 0) return [];
|
|
129
|
+
const band = plotWidth / sortedData.length;
|
|
130
|
+
const barWidth = band * 0.62;
|
|
131
|
+
const zeroY = scaleLinear(0, domainMin, domainMax, plotHeight, 0);
|
|
132
|
+
let running = 0;
|
|
133
|
+
return sortedData.map((d, i) => {
|
|
134
|
+
running += d.value;
|
|
135
|
+
const cumPercent = total > 0 ? (running / total) * 100 : 0;
|
|
136
|
+
const valueY = scaleLinear(d.value, domainMin, domainMax, plotHeight, 0);
|
|
137
|
+
const y = Math.min(valueY, zeroY);
|
|
138
|
+
const h = Math.abs(zeroY - valueY);
|
|
139
|
+
const x = MARGIN.left + band * i + (band - barWidth) / 2;
|
|
140
|
+
// The % axis maps [0,100] over the full plot height (100% at top).
|
|
141
|
+
const cy = MARGIN.top + scaleLinear(cumPercent, 0, 100, plotHeight, 0);
|
|
142
|
+
return {
|
|
143
|
+
datum: d,
|
|
144
|
+
tone: d.tone ?? "category1",
|
|
145
|
+
x,
|
|
146
|
+
y: MARGIN.top + y,
|
|
147
|
+
width: barWidth,
|
|
148
|
+
height: Math.max(h, 0.5),
|
|
149
|
+
cumPercent,
|
|
150
|
+
cx: MARGIN.left + band * (i + 0.5),
|
|
151
|
+
cy
|
|
152
|
+
};
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
const cumulativePath = $derived(
|
|
157
|
+
entries.map((e, i) => `${i === 0 ? "M" : "L"} ${e.cx} ${e.cy}`).join(" ")
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
const dataValueItems = $derived(
|
|
161
|
+
entries.map(
|
|
162
|
+
(e) => `${e.datum.label}: ${e.datum.value} (${formatTick(e.cumPercent)}% cumulé)`
|
|
163
|
+
)
|
|
164
|
+
);
|
|
165
|
+
|
|
166
|
+
const valueAxisTicks = $derived.by(() => {
|
|
167
|
+
const { ticks, domainMin, domainMax, plotWidth, plotHeight } = scales;
|
|
168
|
+
return ticks.map((tick) => ({
|
|
169
|
+
value: tick,
|
|
170
|
+
x1: MARGIN.left,
|
|
171
|
+
x2: MARGIN.left + plotWidth,
|
|
172
|
+
y: MARGIN.top + scaleLinear(tick, domainMin, domainMax, plotHeight, 0)
|
|
173
|
+
}));
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
// Right (percentage) axis: fixed 0–100 in 25% steps.
|
|
177
|
+
const percentAxisTicks = $derived.by(() => {
|
|
178
|
+
const { plotHeight } = scales;
|
|
179
|
+
return [0, 25, 50, 75, 100].map((pct) => ({
|
|
180
|
+
value: pct,
|
|
181
|
+
y: MARGIN.top + scaleLinear(pct, 0, 100, plotHeight, 0)
|
|
182
|
+
}));
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
function handleLeave() {
|
|
186
|
+
hoveredIndex = null;
|
|
187
|
+
}
|
|
188
|
+
function handleVisualPointerMove(event: PointerEvent) {
|
|
189
|
+
const target = event.target;
|
|
190
|
+
if (!(target instanceof Element)) {
|
|
191
|
+
hoveredIndex = null;
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const index = Number(target.getAttribute("data-chart-index"));
|
|
195
|
+
hoveredIndex = Number.isInteger(index) ? index : null;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const classes = () => ["st-paretoChart", className].filter(Boolean).join(" ");
|
|
199
|
+
</script>
|
|
200
|
+
|
|
201
|
+
<div class={classes()}>
|
|
202
|
+
<div
|
|
203
|
+
class="st-paretoChart__visual"
|
|
204
|
+
role="img"
|
|
205
|
+
aria-label={label}
|
|
206
|
+
onpointermove={handleVisualPointerMove}
|
|
207
|
+
onpointerleave={handleLeave}
|
|
208
|
+
>
|
|
209
|
+
<svg
|
|
210
|
+
viewBox="0 0 {width} {height}"
|
|
211
|
+
preserveAspectRatio="xMidYMid meet"
|
|
212
|
+
width="100%"
|
|
213
|
+
height="100%"
|
|
214
|
+
focusable="false"
|
|
215
|
+
aria-hidden="true"
|
|
216
|
+
>
|
|
217
|
+
<!-- value-axis gridlines + left tick labels -->
|
|
218
|
+
{#each valueAxisTicks as tick (tick.value)}
|
|
219
|
+
<line class="st-paretoChart__grid" x1={tick.x1} x2={tick.x2} y1={tick.y} y2={tick.y} />
|
|
220
|
+
<text
|
|
221
|
+
class="st-paretoChart__tickLabel"
|
|
222
|
+
x={MARGIN.left - 6}
|
|
223
|
+
y={tick.y}
|
|
224
|
+
text-anchor="end"
|
|
225
|
+
dominant-baseline="middle"
|
|
226
|
+
>
|
|
227
|
+
{formatTick(tick.value)}
|
|
228
|
+
</text>
|
|
229
|
+
{/each}
|
|
230
|
+
|
|
231
|
+
<!-- right percentage-axis labels -->
|
|
232
|
+
{#each percentAxisTicks as tick (tick.value)}
|
|
233
|
+
<text
|
|
234
|
+
class="st-paretoChart__percentLabel"
|
|
235
|
+
x={width - MARGIN.right + 6}
|
|
236
|
+
y={tick.y}
|
|
237
|
+
text-anchor="start"
|
|
238
|
+
dominant-baseline="middle"
|
|
239
|
+
>
|
|
240
|
+
{tick.value}%
|
|
241
|
+
</text>
|
|
242
|
+
{/each}
|
|
243
|
+
|
|
244
|
+
<!-- axes -->
|
|
245
|
+
<line
|
|
246
|
+
class="st-paretoChart__axis"
|
|
247
|
+
x1={MARGIN.left}
|
|
248
|
+
x2={MARGIN.left}
|
|
249
|
+
y1={MARGIN.top}
|
|
250
|
+
y2={height - MARGIN.bottom}
|
|
251
|
+
/>
|
|
252
|
+
<line
|
|
253
|
+
class="st-paretoChart__axis"
|
|
254
|
+
x1={width - MARGIN.right}
|
|
255
|
+
x2={width - MARGIN.right}
|
|
256
|
+
y1={MARGIN.top}
|
|
257
|
+
y2={height - MARGIN.bottom}
|
|
258
|
+
/>
|
|
259
|
+
<line
|
|
260
|
+
class="st-paretoChart__axis"
|
|
261
|
+
x1={MARGIN.left}
|
|
262
|
+
x2={width - MARGIN.right}
|
|
263
|
+
y1={height - MARGIN.bottom}
|
|
264
|
+
y2={height - MARGIN.bottom}
|
|
265
|
+
/>
|
|
266
|
+
|
|
267
|
+
<!-- category labels -->
|
|
268
|
+
{#each entries as e (e.datum.label)}
|
|
269
|
+
<text
|
|
270
|
+
class="st-paretoChart__categoryLabel"
|
|
271
|
+
x={e.x + e.width / 2}
|
|
272
|
+
y={height - MARGIN.bottom + 16}
|
|
273
|
+
text-anchor="middle"
|
|
274
|
+
>
|
|
275
|
+
{e.datum.label}
|
|
276
|
+
</text>
|
|
277
|
+
{/each}
|
|
278
|
+
|
|
279
|
+
<!-- bars (decorative, inside aria-hidden SVG) -->
|
|
280
|
+
{#each entries as e, i (e.datum.label)}
|
|
281
|
+
<rect
|
|
282
|
+
class="st-paretoChart__bar st-paretoChart__bar--{e.tone}"
|
|
283
|
+
x={e.x}
|
|
284
|
+
y={e.y}
|
|
285
|
+
width={e.width}
|
|
286
|
+
height={e.height}
|
|
287
|
+
rx="2"
|
|
288
|
+
data-chart-index={i}
|
|
289
|
+
/>
|
|
290
|
+
{/each}
|
|
291
|
+
|
|
292
|
+
<!-- cumulative % line + dots -->
|
|
293
|
+
{#if entries.length > 0}
|
|
294
|
+
<path class="st-paretoChart__cumLine" d={cumulativePath} fill="none" />
|
|
295
|
+
{#each entries as e, i (e.datum.label)}
|
|
296
|
+
<circle
|
|
297
|
+
class="st-paretoChart__cumDot"
|
|
298
|
+
cx={e.cx}
|
|
299
|
+
cy={e.cy}
|
|
300
|
+
r={DOT_RADIUS}
|
|
301
|
+
data-chart-index={i}
|
|
302
|
+
/>
|
|
303
|
+
{/each}
|
|
304
|
+
{/if}
|
|
305
|
+
</svg>
|
|
306
|
+
</div>
|
|
307
|
+
|
|
308
|
+
<ChartDataList {label} items={dataValueItems} />
|
|
309
|
+
|
|
310
|
+
{#if hoveredIndex !== null && entries[hoveredIndex]}
|
|
311
|
+
{@const e = entries[hoveredIndex]}
|
|
312
|
+
<div
|
|
313
|
+
class="st-paretoChart__tooltip"
|
|
314
|
+
role="presentation"
|
|
315
|
+
style="left: {(e.cx / width) * 100}%; top: {(e.cy / height) * 100}%"
|
|
316
|
+
>
|
|
317
|
+
<span class="st-paretoChart__tooltipLabel">{e.datum.label}</span>
|
|
318
|
+
<span class="st-paretoChart__tooltipValue">{e.datum.value} · {formatTick(e.cumPercent)}%</span>
|
|
319
|
+
</div>
|
|
320
|
+
{/if}
|
|
321
|
+
</div>
|
|
322
|
+
|
|
323
|
+
<style>
|
|
324
|
+
.st-paretoChart {
|
|
325
|
+
color: var(--st-semantic-text-secondary);
|
|
326
|
+
display: block;
|
|
327
|
+
font-family: inherit;
|
|
328
|
+
position: relative;
|
|
329
|
+
width: 100%;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.st-paretoChart svg {
|
|
333
|
+
display: block;
|
|
334
|
+
overflow: visible;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.st-paretoChart__visual {
|
|
338
|
+
display: block;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.st-paretoChart__grid {
|
|
342
|
+
stroke: var(--st-component-paretoChart-gridStroke, var(--st-semantic-border-subtle));
|
|
343
|
+
stroke-dasharray: 2 3;
|
|
344
|
+
stroke-width: 1;
|
|
345
|
+
opacity: 0.7;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.st-paretoChart__axis {
|
|
349
|
+
stroke: var(--st-component-paretoChart-axisStroke, var(--st-semantic-border-subtle));
|
|
350
|
+
stroke-width: 1;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.st-paretoChart__tickLabel,
|
|
354
|
+
.st-paretoChart__categoryLabel,
|
|
355
|
+
.st-paretoChart__percentLabel {
|
|
356
|
+
fill: var(--st-component-paretoChart-labelColor, var(--st-semantic-text-secondary));
|
|
357
|
+
font-size: 0.6875rem;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.st-paretoChart__bar {
|
|
361
|
+
cursor: pointer;
|
|
362
|
+
transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.st-paretoChart__bar:hover {
|
|
366
|
+
opacity: 0.82;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
.st-paretoChart__bar--category1 { fill: var(--st-semantic-data-category1); }
|
|
370
|
+
.st-paretoChart__bar--category2 { fill: var(--st-semantic-data-category2); }
|
|
371
|
+
.st-paretoChart__bar--category3 { fill: var(--st-semantic-data-category3); }
|
|
372
|
+
.st-paretoChart__bar--category4 { fill: var(--st-semantic-data-category4); }
|
|
373
|
+
.st-paretoChart__bar--category5 { fill: var(--st-semantic-data-category5); }
|
|
374
|
+
.st-paretoChart__bar--category6 { fill: var(--st-semantic-data-category6); }
|
|
375
|
+
.st-paretoChart__bar--category7 { fill: var(--st-semantic-data-category7); }
|
|
376
|
+
.st-paretoChart__bar--category8 { fill: var(--st-semantic-data-category8); }
|
|
377
|
+
|
|
378
|
+
.st-paretoChart__cumLine {
|
|
379
|
+
stroke: var(--st-semantic-action-primary, var(--st-semantic-border-interactive));
|
|
380
|
+
stroke-width: 2;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.st-paretoChart__cumDot {
|
|
384
|
+
cursor: pointer;
|
|
385
|
+
fill: var(--st-semantic-action-primary, var(--st-semantic-border-interactive));
|
|
386
|
+
transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.st-paretoChart__cumDot:hover {
|
|
390
|
+
opacity: 0.82;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.st-paretoChart__tooltip {
|
|
394
|
+
background: var(--st-component-paretoChart-tooltipBackground, var(--st-semantic-surface-inverse));
|
|
395
|
+
border-radius: var(--st-radius-sm, 0.25rem);
|
|
396
|
+
color: var(--st-component-paretoChart-tooltipText, var(--st-semantic-text-inverse));
|
|
397
|
+
display: inline-flex;
|
|
398
|
+
flex-direction: column;
|
|
399
|
+
font-size: 0.75rem;
|
|
400
|
+
gap: 0.125rem;
|
|
401
|
+
line-height: 1.2;
|
|
402
|
+
padding: 0.375rem 0.5rem;
|
|
403
|
+
pointer-events: none;
|
|
404
|
+
position: absolute;
|
|
405
|
+
transform: translate(-50%, calc(-100% - 8px));
|
|
406
|
+
white-space: nowrap;
|
|
407
|
+
z-index: 1;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.st-paretoChart__tooltipLabel {
|
|
411
|
+
font-weight: 600;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
.st-paretoChart__tooltipValue {
|
|
415
|
+
opacity: 0.85;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
@media (prefers-reduced-motion: reduce) {
|
|
419
|
+
.st-paretoChart__bar,
|
|
420
|
+
.st-paretoChart__cumDot {
|
|
421
|
+
transition: none;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
</style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ParetoChart — barres triées décroissantes + courbe cumulée en % (2e axe).
|
|
3
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner).
|
|
4
|
+
*
|
|
5
|
+
* Props obligatoires :
|
|
6
|
+
* data ParetoChartDatum[] - tableau {label, value, tone?}
|
|
7
|
+
* label string - aria-label du graphique
|
|
8
|
+
*
|
|
9
|
+
* Props optionnelles :
|
|
10
|
+
* width number (défaut 480)
|
|
11
|
+
* height number (défaut 240)
|
|
12
|
+
* class string
|
|
13
|
+
*/
|
|
14
|
+
export type ParetoChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
|
|
15
|
+
export type ParetoChartDatum = {
|
|
16
|
+
label: string;
|
|
17
|
+
value: number;
|
|
18
|
+
tone?: ParetoChartTone;
|
|
19
|
+
};
|
|
20
|
+
type ParetoChartProps = {
|
|
21
|
+
data: ParetoChartDatum[];
|
|
22
|
+
width?: number;
|
|
23
|
+
height?: number;
|
|
24
|
+
label: string;
|
|
25
|
+
class?: string;
|
|
26
|
+
};
|
|
27
|
+
declare const ParetoChart: import("svelte").Component<ParetoChartProps, {}, "">;
|
|
28
|
+
type ParetoChart = ReturnType<typeof ParetoChart>;
|
|
29
|
+
export default ParetoChart;
|
|
30
|
+
//# sourceMappingURL=ParetoChart.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParetoChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/ParetoChart.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB,CAAC;AAMF,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkOJ,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export { default as ParallelCoordinatesChart } from "./ParallelCoordinatesChart.
|
|
|
5
5
|
export { default as CandlestickChart } from "./CandlestickChart.svelte";
|
|
6
6
|
export { default as CalendarHeatmapChart } from "./CalendarHeatmapChart.svelte";
|
|
7
7
|
export { default as BumpChart } from "./BumpChart.svelte";
|
|
8
|
+
export { default as LollipopChart } from "./LollipopChart.svelte";
|
|
9
|
+
export { default as ParetoChart } from "./ParetoChart.svelte";
|
|
8
10
|
export { default as Alert } from "./Alert.svelte";
|
|
9
11
|
export { default as AreaChart } from "./AreaChart.svelte";
|
|
10
12
|
export { default as AspectRatio } from "./AspectRatio.svelte";
|
|
@@ -50,6 +52,7 @@ export { default as Flex } from "./Flex.svelte";
|
|
|
50
52
|
export { default as Footer } from "./Footer.svelte";
|
|
51
53
|
export { default as ForceGraph } from "./ForceGraph.svelte";
|
|
52
54
|
export { default as GraphLegend } from "./GraphLegend.svelte";
|
|
55
|
+
export { default as Grid } from "./Grid.svelte";
|
|
53
56
|
export { default as Form } from "./Form.svelte";
|
|
54
57
|
export { default as FormGroup } from "./FormGroup.svelte";
|
|
55
58
|
export { default as FunnelChart } from "./FunnelChart.svelte";
|
|
@@ -153,6 +156,8 @@ export type { ParallelCoordinatesChartTone, ParallelAxis } from "./ParallelCoord
|
|
|
153
156
|
export type { CandlestickChartDatum } from "./CandlestickChart.svelte";
|
|
154
157
|
export type { CalendarHeatmapChartDatum } from "./CalendarHeatmapChart.svelte";
|
|
155
158
|
export type { BumpChartTone, BumpChartSeries } from "./BumpChart.svelte";
|
|
159
|
+
export type { LollipopChartTone, LollipopChartDatum } from "./LollipopChart.svelte";
|
|
160
|
+
export type { ParetoChartTone, ParetoChartDatum } from "./ParetoChart.svelte";
|
|
156
161
|
export type { TreemapChartTone, TreemapChartDatum, TreemapTiling } from "./TreemapChart.svelte";
|
|
157
162
|
export type { KpiCardSize, KpiCardTrend, KpiCardFormat, KpiCardDeltaFormat, KpiCardTone } from "./KpiCard.svelte";
|
|
158
163
|
export type { BreadcrumbItem } from "./Breadcrumb.svelte";
|
|
@@ -200,6 +205,7 @@ export type { InlineProps } from "./Inline.svelte";
|
|
|
200
205
|
export type { ContainerProps, ContainerSize } from "./Container.svelte";
|
|
201
206
|
export type { RowProps } from "./Row.svelte";
|
|
202
207
|
export type { ColProps, ColSpan } from "./Col.svelte";
|
|
208
|
+
export type { GridProps } from "./Grid.svelte";
|
|
203
209
|
export type { HiddenProps, HiddenBreakpoint } from "./Hidden.svelte";
|
|
204
210
|
export type { DividerProps, DividerOrientation, DividerVariant } from "./Divider.svelte";
|
|
205
211
|
export type { AvatarSize, AvatarShape, AvatarTone } from "./Avatar.svelte";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,8 @@ export { default as ParallelCoordinatesChart } from "./ParallelCoordinatesChart.
|
|
|
5
5
|
export { default as CandlestickChart } from "./CandlestickChart.svelte";
|
|
6
6
|
export { default as CalendarHeatmapChart } from "./CalendarHeatmapChart.svelte";
|
|
7
7
|
export { default as BumpChart } from "./BumpChart.svelte";
|
|
8
|
+
export { default as LollipopChart } from "./LollipopChart.svelte";
|
|
9
|
+
export { default as ParetoChart } from "./ParetoChart.svelte";
|
|
8
10
|
export { default as Alert } from "./Alert.svelte";
|
|
9
11
|
export { default as AreaChart } from "./AreaChart.svelte";
|
|
10
12
|
export { default as AspectRatio } from "./AspectRatio.svelte";
|
|
@@ -50,6 +52,7 @@ export { default as Flex } from "./Flex.svelte";
|
|
|
50
52
|
export { default as Footer } from "./Footer.svelte";
|
|
51
53
|
export { default as ForceGraph } from "./ForceGraph.svelte";
|
|
52
54
|
export { default as GraphLegend } from "./GraphLegend.svelte";
|
|
55
|
+
export { default as Grid } from "./Grid.svelte";
|
|
53
56
|
export { default as Form } from "./Form.svelte";
|
|
54
57
|
export { default as FormGroup } from "./FormGroup.svelte";
|
|
55
58
|
export { default as FunnelChart } from "./FunnelChart.svelte";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentropic/design-system-svelte",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@lucide/svelte": "^0.562.0",
|
|
30
|
-
"@sentropic/design-system-themes": "0.
|
|
30
|
+
"@sentropic/design-system-themes": "0.11.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"svelte": "^5.53.2"
|