@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,357 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* HollowCandlestickChart - chandeliers creux (convention Highcharts hollowcandlestick).
|
|
4
|
+
* Variante du CandlestickChart : mèche low→high + corps open↔close, MAIS :
|
|
5
|
+
* - couleur (trait/bordure) = clôture vs clôture PRÉCÉDENTE (hausse/baisse) ;
|
|
6
|
+
* - remplissage = creux si close ≥ open (haussière), plein si close < open (baissière).
|
|
7
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner)
|
|
8
|
+
*
|
|
9
|
+
* Props obligatoires :
|
|
10
|
+
* data HollowCandlestickChartDatum[] - tableau {label, open, high, low, close}
|
|
11
|
+
* label string
|
|
12
|
+
*
|
|
13
|
+
* Props optionnelles :
|
|
14
|
+
* width number (défaut 480)
|
|
15
|
+
* height number (défaut 240)
|
|
16
|
+
* class string
|
|
17
|
+
*/
|
|
18
|
+
export type HollowCandlestickChartDatum = {
|
|
19
|
+
label: string;
|
|
20
|
+
open: number;
|
|
21
|
+
high: number;
|
|
22
|
+
low: number;
|
|
23
|
+
close: number;
|
|
24
|
+
};
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<script lang="ts">
|
|
28
|
+
import ChartDataList from "./ChartDataList.svelte";
|
|
29
|
+
|
|
30
|
+
type HollowCandlestickChartProps = {
|
|
31
|
+
data: HollowCandlestickChartDatum[];
|
|
32
|
+
label: string;
|
|
33
|
+
width?: number;
|
|
34
|
+
height?: number;
|
|
35
|
+
class?: string;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
let {
|
|
39
|
+
data = [],
|
|
40
|
+
label,
|
|
41
|
+
width = 480,
|
|
42
|
+
height = 240,
|
|
43
|
+
class: className
|
|
44
|
+
}: HollowCandlestickChartProps = $props();
|
|
45
|
+
|
|
46
|
+
const MARGIN = { top: 12, right: 16, bottom: 32, left: 52 };
|
|
47
|
+
|
|
48
|
+
function scaleLinear(v: number, d0: number, d1: number, r0: number, r1: number) {
|
|
49
|
+
if (d1 === d0) return r0;
|
|
50
|
+
return r0 + ((v - d0) * (r1 - r0)) / (d1 - d0);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function niceTicks(min: number, max: number, target = 5): number[] {
|
|
54
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || min === max) {
|
|
55
|
+
const base = Number.isFinite(max) ? max : 0;
|
|
56
|
+
return [base];
|
|
57
|
+
}
|
|
58
|
+
const range = max - min;
|
|
59
|
+
const rough = range / Math.max(target - 1, 1);
|
|
60
|
+
const pow = Math.pow(10, Math.floor(Math.log10(rough)));
|
|
61
|
+
const norm = rough / pow;
|
|
62
|
+
let step: number;
|
|
63
|
+
if (norm < 1.5) step = 1 * pow;
|
|
64
|
+
else if (norm < 3) step = 2 * pow;
|
|
65
|
+
else if (norm < 7) step = 5 * pow;
|
|
66
|
+
else step = 10 * pow;
|
|
67
|
+
const start = Math.floor(min / step) * step;
|
|
68
|
+
const end = Math.ceil(max / step) * step;
|
|
69
|
+
const ticks: number[] = [];
|
|
70
|
+
for (let v = start; v <= end + step / 2; v += step) {
|
|
71
|
+
ticks.push(Number(v.toFixed(10)));
|
|
72
|
+
}
|
|
73
|
+
return ticks;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function formatTick(v: number): string {
|
|
77
|
+
if (Math.abs(v) >= 1000) return `${(v / 1000).toFixed(v % 1000 === 0 ? 0 : 1)}k`;
|
|
78
|
+
if (Number.isInteger(v)) return String(v);
|
|
79
|
+
return v.toFixed(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let hoveredIndex: number | null = $state(null);
|
|
83
|
+
|
|
84
|
+
const plotWidth = $derived(Math.max(width - MARGIN.left - MARGIN.right, 1));
|
|
85
|
+
const plotHeight = $derived(Math.max(height - MARGIN.top - MARGIN.bottom, 1));
|
|
86
|
+
|
|
87
|
+
// Filtrer les bougies invalides AVANT le domaine
|
|
88
|
+
const validData = $derived(
|
|
89
|
+
data.filter((d) =>
|
|
90
|
+
Number.isFinite(d.open) &&
|
|
91
|
+
Number.isFinite(d.high) &&
|
|
92
|
+
Number.isFinite(d.low) &&
|
|
93
|
+
Number.isFinite(d.close)
|
|
94
|
+
)
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
const domainBounds = $derived.by(() => {
|
|
98
|
+
const allVals: number[] = [];
|
|
99
|
+
for (const d of validData) {
|
|
100
|
+
// Domaine inclut open/high/low/close (pas seulement high/low)
|
|
101
|
+
allVals.push(d.open, d.high, d.low, d.close);
|
|
102
|
+
}
|
|
103
|
+
if (allVals.length === 0) return { rawMin: 0, rawMax: 1 };
|
|
104
|
+
const rawMin = Math.min(...allVals);
|
|
105
|
+
const rawMax = Math.max(...allVals);
|
|
106
|
+
// Domaine plat → fallback range 1 pour éviter division par 0
|
|
107
|
+
return { rawMin, rawMax: rawMax === rawMin ? rawMin + 1 : rawMax };
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
const ticks = $derived(niceTicks(domainBounds.rawMin, domainBounds.rawMax, 5));
|
|
111
|
+
const domainMin = $derived(ticks[0]);
|
|
112
|
+
const domainMax = $derived(ticks[ticks.length - 1]);
|
|
113
|
+
|
|
114
|
+
const candles = $derived.by(() => {
|
|
115
|
+
if (validData.length === 0) return [];
|
|
116
|
+
const band = plotWidth / validData.length;
|
|
117
|
+
const bodyW = band * 0.55;
|
|
118
|
+
|
|
119
|
+
return validData.map((d, i) => {
|
|
120
|
+
// clamp high/low pour garantir high≥max(O,C) et low≤min(O,C)
|
|
121
|
+
const clampedHigh = Math.max(d.high, d.open, d.close);
|
|
122
|
+
const clampedLow = Math.min(d.low, d.open, d.close);
|
|
123
|
+
|
|
124
|
+
// Couleur : clôture vs clôture PRÉCÉDENTE (1re bougie : close ≥ open)
|
|
125
|
+
const prevClose = i > 0 ? validData[i - 1].close : d.open;
|
|
126
|
+
const up = d.close >= prevClose;
|
|
127
|
+
// Remplissage : creux si haussière (close ≥ open), plein sinon
|
|
128
|
+
const hollow = d.close >= d.open;
|
|
129
|
+
|
|
130
|
+
const centerX = MARGIN.left + band * i + band / 2;
|
|
131
|
+
|
|
132
|
+
const bodyTop = MARGIN.top + scaleLinear(Math.max(d.open, d.close), domainMin, domainMax, plotHeight, 0);
|
|
133
|
+
const bodyBot = MARGIN.top + scaleLinear(Math.min(d.open, d.close), domainMin, domainMax, plotHeight, 0);
|
|
134
|
+
const highY = MARGIN.top + scaleLinear(clampedHigh, domainMin, domainMax, plotHeight, 0);
|
|
135
|
+
const lowY = MARGIN.top + scaleLinear(clampedLow, domainMin, domainMax, plotHeight, 0);
|
|
136
|
+
|
|
137
|
+
return {
|
|
138
|
+
datum: d,
|
|
139
|
+
index: i,
|
|
140
|
+
up,
|
|
141
|
+
hollow,
|
|
142
|
+
centerX,
|
|
143
|
+
bodyX: centerX - bodyW / 2,
|
|
144
|
+
bodyY: bodyTop,
|
|
145
|
+
bodyW,
|
|
146
|
+
bodyH: Math.max(bodyBot - bodyTop, 0.5),
|
|
147
|
+
wickHighY: highY,
|
|
148
|
+
wickLowY: lowY,
|
|
149
|
+
tooltipY: bodyTop
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
const dataValueItems = $derived(
|
|
155
|
+
validData.map((d) => `${d.label}: O ${d.open} H ${d.high} L ${d.low} C ${d.close}`)
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
function handlePointerMove(event: PointerEvent) {
|
|
159
|
+
const target = event.target;
|
|
160
|
+
if (!(target instanceof Element)) { hoveredIndex = null; return; }
|
|
161
|
+
const idx = Number(target.getAttribute("data-chart-index"));
|
|
162
|
+
hoveredIndex = Number.isInteger(idx) ? idx : null;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const classes = () => ["st-hollowCandlestickChart", className].filter(Boolean).join(" ");
|
|
166
|
+
</script>
|
|
167
|
+
|
|
168
|
+
<div class={classes()}>
|
|
169
|
+
<div
|
|
170
|
+
class="st-hollowCandlestickChart__visual"
|
|
171
|
+
role="img"
|
|
172
|
+
aria-label={label}
|
|
173
|
+
onpointermove={handlePointerMove}
|
|
174
|
+
onpointerleave={() => (hoveredIndex = null)}
|
|
175
|
+
>
|
|
176
|
+
<svg
|
|
177
|
+
viewBox="0 0 {width} {height}"
|
|
178
|
+
preserveAspectRatio="xMidYMid meet"
|
|
179
|
+
width="100%"
|
|
180
|
+
height="100%"
|
|
181
|
+
focusable="false"
|
|
182
|
+
aria-hidden="true"
|
|
183
|
+
>
|
|
184
|
+
<!-- gridlines + tick labels -->
|
|
185
|
+
{#each ticks as tick (tick)}
|
|
186
|
+
{@const ty = MARGIN.top + scaleLinear(tick, domainMin, domainMax, plotHeight, 0)}
|
|
187
|
+
<line class="st-hollowCandlestickChart__grid" x1={MARGIN.left} x2={width - MARGIN.right} y1={ty} y2={ty} />
|
|
188
|
+
<text class="st-hollowCandlestickChart__tickLabel" x={MARGIN.left - 6} y={ty} text-anchor="end" dominant-baseline="middle">
|
|
189
|
+
{formatTick(tick)}
|
|
190
|
+
</text>
|
|
191
|
+
{/each}
|
|
192
|
+
|
|
193
|
+
<!-- axes -->
|
|
194
|
+
<line class="st-hollowCandlestickChart__axis" x1={MARGIN.left} x2={MARGIN.left} y1={MARGIN.top} y2={height - MARGIN.bottom} />
|
|
195
|
+
<line class="st-hollowCandlestickChart__axis" x1={MARGIN.left} x2={width - MARGIN.right} y1={height - MARGIN.bottom} y2={height - MARGIN.bottom} />
|
|
196
|
+
|
|
197
|
+
<!-- clé composite pour éviter les doublons -->
|
|
198
|
+
{#each candles as c, i (`${i}-${c.datum.label}`)}
|
|
199
|
+
<!-- wick -->
|
|
200
|
+
<line
|
|
201
|
+
class="st-hollowCandlestickChart__wick st-hollowCandlestickChart__wick--{c.up ? 'up' : 'down'}"
|
|
202
|
+
x1={c.centerX}
|
|
203
|
+
x2={c.centerX}
|
|
204
|
+
y1={c.wickHighY}
|
|
205
|
+
y2={c.wickLowY}
|
|
206
|
+
data-chart-index={i}
|
|
207
|
+
/>
|
|
208
|
+
<!-- body -->
|
|
209
|
+
<rect
|
|
210
|
+
class="st-hollowCandlestickChart__candle st-hollowCandlestickChart__candle--{c.up ? 'up' : 'down'} st-hollowCandlestickChart__candle--{c.hollow ? 'hollow' : 'filled'}"
|
|
211
|
+
class:st-hollowCandlestickChart__candle--dim={hoveredIndex !== null && hoveredIndex !== i}
|
|
212
|
+
x={c.bodyX}
|
|
213
|
+
y={c.bodyY}
|
|
214
|
+
width={c.bodyW}
|
|
215
|
+
height={c.bodyH}
|
|
216
|
+
rx="1"
|
|
217
|
+
data-chart-index={i}
|
|
218
|
+
/>
|
|
219
|
+
<!-- category label -->
|
|
220
|
+
<text
|
|
221
|
+
class="st-hollowCandlestickChart__categoryLabel"
|
|
222
|
+
x={c.centerX}
|
|
223
|
+
y={height - MARGIN.bottom + 16}
|
|
224
|
+
text-anchor="middle"
|
|
225
|
+
>
|
|
226
|
+
{c.datum.label}
|
|
227
|
+
</text>
|
|
228
|
+
{/each}
|
|
229
|
+
</svg>
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
<ChartDataList {label} items={dataValueItems} />
|
|
233
|
+
|
|
234
|
+
{#if hoveredIndex !== null && candles[hoveredIndex]}
|
|
235
|
+
{@const c = candles[hoveredIndex]}
|
|
236
|
+
<div
|
|
237
|
+
class="st-hollowCandlestickChart__tooltip"
|
|
238
|
+
role="presentation"
|
|
239
|
+
style="left: {(c.centerX / width) * 100}%; top: {(c.tooltipY / height) * 100}%"
|
|
240
|
+
>
|
|
241
|
+
<span class="st-hollowCandlestickChart__tooltipLabel">{c.datum.label}</span>
|
|
242
|
+
<span class="st-hollowCandlestickChart__tooltipValue">O {c.datum.open} H {c.datum.high} L {c.datum.low} C {c.datum.close}</span>
|
|
243
|
+
</div>
|
|
244
|
+
{/if}
|
|
245
|
+
</div>
|
|
246
|
+
|
|
247
|
+
<style>
|
|
248
|
+
.st-hollowCandlestickChart {
|
|
249
|
+
color: var(--st-semantic-text-secondary);
|
|
250
|
+
display: block;
|
|
251
|
+
font-family: inherit;
|
|
252
|
+
position: relative;
|
|
253
|
+
width: 100%;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.st-hollowCandlestickChart svg {
|
|
257
|
+
display: block;
|
|
258
|
+
overflow: visible;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.st-hollowCandlestickChart__visual {
|
|
262
|
+
display: block;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.st-hollowCandlestickChart__axis {
|
|
266
|
+
stroke: var(--st-semantic-border-subtle);
|
|
267
|
+
stroke-width: 1;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.st-hollowCandlestickChart__grid {
|
|
271
|
+
stroke: var(--st-semantic-border-subtle);
|
|
272
|
+
stroke-dasharray: 2 3;
|
|
273
|
+
stroke-width: 1;
|
|
274
|
+
opacity: 0.7;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.st-hollowCandlestickChart__wick {
|
|
278
|
+
stroke-width: 1.5;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.st-hollowCandlestickChart__wick--up {
|
|
282
|
+
stroke: var(--st-semantic-feedback-success);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.st-hollowCandlestickChart__wick--down {
|
|
286
|
+
stroke: var(--st-semantic-feedback-error);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.st-hollowCandlestickChart__candle {
|
|
290
|
+
cursor: pointer;
|
|
291
|
+
stroke-width: 1.5;
|
|
292
|
+
transition: opacity 120ms ease;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.st-hollowCandlestickChart__candle--dim {
|
|
296
|
+
opacity: 0.4;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.st-hollowCandlestickChart__candle--up {
|
|
300
|
+
stroke: var(--st-semantic-feedback-success);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.st-hollowCandlestickChart__candle--down {
|
|
304
|
+
stroke: var(--st-semantic-feedback-error);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/* creux : remplissage transparent (juste la bordure colorée) */
|
|
308
|
+
.st-hollowCandlestickChart__candle--hollow {
|
|
309
|
+
fill: transparent;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/* plein : remplissage = couleur du trait */
|
|
313
|
+
.st-hollowCandlestickChart__candle--filled.st-hollowCandlestickChart__candle--up {
|
|
314
|
+
fill: var(--st-semantic-feedback-success);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.st-hollowCandlestickChart__candle--filled.st-hollowCandlestickChart__candle--down {
|
|
318
|
+
fill: var(--st-semantic-feedback-error);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
@media (prefers-reduced-motion: reduce) {
|
|
322
|
+
.st-hollowCandlestickChart__candle {
|
|
323
|
+
transition: none;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.st-hollowCandlestickChart__tickLabel,
|
|
328
|
+
.st-hollowCandlestickChart__categoryLabel {
|
|
329
|
+
fill: var(--st-semantic-text-secondary);
|
|
330
|
+
font-size: 0.6875rem;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.st-hollowCandlestickChart__tooltip {
|
|
334
|
+
background: var(--st-semantic-surface-inverse);
|
|
335
|
+
border-radius: var(--st-radius-sm, 0.25rem);
|
|
336
|
+
color: var(--st-semantic-text-inverse);
|
|
337
|
+
display: inline-flex;
|
|
338
|
+
flex-direction: column;
|
|
339
|
+
font-size: 0.75rem;
|
|
340
|
+
gap: 0.125rem;
|
|
341
|
+
line-height: 1.2;
|
|
342
|
+
padding: 0.375rem 0.5rem;
|
|
343
|
+
pointer-events: none;
|
|
344
|
+
position: absolute;
|
|
345
|
+
transform: translate(-50%, calc(-100% - 8px));
|
|
346
|
+
white-space: nowrap;
|
|
347
|
+
z-index: 1;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.st-hollowCandlestickChart__tooltipLabel {
|
|
351
|
+
font-weight: 600;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.st-hollowCandlestickChart__tooltipValue {
|
|
355
|
+
opacity: 0.85;
|
|
356
|
+
}
|
|
357
|
+
</style>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HollowCandlestickChart - chandeliers creux (convention Highcharts hollowcandlestick).
|
|
3
|
+
* Variante du CandlestickChart : mèche low→high + corps open↔close, MAIS :
|
|
4
|
+
* - couleur (trait/bordure) = clôture vs clôture PRÉCÉDENTE (hausse/baisse) ;
|
|
5
|
+
* - remplissage = creux si close ≥ open (haussière), plein si close < open (baissière).
|
|
6
|
+
* API canonique (référence Svelte, React/Vue doivent s'aligner)
|
|
7
|
+
*
|
|
8
|
+
* Props obligatoires :
|
|
9
|
+
* data HollowCandlestickChartDatum[] - tableau {label, open, high, low, close}
|
|
10
|
+
* label string
|
|
11
|
+
*
|
|
12
|
+
* Props optionnelles :
|
|
13
|
+
* width number (défaut 480)
|
|
14
|
+
* height number (défaut 240)
|
|
15
|
+
* class string
|
|
16
|
+
*/
|
|
17
|
+
export type HollowCandlestickChartDatum = {
|
|
18
|
+
label: string;
|
|
19
|
+
open: number;
|
|
20
|
+
high: number;
|
|
21
|
+
low: number;
|
|
22
|
+
close: number;
|
|
23
|
+
};
|
|
24
|
+
type HollowCandlestickChartProps = {
|
|
25
|
+
data: HollowCandlestickChartDatum[];
|
|
26
|
+
label: string;
|
|
27
|
+
width?: number;
|
|
28
|
+
height?: number;
|
|
29
|
+
class?: string;
|
|
30
|
+
};
|
|
31
|
+
declare const HollowCandlestickChart: import("svelte").Component<HollowCandlestickChartProps, {}, "">;
|
|
32
|
+
type HollowCandlestickChart = ReturnType<typeof HollowCandlestickChart>;
|
|
33
|
+
export default HollowCandlestickChart;
|
|
34
|
+
//# sourceMappingURL=HollowCandlestickChart.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HollowCandlestickChart.svelte.d.ts","sourceRoot":"","sources":["../src/lib/HollowCandlestickChart.svelte.ts"],"names":[],"mappings":"AAGE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,2BAA2B,EAAE,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAsLJ,QAAA,MAAM,sBAAsB,iEAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
|
package/dist/Input.svelte
CHANGED
|
@@ -121,14 +121,17 @@
|
|
|
121
121
|
|
|
122
122
|
.st-control--sm {
|
|
123
123
|
min-height: var(--st-component-control-anatomy-density-sm-controlHeight, var(--st-component-control-smHeight, 2rem));
|
|
124
|
+
font-size: 0.8125rem;
|
|
124
125
|
}
|
|
125
126
|
|
|
126
127
|
.st-control--md {
|
|
127
128
|
min-height: var(--st-component-control-anatomy-density-md-controlHeight, var(--st-component-control-mdHeight, 2.5rem));
|
|
129
|
+
font-size: 0.875rem;
|
|
128
130
|
}
|
|
129
131
|
|
|
130
132
|
.st-control--lg {
|
|
131
133
|
min-height: var(--st-component-control-anatomy-density-lg-controlHeight, var(--st-component-control-lgHeight, 3rem));
|
|
134
|
+
font-size: 1rem;
|
|
132
135
|
}
|
|
133
136
|
|
|
134
137
|
.st-control::placeholder {
|