@xeonr/platform-ui 0.5.17 → 0.5.19
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/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/kit/Sparkline.d.ts +5 -1
- package/dist/kit/Sparkline.d.ts.map +1 -1
- package/dist/kit/Sparkline.js +41 -8
- package/dist/kit/Sparkline.js.map +1 -1
- package/dist/kit/Toast.d.ts +11 -1
- package/dist/kit/Toast.d.ts.map +1 -1
- package/dist/kit/Toast.js +15 -6
- package/dist/kit/Toast.js.map +1 -1
- package/dist/kit/Trace.d.ts +22 -0
- package/dist/kit/Trace.d.ts.map +1 -0
- package/dist/kit/Trace.js +97 -0
- package/dist/kit/Trace.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,8 @@ export { EntityHeader, CodeChip } from "./kit/EntityHeader.tsx";
|
|
|
17
17
|
export { LogSurface, LogPanel, type LogLine } from "./kit/LogView.tsx";
|
|
18
18
|
export { KVGrid } from "./kit/KV.tsx";
|
|
19
19
|
export { SecretField, CopyIcon, Digest } from "./kit/Secret.tsx";
|
|
20
|
-
export { ToastProvider, useToast, useToastMaybe, toastError, type ToastKind } from "./kit/Toast.tsx";
|
|
20
|
+
export { ToastProvider, useToast, useToastMaybe, toastError, type ToastKind, type ToastOptions } from "./kit/Toast.tsx";
|
|
21
|
+
export { TraceRef, traceIdOf, setTraceLinks, setErrorReporter } from "./kit/Trace.tsx";
|
|
21
22
|
export { Mono, Num, Hint, InlineHint, Cell, InlineLink, Muted, Faint, InlineCode, Prose, Ago, toDate, relative, type TextTone, } from "./kit/Text.tsx";
|
|
22
23
|
export { RowList, ListRow, RowActions, SelectableList, Breadcrumbs } from "./kit/List.tsx";
|
|
23
24
|
export { FilterBar, FilterField, Chip, EditableChip } from "./kit/Chip.tsx";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKlI,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMvE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI7G,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3H,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EACL,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EACtE,WAAW,EAAE,WAAW,EAAE,WAAW,EACrC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,QAAQ,EAAE,UAAU,GAC9D,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,9 @@ export { LogSurface, LogPanel } from "./kit/LogView.js";
|
|
|
33
33
|
export { KVGrid } from "./kit/KV.js";
|
|
34
34
|
export { SecretField, CopyIcon, Digest } from "./kit/Secret.js";
|
|
35
35
|
export { ToastProvider, useToast, useToastMaybe, toastError } from "./kit/Toast.js";
|
|
36
|
+
// Added for telemetry-web (CON-69, 0.5.18): the server's trace id where a
|
|
37
|
+
// failure is shown, and the page-wide hooks console-shell sets.
|
|
38
|
+
export { TraceRef, traceIdOf, setTraceLinks, setErrorReporter } from "./kit/Trace.js";
|
|
36
39
|
// Added for the Container Platform adoption (2026-09-26): the widgets every
|
|
37
40
|
// list and detail screen grows locally, now shared.
|
|
38
41
|
export { Mono, Num, Hint, InlineHint, Cell, InlineLink, Muted, Faint, InlineCode, Prose, Ago, toDate, relative, } from "./kit/Text.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAA8C,MAAM,0BAA2B,CAAC;AAClI,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,kBAAkB,CAAC;AACvE,6EAA6E;AAC7E,yEAAyE;AACzE,sEAAsE;AACtE,sEAAsE;AACtE,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE7G,4EAA4E;AAC5E,oDAAoD;AACpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAiB,MAAM,eAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAuB,MAAM,iBAAkB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAa,MAAM,gBAAiB,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAiB,CAAC;AAC3H,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAkB,CAAC;AAC1C,OAAO,EACL,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EACtE,WAAW,EAAE,WAAW,EAAE,WAAW,EACrC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAe,QAAQ,EAAE,UAAU,GAC9D,MAAM,eAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAiB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAe,MAAM,oBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAwB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAgB,MAAM,kBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAkB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/kit/Sparkline.d.ts
CHANGED
|
@@ -23,6 +23,10 @@ export interface SparklineProps {
|
|
|
23
23
|
empty?: string | undefined;
|
|
24
24
|
/** accessible description; omitted leaves the chart `aria-hidden` */
|
|
25
25
|
label?: string | undefined;
|
|
26
|
+
/** enables the hover readout: how a point's y reads ("12.4 req/s") */
|
|
27
|
+
formatValue?: ((y: number) => string) | undefined;
|
|
28
|
+
/** with `formatValue`, how a point's x reads in the readout ("14:02") */
|
|
29
|
+
formatX?: ((x: number) => string) | undefined;
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
32
|
* Sparkline: the shape of one series, drawn to fit a cell.
|
|
@@ -32,7 +36,7 @@ export interface SparklineProps {
|
|
|
32
36
|
* screen. These answer "is it trending", not "how does it compare" — a column
|
|
33
37
|
* that needs the second question wants a `Meter` or a number.
|
|
34
38
|
*/
|
|
35
|
-
export declare function Sparkline({ points, colour, width, height, zeroBased, area, markAt, empty, label, }: SparklineProps): import("react").JSX.Element;
|
|
39
|
+
export declare function Sparkline({ points, colour, width, height, zeroBased, area, markAt, empty, label, formatValue, formatX, }: SparklineProps): import("react").JSX.Element;
|
|
36
40
|
/**
|
|
37
41
|
* SparkRow: a named sparkline with its latest value.
|
|
38
42
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../src/kit/Sparkline.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../src/kit/Sparkline.tsx"],"names":[],"mappings":"AAqDA,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,iEAAiE;IACjE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,sEAAsE;IACtE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,yEAAyE;IACzE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAM,EAAE,MAAgB,EAAE,KAAU,EAAE,MAAW,EAAE,SAAgB,EAAE,IAAW,EAAE,MAAM,EAAE,KAAW,EAAE,KAAK,EAC5G,WAAW,EAAE,OAAO,GACrB,EAAE,cAAc,+BAuEhB;AAyBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAiB,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,GAAG;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C,+BAmBA"}
|
package/dist/kit/Sparkline.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from "react";
|
|
2
|
+
import { useMemo, useState } from "react";
|
|
3
3
|
import styled from "styled-components";
|
|
4
4
|
import { v } from "../theme/tokens.js";
|
|
5
5
|
// Sparkline — shape without a value, for a table cell.
|
|
@@ -10,11 +10,14 @@ import { v } from "../theme/tokens.js";
|
|
|
10
10
|
// times per row — and at ninety charts per screen the answer has to be an SVG
|
|
11
11
|
// path rather than a canvas. Both exist because they are different questions.
|
|
12
12
|
//
|
|
13
|
-
// Deliberately no axes
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
13
|
+
// Deliberately no axes and no labels: a cell this size cannot carry them, and
|
|
14
|
+
// the row it sits in already says what the series is. The caller puts the
|
|
15
|
+
// latest value in its own column, where it lines up with every other row's.
|
|
16
|
+
// Hovering reads one point (value and time) when the caller says how to format
|
|
17
|
+
// them (`formatValue`, `formatX`) — the shape is the answer, but "how high was
|
|
18
|
+
// that spike" should not need a second screen.
|
|
17
19
|
const Wrap = styled.span `
|
|
20
|
+
position: relative;
|
|
18
21
|
display: inline-flex;
|
|
19
22
|
align-items: center;
|
|
20
23
|
justify-content: flex-start;
|
|
@@ -23,6 +26,22 @@ const Wrap = styled.span `
|
|
|
23
26
|
flex: none;
|
|
24
27
|
svg { display: block; }
|
|
25
28
|
`;
|
|
29
|
+
const Readout = styled.span `
|
|
30
|
+
position: absolute;
|
|
31
|
+
bottom: calc(100% + 4px);
|
|
32
|
+
z-index: ${v.zPop};
|
|
33
|
+
padding: 2px 6px;
|
|
34
|
+
border: 1px solid ${v.line2};
|
|
35
|
+
border-radius: 5px;
|
|
36
|
+
background: ${v.surface};
|
|
37
|
+
box-shadow: ${v.elev};
|
|
38
|
+
font-family: ${v.mono};
|
|
39
|
+
font-size: 10px;
|
|
40
|
+
color: ${v.text};
|
|
41
|
+
white-space: nowrap;
|
|
42
|
+
pointer-events: none;
|
|
43
|
+
transform: translateX(-50%);
|
|
44
|
+
`;
|
|
26
45
|
const Flat = styled.span `
|
|
27
46
|
color: ${v.faint};
|
|
28
47
|
font-size: 10px;
|
|
@@ -36,7 +55,8 @@ const Flat = styled.span `
|
|
|
36
55
|
* screen. These answer "is it trending", not "how does it compare" — a column
|
|
37
56
|
* that needs the second question wants a `Meter` or a number.
|
|
38
57
|
*/
|
|
39
|
-
export function Sparkline({ points, colour = v.brand, width = 90, height = 22, zeroBased = true, area = true, markAt, empty = "—", label, }) {
|
|
58
|
+
export function Sparkline({ points, colour = v.brand, width = 90, height = 22, zeroBased = true, area = true, markAt, empty = "—", label, formatValue, formatX, }) {
|
|
59
|
+
const [hover, setHover] = useState(null);
|
|
40
60
|
const geometry = useMemo(() => {
|
|
41
61
|
const finite = points.filter((p) => Number.isFinite(p[0]) && Number.isFinite(p[1])).sort((a, b) => a[0] - b[0]);
|
|
42
62
|
if (finite.length < 2)
|
|
@@ -56,12 +76,25 @@ export function Sparkline({ points, colour = v.brand, width = 90, height = 22, z
|
|
|
56
76
|
const line = finite.map((p, i) => `${i === 0 ? "M" : "L"}${px(p[0]).toFixed(1)},${py(p[1]).toFixed(1)}`).join(" ");
|
|
57
77
|
const under = `${line} L${px(maxX).toFixed(1)},${height} L${px(minX).toFixed(1)},${height} Z`;
|
|
58
78
|
const mark = markAt !== undefined && markAt >= minX && markAt <= maxX ? px(markAt) : null;
|
|
59
|
-
|
|
79
|
+
const dots = finite.map((p) => ({ x: px(p[0]), y: py(p[1]), raw: p }));
|
|
80
|
+
return { line, under, mark, dots };
|
|
60
81
|
}, [points, width, height, zeroBased, markAt]);
|
|
61
82
|
if (!geometry) {
|
|
62
83
|
return (_jsx(Wrap, { "$w": width, "$h": height, children: _jsx(Flat, { children: empty }) }));
|
|
63
84
|
}
|
|
64
|
-
|
|
85
|
+
const dot = hover !== null ? geometry.dots[hover] : undefined;
|
|
86
|
+
const onMove = formatValue
|
|
87
|
+
? (e) => {
|
|
88
|
+
const x = e.clientX - e.currentTarget.getBoundingClientRect().left;
|
|
89
|
+
let best = 0;
|
|
90
|
+
for (let i = 1; i < geometry.dots.length; i++) {
|
|
91
|
+
if (Math.abs(geometry.dots[i].x - x) < Math.abs(geometry.dots[best].x - x))
|
|
92
|
+
best = i;
|
|
93
|
+
}
|
|
94
|
+
setHover(best);
|
|
95
|
+
}
|
|
96
|
+
: undefined;
|
|
97
|
+
return (_jsxs(Wrap, { "$w": width, "$h": height, children: [dot && formatValue ? (_jsxs(Readout, { style: { left: Math.max(0, Math.min(width, dot.x)) }, children: [formatValue(dot.raw[1]), formatX ? ` · ${formatX(dot.raw[0])}` : ""] })) : null, _jsxs("svg", { width: width, height: height, viewBox: `0 0 ${width} ${height}`, onMouseMove: onMove, onMouseLeave: formatValue ? () => setHover(null) : undefined, ...(label ? { role: "img", "aria-label": label } : { "aria-hidden": true }), children: [area ? _jsx("path", { d: geometry.under, fill: colour, opacity: 0.14 }) : null, _jsx("path", { d: geometry.line, fill: "none", stroke: colour, strokeWidth: 1.2 }), dot ? _jsx("circle", { cx: dot.x, cy: dot.y, r: 2.2, fill: colour }) : null, geometry.mark !== null ? (_jsx("line", { x1: geometry.mark, x2: geometry.mark, y1: 0, y2: height, stroke: v.warning, strokeWidth: 1, strokeDasharray: "2 2" })) : null] })] }));
|
|
65
98
|
}
|
|
66
99
|
const RowWrap = styled.span `
|
|
67
100
|
display: flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../src/kit/Sparkline.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../src/kit/Sparkline.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAEvC,uDAAuD;AACvD,EAAE;AACF,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,+CAA+C;AAE/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAA4B;;;;;WAKzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;YACV,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;;;CAGtB,CAAC;AAEF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAA;;;aAGd,CAAC,CAAC,IAAI;;sBAEG,CAAC,CAAC,KAAK;;gBAEb,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI;iBACL,CAAC,CAAC,IAAI;;WAEZ,CAAC,CAAC,IAAI;;;;CAIhB,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;WACb,CAAC,CAAC,KAAK;;iBAED,CAAC,CAAC,IAAI;CACtB,CAAC;AAiCF;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAC5G,WAAW,EAAE,OAAO,GACL;IACf,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;QACvC,0EAA0E;QAC1E,yEAAyE;QACzE,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;QAE/B,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QACvD,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE3E,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnH,MAAM,KAAK,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC;QAC9F,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CACL,KAAC,IAAI,UAAK,KAAK,QAAM,MAAM,YACzB,KAAC,IAAI,cAAE,KAAK,GAAQ,GACf,CACR,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,MAAM,MAAM,GAAG,WAAW;QACxB,CAAC,CAAC,CAAC,CAAkC,EAAE,EAAE;YACrC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;YACnE,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oBAAE,IAAI,GAAG,CAAC,CAAC;YACzF,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO,CACL,MAAC,IAAI,UAAK,KAAK,QAAM,MAAM,aACxB,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CACpB,MAAC,OAAO,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAC1D,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAC5D,CACX,CAAC,CAAC,CAAC,IAAI,EACR,eACE,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,KAAK,IAAI,MAAM,EAAE,EACjC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,KACxD,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,aAE3E,IAAI,CAAC,CAAC,CAAC,eAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAI,CAAC,CAAC,CAAC,IAAI,EACvE,eAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAI,EACvE,GAAG,CAAC,CAAC,CAAC,iBAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAI,CAAC,CAAC,CAAC,IAAI,EACnE,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CACxB,eAAM,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAC,KAAK,GAAG,CAC3H,CAAC,CAAC,CAAC,IAAI,IACJ,IACD,CACR,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;;iBAMV,CAAC,CAAC,IAAI;mDAC4B,CAAC,CAAC,KAAK;sEACY,CAAC,CAAC,IAAI;CAC3E,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;;iBAMZ,CAAC,CAAC,IAAI;;2DAEoC,CAAC,CAAC,KAAK;0CACxB,CAAC,CAAC,IAAI;CAC/C,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,KAAK,EAIlE;IACC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CACL,MAAC,SAAS,eACR,gBAAM,SAAS,EAAC,MAAM,aACpB,eAAM,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,YAAG,IAAI,GAAQ,EAChD,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,OAAO,YAAE,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC/D,EACP,KAAC,SAAS,OAAK,KAAK,GAAI,IACd,CACb,CAAC;IACJ,CAAC;IACD,OAAO,CACL,MAAC,OAAO,eACN,eAAM,SAAS,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,YAAG,IAAI,GAAQ,EACjD,KAAC,SAAS,OAAK,KAAK,GAAI,EACvB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,OAAO,YAAE,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC5D,CACX,CAAC;AACJ,CAAC"}
|
package/dist/kit/Toast.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
export type ToastKind = "ok" | "err" | "info" | "pending";
|
|
3
3
|
type Kind = ToastKind;
|
|
4
|
+
export interface ToastOptions {
|
|
5
|
+
/** The server's trace id behind the failure: shown as `trace 1a2b3c4d… [copy]`. */
|
|
6
|
+
traceId?: string | undefined;
|
|
7
|
+
}
|
|
4
8
|
interface ToastApi {
|
|
5
|
-
push: (kind: Kind, text: string) => void;
|
|
9
|
+
push: (kind: Kind, text: string, opts?: ToastOptions) => void;
|
|
6
10
|
ok: (text: string) => void;
|
|
11
|
+
/**
|
|
12
|
+
* An error as a toast. The X-Trace-Id behind it (a Connect error's metadata,
|
|
13
|
+
* a Response's headers) is shown with it, and the error goes to the page's
|
|
14
|
+
* reporter (`setErrorReporter`; console-shell wires it to telemetry).
|
|
15
|
+
*/
|
|
7
16
|
error: (e: unknown, prefix?: string) => void;
|
|
8
17
|
}
|
|
9
18
|
/**
|
|
@@ -16,6 +25,7 @@ interface ToastApi {
|
|
|
16
25
|
export declare function toastError(e: unknown): {
|
|
17
26
|
kind: ToastKind;
|
|
18
27
|
text: string;
|
|
28
|
+
traceId?: string | undefined;
|
|
19
29
|
};
|
|
20
30
|
export declare function ToastProvider({ children }: {
|
|
21
31
|
children: ReactNode;
|
package/dist/kit/Toast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAS1G,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAC1D,KAAK,IAAI,GAAG,SAAS,CAAC;AAItB,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAC9D,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B;;;;OAIG;IACH,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AA6CD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAGtG;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAoClE;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,QAAQ,GAAG,IAAI,CAE/C"}
|
package/dist/kit/Toast.js
CHANGED
|
@@ -3,6 +3,7 @@ import { createContext, useCallback, useContext, useMemo, useRef, useState } fro
|
|
|
3
3
|
import styled, { keyframes } from "styled-components";
|
|
4
4
|
import { v } from "../theme/tokens.js";
|
|
5
5
|
import { Icon } from "./Icon.js";
|
|
6
|
+
import { reportShownError, traceIdOf, TraceRef } from "./Trace.js";
|
|
6
7
|
const Ctx = createContext(null);
|
|
7
8
|
const rise = keyframes `from { opacity: 0; transform: translateY(-6px); }`;
|
|
8
9
|
const Stack = styled.div `
|
|
@@ -34,6 +35,12 @@ const Item = styled.div `
|
|
|
34
35
|
color: ${v.text};
|
|
35
36
|
border-left: 3px solid ${(p) => p.$kind === "ok" ? v.success : p.$kind === "err" ? v.danger : p.$kind === "pending" ? v.warning : v.brand};
|
|
36
37
|
`;
|
|
38
|
+
const Body = styled.div `
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
gap: 4px;
|
|
42
|
+
min-width: 0;
|
|
43
|
+
`;
|
|
37
44
|
/**
|
|
38
45
|
* toastError: an unknown thrown value as a toast.
|
|
39
46
|
*
|
|
@@ -42,25 +49,27 @@ const Item = styled.div `
|
|
|
42
49
|
* calling `push`. This is the fallback for everything it does not recognise.
|
|
43
50
|
*/
|
|
44
51
|
export function toastError(e) {
|
|
45
|
-
|
|
52
|
+
const traceId = traceIdOf(e);
|
|
53
|
+
return { kind: "err", text: String(e?.message ?? e), ...(traceId ? { traceId } : {}) };
|
|
46
54
|
}
|
|
47
55
|
export function ToastProvider({ children }) {
|
|
48
56
|
const [toasts, setToasts] = useState([]);
|
|
49
57
|
const idRef = useRef(1);
|
|
50
|
-
const push = useCallback((kind, text) => {
|
|
58
|
+
const push = useCallback((kind, text, opts) => {
|
|
51
59
|
const id = idRef.current++;
|
|
52
|
-
setToasts((t) => [...t, { id, kind, text }]);
|
|
60
|
+
setToasts((t) => [...t, { id, kind, text, traceId: opts?.traceId }]);
|
|
53
61
|
setTimeout(() => setToasts((t) => t.filter((x) => x.id !== id)), kind === "err" ? 8000 : 5000);
|
|
54
62
|
}, []);
|
|
55
63
|
const api = useMemo(() => ({
|
|
56
64
|
push,
|
|
57
65
|
ok: (text) => push("ok", text),
|
|
58
66
|
error: (e, prefix) => {
|
|
59
|
-
const { kind, text } = toastError(e);
|
|
60
|
-
|
|
67
|
+
const { kind, text, traceId } = toastError(e);
|
|
68
|
+
reportShownError(e, traceId);
|
|
69
|
+
push(kind, prefix ? `${prefix}: ${text}` : text, { traceId });
|
|
61
70
|
},
|
|
62
71
|
}), [push]);
|
|
63
|
-
return (_jsxs(Ctx.Provider, { value: api, children: [children, _jsx(Stack, { role: "status", "aria-live": "polite", children: toasts.map((t) => (_jsxs(Item, { "$kind": t.kind, children: [_jsx(Icon, { name: t.kind === "ok" ? "check" : t.kind === "err" ? "error" : t.kind === "pending" ? "clock" : "info" }), _jsx("span", { children: t.text })] }, t.id))) })] }));
|
|
72
|
+
return (_jsxs(Ctx.Provider, { value: api, children: [children, _jsx(Stack, { role: "status", "aria-live": "polite", children: toasts.map((t) => (_jsxs(Item, { "$kind": t.kind, children: [_jsx(Icon, { name: t.kind === "ok" ? "check" : t.kind === "err" ? "error" : t.kind === "pending" ? "clock" : "info" }), _jsxs(Body, { children: [_jsx("span", { children: t.text }), t.traceId ? _jsx(TraceRef, { id: t.traceId }) : null] })] }, t.id))) })] }));
|
|
64
73
|
}
|
|
65
74
|
export function useToast() {
|
|
66
75
|
const c = useContext(Ctx);
|
package/dist/kit/Toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC1G,OAAO,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/kit/Toast.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** The X-Trace-Id behind an error or a response (its metadata, headers, `traceId`, or its cause's), or undefined. */
|
|
2
|
+
export declare function traceIdOf(e: unknown, depth?: number): string | undefined;
|
|
3
|
+
/** Where a trace id links to (Lantern's trace view), or undefined for no link. One per page; console-shell sets it. */
|
|
4
|
+
export declare function setTraceLinks(fn: ((id: string) => string | undefined) | undefined): void;
|
|
5
|
+
/** Who hears about an error shown in a toast (`useToast().error`). One per page; console-shell sets it to telemetry. */
|
|
6
|
+
export declare function setErrorReporter(fn: ((err: unknown, ctx: {
|
|
7
|
+
source: "toast";
|
|
8
|
+
traceId: string | undefined;
|
|
9
|
+
}) => void) | undefined): void;
|
|
10
|
+
/** @internal the toast's hook into the page's reporter. Never throws. */
|
|
11
|
+
export declare function reportShownError(err: unknown, traceId: string | undefined): void;
|
|
12
|
+
/**
|
|
13
|
+
* TraceRef: `trace 1a2b3c4d… [copy] [open]` — the server's trace id behind a
|
|
14
|
+
* failure, short enough to read out, the whole id on hover and on the
|
|
15
|
+
* clipboard. The open link appears when the page has `setTraceLinks` (or an
|
|
16
|
+
* explicit `href`); `href={null}` suppresses it.
|
|
17
|
+
*/
|
|
18
|
+
export declare function TraceRef({ id, href }: {
|
|
19
|
+
id: string;
|
|
20
|
+
href?: string | null | undefined;
|
|
21
|
+
}): import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=Trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trace.d.ts","sourceRoot":"","sources":["../../src/kit/Trace.tsx"],"names":[],"mappings":"AA8BA,qHAAqH;AACrH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,GAAG,SAAS,CAQnE;AAKD,uHAAuH;AACvH,wBAAgB,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAExF;AAED,wHAAwH;AACxH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAEtI;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMhF;AA+BD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,+BActF"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import styled from "styled-components";
|
|
3
|
+
import { v } from "../theme/tokens.js";
|
|
4
|
+
import { CopyIcon } from "./Secret.js";
|
|
5
|
+
import { Icon } from "./Icon.js";
|
|
6
|
+
// The server's trace id where a failure is shown — an error toast, a session
|
|
7
|
+
// wall, a route that crashed — so the person looking at it can hand
|
|
8
|
+
// `trace 1a2b3c4d…` to whoever is on call. Every Xeonr service echoes it as
|
|
9
|
+
// the `X-Trace-Id` response header (fleet observability plan §8).
|
|
10
|
+
//
|
|
11
|
+
// The kit reads it without depending on any RPC or telemetry library: a
|
|
12
|
+
// Connect error carries it in `metadata`, a fetch Response in `headers`,
|
|
13
|
+
// anything else may say `traceId`. Where the id links to (Lantern, for a
|
|
14
|
+
// console whose people can open it) and who hears about an error toast are
|
|
15
|
+
// set once per page by the host — console-shell does both — through
|
|
16
|
+
// `setTraceLinks` and `setErrorReporter`.
|
|
17
|
+
const HEX32 = /^[0-9a-f]{32}$/;
|
|
18
|
+
function norm(raw) {
|
|
19
|
+
if (typeof raw !== "string")
|
|
20
|
+
return undefined;
|
|
21
|
+
const id = raw.trim().toLowerCase().replace(/-/g, "");
|
|
22
|
+
return HEX32.test(id) && !/^0+$/.test(id) ? id : undefined;
|
|
23
|
+
}
|
|
24
|
+
function header(bag) {
|
|
25
|
+
if (typeof bag !== "object" || bag === null || typeof bag.get !== "function")
|
|
26
|
+
return undefined;
|
|
27
|
+
return norm(bag.get("x-trace-id"));
|
|
28
|
+
}
|
|
29
|
+
/** The X-Trace-Id behind an error or a response (its metadata, headers, `traceId`, or its cause's), or undefined. */
|
|
30
|
+
export function traceIdOf(e, depth = 0) {
|
|
31
|
+
if (typeof e !== "object" || e === null || depth > 3)
|
|
32
|
+
return undefined;
|
|
33
|
+
try {
|
|
34
|
+
const o = e;
|
|
35
|
+
return header(o.metadata) ?? header(o.headers) ?? norm(o.traceId) ?? traceIdOf(o.response, depth + 1) ?? traceIdOf(o.cause, depth + 1);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
let traceHref;
|
|
42
|
+
let reporter;
|
|
43
|
+
/** Where a trace id links to (Lantern's trace view), or undefined for no link. One per page; console-shell sets it. */
|
|
44
|
+
export function setTraceLinks(fn) {
|
|
45
|
+
traceHref = fn;
|
|
46
|
+
}
|
|
47
|
+
/** Who hears about an error shown in a toast (`useToast().error`). One per page; console-shell sets it to telemetry. */
|
|
48
|
+
export function setErrorReporter(fn) {
|
|
49
|
+
reporter = fn;
|
|
50
|
+
}
|
|
51
|
+
/** @internal the toast's hook into the page's reporter. Never throws. */
|
|
52
|
+
export function reportShownError(err, traceId) {
|
|
53
|
+
try {
|
|
54
|
+
reporter?.(err, { source: "toast", traceId });
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
/* a reporter never breaks the toast */
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const Wrap = styled.span `
|
|
61
|
+
display: inline-flex;
|
|
62
|
+
align-items: center;
|
|
63
|
+
gap: 2px;
|
|
64
|
+
max-width: 100%;
|
|
65
|
+
font-size: 11px;
|
|
66
|
+
color: ${v.faint};
|
|
67
|
+
`;
|
|
68
|
+
const Id = styled.code `
|
|
69
|
+
font-family: ${v.mono};
|
|
70
|
+
font-size: 10.5px;
|
|
71
|
+
color: ${v.muted};
|
|
72
|
+
border: 1px solid ${v.line2};
|
|
73
|
+
border-radius: 5px;
|
|
74
|
+
padding: 1px 6px;
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
cursor: help;
|
|
77
|
+
`;
|
|
78
|
+
const Open = styled.a `
|
|
79
|
+
display: inline-flex;
|
|
80
|
+
align-items: center;
|
|
81
|
+
padding: 3px 5px;
|
|
82
|
+
color: ${v.faint};
|
|
83
|
+
border-radius: 5px;
|
|
84
|
+
&:hover { color: ${v.text}; background: ${v.hover}; }
|
|
85
|
+
`;
|
|
86
|
+
/**
|
|
87
|
+
* TraceRef: `trace 1a2b3c4d… [copy] [open]` — the server's trace id behind a
|
|
88
|
+
* failure, short enough to read out, the whole id on hover and on the
|
|
89
|
+
* clipboard. The open link appears when the page has `setTraceLinks` (or an
|
|
90
|
+
* explicit `href`); `href={null}` suppresses it.
|
|
91
|
+
*/
|
|
92
|
+
export function TraceRef({ id, href }) {
|
|
93
|
+
const full = norm(id) ?? id;
|
|
94
|
+
const link = href === null ? undefined : (href ?? traceHref?.(full));
|
|
95
|
+
return (_jsxs(Wrap, { children: [_jsxs(Id, { title: full, children: ["trace ", full.slice(0, 8), "\u2026"] }), _jsx(CopyIcon, { text: full, label: "Copy trace id" }), link ? (_jsx(Open, { href: link, target: "_blank", rel: "noreferrer", "aria-label": "Open trace", title: "Open trace", children: _jsx(Icon, { name: "external" }) })) : null] }));
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=Trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Trace.js","sourceRoot":"","sources":["../../src/kit/Trace.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED