@sentropic/design-system-react 0.2.0 → 0.4.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.
Files changed (70) hide show
  1. package/dist/AreaChart.d.ts +16 -2
  2. package/dist/AreaChart.d.ts.map +1 -1
  3. package/dist/AreaChart.js +96 -1
  4. package/dist/AreaChart.js.map +1 -1
  5. package/dist/BackToTop.d.ts +20 -0
  6. package/dist/BackToTop.d.ts.map +1 -0
  7. package/dist/BackToTop.js +44 -0
  8. package/dist/BackToTop.js.map +1 -0
  9. package/dist/BarChart.d.ts +16 -2
  10. package/dist/BarChart.d.ts.map +1 -1
  11. package/dist/BarChart.js +90 -1
  12. package/dist/BarChart.js.map +1 -1
  13. package/dist/DataTable.d.ts +49 -2
  14. package/dist/DataTable.d.ts.map +1 -1
  15. package/dist/DataTable.js +144 -1
  16. package/dist/DataTable.js.map +1 -1
  17. package/dist/DisplaySettings.d.ts +31 -0
  18. package/dist/DisplaySettings.d.ts.map +1 -0
  19. package/dist/DisplaySettings.js +35 -0
  20. package/dist/DisplaySettings.js.map +1 -0
  21. package/dist/DonutChart.d.ts +19 -2
  22. package/dist/DonutChart.d.ts.map +1 -1
  23. package/dist/DonutChart.js +61 -1
  24. package/dist/DonutChart.js.map +1 -1
  25. package/dist/LineChart.d.ts +17 -2
  26. package/dist/LineChart.d.ts.map +1 -1
  27. package/dist/LineChart.js +92 -1
  28. package/dist/LineChart.js.map +1 -1
  29. package/dist/MediaContent.d.ts +33 -0
  30. package/dist/MediaContent.d.ts.map +1 -0
  31. package/dist/MediaContent.js +10 -0
  32. package/dist/MediaContent.js.map +1 -0
  33. package/dist/Notification.d.ts +24 -0
  34. package/dist/Notification.d.ts.map +1 -0
  35. package/dist/Notification.js +10 -0
  36. package/dist/Notification.js.map +1 -0
  37. package/dist/ScatterPlot.d.ts +19 -2
  38. package/dist/ScatterPlot.d.ts.map +1 -1
  39. package/dist/ScatterPlot.js +55 -1
  40. package/dist/ScatterPlot.js.map +1 -1
  41. package/dist/Sparkline.d.ts +13 -2
  42. package/dist/Sparkline.d.ts.map +1 -1
  43. package/dist/Sparkline.js +32 -1
  44. package/dist/Sparkline.js.map +1 -1
  45. package/dist/StackedBarChart.d.ts +20 -2
  46. package/dist/StackedBarChart.d.ts.map +1 -1
  47. package/dist/StackedBarChart.js +78 -1
  48. package/dist/StackedBarChart.js.map +1 -1
  49. package/dist/TableOfContents.d.ts +19 -0
  50. package/dist/TableOfContents.d.ts.map +1 -0
  51. package/dist/TableOfContents.js +18 -0
  52. package/dist/TableOfContents.js.map +1 -0
  53. package/dist/Transcription.d.ts +24 -0
  54. package/dist/Transcription.d.ts.map +1 -0
  55. package/dist/Transcription.js +23 -0
  56. package/dist/Transcription.js.map +1 -0
  57. package/dist/catalog.d.ts +41 -95
  58. package/dist/catalog.d.ts.map +1 -1
  59. package/dist/catalog.js +61 -78
  60. package/dist/catalog.js.map +1 -1
  61. package/dist/chartScale.d.ts +25 -0
  62. package/dist/chartScale.d.ts.map +1 -0
  63. package/dist/chartScale.js +71 -0
  64. package/dist/chartScale.js.map +1 -0
  65. package/dist/index.d.ts +13 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +6 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/styles.css +260 -0
  70. package/package.json +1 -1
