@sentropic/design-system-vue 0.36.30 → 0.36.32

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.
@@ -1,6 +1,10 @@
1
1
  import { defineComponent, h, ref } from "vue";
2
2
  import { classNames } from "./classNames.js";
3
3
  import { chartDataList, formatTick, niceTicks, scaleLinear } from "./chartScale.js";
4
+ import { annotationDataListItems, polygonPoints, resolveAnnotations, } from "./chartAnnotations.js";
5
+ import { formatDataLabel, normalizeDataLabels } from "./chartDataLabels.js";
6
+ import { resolveActiveIndex } from "./chartCrosshair.js";
7
+ import { datapointAriaLabel, datapointNavAction, rovingTabIndex } from "./chartKeyboardNav.js";
4
8
  const MARGIN = { top: 14, right: 18, bottom: 36, left: 48 };
5
9
  // Sane upper bound for a per-datum radius (keeps oversized bubbles inside
6
10
  // the plot); non-finite/negative values fall back to the global radius.
@@ -15,6 +19,10 @@ const TONES = [
15
19
  "category7",
16
20
  "category8",
17
21
  ];
22
+ /** Stable hover/selection key of a point: its label, else `"x,y"`. */
23
+ function keyForPoint(d) {
24
+ return d.label ?? `${d.x},${d.y}`;
25
+ }
18
26
  export const ScatterPlot = defineComponent({
19
27
  name: "ScatterPlot",
20
28
  props: {
@@ -25,22 +33,22 @@ export const ScatterPlot = defineComponent({
25
33
  yLabel: { type: String, default: undefined },
26
34
  radius: { type: Number, default: 5 },
27
35
  centroids: { type: Array, default: undefined },
36
+ annotations: { type: Array, default: undefined },
37
+ dataLabels: { type: [Boolean, Object], default: undefined },
38
+ hoverKey: { type: [String, null], default: undefined },
39
+ onHoverKeyChange: { type: Function, default: undefined },
40
+ keyboardNav: { type: Boolean, default: undefined },
41
+ onSelectKey: { type: Function, default: undefined },
28
42
  label: { type: String, required: true },
29
43
  class: { type: String, default: undefined },
30
44
  },
31
45
  setup(props, { attrs }) {
32
46
  const hoveredIndex = ref(null);
33
- function handleLeave() {
34
- hoveredIndex.value = null;
35
- }
36
- function handleVisualPointerMove(event) {
37
- const target = event.target;
38
- if (!(target instanceof Element)) {
39
- hoveredIndex.value = null;
40
- return;
41
- }
42
- const index = Number(target.getAttribute("data-chart-index"));
43
- hoveredIndex.value = Number.isInteger(index) ? index : null;
47
+ // FR-5 — roving keyboard focus over the data points (separate from hover).
48
+ const focusedIndex = ref(-1);
49
+ const datapointRefs = [];
50
+ function emitHoverKey(index, hoverKeys) {
51
+ props.onHoverKeyChange?.(index == null ? null : hoverKeys[index] ?? null);
44
52
  }
45
53
  return () => {
46
54
  const width = props.width ?? 480;
@@ -67,6 +75,7 @@ export const ScatterPlot = defineComponent({
67
75
  cy: MARGIN.top + scaleLinear(d.y, yMin, yMax, plotH, 0),
68
76
  r: typeof d.r === "number" && Number.isFinite(d.r) && d.r >= 0 ? Math.min(d.r, MAX_POINT_RADIUS) : radius,
69
77
  datum: d,
78
+ index: i,
70
79
  tone: (d.tone ?? TONES[i % TONES.length]),
71
80
  }));
72
81
  const centroidMarks = validCentroids.map((c, i) => ({
@@ -75,10 +84,100 @@ export const ScatterPlot = defineComponent({
75
84
  tone: (c.tone ?? TONES[i % TONES.length]),
76
85
  label: c.label,
77
86
  }));
87
+ // --- Annotation overlay -------------------------------------------------
88
+ // Both axes continuous: linear `xScale`/`yScale`, out-of-domain ⇒ null.
89
+ const annotationXScale = (v) => {
90
+ if (typeof v !== "number" || !Number.isFinite(v))
91
+ return null;
92
+ if (v < xMin || v > xMax)
93
+ return null;
94
+ return scaleLinear(v, xMin, xMax, 0, plotW);
95
+ };
96
+ const annotationYScale = (v) => {
97
+ if (!Number.isFinite(v))
98
+ return null;
99
+ if (v < yMin || v > yMax)
100
+ return null;
101
+ return scaleLinear(v, yMin, yMax, plotH, 0);
102
+ };
103
+ const resolvedAnnotations = resolveAnnotations(props.annotations, {
104
+ xScale: annotationXScale,
105
+ yScale: annotationYScale,
106
+ plotLeft: MARGIN.left,
107
+ plotTop: MARGIN.top,
108
+ plotWidth: plotW,
109
+ plotHeight: plotH,
110
+ });
111
+ const annotationRegions = resolvedAnnotations.filter((a) => a.kind === "region");
112
+ const annotationAbove = resolvedAnnotations.filter((a) => a.kind !== "region");
113
+ // --- Data labels --------------------------------------------------------
114
+ // One label per point. Default `top`. The datum `label` wins; else the y.
115
+ const dataLabelOpts = normalizeDataLabels(props.dataLabels);
116
+ const dataLabelItems = dataLabelOpts.enabled
117
+ ? points.map((p) => {
118
+ const text = p.datum.label ?? formatDataLabel(p.datum.y, dataLabelOpts, formatTick);
119
+ const center = dataLabelOpts.position === "center" || dataLabelOpts.position === "inside";
120
+ return {
121
+ key: p.index,
122
+ x: p.cx,
123
+ y: center ? p.cy : p.cy - (p.r + 5),
124
+ text,
125
+ baseline: (center ? "middle" : "auto"),
126
+ };
127
+ })
128
+ : [];
78
129
  const dataValueItems = [
79
130
  ...data.map((d) => (d.label ? `${d.label}: x ${d.x}, y ${d.y}` : `x ${d.x}, y ${d.y}`)),
80
131
  ...validCentroids.map((c) => c.label ? `Centroïde ${c.label}: (${c.x}, ${c.y})` : `Centroïde: (${c.x}, ${c.y})`),
132
+ ...annotationDataListItems(props.annotations),
81
133
  ];
134
+ // Stable key per point (FR-3): `label` else `"x,y"`.
135
+ const hoverKeys = data.map((d) => keyForPoint(d));
136
+ function handleLeave() {
137
+ hoveredIndex.value = null;
138
+ emitHoverKey(null, hoverKeys);
139
+ }
140
+ function handleVisualPointerMove(event) {
141
+ const target = event.target;
142
+ if (!(target instanceof Element)) {
143
+ hoveredIndex.value = null;
144
+ emitHoverKey(null, hoverKeys);
145
+ return;
146
+ }
147
+ const raw = Number(target.getAttribute("data-chart-index"));
148
+ const index = Number.isInteger(raw) ? raw : null;
149
+ hoveredIndex.value = index;
150
+ emitHoverKey(index, hoverKeys);
151
+ }
152
+ // Index whose crosshair/tooltip is DISPLAYED.
153
+ const activeIndex = resolveActiveIndex(props.hoverKey, hoveredIndex.value, hoverKeys);
154
+ const hovered = activeIndex >= 0 ? points[activeIndex] : undefined;
155
+ // --- Keyboard navigation (FR-5) ----------------------------------------
156
+ const navEnabled = (props.keyboardNav === true || props.onSelectKey !== undefined) && points.length > 0;
157
+ const NAV_HIT = 18;
158
+ function focusDatum(index) {
159
+ focusedIndex.value = index;
160
+ datapointRefs[index]?.focus();
161
+ emitHoverKey(index, hoverKeys);
162
+ }
163
+ function handleDatapointKeyDown(event, index) {
164
+ const action = datapointNavAction(event.key, index, points.length);
165
+ if (!action)
166
+ return;
167
+ event.preventDefault();
168
+ if (action.kind === "move") {
169
+ focusDatum(action.index);
170
+ }
171
+ else if (action.kind === "select") {
172
+ props.onSelectKey?.(hoverKeys[index] ?? null);
173
+ }
174
+ else {
175
+ focusedIndex.value = -1;
176
+ emitHoverKey(null, hoverKeys);
177
+ props.onSelectKey?.(null);
178
+ event.currentTarget.blur();
179
+ }
180
+ }
82
181
  const svgChildren = [];
83
182
  for (const t of yTicks) {
84
183
  const y = MARGIN.top + scaleLinear(t, yMin, yMax, plotH, 0);
@@ -101,6 +200,19 @@ export const ScatterPlot = defineComponent({
101
200
  transform: `rotate(-90 12 ${MARGIN.top + plotH / 2})`,
102
201
  }, props.yLabel));
103
202
  }
203
+ // Annotation regions sit BEHIND the points (filled bands).
204
+ if (annotationRegions.length > 0) {
205
+ const regionChildren = [];
206
+ annotationRegions.forEach((a) => {
207
+ if (a.kind !== "region")
208
+ return;
209
+ regionChildren.push(h("rect", { key: `ann-region-${a.key}`, class: "st-scatterPlot__annotationRegion", x: a.x, y: a.y, width: a.width, height: a.height }));
210
+ if (a.label) {
211
+ regionChildren.push(h("text", { key: `ann-region-label-${a.key}`, class: "st-scatterPlot__annotationLabel", x: a.x + 4, y: a.y + 11 }, a.label));
212
+ }
213
+ });
214
+ svgChildren.push(h("g", { class: "st-scatterPlot__annotations st-scatterPlot__annotations--behind" }, regionChildren));
215
+ }
104
216
  points.forEach((p, i) => {
105
217
  svgChildren.push(h("circle", {
106
218
  key: `p${i}`,
@@ -119,7 +231,94 @@ export const ScatterPlot = defineComponent({
119
231
  h("line", { class: "st-scatterPlot__centroidCross", x1: c.cx, x2: c.cx, y1: c.cy - 3.5, y2: c.cy + 3.5 }),
120
232
  ]));
121
233
  });
122
- const hovered = hoveredIndex.value !== null ? points[hoveredIndex.value] : undefined;
234
+ // Annotations ABOVE the points: lines, shapes, points, labels.
235
+ if (annotationAbove.length > 0) {
236
+ const aboveChildren = [];
237
+ annotationAbove.forEach((a) => {
238
+ if (a.kind === "line") {
239
+ aboveChildren.push(h("line", { key: `ann-line-${a.key}`, class: "st-scatterPlot__annotationLine", x1: a.x1, y1: a.y1, x2: a.x2, y2: a.y2 }));
240
+ if (a.label) {
241
+ aboveChildren.push(h("text", {
242
+ key: `ann-line-label-${a.key}`,
243
+ class: "st-scatterPlot__annotationLabel",
244
+ x: a.axis === "x" ? a.x1 + 4 : MARGIN.left + plotW - 4,
245
+ y: a.axis === "x" ? MARGIN.top + 11 : a.y1 - 4,
246
+ "text-anchor": a.axis === "x" ? "start" : "end",
247
+ }, a.label));
248
+ }
249
+ }
250
+ else if (a.kind === "shape") {
251
+ aboveChildren.push(h("polygon", { key: `ann-shape-${a.key}`, class: "st-scatterPlot__annotationShape", points: polygonPoints(a.points) }));
252
+ if (a.label) {
253
+ aboveChildren.push(h("text", { key: `ann-shape-label-${a.key}`, class: "st-scatterPlot__annotationLabel", x: a.labelX, y: a.labelY, "text-anchor": "middle" }, a.label));
254
+ }
255
+ }
256
+ else if (a.kind === "point") {
257
+ aboveChildren.push(h("circle", { key: `ann-point-${a.key}`, class: "st-scatterPlot__annotationPoint", cx: a.x, cy: a.y, r: "4.5" }));
258
+ if (a.label) {
259
+ aboveChildren.push(h("text", { key: `ann-point-label-${a.key}`, class: "st-scatterPlot__annotationLabel", x: a.x, y: a.y - 8, "text-anchor": "middle" }, a.label));
260
+ }
261
+ }
262
+ else {
263
+ aboveChildren.push(h("text", { key: `ann-label-${a.key}`, class: "st-scatterPlot__annotationText", x: a.x, y: a.y, "text-anchor": a.anchor }, a.text));
264
+ }
265
+ });
266
+ svgChildren.push(h("g", { class: "st-scatterPlot__annotations st-scatterPlot__annotations--above" }, aboveChildren));
267
+ }
268
+ // Data labels — one value/label per point, drawn on top. aria-hidden.
269
+ if (dataLabelItems.length > 0) {
270
+ svgChildren.push(h("g", { class: "st-scatterPlot__dataLabels", "aria-hidden": "true" }, dataLabelItems.map((d) => h("text", { key: d.key, class: "st-scatterPlot__dataLabel", x: d.x, y: d.y, "text-anchor": "middle", "dominant-baseline": d.baseline }, d.text))));
271
+ }
272
+ // Crosshair (FR-3) — tokenised CROSSED pair + marker at the active key.
273
+ if (hovered) {
274
+ svgChildren.push(h("g", { class: "st-scatterPlot__crosshair", "aria-hidden": "true" }, [
275
+ h("line", { class: "st-scatterPlot__crosshairLine", x1: hovered.cx, x2: hovered.cx, y1: MARGIN.top, y2: MARGIN.top + plotH }),
276
+ h("line", { class: "st-scatterPlot__crosshairLine", x1: MARGIN.left, x2: MARGIN.left + plotW, y1: hovered.cy, y2: hovered.cy }),
277
+ h("circle", { class: "st-scatterPlot__crosshairMarker", cx: hovered.cx, cy: hovered.cy, r: "5" }),
278
+ ]));
279
+ }
280
+ const visualChildren = [
281
+ h("svg", {
282
+ viewBox: `0 0 ${width} ${height}`,
283
+ preserveAspectRatio: "xMidYMid meet",
284
+ width: "100%",
285
+ height: "100%",
286
+ focusable: "false",
287
+ "aria-hidden": "true",
288
+ }, svgChildren),
289
+ ];
290
+ // Keyboard navigation overlay (FR-5) — focusable transparent hit layer.
291
+ if (navEnabled) {
292
+ datapointRefs.length = points.length;
293
+ visualChildren.push(h("svg", {
294
+ class: "st-scatterPlot__navLayer",
295
+ viewBox: `0 0 ${width} ${height}`,
296
+ preserveAspectRatio: "xMidYMid meet",
297
+ width: "100%",
298
+ height: "100%",
299
+ role: "group",
300
+ "aria-label": `${label} — points de données`,
301
+ }, points.map((p, i) => h("rect", {
302
+ key: `nav${p.index}`,
303
+ ref: (el) => {
304
+ datapointRefs[i] = el ?? null;
305
+ },
306
+ class: "st-scatterPlot__navDatum",
307
+ x: p.cx - NAV_HIT / 2,
308
+ y: p.cy - NAV_HIT / 2,
309
+ width: NAV_HIT,
310
+ height: NAV_HIT,
311
+ rx: "3",
312
+ role: "img",
313
+ tabindex: rovingTabIndex(i, focusedIndex.value, points.length),
314
+ "aria-label": datapointAriaLabel(p.datum.label ?? `${p.datum.x}, ${p.datum.y}`, p.datum.y),
315
+ onKeydown: (event) => handleDatapointKeyDown(event, i),
316
+ onFocus: () => {
317
+ focusedIndex.value = i;
318
+ emitHoverKey(i, hoverKeys);
319
+ },
320
+ }))));
321
+ }
123
322
  return h("div", { ...attrs, class: classNames("st-scatterPlot", props.class) }, [
124
323
  h("div", {
125
324
  class: "st-scatterPlot__visual",
@@ -127,16 +326,7 @@ export const ScatterPlot = defineComponent({
127
326
  "aria-label": label,
128
327
  onPointermove: handleVisualPointerMove,
129
328
  onPointerleave: handleLeave,
130
- }, [
131
- h("svg", {
132
- viewBox: `0 0 ${width} ${height}`,
133
- preserveAspectRatio: "xMidYMid meet",
134
- width: "100%",
135
- height: "100%",
136
- focusable: "false",
137
- "aria-hidden": "true",
138
- }, svgChildren),
139
- ]),
329
+ }, visualChildren),
140
330
  chartDataList(label, dataValueItems),
141
331
  hovered
142
332
  ? h("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"ScatterPlot.js","sourceRoot":"","sources":["../src/ScatterPlot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAgDpF,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAW,CAAC;AAErE,0EAA0E;AAC1E,wEAAwE;AACxE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,MAAM,KAAK,GAAsB;IAC/B,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,KAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;QAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;QACpC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAoC,EAAE,OAAO,EAAE,SAAS,EAAE;QAC7E,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,YAAY,GAAG,GAAG,CAAgB,IAAI,CAAC,CAAC;QAE9C,SAAS,WAAW;YAClB,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,SAAS,uBAAuB,CAAC,KAAmB;YAClD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,CAAC,MAAM,YAAY,OAAO,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9D,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,CAAC;QAED,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;YACnC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAExB,uEAAuE;YACvE,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3G,wEAAwE;YACxE,wEAAwE;YACxE,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChG,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChG,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;gBACxD,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;gBACzG,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAoB;aAC7D,CAAC,CAAC,CAAC;YAEJ,MAAM,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClD,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;gBACxD,EAAE,EAAE,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvD,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAoB;gBAC5D,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC,CAAC;YAEJ,MAAM,cAAc,GAAG;gBACrB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvF,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CACnF;aACF,CAAC;YAEF,MAAM,WAAW,GAA2B,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC5D,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EACpH,CAAC,CACC,MAAM,EACN,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAC5H,UAAU,CAAC,CAAC,CAAC,CACd,CACF,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC7D,WAAW,CAAC,IAAI,CACd,CAAC,CACC,MAAM,EACN,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,EAC5G,UAAU,CAAC,CAAC,CAAC,CACd,CACF,CAAC;YACJ,CAAC;YAED,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAC1H,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAChJ,CAAC;YAEF,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,WAAW,CAAC,IAAI,CACd,CAAC,CACC,MAAM,EACN,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EAC1G,KAAK,CAAC,MAAM,CACb,CACF,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,WAAW,CAAC,IAAI,CACd,CAAC,CACC,MAAM,EACN;oBACE,KAAK,EAAE,2BAA2B;oBAClC,CAAC,EAAE,EAAE;oBACL,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC;oBACzB,aAAa,EAAE,QAAQ;oBACvB,SAAS,EAAE,iBAAiB,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG;iBACtD,EACD,KAAK,CAAC,MAAM,CACb,CACF,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtB,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,QAAQ,EAAE;oBACV,GAAG,EAAE,IAAI,CAAC,EAAE;oBACZ,KAAK,EAAE,UAAU,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9E,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,CAAC,EAAE,CAAC,CAAC,CAAC;oBACN,kBAAkB,EAAE,CAAC;iBACtB,CAAC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,sEAAsE;YACtE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC7B,WAAW,CAAC,IAAI,CACd,CAAC,CACC,GAAG,EACH,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EACtG;oBACE,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;oBAClF,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;oBACzG,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;iBAC1G,CACF,CACF,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAErF,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;gBAC9E,CAAC,CACC,KAAK,EACL;oBACE,KAAK,EAAE,wBAAwB;oBAC/B,IAAI,EAAE,KAAK;oBACX,YAAY,EAAE,KAAK;oBACnB,aAAa,EAAE,uBAAuB;oBACtC,cAAc,EAAE,WAAW;iBAC5B,EACD;oBACE,CAAC,CACC,KAAK,EACL;wBACE,OAAO,EAAE,OAAO,KAAK,IAAI,MAAM,EAAE;wBACjC,mBAAmB,EAAE,eAAe;wBACpC,KAAK,EAAE,MAAM;wBACb,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,OAAO;wBAClB,aAAa,EAAE,MAAM;qBACtB,EACD,WAAW,CACZ;iBACF,CACF;gBACD,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC;gBACpC,OAAO;oBACL,CAAC,CAAC,CAAC,CACC,KAAK,EACL;wBACE,KAAK,EAAE,yBAAyB;wBAChC,IAAI,EAAE,cAAc;wBACpB,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG;qBACpF,EACD;wBACE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;wBACtG,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;qBACpG,CACF;oBACH,CAAC,CAAC,IAAI;aACT,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"ScatterPlot.js","sourceRoot":"","sources":["../src/ScatterPlot.ts"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -5431,6 +5431,75 @@
5431
5431
  .st-scatterPlot__tooltipLabel { font-weight: 600; }
5432
5432
  .st-scatterPlot__tooltipValue { opacity: 0.85; }
5433
5433
 
5434
+ /* --- Annotation layer ----------------------------------------------------
5435
+ Regions render BEHIND the points (color-mix tint, never raw opacity so the
5436
+ data keeps contrast); lines/shapes/points/labels render ABOVE. */
5437
+ .st-scatterPlot__annotationRegion {
5438
+ fill: color-mix(in srgb, var(--st-semantic-feedback-info) 12%, transparent);
5439
+ stroke: none;
5440
+ }
5441
+ .st-scatterPlot__annotationLine {
5442
+ stroke: var(--st-semantic-feedback-info);
5443
+ stroke-width: 1.5;
5444
+ stroke-dasharray: 4 3;
5445
+ }
5446
+ .st-scatterPlot__annotationShape {
5447
+ fill: color-mix(in srgb, var(--st-semantic-feedback-info) 14%, transparent);
5448
+ stroke: var(--st-semantic-feedback-info);
5449
+ stroke-width: 1.5;
5450
+ }
5451
+ .st-scatterPlot__annotationPoint {
5452
+ fill: var(--st-semantic-feedback-info);
5453
+ stroke: var(--st-semantic-surface-default);
5454
+ stroke-width: 1.5;
5455
+ }
5456
+ .st-scatterPlot__annotationLabel,
5457
+ .st-scatterPlot__annotationText {
5458
+ fill: var(--st-semantic-text-primary);
5459
+ font-size: 0.625rem;
5460
+ font-weight: 600;
5461
+ }
5462
+
5463
+ /* Data labels — per-point value/label, drawn on top. Token-only colour. */
5464
+ .st-scatterPlot__dataLabel {
5465
+ fill: var(--st-semantic-text-primary);
5466
+ font-size: 0.6875rem;
5467
+ font-weight: 600;
5468
+ }
5469
+
5470
+ /* --- Crosshair layer (FR-3) ----------------------------------------------
5471
+ A tokenised dashed CROSSED pair (vertical + horizontal) at the active
5472
+ (hovered/controlled) key, plus an emphasised marker on the point.
5473
+ Decorative (aria-hidden). */
5474
+ .st-scatterPlot__crosshairLine {
5475
+ stroke: var(--st-semantic-border-strong);
5476
+ stroke-width: 1;
5477
+ stroke-dasharray: 3 3;
5478
+ opacity: 0.7;
5479
+ }
5480
+ .st-scatterPlot__crosshairMarker {
5481
+ fill: currentColor;
5482
+ stroke: var(--st-semantic-surface-default);
5483
+ stroke-width: 2;
5484
+ }
5485
+
5486
+ /* --- Keyboard navigation layer (FR-5) ------------------------------------
5487
+ A focusable, transparent overlay of one hit-rect per point. Carries the
5488
+ roving tab stop; the focus ring is tokenised (border-interactive). */
5489
+ .st-scatterPlot__navLayer {
5490
+ inset: 0;
5491
+ position: absolute;
5492
+ }
5493
+ .st-scatterPlot__navDatum {
5494
+ fill: transparent;
5495
+ outline: none;
5496
+ }
5497
+ .st-scatterPlot__navDatum:focus-visible {
5498
+ fill: color-mix(in srgb, var(--st-semantic-border-interactive) 12%, transparent);
5499
+ outline: 2px solid var(--st-semantic-border-interactive);
5500
+ outline-offset: 1px;
5501
+ }
5502
+
5434
5503
  .st-field {
5435
5504
  color: var(--st-component-field-labelText, var(--st-semantic-text-primary));
5436
5505
  display: grid;
@@ -10323,6 +10392,7 @@
10323
10392
 
10324
10393
  .st-candlestickChart__visual {
10325
10394
  display: block;
10395
+ position: relative;
10326
10396
  }
10327
10397
 
10328
10398
  .st-candlestickChart__axis {
@@ -10366,6 +10436,65 @@
10366
10436
  fill: var(--st-semantic-feedback-error);
10367
10437
  }
10368
10438
 
10439
+ /* --- Annotation layer ------------------------------------------------------
10440
+ Regions render BEHIND the candles; lines/shapes/points/labels render ABOVE. */
10441
+ .st-candlestickChart__annotationRegion {
10442
+ fill: color-mix(in srgb, var(--st-semantic-feedback-info) 12%, transparent);
10443
+ stroke: none;
10444
+ }
10445
+ .st-candlestickChart__annotationLine {
10446
+ stroke: var(--st-semantic-feedback-info);
10447
+ stroke-width: 1.5;
10448
+ stroke-dasharray: 4 3;
10449
+ }
10450
+ .st-candlestickChart__annotationShape {
10451
+ fill: color-mix(in srgb, var(--st-semantic-feedback-info) 14%, transparent);
10452
+ stroke: var(--st-semantic-feedback-info);
10453
+ stroke-width: 1.5;
10454
+ }
10455
+ .st-candlestickChart__annotationPoint {
10456
+ fill: var(--st-semantic-feedback-info);
10457
+ stroke: var(--st-semantic-surface-default);
10458
+ stroke-width: 1.5;
10459
+ }
10460
+ .st-candlestickChart__annotationLabel,
10461
+ .st-candlestickChart__annotationText {
10462
+ fill: var(--st-semantic-text-primary);
10463
+ font-size: 0.625rem;
10464
+ font-weight: 600;
10465
+ }
10466
+
10467
+ /* Data labels — per-candle close value, drawn on top. Token-only colour. */
10468
+ .st-candlestickChart__dataLabel {
10469
+ fill: var(--st-semantic-text-primary);
10470
+ font-size: 0.6875rem;
10471
+ font-weight: 600;
10472
+ }
10473
+
10474
+ /* Crosshair (FR-3) — a tokenised dashed vertical line at the active candle. */
10475
+ .st-candlestickChart__crosshairLine {
10476
+ stroke: var(--st-semantic-border-strong);
10477
+ stroke-width: 1;
10478
+ stroke-dasharray: 3 3;
10479
+ opacity: 0.7;
10480
+ }
10481
+
10482
+ /* Keyboard navigation layer (FR-5) — a focusable, transparent overlay of one
10483
+ hit-rect per candle. Carries the roving tab stop; the focus ring is tokenised. */
10484
+ .st-candlestickChart__navLayer {
10485
+ inset: 0;
10486
+ position: absolute;
10487
+ }
10488
+ .st-candlestickChart__navDatum {
10489
+ fill: transparent;
10490
+ outline: none;
10491
+ }
10492
+ .st-candlestickChart__navDatum:focus-visible {
10493
+ fill: color-mix(in srgb, var(--st-semantic-border-interactive) 12%, transparent);
10494
+ outline: 2px solid var(--st-semantic-border-interactive);
10495
+ outline-offset: 1px;
10496
+ }
10497
+
10369
10498
  @media (prefers-reduced-motion: reduce) {
10370
10499
  .st-candlestickChart__body {
10371
10500
  transition: none;
@@ -10419,6 +10548,7 @@
10419
10548
 
10420
10549
  .st-ohlcChart__visual {
10421
10550
  display: block;
10551
+ position: relative;
10422
10552
  }
10423
10553
 
10424
10554
  .st-ohlcChart__axis {
@@ -10457,6 +10587,65 @@
10457
10587
  stroke: var(--st-semantic-feedback-error);
10458
10588
  }
10459
10589
 
10590
+ /* --- Annotation layer ------------------------------------------------------
10591
+ Regions render BEHIND the bars; lines/shapes/points/labels render ABOVE. */
10592
+ .st-ohlcChart__annotationRegion {
10593
+ fill: color-mix(in srgb, var(--st-semantic-feedback-info) 12%, transparent);
10594
+ stroke: none;
10595
+ }
10596
+ .st-ohlcChart__annotationLine {
10597
+ stroke: var(--st-semantic-feedback-info);
10598
+ stroke-width: 1.5;
10599
+ stroke-dasharray: 4 3;
10600
+ }
10601
+ .st-ohlcChart__annotationShape {
10602
+ fill: color-mix(in srgb, var(--st-semantic-feedback-info) 14%, transparent);
10603
+ stroke: var(--st-semantic-feedback-info);
10604
+ stroke-width: 1.5;
10605
+ }
10606
+ .st-ohlcChart__annotationPoint {
10607
+ fill: var(--st-semantic-feedback-info);
10608
+ stroke: var(--st-semantic-surface-default);
10609
+ stroke-width: 1.5;
10610
+ }
10611
+ .st-ohlcChart__annotationLabel,
10612
+ .st-ohlcChart__annotationText {
10613
+ fill: var(--st-semantic-text-primary);
10614
+ font-size: 0.625rem;
10615
+ font-weight: 600;
10616
+ }
10617
+
10618
+ /* Data labels — per-bar close value, drawn on top. Token-only colour. */
10619
+ .st-ohlcChart__dataLabel {
10620
+ fill: var(--st-semantic-text-primary);
10621
+ font-size: 0.6875rem;
10622
+ font-weight: 600;
10623
+ }
10624
+
10625
+ /* Crosshair (FR-3) — a tokenised dashed vertical line at the active bar. */
10626
+ .st-ohlcChart__crosshairLine {
10627
+ stroke: var(--st-semantic-border-strong);
10628
+ stroke-width: 1;
10629
+ stroke-dasharray: 3 3;
10630
+ opacity: 0.7;
10631
+ }
10632
+
10633
+ /* Keyboard navigation layer (FR-5) — a focusable, transparent overlay of one
10634
+ hit-rect per bar. Carries the roving tab stop; the focus ring is tokenised. */
10635
+ .st-ohlcChart__navLayer {
10636
+ inset: 0;
10637
+ position: absolute;
10638
+ }
10639
+ .st-ohlcChart__navDatum {
10640
+ fill: transparent;
10641
+ outline: none;
10642
+ }
10643
+ .st-ohlcChart__navDatum:focus-visible {
10644
+ fill: color-mix(in srgb, var(--st-semantic-border-interactive) 12%, transparent);
10645
+ outline: 2px solid var(--st-semantic-border-interactive);
10646
+ outline-offset: 1px;
10647
+ }
10648
+
10460
10649
  @media (prefers-reduced-motion: reduce) {
10461
10650
  .st-ohlcChart__bar {
10462
10651
  transition: none;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/design-system-vue",
3
- "version": "0.36.30",
3
+ "version": "0.36.32",
4
4
  "description": "Vue 3 components for the Sentropic design system.",
5
5
  "type": "module",
6
6
  "publishConfig": {