@sentropic/design-system-svelte 0.34.0 → 0.34.20
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/AppHeader.svelte +159 -1
- package/dist/AppHeader.svelte.d.ts +18 -1
- package/dist/AppHeader.svelte.d.ts.map +1 -1
- package/dist/ArcDiagramChart.svelte +380 -0
- package/dist/ArcDiagramChart.svelte.d.ts +43 -0
- package/dist/ArcDiagramChart.svelte.d.ts.map +1 -0
- package/dist/AreaRangeChart.svelte +487 -0
- package/dist/AreaRangeChart.svelte.d.ts +38 -0
- package/dist/AreaRangeChart.svelte.d.ts.map +1 -0
- package/dist/AreaSplineRangeChart.svelte +478 -0
- package/dist/AreaSplineRangeChart.svelte.d.ts +37 -0
- package/dist/AreaSplineRangeChart.svelte.d.ts.map +1 -0
- package/dist/BellCurveChart.svelte +487 -0
- package/dist/BellCurveChart.svelte.d.ts +40 -0
- package/dist/BellCurveChart.svelte.d.ts.map +1 -0
- package/dist/Calendar.svelte +11 -0
- package/dist/ChatThread.svelte +32 -1
- package/dist/ChatThread.svelte.d.ts +14 -0
- package/dist/ChatThread.svelte.d.ts.map +1 -1
- package/dist/ColumnPyramidChart.svelte +332 -0
- package/dist/ColumnPyramidChart.svelte.d.ts +35 -0
- package/dist/ColumnPyramidChart.svelte.d.ts.map +1 -0
- package/dist/ColumnRangeChart.svelte +432 -0
- package/dist/ColumnRangeChart.svelte.d.ts +42 -0
- package/dist/ColumnRangeChart.svelte.d.ts.map +1 -0
- package/dist/Combobox.svelte +3 -0
- package/dist/ContentSwitcher.svelte +1 -1
- package/dist/DataTable.svelte.d.ts +1 -1
- package/dist/DatePicker.svelte +3 -0
- package/dist/DependencyWheelChart.svelte +413 -0
- package/dist/DependencyWheelChart.svelte.d.ts +42 -0
- package/dist/DependencyWheelChart.svelte.d.ts.map +1 -0
- package/dist/DumbbellChart.svelte +403 -0
- package/dist/DumbbellChart.svelte.d.ts +44 -0
- package/dist/DumbbellChart.svelte.d.ts.map +1 -0
- package/dist/ErrorBarChart.svelte +428 -0
- package/dist/ErrorBarChart.svelte.d.ts +40 -0
- package/dist/ErrorBarChart.svelte.d.ts.map +1 -0
- package/dist/GanttChart.svelte +410 -0
- package/dist/GanttChart.svelte.d.ts +39 -0
- package/dist/GanttChart.svelte.d.ts.map +1 -0
- package/dist/HLCChart.svelte +330 -0
- package/dist/HLCChart.svelte.d.ts +32 -0
- package/dist/HLCChart.svelte.d.ts.map +1 -0
- package/dist/HeikinAshiChart.svelte +365 -0
- package/dist/HeikinAshiChart.svelte.d.ts +37 -0
- package/dist/HeikinAshiChart.svelte.d.ts.map +1 -0
- package/dist/HollowCandlestickChart.svelte +357 -0
- package/dist/HollowCandlestickChart.svelte.d.ts +34 -0
- package/dist/HollowCandlestickChart.svelte.d.ts.map +1 -0
- package/dist/Input.svelte +3 -0
- package/dist/ItemChart.svelte +389 -0
- package/dist/ItemChart.svelte.d.ts +67 -0
- package/dist/ItemChart.svelte.d.ts.map +1 -0
- package/dist/LollipopChart.svelte +1 -1
- package/dist/MultiSelect.svelte +3 -0
- package/dist/NumberInput.svelte +3 -0
- package/dist/OHLCChart.svelte +343 -0
- package/dist/OHLCChart.svelte.d.ts +33 -0
- package/dist/OHLCChart.svelte.d.ts.map +1 -0
- package/dist/OrganizationChart.svelte +284 -0
- package/dist/OrganizationChart.svelte.d.ts +19 -0
- package/dist/OrganizationChart.svelte.d.ts.map +1 -0
- package/dist/PasswordInput.svelte +3 -0
- package/dist/PolygonChart.svelte +189 -0
- package/dist/PolygonChart.svelte.d.ts +17 -0
- package/dist/PolygonChart.svelte.d.ts.map +1 -0
- package/dist/Search.svelte +7 -5
- package/dist/Select.svelte +3 -0
- package/dist/StreamgraphChart.svelte +283 -0
- package/dist/StreamgraphChart.svelte.d.ts +23 -0
- package/dist/StreamgraphChart.svelte.d.ts.map +1 -0
- package/dist/StreamingMessage.svelte +44 -2
- package/dist/StreamingMessage.svelte.d.ts +18 -1
- package/dist/StreamingMessage.svelte.d.ts.map +1 -1
- package/dist/TileMapChart.svelte +314 -0
- package/dist/TileMapChart.svelte.d.ts +45 -0
- package/dist/TileMapChart.svelte.d.ts.map +1 -0
- package/dist/TimePicker.svelte +3 -0
- package/dist/TimelineChart.svelte +362 -0
- package/dist/TimelineChart.svelte.d.ts +22 -0
- package/dist/TimelineChart.svelte.d.ts.map +1 -0
- package/dist/TreegraphChart.svelte +281 -0
- package/dist/TreegraphChart.svelte.d.ts +19 -0
- package/dist/TreegraphChart.svelte.d.ts.map +1 -0
- package/dist/VariablePieChart.svelte +313 -0
- package/dist/VariablePieChart.svelte.d.ts +52 -0
- package/dist/VariablePieChart.svelte.d.ts.map +1 -0
- package/dist/VennChart.svelte +348 -0
- package/dist/VennChart.svelte.d.ts +72 -0
- package/dist/VennChart.svelte.d.ts.map +1 -0
- package/dist/WordCloudChart.svelte +279 -0
- package/dist/WordCloudChart.svelte.d.ts +18 -0
- package/dist/WordCloudChart.svelte.d.ts.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -0
- package/package.json +5 -3
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* ColumnPyramidChart — colonnes en forme de pyramide (triangle) par catégorie.
|
|
4
|
+
* Comme un histogramme à barres, mais chaque colonne est un triangle : base
|
|
5
|
+
* large posée sur l'axe X, sommet centré à la hauteur de la valeur.
|
|
6
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner).
|
|
7
|
+
*
|
|
8
|
+
* Props obligatoires :
|
|
9
|
+
* data ColumnPyramidChartDatum[] - tableau {category, value, tone?}
|
|
10
|
+
* label string - aria-label du graphique
|
|
11
|
+
*
|
|
12
|
+
* Props optionnelles :
|
|
13
|
+
* tone ColumnPyramidChartTone - teinte par défaut des colonnes sans tone
|
|
14
|
+
* width number (défaut 480)
|
|
15
|
+
* height number (défaut 280)
|
|
16
|
+
* class string
|
|
17
|
+
*/
|
|
18
|
+
export type ColumnPyramidChartTone =
|
|
19
|
+
| "category1"
|
|
20
|
+
| "category2"
|
|
21
|
+
| "category3"
|
|
22
|
+
| "category4"
|
|
23
|
+
| "category5"
|
|
24
|
+
| "category6"
|
|
25
|
+
| "category7"
|
|
26
|
+
| "category8";
|
|
27
|
+
|
|
28
|
+
export type ColumnPyramidChartDatum = {
|
|
29
|
+
category: string;
|
|
30
|
+
value: number;
|
|
31
|
+
tone?: ColumnPyramidChartTone;
|
|
32
|
+
};
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<script lang="ts">
|
|
36
|
+
import ChartDataList from "./ChartDataList.svelte";
|
|
37
|
+
|
|
38
|
+
type ColumnPyramidChartProps = {
|
|
39
|
+
data: ColumnPyramidChartDatum[];
|
|
40
|
+
width?: number;
|
|
41
|
+
height?: number;
|
|
42
|
+
label: string;
|
|
43
|
+
/** Teinte par défaut des colonnes dont le datum n'a pas de `tone`. */
|
|
44
|
+
tone?: ColumnPyramidChartTone;
|
|
45
|
+
class?: string;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
let {
|
|
49
|
+
data = [],
|
|
50
|
+
width = 480,
|
|
51
|
+
height = 280,
|
|
52
|
+
label,
|
|
53
|
+
tone = "category1",
|
|
54
|
+
class: className
|
|
55
|
+
}: ColumnPyramidChartProps = $props();
|
|
56
|
+
|
|
57
|
+
const MARGIN = { top: 24, right: 16, bottom: 32, left: 44 };
|
|
58
|
+
|
|
59
|
+
function niceTicks(min: number, max: number, target = 5): number[] {
|
|
60
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || min === max) {
|
|
61
|
+
const base = Number.isFinite(max) ? max : 0;
|
|
62
|
+
return [base];
|
|
63
|
+
}
|
|
64
|
+
const range = max - min;
|
|
65
|
+
const rough = range / Math.max(target - 1, 1);
|
|
66
|
+
const pow = Math.pow(10, Math.floor(Math.log10(rough)));
|
|
67
|
+
const norm = rough / pow;
|
|
68
|
+
let step: number;
|
|
69
|
+
if (norm < 1.5) step = 1 * pow;
|
|
70
|
+
else if (norm < 3) step = 2 * pow;
|
|
71
|
+
else if (norm < 7) step = 5 * pow;
|
|
72
|
+
else step = 10 * pow;
|
|
73
|
+
const start = Math.floor(min / step) * step;
|
|
74
|
+
const end = Math.ceil(max / step) * step;
|
|
75
|
+
const ticks: number[] = [];
|
|
76
|
+
for (let v = start; v <= end + step / 2; v += step) {
|
|
77
|
+
ticks.push(Number(v.toFixed(10)));
|
|
78
|
+
}
|
|
79
|
+
return ticks;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function scaleLinear(v: number, d0: number, d1: number, r0: number, r1: number) {
|
|
83
|
+
if (d1 === d0) return r0;
|
|
84
|
+
return r0 + ((v - d0) * (r1 - r0)) / (d1 - d0);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function formatTick(v: number): string {
|
|
88
|
+
if (Math.abs(v) >= 1000) return `${(v / 1000).toFixed(v % 1000 === 0 ? 0 : 1)}k`;
|
|
89
|
+
if (Number.isInteger(v)) return String(v);
|
|
90
|
+
return v.toFixed(1);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
let hoveredIndex: number | null = $state(null);
|
|
94
|
+
|
|
95
|
+
// Données valides : value finie et strictement positive (un triangle posé sur
|
|
96
|
+
// l'axe X n'a de sens que pour une valeur > 0).
|
|
97
|
+
const validData = $derived(data.filter((d) => Number.isFinite(d.value) && d.value > 0));
|
|
98
|
+
|
|
99
|
+
const scales = $derived.by(() => {
|
|
100
|
+
const values = validData.map((d) => d.value);
|
|
101
|
+
const minRaw = 0;
|
|
102
|
+
const maxRaw = Math.max(0, ...values);
|
|
103
|
+
const ticks = niceTicks(minRaw, maxRaw, 5);
|
|
104
|
+
const domainMin = ticks[0];
|
|
105
|
+
const domainMax = ticks[ticks.length - 1];
|
|
106
|
+
const plotWidth = Math.max(width - MARGIN.left - MARGIN.right, 1);
|
|
107
|
+
const plotHeight = Math.max(height - MARGIN.top - MARGIN.bottom, 1);
|
|
108
|
+
return { ticks, domainMin, domainMax, plotWidth, plotHeight };
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
const columns = $derived.by(() => {
|
|
112
|
+
const { domainMin, domainMax, plotWidth, plotHeight } = scales;
|
|
113
|
+
if (validData.length === 0) return [];
|
|
114
|
+
const band = plotWidth / validData.length;
|
|
115
|
+
const baseWidth = band * 0.7;
|
|
116
|
+
const zeroY = MARGIN.top + scaleLinear(0, domainMin, domainMax, plotHeight, 0);
|
|
117
|
+
return validData.map((d, i) => {
|
|
118
|
+
const apexY = MARGIN.top + scaleLinear(d.value, domainMin, domainMax, plotHeight, 0);
|
|
119
|
+
const cx = MARGIN.left + band * (i + 0.5);
|
|
120
|
+
const leftX = cx - baseWidth / 2;
|
|
121
|
+
const rightX = cx + baseWidth / 2;
|
|
122
|
+
// Triangle : base large en bas (sur l'axe X), sommet centré à la valeur.
|
|
123
|
+
const points = `${leftX},${zeroY} ${rightX},${zeroY} ${cx},${apexY}`;
|
|
124
|
+
return {
|
|
125
|
+
datum: d,
|
|
126
|
+
tone: (d.tone ?? tone) as ColumnPyramidChartTone,
|
|
127
|
+
points,
|
|
128
|
+
cx,
|
|
129
|
+
cy: apexY,
|
|
130
|
+
labelX: cx,
|
|
131
|
+
labelY: height - MARGIN.bottom + 16
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const dataValueItems = $derived(validData.map((d) => `${d.category}: ${d.value}`));
|
|
137
|
+
|
|
138
|
+
const valueAxisTicks = $derived.by(() => {
|
|
139
|
+
const { ticks, domainMin, domainMax, plotWidth, plotHeight } = scales;
|
|
140
|
+
return ticks.map((tick) => ({
|
|
141
|
+
value: tick,
|
|
142
|
+
x1: MARGIN.left,
|
|
143
|
+
x2: MARGIN.left + plotWidth,
|
|
144
|
+
y: MARGIN.top + scaleLinear(tick, domainMin, domainMax, plotHeight, 0)
|
|
145
|
+
}));
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
function handleLeave() {
|
|
149
|
+
hoveredIndex = null;
|
|
150
|
+
}
|
|
151
|
+
function handleVisualPointerMove(event: PointerEvent) {
|
|
152
|
+
const target = event.target;
|
|
153
|
+
if (!(target instanceof Element)) {
|
|
154
|
+
hoveredIndex = null;
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const index = Number(target.getAttribute("data-chart-index"));
|
|
158
|
+
hoveredIndex = Number.isInteger(index) ? index : null;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const classes = () => ["st-columnPyramidChart", className].filter(Boolean).join(" ");
|
|
162
|
+
</script>
|
|
163
|
+
|
|
164
|
+
<div class={classes()}>
|
|
165
|
+
<div
|
|
166
|
+
class="st-columnPyramidChart__visual"
|
|
167
|
+
role="img"
|
|
168
|
+
aria-label={label}
|
|
169
|
+
onpointermove={handleVisualPointerMove}
|
|
170
|
+
onpointerleave={handleLeave}
|
|
171
|
+
>
|
|
172
|
+
<svg
|
|
173
|
+
viewBox="0 0 {width} {height}"
|
|
174
|
+
preserveAspectRatio="xMidYMid meet"
|
|
175
|
+
width="100%"
|
|
176
|
+
height="100%"
|
|
177
|
+
focusable="false"
|
|
178
|
+
aria-hidden="true"
|
|
179
|
+
>
|
|
180
|
+
<!-- gridlines + value axis ticks -->
|
|
181
|
+
{#each valueAxisTicks as tick (tick.value)}
|
|
182
|
+
<line class="st-columnPyramidChart__grid" x1={tick.x1} x2={tick.x2} y1={tick.y} y2={tick.y} />
|
|
183
|
+
<text
|
|
184
|
+
class="st-columnPyramidChart__tickLabel"
|
|
185
|
+
x={MARGIN.left - 6}
|
|
186
|
+
y={tick.y}
|
|
187
|
+
text-anchor="end"
|
|
188
|
+
dominant-baseline="middle"
|
|
189
|
+
>
|
|
190
|
+
{formatTick(tick.value)}
|
|
191
|
+
</text>
|
|
192
|
+
{/each}
|
|
193
|
+
|
|
194
|
+
<!-- axes -->
|
|
195
|
+
<line
|
|
196
|
+
class="st-columnPyramidChart__axis"
|
|
197
|
+
x1={MARGIN.left}
|
|
198
|
+
x2={MARGIN.left}
|
|
199
|
+
y1={MARGIN.top}
|
|
200
|
+
y2={height - MARGIN.bottom}
|
|
201
|
+
/>
|
|
202
|
+
<line
|
|
203
|
+
class="st-columnPyramidChart__axis"
|
|
204
|
+
x1={MARGIN.left}
|
|
205
|
+
x2={width - MARGIN.right}
|
|
206
|
+
y1={height - MARGIN.bottom}
|
|
207
|
+
y2={height - MARGIN.bottom}
|
|
208
|
+
/>
|
|
209
|
+
|
|
210
|
+
<!-- category labels -->
|
|
211
|
+
{#each columns as col (col.datum.category)}
|
|
212
|
+
<text
|
|
213
|
+
class="st-columnPyramidChart__categoryLabel"
|
|
214
|
+
x={col.labelX}
|
|
215
|
+
y={col.labelY}
|
|
216
|
+
text-anchor="middle"
|
|
217
|
+
>
|
|
218
|
+
{col.datum.category}
|
|
219
|
+
</text>
|
|
220
|
+
{/each}
|
|
221
|
+
|
|
222
|
+
<!-- pyramid columns (decorative, inside aria-hidden SVG) -->
|
|
223
|
+
{#each columns as col, i (col.datum.category)}
|
|
224
|
+
<polygon
|
|
225
|
+
class="st-columnPyramidChart__column st-columnPyramidChart__column--{col.tone}"
|
|
226
|
+
points={col.points}
|
|
227
|
+
data-chart-index={i}
|
|
228
|
+
/>
|
|
229
|
+
{/each}
|
|
230
|
+
</svg>
|
|
231
|
+
</div>
|
|
232
|
+
|
|
233
|
+
<ChartDataList {label} items={dataValueItems} />
|
|
234
|
+
|
|
235
|
+
{#if hoveredIndex !== null && columns[hoveredIndex]}
|
|
236
|
+
{@const col = columns[hoveredIndex]}
|
|
237
|
+
<div
|
|
238
|
+
class="st-columnPyramidChart__tooltip"
|
|
239
|
+
role="presentation"
|
|
240
|
+
style="left: {(col.cx / width) * 100}%; top: {(col.cy / height) * 100}%"
|
|
241
|
+
>
|
|
242
|
+
<span class="st-columnPyramidChart__tooltipLabel">{col.datum.category}</span>
|
|
243
|
+
<span class="st-columnPyramidChart__tooltipValue">{col.datum.value}</span>
|
|
244
|
+
</div>
|
|
245
|
+
{/if}
|
|
246
|
+
</div>
|
|
247
|
+
|
|
248
|
+
<style>
|
|
249
|
+
.st-columnPyramidChart {
|
|
250
|
+
color: var(--st-semantic-text-secondary);
|
|
251
|
+
display: block;
|
|
252
|
+
font-family: inherit;
|
|
253
|
+
position: relative;
|
|
254
|
+
width: 100%;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.st-columnPyramidChart svg {
|
|
258
|
+
display: block;
|
|
259
|
+
overflow: visible;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.st-columnPyramidChart__visual {
|
|
263
|
+
display: block;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.st-columnPyramidChart__grid {
|
|
267
|
+
stroke: var(--st-component-columnPyramidChart-gridStroke, var(--st-semantic-border-subtle));
|
|
268
|
+
stroke-dasharray: 2 3;
|
|
269
|
+
stroke-width: 1;
|
|
270
|
+
opacity: 0.7;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.st-columnPyramidChart__axis {
|
|
274
|
+
stroke: var(--st-component-columnPyramidChart-axisStroke, var(--st-semantic-border-subtle));
|
|
275
|
+
stroke-width: 1;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.st-columnPyramidChart__tickLabel,
|
|
279
|
+
.st-columnPyramidChart__categoryLabel {
|
|
280
|
+
fill: var(--st-component-columnPyramidChart-labelColor, var(--st-semantic-text-secondary));
|
|
281
|
+
font-size: 0.6875rem;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.st-columnPyramidChart__column {
|
|
285
|
+
cursor: pointer;
|
|
286
|
+
transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.st-columnPyramidChart__column:hover {
|
|
290
|
+
opacity: 0.82;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.st-columnPyramidChart__column--category1 { fill: var(--st-semantic-data-category1); }
|
|
294
|
+
.st-columnPyramidChart__column--category2 { fill: var(--st-semantic-data-category2); }
|
|
295
|
+
.st-columnPyramidChart__column--category3 { fill: var(--st-semantic-data-category3); }
|
|
296
|
+
.st-columnPyramidChart__column--category4 { fill: var(--st-semantic-data-category4); }
|
|
297
|
+
.st-columnPyramidChart__column--category5 { fill: var(--st-semantic-data-category5); }
|
|
298
|
+
.st-columnPyramidChart__column--category6 { fill: var(--st-semantic-data-category6); }
|
|
299
|
+
.st-columnPyramidChart__column--category7 { fill: var(--st-semantic-data-category7); }
|
|
300
|
+
.st-columnPyramidChart__column--category8 { fill: var(--st-semantic-data-category8); }
|
|
301
|
+
|
|
302
|
+
.st-columnPyramidChart__tooltip {
|
|
303
|
+
background: var(--st-component-columnPyramidChart-tooltipBackground, var(--st-semantic-surface-inverse));
|
|
304
|
+
border-radius: var(--st-radius-sm, 0.25rem);
|
|
305
|
+
color: var(--st-component-columnPyramidChart-tooltipText, var(--st-semantic-text-inverse));
|
|
306
|
+
display: inline-flex;
|
|
307
|
+
flex-direction: column;
|
|
308
|
+
font-size: 0.75rem;
|
|
309
|
+
gap: 0.125rem;
|
|
310
|
+
line-height: 1.2;
|
|
311
|
+
padding: 0.375rem 0.5rem;
|
|
312
|
+
pointer-events: none;
|
|
313
|
+
position: absolute;
|
|
314
|
+
transform: translate(-50%, calc(-100% - 8px));
|
|
315
|
+
white-space: nowrap;
|
|
316
|
+
z-index: 1;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.st-columnPyramidChart__tooltipLabel {
|
|
320
|
+
font-weight: 600;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.st-columnPyramidChart__tooltipValue {
|
|
324
|
+
opacity: 0.85;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
@media (prefers-reduced-motion: reduce) {
|
|
328
|
+
.st-columnPyramidChart__column {
|
|
329
|
+
transition: none;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
</style>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ColumnPyramidChart — colonnes en forme de pyramide (triangle) par catégorie.
|
|
3
|
+
* Comme un histogramme à barres, mais chaque colonne est un triangle : base
|
|
4
|
+
* large posée sur l'axe X, sommet centré à la hauteur de la valeur.
|
|
5
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner).
|
|
6
|
+
*
|
|
7
|
+
* Props obligatoires :
|
|
8
|
+
* data ColumnPyramidChartDatum[] - tableau {category, value, tone?}
|
|
9
|
+
* label string - aria-label du graphique
|
|
10
|
+
*
|
|
11
|
+
* Props optionnelles :
|
|
12
|
+
* tone ColumnPyramidChartTone - teinte par défaut des colonnes sans tone
|
|
13
|
+
* width number (défaut 480)
|
|
14
|
+
* height number (défaut 280)
|
|
15
|
+
* class string
|
|
16
|
+
*/
|
|
17
|
+
export type ColumnPyramidChartTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
|
|
18
|
+
export type ColumnPyramidChartDatum = {
|
|
19
|
+
category: string;
|
|
20
|
+
value: number;
|
|
21
|
+
tone?: ColumnPyramidChartTone;
|
|
22
|
+
};
|
|
23
|
+
type ColumnPyramidChartProps = {
|
|
24
|
+
data: ColumnPyramidChartDatum[];
|
|
25
|
+
width?: number;
|
|
26
|
+
height?: number;
|
|
27
|
+
label: string;
|
|
28
|
+
/** Teinte par défaut des colonnes dont le datum n'a pas de `tone`. */
|
|
29
|
+
tone?: ColumnPyramidChartTone;
|
|
30
|
+
class?: string;
|
|
31
|
+
};
|
|
32
|
+
declare const ColumnPyramidChart: import("svelte").Component<ColumnPyramidChartProps, {}, "">;
|
|
33
|
+
type ColumnPyramidChart = ReturnType<typeof ColumnPyramidChart>;
|
|
34
|
+
export default ColumnPyramidChart;
|
|
35
|
+
//# sourceMappingURL=ColumnPyramidChart.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnPyramidChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/ColumnPyramidChart.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;;;;GAeG;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,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,sBAAsB,CAAC;CAC/B,CAAC;AAMF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAuKJ,QAAA,MAAM,kBAAkB,6DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|