@hjmds/react 1.38.0 → 1.39.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.
- package/dist/chart.d.ts +2 -2
- package/dist/chart.d.ts.map +1 -1
- package/dist/chart.js +3 -0
- package/dist/chart.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/styles.css +2 -0
- package/dist/styles.layered.css +2 -0
- package/package.json +3 -3
package/dist/chart.d.ts
CHANGED
|
@@ -33,8 +33,8 @@ type CartesianCommon = ChartRootProps & Readonly<{
|
|
|
33
33
|
}>;
|
|
34
34
|
export type LineChartProps = CartesianCommon & FocusProps & Readonly<{
|
|
35
35
|
curve?: ChartCurve;
|
|
36
|
-
/**
|
|
37
|
-
missingConnection?: "none" | "dotted";
|
|
36
|
+
/** dotted: separate vertical drops; bridge: faint edge-to-edge visual guide. Neither creates missing values. */
|
|
37
|
+
missingConnection?: "none" | "dotted" | "bridge";
|
|
38
38
|
/** Gradient area under each line. Defaults to on for a single series. */
|
|
39
39
|
area?: boolean;
|
|
40
40
|
stacked?: boolean;
|
package/dist/chart.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAYqC,KAAK,oBAAoB,EAUnE,KAAK,cAAc,EACnB,KAAK,UAAU,EAEf,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,0CAA0C,CAAC;AAIlD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAwEtE,KAAK,WAAW,GAAG,QAAQ,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACpD,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACpE,6GAA6G;IAC7G,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC,CAAC;AAyEH,KAAK,cAAc,GAAG,QAAQ,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEH,KAAK,eAAe,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC/C,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAuDH,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;IACnE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"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"}
|
package/dist/chart.js
CHANGED
|
@@ -251,6 +251,9 @@ export function LineChart({ categories, series, accessibilityLabel, formatValue,
|
|
|
251
251
|
return (_jsxs("g", { "data-series": item.id, children: [missingConnection === "dotted" && segments.slice(1).map((segment, index) => {
|
|
252
252
|
const before = segments[index].at(-1), after = segment[0];
|
|
253
253
|
return _jsx("g", { children: [before, after].map(point => _jsx("line", { x1: point.x, y1: point.y, x2: point.x, y2: g.plot.bottom, stroke: color, strokeWidth: chartRecipe.line.strokeWidth, strokeDasharray: chartRecipe.line.missingDash.join(" "), strokeLinecap: "round", opacity: chartRecipe.line.missingOpacity }, point.index)) }, `gap${index}`);
|
|
254
|
+
}), missingConnection === "bridge" && segments.slice(1).map((segment, index) => {
|
|
255
|
+
const before = segments[index].at(-1), after = segment[0];
|
|
256
|
+
return _jsx("line", { "data-missing-bridge": "true", x1: before.x, y1: before.y, x2: after.x, y2: after.y, stroke: color, strokeWidth: chartRecipe.line.strokeWidth, strokeDasharray: chartRecipe.line.missingDash.join(" "), strokeLinecap: "round", opacity: chartRecipe.line.missingOpacity }, `bridge${index}`);
|
|
254
257
|
}), showArea || stacked ? segments.map((segment, i) => (_jsx(MotionLinePath, { animate: animateChanges, points: segment, floor: g.plot.bottom, curve: curve, lower: lower ? segment.map((p) => lower[p.index]) : undefined, className: "hjm-chart__area", fill: `url(#${id}-area-${s})` }, `a${i}`))) : null, segments.map((segment, i) => (_jsxs("g", { children: [_jsx(MotionLinePath, { animate: animateChanges, points: segment, curve: curve, className: "hjm-chart__line", stroke: scrubEmphasis && focus !== null ? "var(--hjm-chart-axis-label)" : color, strokeWidth: chartRecipe.line.strokeWidth, fill: "none", strokeLinejoin: "round", strokeLinecap: "round" }), scrubEmphasis && focus !== null && _jsx("g", { clipPath: `url(#${id}-scrub)`, children: _jsx(MotionLinePath, { animate: animateChanges, points: segment, curve: curve, className: "hjm-chart__line", stroke: color, strokeWidth: chartRecipe.line.strokeWidth, fill: "none", strokeLinejoin: "round", strokeLinecap: "round" }) })] }, `l${i}`))), segments.filter((segment) => segment.length === 1).map((segment) => (_jsx("circle", { cx: segment[0].x, cy: segment[0].y, r: 3, fill: color }, `d${segment[0].index}`)))] }, item.id));
|
|
255
258
|
}), focus !== null && g.xs[focus] !== undefined ? (_jsxs("g", { className: "hjm-chart__focus", children: [_jsx("line", { className: "hjm-chart__cursor", x1: g.xs[focus], x2: g.xs[focus], y1: g.plot.top - 4, y2: g.plot.bottom, strokeWidth: chartRecipe.cursor.strokeWidth, strokeDasharray: scrubbing ? undefined : chartRecipe.cursor.dash.join(" ") }), series.map((item, s) => {
|
|
256
259
|
const p = g.plots[s][focus];
|
package/dist/chart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"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,CAAC,GAAG,CAAC;IAClL,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IACjL,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClL,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,C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","sourcesContent":["import {\n useCallback,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type PointerEvent,\n type ReactNode,\n} from \"react\";\nimport type { ColorReference } from \"@hjmds/design-contracts/color-references\";\nimport { resolveDatavizSeriesColor } from \"@hjmds/design-contracts/dataviz\";\nimport {\n prepareChartLineMorph,\n areaPath,\n chartRecipe,\n describeChart,\n isChartNumber,\n linePath,\n nearestChartIndex,\n nearestScatterPoint,\n observedIndices,\n resolveBarGeometry,\n resolveLineGeometry,\n resolvePieGeometry, resolvePieVisibility, type PieVisibilitySummary,\n resolveRadarGeometry,\n resolveScatterGeometry,\n scaleLinear,\n seriesExtremes,\n splitSegments,\n stackValues,\n stepChartIndex,\n validateChartSeries,\n type ChartBar,\n type ChartBarLayout,\n type ChartCurve,\n type ChartInsets,\n type ChartOrientation,\n type ChartSeries,\n type ScatterDatum,\n} from \"@hjmds/design-contracts/components/chart\";\nimport { spacing, typography } from \"@hjmds/design-contracts/foundations\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { classNames } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\n/*\n * Web chart renderers (2026-10-14). Geometry, domains, stacking, gaps and the text alternative come\n * from `@hjmds/design-contracts/components/chart`; this file only paints plain SVG and translates\n * pointer/keyboard input into the contract's focus index. Prop names mirror\n * `@hjmds/react-native/chart` so products write one chart description for both surfaces.\n * Interaction follows react-native-wagmi-charts (press-and-drag cursor, release returns to the\n * latest value) with pointer events and `touch-action: pan-y` so vertical page scrolling still wins.\n * Optional data morphing updates SVG hosts directly and respects reduced motion.\n */\n\n// ---------------------------------------------------------------------------------------------\n// Shared helpers\n// ---------------------------------------------------------------------------------------------\n\nfunction kebab(value: string): string {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\n/**\n * Chrome colors stay recipe references resolved through the provider's CSS variables, so a theme\n * switch repaints without re-rendering and the recipe (not styles.css) owns the choice.\n */\nfunction cssColor(reference: ColorReference): string {\n const name = reference.source === \"theme\"\n ? `--hjm-color-${kebab(reference.key)}`\n : reference.source === \"accent\" ? `--hjm-accent-${kebab(reference.key)}` : `--hjm-accent-fill-${kebab(reference.key)}`;\n return reference.alpha === undefined || reference.alpha === 1\n ? `var(${name})`\n : `color-mix(in srgb, var(${name}) ${Math.round(reference.alpha * 100)}%, transparent)`;\n}\n\nconst chrome = chartRecipe.chrome;\nconst chromeStyle = {\n \"--hjm-chart-axis-line\": cssColor(chrome.axisLine),\n \"--hjm-chart-axis-label\": cssColor(chrome.axisLabel),\n \"--hjm-chart-grid-line\": cssColor(chrome.gridLine),\n \"--hjm-chart-grid-width\": `${chrome.gridWidth}px`,\n \"--hjm-chart-legend-label\": cssColor(chrome.legendLabel),\n \"--hjm-chart-tooltip-surface\": cssColor(chrome.tooltipSurface),\n \"--hjm-chart-tooltip-border\": cssColor(chrome.tooltipBorder),\n \"--hjm-chart-tooltip-content\": cssColor(chrome.tooltipContent),\n \"--hjm-chart-label-surface\": cssColor(chrome.labelSurface),\n \"--hjm-chart-label-content\": cssColor(chrome.labelContent),\n} as CSSProperties;\n\nfunction useSeriesColor(): (series: Readonly<{ color?: string | undefined }>, index: number) => string {\n const theme = useOptionalHjmTheme()?.environment.theme ?? \"light\";\n return useCallback((series, index) => series.color ?? resolveDatavizSeriesColor(theme, index), [theme]);\n}\n\nfunction useSvgId(): string {\n return useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n}\n\n/** Responsive width: `fallback` renders on the server and before the first measurement. */\nfunction useMeasuredWidth(fallback: number): [(node: HTMLDivElement | null) => void, number] {\n const [width, setWidth] = useState(fallback);\n const [node, setNode] = useState<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!node) return;\n const update = (next: number) => { if (next > 0) setWidth(Math.round(next)); };\n update(node.getBoundingClientRect().width);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => update(entries[0]?.contentRect.width ?? 0));\n observer.observe(node);\n return () => observer.disconnect();\n }, [node]);\n return [setNode, width];\n}\n\ntype FocusDetail = Readonly<{ scrubbing: boolean }>;\ntype FocusProps = Readonly<{\n /** Controlled focused category; `null` shows no focus. */\n focusIndex?: number | null;\n defaultFocusIndex?: number | null;\n onFocusChange?: (index: number | null, detail: FocusDetail) => void;\n /** Keep the scrubbed point after release instead of returning to the default (Native parity, 2026-10-14). */\n holdOnRelease?: boolean;\n}>;\n\n/** Controlled/uncontrolled focus plus a transient scrub index (same model as the Native renderer). */\nfunction useFocus({ focusIndex, defaultFocusIndex = null, onFocusChange, holdOnRelease = false }: FocusProps, fallback: number | null, categories?: readonly string[]) {\n const categoryKey = (index: number | null) => index === null || categories?.[index] === undefined ? null : JSON.stringify([categories[index], categories.slice(0, index).filter(value => value === categories[index]).length]);\n const selectedKey = useRef<string | null>(categoryKey(defaultFocusIndex));\n const [own, setOwn] = useState<number | null>(defaultFocusIndex);\n const [scrub, setScrub] = useState<number | null>(null);\n const last = useRef<number | null>(null);\n const mapped = categories && selectedKey.current !== null ? categories.findIndex((_, index) => categoryKey(index) === selectedKey.current) : own;\n const ownSelection = mapped === -1 ? null : mapped;\n const settled = focusIndex !== undefined ? (categories && (focusIndex === null || categories[focusIndex] === undefined) ? null : focusIndex) : ownSelection;\n const focus = scrub ?? settled ?? fallback;\n const set = useCallback((index: number | null, scrubbing: boolean) => {\n if (scrubbing) { setScrub(index); last.current = index; }\n else { setScrub(null); if (focusIndex === undefined) { selectedKey.current = categoryKey(index); setOwn(index); } }\n onFocusChange?.(index, { scrubbing });\n }, [focusIndex, onFocusChange, categories]);\n const release = useCallback(() => set(holdOnRelease ? last.current : null, false), [set, holdOnRelease]);\n return { focus, scrubbing: scrub !== null, set, release };\n}\n\n/** Press-and-drag; the pointer is captured so a drag that leaves the plot keeps scrubbing. */\nfunction useScrub(pick: (x: number, y: number) => number | null, onScrub: (index: number | null) => void, onEnd: () => void) {\n const active = useRef<number | null>(null);\n const at = (event: PointerEvent<HTMLElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n return pick(event.clientX - rect.left, event.clientY - rect.top);\n };\n return {\n onPointerDown(event: PointerEvent<HTMLElement>) {\n if (event.button !== 0) return;\n active.current = event.pointerId;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n onScrub(at(event));\n },\n onPointerMove(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n onScrub(at(event));\n },\n onPointerUp(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n onPointerCancel(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n };\n}\n\nfunction valueText(categories: readonly string[], series: readonly ChartSeries[], index: number, format: (value: number) => string, missing: string): string {\n const values = series.map((item) => { const v = item.values[index]; return isChartNumber(v) ? format(v) : missing; });\n return series.length === 1 ? `${categories[index]} ${values[0]}` : `${categories[index]} ${series.map((item, s) => `${item.label} ${values[s]}`).join(\", \")}`;\n}\n\n/** Arrow/Home/End stepping over observed indices only; returns undefined for unrelated keys. */\nfunction keyStep(event: KeyboardEvent, available: readonly number[], focus: number | null, nextKeys: readonly string[], previousKeys: readonly string[]): number | null | undefined {\n if (nextKeys.includes(event.key)) return stepChartIndex(available, focus, 1);\n if (previousKeys.includes(event.key)) return stepChartIndex(available, focus, -1);\n if (event.key === \"Home\") return available[0] ?? null;\n if (event.key === \"End\") return available.at(-1) ?? null;\n return undefined;\n}\n\nfunction CursorBubble({ x, width, text }: Readonly<{ x: number; width: number; text: string }>) {\n // Clamped like the Native bubble so the label never leaves the plot.\n const half = 44, center = Math.min(width - half, Math.max(half, x));\n return <span className=\"hjm-chart__bubble\" aria-hidden=\"true\" style={{ left: center }}>{text}</span>;\n}\n\ntype ChartRootProps = Readonly<{\n className?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\ntype CartesianCommon = ChartRootProps & Readonly<{\n categories: readonly string[];\n series: readonly ChartSeries[];\n /** Accessible name (Web `aria-label`). Product-localized. */\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n /** Spoken/written for a missing observation in the text alternative. */\n missingLabel: string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n domain?: readonly [number, number];\n showAxis?: boolean;\n}>;\n\n// Paths/rectangles update their host attributes directly; values, axes and accessibility\n// always come from the latest real data. No per-frame React reconciliation.\nfunction MotionLinePath({ points, lower, floor, curve, animate, ...rest }: Omit<React.SVGProps<SVGPathElement>, \"points\" | \"ref\"> & { points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined; curve: ChartCurve; animate: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null);\n const previous = useRef<{ points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined } | null>(null);\n const path = (p: readonly { x: number; y: number }[], base?: number, edge?: readonly { x: number; y: number }[]) => base === undefined ? linePath(p, curve) : areaPath(p, base, curve, edge);\n const signature = JSON.stringify([points, lower, floor, curve]);\n useLayoutEffect(() => {\n const before = previous.current;\n const target = { points, lower, floor };\n previous.current = target;\n // A bounded morph avoids multiplying frame work for dense historical datasets.\n const morph = animate && !reducedMotion && !document.hidden && before && points.length + before.points.length <= 1024 ? prepareChartLineMorph(before.points, points) : null;\n if (!morph) { node.current?.setAttribute(\"d\", path(points, floor, lower)); return; }\n const lowerMorph = before?.lower && lower ? prepareChartLineMorph(before.lower, lower) : null;\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const current = t === 1 ? target : { points: morph(t), lower: lowerMorph?.(t) ?? lower, floor: floor === undefined ? undefined : (before?.floor ?? floor) + (floor - (before?.floor ?? floor)) * t };\n previous.current = current;\n const d = path(current.points, current.floor, current.lower); node.current?.setAttribute(\"d\", d);\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={path(points, floor, lower)} />;\n}\nfunction MotionBar({ bar, animate, vertical = true, rounded = true, ...rest }: React.SVGProps<SVGPathElement> & { bar: ChartBar; animate: boolean; vertical?: boolean; rounded?: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null), previous = useRef<ChartBar | null>(null);\n const signature = JSON.stringify([bar, vertical, rounded]);\n useLayoutEffect(() => {\n const before = previous.current; previous.current = bar;\n if (!animate || reducedMotion || !before || document.hidden) { node.current?.setAttribute(\"d\", barPath(bar, vertical, bar.value < 0, rounded)); return; }\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const value = { ...bar, x: before.x + (bar.x - before.x) * t, y: before.y + (bar.y - before.y) * t, width: before.width + (bar.width - before.width) * t, height: before.height + (bar.height - before.height) * t };\n previous.current = value; node.current?.setAttribute(\"d\", barPath(value, vertical, value.value < 0, rounded));\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={barPath(bar, vertical, bar.value < 0, rounded)} />;\n}\n\n// ---------------------------------------------------------------------------------------------\n// LineChart\n// ---------------------------------------------------------------------------------------------\n\nexport type LineChartProps = CartesianCommon & FocusProps & Readonly<{\n curve?: ChartCurve;\n /** Separate dotted vertical drops at the observed edges of missing periods; no bridge or invented values. */\n missingConnection?: \"none\" | \"dotted\";\n /** Gradient area under each line. Defaults to on for a single series. */\n area?: boolean;\n stacked?: boolean;\n /** Smallest value on top (ranks, ERA). */\n invert?: boolean;\n includeZero?: boolean;\n /** Dashed horizontal reference line; `\"first\"` uses the first observation (previous close). */\n referenceValue?: number | \"first\";\n /** Labels for the first series' high/low markers, shown while not scrubbing. */\n extremes?: Readonly<{ high: string; low: string }>;\n /** Bubble text above the cursor while scrubbing; defaults to the category. */\n cursorLabel?: (index: number) => string;\n /** Morph actual data changes; reduced motion snaps immediately. */\n animateChanges?: boolean;\n /** Keep the chosen side in series color; mute the other side. */\n scrubEmphasis?: \"before\" | \"after\";\n /** Value labels only (rank charts: \"#1\" at the top). */\n valueAxis?: boolean;\n /** Overrides grid/label ticks. */\n ticks?: readonly number[];\n}>;\n\nexport function LineChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height = chartRecipe.heights.regular, width: fallbackWidth = 320,\n curve = \"linear\", missingConnection = \"none\", area, stacked = false, invert = false, domain, includeZero, referenceValue, extremes, showAxis = false,\n valueAxis = false, ticks: tickOverride, cursorLabel, animateChanges = false, scrubEmphasis, className, layoutStyle, ...focusProps\n}: LineChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set, release } = useFocus(focusProps, available.at(-1) ?? null, categories);\n const insets = showAxis || valueAxis ? chartRecipe.insets.axis : chartRecipe.insets.plot;\n const g = useMemo(() => resolveLineGeometry({\n categories, series, width, height, insets, invert, stacked,\n ...(domain ? { domain } : {}), ...(includeZero === undefined ? {} : { includeZero }),\n }), [categories, series, width, height, insets, invert, stacked, domain, includeZero]);\n // Release returns to the default (latest) focus unless holdOnRelease keeps the scrubbed point.\n const handlers = useScrub((x) => nearestChartIndex(g.xs, x, available), (index) => set(index, true), release);\n const showArea = area ?? series.length === 1;\n const reference = referenceValue === \"first\" ? series[0]?.values.find(isChartNumber) : referenceValue;\n const marks = extremes && !scrubbing ? seriesExtremes(series[0]?.values ?? []) : null;\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const next = keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--line\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n aria-valuetext={focus === null ? missingLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n <defs>\n <clipPath id={`${id}-scrub`}><rect x={scrubEmphasis === \"after\" && focus !== null ? g.xs[focus] ?? g.plot.left : g.plot.left} y={0} width={focus === null ? width : scrubEmphasis === \"after\" ? g.plot.right - (g.xs[focus] ?? g.plot.left) : (g.xs[focus] ?? g.plot.right) - g.plot.left} height={height} /></clipPath>\n {series.map((item, s) => (\n <linearGradient key={item.id} id={`${id}-area-${s}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.topOpacity} />\n <stop offset=\"1\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.bottomOpacity} />\n </linearGradient>\n ))}\n </defs>\n {(tickOverride ?? g.ticks).map((tick) => <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.y(tick)} y2={g.y(tick)} />)}\n {showAxis || valueAxis ? (tickOverride ?? g.ticks).map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.y(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {isChartNumber(reference) ? (\n <line className=\"hjm-chart__reference\" x1={g.plot.left} x2={g.plot.right} y1={g.y(reference)} y2={g.y(reference)} strokeDasharray={chartRecipe.reference.dash.join(\" \")} />\n ) : null}\n {series.map((item, s) => {\n const color = colorOf(item, s), segments = splitSegments(g.plots[s]!);\n const lower = g.lower?.[s];\n return (\n <g key={item.id} data-series={item.id}>\n {/* Drop each observed edge vertically; never connect across the absent periods. */}\n {missingConnection === \"dotted\" && segments.slice(1).map((segment, index) => {\n const before = segments[index]!.at(-1)!, after = segment[0]!;\n return <g key={`gap${index}`}>{[before, after].map(point => <line key={point.index} x1={point.x} y1={point.y} x2={point.x} y2={g.plot.bottom} stroke={color} strokeWidth={chartRecipe.line.strokeWidth} strokeDasharray={chartRecipe.line.missingDash.join(\" \")} strokeLinecap=\"round\" opacity={chartRecipe.line.missingOpacity} />)}</g>;\n })}\n {showArea || stacked ? segments.map((segment, i) => (\n <MotionLinePath animate={animateChanges} points={segment} floor={g.plot.bottom} curve={curve} lower={lower ? segment.map((p) => lower[p.index]!) : undefined} key={`a${i}`} className=\"hjm-chart__area\" fill={`url(#${id}-area-${s})`} />\n )) : null}\n {segments.map((segment, i) => (\n <g key={`l${i}`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={scrubEmphasis && focus !== null ? \"var(--hjm-chart-axis-label)\" : color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />\n {scrubEmphasis && focus !== null && <g clipPath={`url(#${id}-scrub)`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" /></g>}</g>\n ))}\n {/* An isolated observation between gaps has no line, so it gets a dot. */}\n {segments.filter((segment) => segment.length === 1).map((segment) => (\n <circle key={`d${segment[0]!.index}`} cx={segment[0]!.x} cy={segment[0]!.y} r={3} fill={color} />\n ))}\n </g>\n );\n })}\n {focus !== null && g.xs[focus] !== undefined ? (\n <g className=\"hjm-chart__focus\">\n <line className=\"hjm-chart__cursor\" x1={g.xs[focus]} x2={g.xs[focus]} y1={g.plot.top - 4} y2={g.plot.bottom} strokeWidth={chartRecipe.cursor.strokeWidth} strokeDasharray={scrubbing ? undefined : chartRecipe.cursor.dash.join(\" \")} />\n {series.map((item, s) => {\n const p = g.plots[s]![focus];\n if (!p) return null;\n const color = colorOf(item, s);\n return (\n <g key={item.id}>\n <circle cx={p.x} cy={p.y} r={chartRecipe.line.focusHaloRadius} fill={color} opacity={chartRecipe.line.focusHaloOpacity} />\n <circle className=\"hjm-chart__dot\" cx={p.x} cy={p.y} r={chartRecipe.line.pointRadius} fill={color} strokeWidth={2} />\n </g>\n );\n })}\n </g>\n ) : null}\n {marks && extremes ? ([[marks.max, extremes.high], [marks.min, extremes.low]] as const)\n .filter(([index], i) => i === 0 || index !== marks.max)\n .map(([index, label]) => {\n const p = g.plots[0]![index];\n if (!p) return null;\n // Place extrema on opposite sides even in a compressed, inverted rank domain.\n const dy = index === (invert ? marks.min : marks.max) ? -10 : 16;\n return (\n <text key={label} className=\"hjm-chart__label hjm-chart__extreme\" x={Math.min(g.plot.right - 4, Math.max(g.plot.left + 4, p.x))} y={Math.max(10, Math.min(height - 2, p.y + dy))}\n textAnchor={p.x < width * 0.2 ? \"start\" : p.x > width * 0.8 ? \"end\" : \"middle\"}>{`${label} ${formatValue(p.value)}`}</text>\n );\n }) : null}\n {showAxis && categories.length > 0 ? (\n <>\n <text className=\"hjm-chart__label\" x={g.xs[0]} y={height - 4} textAnchor=\"start\">{categories[0]}</text>\n {categories.length > 1 ? <text className=\"hjm-chart__label\" x={g.xs.at(-1)} y={height - 4} textAnchor=\"end\">{categories.at(-1)}</text> : null}\n </>\n ) : null}\n </svg>\n {scrubbing && focus !== null && g.xs[focus] !== undefined ? <CursorBubble x={g.xs[focus]!} width={width} text={cursorLabel?.(focus) ?? categories[focus]!} /> : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// BarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type BarChartProps = CartesianCommon & FocusProps & Readonly<{\n orientation?: ChartOrientation;\n layout?: ChartBarLayout;\n /** Value label at each bar end (the stack total for stacked bars). */\n showValues?: boolean;\n animateChanges?: boolean;\n}>;\n\n/** Rounds only the value end of a bar so stacks read as one column. */\nfunction barPath(bar: ChartBar, vertical: boolean, negative: boolean, round: boolean): string {\n const { x, y, width: w, height: h } = bar;\n const r = round ? Math.min(chartRecipe.bar.radius, vertical ? w / 2 : h / 2, vertical ? h : w) : 0;\n const n = (value: number) => Number(value.toFixed(2));\n if (r <= 0) return `M${n(x)},${n(y)}h${n(w)}v${n(h)}h${n(-w)}Z`;\n if (vertical && !negative) return `M${n(x)},${n(y + h)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h)}Z`;\n if (vertical) return `M${n(x)},${n(y)}H${n(x + w)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}Z`;\n if (!negative) return `M${n(x)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x)}Z`;\n return `M${n(x + w)},${n(y)}V${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}Z`;\n}\n\nexport function BarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height, width: fallbackWidth = 320, orientation = \"vertical\",\n layout = \"grouped\", domain, showAxis = false, showValues = false, animateChanges = false, className, layoutStyle, ...focusProps\n}: BarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const vertical = orientation === \"vertical\";\n // Horizontal bars grow with the category count so labels never overlap (same rule as Native).\n const resolvedHeight = height ?? (vertical ? chartRecipe.heights.regular : Math.max(chartRecipe.heights.compact, categories.length * 36 + spacing.lg));\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set } = useFocus(focusProps, null, categories);\n const insets: ChartInsets = vertical\n ? (showAxis ? chartRecipe.insets.axis : { ...chartRecipe.insets.plot, bottom: spacing.lg })\n : { top: spacing.xs, right: showValues ? 48 : spacing.sm, bottom: spacing.xs, left: 72 };\n const g = useMemo(() => resolveBarGeometry({ categories, series, width, height: resolvedHeight, insets, orientation, layout, ...(domain ? { domain } : {}) }),\n [categories, series, width, resolvedHeight, insets, orientation, layout, domain]);\n const categoryKeys = useMemo(() => {\n const occurrences = new Map<string, number>();\n return categories.map(label => { const occurrence = occurrences.get(label) ?? 0; occurrences.set(label, occurrence + 1); return JSON.stringify([label, occurrence]); });\n }, [categories]);\n // Only the outermost segment of each stack (per sign) gets rounded corners.\n const outer = useMemo(() => {\n if (layout !== \"stacked\") return null;\n const stacks = stackValues(series), result = new Set<string>();\n categories.forEach((_, i) => {\n let positive = -1, negative = -1;\n series.forEach((item, s) => { const v = item.values[i]; if (!isChartNumber(v) || !stacks[s]![i]) return; if (v >= 0) positive = s; else negative = s; });\n if (positive >= 0) result.add(`${positive}-${i}`);\n if (negative >= 0) result.add(`${negative}-${i}`);\n });\n return result;\n }, [categories, series, layout]);\n const handlers = useScrub((x, y) => nearestChartIndex(g.centers, vertical ? x : y, available), (index) => set(index, true), () => set(focus, false));\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\" && focus !== null) { event.preventDefault(); set(null, false); return; }\n const next = vertical\n ? keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"])\n : keyStep(event, available, focus, [\"ArrowDown\", \"ArrowRight\"], [\"ArrowUp\", \"ArrowLeft\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n const totals = layout === \"stacked\" && showValues\n ? categories.map((_, i) => series.reduce((sum, item) => sum + (isChartNumber(item.values[i]) ? item.values[i]! : 0), 0))\n : null;\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--bar\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-orientation={orientation} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-orientation={vertical ? \"horizontal\" : \"vertical\"}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n // Without a focus the slider has no value; its name stands in so nothing misleading is read.\n aria-valuetext={focus === null ? accessibilityLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: resolvedHeight }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={resolvedHeight} viewBox={`0 0 ${width} ${resolvedHeight}`} aria-hidden=\"true\" focusable=\"false\">\n {g.ticks.map((tick) => vertical\n ? <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.value(tick)} y2={g.value(tick)} />\n : <line key={tick} className=\"hjm-chart__grid\" y1={g.plot.top} y2={g.plot.bottom} x1={g.value(tick)} x2={g.value(tick)} />)}\n {showAxis && vertical ? g.ticks.map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.value(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {g.bars.map((bar) => (\n <MotionBar\n key={`${series[bar.seriesIndex]!.id}-${categoryKeys[bar.index]}`}\n bar={bar} animate={animateChanges && g.bars.length <= 200} vertical={vertical} rounded={outer ? outer.has(`${bar.seriesIndex}-${bar.index}`) : true}\n className=\"hjm-chart__bar\"\n data-index={bar.index}\n fill={colorOf(series[bar.seriesIndex]!, bar.seriesIndex)}\n opacity={focus === null || focus === bar.index ? 1 : chartRecipe.bar.restOpacity}\n />\n ))}\n {showValues && layout === \"grouped\" ? g.bars.map((bar) => (\n <text key={`v${bar.seriesIndex}-${bar.index}`} className=\"hjm-chart__label hjm-chart__value\"\n x={vertical ? bar.x + bar.width / 2 : bar.x + bar.width + 4} y={vertical ? bar.y - 4 : bar.y + bar.height / 2}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(bar.value)}</text>\n )) : null}\n {totals ? totals.map((total, i) => {\n if (!available.includes(i)) return null;\n const end = g.value(Math.max(0, ...stackValues(series).map((row) => row[i]?.[1] ?? 0)));\n return (\n <text key={`total${i}`} className=\"hjm-chart__label hjm-chart__value\" x={vertical ? g.centers[i] : end + 4} y={vertical ? end - 4 : g.centers[i]}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(total)}</text>\n );\n }) : null}\n {categories.map((category, i) => vertical\n ? (categories.length <= 12 || i % Math.ceil(categories.length / 12) === 0)\n ? <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.centers[i]} y={resolvedHeight - 4} textAnchor=\"middle\">{category}</text>\n : null\n : <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.plot.left - 8} y={g.centers[i]} dominantBaseline=\"middle\" textAnchor=\"end\">{category}</text>)}\n </svg>\n {scrubbing && focus !== null && vertical && g.centers[focus] !== undefined\n ? <CursorBubble x={g.centers[focus]!} width={width} text={valueText(categories, series, focus, formatValue, missingLabel)} />\n : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ChartLegend\n// ---------------------------------------------------------------------------------------------\n\nexport type ChartLegendItem = Readonly<{ id: string; label: string; color: string; value?: string }>;\nexport type ChartLegendProps = ChartRootProps & Readonly<{\n items: readonly ChartLegendItem[]; exclusion?: Readonly<{ excludedIds: readonly string[]; onToggle: (id: string) => void; label: (item: ChartLegendItem, included: boolean) => string }>;\n selectedId?: string | null;\n /** When given, rows are toggle buttons; pressing the selected row clears the selection. */\n onSelect?: (id: string | null) => void;\n}>;\n\n/** Swatch + label (+ value). Color is never the only encoding: every row carries its label. */\nexport function ChartLegend({ items, selectedId, onSelect, exclusion, className, layoutStyle }: ChartLegendProps) {\n return (\n <ul className={classNames(\"hjm-chart-legend\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-interactive={onSelect ? \"\" : undefined}>\n {items.map((item) => {\n const content = (\n <>\n <span className=\"hjm-chart-legend__swatch\" aria-hidden=\"true\" style={{ background: item.color }} />\n <span className=\"hjm-chart-legend__label\">{item.label}</span>\n {item.value !== undefined ? <span className=\"hjm-chart-legend__value\">{item.value}</span> : null}\n </>\n );\n const dimmed = selectedId != null && selectedId !== item.id;\n return (\n <li key={item.id} className=\"hjm-chart-legend__item\" data-dimmed={dimmed || undefined}>\n {exclusion ? <input type=\"checkbox\" checked={!exclusion.excludedIds.includes(item.id)} aria-label={exclusion.label(item, !exclusion.excludedIds.includes(item.id))} onChange={() => exclusion.onToggle(item.id)} /> : null}\n {onSelect ? (\n <button type=\"button\" className=\"hjm-chart-legend__button\" aria-pressed={selectedId === item.id} onClick={() => onSelect(selectedId === item.id ? null : item.id)}>\n {content}\n </button>\n ) : content}\n </li>\n );\n })}\n </ul>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// PieChart\n// ---------------------------------------------------------------------------------------------\n\nexport type PieDatum = Readonly<{ id: string; label: string; value: number | null; color?: string }>;\nexport type PieChartProps = ChartRootProps & Readonly<{\n data: readonly PieDatum[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n donut?: boolean;\n size?: number;\n /** Rendered in the donut hole (ignored for a full pie). */\n centerContent?: ReactNode | ((summary: PieVisibilitySummary) => ReactNode);\n /** Controlled denominator filtering, independent of selectedId emphasis. */\n exclusion?: Readonly<{ excludedIds: readonly string[]; onExcludedIdsChange: (ids: readonly string[]) => void; label: (datum: PieDatum, included: boolean) => string }>;\n selectedId?: string | null;\n defaultSelectedId?: string | null;\n onSelect?: (id: string | null) => void;\n showLegend?: boolean;\n}>;\n\nexport function PieChart({\n data, accessibilityLabel, formatValue, donut = true, size = 180, centerContent, selectedId, defaultSelectedId = null, onSelect,\n showLegend = true, exclusion, className, layoutStyle,\n}: PieChartProps) {\n const labelTheme = useOptionalHjmTheme();\n const labelMetrics = labelTheme?.designProfile?.tokens.typography[chrome.labelVariant] ?? typography[chrome.labelVariant];\n const labelScale = labelTheme?.environment.textScale ?? 1;\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [own, setOwn] = useState<string | null>(defaultSelectedId);\n const candidate = selectedId !== undefined ? selectedId : own;\n const selected = candidate !== null && exclusion?.excludedIds.includes(candidate) ? null : candidate;\n const interactive = onSelect !== undefined || selectedId !== undefined;\n const select = (next: string | null) => { if (selectedId === undefined) setOwn(next); onSelect?.(next); };\n const toggle = (next: string) => select(selected === next ? null : next);\n // The selected slice moves outward by this much, so it is reserved inside the box.\n const lift = 4;\n const radius = size / 2 - lift - 2, inner = donut ? radius * chartRecipe.pie.donutRatio : 0;\n const visibility = resolvePieVisibility(data, exclusion?.excludedIds);\n const slices = resolvePieGeometry(visibility.values, { cx: size / 2, cy: size / 2, radius, innerRadius: inner });\n const center = typeof centerContent === \"function\" ? centerContent(visibility) : centerContent;\n const legendExclusion = exclusion ? { excludedIds: exclusion.excludedIds, label: (item: ChartLegendItem, included: boolean) => exclusion.label(data.find(datum => datum.id === item.id)!, included),\n onToggle: (id: string) => exclusion.onExcludedIdsChange(exclusion.excludedIds.includes(id) ? exclusion.excludedIds.filter(key => key !== id) : [...exclusion.excludedIds, id]) } : undefined;\n const colorAt = (index: number) => colorOf(data[index]!, index);\n const percentOf = (index: number) => slices.find((slice) => slice.index === index)?.percent;\n const percentText = (index: number) => { const p = percentOf(index); return p === undefined ? \"\" : `${Math.round(p)}%`; };\n const rowValue = (d: PieDatum, i: number) => isChartNumber(d.value) ? `${formatValue(d.value)}${percentOf(i) !== undefined ? ` · ${percentText(i)}` : \"\"}` : \"—\";\n const summary = data.map((d, i) => exclusion?.excludedIds.includes(d.id) ? \"\" : `${d.label} ${isChartNumber(d.value) ? formatValue(d.value) : \"\"}${percentOf(i) !== undefined ? ` (${percentText(i)})` : \"\"}`.trim()).filter(Boolean).join(\", \");\n // With a legend, its rows are the keyboard path; slices stay pointer targets so each item has\n // one tab stop. Without a legend the slices themselves become the buttons.\n const sliceButtons = interactive && !showLegend;\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--pie\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__pie\" role={sliceButtons ? \"group\" : \"img\"} aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden={sliceButtons ? undefined : true} focusable=\"false\">\n {slices.map((slice) => {\n const datum = data[slice.index]!, isSelected = selected === datum.id;\n const mid = (slice.startAngle + slice.endAngle) / 2;\n return (\n <path\n key={datum.id}\n className=\"hjm-chart__slice\"\n data-id={datum.id}\n data-selected={isSelected || undefined}\n d={slice.path}\n fill={colorAt(slice.index)}\n opacity={selected !== null && !isSelected ? chartRecipe.bar.restOpacity : 1}\n transform={isSelected ? `translate(${(Math.sin(mid) * lift).toFixed(2)} ${(-Math.cos(mid) * lift).toFixed(2)})` : undefined}\n {...(interactive ? { onClick: () => toggle(datum.id) } : {})}\n {...(sliceButtons ? {\n role: \"button\",\n tabIndex: 0,\n \"aria-pressed\": isSelected,\n \"aria-label\": `${datum.label} ${rowValue(datum, slice.index)}`,\n onKeyDown: (event: KeyboardEvent<SVGPathElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n toggle(datum.id);\n },\n } : {})}\n />\n );\n })}\n {!donut ? slices.filter((slice) => slice.percent >= chartRecipe.pie.minLabelPercent * 2).map((slice) => {\n const label = percentText(slice.index);\n const labelWidth = label.length * labelMetrics.fontSize * labelScale + spacing.xxs * 2;\n const labelHeight = labelMetrics.lineHeight * labelScale + spacing.xxs;\n return <g key={`t${slice.index}`} pointerEvents=\"none\">\n <rect x={slice.centroid.x - labelWidth / 2} y={slice.centroid.y - labelHeight / 2} width={labelWidth} height={labelHeight} style={{ rx: \"var(--hjm-radius-sm)\", fill: \"var(--hjm-chart-label-surface)\" }} />\n <text className=\"hjm-chart__slice-label\" x={slice.centroid.x} y={slice.centroid.y} dominantBaseline=\"middle\" textAnchor=\"middle\">{label}</text>\n </g>;\n }) : null}\n </svg>\n {donut && center != null ? <div className=\"hjm-chart__pie-center\">{center}</div> : null}\n </div>\n {showLegend ? (\n <ChartLegend\n items={data.map((d, i) => ({ id: d.id, label: d.label, color: colorAt(i), value: rowValue(d, i) }))}\n selectedId={selected}\n {...(legendExclusion ? { exclusion: legendExclusion } : {})}\n {...(interactive ? { onSelect: select } : {})}\n />\n ) : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{summary}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// RadarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type RadarChartProps = ChartRootProps & Readonly<{\n /** At least three axes. */\n categories: readonly string[];\n series: readonly ChartSeries[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n missingLabel: string;\n /** One shared domain for every axis; defaults to 0..max. */\n domain?: readonly [number, number];\n levels?: number;\n size?: number;\n /** Defaults to on for more than one series. */\n showLegend?: boolean;\n}>;\n\nexport function RadarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, domain, levels = chartRecipe.radar.levels, size = 240, showLegend,\n className, layoutStyle,\n}: RadarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n // Room around the polygon for axis labels (same reservation as Native).\n const pad = 44, center = size / 2;\n const g = resolveRadarGeometry({ categories, series, cx: center, cy: center, radius: center - pad, levels, ...(domain ? { domain } : {}) });\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--radar\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__radar\" role=\"img\" aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden=\"true\" focusable=\"false\">\n {g.rings.map((ring, i) => <path key={i} className=\"hjm-chart__grid\" d={ring} fill=\"none\" />)}\n {g.axes.map((axis) => <line key={axis.index} className=\"hjm-chart__grid\" x1={center} y1={center} x2={axis.end.x} y2={axis.end.y} />)}\n {g.polygons.map((polygon) => {\n const color = colorOf(series[polygon.seriesIndex]!, polygon.seriesIndex);\n return (\n <g key={polygon.seriesIndex} data-series={series[polygon.seriesIndex]!.id}>\n <path className=\"hjm-chart__polygon\" d={polygon.path} fill={color} fillOpacity={chartRecipe.radar.fillOpacity} stroke={color} strokeWidth={chartRecipe.radar.strokeWidth} strokeLinejoin=\"round\" />\n {polygon.points.map((p) => p.value !== null ? <circle key={p.index} cx={p.x} cy={p.y} r={3} fill={color} /> : null)}\n </g>\n );\n })}\n {g.axes.map((axis) => {\n const first = series[0]?.values[axis.index];\n return (\n <g key={`l${axis.index}`}>\n <text className=\"hjm-chart__label hjm-chart__axis-name\" x={axis.labelAt.x} y={axis.labelAt.y} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{axis.label}</text>\n {series.length === 1 ? (\n <text className=\"hjm-chart__label\" x={axis.labelAt.x} y={axis.labelAt.y + 14} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{isChartNumber(first) ? formatValue(first) : missingLabel}</text>\n ) : null}\n </g>\n );\n })}\n </svg>\n </div>\n {showLegend ?? series.length > 1 ? <ChartLegend items={series.map((item, s) => ({ id: item.id, label: item.label, color: colorOf(item, s) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ScatterChart\n// ---------------------------------------------------------------------------------------------\n\nexport type ScatterChartProps = ChartRootProps & Readonly<{\n points: readonly ScatterDatum[];\n accessibilityLabel: string;\n xLabel: string;\n yLabel: string;\n formatX: (value: number) => string;\n formatY: (value: number) => string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n /** Legend labels by `seriesIndex`; the legend shows for two or more. */\n seriesLabels?: readonly string[];\n focusId?: string | null;\n onFocusChange?: (id: string | null) => void;\n}>;\n\nexport function ScatterChart({\n points, accessibilityLabel, xLabel, yLabel, formatX, formatY, height = chartRecipe.heights.tall, width: fallbackWidth = 320,\n seriesLabels, focusId, onFocusChange, className, layoutStyle,\n}: ScatterChartProps) {\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const [own, setOwn] = useState<string | null>(null);\n const focused = focusId !== undefined ? focusId : own;\n const choose = (next: string | null) => { if (focusId === undefined) setOwn(next); onFocusChange?.(next); };\n const g = useMemo(() => resolveScatterGeometry({ points, width, height }), [points, width, height]);\n // Keyboard order follows the x axis so arrows read left to right.\n const ordered = useMemo(() => [...points].sort((a, b) => a.x - b.x || a.y - b.y), [points]);\n const handlers = useScrub((x, y) => nearestScatterPoint(g.points, x, y), (index) => { if (index !== null) choose(points[index]!.id); }, () => undefined);\n const focusPoint = g.points.find((p) => p.id === focused);\n const sx = scaleLinear(g.xDomain, [g.plot.left, g.plot.right]), sy = scaleLinear(g.yDomain, [g.plot.bottom, g.plot.top]);\n const describe = (p: ScatterDatum) => `${p.label}, ${xLabel} ${formatX(p.x)}, ${yLabel} ${formatY(p.y)}`;\n const position = ordered.findIndex((p) => p.id === focused);\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n let next: ScatterDatum | undefined;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") next = ordered[Math.min(ordered.length - 1, position + 1)];\n else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") next = ordered[position < 0 ? ordered.length - 1 : Math.max(0, position - 1)];\n else if (event.key === \"Home\") next = ordered[0];\n else if (event.key === \"End\") next = ordered.at(-1);\n else if (event.key === \"Escape\" && focused !== null) { event.preventDefault(); choose(null); return; }\n else return;\n event.preventDefault();\n if (next) choose(next.id);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--scatter\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, points.length - 1)}\n aria-valuenow={Math.max(0, position)}\n aria-valuetext={focusPoint ? describe(focusPoint) : accessibilityLabel}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n {g.yTicks.map((tick) => (\n <g key={`y${tick}`}>\n <line className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={sy(tick)} y2={sy(tick)} />\n <text className=\"hjm-chart__label\" x={g.plot.left - 6} y={sy(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatY(tick)}</text>\n </g>\n ))}\n {g.xTicks.map((tick) => <text key={`x${tick}`} className=\"hjm-chart__label\" x={sx(tick)} y={height - 4} textAnchor=\"middle\">{formatX(tick)}</text>)}\n {g.points.map((p) => {\n const isFocused = p.id === focused;\n return (\n <circle key={p.id} className={classNames(\"hjm-chart__point\", isFocused && \"hjm-chart__dot\")} data-id={p.id} cx={p.px} cy={p.py}\n r={isFocused ? chartRecipe.scatter.focusRadius : chartRecipe.scatter.radius} fill={colorOf({}, p.seriesIndex ?? 0)}\n opacity={focused !== null && !isFocused ? 0.45 : 0.9} strokeWidth={isFocused ? 2 : 0} />\n );\n })}\n </svg>\n {focusPoint ? <CursorBubble x={focusPoint.px} width={width} text={`${focusPoint.label} · ${formatX(focusPoint.x)} / ${formatY(focusPoint.y)}`} /> : null}\n </div>\n <div className=\"hjm-chart__axis-titles\" aria-hidden=\"true\"><span>{yLabel} ↑</span><span>{xLabel} →</span></div>\n {seriesLabels && seriesLabels.length > 1 ? <ChartLegend items={seriesLabels.map((label, i) => ({ id: String(i), label, color: colorOf({}, i) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{points.map(describe).join(\". \")}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// Sparkline\n// ---------------------------------------------------------------------------------------------\n\nexport type SparklineProps = ChartRootProps & Readonly<{\n values: readonly (number | null)[];\n color?: string;\n invert?: boolean;\n domain?: readonly [number, number];\n width?: number;\n height?: number;\n /** Omit when the adjacent text already states the value; the sparkline is then decorative. */\n accessibilityLabel?: string;\n}>;\n\nexport function Sparkline({\n values, color, invert = false, domain, width = chartRecipe.sparkline.width, height = chartRecipe.sparkline.height, accessibilityLabel,\n className, layoutStyle,\n}: SparklineProps) {\n const colorOf = useSeriesColor(), id = useSvgId();\n const stroke = color ?? colorOf({}, 0);\n const pad = chartRecipe.sparkline.padding;\n const g = resolveLineGeometry({\n categories: values.map((_, i) => String(i)), series: [{ id: \"s\", label: \"s\", values }], width, height,\n insets: { top: pad, right: pad, bottom: pad, left: pad }, invert, ...(domain ? { domain } : {}),\n });\n const segments = splitSegments(g.plots[0]!);\n const labelled = accessibilityLabel !== undefined && accessibilityLabel.trim().length > 0;\n return (\n <svg\n className={classNames(\"hjm-sparkline\", className)}\n style={layoutStyle}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n focusable=\"false\"\n {...(labelled ? { role: \"img\", \"aria-label\": accessibilityLabel } : { \"aria-hidden\": true })}\n >\n <defs>\n <linearGradient id={`${id}-spark`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={stroke} stopOpacity={0.28} />\n <stop offset=\"1\" stopColor={stroke} stopOpacity={0} />\n </linearGradient>\n </defs>\n {segments.map((segment, i) => <path key={`a${i}`} d={areaPath(segment, height)} fill={`url(#${id}-spark)`} />)}\n {segments.map((segment, i) => <path key={`l${i}`} className=\"hjm-chart__line\" d={linePath(segment)} stroke={stroke} strokeWidth={chartRecipe.sparkline.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />)}\n </svg>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.tsx"],"names":[],"mappings":"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O,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,IAAI,QAAQ,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAClL,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IACjL,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,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","sourcesContent":["import {\n useCallback,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type PointerEvent,\n type ReactNode,\n} from \"react\";\nimport type { ColorReference } from \"@hjmds/design-contracts/color-references\";\nimport { resolveDatavizSeriesColor } from \"@hjmds/design-contracts/dataviz\";\nimport {\n prepareChartLineMorph,\n areaPath,\n chartRecipe,\n describeChart,\n isChartNumber,\n linePath,\n nearestChartIndex,\n nearestScatterPoint,\n observedIndices,\n resolveBarGeometry,\n resolveLineGeometry,\n resolvePieGeometry, resolvePieVisibility, type PieVisibilitySummary,\n resolveRadarGeometry,\n resolveScatterGeometry,\n scaleLinear,\n seriesExtremes,\n splitSegments,\n stackValues,\n stepChartIndex,\n validateChartSeries,\n type ChartBar,\n type ChartBarLayout,\n type ChartCurve,\n type ChartInsets,\n type ChartOrientation,\n type ChartSeries,\n type ScatterDatum,\n} from \"@hjmds/design-contracts/components/chart\";\nimport { spacing, typography } from \"@hjmds/design-contracts/foundations\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { classNames } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\n/*\n * Web chart renderers (2026-10-14). Geometry, domains, stacking, gaps and the text alternative come\n * from `@hjmds/design-contracts/components/chart`; this file only paints plain SVG and translates\n * pointer/keyboard input into the contract's focus index. Prop names mirror\n * `@hjmds/react-native/chart` so products write one chart description for both surfaces.\n * Interaction follows react-native-wagmi-charts (press-and-drag cursor, release returns to the\n * latest value) with pointer events and `touch-action: pan-y` so vertical page scrolling still wins.\n * Optional data morphing updates SVG hosts directly and respects reduced motion.\n */\n\n// ---------------------------------------------------------------------------------------------\n// Shared helpers\n// ---------------------------------------------------------------------------------------------\n\nfunction kebab(value: string): string {\n return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\n/**\n * Chrome colors stay recipe references resolved through the provider's CSS variables, so a theme\n * switch repaints without re-rendering and the recipe (not styles.css) owns the choice.\n */\nfunction cssColor(reference: ColorReference): string {\n const name = reference.source === \"theme\"\n ? `--hjm-color-${kebab(reference.key)}`\n : reference.source === \"accent\" ? `--hjm-accent-${kebab(reference.key)}` : `--hjm-accent-fill-${kebab(reference.key)}`;\n return reference.alpha === undefined || reference.alpha === 1\n ? `var(${name})`\n : `color-mix(in srgb, var(${name}) ${Math.round(reference.alpha * 100)}%, transparent)`;\n}\n\nconst chrome = chartRecipe.chrome;\nconst chromeStyle = {\n \"--hjm-chart-axis-line\": cssColor(chrome.axisLine),\n \"--hjm-chart-axis-label\": cssColor(chrome.axisLabel),\n \"--hjm-chart-grid-line\": cssColor(chrome.gridLine),\n \"--hjm-chart-grid-width\": `${chrome.gridWidth}px`,\n \"--hjm-chart-legend-label\": cssColor(chrome.legendLabel),\n \"--hjm-chart-tooltip-surface\": cssColor(chrome.tooltipSurface),\n \"--hjm-chart-tooltip-border\": cssColor(chrome.tooltipBorder),\n \"--hjm-chart-tooltip-content\": cssColor(chrome.tooltipContent),\n \"--hjm-chart-label-surface\": cssColor(chrome.labelSurface),\n \"--hjm-chart-label-content\": cssColor(chrome.labelContent),\n} as CSSProperties;\n\nfunction useSeriesColor(): (series: Readonly<{ color?: string | undefined }>, index: number) => string {\n const theme = useOptionalHjmTheme()?.environment.theme ?? \"light\";\n return useCallback((series, index) => series.color ?? resolveDatavizSeriesColor(theme, index), [theme]);\n}\n\nfunction useSvgId(): string {\n return useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n}\n\n/** Responsive width: `fallback` renders on the server and before the first measurement. */\nfunction useMeasuredWidth(fallback: number): [(node: HTMLDivElement | null) => void, number] {\n const [width, setWidth] = useState(fallback);\n const [node, setNode] = useState<HTMLDivElement | null>(null);\n useLayoutEffect(() => {\n if (!node) return;\n const update = (next: number) => { if (next > 0) setWidth(Math.round(next)); };\n update(node.getBoundingClientRect().width);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver((entries) => update(entries[0]?.contentRect.width ?? 0));\n observer.observe(node);\n return () => observer.disconnect();\n }, [node]);\n return [setNode, width];\n}\n\ntype FocusDetail = Readonly<{ scrubbing: boolean }>;\ntype FocusProps = Readonly<{\n /** Controlled focused category; `null` shows no focus. */\n focusIndex?: number | null;\n defaultFocusIndex?: number | null;\n onFocusChange?: (index: number | null, detail: FocusDetail) => void;\n /** Keep the scrubbed point after release instead of returning to the default (Native parity, 2026-10-14). */\n holdOnRelease?: boolean;\n}>;\n\n/** Controlled/uncontrolled focus plus a transient scrub index (same model as the Native renderer). */\nfunction useFocus({ focusIndex, defaultFocusIndex = null, onFocusChange, holdOnRelease = false }: FocusProps, fallback: number | null, categories?: readonly string[]) {\n const categoryKey = (index: number | null) => index === null || categories?.[index] === undefined ? null : JSON.stringify([categories[index], categories.slice(0, index).filter(value => value === categories[index]).length]);\n const selectedKey = useRef<string | null>(categoryKey(defaultFocusIndex));\n const [own, setOwn] = useState<number | null>(defaultFocusIndex);\n const [scrub, setScrub] = useState<number | null>(null);\n const last = useRef<number | null>(null);\n const mapped = categories && selectedKey.current !== null ? categories.findIndex((_, index) => categoryKey(index) === selectedKey.current) : own;\n const ownSelection = mapped === -1 ? null : mapped;\n const settled = focusIndex !== undefined ? (categories && (focusIndex === null || categories[focusIndex] === undefined) ? null : focusIndex) : ownSelection;\n const focus = scrub ?? settled ?? fallback;\n const set = useCallback((index: number | null, scrubbing: boolean) => {\n if (scrubbing) { setScrub(index); last.current = index; }\n else { setScrub(null); if (focusIndex === undefined) { selectedKey.current = categoryKey(index); setOwn(index); } }\n onFocusChange?.(index, { scrubbing });\n }, [focusIndex, onFocusChange, categories]);\n const release = useCallback(() => set(holdOnRelease ? last.current : null, false), [set, holdOnRelease]);\n return { focus, scrubbing: scrub !== null, set, release };\n}\n\n/** Press-and-drag; the pointer is captured so a drag that leaves the plot keeps scrubbing. */\nfunction useScrub(pick: (x: number, y: number) => number | null, onScrub: (index: number | null) => void, onEnd: () => void) {\n const active = useRef<number | null>(null);\n const at = (event: PointerEvent<HTMLElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n return pick(event.clientX - rect.left, event.clientY - rect.top);\n };\n return {\n onPointerDown(event: PointerEvent<HTMLElement>) {\n if (event.button !== 0) return;\n active.current = event.pointerId;\n event.currentTarget.setPointerCapture?.(event.pointerId);\n onScrub(at(event));\n },\n onPointerMove(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n onScrub(at(event));\n },\n onPointerUp(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n onPointerCancel(event: PointerEvent<HTMLElement>) {\n if (active.current !== event.pointerId) return;\n active.current = null;\n onEnd();\n },\n };\n}\n\nfunction valueText(categories: readonly string[], series: readonly ChartSeries[], index: number, format: (value: number) => string, missing: string): string {\n const values = series.map((item) => { const v = item.values[index]; return isChartNumber(v) ? format(v) : missing; });\n return series.length === 1 ? `${categories[index]} ${values[0]}` : `${categories[index]} ${series.map((item, s) => `${item.label} ${values[s]}`).join(\", \")}`;\n}\n\n/** Arrow/Home/End stepping over observed indices only; returns undefined for unrelated keys. */\nfunction keyStep(event: KeyboardEvent, available: readonly number[], focus: number | null, nextKeys: readonly string[], previousKeys: readonly string[]): number | null | undefined {\n if (nextKeys.includes(event.key)) return stepChartIndex(available, focus, 1);\n if (previousKeys.includes(event.key)) return stepChartIndex(available, focus, -1);\n if (event.key === \"Home\") return available[0] ?? null;\n if (event.key === \"End\") return available.at(-1) ?? null;\n return undefined;\n}\n\nfunction CursorBubble({ x, width, text }: Readonly<{ x: number; width: number; text: string }>) {\n // Clamped like the Native bubble so the label never leaves the plot.\n const half = 44, center = Math.min(width - half, Math.max(half, x));\n return <span className=\"hjm-chart__bubble\" aria-hidden=\"true\" style={{ left: center }}>{text}</span>;\n}\n\ntype ChartRootProps = Readonly<{\n className?: string;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n\ntype CartesianCommon = ChartRootProps & Readonly<{\n categories: readonly string[];\n series: readonly ChartSeries[];\n /** Accessible name (Web `aria-label`). Product-localized. */\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n /** Spoken/written for a missing observation in the text alternative. */\n missingLabel: string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n domain?: readonly [number, number];\n showAxis?: boolean;\n}>;\n\n// Paths/rectangles update their host attributes directly; values, axes and accessibility\n// always come from the latest real data. No per-frame React reconciliation.\nfunction MotionLinePath({ points, lower, floor, curve, animate, ...rest }: Omit<React.SVGProps<SVGPathElement>, \"points\" | \"ref\"> & { points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined; curve: ChartCurve; animate: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null);\n const previous = useRef<{ points: readonly { x: number; y: number }[]; lower?: readonly { x: number; y: number }[] | undefined; floor?: number | undefined } | null>(null);\n const path = (p: readonly { x: number; y: number }[], base?: number, edge?: readonly { x: number; y: number }[]) => base === undefined ? linePath(p, curve) : areaPath(p, base, curve, edge);\n const signature = JSON.stringify([points, lower, floor, curve]);\n useLayoutEffect(() => {\n const before = previous.current;\n const target = { points, lower, floor };\n previous.current = target;\n // A bounded morph avoids multiplying frame work for dense historical datasets.\n const morph = animate && !reducedMotion && !document.hidden && before && points.length + before.points.length <= 1024 ? prepareChartLineMorph(before.points, points) : null;\n if (!morph) { node.current?.setAttribute(\"d\", path(points, floor, lower)); return; }\n const lowerMorph = before?.lower && lower ? prepareChartLineMorph(before.lower, lower) : null;\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const current = t === 1 ? target : { points: morph(t), lower: lowerMorph?.(t) ?? lower, floor: floor === undefined ? undefined : (before?.floor ?? floor) + (floor - (before?.floor ?? floor)) * t };\n previous.current = current;\n const d = path(current.points, current.floor, current.lower); node.current?.setAttribute(\"d\", d);\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={path(points, floor, lower)} />;\n}\nfunction MotionBar({ bar, animate, vertical = true, rounded = true, ...rest }: React.SVGProps<SVGPathElement> & { bar: ChartBar; animate: boolean; vertical?: boolean; rounded?: boolean }) {\n const reducedMotion = useOptionalHjmTheme()?.environment.reducedMotion;\n const node = useRef<SVGPathElement | null>(null), previous = useRef<ChartBar | null>(null);\n const signature = JSON.stringify([bar, vertical, rounded]);\n useLayoutEffect(() => {\n const before = previous.current; previous.current = bar;\n if (!animate || reducedMotion || !before || document.hidden) { node.current?.setAttribute(\"d\", barPath(bar, vertical, bar.value < 0, rounded)); return; }\n let frame = 0, start: number | undefined;\n const paint = (t: number) => {\n const value = { ...bar, x: before.x + (bar.x - before.x) * t, y: before.y + (bar.y - before.y) * t, width: before.width + (bar.width - before.width) * t, height: before.height + (bar.height - before.height) * t };\n previous.current = value; node.current?.setAttribute(\"d\", barPath(value, vertical, value.value < 0, rounded));\n };\n const tick = (now: number) => { start ??= now; const t = Math.min(1, (now - start) / 220); paint(1 - (1 - t) ** 3); if (t < 1) frame = requestAnimationFrame(tick); };\n paint(0); frame = requestAnimationFrame(tick);\n const visibility = () => { if (document.hidden) { cancelAnimationFrame(frame); paint(1); } }; document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [signature, animate, reducedMotion]);\n return <path {...rest} ref={node} d={barPath(bar, vertical, bar.value < 0, rounded)} />;\n}\n\n// ---------------------------------------------------------------------------------------------\n// LineChart\n// ---------------------------------------------------------------------------------------------\n\nexport type LineChartProps = CartesianCommon & FocusProps & Readonly<{\n curve?: ChartCurve;\n /** dotted: separate vertical drops; bridge: faint edge-to-edge visual guide. Neither creates missing values. */\n missingConnection?: \"none\" | \"dotted\" | \"bridge\";\n /** Gradient area under each line. Defaults to on for a single series. */\n area?: boolean;\n stacked?: boolean;\n /** Smallest value on top (ranks, ERA). */\n invert?: boolean;\n includeZero?: boolean;\n /** Dashed horizontal reference line; `\"first\"` uses the first observation (previous close). */\n referenceValue?: number | \"first\";\n /** Labels for the first series' high/low markers, shown while not scrubbing. */\n extremes?: Readonly<{ high: string; low: string }>;\n /** Bubble text above the cursor while scrubbing; defaults to the category. */\n cursorLabel?: (index: number) => string;\n /** Morph actual data changes; reduced motion snaps immediately. */\n animateChanges?: boolean;\n /** Keep the chosen side in series color; mute the other side. */\n scrubEmphasis?: \"before\" | \"after\";\n /** Value labels only (rank charts: \"#1\" at the top). */\n valueAxis?: boolean;\n /** Overrides grid/label ticks. */\n ticks?: readonly number[];\n}>;\n\nexport function LineChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height = chartRecipe.heights.regular, width: fallbackWidth = 320,\n curve = \"linear\", missingConnection = \"none\", area, stacked = false, invert = false, domain, includeZero, referenceValue, extremes, showAxis = false,\n valueAxis = false, ticks: tickOverride, cursorLabel, animateChanges = false, scrubEmphasis, className, layoutStyle, ...focusProps\n}: LineChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set, release } = useFocus(focusProps, available.at(-1) ?? null, categories);\n const insets = showAxis || valueAxis ? chartRecipe.insets.axis : chartRecipe.insets.plot;\n const g = useMemo(() => resolveLineGeometry({\n categories, series, width, height, insets, invert, stacked,\n ...(domain ? { domain } : {}), ...(includeZero === undefined ? {} : { includeZero }),\n }), [categories, series, width, height, insets, invert, stacked, domain, includeZero]);\n // Release returns to the default (latest) focus unless holdOnRelease keeps the scrubbed point.\n const handlers = useScrub((x) => nearestChartIndex(g.xs, x, available), (index) => set(index, true), release);\n const showArea = area ?? series.length === 1;\n const reference = referenceValue === \"first\" ? series[0]?.values.find(isChartNumber) : referenceValue;\n const marks = extremes && !scrubbing ? seriesExtremes(series[0]?.values ?? []) : null;\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const next = keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--line\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n aria-valuetext={focus === null ? missingLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n <defs>\n <clipPath id={`${id}-scrub`}><rect x={scrubEmphasis === \"after\" && focus !== null ? g.xs[focus] ?? g.plot.left : g.plot.left} y={0} width={focus === null ? width : scrubEmphasis === \"after\" ? g.plot.right - (g.xs[focus] ?? g.plot.left) : (g.xs[focus] ?? g.plot.right) - g.plot.left} height={height} /></clipPath>\n {series.map((item, s) => (\n <linearGradient key={item.id} id={`${id}-area-${s}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.topOpacity} />\n <stop offset=\"1\" stopColor={colorOf(item, s)} stopOpacity={chartRecipe.area.bottomOpacity} />\n </linearGradient>\n ))}\n </defs>\n {(tickOverride ?? g.ticks).map((tick) => <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.y(tick)} y2={g.y(tick)} />)}\n {showAxis || valueAxis ? (tickOverride ?? g.ticks).map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.y(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {isChartNumber(reference) ? (\n <line className=\"hjm-chart__reference\" x1={g.plot.left} x2={g.plot.right} y1={g.y(reference)} y2={g.y(reference)} strokeDasharray={chartRecipe.reference.dash.join(\" \")} />\n ) : null}\n {series.map((item, s) => {\n const color = colorOf(item, s), segments = splitSegments(g.plots[s]!);\n const lower = g.lower?.[s];\n return (\n <g key={item.id} data-series={item.id}>\n {/* Drop each observed edge vertically; never connect across the absent periods. */}\n {missingConnection === \"dotted\" && segments.slice(1).map((segment, index) => {\n const before = segments[index]!.at(-1)!, after = segment[0]!;\n return <g key={`gap${index}`}>{[before, after].map(point => <line key={point.index} x1={point.x} y1={point.y} x2={point.x} y2={g.plot.bottom} stroke={color} strokeWidth={chartRecipe.line.strokeWidth} strokeDasharray={chartRecipe.line.missingDash.join(\" \")} strokeLinecap=\"round\" opacity={chartRecipe.line.missingOpacity} />)}</g>;\n })}\n {/* A faint connector guides the eye only; nulls remain absent from values,\n focus navigation and area geometry. Never extrapolate beyond observations. */}\n {missingConnection === \"bridge\" && segments.slice(1).map((segment, index) => {\n const before = segments[index]!.at(-1)!, after = segment[0]!;\n return <line key={`bridge${index}`} data-missing-bridge=\"true\" x1={before.x} y1={before.y} x2={after.x} y2={after.y} stroke={color} strokeWidth={chartRecipe.line.strokeWidth} strokeDasharray={chartRecipe.line.missingDash.join(\" \")} strokeLinecap=\"round\" opacity={chartRecipe.line.missingOpacity} />;\n })}\n {showArea || stacked ? segments.map((segment, i) => (\n <MotionLinePath animate={animateChanges} points={segment} floor={g.plot.bottom} curve={curve} lower={lower ? segment.map((p) => lower[p.index]!) : undefined} key={`a${i}`} className=\"hjm-chart__area\" fill={`url(#${id}-area-${s})`} />\n )) : null}\n {segments.map((segment, i) => (\n <g key={`l${i}`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={scrubEmphasis && focus !== null ? \"var(--hjm-chart-axis-label)\" : color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />\n {scrubEmphasis && focus !== null && <g clipPath={`url(#${id}-scrub)`}><MotionLinePath animate={animateChanges} points={segment} curve={curve} className=\"hjm-chart__line\" stroke={color} strokeWidth={chartRecipe.line.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" /></g>}</g>\n ))}\n {/* An isolated observation between gaps has no line, so it gets a dot. */}\n {segments.filter((segment) => segment.length === 1).map((segment) => (\n <circle key={`d${segment[0]!.index}`} cx={segment[0]!.x} cy={segment[0]!.y} r={3} fill={color} />\n ))}\n </g>\n );\n })}\n {focus !== null && g.xs[focus] !== undefined ? (\n <g className=\"hjm-chart__focus\">\n <line className=\"hjm-chart__cursor\" x1={g.xs[focus]} x2={g.xs[focus]} y1={g.plot.top - 4} y2={g.plot.bottom} strokeWidth={chartRecipe.cursor.strokeWidth} strokeDasharray={scrubbing ? undefined : chartRecipe.cursor.dash.join(\" \")} />\n {series.map((item, s) => {\n const p = g.plots[s]![focus];\n if (!p) return null;\n const color = colorOf(item, s);\n return (\n <g key={item.id}>\n <circle cx={p.x} cy={p.y} r={chartRecipe.line.focusHaloRadius} fill={color} opacity={chartRecipe.line.focusHaloOpacity} />\n <circle className=\"hjm-chart__dot\" cx={p.x} cy={p.y} r={chartRecipe.line.pointRadius} fill={color} strokeWidth={2} />\n </g>\n );\n })}\n </g>\n ) : null}\n {marks && extremes ? ([[marks.max, extremes.high], [marks.min, extremes.low]] as const)\n .filter(([index], i) => i === 0 || index !== marks.max)\n .map(([index, label]) => {\n const p = g.plots[0]![index];\n if (!p) return null;\n // Place extrema on opposite sides even in a compressed, inverted rank domain.\n const dy = index === (invert ? marks.min : marks.max) ? -10 : 16;\n return (\n <text key={label} className=\"hjm-chart__label hjm-chart__extreme\" x={Math.min(g.plot.right - 4, Math.max(g.plot.left + 4, p.x))} y={Math.max(10, Math.min(height - 2, p.y + dy))}\n textAnchor={p.x < width * 0.2 ? \"start\" : p.x > width * 0.8 ? \"end\" : \"middle\"}>{`${label} ${formatValue(p.value)}`}</text>\n );\n }) : null}\n {showAxis && categories.length > 0 ? (\n <>\n <text className=\"hjm-chart__label\" x={g.xs[0]} y={height - 4} textAnchor=\"start\">{categories[0]}</text>\n {categories.length > 1 ? <text className=\"hjm-chart__label\" x={g.xs.at(-1)} y={height - 4} textAnchor=\"end\">{categories.at(-1)}</text> : null}\n </>\n ) : null}\n </svg>\n {scrubbing && focus !== null && g.xs[focus] !== undefined ? <CursorBubble x={g.xs[focus]!} width={width} text={cursorLabel?.(focus) ?? categories[focus]!} /> : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// BarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type BarChartProps = CartesianCommon & FocusProps & Readonly<{\n orientation?: ChartOrientation;\n layout?: ChartBarLayout;\n /** Value label at each bar end (the stack total for stacked bars). */\n showValues?: boolean;\n animateChanges?: boolean;\n}>;\n\n/** Rounds only the value end of a bar so stacks read as one column. */\nfunction barPath(bar: ChartBar, vertical: boolean, negative: boolean, round: boolean): string {\n const { x, y, width: w, height: h } = bar;\n const r = round ? Math.min(chartRecipe.bar.radius, vertical ? w / 2 : h / 2, vertical ? h : w) : 0;\n const n = (value: number) => Number(value.toFixed(2));\n if (r <= 0) return `M${n(x)},${n(y)}h${n(w)}v${n(h)}h${n(-w)}Z`;\n if (vertical && !negative) return `M${n(x)},${n(y + h)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h)}Z`;\n if (vertical) return `M${n(x)},${n(y)}H${n(x + w)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}Z`;\n if (!negative) return `M${n(x)},${n(y)}H${n(x + w - r)}Q${n(x + w)},${n(y)} ${n(x + w)},${n(y + r)}V${n(y + h - r)}Q${n(x + w)},${n(y + h)} ${n(x + w - r)},${n(y + h)}H${n(x)}Z`;\n return `M${n(x + w)},${n(y)}V${n(y + h)}H${n(x + r)}Q${n(x)},${n(y + h)} ${n(x)},${n(y + h - r)}V${n(y + r)}Q${n(x)},${n(y)} ${n(x + r)},${n(y)}Z`;\n}\n\nexport function BarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, height, width: fallbackWidth = 320, orientation = \"vertical\",\n layout = \"grouped\", domain, showAxis = false, showValues = false, animateChanges = false, className, layoutStyle, ...focusProps\n}: BarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const vertical = orientation === \"vertical\";\n // Horizontal bars grow with the category count so labels never overlap (same rule as Native).\n const resolvedHeight = height ?? (vertical ? chartRecipe.heights.regular : Math.max(chartRecipe.heights.compact, categories.length * 36 + spacing.lg));\n const available = useMemo(() => observedIndices(series), [series]);\n const { focus, scrubbing, set } = useFocus(focusProps, null, categories);\n const insets: ChartInsets = vertical\n ? (showAxis ? chartRecipe.insets.axis : { ...chartRecipe.insets.plot, bottom: spacing.lg })\n : { top: spacing.xs, right: showValues ? 48 : spacing.sm, bottom: spacing.xs, left: 72 };\n const g = useMemo(() => resolveBarGeometry({ categories, series, width, height: resolvedHeight, insets, orientation, layout, ...(domain ? { domain } : {}) }),\n [categories, series, width, resolvedHeight, insets, orientation, layout, domain]);\n const categoryKeys = useMemo(() => {\n const occurrences = new Map<string, number>();\n return categories.map(label => { const occurrence = occurrences.get(label) ?? 0; occurrences.set(label, occurrence + 1); return JSON.stringify([label, occurrence]); });\n }, [categories]);\n // Only the outermost segment of each stack (per sign) gets rounded corners.\n const outer = useMemo(() => {\n if (layout !== \"stacked\") return null;\n const stacks = stackValues(series), result = new Set<string>();\n categories.forEach((_, i) => {\n let positive = -1, negative = -1;\n series.forEach((item, s) => { const v = item.values[i]; if (!isChartNumber(v) || !stacks[s]![i]) return; if (v >= 0) positive = s; else negative = s; });\n if (positive >= 0) result.add(`${positive}-${i}`);\n if (negative >= 0) result.add(`${negative}-${i}`);\n });\n return result;\n }, [categories, series, layout]);\n const handlers = useScrub((x, y) => nearestChartIndex(g.centers, vertical ? x : y, available), (index) => set(index, true), () => set(focus, false));\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Escape\" && focus !== null) { event.preventDefault(); set(null, false); return; }\n const next = vertical\n ? keyStep(event, available, focus, [\"ArrowRight\", \"ArrowUp\"], [\"ArrowLeft\", \"ArrowDown\"])\n : keyStep(event, available, focus, [\"ArrowDown\", \"ArrowRight\"], [\"ArrowUp\", \"ArrowLeft\"]);\n if (next === undefined) return;\n event.preventDefault();\n set(next, false);\n };\n const totals = layout === \"stacked\" && showValues\n ? categories.map((_, i) => series.reduce((sum, item) => sum + (isChartNumber(item.values[i]) ? item.values[i]! : 0), 0))\n : null;\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--bar\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-orientation={orientation} data-scrubbing={scrubbing || undefined}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-orientation={vertical ? \"horizontal\" : \"vertical\"}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, categories.length - 1)}\n aria-valuenow={focus ?? 0}\n // Without a focus the slider has no value; its name stands in so nothing misleading is read.\n aria-valuetext={focus === null ? accessibilityLabel : valueText(categories, series, focus, formatValue, missingLabel)}\n style={{ blockSize: resolvedHeight }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={resolvedHeight} viewBox={`0 0 ${width} ${resolvedHeight}`} aria-hidden=\"true\" focusable=\"false\">\n {g.ticks.map((tick) => vertical\n ? <line key={tick} className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={g.value(tick)} y2={g.value(tick)} />\n : <line key={tick} className=\"hjm-chart__grid\" y1={g.plot.top} y2={g.plot.bottom} x1={g.value(tick)} x2={g.value(tick)} />)}\n {showAxis && vertical ? g.ticks.map((tick) => <text key={`t${tick}`} className=\"hjm-chart__label\" x={g.plot.left - 6} y={g.value(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatValue(tick)}</text>) : null}\n {g.bars.map((bar) => (\n <MotionBar\n key={`${series[bar.seriesIndex]!.id}-${categoryKeys[bar.index]}`}\n bar={bar} animate={animateChanges && g.bars.length <= 200} vertical={vertical} rounded={outer ? outer.has(`${bar.seriesIndex}-${bar.index}`) : true}\n className=\"hjm-chart__bar\"\n data-index={bar.index}\n fill={colorOf(series[bar.seriesIndex]!, bar.seriesIndex)}\n opacity={focus === null || focus === bar.index ? 1 : chartRecipe.bar.restOpacity}\n />\n ))}\n {showValues && layout === \"grouped\" ? g.bars.map((bar) => (\n <text key={`v${bar.seriesIndex}-${bar.index}`} className=\"hjm-chart__label hjm-chart__value\"\n x={vertical ? bar.x + bar.width / 2 : bar.x + bar.width + 4} y={vertical ? bar.y - 4 : bar.y + bar.height / 2}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(bar.value)}</text>\n )) : null}\n {totals ? totals.map((total, i) => {\n if (!available.includes(i)) return null;\n const end = g.value(Math.max(0, ...stackValues(series).map((row) => row[i]?.[1] ?? 0)));\n return (\n <text key={`total${i}`} className=\"hjm-chart__label hjm-chart__value\" x={vertical ? g.centers[i] : end + 4} y={vertical ? end - 4 : g.centers[i]}\n dominantBaseline={vertical ? undefined : \"middle\"} textAnchor={vertical ? \"middle\" : \"start\"}>{formatValue(total)}</text>\n );\n }) : null}\n {categories.map((category, i) => vertical\n ? (categories.length <= 12 || i % Math.ceil(categories.length / 12) === 0)\n ? <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.centers[i]} y={resolvedHeight - 4} textAnchor=\"middle\">{category}</text>\n : null\n : <text key={`c${i}`} className=\"hjm-chart__label\" data-focused={focus === i || undefined} x={g.plot.left - 8} y={g.centers[i]} dominantBaseline=\"middle\" textAnchor=\"end\">{category}</text>)}\n </svg>\n {scrubbing && focus !== null && vertical && g.centers[focus] !== undefined\n ? <CursorBubble x={g.centers[focus]!} width={width} text={valueText(categories, series, focus, formatValue, missingLabel)} />\n : null}\n </div>\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ChartLegend\n// ---------------------------------------------------------------------------------------------\n\nexport type ChartLegendItem = Readonly<{ id: string; label: string; color: string; value?: string }>;\nexport type ChartLegendProps = ChartRootProps & Readonly<{\n items: readonly ChartLegendItem[]; exclusion?: Readonly<{ excludedIds: readonly string[]; onToggle: (id: string) => void; label: (item: ChartLegendItem, included: boolean) => string }>;\n selectedId?: string | null;\n /** When given, rows are toggle buttons; pressing the selected row clears the selection. */\n onSelect?: (id: string | null) => void;\n}>;\n\n/** Swatch + label (+ value). Color is never the only encoding: every row carries its label. */\nexport function ChartLegend({ items, selectedId, onSelect, exclusion, className, layoutStyle }: ChartLegendProps) {\n return (\n <ul className={classNames(\"hjm-chart-legend\", className)} style={{ ...chromeStyle, ...layoutStyle }} data-interactive={onSelect ? \"\" : undefined}>\n {items.map((item) => {\n const content = (\n <>\n <span className=\"hjm-chart-legend__swatch\" aria-hidden=\"true\" style={{ background: item.color }} />\n <span className=\"hjm-chart-legend__label\">{item.label}</span>\n {item.value !== undefined ? <span className=\"hjm-chart-legend__value\">{item.value}</span> : null}\n </>\n );\n const dimmed = selectedId != null && selectedId !== item.id;\n return (\n <li key={item.id} className=\"hjm-chart-legend__item\" data-dimmed={dimmed || undefined}>\n {exclusion ? <input type=\"checkbox\" checked={!exclusion.excludedIds.includes(item.id)} aria-label={exclusion.label(item, !exclusion.excludedIds.includes(item.id))} onChange={() => exclusion.onToggle(item.id)} /> : null}\n {onSelect ? (\n <button type=\"button\" className=\"hjm-chart-legend__button\" aria-pressed={selectedId === item.id} onClick={() => onSelect(selectedId === item.id ? null : item.id)}>\n {content}\n </button>\n ) : content}\n </li>\n );\n })}\n </ul>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// PieChart\n// ---------------------------------------------------------------------------------------------\n\nexport type PieDatum = Readonly<{ id: string; label: string; value: number | null; color?: string }>;\nexport type PieChartProps = ChartRootProps & Readonly<{\n data: readonly PieDatum[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n donut?: boolean;\n size?: number;\n /** Rendered in the donut hole (ignored for a full pie). */\n centerContent?: ReactNode | ((summary: PieVisibilitySummary) => ReactNode);\n /** Controlled denominator filtering, independent of selectedId emphasis. */\n exclusion?: Readonly<{ excludedIds: readonly string[]; onExcludedIdsChange: (ids: readonly string[]) => void; label: (datum: PieDatum, included: boolean) => string }>;\n selectedId?: string | null;\n defaultSelectedId?: string | null;\n onSelect?: (id: string | null) => void;\n showLegend?: boolean;\n}>;\n\nexport function PieChart({\n data, accessibilityLabel, formatValue, donut = true, size = 180, centerContent, selectedId, defaultSelectedId = null, onSelect,\n showLegend = true, exclusion, className, layoutStyle,\n}: PieChartProps) {\n const labelTheme = useOptionalHjmTheme();\n const labelMetrics = labelTheme?.designProfile?.tokens.typography[chrome.labelVariant] ?? typography[chrome.labelVariant];\n const labelScale = labelTheme?.environment.textScale ?? 1;\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [own, setOwn] = useState<string | null>(defaultSelectedId);\n const candidate = selectedId !== undefined ? selectedId : own;\n const selected = candidate !== null && exclusion?.excludedIds.includes(candidate) ? null : candidate;\n const interactive = onSelect !== undefined || selectedId !== undefined;\n const select = (next: string | null) => { if (selectedId === undefined) setOwn(next); onSelect?.(next); };\n const toggle = (next: string) => select(selected === next ? null : next);\n // The selected slice moves outward by this much, so it is reserved inside the box.\n const lift = 4;\n const radius = size / 2 - lift - 2, inner = donut ? radius * chartRecipe.pie.donutRatio : 0;\n const visibility = resolvePieVisibility(data, exclusion?.excludedIds);\n const slices = resolvePieGeometry(visibility.values, { cx: size / 2, cy: size / 2, radius, innerRadius: inner });\n const center = typeof centerContent === \"function\" ? centerContent(visibility) : centerContent;\n const legendExclusion = exclusion ? { excludedIds: exclusion.excludedIds, label: (item: ChartLegendItem, included: boolean) => exclusion.label(data.find(datum => datum.id === item.id)!, included),\n onToggle: (id: string) => exclusion.onExcludedIdsChange(exclusion.excludedIds.includes(id) ? exclusion.excludedIds.filter(key => key !== id) : [...exclusion.excludedIds, id]) } : undefined;\n const colorAt = (index: number) => colorOf(data[index]!, index);\n const percentOf = (index: number) => slices.find((slice) => slice.index === index)?.percent;\n const percentText = (index: number) => { const p = percentOf(index); return p === undefined ? \"\" : `${Math.round(p)}%`; };\n const rowValue = (d: PieDatum, i: number) => isChartNumber(d.value) ? `${formatValue(d.value)}${percentOf(i) !== undefined ? ` · ${percentText(i)}` : \"\"}` : \"—\";\n const summary = data.map((d, i) => exclusion?.excludedIds.includes(d.id) ? \"\" : `${d.label} ${isChartNumber(d.value) ? formatValue(d.value) : \"\"}${percentOf(i) !== undefined ? ` (${percentText(i)})` : \"\"}`.trim()).filter(Boolean).join(\", \");\n // With a legend, its rows are the keyboard path; slices stay pointer targets so each item has\n // one tab stop. Without a legend the slices themselves become the buttons.\n const sliceButtons = interactive && !showLegend;\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--pie\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__pie\" role={sliceButtons ? \"group\" : \"img\"} aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden={sliceButtons ? undefined : true} focusable=\"false\">\n {slices.map((slice) => {\n const datum = data[slice.index]!, isSelected = selected === datum.id;\n const mid = (slice.startAngle + slice.endAngle) / 2;\n return (\n <path\n key={datum.id}\n className=\"hjm-chart__slice\"\n data-id={datum.id}\n data-selected={isSelected || undefined}\n d={slice.path}\n fill={colorAt(slice.index)}\n opacity={selected !== null && !isSelected ? chartRecipe.bar.restOpacity : 1}\n transform={isSelected ? `translate(${(Math.sin(mid) * lift).toFixed(2)} ${(-Math.cos(mid) * lift).toFixed(2)})` : undefined}\n {...(interactive ? { onClick: () => toggle(datum.id) } : {})}\n {...(sliceButtons ? {\n role: \"button\",\n tabIndex: 0,\n \"aria-pressed\": isSelected,\n \"aria-label\": `${datum.label} ${rowValue(datum, slice.index)}`,\n onKeyDown: (event: KeyboardEvent<SVGPathElement>) => {\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n toggle(datum.id);\n },\n } : {})}\n />\n );\n })}\n {!donut ? slices.filter((slice) => slice.percent >= chartRecipe.pie.minLabelPercent * 2).map((slice) => {\n const label = percentText(slice.index);\n const labelWidth = label.length * labelMetrics.fontSize * labelScale + spacing.xxs * 2;\n const labelHeight = labelMetrics.lineHeight * labelScale + spacing.xxs;\n return <g key={`t${slice.index}`} pointerEvents=\"none\">\n <rect x={slice.centroid.x - labelWidth / 2} y={slice.centroid.y - labelHeight / 2} width={labelWidth} height={labelHeight} style={{ rx: \"var(--hjm-radius-sm)\", fill: \"var(--hjm-chart-label-surface)\" }} />\n <text className=\"hjm-chart__slice-label\" x={slice.centroid.x} y={slice.centroid.y} dominantBaseline=\"middle\" textAnchor=\"middle\">{label}</text>\n </g>;\n }) : null}\n </svg>\n {donut && center != null ? <div className=\"hjm-chart__pie-center\">{center}</div> : null}\n </div>\n {showLegend ? (\n <ChartLegend\n items={data.map((d, i) => ({ id: d.id, label: d.label, color: colorAt(i), value: rowValue(d, i) }))}\n selectedId={selected}\n {...(legendExclusion ? { exclusion: legendExclusion } : {})}\n {...(interactive ? { onSelect: select } : {})}\n />\n ) : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{summary}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// RadarChart\n// ---------------------------------------------------------------------------------------------\n\nexport type RadarChartProps = ChartRootProps & Readonly<{\n /** At least three axes. */\n categories: readonly string[];\n series: readonly ChartSeries[];\n accessibilityLabel: string;\n formatValue: (value: number) => string;\n missingLabel: string;\n /** One shared domain for every axis; defaults to 0..max. */\n domain?: readonly [number, number];\n levels?: number;\n size?: number;\n /** Defaults to on for more than one series. */\n showLegend?: boolean;\n}>;\n\nexport function RadarChart({\n categories, series, accessibilityLabel, formatValue, missingLabel, domain, levels = chartRecipe.radar.levels, size = 240, showLegend,\n className, layoutStyle,\n}: RadarChartProps) {\n validateChartSeries(categories, series);\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n // Room around the polygon for axis labels (same reservation as Native).\n const pad = 44, center = size / 2;\n const g = resolveRadarGeometry({ categories, series, cx: center, cy: center, radius: center - pad, levels, ...(domain ? { domain } : {}) });\n return (\n <div className={classNames(\"hjm-chart\", \"hjm-chart--radar\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div className=\"hjm-chart__radar\" role=\"img\" aria-label={accessibilityLabel} aria-describedby={descriptionId} style={{ inlineSize: size, blockSize: size }}>\n <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`} aria-hidden=\"true\" focusable=\"false\">\n {g.rings.map((ring, i) => <path key={i} className=\"hjm-chart__grid\" d={ring} fill=\"none\" />)}\n {g.axes.map((axis) => <line key={axis.index} className=\"hjm-chart__grid\" x1={center} y1={center} x2={axis.end.x} y2={axis.end.y} />)}\n {g.polygons.map((polygon) => {\n const color = colorOf(series[polygon.seriesIndex]!, polygon.seriesIndex);\n return (\n <g key={polygon.seriesIndex} data-series={series[polygon.seriesIndex]!.id}>\n <path className=\"hjm-chart__polygon\" d={polygon.path} fill={color} fillOpacity={chartRecipe.radar.fillOpacity} stroke={color} strokeWidth={chartRecipe.radar.strokeWidth} strokeLinejoin=\"round\" />\n {polygon.points.map((p) => p.value !== null ? <circle key={p.index} cx={p.x} cy={p.y} r={3} fill={color} /> : null)}\n </g>\n );\n })}\n {g.axes.map((axis) => {\n const first = series[0]?.values[axis.index];\n return (\n <g key={`l${axis.index}`}>\n <text className=\"hjm-chart__label hjm-chart__axis-name\" x={axis.labelAt.x} y={axis.labelAt.y} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{axis.label}</text>\n {series.length === 1 ? (\n <text className=\"hjm-chart__label\" x={axis.labelAt.x} y={axis.labelAt.y + 14} dominantBaseline=\"middle\" textAnchor={axis.anchor}>{isChartNumber(first) ? formatValue(first) : missingLabel}</text>\n ) : null}\n </g>\n );\n })}\n </svg>\n </div>\n {showLegend ?? series.length > 1 ? <ChartLegend items={series.map((item, s) => ({ id: item.id, label: item.label, color: colorOf(item, s) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{describeChart(categories, series, formatValue, missingLabel)}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// ScatterChart\n// ---------------------------------------------------------------------------------------------\n\nexport type ScatterChartProps = ChartRootProps & Readonly<{\n points: readonly ScatterDatum[];\n accessibilityLabel: string;\n xLabel: string;\n yLabel: string;\n formatX: (value: number) => string;\n formatY: (value: number) => string;\n height?: number;\n /** Width used on the server and before the first ResizeObserver measurement. */\n width?: number;\n /** Legend labels by `seriesIndex`; the legend shows for two or more. */\n seriesLabels?: readonly string[];\n focusId?: string | null;\n onFocusChange?: (id: string | null) => void;\n}>;\n\nexport function ScatterChart({\n points, accessibilityLabel, xLabel, yLabel, formatX, formatY, height = chartRecipe.heights.tall, width: fallbackWidth = 320,\n seriesLabels, focusId, onFocusChange, className, layoutStyle,\n}: ScatterChartProps) {\n const colorOf = useSeriesColor(), id = useSvgId(), descriptionId = `${id}-description`;\n const [measure, width] = useMeasuredWidth(fallbackWidth);\n const [own, setOwn] = useState<string | null>(null);\n const focused = focusId !== undefined ? focusId : own;\n const choose = (next: string | null) => { if (focusId === undefined) setOwn(next); onFocusChange?.(next); };\n const g = useMemo(() => resolveScatterGeometry({ points, width, height }), [points, width, height]);\n // Keyboard order follows the x axis so arrows read left to right.\n const ordered = useMemo(() => [...points].sort((a, b) => a.x - b.x || a.y - b.y), [points]);\n const handlers = useScrub((x, y) => nearestScatterPoint(g.points, x, y), (index) => { if (index !== null) choose(points[index]!.id); }, () => undefined);\n const focusPoint = g.points.find((p) => p.id === focused);\n const sx = scaleLinear(g.xDomain, [g.plot.left, g.plot.right]), sy = scaleLinear(g.yDomain, [g.plot.bottom, g.plot.top]);\n const describe = (p: ScatterDatum) => `${p.label}, ${xLabel} ${formatX(p.x)}, ${yLabel} ${formatY(p.y)}`;\n const position = ordered.findIndex((p) => p.id === focused);\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n let next: ScatterDatum | undefined;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") next = ordered[Math.min(ordered.length - 1, position + 1)];\n else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") next = ordered[position < 0 ? ordered.length - 1 : Math.max(0, position - 1)];\n else if (event.key === \"Home\") next = ordered[0];\n else if (event.key === \"End\") next = ordered.at(-1);\n else if (event.key === \"Escape\" && focused !== null) { event.preventDefault(); choose(null); return; }\n else return;\n event.preventDefault();\n if (next) choose(next.id);\n };\n return (\n <div ref={measure} className={classNames(\"hjm-chart\", \"hjm-chart--scatter\", className)} style={{ ...chromeStyle, ...layoutStyle }}>\n <div\n className=\"hjm-chart__plot\"\n role=\"slider\"\n tabIndex={0}\n aria-label={accessibilityLabel}\n aria-describedby={descriptionId}\n aria-valuemin={0}\n aria-valuemax={Math.max(0, points.length - 1)}\n aria-valuenow={Math.max(0, position)}\n aria-valuetext={focusPoint ? describe(focusPoint) : accessibilityLabel}\n style={{ blockSize: height }}\n onKeyDown={onKeyDown}\n {...handlers}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\" focusable=\"false\">\n {g.yTicks.map((tick) => (\n <g key={`y${tick}`}>\n <line className=\"hjm-chart__grid\" x1={g.plot.left} x2={g.plot.right} y1={sy(tick)} y2={sy(tick)} />\n <text className=\"hjm-chart__label\" x={g.plot.left - 6} y={sy(tick)} dominantBaseline=\"middle\" textAnchor=\"end\">{formatY(tick)}</text>\n </g>\n ))}\n {g.xTicks.map((tick) => <text key={`x${tick}`} className=\"hjm-chart__label\" x={sx(tick)} y={height - 4} textAnchor=\"middle\">{formatX(tick)}</text>)}\n {g.points.map((p) => {\n const isFocused = p.id === focused;\n return (\n <circle key={p.id} className={classNames(\"hjm-chart__point\", isFocused && \"hjm-chart__dot\")} data-id={p.id} cx={p.px} cy={p.py}\n r={isFocused ? chartRecipe.scatter.focusRadius : chartRecipe.scatter.radius} fill={colorOf({}, p.seriesIndex ?? 0)}\n opacity={focused !== null && !isFocused ? 0.45 : 0.9} strokeWidth={isFocused ? 2 : 0} />\n );\n })}\n </svg>\n {focusPoint ? <CursorBubble x={focusPoint.px} width={width} text={`${focusPoint.label} · ${formatX(focusPoint.x)} / ${formatY(focusPoint.y)}`} /> : null}\n </div>\n <div className=\"hjm-chart__axis-titles\" aria-hidden=\"true\"><span>{yLabel} ↑</span><span>{xLabel} →</span></div>\n {seriesLabels && seriesLabels.length > 1 ? <ChartLegend items={seriesLabels.map((label, i) => ({ id: String(i), label, color: colorOf({}, i) }))} /> : null}\n <p id={descriptionId} className=\"hjm-visually-hidden\">{points.map(describe).join(\". \")}</p>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------------------------\n// Sparkline\n// ---------------------------------------------------------------------------------------------\n\nexport type SparklineProps = ChartRootProps & Readonly<{\n values: readonly (number | null)[];\n color?: string;\n invert?: boolean;\n domain?: readonly [number, number];\n width?: number;\n height?: number;\n /** Omit when the adjacent text already states the value; the sparkline is then decorative. */\n accessibilityLabel?: string;\n}>;\n\nexport function Sparkline({\n values, color, invert = false, domain, width = chartRecipe.sparkline.width, height = chartRecipe.sparkline.height, accessibilityLabel,\n className, layoutStyle,\n}: SparklineProps) {\n const colorOf = useSeriesColor(), id = useSvgId();\n const stroke = color ?? colorOf({}, 0);\n const pad = chartRecipe.sparkline.padding;\n const g = resolveLineGeometry({\n categories: values.map((_, i) => String(i)), series: [{ id: \"s\", label: \"s\", values }], width, height,\n insets: { top: pad, right: pad, bottom: pad, left: pad }, invert, ...(domain ? { domain } : {}),\n });\n const segments = splitSegments(g.plots[0]!);\n const labelled = accessibilityLabel !== undefined && accessibilityLabel.trim().length > 0;\n return (\n <svg\n className={classNames(\"hjm-sparkline\", className)}\n style={layoutStyle}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n focusable=\"false\"\n {...(labelled ? { role: \"img\", \"aria-label\": accessibilityLabel } : { \"aria-hidden\": true })}\n >\n <defs>\n <linearGradient id={`${id}-spark`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0\" stopColor={stroke} stopOpacity={0.28} />\n <stop offset=\"1\" stopColor={stroke} stopOpacity={0} />\n </linearGradient>\n </defs>\n {segments.map((segment, i) => <path key={`a${i}`} d={areaPath(segment, height)} fill={`url(#${id}-spark)`} />)}\n {segments.map((segment, i) => <path key={`l${i}`} className=\"hjm-chart__line\" d={linePath(segment)} stroke={stroke} strokeWidth={chartRecipe.sparkline.strokeWidth} fill=\"none\" strokeLinejoin=\"round\" strokeLinecap=\"round\" />)}\n </svg>\n );\n}\n"]}
|
package/dist/evidence.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export type ReactRendererEvidenceManifest = Readonly<{
|
|
|
34
34
|
export declare const reactRendererEvidence: {
|
|
35
35
|
readonly schemaVersion: 2;
|
|
36
36
|
readonly packageName: "@hjmds/react";
|
|
37
|
-
readonly packageVersion: "1.
|
|
37
|
+
readonly packageVersion: "1.39.0";
|
|
38
38
|
readonly surface: "web";
|
|
39
39
|
readonly components: Readonly<{
|
|
40
40
|
/** Canonical component id from the design-contracts catalog. */
|
package/dist/evidence.js
CHANGED
|
@@ -135,7 +135,7 @@ const activeWebEntries = componentCatalog.filter((entry) => {
|
|
|
135
135
|
export const reactRendererEvidence = {
|
|
136
136
|
schemaVersion: reactRendererEvidenceSchemaVersion,
|
|
137
137
|
packageName: "@hjmds/react",
|
|
138
|
-
packageVersion: "1.
|
|
138
|
+
packageVersion: "1.39.0",
|
|
139
139
|
surface: "web",
|
|
140
140
|
components: activeWebEntries.map(derivedClaim),
|
|
141
141
|
};
|
package/dist/evidence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ShowcaseScenarioId } from \"@hjmds/design-contracts/showcase\";\nimport { getRequiredShowcaseEvidence } from \"@hjmds/design-contracts/showcase\";\nimport { componentCatalog, componentIdOf, getComponentSurfaceStatus, type ComponentCatalogEntry } from \"@hjmds/design-contracts/catalog\";\nimport { publicExportEntries } from \"./public-exports.generated.js\";\n\nexport const reactRendererEvidenceSchemaVersion = 2 as const;\n\nexport type ReactRendererEvidenceScenario = Exclude<ShowcaseScenarioId, \"contract\" | \"native-actions\">;\n\nexport type ReactRendererEvidenceComponent = Readonly<{\n /** Canonical component id from the design-contracts catalog. */\n componentId: string;\n /** Public symbols that implement this contract on the declared subpath. */\n exportNames: readonly string[];\n /** Granular @hjmds/react export used by consumers. */\n subpath: `./${string}`;\n /** Scenarios supported by automated first-party renderer evidence. */\n scenarios: readonly ReactRendererEvidenceScenario[];\n /** Repository-local executable proof for every claimed scenario. */\n proofs: readonly Readonly<{\n scenarios: readonly ReactRendererEvidenceScenario[];\n file: `test/${string}.test.tsx`;\n caseId: string;\n }>[];\n}>;\n\nexport type ReactRendererEvidenceManifest = Readonly<{\n schemaVersion: typeof reactRendererEvidenceSchemaVersion;\n packageName: \"@hjmds/react\";\n packageVersion: string;\n surface: \"web\";\n components: readonly ReactRendererEvidenceComponent[];\n}>;\n\nconst defaultProofFile = \"test/default-render.ssr.test.tsx\" as const;\nconst matrixProofFile = \"test/scenario-matrix.browser.test.tsx\" as const;\nconst stableCoreProofFile = \"test/stable-core.browser.test.tsx\" as const;\n\ntype ProofFile = `test/${string}.test.tsx`;\n\n/**\n * Scenarios a component does not pass yet. Each entry is promotion debt that\n * the generated evidence projection reports; remove it when the component is\n * fixed and the matrix case passes. Stable surfaces cannot carry a gap\n * (scripts/check-workspace-sync.mjs).\n */\nconst webScenarioGaps: Readonly<Record<string, readonly ReactRendererEvidenceScenario[]>> = {};\n\n/**\n * Proofs that live outside the shared default/matrix files: keyboard behavior in a dedicated browser test,\n * long copy proven inside a portal by the component's own test, or a whole matrix run in a component file.\n * Everything else about a claim derives from the catalog row (2026-10-18 registration input).\n */\ntype ClaimExtras = Readonly<{\n /** Extra proofs; their scenarios are removed from the shared matrix proof. */\n proofs?: readonly Readonly<{ scenarios: readonly ReactRendererEvidenceScenario[]; file: ProofFile }>[];\n /** Hooks or helpers published beside the component symbols on the same subpath. */\n exportNames?: readonly string[];\n}>;\n\nconst keyboard = (file: ProofFile = stableCoreProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\"], file }] });\nconst keyboardAndLongCopy = (file: ProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\", \"long-copy\"], file }] });\n\nconst claimExtras: Readonly<Record<string, ClaimExtras>> = {\n \"time-picker\": keyboard(\"test/time-picker.browser.test.tsx\"),\n \"design-system-provider\": { exportNames: [\"useHjmTheme\"] },\n layout: keyboard(),\n link: keyboard(),\n field: keyboard(),\n \"search-field\": keyboard(),\n \"password-field\": keyboard(),\n \"otp-field\": keyboard(),\n \"number-field\": keyboard(),\n slider: keyboard(),\n form: keyboard(\"test/form.keyboard.browser.test.tsx\"),\n \"date-picker\": keyboard(),\n calendar: keyboard(\"test/calendar.browser.test.tsx\"),\n \"file-picker\": keyboard(\"test/file-picker.keyboard.browser.test.tsx\"),\n checkbox: keyboard(),\n \"checkbox-group\": keyboard(),\n \"radio-group\": keyboard(),\n switch: keyboard(),\n \"segmented-control\": keyboard(),\n chip: keyboard(),\n tabs: keyboard(\"test/tabs.keyboard.browser.test.tsx\"),\n breadcrumb: keyboard(\"test/page-navigation.browser.test.tsx\"),\n pagination: keyboard(\"test/pagination.keyboard.browser.test.tsx\"),\n popover: keyboardAndLongCopy(\"test/popover.browser.test.tsx\"),\n \"side-panel\": keyboardAndLongCopy(\"test/side-panel.browser.test.tsx\"),\n splitter: keyboard(\"test/splitter.browser.test.tsx\"),\n tour: keyboardAndLongCopy(\"test/tour.browser.test.tsx\"),\n tree: keyboard(\"test/tree.browser.test.tsx\"),\n \"transfer-list\": keyboard(\"test/transfer-list.browser.test.tsx\"),\n mentions: keyboard(\"test/mentions.browser.test.tsx\"),\n \"command-palette\": keyboardAndLongCopy(\"test/command-palette.browser.test.tsx\"),\n agreement: keyboard(\"test/agreement.keyboard.browser.test.tsx\"),\n \"toggle-group\": keyboard(),\n \"tags-input\": keyboard(),\n \"skip-nav\": keyboardAndLongCopy(\"test/skip-nav.browser.test.tsx\"),\n sidebar: keyboard(\"test/sidebar.browser.test.tsx\"),\n \"date-range-picker\": keyboard(\"test/date-range.keyboard.browser.test.tsx\"),\n \"auth-provider-button\": keyboard(),\n \"data-table\": keyboard(\"test/data-table.keyboard.browser.test.tsx\"),\n collapsible: keyboard(\"test/collapsible.keyboard.browser.test.tsx\"),\n \"context-menu\": keyboardAndLongCopy(\"test/context-menu.interactions.browser.test.tsx\"),\n menubar: keyboard(\"test/menubar.keyboard.browser.test.tsx\"),\n anchor: keyboard(\"test/anchor.browser.test.tsx\"),\n \"bottom-navigation\": keyboard(\"test/bottom-navigation.keyboard.browser.test.tsx\"),\n \"load-more\": keyboard(\"test/load-more.interactions.browser.test.tsx\"),\n carousel: keyboard(\"test/carousel.browser.test.tsx\"),\n \"floating-action-button\": keyboard(),\n accordion: keyboard(\"test/accordion.keyboard.browser.test.tsx\"),\n \"upload-item\": keyboard(\"test/upload-item.browser.test.tsx\"),\n // ThinkingOrb runs its whole environment matrix in its own file (canvas timing), not in scenario-matrix.\n \"thinking-orb\": { proofs: [{ scenarios: [\"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"], file: \"test/thinking-orb.browser.test.tsx\" }] },\n \"color-picker\": keyboard(\"test/web-additions.browser.test.tsx\"),\n // SSR proves semantics but cannot catch the close-only row seen in BurnTok.\n // Keep real geometry evidence attached without promoting catalog maturity.\n toast: {\n exportNames: [\"useToast\"],\n proofs: [\n { scenarios: [\"keyboard\"], file: stableCoreProofFile },\n { scenarios: [\"dark\", \"long-copy\", \"large-text\", \"rtl\"], file: \"test/toast-layout.browser.test.tsx\" },\n ],\n },\n select: keyboard(),\n combobox: keyboard(),\n dialog: keyboard(\"test/advanced.browser.test.tsx\"),\n \"alert-dialog\": keyboardAndLongCopy(\"test/alert-dialog.keyboard.browser.test.tsx\"),\n sheet: keyboardAndLongCopy(\"test/sheet-layout.browser.test.tsx\"),\n tooltip: keyboard(\"test/tooltip.browser.test.tsx\"),\n menu: keyboardAndLongCopy(\"test/menu.keyboard.browser.test.tsx\"),\n};\n\nconst exportEntries: Readonly<Record<string, readonly `./${string}`[] | undefined>> = publicExportEntries;\n\n/**\n * One claim per active Web row of the catalog. The subpath is the symbol's canonical granular entry, the export\n * names are the row's own symbol plus the companions published on that entry, and the scenarios are the row's\n * required Web evidence minus recorded gaps. Keyboard is never implied: it comes only from a dedicated proof.\n */\nfunction derivedClaim(entry: ComponentCatalogEntry): ReactRendererEvidenceComponent {\n const componentId = componentIdOf(entry);\n const extras = claimExtras[componentId] ?? {};\n const symbols = entry.name === \"DesignSystemProvider\" ? [\"HjmProvider\"] : [entry.name, ...(entry.companions ?? [])];\n // A row whose own name is not a symbol (Chart) claims through its first published companion.\n const subpath = symbols.map((symbol) => exportEntries[symbol]?.[0]).find((entry) => entry !== undefined);\n if (!subpath) throw new Error(`${entry.name} has no granular @hjmds/react export to claim evidence on`);\n const exportNames = [\n ...symbols.filter((symbol) => exportEntries[symbol]?.includes(subpath)),\n ...(extras.exportNames ?? []),\n ];\n const required = getRequiredShowcaseEvidence(entry).find((evidence) => evidence.surface === \"web\")?.scenarios ?? [];\n const gaps = webScenarioGaps[componentId] ?? [];\n const extraProofs = extras.proofs ?? [];\n const proven = new Set(extraProofs.flatMap((proof) => proof.scenarios));\n const matrix = required.filter((scenario): scenario is ReactRendererEvidenceScenario =>\n scenario !== \"default\" && scenario !== \"keyboard\" && scenario !== \"native-actions\" && scenario !== \"contract\"\n && !gaps.includes(scenario as ReactRendererEvidenceScenario) && !proven.has(scenario as ReactRendererEvidenceScenario));\n const proofs = [\n { scenarios: [\"default\" as const], file: defaultProofFile, caseId: componentId },\n ...(matrix.length === 0 ? [] : [{ scenarios: matrix, file: matrixProofFile, caseId: componentId }]),\n ...extraProofs.map((proof) => ({ ...proof, caseId: componentId })),\n ];\n return {\n componentId,\n exportNames,\n subpath,\n scenarios: proofs.flatMap((proof) => proof.scenarios),\n proofs,\n };\n}\n\nconst activeWebEntries: readonly ComponentCatalogEntry[] = componentCatalog.filter((entry) => {\n const status = getComponentSurfaceStatus(entry, \"web\");\n return status === \"stable\" || status === \"beta\";\n});\n\n/**\n * First-party Web renderer claims. Scenario axes remain fail-closed: the\n * default scenario is an SSR render, the environment and accessibility\n * scenarios are computed-style assertions in scenario-matrix.browser.\n * Keyboard and cross-platform parity remain fail-closed until dedicated\n * interaction or paired-renderer proofs are mapped one-to-one.\n */\nexport const reactRendererEvidence = {\n schemaVersion: reactRendererEvidenceSchemaVersion,\n packageName: \"@hjmds/react\",\n packageVersion: \"1.38.0\",\n surface: \"web\",\n components: activeWebEntries.map(derivedClaim),\n} as const satisfies ReactRendererEvidenceManifest;\n"]}
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ShowcaseScenarioId } from \"@hjmds/design-contracts/showcase\";\nimport { getRequiredShowcaseEvidence } from \"@hjmds/design-contracts/showcase\";\nimport { componentCatalog, componentIdOf, getComponentSurfaceStatus, type ComponentCatalogEntry } from \"@hjmds/design-contracts/catalog\";\nimport { publicExportEntries } from \"./public-exports.generated.js\";\n\nexport const reactRendererEvidenceSchemaVersion = 2 as const;\n\nexport type ReactRendererEvidenceScenario = Exclude<ShowcaseScenarioId, \"contract\" | \"native-actions\">;\n\nexport type ReactRendererEvidenceComponent = Readonly<{\n /** Canonical component id from the design-contracts catalog. */\n componentId: string;\n /** Public symbols that implement this contract on the declared subpath. */\n exportNames: readonly string[];\n /** Granular @hjmds/react export used by consumers. */\n subpath: `./${string}`;\n /** Scenarios supported by automated first-party renderer evidence. */\n scenarios: readonly ReactRendererEvidenceScenario[];\n /** Repository-local executable proof for every claimed scenario. */\n proofs: readonly Readonly<{\n scenarios: readonly ReactRendererEvidenceScenario[];\n file: `test/${string}.test.tsx`;\n caseId: string;\n }>[];\n}>;\n\nexport type ReactRendererEvidenceManifest = Readonly<{\n schemaVersion: typeof reactRendererEvidenceSchemaVersion;\n packageName: \"@hjmds/react\";\n packageVersion: string;\n surface: \"web\";\n components: readonly ReactRendererEvidenceComponent[];\n}>;\n\nconst defaultProofFile = \"test/default-render.ssr.test.tsx\" as const;\nconst matrixProofFile = \"test/scenario-matrix.browser.test.tsx\" as const;\nconst stableCoreProofFile = \"test/stable-core.browser.test.tsx\" as const;\n\ntype ProofFile = `test/${string}.test.tsx`;\n\n/**\n * Scenarios a component does not pass yet. Each entry is promotion debt that\n * the generated evidence projection reports; remove it when the component is\n * fixed and the matrix case passes. Stable surfaces cannot carry a gap\n * (scripts/check-workspace-sync.mjs).\n */\nconst webScenarioGaps: Readonly<Record<string, readonly ReactRendererEvidenceScenario[]>> = {};\n\n/**\n * Proofs that live outside the shared default/matrix files: keyboard behavior in a dedicated browser test,\n * long copy proven inside a portal by the component's own test, or a whole matrix run in a component file.\n * Everything else about a claim derives from the catalog row (2026-10-18 registration input).\n */\ntype ClaimExtras = Readonly<{\n /** Extra proofs; their scenarios are removed from the shared matrix proof. */\n proofs?: readonly Readonly<{ scenarios: readonly ReactRendererEvidenceScenario[]; file: ProofFile }>[];\n /** Hooks or helpers published beside the component symbols on the same subpath. */\n exportNames?: readonly string[];\n}>;\n\nconst keyboard = (file: ProofFile = stableCoreProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\"], file }] });\nconst keyboardAndLongCopy = (file: ProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\", \"long-copy\"], file }] });\n\nconst claimExtras: Readonly<Record<string, ClaimExtras>> = {\n \"time-picker\": keyboard(\"test/time-picker.browser.test.tsx\"),\n \"design-system-provider\": { exportNames: [\"useHjmTheme\"] },\n layout: keyboard(),\n link: keyboard(),\n field: keyboard(),\n \"search-field\": keyboard(),\n \"password-field\": keyboard(),\n \"otp-field\": keyboard(),\n \"number-field\": keyboard(),\n slider: keyboard(),\n form: keyboard(\"test/form.keyboard.browser.test.tsx\"),\n \"date-picker\": keyboard(),\n calendar: keyboard(\"test/calendar.browser.test.tsx\"),\n \"file-picker\": keyboard(\"test/file-picker.keyboard.browser.test.tsx\"),\n checkbox: keyboard(),\n \"checkbox-group\": keyboard(),\n \"radio-group\": keyboard(),\n switch: keyboard(),\n \"segmented-control\": keyboard(),\n chip: keyboard(),\n tabs: keyboard(\"test/tabs.keyboard.browser.test.tsx\"),\n breadcrumb: keyboard(\"test/page-navigation.browser.test.tsx\"),\n pagination: keyboard(\"test/pagination.keyboard.browser.test.tsx\"),\n popover: keyboardAndLongCopy(\"test/popover.browser.test.tsx\"),\n \"side-panel\": keyboardAndLongCopy(\"test/side-panel.browser.test.tsx\"),\n splitter: keyboard(\"test/splitter.browser.test.tsx\"),\n tour: keyboardAndLongCopy(\"test/tour.browser.test.tsx\"),\n tree: keyboard(\"test/tree.browser.test.tsx\"),\n \"transfer-list\": keyboard(\"test/transfer-list.browser.test.tsx\"),\n mentions: keyboard(\"test/mentions.browser.test.tsx\"),\n \"command-palette\": keyboardAndLongCopy(\"test/command-palette.browser.test.tsx\"),\n agreement: keyboard(\"test/agreement.keyboard.browser.test.tsx\"),\n \"toggle-group\": keyboard(),\n \"tags-input\": keyboard(),\n \"skip-nav\": keyboardAndLongCopy(\"test/skip-nav.browser.test.tsx\"),\n sidebar: keyboard(\"test/sidebar.browser.test.tsx\"),\n \"date-range-picker\": keyboard(\"test/date-range.keyboard.browser.test.tsx\"),\n \"auth-provider-button\": keyboard(),\n \"data-table\": keyboard(\"test/data-table.keyboard.browser.test.tsx\"),\n collapsible: keyboard(\"test/collapsible.keyboard.browser.test.tsx\"),\n \"context-menu\": keyboardAndLongCopy(\"test/context-menu.interactions.browser.test.tsx\"),\n menubar: keyboard(\"test/menubar.keyboard.browser.test.tsx\"),\n anchor: keyboard(\"test/anchor.browser.test.tsx\"),\n \"bottom-navigation\": keyboard(\"test/bottom-navigation.keyboard.browser.test.tsx\"),\n \"load-more\": keyboard(\"test/load-more.interactions.browser.test.tsx\"),\n carousel: keyboard(\"test/carousel.browser.test.tsx\"),\n \"floating-action-button\": keyboard(),\n accordion: keyboard(\"test/accordion.keyboard.browser.test.tsx\"),\n \"upload-item\": keyboard(\"test/upload-item.browser.test.tsx\"),\n // ThinkingOrb runs its whole environment matrix in its own file (canvas timing), not in scenario-matrix.\n \"thinking-orb\": { proofs: [{ scenarios: [\"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"], file: \"test/thinking-orb.browser.test.tsx\" }] },\n \"color-picker\": keyboard(\"test/web-additions.browser.test.tsx\"),\n // SSR proves semantics but cannot catch the close-only row seen in BurnTok.\n // Keep real geometry evidence attached without promoting catalog maturity.\n toast: {\n exportNames: [\"useToast\"],\n proofs: [\n { scenarios: [\"keyboard\"], file: stableCoreProofFile },\n { scenarios: [\"dark\", \"long-copy\", \"large-text\", \"rtl\"], file: \"test/toast-layout.browser.test.tsx\" },\n ],\n },\n select: keyboard(),\n combobox: keyboard(),\n dialog: keyboard(\"test/advanced.browser.test.tsx\"),\n \"alert-dialog\": keyboardAndLongCopy(\"test/alert-dialog.keyboard.browser.test.tsx\"),\n sheet: keyboardAndLongCopy(\"test/sheet-layout.browser.test.tsx\"),\n tooltip: keyboard(\"test/tooltip.browser.test.tsx\"),\n menu: keyboardAndLongCopy(\"test/menu.keyboard.browser.test.tsx\"),\n};\n\nconst exportEntries: Readonly<Record<string, readonly `./${string}`[] | undefined>> = publicExportEntries;\n\n/**\n * One claim per active Web row of the catalog. The subpath is the symbol's canonical granular entry, the export\n * names are the row's own symbol plus the companions published on that entry, and the scenarios are the row's\n * required Web evidence minus recorded gaps. Keyboard is never implied: it comes only from a dedicated proof.\n */\nfunction derivedClaim(entry: ComponentCatalogEntry): ReactRendererEvidenceComponent {\n const componentId = componentIdOf(entry);\n const extras = claimExtras[componentId] ?? {};\n const symbols = entry.name === \"DesignSystemProvider\" ? [\"HjmProvider\"] : [entry.name, ...(entry.companions ?? [])];\n // A row whose own name is not a symbol (Chart) claims through its first published companion.\n const subpath = symbols.map((symbol) => exportEntries[symbol]?.[0]).find((entry) => entry !== undefined);\n if (!subpath) throw new Error(`${entry.name} has no granular @hjmds/react export to claim evidence on`);\n const exportNames = [\n ...symbols.filter((symbol) => exportEntries[symbol]?.includes(subpath)),\n ...(extras.exportNames ?? []),\n ];\n const required = getRequiredShowcaseEvidence(entry).find((evidence) => evidence.surface === \"web\")?.scenarios ?? [];\n const gaps = webScenarioGaps[componentId] ?? [];\n const extraProofs = extras.proofs ?? [];\n const proven = new Set(extraProofs.flatMap((proof) => proof.scenarios));\n const matrix = required.filter((scenario): scenario is ReactRendererEvidenceScenario =>\n scenario !== \"default\" && scenario !== \"keyboard\" && scenario !== \"native-actions\" && scenario !== \"contract\"\n && !gaps.includes(scenario as ReactRendererEvidenceScenario) && !proven.has(scenario as ReactRendererEvidenceScenario));\n const proofs = [\n { scenarios: [\"default\" as const], file: defaultProofFile, caseId: componentId },\n ...(matrix.length === 0 ? [] : [{ scenarios: matrix, file: matrixProofFile, caseId: componentId }]),\n ...extraProofs.map((proof) => ({ ...proof, caseId: componentId })),\n ];\n return {\n componentId,\n exportNames,\n subpath,\n scenarios: proofs.flatMap((proof) => proof.scenarios),\n proofs,\n };\n}\n\nconst activeWebEntries: readonly ComponentCatalogEntry[] = componentCatalog.filter((entry) => {\n const status = getComponentSurfaceStatus(entry, \"web\");\n return status === \"stable\" || status === \"beta\";\n});\n\n/**\n * First-party Web renderer claims. Scenario axes remain fail-closed: the\n * default scenario is an SSR render, the environment and accessibility\n * scenarios are computed-style assertions in scenario-matrix.browser.\n * Keyboard and cross-platform parity remain fail-closed until dedicated\n * interaction or paired-renderer proofs are mapped one-to-one.\n */\nexport const reactRendererEvidence = {\n schemaVersion: reactRendererEvidenceSchemaVersion,\n packageName: \"@hjmds/react\",\n packageVersion: \"1.39.0\",\n surface: \"web\",\n components: activeWebEntries.map(derivedClaim),\n} as const satisfies ReactRendererEvidenceManifest;\n"]}
|
package/dist/styles.css
CHANGED
|
@@ -3626,6 +3626,8 @@ button.hjm-chat-message__media-item:focus-visible { outline: 2px solid var(--hjm
|
|
|
3626
3626
|
/* Filter pills keep the same native radio semantics and 44px hit target. The inner
|
|
3627
3627
|
surface is compact; the group wraps at large type instead of clipping labels. */
|
|
3628
3628
|
.hjm-segmented[data-presentation="pills"] { background:transparent; border:0; padding:0; }
|
|
3629
|
+
/* Pills wrap instead of scrolling. The connected track's scrollport would clip the outer focus outline at the first/last option. */
|
|
3630
|
+
.hjm-segmented[data-presentation="pills"] .hjm-segmented__scroller { overflow:visible; }
|
|
3629
3631
|
/* Keep the inset pill behind the whole line at large text (40px text / 28px fill was observed). Native already includes this inset as vertical padding. */
|
|
3630
3632
|
.hjm-segmented[data-presentation="pills"] .hjm-segmented__items { flex-wrap:wrap; gap:var(--hjm-space-xs); overflow:visible; padding:0; border:0; border-radius:0; background:transparent; }
|
|
3631
3633
|
.hjm-segmented[data-presentation="pills"] .hjm-segmented__item { padding-block:var(--hjm-space-xxs); position:relative; flex:0 1 auto; min-inline-size:0; min-block-size:max(var(--hjm-control-min-touch-target), calc(var(--hjm-segmented-height) + 2 * var(--hjm-space-xxs))); border:0; border-radius:var(--hjm-radius-full); background:transparent; box-shadow:none; padding-inline:var(--hjm-space-md); font-size:var(--hjm-type-label-size); line-height:var(--hjm-type-label-line-height); color:var(--hjm-color-text-muted); }
|
package/dist/styles.layered.css
CHANGED
|
@@ -3627,6 +3627,8 @@ button.hjm-chat-message__media-item:focus-visible { outline: 2px solid var(--hjm
|
|
|
3627
3627
|
/* Filter pills keep the same native radio semantics and 44px hit target. The inner
|
|
3628
3628
|
surface is compact; the group wraps at large type instead of clipping labels. */
|
|
3629
3629
|
.hjm-segmented[data-presentation="pills"] { background:transparent; border:0; padding:0; }
|
|
3630
|
+
/* Pills wrap instead of scrolling. The connected track's scrollport would clip the outer focus outline at the first/last option. */
|
|
3631
|
+
.hjm-segmented[data-presentation="pills"] .hjm-segmented__scroller { overflow:visible; }
|
|
3630
3632
|
/* Keep the inset pill behind the whole line at large text (40px text / 28px fill was observed). Native already includes this inset as vertical padding. */
|
|
3631
3633
|
.hjm-segmented[data-presentation="pills"] .hjm-segmented__items { flex-wrap:wrap; gap:var(--hjm-space-xs); overflow:visible; padding:0; border:0; border-radius:0; background:transparent; }
|
|
3632
3634
|
.hjm-segmented[data-presentation="pills"] .hjm-segmented__item { padding-block:var(--hjm-space-xxs); position:relative; flex:0 1 auto; min-inline-size:0; min-block-size:max(var(--hjm-control-min-touch-target), calc(var(--hjm-segmented-height) + 2 * var(--hjm-space-xxs))); border:0; border-radius:var(--hjm-radius-full); background:transparent; box-shadow:none; padding-inline:var(--hjm-space-md); font-size:var(--hjm-type-label-size); line-height:var(--hjm-type-label-line-height); color:var(--hjm-color-text-muted); }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hjmds/react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.39.0",
|
|
4
4
|
"description": "Accessible React 19 renderers for HJM design contracts.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -608,7 +608,7 @@
|
|
|
608
608
|
"THIRD_PARTY_NOTICES.md"
|
|
609
609
|
],
|
|
610
610
|
"peerDependencies": {
|
|
611
|
-
"@hjmds/design-contracts": ">=1.
|
|
611
|
+
"@hjmds/design-contracts": ">=1.39.0 <1.40.0",
|
|
612
612
|
"react": ">=19.0.0",
|
|
613
613
|
"react-dom": ">=19.0.0",
|
|
614
614
|
"@number-flow/react": "0.6.2",
|
|
@@ -646,7 +646,7 @@
|
|
|
646
646
|
"@blobatar/react": "2.7.0",
|
|
647
647
|
"lucide-react": "1.59.0",
|
|
648
648
|
"vite": "8.3.4",
|
|
649
|
-
"@hjmds/design-contracts": "1.
|
|
649
|
+
"@hjmds/design-contracts": "1.39.0"
|
|
650
650
|
},
|
|
651
651
|
"peerDependenciesMeta": {
|
|
652
652
|
"@number-flow/react": {
|