package/dist/Sparkline.js CHANGED
@@ -1,2 +1,33 @@
1
- export { Sparkline } from "./catalog.js";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { classNames } from "./classNames.js";
4
+ const PADDING = 2;
5
+ export function Sparkline({ data, width = 120, height = 28, tone = "neutral", strokeWidth = 1.5, area = false, label, className, ...rest }) {
6
+ const geometry = (() => {
7
+ if (!data || data.length === 0) {
8
+ return { line: "", area: "" };
9
+ }
10
+ const min = Math.min(...data);
11
+ const max = Math.max(...data);
12
+ const span = max - min || 1;
13
+ const innerWidth = Math.max(width - PADDING * 2, 1);
14
+ const innerHeight = Math.max(height - PADDING * 2, 1);
15
+ const step = data.length > 1 ? innerWidth / (data.length - 1) : 0;
16
+ const points = data.map((value, index) => {
17
+ const x = PADDING + step * index;
18
+ const normalised = (value - min) / span;
19
+ const y = PADDING + (1 - normalised) * innerHeight;
20
+ return { x, y };
21
+ });
22
+ const line = points
23
+ .map((p, i) => `${i === 0 ? "M" : "L"}${p.x.toFixed(2)},${p.y.toFixed(2)}`)
24
+ .join(" ");
25
+ const baseline = height - PADDING;
26
+ const first = points[0];
27
+ const last = points[points.length - 1];
28
+ const areaPath = `${line} L${last.x.toFixed(2)},${baseline.toFixed(2)} L${first.x.toFixed(2)},${baseline.toFixed(2)} Z`;
29
+ return { line, area: areaPath };
30
+ })();
31
+ return (_jsx("span", { ...rest, className: classNames("st-sparkline", `st-sparkline--${tone}`, className), role: "img", "aria-label": label, children: _jsxs("svg", { width: width, height: height, viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "none", "aria-hidden": label ? "true" : undefined, focusable: "false", children: [area && geometry.area ? _jsx("path", { d: geometry.area, className: "st-sparkline__area" }) : null, geometry.line ? (_jsx("path", { d: geometry.line, className: "st-sparkline__line", fill: "none", strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round" })) : null] }) }));
32
+ }
2
33
  //# sourceMappingURL=Sparkline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../src/Sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../src/Sparkline.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,21 @@
1
- export { StackedBarChart } from "./catalog.js";
2
- export type { StackedBarChartProps, StackedBarDatum, StackedBarSegment, StackedBarTone } from "./catalog.js";
1
+ import React from "react";
2
+ export type StackedBarTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
3
+ export type StackedBarSegment = {
4
+ label: string;
5
+ value: number;
6
+ tone?: StackedBarTone;
7
+ };
8
+ export type StackedBarDatum = {
9
+ label: string;
10
+ segments: StackedBarSegment[];
11
+ };
12
+ export type StackedBarChartProps = Omit<React.HTMLAttributes<HTMLDivElement>, "className"> & {
13
+ data: StackedBarDatum[];
14
+ width?: number;
15
+ height?: number;
16
+ label: string;
17
+ showLegend?: boolean;
18
+ className?: string;
19
+ };
20
+ export declare function StackedBarChart({ data, width, height, label, showLegend, className, ...rest }: StackedBarChartProps): import("react/jsx-runtime").JSX.Element;
3
21
  //# sourceMappingURL=StackedBarChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarChart.d.ts","sourceRoot":"","sources":["../src/StackedBarChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"StackedBarChart.d.ts","sourceRoot":"","sources":["../src/StackedBarChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,GAAG;IAC3F,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA4BF,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,KAAW,EACX,MAAY,EACZ,KAAK,EACL,UAAiB,EACjB,SAAS,EACT,GAAG,IAAI,EACR,EAAE,oBAAoB,2CAkKtB"}
@@ -1,2 +1,79 @@
1
- export { StackedBarChart } from "./catalog.js";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { classNames } from "./classNames.js";
4
+ import { ChartDataList, formatTick, niceTicks, scaleLinear } from "./chartScale.js";
5
+ const MARGIN = { top: 14, right: 16, bottom: 34, left: 44 };
6
+ const TONES = [
7
+ "category1",
8
+ "category2",
9
+ "category3",
10
+ "category4",
11
+ "category5",
12
+ "category6",
13
+ "category7",
14
+ "category8",
15
+ ];
16
+ export function StackedBarChart({ data, width = 480, height = 260, label, showLegend = true, className, ...rest }) {
17
+ const [hovered, setHovered] = React.useState(null);
18
+ // Légende : tones par label de série (ordre de la 1re barre).
19
+ const legend = (() => {
20
+ const seen = new Map();
21
+ data.forEach((bar) => bar.segments.forEach((seg, i) => {
22
+ if (!seen.has(seg.label))
23
+ seen.set(seg.label, seg.tone ?? TONES[i % TONES.length]);
24
+ }));
25
+ return [...seen.entries()].map(([seriesLabel, tone]) => ({ seriesLabel, tone }));
26
+ })();
27
+ const totals = data.map((b) => b.segments.reduce((s, x) => s + Math.max(x.value, 0), 0));
28
+ const ticks = niceTicks(0, Math.max(0, ...totals));
29
+ const domainMax = ticks[ticks.length - 1];
30
+ const plotW = Math.max(width - MARGIN.left - MARGIN.right, 1);
31
+ const plotH = Math.max(height - MARGIN.top - MARGIN.bottom, 1);
32
+ const bars = (() => {
33
+ if (data.length === 0)
34
+ return [];
35
+ const band = plotW / data.length;
36
+ const barWidth = band * 0.6;
37
+ return data.map((bar, bi) => {
38
+ const x = MARGIN.left + band * bi + (band - barWidth) / 2;
39
+ let acc = 0;
40
+ const segs = bar.segments.map((seg, si) => {
41
+ const v = Math.max(seg.value, 0);
42
+ const yTop = MARGIN.top + scaleLinear(acc + v, 0, domainMax, plotH, 0);
43
+ const yBottom = MARGIN.top + scaleLinear(acc, 0, domainMax, plotH, 0);
44
+ acc += v;
45
+ return {
46
+ x,
47
+ y: yTop,
48
+ width: barWidth,
49
+ height: Math.max(yBottom - yTop, 0),
50
+ seg,
51
+ tone: seg.tone ?? TONES[si % TONES.length],
52
+ cx: x + barWidth / 2,
53
+ cy: yTop + (yBottom - yTop) / 2,
54
+ };
55
+ });
56
+ return { x, band, label: bar.label, segs, cxLabel: MARGIN.left + band * (bi + 0.5) };
57
+ });
58
+ })();
59
+ const dataValueItems = data.flatMap((bar) => bar.segments.map((seg) => `${bar.label}, ${seg.label}: ${seg.value}`));
60
+ function handleLeave() {
61
+ setHovered(null);
62
+ }
63
+ function handleVisualPointerMove(event) {
64
+ const target = event.target;
65
+ if (!(target instanceof Element)) {
66
+ setHovered(null);
67
+ return;
68
+ }
69
+ const bar = Number(target.getAttribute("data-bar-index"));
70
+ const seg = Number(target.getAttribute("data-segment-index"));
71
+ setHovered(Number.isInteger(bar) && Number.isInteger(seg) ? { bar, seg } : null);
72
+ }
73
+ const hoveredSeg = hovered && bars[hovered.bar]?.segs[hovered.seg];
74
+ return (_jsxs("div", { ...rest, className: classNames("st-stackedBar", className), children: [_jsx("div", { className: "st-stackedBar__visual", role: "img", "aria-label": label, onPointerMove: handleVisualPointerMove, onPointerLeave: handleLeave, children: _jsxs("svg", { viewBox: `0 0 ${width} ${height}`, preserveAspectRatio: "xMidYMid meet", width: "100%", height: "100%", focusable: "false", "aria-hidden": "true", children: [ticks.map((t) => {
75
+ const y = MARGIN.top + scaleLinear(t, 0, domainMax, plotH, 0);
76
+ return (_jsxs(React.Fragment, { children: [_jsx("line", { className: "st-stackedBar__grid", x1: MARGIN.left, x2: width - MARGIN.right, y1: y, y2: y }), _jsx("text", { className: "st-stackedBar__tick", x: MARGIN.left - 6, y: y, textAnchor: "end", dominantBaseline: "middle", children: formatTick(t) })] }, t));
77
+ }), _jsx("line", { className: "st-stackedBar__axis", x1: MARGIN.left, x2: MARGIN.left, y1: MARGIN.top, y2: height - MARGIN.bottom }), _jsx("line", { className: "st-stackedBar__axis", x1: MARGIN.left, x2: width - MARGIN.right, y1: height - MARGIN.bottom, y2: height - MARGIN.bottom }), bars.map((bar, bi) => (_jsxs(React.Fragment, { children: [_jsx("text", { className: "st-stackedBar__categoryLabel", x: bar.cxLabel, y: height - MARGIN.bottom + 16, textAnchor: "middle", children: bar.label }), bar.segs.map((s, si) => (_jsx("rect", { className: classNames("st-stackedBar__seg", `st-stackedBar__seg--${s.tone}`, hovered !== null && !(hovered.bar === bi && hovered.seg === si) && "st-stackedBar__seg--dim"), x: s.x, y: s.y, width: s.width, height: s.height, "data-bar-index": bi, "data-segment-index": si }, s.seg.label)))] }, bar.label)))] }) }), _jsx(ChartDataList, { label: label, items: dataValueItems }), hoveredSeg ? (_jsxs("div", { className: "st-stackedBar__tooltip", role: "presentation", style: { left: `${(hoveredSeg.cx / width) * 100}%`, top: `${(hoveredSeg.cy / height) * 100}%` }, children: [_jsx("span", { className: "st-stackedBar__tooltipLabel", children: hoveredSeg.seg.label }), _jsx("span", { className: "st-stackedBar__tooltipValue", children: hoveredSeg.seg.value })] })) : null, showLegend && legend.length > 0 ? (_jsx("ul", { className: "st-stackedBar__legend", children: legend.map((item) => (_jsxs("li", { className: "st-stackedBar__legendItem", children: [_jsx("span", { className: classNames("st-stackedBar__legendSwatch", `st-stackedBar__legendSwatch--${item.tone}`), "aria-hidden": "true" }), item.seriesLabel] }, item.seriesLabel))) })) : null] }));
78
+ }
2
79
  //# sourceMappingURL=StackedBarChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarChart.js","sourceRoot":"","sources":["../src/StackedBarChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"StackedBarChart.js","sourceRoot":"","sources":["../src/StackedBarChart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ export interface TableOfContentsItem {
3
+ id: string;
4
+ label: string;
5
+ level?: number;
6
+ }
7
+ export type TableOfContentsProps = Omit<React.HTMLAttributes<HTMLElement>, "className" | "items"> & {
8
+ title?: string;
9
+ items: TableOfContentsItem[];
10
+ activeId?: string;
11
+ className?: string;
12
+ };
13
+ export declare const TableOfContents: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement>, "className" | "items"> & {
14
+ title?: string;
15
+ items: TableOfContentsItem[];
16
+ activeId?: string;
17
+ className?: string;
18
+ } & React.RefAttributes<HTMLElement>>;
19
+ //# sourceMappingURL=TableOfContents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableOfContents.d.ts","sourceRoot":"","sources":["../src/TableOfContents.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG;IAClG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,eAAO,MAAM,eAAe;YARlB,MAAM;WACP,mBAAmB,EAAE;eACjB,MAAM;gBACL,MAAM;qCA6CnB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { classNames } from "./classNames.js";
4
+ const normalizeItemId = (value) => value.replace(/^#/, "");
5
+ export const TableOfContents = React.forwardRef(({ title, items, activeId = "", className, ...rest }, ref) => {
6
+ const normalizedActive = normalizeItemId(activeId);
7
+ const normalizedItems = items.map((item) => ({
8
+ ...item,
9
+ id: normalizeItemId(item.id),
10
+ level: Math.max(item.level ?? 1, 1),
11
+ }));
12
+ return (_jsxs("nav", { ...rest, ref: ref, className: classNames("st-tableOfContents", className), "aria-label": title ?? "Table des matières", children: [title ? _jsx("p", { className: "st-tableOfContents__title", children: title }) : null, _jsx("ol", { className: "st-tableOfContents__list", children: normalizedItems.map((item) => {
13
+ const isActive = item.id === normalizedActive;
14
+ return (_jsx("li", { className: "st-tableOfContents__item", style: { "--st-tableOfContents-level": item.level - 1 }, children: _jsx("a", { className: "st-tableOfContents__link", href: `#${item.id}`, "aria-current": isActive ? "location" : undefined, children: item.label }) }, item.id));
15
+ }) })] }));
16
+ });
17
+ TableOfContents.displayName = "TableOfContents";
18
+ //# sourceMappingURL=TableOfContents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableOfContents.js","sourceRoot":"","sources":["../src/TableOfContents.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAe7C,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAC7C,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;IAC3D,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3C,GAAG,IAAI;QACP,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;KACpC,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,kBACM,IAAI,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE,SAAS,CAAC,gBAC1C,KAAK,IAAI,oBAAoB,aAExC,KAAK,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,2BAA2B,YAAE,KAAK,GAAK,CAAC,CAAC,CAAC,IAAI,EACpE,aAAI,SAAS,EAAC,0BAA0B,YACrC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,KAAK,gBAAgB,CAAC;oBAC9C,OAAO,CACL,aAEE,SAAS,EAAC,0BAA0B,EACpC,KAAK,EAAE,EAAE,4BAA4B,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAyB,YAE9E,YACE,SAAS,EAAC,0BAA0B,EACpC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,kBACL,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,YAE9C,IAAI,CAAC,KAAK,GACT,IAVC,IAAI,CAAC,EAAE,CAWT,CACN,CAAC;gBACJ,CAAC,CAAC,GACC,IACD,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ export type TranscriptionSegment = {
3
+ speaker?: string;
4
+ startTime?: string;
5
+ endTime?: string;
6
+ text: string;
7
+ };
8
+ export type TranscriptionProps = Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
9
+ title?: string;
10
+ segments?: TranscriptionSegment[];
11
+ text?: string;
12
+ className?: string;
13
+ open?: boolean;
14
+ showTimestamps?: boolean;
15
+ };
16
+ export declare const Transcription: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLElement>, "className"> & {
17
+ title?: string;
18
+ segments?: TranscriptionSegment[];
19
+ text?: string;
20
+ className?: string;
21
+ open?: boolean;
22
+ showTimestamps?: boolean;
23
+ } & React.RefAttributes<HTMLDetailsElement>>;
24
+ //# sourceMappingURL=Transcription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transcription.d.ts","sourceRoot":"","sources":["../src/Transcription.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,GAAG;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,aAAa;YARhB,MAAM;eACH,oBAAoB,EAAE;WAC1B,MAAM;gBACD,MAAM;WACX,OAAO;qBACG,OAAO;4CAgEzB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { classNames } from "./classNames.js";
4
+ export const Transcription = React.forwardRef(({ title = "Transcription", segments, text, open = false, showTimestamps = true, className, ...rest }, ref) => {
5
+ const resolvedSegments = (segments ?? []).filter((segment) => Boolean(segment.text?.trim()));
6
+ const hasSegments = resolvedSegments.length > 0;
7
+ const hasText = Boolean(text && text.trim().length);
8
+ const formatInterval = (segment) => {
9
+ if (!showTimestamps || (!segment.startTime && !segment.endTime))
10
+ return "";
11
+ if (!segment.startTime)
12
+ return segment.endTime ? `- ${segment.endTime}` : "";
13
+ if (!segment.endTime)
14
+ return `${segment.startTime} -`;
15
+ return `${segment.startTime} - ${segment.endTime}`;
16
+ };
17
+ return (_jsxs("details", { ...rest, ref: ref, open: open, className: classNames("st-transcription", className), children: [_jsx("summary", { children: title }), _jsx("div", { className: "st-transcription__content", children: hasSegments ? (_jsx("ol", { className: "st-transcription__list", children: resolvedSegments.map((segment, index) => {
18
+ const interval = formatInterval(segment);
19
+ return (_jsxs("li", { className: "st-transcription__item", children: [_jsxs("p", { className: "st-transcription__meta", children: [segment.speaker ? (_jsx("span", { className: "st-transcription__speaker", children: segment.speaker })) : null, segment.speaker && interval ? _jsx("span", { "aria-hidden": "true", children: "\u00A0\u2022\u00A0" }) : null, interval ? (_jsxs("time", { children: [_jsxs("span", { className: "st-transcription__sr-only", children: ["Horodatage ", interval] }), _jsx("span", { "aria-hidden": "true", children: interval })] })) : null] }), _jsx("p", { className: "st-transcription__text", children: segment.text })] }, index));
20
+ }) })) : hasText ? (_jsx("p", { className: "st-transcription__text", children: text })) : (_jsx("p", { className: "st-transcription__text", children: "Aucun contenu de transcription fourni." })) })] }));
21
+ });
22
+ Transcription.displayName = "Transcription";
23
+ //# sourceMappingURL=Transcription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transcription.js","sourceRoot":"","sources":["../src/Transcription.tsx"],"names":[],"mappings":"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"}
package/dist/catalog.d.ts CHANGED
@@ -4,9 +4,11 @@ export type Tone = "neutral" | "info" | "success" | "warning" | "error";
4
4
  export type DataTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
5
5
  type ActionItem = {
6
6
  id?: string;
7
+ value?: string;
7
8
  label: React.ReactNode;
8
9
  disabled?: boolean;
9
10
  variant?: "default" | "danger";
11
+ danger?: boolean;
10
12
  onClick?: () => void;
11
13
  };
12
14
  type OptionItem = {
@@ -25,9 +27,13 @@ export type AccordionProps = React.HTMLAttributes<HTMLDivElement> & {
25
27
  openIds?: string[];
26
28
  defaultOpenIds?: string[];
27
29
  allowMultiple?: boolean;
30
+ /** Svelte-canonical alias for `defaultOpenIds` (initially open item ids). */
31
+ open?: string[];
32
+ /** Svelte-canonical alias for `allowMultiple`. */
33
+ multiple?: boolean;
28
34
  onChange?: (openIds: string[]) => void;
29
35
  };
30
- export declare function Accordion({ items, openIds, defaultOpenIds, allowMultiple, onChange, className, ...rest }: AccordionProps): import("react/jsx-runtime").JSX.Element;
36
+ export declare function Accordion({ items, openIds, defaultOpenIds, open: openAlias, allowMultiple, multiple, onChange, className, ...rest }: AccordionProps): import("react/jsx-runtime").JSX.Element;
31
37
  export type AlertProps = React.HTMLAttributes<HTMLElement> & {
32
38
  tone?: Exclude<Tone, "neutral">;
33
39
  title: React.ReactNode;
@@ -35,56 +41,6 @@ export type AlertProps = React.HTMLAttributes<HTMLElement> & {
35
41
  actions?: React.ReactNode;
36
42
  };
37
43
  export declare function Alert({ tone, title, message, actions, children, className, ...rest }: AlertProps): import("react/jsx-runtime").JSX.Element;
38
- export type ChartDatum = {
39
- label?: string;
40
- x?: string | number;
41
- y?: number;
42
- value?: number;
43
- tone?: DataTone;
44
- };
45
- export type AreaChartDatum = ChartDatum;
46
- export type AreaChartTone = DataTone;
47
- export type BarChartDatum = ChartDatum;
48
- export type BarChartTone = DataTone;
49
- export type LineChartDatum = ChartDatum;
50
- export type LineChartTone = DataTone;
51
- export type DonutChartDatum = ChartDatum;
52
- export type DonutChartTone = DataTone;
53
- export type ScatterPlotDatum = {
54
- x: number;
55
- y: number;
56
- label?: string;
57
- tone?: DataTone;
58
- };
59
- export type ScatterPlotTone = DataTone;
60
- export type StackedBarSegment = {
61
- label: string;
62
- value: number;
63
- tone?: DataTone;
64
- };
65
- export type StackedBarDatum = {
66
- label: string;
67
- segments: StackedBarSegment[];
68
- };
69
- export type StackedBarTone = DataTone;
70
- type ChartProps<T> = React.HTMLAttributes<HTMLElement> & {
71
- data: T[];
72
- label?: string;
73
- width?: number;
74
- height?: number;
75
- };
76
- export type AreaChartProps = ChartProps<AreaChartDatum>;
77
- export type BarChartProps = ChartProps<BarChartDatum>;
78
- export type DonutChartProps = ChartProps<DonutChartDatum>;
79
- export type LineChartProps = ChartProps<LineChartDatum>;
80
- export type ScatterPlotProps = ChartProps<ScatterPlotDatum>;
81
- export type StackedBarChartProps = ChartProps<StackedBarDatum>;
82
- export declare function AreaChart(props: ChartProps<AreaChartDatum>): import("react/jsx-runtime").JSX.Element;
83
- export declare function LineChart(props: ChartProps<LineChartDatum>): import("react/jsx-runtime").JSX.Element;
84
- export declare function BarChart({ data, label, width, height, className, ...rest }: ChartProps<BarChartDatum>): import("react/jsx-runtime").JSX.Element;
85
- export declare function DonutChart({ data, label, className, ...rest }: ChartProps<DonutChartDatum>): import("react/jsx-runtime").JSX.Element;
86
- export declare function ScatterPlot({ data, label, className, ...rest }: ChartProps<ScatterPlotDatum>): import("react/jsx-runtime").JSX.Element;
87
- export declare function StackedBarChart({ data, label, className, ...rest }: ChartProps<StackedBarDatum>): import("react/jsx-runtime").JSX.Element;
88
44
  export type AspectRatioProps = React.HTMLAttributes<HTMLDivElement> & {
89
45
  ratio?: number | string;
90
46
  };
@@ -168,9 +124,10 @@ export type ContentSwitcherProps = React.HTMLAttributes<HTMLDivElement> & {
168
124
  value?: string;
169
125
  activeId?: string;
170
126
  onChange?: (value: string) => void;
127
+ onchange?: (value: string) => void;
171
128
  size?: Size;
172
129
  };
173
- export declare function ContentSwitcher({ items, value, activeId, onChange, size, className, ...rest }: ContentSwitcherProps): import("react/jsx-runtime").JSX.Element;
130
+ export declare function ContentSwitcher({ items, value, activeId, onChange, onchange, size, className, ...rest }: ContentSwitcherProps): import("react/jsx-runtime").JSX.Element;
174
131
  export type CopyButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "value"> & {
175
132
  text?: string;
176
133
  value?: string;
@@ -179,33 +136,6 @@ export type CopyButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
179
136
  size?: Size;
180
137
  };
181
138
  export declare function CopyButton({ text: copyText, value, label, copiedLabel, size, className, onClick, ...rest }: CopyButtonProps): import("react/jsx-runtime").JSX.Element;
182
- export interface DataTableColumn<R = DataTableRow> {
183
- key: string;
184
- label: React.ReactNode;
185
- sortable?: boolean;
186
- align?: "start" | "center" | "end";
187
- width?: string;
188
- render?: (row: R, column: DataTableColumn<R>) => React.ReactNode;
189
- }
190
- export interface DataTableRow {
191
- id: string;
192
- [key: string]: unknown;
193
- }
194
- export type DataTableSelectMode = "none" | "single" | "multiple";
195
- export interface DataTableSort {
196
- key: string;
197
- direction: "asc" | "desc";
198
- }
199
- export type DataTableProps<R extends DataTableRow = DataTableRow> = React.TableHTMLAttributes<HTMLTableElement> & {
200
- columns: Array<DataTableColumn<R>>;
201
- rows: R[];
202
- caption?: React.ReactNode;
203
- size?: Size;
204
- pageSize?: number;
205
- page?: number;
206
- totalItems?: number;
207
- };
208
- export declare function DataTable<R extends DataTableRow = DataTableRow>({ columns, rows, caption, size, className, pageSize, page, totalItems, ...rest }: DataTableProps<R>): import("react/jsx-runtime").JSX.Element;
209
139
  export type DatePickerRange = {
210
140
  start?: string | Date | null;
211
141
  end?: string | Date | null;
@@ -228,15 +158,16 @@ export type DrawerProps = React.HTMLAttributes<HTMLElement> & {
228
158
  export declare function Drawer({ open, title, description, footer, placement, onClose, children, className, ...rest }: DrawerProps): import("react/jsx-runtime").JSX.Element | null;
229
159
  export interface DropdownOption extends OptionItem {
230
160
  }
231
- export type DropdownProps = React.HTMLAttributes<HTMLDivElement> & {
161
+ export type DropdownProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> & {
232
162
  label?: React.ReactNode;
233
163
  options: DropdownOption[];
234
164
  value?: string;
235
165
  open?: boolean;
236
166
  placeholder?: React.ReactNode;
237
167
  onSelect?: (value: string) => void;
168
+ onselect?: (value: string) => void;
238
169
  };
239
- export declare function Dropdown({ label, options, value, open: controlledOpen, placeholder, onSelect, className, ...rest }: DropdownProps): import("react/jsx-runtime").JSX.Element;
170
+ export declare function Dropdown({ label, options, value, open: controlledOpen, placeholder, onSelect, onselect, className, ...rest }: DropdownProps): import("react/jsx-runtime").JSX.Element;
240
171
  export type EmptyStateProps = React.HTMLAttributes<HTMLElement> & {
241
172
  title: React.ReactNode;
242
173
  message?: React.ReactNode;
@@ -244,10 +175,19 @@ export type EmptyStateProps = React.HTMLAttributes<HTMLElement> & {
244
175
  };
245
176
  export declare function EmptyState({ title, message, action, children, className, ...rest }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
246
177
  export type FileUploadStatus = "idle" | "uploading" | "complete" | "error";
178
+ /**
179
+ * Accepts both the flat React/Vue shape (`{ name, size }`) and the Svelte
180
+ * canonical shape (`{ file: { name, size } }`). When `file` is present it takes
181
+ * precedence so a consumer can pass the exact same item array used in Svelte.
182
+ */
247
183
  export type FileUploadItem = {
248
184
  id?: string;
249
- name: string;
185
+ name?: string;
250
186
  size?: number;
187
+ file?: {
188
+ name: string;
189
+ size?: number;
190
+ };
251
191
  status?: FileUploadStatus;
252
192
  error?: React.ReactNode;
253
193
  };
@@ -450,14 +390,16 @@ export type LoadingStateProps = React.HTMLAttributes<HTMLElement> & {
450
390
  export declare function LoadingState({ label, title, variant, className, ...rest }: LoadingStateProps): import("react/jsx-runtime").JSX.Element;
451
391
  export type MenuActionItem = ActionItem;
452
392
  export type MenuDividerItem = {
453
- type: "divider";
393
+ type?: "divider";
394
+ kind?: "divider";
454
395
  id?: string;
455
396
  };
456
397
  export type MenuGroupItem = {
457
- type: "group";
398
+ type?: "group";
399
+ kind?: "group";
458
400
  id?: string;
459
401
  label: React.ReactNode;
460
- items: MenuActionItem[];
402
+ items?: MenuActionItem[];
461
403
  };
462
404
  export type MenuItem = MenuActionItem | MenuDividerItem | MenuGroupItem;
463
405
  export type MenuProps = React.HTMLAttributes<HTMLDivElement> & {
@@ -475,10 +417,18 @@ export type MenuPopoverProps = React.HTMLAttributes<HTMLDivElement> & {
475
417
  export declare function MenuPopover({ trigger, items, open, placement, children, className, ...rest }: MenuPopoverProps): import("react/jsx-runtime").JSX.Element;
476
418
  export type MenuTriggerButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
477
419
  open?: boolean;
420
+ expanded?: boolean;
478
421
  };
479
- export declare function MenuTriggerButton({ open, type, className, children, ...rest }: MenuTriggerButtonProps): import("react/jsx-runtime").JSX.Element;
422
+ export declare function MenuTriggerButton({ open, expanded, type, className, children, ...rest }: MenuTriggerButtonProps): import("react/jsx-runtime").JSX.Element;
480
423
  export type MessageActionVariant = "default" | "danger";
481
- export type MessageAction = ActionItem & {
424
+ /**
425
+ * `label` (React/Vue) is rendered when present; otherwise `icon` (the
426
+ * Svelte-canonical content) is rendered. `label` is always used for the
427
+ * accessible name when provided. At least one of `label`/`icon` should be set.
428
+ */
429
+ export type MessageAction = Omit<ActionItem, "label"> & {
430
+ label?: React.ReactNode;
431
+ icon?: React.ReactNode;
482
432
  variant?: MessageActionVariant;
483
433
  };
484
434
  export type MessageActionsProps = React.HTMLAttributes<HTMLElement> & {
@@ -549,10 +499,11 @@ export declare function Pagination({ page, pageSize, totalItems, totalPages, pag
549
499
  export type PaginationNavProps = React.HTMLAttributes<HTMLElement> & {
550
500
  page?: number;
551
501
  totalPages?: number;
502
+ pageCount?: number;
552
503
  previousHref?: string;
553
504
  nextHref?: string;
554
505
  };
555
- export declare function PaginationNav({ page, totalPages, previousHref, nextHref, className, ...rest }: PaginationNavProps): import("react/jsx-runtime").JSX.Element;
506
+ export declare function PaginationNav({ page, totalPages, pageCount, previousHref, nextHref, className, ...rest }: PaginationNavProps): import("react/jsx-runtime").JSX.Element;
556
507
  export type PasswordInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "type"> & {
557
508
  label?: React.ReactNode;
558
509
  helperText?: React.ReactNode;
@@ -633,12 +584,6 @@ export type SliderProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "siz
633
584
  size?: Size;
634
585
  };
635
586
  export declare function Slider({ label, size, value, defaultValue, min, max, className, ...rest }: SliderProps): import("react/jsx-runtime").JSX.Element;
636
- export type SparklineProps = React.HTMLAttributes<HTMLElement> & {
637
- data: number[];
638
- label?: string;
639
- tone?: "neutral" | "success" | "warning" | "error";
640
- };
641
- export declare function Sparkline({ data, label, tone, className, ...rest }: SparklineProps): import("react/jsx-runtime").JSX.Element;
642
587
  export type StreamingMessageEvent = {
643
588
  id: string;
644
589
  label: React.ReactNode;
@@ -693,8 +638,9 @@ export type TabsProps = React.HTMLAttributes<HTMLElement> & {
693
638
  activeId?: string;
694
639
  label?: string;
695
640
  onChange?: (value: string) => void;
641
+ onchange?: (value: string) => void;
696
642
  };
697
- export declare function Tabs({ items, activeValue, activeId, label, onChange, className, ...rest }: TabsProps): import("react/jsx-runtime").JSX.Element;
643
+ export declare function Tabs({ items, activeValue, activeId, label, onChange, onchange, className, ...rest }: TabsProps): import("react/jsx-runtime").JSX.Element;
698
644
  export type TagProps = React.HTMLAttributes<HTMLSpanElement> & {
699
645
  tone?: Tone;
700
646
  size?: "sm" | "md";