@sentropic/design-system-svelte 0.26.0 → 0.28.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.
@@ -0,0 +1,396 @@
1
+ <script lang="ts" module>
2
+ /**
3
+ * ChordDiagram - API canonique (référence Svelte, React/Vue doivent s'aligner)
4
+ *
5
+ * Représente des flux pondérés entre nœuds répartis sur un cercle. Chaque nœud
6
+ * occupe un arc proportionnel à la somme de ses flux (entrants + sortants) ;
7
+ * chaque flux est un ruban (path SVG quadratique) reliant les deux arcs.
8
+ *
9
+ * Props obligatoires :
10
+ * data ChordDiagramFlow[] - liste de flux {from, to, value}
11
+ * from/to = identifiants de nœuds (string) ;
12
+ * un nœud est créé pour chaque identifiant cité.
13
+ * label string - aria-label du graphique
14
+ *
15
+ * Props optionnelles :
16
+ * labels? Record<string,string> - libellés d'affichage par identifiant de
17
+ * nœud (sinon l'identifiant est utilisé)
18
+ * width number (défaut 360) - largeur du viewBox en px
19
+ * height number (défaut 360) - hauteur du viewBox en px
20
+ * class string - classe CSS supplémentaire
21
+ *
22
+ * Garde : seuls les flux dont `value` est finie et > 0 sont pris en compte.
23
+ * Les flux NaN / Infinity / négatifs sont ignorés silencieusement (pas de crash).
24
+ */
25
+ export type ChordDiagramTone =
26
+ | "category1"
27
+ | "category2"
28
+ | "category3"
29
+ | "category4"
30
+ | "category5"
31
+ | "category6"
32
+ | "category7"
33
+ | "category8";
34
+
35
+ export type ChordDiagramFlow = {
36
+ from: string;
37
+ to: string;
38
+ value: number;
39
+ };
40
+ </script>
41
+
42
+ <script lang="ts">
43
+ import ChartDataList from "./ChartDataList.svelte";
44
+ import { contrastTextForTone } from "./chartContrast.js";
45
+
46
+ type ChordDiagramProps = {
47
+ data: ChordDiagramFlow[];
48
+ label: string;
49
+ labels?: Record<string, string>;
50
+ width?: number;
51
+ height?: number;
52
+ class?: string;
53
+ };
54
+
55
+ let {
56
+ data,
57
+ label,
58
+ labels,
59
+ width = 360,
60
+ height = 360,
61
+ class: className
62
+ }: ChordDiagramProps = $props();
63
+
64
+ const TONES = [
65
+ "category1",
66
+ "category2",
67
+ "category3",
68
+ "category4",
69
+ "category5",
70
+ "category6",
71
+ "category7",
72
+ "category8"
73
+ ] as const;
74
+
75
+ const GAP = 0.04; // espace angulaire entre arcs (rad)
76
+ const ARC_WIDTH = 14; // épaisseur de l'anneau d'arcs
77
+
78
+ function magnitude(value: number): number {
79
+ return Number.isFinite(value) && value > 0 ? value : 0;
80
+ }
81
+
82
+ function displayLabel(id: string): string {
83
+ return labels?.[id] ?? id;
84
+ }
85
+
86
+ function polar(cx: number, cy: number, radius: number, angle: number) {
87
+ return { x: cx + radius * Math.cos(angle), y: cy + radius * Math.sin(angle) };
88
+ }
89
+
90
+ function arcPath(cx: number, cy: number, inner: number, outer: number, start: number, end: number): string {
91
+ const large = end - start > Math.PI ? 1 : 0;
92
+ const o0 = polar(cx, cy, outer, start);
93
+ const o1 = polar(cx, cy, outer, end);
94
+ const i1 = polar(cx, cy, inner, end);
95
+ const i0 = polar(cx, cy, inner, start);
96
+ return `M ${o0.x} ${o0.y} A ${outer} ${outer} 0 ${large} 1 ${o1.x} ${o1.y} L ${i1.x} ${i1.y} A ${inner} ${inner} 0 ${large} 0 ${i0.x} ${i0.y} Z`;
97
+ }
98
+
99
+ let hoveredFlowIndex: number | null = $state(null);
100
+
101
+ const layout = $derived.by(() => {
102
+ const cx = width / 2;
103
+ const cy = height / 2;
104
+ const outer = Math.max(Math.min(width, height) / 2 - 6, 1);
105
+ const inner = Math.max(outer - ARC_WIDTH, 1);
106
+ const ribbonRadius = Math.max(inner - 2, 0);
107
+
108
+ // Flux valides + ordre d'apparition des nœuds (stable).
109
+ const flows = data
110
+ .map((flow, index) => ({ flow, index, value: magnitude(flow.value) }))
111
+ .filter((entry) => entry.value > 0);
112
+
113
+ const order: string[] = [];
114
+ const total = new Map<string, number>();
115
+ for (const { flow, value } of flows) {
116
+ for (const id of [flow.from, flow.to]) {
117
+ if (!total.has(id)) {
118
+ total.set(id, 0);
119
+ order.push(id);
120
+ }
121
+ }
122
+ total.set(flow.from, (total.get(flow.from) ?? 0) + value);
123
+ total.set(flow.to, (total.get(flow.to) ?? 0) + value);
124
+ }
125
+
126
+ const grandTotal = order.reduce((sum, id) => sum + (total.get(id) ?? 0), 0);
127
+ if (order.length === 0 || grandTotal <= 0) {
128
+ return { cx, cy, inner, outer, arcs: [], ribbons: [] };
129
+ }
130
+
131
+ // Répartition angulaire : part proportionnelle - gap par nœud.
132
+ const totalGap = GAP * order.length;
133
+ const usable = Math.max(Math.PI * 2 - totalGap, 0.0001);
134
+ type ArcInfo = {
135
+ id: string;
136
+ tone: ChordDiagramTone;
137
+ start: number;
138
+ end: number;
139
+ mid: number;
140
+ cursor: number; // avance pour positionner les rubans
141
+ };
142
+ const arcMap = new Map<string, ArcInfo>();
143
+ const arcs: Array<{
144
+ id: string;
145
+ tone: ChordDiagramTone;
146
+ value: number;
147
+ span: number;
148
+ path: string;
149
+ labelX: number;
150
+ labelY: number;
151
+ labelAngle: number;
152
+ textColor: string;
153
+ }> = [];
154
+
155
+ let angle = -Math.PI / 2;
156
+ order.forEach((id, index) => {
157
+ const span = (usable * (total.get(id) ?? 0)) / grandTotal;
158
+ const start = angle + GAP / 2;
159
+ const end = start + span;
160
+ angle = end + GAP / 2;
161
+ const tone = TONES[index % TONES.length];
162
+ const mid = (start + end) / 2;
163
+ arcMap.set(id, { id, tone, start, end, mid, cursor: start });
164
+ const labelRadius = (inner + outer) / 2;
165
+ const labelPoint = polar(cx, cy, labelRadius, mid);
166
+ arcs.push({
167
+ id,
168
+ tone,
169
+ value: total.get(id) ?? 0,
170
+ span,
171
+ path: arcPath(cx, cy, inner, outer, start, end),
172
+ labelX: labelPoint.x,
173
+ labelY: labelPoint.y,
174
+ labelAngle: mid,
175
+ textColor: contrastTextForTone(tone)
176
+ });
177
+ });
178
+
179
+ const maxValue = Math.max(1, ...flows.map((entry) => entry.value));
180
+ const ribbons = flows.map(({ flow, value, index }) => {
181
+ const source = arcMap.get(flow.from)!;
182
+ const target = arcMap.get(flow.to)!;
183
+ const sourceSpan = (usable * value) / grandTotal;
184
+ const targetSpan = (usable * value) / grandTotal;
185
+ const s0 = source.cursor;
186
+ const s1 = source.cursor + sourceSpan;
187
+ source.cursor = s1;
188
+ const t0 = target.cursor;
189
+ const t1 = target.cursor + targetSpan;
190
+ target.cursor = t1;
191
+
192
+ const ps0 = polar(cx, cy, ribbonRadius, s0);
193
+ const ps1 = polar(cx, cy, ribbonRadius, s1);
194
+ const pt0 = polar(cx, cy, ribbonRadius, t0);
195
+ const pt1 = polar(cx, cy, ribbonRadius, t1);
196
+
197
+ // Ruban : deux courbes quadratiques passant par le centre.
198
+ const path =
199
+ `M ${ps0.x} ${ps0.y} ` +
200
+ `Q ${cx} ${cy} ${pt1.x} ${pt1.y} ` +
201
+ `A ${ribbonRadius} ${ribbonRadius} 0 0 1 ${pt0.x} ${pt0.y} ` +
202
+ `Q ${cx} ${cy} ${ps1.x} ${ps1.y} ` +
203
+ `A ${ribbonRadius} ${ribbonRadius} 0 0 0 ${ps0.x} ${ps0.y} Z`;
204
+
205
+ return {
206
+ index,
207
+ from: flow.from,
208
+ to: flow.to,
209
+ value,
210
+ tone: source.tone,
211
+ strokeWidth: Math.max(1, (value / maxValue) * 4),
212
+ path,
213
+ midX: cx,
214
+ midY: cy
215
+ };
216
+ });
217
+
218
+ return { cx, cy, inner, outer, arcs, ribbons };
219
+ });
220
+
221
+ const dataValueItems = $derived(
222
+ data
223
+ .filter((flow) => magnitude(flow.value) > 0)
224
+ .map((flow) => `${displayLabel(flow.from)} -> ${displayLabel(flow.to)}: ${flow.value}`)
225
+ );
226
+
227
+ function handleVisualPointerMove(event: PointerEvent) {
228
+ const target = event.target;
229
+ if (!(target instanceof Element)) {
230
+ hoveredFlowIndex = null;
231
+ return;
232
+ }
233
+ const index = Number(target.getAttribute("data-flow-index"));
234
+ hoveredFlowIndex = Number.isInteger(index) ? index : null;
235
+ }
236
+
237
+ const classes = () => ["st-chordDiagram", className].filter(Boolean).join(" ");
238
+ </script>
239
+
240
+ <div class={classes()}>
241
+ <div
242
+ class="st-chordDiagram__visual"
243
+ role="img"
244
+ aria-label={label}
245
+ onpointermove={handleVisualPointerMove}
246
+ onpointerleave={() => (hoveredFlowIndex = null)}
247
+ >
248
+ <svg
249
+ viewBox="0 0 {width} {height}"
250
+ preserveAspectRatio="xMidYMid meet"
251
+ width="100%"
252
+ height="100%"
253
+ focusable="false"
254
+ aria-hidden="true"
255
+ >
256
+ <g class="st-chordDiagram__ribbons">
257
+ {#each layout.ribbons as ribbon (ribbon.index)}
258
+ <path
259
+ class="st-chordDiagram__ribbon st-chordDiagram__ribbon--{ribbon.tone}"
260
+ class:st-chordDiagram__ribbon--dim={hoveredFlowIndex !== null && hoveredFlowIndex !== ribbon.index}
261
+ d={ribbon.path}
262
+ stroke-width={ribbon.strokeWidth}
263
+ data-flow-index={ribbon.index}
264
+ />
265
+ {/each}
266
+ </g>
267
+
268
+ <g class="st-chordDiagram__arcs">
269
+ {#each layout.arcs as arc (arc.id)}
270
+ <path
271
+ class="st-chordDiagram__arc st-chordDiagram__arc--{arc.tone}"
272
+ d={arc.path}
273
+ />
274
+ {#if arc.span > 0.34}
275
+ <text
276
+ class="st-chordDiagram__arcLabel"
277
+ x={arc.labelX}
278
+ y={arc.labelY}
279
+ text-anchor="middle"
280
+ dominant-baseline="middle"
281
+ fill={arc.textColor}
282
+ >
283
+ {displayLabel(arc.id)}
284
+ </text>
285
+ {/if}
286
+ {/each}
287
+ </g>
288
+ </svg>
289
+ </div>
290
+
291
+ <ChartDataList {label} items={dataValueItems} />
292
+
293
+ {#if hoveredFlowIndex !== null && layout.ribbons.find((r) => r.index === hoveredFlowIndex)}
294
+ {@const ribbon = layout.ribbons.find((r) => r.index === hoveredFlowIndex)!}
295
+ <div
296
+ class="st-chordDiagram__tooltip"
297
+ role="presentation"
298
+ style="left: {(ribbon.midX / width) * 100}%; top: {(ribbon.midY / height) * 100}%"
299
+ >
300
+ <span class="st-chordDiagram__tooltipLabel">{displayLabel(ribbon.from)} -> {displayLabel(ribbon.to)}</span>
301
+ <span class="st-chordDiagram__tooltipValue">{ribbon.value}</span>
302
+ </div>
303
+ {/if}
304
+ </div>
305
+
306
+ <style>
307
+ .st-chordDiagram {
308
+ color: var(--st-semantic-text-secondary);
309
+ display: block;
310
+ font-family: inherit;
311
+ max-width: 100%;
312
+ position: relative;
313
+ width: 100%;
314
+ }
315
+
316
+ .st-chordDiagram svg,
317
+ .st-chordDiagram__visual {
318
+ display: block;
319
+ overflow: visible;
320
+ }
321
+
322
+ .st-chordDiagram__ribbon {
323
+ cursor: pointer;
324
+ fill-opacity: 0.4;
325
+ stroke-opacity: 0.55;
326
+ transition: opacity 120ms ease;
327
+ }
328
+
329
+ .st-chordDiagram__ribbon:hover {
330
+ fill-opacity: 0.62;
331
+ }
332
+
333
+ .st-chordDiagram__ribbon--dim {
334
+ opacity: 0.18;
335
+ }
336
+
337
+ @media (prefers-reduced-motion: reduce) {
338
+ .st-chordDiagram__ribbon {
339
+ transition: none;
340
+ }
341
+ }
342
+
343
+ .st-chordDiagram__arc {
344
+ stroke: var(--st-semantic-surface-default, Canvas);
345
+ stroke-width: 1;
346
+ }
347
+
348
+ .st-chordDiagram__arc--category1,
349
+ .st-chordDiagram__ribbon--category1 { fill: var(--st-semantic-data-category1); stroke: var(--st-semantic-data-category1); }
350
+ .st-chordDiagram__arc--category2,
351
+ .st-chordDiagram__ribbon--category2 { fill: var(--st-semantic-data-category2); stroke: var(--st-semantic-data-category2); }
352
+ .st-chordDiagram__arc--category3,
353
+ .st-chordDiagram__ribbon--category3 { fill: var(--st-semantic-data-category3); stroke: var(--st-semantic-data-category3); }
354
+ .st-chordDiagram__arc--category4,
355
+ .st-chordDiagram__ribbon--category4 { fill: var(--st-semantic-data-category4); stroke: var(--st-semantic-data-category4); }
356
+ .st-chordDiagram__arc--category5,
357
+ .st-chordDiagram__ribbon--category5 { fill: var(--st-semantic-data-category5); stroke: var(--st-semantic-data-category5); }
358
+ .st-chordDiagram__arc--category6,
359
+ .st-chordDiagram__ribbon--category6 { fill: var(--st-semantic-data-category6); stroke: var(--st-semantic-data-category6); }
360
+ .st-chordDiagram__arc--category7,
361
+ .st-chordDiagram__ribbon--category7 { fill: var(--st-semantic-data-category7); stroke: var(--st-semantic-data-category7); }
362
+ .st-chordDiagram__arc--category8,
363
+ .st-chordDiagram__ribbon--category8 { fill: var(--st-semantic-data-category8); stroke: var(--st-semantic-data-category8); }
364
+
365
+ .st-chordDiagram__arcLabel {
366
+ /* fill calculé par contrastTextForTone() en inline - pas de couleur fixe */
367
+ font-size: 0.7rem;
368
+ font-weight: 600;
369
+ pointer-events: none;
370
+ }
371
+
372
+ .st-chordDiagram__tooltip {
373
+ background: var(--st-semantic-surface-inverse);
374
+ border-radius: var(--st-radius-sm, 0.25rem);
375
+ color: var(--st-semantic-text-inverse);
376
+ display: inline-flex;
377
+ flex-direction: column;
378
+ font-size: 0.75rem;
379
+ gap: 0.125rem;
380
+ line-height: 1.2;
381
+ padding: 0.375rem 0.5rem;
382
+ pointer-events: none;
383
+ position: absolute;
384
+ transform: translate(-50%, -115%);
385
+ white-space: nowrap;
386
+ z-index: 1;
387
+ }
388
+
389
+ .st-chordDiagram__tooltipLabel {
390
+ font-weight: 600;
391
+ }
392
+
393
+ .st-chordDiagram__tooltipValue {
394
+ opacity: 0.85;
395
+ }
396
+ </style>
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ChordDiagram - API canonique (référence Svelte, React/Vue doivent s'aligner)
3
+ *
4
+ * Représente des flux pondérés entre nœuds répartis sur un cercle. Chaque nœud
5
+ * occupe un arc proportionnel à la somme de ses flux (entrants + sortants) ;
6
+ * chaque flux est un ruban (path SVG quadratique) reliant les deux arcs.
7
+ *
8
+ * Props obligatoires :
9
+ * data ChordDiagramFlow[] - liste de flux {from, to, value}
10
+ * from/to = identifiants de nœuds (string) ;
11
+ * un nœud est créé pour chaque identifiant cité.
12
+ * label string - aria-label du graphique
13
+ *
14
+ * Props optionnelles :
15
+ * labels? Record<string,string> - libellés d'affichage par identifiant de
16
+ * nœud (sinon l'identifiant est utilisé)
17
+ * width number (défaut 360) - largeur du viewBox en px
18
+ * height number (défaut 360) - hauteur du viewBox en px
19
+ * class string - classe CSS supplémentaire
20
+ *
21
+ * Garde : seuls les flux dont `value` est finie et > 0 sont pris en compte.
22
+ * Les flux NaN / Infinity / négatifs sont ignorés silencieusement (pas de crash).
23
+ */
24
+ export type ChordDiagramTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
25
+ export type ChordDiagramFlow = {
26
+ from: string;
27
+ to: string;
28
+ value: number;
29
+ };
30
+ type ChordDiagramProps = {
31
+ data: ChordDiagramFlow[];
32
+ label: string;
33
+ labels?: Record<string, string>;
34
+ width?: number;
35
+ height?: number;
36
+ class?: string;
37
+ };
38
+ declare const ChordDiagram: import("svelte").Component<ChordDiagramProps, {}, "">;
39
+ type ChordDiagram = ReturnType<typeof ChordDiagram>;
40
+ export default ChordDiagram;
41
+ //# sourceMappingURL=ChordDiagram.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChordDiagram.svelte.d.ts","sourceRoot":"","sources":["../src/lib/ChordDiagram.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAOF,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAsOJ,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,322 @@
1
+ <script lang="ts" module>
2
+ /**
3
+ * PackedBubblesChart - API canonique (référence Svelte, React/Vue doivent s'aligner)
4
+ *
5
+ * Tasse des cercles dont l'aire est proportionnelle à `value`. Le rayon est
6
+ * calculé par sqrt(value) puis normalisé pour tenir dans le viewBox. Le layout
7
+ * est déterministe (spirale + détection de collision), sans dépendance externe.
8
+ *
9
+ * Props obligatoires :
10
+ * data PackedBubblesChartDatum[] - liste {label, value, tone?}
11
+ * label string - aria-label du graphique
12
+ *
13
+ * Props optionnelles :
14
+ * width number (défaut 360) - largeur du viewBox en px
15
+ * height number (défaut 360) - hauteur du viewBox en px
16
+ * class string - classe CSS supplémentaire
17
+ *
18
+ * Garde : seuls les data dont `value` est finie et > 0 sont rendus. Les NaN /
19
+ * Infinity / valeurs négatives ou nulles sont ignorés (pas de crash).
20
+ * Le label est affiché dans la bulle si elle est assez grande, avec une couleur
21
+ * de texte calculée par contraste (contrastTextForTone).
22
+ */
23
+ export type PackedBubblesChartTone =
24
+ | "category1"
25
+ | "category2"
26
+ | "category3"
27
+ | "category4"
28
+ | "category5"
29
+ | "category6"
30
+ | "category7"
31
+ | "category8";
32
+
33
+ export type PackedBubblesChartDatum = {
34
+ label: string;
35
+ value: number;
36
+ tone?: PackedBubblesChartTone;
37
+ };
38
+ </script>
39
+
40
+ <script lang="ts">
41
+ import ChartDataList from "./ChartDataList.svelte";
42
+ import { contrastTextForTone } from "./chartContrast.js";
43
+
44
+ type PackedBubblesChartProps = {
45
+ data: PackedBubblesChartDatum[];
46
+ label: string;
47
+ width?: number;
48
+ height?: number;
49
+ class?: string;
50
+ };
51
+
52
+ let {
53
+ data,
54
+ label,
55
+ width = 360,
56
+ height = 360,
57
+ class: className
58
+ }: PackedBubblesChartProps = $props();
59
+
60
+ const TONES = [
61
+ "category1",
62
+ "category2",
63
+ "category3",
64
+ "category4",
65
+ "category5",
66
+ "category6",
67
+ "category7",
68
+ "category8"
69
+ ] as const;
70
+
71
+ const PADDING = 2; // espace entre bulles (px)
72
+ const LABEL_MIN_RADIUS = 18; // rayon mini pour afficher le label
73
+
74
+ function magnitude(value: number): number {
75
+ return Number.isFinite(value) && value > 0 ? value : 0;
76
+ }
77
+
78
+ type Bubble = {
79
+ label: string;
80
+ value: number;
81
+ tone: PackedBubblesChartTone;
82
+ textColor: string;
83
+ cx: number;
84
+ cy: number;
85
+ r: number;
86
+ index: number;
87
+ };
88
+
89
+ let hoveredIndex: number | null = $state(null);
90
+
91
+ const bubbles = $derived.by<Bubble[]>(() => {
92
+ const cx = width / 2;
93
+ const cy = height / 2;
94
+
95
+ // Données valides triées par valeur décroissante (les grosses au centre).
96
+ const valid = data
97
+ .map((datum, index) => ({ datum, index, value: magnitude(datum.value) }))
98
+ .filter((entry) => entry.value > 0)
99
+ .sort((a, b) => b.value - a.value);
100
+
101
+ if (valid.length === 0) return [];
102
+
103
+ const maxValue = Math.max(...valid.map((entry) => entry.value));
104
+ // Rayon brut ∝ sqrt(value) ; échelle pour que la plus grosse bulle tienne.
105
+ const limit = Math.max(Math.min(width, height) / 2 - 4, 1);
106
+ const baseMax = Math.sqrt(maxValue);
107
+ const targetMax = Math.min(limit * 0.42, limit);
108
+ const radiusOf = (value: number) => Math.max((Math.sqrt(value) / baseMax) * targetMax, 3);
109
+
110
+ const placed: Array<{ cx: number; cy: number; r: number }> = [];
111
+
112
+ function collides(x: number, y: number, r: number): boolean {
113
+ for (const p of placed) {
114
+ const dx = x - p.cx;
115
+ const dy = y - p.cy;
116
+ const minDist = r + p.r + PADDING;
117
+ if (dx * dx + dy * dy < minDist * minDist) return true;
118
+ }
119
+ return false;
120
+ }
121
+
122
+ const result: Bubble[] = [];
123
+ valid.forEach((entry, order) => {
124
+ const r = radiusOf(entry.value);
125
+ let x = cx;
126
+ let y = cy;
127
+
128
+ if (placed.length > 0) {
129
+ // Spirale d'Archimède déterministe : on avance jusqu'au 1er creux libre.
130
+ const step = Math.max(r * 0.5, 2);
131
+ let angle = order * 2.399963; // angle d'or pour disperser
132
+ let radius = step;
133
+ let found = false;
134
+ // Borne d'itérations généreuse mais finie (pas de boucle infinie).
135
+ for (let i = 0; i < 4000; i += 1) {
136
+ x = cx + radius * Math.cos(angle);
137
+ y = cy + radius * Math.sin(angle);
138
+ if (!collides(x, y, r)) {
139
+ found = true;
140
+ break;
141
+ }
142
+ angle += 0.5;
143
+ radius += step * 0.06;
144
+ }
145
+ if (!found) {
146
+ x = cx + radius * Math.cos(angle);
147
+ y = cy + radius * Math.sin(angle);
148
+ }
149
+ }
150
+
151
+ placed.push({ cx: x, cy: y, r });
152
+ const tone = entry.datum.tone ?? TONES[entry.index % TONES.length];
153
+ result.push({
154
+ label: entry.datum.label,
155
+ value: entry.value,
156
+ tone,
157
+ textColor: contrastTextForTone(tone),
158
+ cx: x,
159
+ cy: y,
160
+ r,
161
+ index: entry.index
162
+ });
163
+ });
164
+
165
+ return result;
166
+ });
167
+
168
+ const dataValueItems = $derived(
169
+ data
170
+ .filter((datum) => magnitude(datum.value) > 0)
171
+ .map((datum) => `${datum.label}: ${datum.value}`)
172
+ );
173
+
174
+ function handleVisualPointerMove(event: PointerEvent) {
175
+ const target = event.target;
176
+ if (!(target instanceof Element)) {
177
+ hoveredIndex = null;
178
+ return;
179
+ }
180
+ const index = Number(target.getAttribute("data-chart-index"));
181
+ hoveredIndex = Number.isInteger(index) ? index : null;
182
+ }
183
+
184
+ const hovered = $derived(
185
+ hoveredIndex !== null ? bubbles.find((b) => b.index === hoveredIndex) : undefined
186
+ );
187
+
188
+ const classes = () => ["st-packedBubblesChart", className].filter(Boolean).join(" ");
189
+ </script>
190
+
191
+ <div class={classes()}>
192
+ <div
193
+ class="st-packedBubblesChart__visual"
194
+ role="img"
195
+ aria-label={label}
196
+ onpointermove={handleVisualPointerMove}
197
+ onpointerleave={() => (hoveredIndex = null)}
198
+ >
199
+ <svg
200
+ viewBox="0 0 {width} {height}"
201
+ preserveAspectRatio="xMidYMid meet"
202
+ width="100%"
203
+ height="100%"
204
+ focusable="false"
205
+ aria-hidden="true"
206
+ >
207
+ {#each bubbles as bubble (bubble.index)}
208
+ <g class="st-packedBubblesChart__bubble" data-chart-index={bubble.index}>
209
+ <circle
210
+ class="st-packedBubblesChart__circle st-packedBubblesChart__circle--{bubble.tone}"
211
+ class:st-packedBubblesChart__circle--dim={hoveredIndex !== null && hoveredIndex !== bubble.index}
212
+ cx={bubble.cx}
213
+ cy={bubble.cy}
214
+ r={bubble.r}
215
+ data-chart-index={bubble.index}
216
+ />
217
+ {#if bubble.r >= LABEL_MIN_RADIUS}
218
+ <text
219
+ class="st-packedBubblesChart__label"
220
+ x={bubble.cx}
221
+ y={bubble.cy}
222
+ text-anchor="middle"
223
+ dominant-baseline="middle"
224
+ fill={bubble.textColor}
225
+ data-chart-index={bubble.index}
226
+ >
227
+ {bubble.label}
228
+ </text>
229
+ {/if}
230
+ </g>
231
+ {/each}
232
+ </svg>
233
+ </div>
234
+
235
+ <ChartDataList {label} items={dataValueItems} />
236
+
237
+ {#if hovered}
238
+ <div
239
+ class="st-packedBubblesChart__tooltip"
240
+ role="presentation"
241
+ style="left: {(hovered.cx / width) * 100}%; top: {((hovered.cy - hovered.r) / height) * 100}%"
242
+ >
243
+ <span class="st-packedBubblesChart__tooltipLabel">{hovered.label}</span>
244
+ <span class="st-packedBubblesChart__tooltipValue">{hovered.value}</span>
245
+ </div>
246
+ {/if}
247
+ </div>
248
+
249
+ <style>
250
+ .st-packedBubblesChart {
251
+ color: var(--st-semantic-text-secondary);
252
+ display: block;
253
+ font-family: inherit;
254
+ max-width: 100%;
255
+ position: relative;
256
+ width: 100%;
257
+ }
258
+
259
+ .st-packedBubblesChart svg,
260
+ .st-packedBubblesChart__visual {
261
+ display: block;
262
+ overflow: visible;
263
+ }
264
+
265
+ .st-packedBubblesChart__circle {
266
+ cursor: pointer;
267
+ stroke: var(--st-semantic-surface-default, Canvas);
268
+ stroke-width: 1.5;
269
+ transition: opacity 120ms ease;
270
+ }
271
+
272
+ .st-packedBubblesChart__circle--dim {
273
+ opacity: 0.4;
274
+ }
275
+
276
+ @media (prefers-reduced-motion: reduce) {
277
+ .st-packedBubblesChart__circle {
278
+ transition: none;
279
+ }
280
+ }
281
+
282
+ .st-packedBubblesChart__circle--category1 { fill: var(--st-semantic-data-category1); }
283
+ .st-packedBubblesChart__circle--category2 { fill: var(--st-semantic-data-category2); }
284
+ .st-packedBubblesChart__circle--category3 { fill: var(--st-semantic-data-category3); }
285
+ .st-packedBubblesChart__circle--category4 { fill: var(--st-semantic-data-category4); }
286
+ .st-packedBubblesChart__circle--category5 { fill: var(--st-semantic-data-category5); }
287
+ .st-packedBubblesChart__circle--category6 { fill: var(--st-semantic-data-category6); }
288
+ .st-packedBubblesChart__circle--category7 { fill: var(--st-semantic-data-category7); }
289
+ .st-packedBubblesChart__circle--category8 { fill: var(--st-semantic-data-category8); }
290
+
291
+ .st-packedBubblesChart__label {
292
+ /* fill calculé par contrastTextForTone() en inline - pas de blanc fixe */
293
+ font-size: 0.7rem;
294
+ font-weight: 600;
295
+ pointer-events: none;
296
+ }
297
+
298
+ .st-packedBubblesChart__tooltip {
299
+ background: var(--st-semantic-surface-inverse);
300
+ border-radius: var(--st-radius-sm, 0.25rem);
301
+ color: var(--st-semantic-text-inverse);
302
+ display: inline-flex;
303
+ flex-direction: column;
304
+ font-size: 0.75rem;
305
+ gap: 0.125rem;
306
+ line-height: 1.2;
307
+ padding: 0.375rem 0.5rem;
308
+ pointer-events: none;
309
+ position: absolute;
310
+ transform: translate(-50%, -115%);
311
+ white-space: nowrap;
312
+ z-index: 1;
313
+ }
314
+
315
+ .st-packedBubblesChart__tooltipLabel {
316
+ font-weight: 600;
317
+ }
318
+
319
+ .st-packedBubblesChart__tooltipValue {
320
+ opacity: 0.85;
321
+ }
322
+ </style>
@@ -0,0 +1,38 @@
1
+ /**
2
+ * PackedBubblesChart - API canonique (référence Svelte, React/Vue doivent s'aligner)
3
+ *
4
+ * Tasse des cercles dont l'aire est proportionnelle à `value`. Le rayon est
5
+ * calculé par sqrt(value) puis normalisé pour tenir dans le viewBox. Le layout
6
+ * est déterministe (spirale + détection de collision), sans dépendance externe.
7
+ *
8
+ * Props obligatoires :
9
+ * data PackedBubblesChartDatum[] - liste {label, value, tone?}
10
+ * label string - aria-label du graphique
11
+ *
12
+ * Props optionnelles :
13
+ * width number (défaut 360) - largeur du viewBox en px
14
+ * height number (défaut 360) - hauteur du viewBox en px
15
+ * class string - classe CSS supplémentaire
16
+ *
17
+ * Garde : seuls les data dont `value` est finie et > 0 sont rendus. Les NaN /
18
+ * Infinity / valeurs négatives ou nulles sont ignorés (pas de crash).
19
+ * Le label est affiché dans la bulle si elle est assez grande, avec une couleur
20
+ * de texte calculée par contraste (contrastTextForTone).
21
+ */
22
+ export type PackedBubblesChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
23
+ export type PackedBubblesChartDatum = {
24
+ label: string;
25
+ value: number;
26
+ tone?: PackedBubblesChartTone;
27
+ };
28
+ type PackedBubblesChartProps = {
29
+ data: PackedBubblesChartDatum[];
30
+ label: string;
31
+ width?: number;
32
+ height?: number;
33
+ class?: string;
34
+ };
35
+ declare const PackedBubblesChart: import("svelte").Component<PackedBubblesChartProps, {}, "">;
36
+ type PackedBubblesChart = ReturnType<typeof PackedBubblesChart>;
37
+ export default PackedBubblesChart;
38
+ //# sourceMappingURL=PackedBubblesChart.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackedBubblesChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/PackedBubblesChart.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B,CAAC;AAOF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkLJ,QAAA,MAAM,kBAAkB,6DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,366 @@
1
+ <script lang="ts" module>
2
+ export type RangeSliderSize = "sm" | "md" | "lg";
3
+
4
+ export type RangeSliderProps = {
5
+ /** Valeur contrôlée [poignée basse, poignée haute]. Non-contrôlé si absent. */
6
+ value?: [number, number];
7
+ /** Valeur initiale en mode non-contrôlé. Défaut [min, max]. */
8
+ defaultValue?: [number, number];
9
+ min?: number;
10
+ max?: number;
11
+ step?: number;
12
+ size?: RangeSliderSize;
13
+ disabled?: boolean;
14
+ label?: string;
15
+ helperText?: string;
16
+ errorText?: string;
17
+ invalid?: boolean;
18
+ showValue?: boolean;
19
+ valueFormatter?: (value: number) => string;
20
+ /** aria-label de la poignée basse. Défaut "Valeur minimale". */
21
+ ariaLabelMin?: string;
22
+ /** aria-label de la poignée haute. Défaut "Valeur maximale". */
23
+ ariaLabelMax?: string;
24
+ class?: string;
25
+ onChange?: (value: [number, number]) => void;
26
+ };
27
+ </script>
28
+
29
+ <script lang="ts">
30
+ import { untrack } from "svelte";
31
+
32
+ let {
33
+ value,
34
+ defaultValue,
35
+ min = 0,
36
+ max = 100,
37
+ step = 1,
38
+ size = "md",
39
+ disabled = false,
40
+ label,
41
+ helperText,
42
+ errorText,
43
+ invalid = false,
44
+ showValue = true,
45
+ valueFormatter,
46
+ ariaLabelMin = "Valeur minimale",
47
+ ariaLabelMax = "Valeur maximale",
48
+ class: className,
49
+ onChange,
50
+ }: RangeSliderProps = $props();
51
+
52
+ // ── État interne (mode non-contrôlé) ──────────────────────────────────────
53
+ function clampStep(n: number): number {
54
+ if (!Number.isFinite(n)) return min;
55
+ let v = Math.min(Math.max(n, min), max);
56
+ if (Number.isFinite(step) && step > 0) {
57
+ v = min + Math.round((v - min) / step) * step;
58
+ v = Math.min(Math.max(v, min), max);
59
+ }
60
+ return v;
61
+ }
62
+
63
+ function normalizePair(pair: [number, number]): [number, number] {
64
+ let lo = clampStep(pair[0]);
65
+ let hi = clampStep(pair[1]);
66
+ if (lo > hi) {
67
+ // ne se croisent pas : on rabat sur la valeur la plus contraignante
68
+ const mid = lo;
69
+ lo = Math.min(mid, hi);
70
+ hi = Math.max(mid, hi);
71
+ }
72
+ return [lo, hi];
73
+ }
74
+
75
+ let internal = $state<[number, number]>(
76
+ untrack(() => normalizePair(defaultValue ?? [min, max]))
77
+ );
78
+
79
+ const isControlled = $derived(Array.isArray(value));
80
+
81
+ const current = $derived.by<[number, number]>(() => {
82
+ const source = isControlled ? (value as [number, number]) : internal;
83
+ return normalizePair(source ?? [min, max]);
84
+ });
85
+
86
+ const lowValue = $derived(current[0]);
87
+ const highValue = $derived(current[1]);
88
+
89
+ const lowPercent = $derived(max === min ? 0 : ((lowValue - min) / (max - min)) * 100);
90
+ const highPercent = $derived(max === min ? 0 : ((highValue - min) / (max - min)) * 100);
91
+
92
+ const lowLabel = $derived(valueFormatter ? valueFormatter(lowValue) : String(lowValue));
93
+ const highLabel = $derived(valueFormatter ? valueFormatter(highValue) : String(highValue));
94
+
95
+ const fieldClasses = () => ["st-field", className].filter(Boolean).join(" ");
96
+ const groupClasses = () =>
97
+ ["st-rangeSlider", `st-rangeSlider--${size}`, disabled ? "st-rangeSlider--disabled" : null]
98
+ .filter(Boolean)
99
+ .join(" ");
100
+ const isInvalid = () => invalid || Boolean(errorText);
101
+
102
+ function commit(next: [number, number]) {
103
+ const normalized = normalizePair(next);
104
+ if (!isControlled) internal = normalized;
105
+ onChange?.(normalized);
106
+ }
107
+
108
+ function setLow(raw: number) {
109
+ if (disabled) return;
110
+ const clamped = clampStep(raw);
111
+ // la poignée basse ne dépasse pas la haute
112
+ const lo = Math.min(clamped, highValue);
113
+ commit([lo, highValue]);
114
+ }
115
+
116
+ function setHigh(raw: number) {
117
+ if (disabled) return;
118
+ const clamped = clampStep(raw);
119
+ // la poignée haute ne passe pas sous la basse
120
+ const hi = Math.max(clamped, lowValue);
121
+ commit([lowValue, hi]);
122
+ }
123
+
124
+ function keyDelta(event: KeyboardEvent, value: number): number | null {
125
+ const big = (Number.isFinite(step) && step > 0 ? step : 1) * 10;
126
+ const small = Number.isFinite(step) && step > 0 ? step : 1;
127
+ switch (event.key) {
128
+ case "ArrowRight":
129
+ case "ArrowUp":
130
+ return value + small;
131
+ case "ArrowLeft":
132
+ case "ArrowDown":
133
+ return value - small;
134
+ case "PageUp":
135
+ return value + big;
136
+ case "PageDown":
137
+ return value - big;
138
+ case "Home":
139
+ return min;
140
+ case "End":
141
+ return max;
142
+ default:
143
+ return null;
144
+ }
145
+ }
146
+
147
+ function onLowKeydown(event: KeyboardEvent) {
148
+ if (disabled) return;
149
+ const next = keyDelta(event, lowValue);
150
+ if (next === null) return;
151
+ event.preventDefault();
152
+ setLow(next);
153
+ }
154
+
155
+ function onHighKeydown(event: KeyboardEvent) {
156
+ if (disabled) return;
157
+ const next = keyDelta(event, highValue);
158
+ if (next === null) return;
159
+ event.preventDefault();
160
+ setHigh(next);
161
+ }
162
+ </script>
163
+
164
+ <div class={fieldClasses()}>
165
+ <div class="st-rangeSlider__header">
166
+ {#if label}<span class="st-field__label">{label}</span>{/if}
167
+ {#if showValue}
168
+ <output class="st-rangeSlider__value" aria-live="polite">{lowLabel} – {highLabel}</output>
169
+ {/if}
170
+ </div>
171
+ <span class={groupClasses()}>
172
+ <span class="st-rangeSlider__bounds" aria-hidden="true">{min}</span>
173
+ <span class="st-rangeSlider__track" aria-invalid={isInvalid() ? "true" : undefined}>
174
+ <span
175
+ class="st-rangeSlider__fill"
176
+ style={`left: ${lowPercent}%; width: ${Math.max(0, highPercent - lowPercent)}%`}
177
+ ></span>
178
+ <span
179
+ class="st-rangeSlider__thumb st-rangeSlider__thumb--low"
180
+ style={`left: ${lowPercent}%`}
181
+ role="slider"
182
+ tabindex={disabled ? -1 : 0}
183
+ aria-label={ariaLabelMin}
184
+ aria-valuemin={min}
185
+ aria-valuemax={highValue}
186
+ aria-valuenow={lowValue}
187
+ aria-valuetext={lowLabel}
188
+ aria-disabled={disabled ? "true" : undefined}
189
+ onkeydown={onLowKeydown}
190
+ >
191
+ {#if showValue}<span class="st-rangeSlider__tooltip">{lowLabel}</span>{/if}
192
+ </span>
193
+ <span
194
+ class="st-rangeSlider__thumb st-rangeSlider__thumb--high"
195
+ style={`left: ${highPercent}%`}
196
+ role="slider"
197
+ tabindex={disabled ? -1 : 0}
198
+ aria-label={ariaLabelMax}
199
+ aria-valuemin={lowValue}
200
+ aria-valuemax={max}
201
+ aria-valuenow={highValue}
202
+ aria-valuetext={highLabel}
203
+ aria-disabled={disabled ? "true" : undefined}
204
+ onkeydown={onHighKeydown}
205
+ >
206
+ {#if showValue}<span class="st-rangeSlider__tooltip">{highLabel}</span>{/if}
207
+ </span>
208
+ </span>
209
+ <span class="st-rangeSlider__bounds" aria-hidden="true">{max}</span>
210
+ </span>
211
+ {#if errorText}
212
+ <span class="st-field__error">{errorText}</span>
213
+ {:else if helperText}
214
+ <span class="st-field__help">{helperText}</span>
215
+ {/if}
216
+ </div>
217
+
218
+ <style>
219
+ .st-field {
220
+ color: var(--st-component-field-labelText, var(--st-semantic-text-primary));
221
+ display: grid;
222
+ gap: var(--st-component-field-gap, 0.5rem);
223
+ max-width: var(--st-component-field-maxWidth, 28rem);
224
+ }
225
+
226
+ .st-field__label {
227
+ font-size: 0.875rem;
228
+ font-weight: 600;
229
+ }
230
+
231
+ .st-field__help,
232
+ .st-field__error {
233
+ font-size: 0.8125rem;
234
+ line-height: 1.4;
235
+ }
236
+
237
+ .st-field__help {
238
+ color: var(--st-component-field-helpText, var(--st-semantic-text-secondary));
239
+ }
240
+
241
+ .st-field__error {
242
+ color: var(--st-component-field-errorText, var(--st-semantic-feedback-error));
243
+ }
244
+
245
+ .st-rangeSlider__header {
246
+ align-items: baseline;
247
+ display: flex;
248
+ gap: 0.5rem;
249
+ justify-content: space-between;
250
+ }
251
+
252
+ .st-rangeSlider__value {
253
+ color: var(--st-semantic-text-secondary);
254
+ font-size: 0.875rem;
255
+ font-variant-numeric: tabular-nums;
256
+ }
257
+
258
+ .st-rangeSlider {
259
+ align-items: center;
260
+ display: flex;
261
+ gap: 0.75rem;
262
+ width: 100%;
263
+ }
264
+
265
+ .st-rangeSlider__bounds {
266
+ color: var(--st-semantic-text-muted);
267
+ flex: 0 0 auto;
268
+ font-size: 0.75rem;
269
+ font-variant-numeric: tabular-nums;
270
+ }
271
+
272
+ .st-rangeSlider__track {
273
+ background: var(--st-component-control-border, var(--st-semantic-border-subtle));
274
+ border-radius: 999px;
275
+ flex: 1 1 auto;
276
+ height: 0.25rem;
277
+ position: relative;
278
+ }
279
+
280
+ .st-rangeSlider--sm .st-rangeSlider__track {
281
+ height: 0.1875rem;
282
+ }
283
+
284
+ .st-rangeSlider--lg .st-rangeSlider__track {
285
+ height: 0.375rem;
286
+ }
287
+
288
+ .st-rangeSlider__fill {
289
+ background: var(--st-semantic-action-primary);
290
+ border-radius: 999px;
291
+ display: block;
292
+ height: 100%;
293
+ position: absolute;
294
+ top: 0;
295
+ }
296
+
297
+ .st-rangeSlider__thumb {
298
+ background: var(--st-semantic-action-primary);
299
+ border-radius: 50%;
300
+ box-sizing: border-box;
301
+ cursor: pointer;
302
+ height: 1rem;
303
+ position: absolute;
304
+ top: 50%;
305
+ transform: translate(-50%, -50%);
306
+ width: 1rem;
307
+ }
308
+
309
+ .st-rangeSlider--sm .st-rangeSlider__thumb {
310
+ height: 0.75rem;
311
+ width: 0.75rem;
312
+ }
313
+
314
+ .st-rangeSlider--lg .st-rangeSlider__thumb {
315
+ height: 1.25rem;
316
+ width: 1.25rem;
317
+ }
318
+
319
+ .st-rangeSlider__thumb:focus-visible {
320
+ outline: 2px solid var(--st-component-control-focusRing, var(--st-semantic-border-interactive));
321
+ outline-offset: 4px;
322
+ }
323
+
324
+ .st-rangeSlider__tooltip {
325
+ background: var(--st-semantic-text-primary);
326
+ border-radius: var(--st-component-control-radius, 0.375rem);
327
+ bottom: calc(100% + 0.375rem);
328
+ color: var(--st-semantic-surface-default);
329
+ font-size: 0.6875rem;
330
+ font-weight: 600;
331
+ left: 50%;
332
+ line-height: 1;
333
+ opacity: 0;
334
+ padding: 0.25rem 0.375rem;
335
+ pointer-events: none;
336
+ position: absolute;
337
+ transform: translateX(-50%);
338
+ transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
339
+ white-space: nowrap;
340
+ }
341
+
342
+ .st-rangeSlider__thumb:hover .st-rangeSlider__tooltip,
343
+ .st-rangeSlider__thumb:focus-visible .st-rangeSlider__tooltip {
344
+ opacity: 1;
345
+ }
346
+
347
+ .st-rangeSlider--disabled .st-rangeSlider__thumb,
348
+ .st-rangeSlider--disabled .st-rangeSlider__fill {
349
+ background: var(--st-semantic-text-muted);
350
+ }
351
+
352
+ .st-rangeSlider--disabled .st-rangeSlider__thumb {
353
+ cursor: not-allowed;
354
+ }
355
+
356
+ .st-rangeSlider__track[aria-invalid="true"] .st-rangeSlider__fill,
357
+ .st-rangeSlider__track[aria-invalid="true"] .st-rangeSlider__thumb {
358
+ background: var(--st-semantic-feedback-error);
359
+ }
360
+
361
+ @media (prefers-reduced-motion: reduce) {
362
+ .st-rangeSlider__tooltip {
363
+ transition: none;
364
+ }
365
+ }
366
+ </style>
@@ -0,0 +1,28 @@
1
+ export type RangeSliderSize = "sm" | "md" | "lg";
2
+ export type RangeSliderProps = {
3
+ /** Valeur contrôlée [poignée basse, poignée haute]. Non-contrôlé si absent. */
4
+ value?: [number, number];
5
+ /** Valeur initiale en mode non-contrôlé. Défaut [min, max]. */
6
+ defaultValue?: [number, number];
7
+ min?: number;
8
+ max?: number;
9
+ step?: number;
10
+ size?: RangeSliderSize;
11
+ disabled?: boolean;
12
+ label?: string;
13
+ helperText?: string;
14
+ errorText?: string;
15
+ invalid?: boolean;
16
+ showValue?: boolean;
17
+ valueFormatter?: (value: number) => string;
18
+ /** aria-label de la poignée basse. Défaut "Valeur minimale". */
19
+ ariaLabelMin?: string;
20
+ /** aria-label de la poignée haute. Défaut "Valeur maximale". */
21
+ ariaLabelMax?: string;
22
+ class?: string;
23
+ onChange?: (value: [number, number]) => void;
24
+ };
25
+ declare const RangeSlider: import("svelte").Component<RangeSliderProps, {}, "">;
26
+ type RangeSlider = ReturnType<typeof RangeSlider>;
27
+ export default RangeSlider;
28
+ //# sourceMappingURL=RangeSlider.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeSlider.svelte.d.ts","sourceRoot":"","sources":["../src/lib/RangeSlider.svelte.ts"],"names":[],"mappings":"AAGE,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+EAA+E;IAC/E,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;CAC9C,CAAC;AA6KJ,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
@@ -17,6 +17,10 @@ export { default as StepLineChart } from "./StepLineChart.svelte";
17
17
  export type { StepLineChartTone, StepLineChartDatum } from "./StepLineChart.svelte";
18
18
  export { default as DivergentBarChart } from "./DivergentBarChart.svelte";
19
19
  export type { DivergentBarChartTone, DivergentBarChartDatum } from "./DivergentBarChart.svelte";
20
+ export { default as ChordDiagram } from "./ChordDiagram.svelte";
21
+ export type { ChordDiagramTone, ChordDiagramFlow } from "./ChordDiagram.svelte";
22
+ export { default as PackedBubblesChart } from "./PackedBubblesChart.svelte";
23
+ export type { PackedBubblesChartTone, PackedBubblesChartDatum } from "./PackedBubblesChart.svelte";
20
24
  export { default as Alert } from "./Alert.svelte";
21
25
  export { default as AreaChart } from "./AreaChart.svelte";
22
26
  export { default as AspectRatio } from "./AspectRatio.svelte";
@@ -118,6 +122,7 @@ export { default as SkeletonText } from "./SkeletonText.svelte";
118
122
  export { default as SkipLink } from "./SkipLink.svelte";
119
123
  export { default as SlideIndicator } from "./SlideIndicator.svelte";
120
124
  export { default as Slider } from "./Slider.svelte";
125
+ export { default as RangeSlider } from "./RangeSlider.svelte";
121
126
  export { default as SankeyChart } from "./SankeyChart.svelte";
122
127
  export { default as Stack } from "./Stack.svelte";
123
128
  export { default as Stepper } from "./Stepper.svelte";
@@ -229,4 +234,5 @@ export type { PopperProps, PopperPlacement, PopperStrategy } from "./Popper.svel
229
234
  export type { FilterPillProps, FilterPillTone } from "./FilterPill.svelte";
230
235
  export type { FilterBarProps } from "./FilterBar.svelte";
231
236
  export type { SelectionChipProps, SelectionChipTone } from "./SelectionChip.svelte";
237
+ export type { RangeSliderProps, RangeSliderSize } from "./RangeSlider.svelte";
232
238
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -12,6 +12,8 @@ export { default as LollipopChart } from "./LollipopChart.svelte";
12
12
  export { default as ParetoChart } from "./ParetoChart.svelte";
13
13
  export { default as StepLineChart } from "./StepLineChart.svelte";
14
14
  export { default as DivergentBarChart } from "./DivergentBarChart.svelte";
15
+ export { default as ChordDiagram } from "./ChordDiagram.svelte";
16
+ export { default as PackedBubblesChart } from "./PackedBubblesChart.svelte";
15
17
  export { default as Alert } from "./Alert.svelte";
16
18
  export { default as AreaChart } from "./AreaChart.svelte";
17
19
  export { default as AspectRatio } from "./AspectRatio.svelte";
@@ -113,6 +115,7 @@ export { default as SkeletonText } from "./SkeletonText.svelte";
113
115
  export { default as SkipLink } from "./SkipLink.svelte";
114
116
  export { default as SlideIndicator } from "./SlideIndicator.svelte";
115
117
  export { default as Slider } from "./Slider.svelte";
118
+ export { default as RangeSlider } from "./RangeSlider.svelte";
116
119
  export { default as SankeyChart } from "./SankeyChart.svelte";
117
120
  export { default as Stack } from "./Stack.svelte";
118
121
  export { default as Stepper } from "./Stepper.svelte";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/design-system-svelte",
3
- "version": "0.26.0",
3
+ "version": "0.28.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"