@charcuterie/ui 4.16.0 → 4.18.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/README.md CHANGED
@@ -328,4 +328,4 @@ rename breaks only the rendered page).
328
328
  board. `sourceRules.test.ts` now derives the container-declaring components from
329
329
  source and fails on this, so the component M4 adds joins the rule automatically.
330
330
 
331
- **`Chart`** provides responsive bar and line plots, negative values, gaps for missing data, and an optional semantic values table. Its escaped SVG renderer lives in `@charcuterie/logic/core` for Preact and image consumers. Apps supply their own series, labels, and semantic colors.
331
+ **`Chart`** provides responsive bar and line plots, negative values, gaps for missing data, and an optional semantic values table. TanStack provides hover/touch tooltips, keyboard navigation, and transitions with reduced-motion support. Set `renderer="portable"` for the lightweight fallback. The `@charcuterie/logic/charts`, `/charts/preact`, and `/charts/react` subpaths expose static and framework-specific surfaces; `/core` remains dependency-free. Apps supply their own series, labels, and semantic colors.
@@ -4,7 +4,10 @@ export type ChartProps = ChartOptions & {
4
4
  className?: string;
5
5
  /** A text table exposes every value without relying on color, hover, or SVG. */
6
6
  isTableVisible?: boolean;
7
+ /** The portable renderer is an explicit fallback for constrained environments. */
8
+ renderer?: "tanstack" | "portable";
9
+ isAnimated?: boolean;
7
10
  };
8
11
  /** The same escaped SVG renderer is available without React for kiosk/image consumers. */
9
- export declare const Chart: ({ className, isTableVisible, ...options }: ChartProps) => ReactNode;
12
+ export declare const Chart: ({ className, isTableVisible, renderer, isAnimated, ...options }: ChartProps) => ReactNode;
10
13
  //# sourceMappingURL=Chart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart/Chart.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAA;AAGd,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,KAAK,GAAI,2CAInB,UAAU,KAAG,SAwGf,CAAA"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart/Chart.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAEL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAA;AAGd,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gFAAgF;IAChF,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;IAClC,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,KAAK,GAAI,iEAMnB,UAAU,KAAG,SA+Hf,CAAA"}
@@ -1,10 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // biome-ignore-all lint/security/noDangerouslySetInnerHtml: The portable renderer escapes text and restricts color references; security tests cover this boundary.
3
+ import { ChartPlot } from "@charcuterie/logic/charts/react";
3
4
  import { renderChartSvg, } from "@charcuterie/logic/core";
4
5
  import { useEffect, useRef, useState, } from "react";
5
6
  import { toClassName } from "../toClassName.js";
6
7
  /** The same escaped SVG renderer is available without React for kiosk/image consumers. */
7
- export const Chart = ({ className, isTableVisible = false, ...options }) => {
8
+ export const Chart = ({ className, isTableVisible = false, renderer = "tanstack", isAnimated = true, ...options }) => {
8
9
  const container = useRef(null);
9
10
  const [measuredWidth, setMeasuredWidth] = useState(options.width ?? 640);
10
11
  useEffect(() => {
@@ -26,12 +27,17 @@ export const Chart = ({ className, isTableVisible = false, ...options }) => {
26
27
  cancelAnimationFrame(frame.id);
27
28
  };
28
29
  }, [options.width]);
29
- return (_jsxs("figure", { className: toClassName("min-w-0 text-content-primary", className), children: [_jsx("figcaption", { className: "mb-2 text-sm font-semibold", children: options.title }), _jsx("div", { ref: container, style: { height: options.height ?? 240 }, dangerouslySetInnerHTML: {
30
- __html: renderChartSvg({
31
- ...options,
32
- width: options.width ?? measuredWidth,
33
- }),
34
- } }), _jsx("ul", { "aria-label": `${options.title} legend`, className: "mt-2 flex flex-wrap gap-3 text-xs", children: options.series.map((entry, index) => (_jsxs("li", { className: "min-w-0 wrap-anywhere", children: [_jsx("span", { "aria-hidden": "true", style: {
30
+ return (_jsxs("figure", { style: {
31
+ "--ts-chart-tooltip-background": "var(--color-surface-raised)",
32
+ "--ts-chart-tooltip-color": "var(--color-content-primary)",
33
+ "--ts-chart-tooltip-border": "1px solid var(--color-border-subtle)",
34
+ "--ts-chart-tooltip-font": "inherit",
35
+ }, className: toClassName("min-w-0 text-content-primary", className), children: [_jsx("figcaption", { className: "mb-2 text-sm font-semibold", children: options.title }), _jsx("div", { ref: container, style: { height: options.height ?? 240 }, children: renderer === "portable" ? (_jsx("div", { style: { height: "100%" }, dangerouslySetInnerHTML: {
36
+ __html: renderChartSvg({
37
+ ...options,
38
+ width: options.width ?? measuredWidth,
39
+ }),
40
+ } })) : (_jsx(ChartPlot, { ...options, width: options.width ?? measuredWidth, isAnimated: isAnimated })) }), _jsx("ul", { "aria-label": `${options.title} legend`, className: "mt-2 flex flex-wrap gap-3 text-xs", children: options.series.map((entry, index) => (_jsxs("li", { className: "min-w-0 wrap-anywhere", children: [_jsx("span", { "aria-hidden": "true", style: {
35
41
  color: entry.color ?? "currentColor",
36
42
  borderTop: `3px ${index % 3 === 0 ? "solid" : index % 3 === 1 ? "dashed" : "dotted"} currentColor`,
37
43
  display: "inline-block",
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","sourceRoot":"","sources":["../../src/Chart/Chart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chart.js","sourceRoot":"","sources":["../../src/Chart/Chart.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+ export type TableViewportProps = {
3
+ /** A semantic table. Only one copy is mounted, including when expanded. */
4
+ children: ReactNode;
5
+ className?: string;
6
+ columnCount: number;
7
+ label: string;
8
+ };
9
+ /** Readable comparison columns, page-height inline, and one full-window scroll surface. */
10
+ export declare const TableViewport: ({ children, className, columnCount, label, }: TableViewportProps) => ReactNode;
11
+ //# sourceMappingURL=TableViewport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableViewport.d.ts","sourceRoot":"","sources":["../../src/TableViewport/TableViewport.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAMrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,8CAK3B,kBAAkB,KAAG,SAiEvB,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState } from "react";
3
+ import { Button } from "../Button/Button.js";
4
+ import { Dialog } from "../Dialog/Dialog.js";
5
+ import { toClassName } from "../toClassName.js";
6
+ /** Readable comparison columns, page-height inline, and one full-window scroll surface. */
7
+ export const TableViewport = ({ children, className, columnCount, label, }) => {
8
+ const [isExpanded, setIsExpanded] = useState(false);
9
+ const [inlineHeight, setInlineHeight] = useState(0);
10
+ const scrollRef = useRef(null);
11
+ const scrollPosition = useRef(0);
12
+ const contentStyle = {
13
+ "--table-min-inline-size": `${Math.max(1, columnCount) * 14}rem`,
14
+ };
15
+ const content = (_jsx("div", { className: "charcuterie-table-content", style: contentStyle, children: children }));
16
+ return (_jsxs("div", { className: toClassName("min-w-0", className), children: [_jsx("div", { className: "flex items-center justify-end border border-border-subtle bg-surface-raised p-2", children: _jsx(Button, { appearance: "ghost", intent: "neutral", size: "sm", onClick: () => {
17
+ const pane = scrollRef.current;
18
+ setInlineHeight(pane?.getBoundingClientRect().height ?? 0);
19
+ scrollPosition.current = pane?.scrollLeft ?? 0;
20
+ setIsExpanded(true);
21
+ }, children: "Expand table" }) }), _jsx("section", { "aria-label": label, className: "charcuterie-scrollbar charcuterie-table-scroll border border-border-subtle border-t-0", ref: scrollRef,
22
+ // biome-ignore lint/a11y/noNoninteractiveTabindex: horizontal scroll must be reachable by keyboard
23
+ tabIndex: 0, style: isExpanded ? { height: inlineHeight } : undefined, children: isExpanded ? null : content }), _jsx(Dialog, { heading: label, isVisible: isExpanded, size: "full", onClose: () => {
24
+ setIsExpanded(false);
25
+ requestAnimationFrame(() => {
26
+ if (scrollRef.current)
27
+ scrollRef.current.scrollLeft =
28
+ scrollPosition.current;
29
+ });
30
+ }, children: isExpanded ? content : null })] }));
31
+ };
32
+ //# sourceMappingURL=TableViewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableViewport.js","sourceRoot":"","sources":["../../src/TableViewport/TableViewport.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAsB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAU/C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,WAAW,EACX,KAAK,GACc,EAAa,EAAE;IAClC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAChC,MAAM,YAAY,GAAG;QACnB,yBAAyB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,KAAK;KAChD,CAAA;IAClB,MAAM,OAAO,GAAG,CACd,cACE,SAAS,EAAC,2BAA2B,EACrC,KAAK,EAAE,YAAY,YAElB,QAAQ,GACL,CACP,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,aAC/C,cAAK,SAAS,EAAC,iFAAiF,YAC9F,KAAC,MAAM,IACL,UAAU,EAAC,OAAO,EAClB,MAAM,EAAC,SAAS,EAChB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;wBACZ,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAA;wBAC9B,eAAe,CACb,IAAI,EAAE,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC,CAC1C,CAAA;wBACD,cAAc,CAAC,OAAO,GAAG,IAAI,EAAE,UAAU,IAAI,CAAC,CAAA;wBAC9C,aAAa,CAAC,IAAI,CAAC,CAAA;oBACrB,CAAC,6BAGM,GACL,EACN,gCACc,KAAK,EACjB,SAAS,EAAC,uFAAuF,EACjG,GAAG,EAAE,SAAS;gBACd,mGAAmG;gBACnG,QAAQ,EAAE,CAAC,EACX,KAAK,EACH,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,YAGlD,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GACpB,EACV,KAAC,MAAM,IACL,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,UAAU,EACrB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,GAAG,EAAE;oBACZ,aAAa,CAAC,KAAK,CAAC,CAAA;oBACpB,qBAAqB,CAAC,GAAG,EAAE;wBACzB,IAAI,SAAS,CAAC,OAAO;4BACnB,SAAS,CAAC,OAAO,CAAC,UAAU;gCAC1B,cAAc,CAAC,OAAO,CAAA;oBAC5B,CAAC,CAAC,CAAA;gBACJ,CAAC,YAEA,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GACrB,IACL,CACP,CAAA;AACH,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -220,6 +220,8 @@ export { Switch } from "./Switch/Switch.tsx";
220
220
  export type { SlotProps } from "./slotProps.ts";
221
221
  export { mergeSlotProps } from "./slotProps.ts";
222
222
  export { getAsyncIntent, getAsyncLabel, getConnectionIntent, getConnectionLabel, getIsConnectionBusy, } from "./statusIntent.ts";
223
+ export type { TableViewportProps } from "./TableViewport/TableViewport.tsx";
224
+ export { TableViewport } from "./TableViewport/TableViewport.tsx";
223
225
  export type { TabsLinkProps, TabsPanelProps, TabsProps, } from "./Tabs/Tabs.tsx";
224
226
  export { Tabs } from "./Tabs/Tabs.tsx";
225
227
  export type { TabItem, TabLinkItem, TabsActivation, TabsOrientation, } from "./Tabs/tabItems.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -120,6 +120,7 @@ export { Swatch } from "./Swatch/Swatch.js";
120
120
  export { Switch } from "./Switch/Switch.js";
121
121
  export { mergeSlotProps } from "./slotProps.js";
122
122
  export { getAsyncIntent, getAsyncLabel, getConnectionIntent, getConnectionLabel, getIsConnectionBusy, } from "./statusIntent.js";
123
+ export { TableViewport } from "./TableViewport/TableViewport.js";
123
124
  export { Tabs } from "./Tabs/Tabs.js";
124
125
  export { TextLink } from "./TextLink/TextLink.js";
125
126
  export { TimecodeInput } from "./TimecodeInput/TimecodeInput.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -208,3 +208,55 @@
208
208
  transparent;
209
209
  }
210
210
  }
211
+
212
+ /* Comparisons keep their column geometry instead of splitting prose into narrow strips.
213
+ Inline has no block-size clamp: the document owns vertical scrolling. */
214
+ .charcuterie-table-scroll {
215
+ overflow-x: auto;
216
+ }
217
+ .charcuterie-table-content table {
218
+ display: table;
219
+ inline-size: 100%;
220
+ min-inline-size: var(--table-min-inline-size);
221
+ border-collapse: separate;
222
+ border-spacing: 0;
223
+ table-layout: fixed;
224
+ font-size: var(--font-size-sm);
225
+ line-height: 1.65;
226
+ }
227
+ .charcuterie-table-content :is(th, td) {
228
+ padding: 0.75rem 1rem;
229
+ border-inline-end: 1px solid var(--color-border-subtle);
230
+ border-block-end: 1px solid var(--color-border-subtle);
231
+ vertical-align: top;
232
+ text-align: start;
233
+ overflow-wrap: break-word;
234
+ color: var(--color-content-primary);
235
+ background: var(--color-surface-base);
236
+ }
237
+ .charcuterie-table-content thead th {
238
+ background: var(--color-surface-raised);
239
+ font-weight: 600;
240
+ }
241
+ [role="dialog"] .charcuterie-table-content thead th {
242
+ position: sticky;
243
+ inset-block-start: -1rem;
244
+ z-index: 2;
245
+ }
246
+ [role="dialog"]
247
+ .charcuterie-table-content
248
+ :is(th, td):first-child {
249
+ position: sticky;
250
+ inset-inline-start: -1rem;
251
+ background: var(--color-surface-raised);
252
+ z-index: 1;
253
+ }
254
+ .charcuterie-table-content thead th:first-child {
255
+ inline-size: clamp(10rem, 18vw, 16rem);
256
+ }
257
+ [role="dialog"]
258
+ .charcuterie-table-content
259
+ thead
260
+ th:first-child {
261
+ z-index: 3;
262
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charcuterie/ui",
3
- "version": "4.16.0",
3
+ "version": "4.18.0",
4
4
  "description": "The Charcuterie components. Tokens for look, @charcuterie/logic for state, ARIA that agents can actually drive.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -53,7 +53,7 @@
53
53
  "typecheck": "tsc --noEmit"
54
54
  },
55
55
  "dependencies": {
56
- "@charcuterie/logic": "2.8.0",
56
+ "@charcuterie/logic": "2.9.0",
57
57
  "@charcuterie/tokens": "1.10.2",
58
58
  "@floating-ui/react": "^0.27.20",
59
59
  "@tanstack/react-virtual": "^3.13.12",
@@ -7,10 +7,19 @@ import * as stories from "./Chart.stories.tsx"
7
7
 
8
8
  Bar and line plots with a zero baseline, negative values, explicit missing samples, and an optional values table. The app owns the data and its meaning. Null means unavailable, never zero. Color is optional; mark titles, labels, and the table preserve the information without it.
9
9
 
10
- The framework-free `renderChartSvg` export from `@charcuterie/logic/core` draws exactly the same plot for Preact kiosks and image renderers. It escapes all producer text and rejects external color references. Use `Chart` in React. Use the portable renderer where a React tree is not available.
10
+ TanStack Charts 0.18.0 is the primary renderer. Hover, tap, or focus the plot and use arrow keys, Home, and End to inspect values. Tooltips show every series for the selected label, including unavailable samples. Positive and negative contributions stack independently with `barLayout="stacked"`; grouped bars remain the default. `isAnimated={false}` disables motion, and changes to `prefers-reduced-motion` are honored while mounted.
11
+
12
+ Use `renderer="portable"` for the existing lightweight SVG fallback. Its static output and the optional semantic values table remain available. Neither renderer fetches data.
13
+
14
+ `@charcuterie/logic/charts` exports `createChartDefinition` and a standalone `renderChartSvg` with explicit image dimensions. `@charcuterie/logic/charts/preact` exports native `ChartPlot` without React or a compatibility layer. `@charcuterie/logic/core` keeps the dependency-free portable renderer for constrained consumers. Static consumers supply resolved colors rather than browser CSS variables.
15
+
16
+ TanStack remains alpha and is pinned exactly. Upgrades require the interaction and export checks recorded in the decision and evaluation.
11
17
 
12
18
  <Canvas of={stories.Playground} />
13
19
  <Canvas of={stories.AllVariants} />
14
20
  <Canvas of={stories.AllStates} />
15
21
  <Canvas of={stories.Responsive} />
16
22
  <Canvas of={stories.Interactive} />
23
+
24
+ <Canvas of={stories.StackedDaily} />
25
+ <Canvas of={stories.PortableFallback} />
@@ -78,15 +78,65 @@ export const Interactive: Story = {
78
78
  render: (props) => {
79
79
  const [isTableVisible, setIsTableVisible] =
80
80
  useState(false)
81
+ const [isUpdated, setIsUpdated] = useState(false)
81
82
  return (
82
83
  <>
84
+ <Button onClick={() => setIsUpdated(!isUpdated)}>
85
+ Update values
86
+ </Button>
83
87
  <Button
84
88
  onClick={() => setIsTableVisible(!isTableVisible)}
85
89
  >
86
90
  {isTableVisible ? "Hide values" : "Show values"}
87
91
  </Button>
88
- <Chart {...props} isTableVisible={isTableVisible} />
92
+ <Chart
93
+ {...props}
94
+ series={props.series.map((entry) => ({
95
+ ...entry,
96
+ values: entry.values.map((value) =>
97
+ value === null
98
+ ? null
99
+ : value + (isUpdated ? 100 : 0),
100
+ ),
101
+ }))}
102
+ isTableVisible={isTableVisible}
103
+ />
89
104
  </>
90
105
  )
91
106
  },
92
107
  }
108
+
109
+ export const StackedDaily: Story = {
110
+ args: {
111
+ barLayout: "stacked",
112
+ series: [
113
+ {
114
+ id: "tasks",
115
+ label: "Tasks",
116
+ values: [200, 280, 180, 260, 300],
117
+ color: "var(--color-intent-accent-solid)",
118
+ },
119
+ {
120
+ id: "bonuses",
121
+ label: "Bonuses",
122
+ values: [10, 20, 0, 10, 0],
123
+ color: "var(--color-intent-success-solid)",
124
+ },
125
+ {
126
+ id: "penalties",
127
+ label: "Penalties",
128
+ values: [0, -50, -50, 0, 0],
129
+ color: "var(--color-intent-danger-solid)",
130
+ },
131
+ {
132
+ id: "reversals",
133
+ label: "Reversals",
134
+ values: [0, -10, 0, 0, 0],
135
+ color: "var(--color-content-muted)",
136
+ },
137
+ ],
138
+ },
139
+ }
140
+ export const PortableFallback: Story = {
141
+ args: { renderer: "portable" },
142
+ }
@@ -5,7 +5,8 @@ import { mountStory } from "../mountStory.testHelpers.ts"
5
5
  import { expectAgentDrivable } from "../testing/index.ts"
6
6
  import * as stories from "./Chart.stories.tsx"
7
7
 
8
- const { Playground, Interactive } = composeStories(stories)
8
+ const { Playground, Interactive, StackedDaily } =
9
+ composeStories(stories)
9
10
  test("the plot has an accessible name and a named legend", async () => {
10
11
  const { canvas } = await mountStory(Playground)
11
12
  expectAgentDrivable(canvas, {
@@ -35,3 +36,31 @@ test("the keyboard exposes all values, including missing data, in a real table",
35
36
  ).toBeVisible()
36
37
  await expect(within(table).getByText("-50")).toBeVisible()
37
38
  })
39
+
40
+ test("keyboard point navigation exposes the day's original category amounts", async () => {
41
+ const { canvas } = await mountStory(StackedDaily)
42
+ const plot = expectAgentDrivable(canvas, {
43
+ role: "img",
44
+ name: "Daily progress",
45
+ })
46
+ plot.focus()
47
+ await userEvent.keyboard("{Home}")
48
+ const body = within(document.body)
49
+ await expect(body.getByRole("status")).toBeVisible()
50
+ await expect(
51
+ within(body.getByRole("status")).getByText("Tasks"),
52
+ ).toBeVisible()
53
+ await expect(
54
+ within(body.getByRole("status")).getByText("200"),
55
+ ).toBeVisible()
56
+ await expect(
57
+ within(body.getByRole("status")).getByText("10"),
58
+ ).toBeVisible()
59
+ await userEvent.keyboard("{End}")
60
+ await expect(
61
+ within(body.getByRole("status")).getByText("Fri"),
62
+ ).toBeVisible()
63
+ await expect(
64
+ within(body.getByRole("status")).getByText("300"),
65
+ ).toBeVisible()
66
+ })
@@ -1,9 +1,12 @@
1
1
  // biome-ignore-all lint/security/noDangerouslySetInnerHtml: The portable renderer escapes text and restricts color references; security tests cover this boundary.
2
+
3
+ import { ChartPlot } from "@charcuterie/logic/charts/react"
2
4
  import {
3
5
  type ChartOptions,
4
6
  renderChartSvg,
5
7
  } from "@charcuterie/logic/core"
6
8
  import {
9
+ type CSSProperties,
7
10
  type ReactNode,
8
11
  useEffect,
9
12
  useRef,
@@ -15,12 +18,17 @@ export type ChartProps = ChartOptions & {
15
18
  className?: string
16
19
  /** A text table exposes every value without relying on color, hover, or SVG. */
17
20
  isTableVisible?: boolean
21
+ /** The portable renderer is an explicit fallback for constrained environments. */
22
+ renderer?: "tanstack" | "portable"
23
+ isAnimated?: boolean
18
24
  }
19
25
 
20
26
  /** The same escaped SVG renderer is available without React for kiosk/image consumers. */
21
27
  export const Chart = ({
22
28
  className,
23
29
  isTableVisible = false,
30
+ renderer = "tanstack",
31
+ isAnimated = true,
24
32
  ...options
25
33
  }: ChartProps): ReactNode => {
26
34
  const container = useRef<HTMLDivElement>(null)
@@ -47,6 +55,17 @@ export const Chart = ({
47
55
  }, [options.width])
48
56
  return (
49
57
  <figure
58
+ style={
59
+ {
60
+ "--ts-chart-tooltip-background":
61
+ "var(--color-surface-raised)",
62
+ "--ts-chart-tooltip-color":
63
+ "var(--color-content-primary)",
64
+ "--ts-chart-tooltip-border":
65
+ "1px solid var(--color-border-subtle)",
66
+ "--ts-chart-tooltip-font": "inherit",
67
+ } as CSSProperties
68
+ }
50
69
  className={toClassName(
51
70
  "min-w-0 text-content-primary",
52
71
  className,
@@ -58,13 +77,25 @@ export const Chart = ({
58
77
  <div
59
78
  ref={container}
60
79
  style={{ height: options.height ?? 240 }}
61
- dangerouslySetInnerHTML={{
62
- __html: renderChartSvg({
63
- ...options,
64
- width: options.width ?? measuredWidth,
65
- }),
66
- }}
67
- />
80
+ >
81
+ {renderer === "portable" ? (
82
+ <div
83
+ style={{ height: "100%" }}
84
+ dangerouslySetInnerHTML={{
85
+ __html: renderChartSvg({
86
+ ...options,
87
+ width: options.width ?? measuredWidth,
88
+ }),
89
+ }}
90
+ />
91
+ ) : (
92
+ <ChartPlot
93
+ {...options}
94
+ width={options.width ?? measuredWidth}
95
+ isAnimated={isAnimated}
96
+ />
97
+ )}
98
+ </div>
68
99
  <ul
69
100
  aria-label={`${options.title} legend`}
70
101
  className="mt-2 flex flex-wrap gap-3 text-xs"
@@ -0,0 +1,23 @@
1
+ import { Canvas, Meta } from "@storybook/addon-docs/blocks"
2
+ import * as Stories from "./TableViewport.stories.tsx"
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # TableViewport
7
+
8
+ A comparison table keeps its columns wide enough to read. The inline surface grows with
9
+ its rows and uses the page's vertical scroll. Expand table opens a full-window `Dialog`.
10
+ The dialog body is the only scroll surface; headers and the first column stay visible.
11
+ Escape and Close return focus to the trigger. Only one table is mounted, so links and IDs
12
+ are never duplicated. The inline height and horizontal position survive expansion.
13
+
14
+ Apps provide the semantic table, its column count, and its accessible label. Sanitizing
15
+ Markdown HTML and delegating document links remain the app's responsibilities. Use
16
+ `DataTable` for interactive records that reflow into labeled rows; use this surface for
17
+ comparisons where columns must stay aligned.
18
+
19
+ <Canvas of={Stories.Playground} />
20
+ <Canvas of={Stories.AllVariants} />
21
+ <Canvas of={Stories.AllStates} />
22
+ <Canvas of={Stories.Responsive} />
23
+ <Canvas of={Stories.Interactive} />
@@ -0,0 +1,107 @@
1
+ import { playgroundParameters } from "@charcuterie/storybook-config/story-parameters"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+ import {
4
+ ContainerBoard,
5
+ StoryCell,
6
+ StoryGrid,
7
+ } from "../board.storyHelpers.tsx"
8
+ import { TableViewport } from "./TableViewport.tsx"
9
+
10
+ const comparison = (count: number) => (
11
+ <table>
12
+ <caption className="sr-only">
13
+ Printer comparison
14
+ </caption>
15
+ <thead>
16
+ <tr>
17
+ {[
18
+ "Feature",
19
+ "Current service",
20
+ "Provider fork",
21
+ "Alternative",
22
+ "Work needed",
23
+ ].map((name) => (
24
+ <th key={name} scope="col">
25
+ {name}
26
+ </th>
27
+ ))}
28
+ </tr>
29
+ </thead>
30
+ <tbody>
31
+ {Array.from(
32
+ { length: count },
33
+ (_, index) => `Feature ${index + 1}`,
34
+ ).map((feature) => (
35
+ <tr key={feature}>
36
+ <th scope="row">{feature}</th>
37
+ <td>
38
+ Existing integration supports prepared jobs and
39
+ preserves the current workflow.
40
+ </td>
41
+ <td>
42
+ Provider support exists. Hardware verification
43
+ is still needed before deployment.
44
+ </td>
45
+ <td>
46
+ Advertised support. Exact behavior remains
47
+ unconfirmed.
48
+ </td>
49
+ <td>
50
+ Verify compatibility, keep the existing
51
+ controls, and test error recovery.
52
+ </td>
53
+ </tr>
54
+ ))}
55
+ </tbody>
56
+ </table>
57
+ )
58
+ const meta = {
59
+ title: "Components/Data/TableViewport",
60
+ component: TableViewport,
61
+ args: {
62
+ columnCount: 5,
63
+ label: "Printer comparison",
64
+ children: comparison(12),
65
+ },
66
+ } satisfies Meta<typeof TableViewport>
67
+ export default meta
68
+ type Story = StoryObj<typeof meta>
69
+ export const Playground: Story = {
70
+ parameters: playgroundParameters,
71
+ }
72
+ export const AllVariants: Story = {
73
+ render: (props) => (
74
+ <StoryGrid columns={2}>
75
+ <StoryCell align="stretch" label="Short">
76
+ <TableViewport {...props} label="Short comparison">
77
+ {comparison(2)}
78
+ </TableViewport>
79
+ </StoryCell>
80
+ <StoryCell align="stretch" label="Long">
81
+ <TableViewport {...props} label="Long comparison">
82
+ {comparison(16)}
83
+ </TableViewport>
84
+ </StoryCell>
85
+ </StoryGrid>
86
+ ),
87
+ }
88
+ export const AllStates: Story = {
89
+ render: (props) => (
90
+ <TableViewport {...props}>
91
+ {comparison(0)}
92
+ </TableViewport>
93
+ ),
94
+ }
95
+ export const Responsive: Story = {
96
+ render: (props) => (
97
+ <ContainerBoard>
98
+ {(width) => (
99
+ <TableViewport
100
+ {...props}
101
+ label={`Comparison at ${width}`}
102
+ />
103
+ )}
104
+ </ContainerBoard>
105
+ ),
106
+ }
107
+ export const Interactive: Story = {}
@@ -0,0 +1,58 @@
1
+ import { composeStories } from "@storybook/react"
2
+ import { expect, userEvent, waitFor } from "storybook/test"
3
+ import { test } from "vitest"
4
+ import { expectNoAxeViolations } from "../expectNoAxeViolations.testHelpers.ts"
5
+ import { mountStory } from "../mountStory.testHelpers.ts"
6
+ import { expectAgentDrivable } from "../testing/index.ts"
7
+ import * as stories from "./TableViewport.stories.tsx"
8
+
9
+ const { Interactive } = composeStories(stories)
10
+
11
+ test("long inline comparisons grow with the page and expand without duplicate tables", async () => {
12
+ const { body, canvas } = await mountStory(Interactive)
13
+ const pane = expectAgentDrivable(canvas, {
14
+ role: "region",
15
+ name: "Printer comparison",
16
+ })
17
+ await expect(pane.scrollHeight).toBeLessThanOrEqual(
18
+ pane.clientHeight + 1,
19
+ )
20
+ const trigger = expectAgentDrivable(canvas, {
21
+ role: "button",
22
+ name: "Expand table",
23
+ })
24
+ await userEvent.click(trigger)
25
+ const dialog = expectAgentDrivable(body, {
26
+ role: "dialog",
27
+ name: "Printer comparison",
28
+ })
29
+ await expect(
30
+ document.querySelectorAll("table").length,
31
+ ).toBe(1)
32
+ await expect(
33
+ dialog.getBoundingClientRect().width,
34
+ ).toBeGreaterThan(innerWidth * 0.9)
35
+ await expectNoAxeViolations(dialog)
36
+ const header = dialog.querySelector(
37
+ "thead th",
38
+ ) as HTMLElement
39
+ const scroller = header.closest(
40
+ ".overflow-auto",
41
+ ) as HTMLElement
42
+ scroller.scrollTop = 250
43
+ await waitFor(() =>
44
+ expect(
45
+ header.getBoundingClientRect().top,
46
+ ).toBeGreaterThanOrEqual(
47
+ scroller.getBoundingClientRect().top - 1,
48
+ ),
49
+ )
50
+ await userEvent.keyboard("{Escape}")
51
+ await waitFor(() =>
52
+ expect(body.queryByRole("dialog")).toBeNull(),
53
+ )
54
+ await expect(document.activeElement).toBe(trigger)
55
+ await expect(
56
+ canvas.getByRole("table"),
57
+ ).toBeInTheDocument()
58
+ })
@@ -0,0 +1,86 @@
1
+ import type { CSSProperties, ReactNode } from "react"
2
+ import { useRef, useState } from "react"
3
+ import { Button } from "../Button/Button.tsx"
4
+ import { Dialog } from "../Dialog/Dialog.tsx"
5
+ import { toClassName } from "../toClassName.ts"
6
+
7
+ export type TableViewportProps = {
8
+ /** A semantic table. Only one copy is mounted, including when expanded. */
9
+ children: ReactNode
10
+ className?: string
11
+ columnCount: number
12
+ label: string
13
+ }
14
+
15
+ /** Readable comparison columns, page-height inline, and one full-window scroll surface. */
16
+ export const TableViewport = ({
17
+ children,
18
+ className,
19
+ columnCount,
20
+ label,
21
+ }: TableViewportProps): ReactNode => {
22
+ const [isExpanded, setIsExpanded] = useState(false)
23
+ const [inlineHeight, setInlineHeight] = useState(0)
24
+ const scrollRef = useRef<HTMLElement>(null)
25
+ const scrollPosition = useRef(0)
26
+ const contentStyle = {
27
+ "--table-min-inline-size": `${Math.max(1, columnCount) * 14}rem`,
28
+ } as CSSProperties
29
+ const content = (
30
+ <div
31
+ className="charcuterie-table-content"
32
+ style={contentStyle}
33
+ >
34
+ {children}
35
+ </div>
36
+ )
37
+
38
+ return (
39
+ <div className={toClassName("min-w-0", className)}>
40
+ <div className="flex items-center justify-end border border-border-subtle bg-surface-raised p-2">
41
+ <Button
42
+ appearance="ghost"
43
+ intent="neutral"
44
+ size="sm"
45
+ onClick={() => {
46
+ const pane = scrollRef.current
47
+ setInlineHeight(
48
+ pane?.getBoundingClientRect().height ?? 0,
49
+ )
50
+ scrollPosition.current = pane?.scrollLeft ?? 0
51
+ setIsExpanded(true)
52
+ }}
53
+ >
54
+ Expand table
55
+ </Button>
56
+ </div>
57
+ <section
58
+ aria-label={label}
59
+ className="charcuterie-scrollbar charcuterie-table-scroll border border-border-subtle border-t-0"
60
+ ref={scrollRef}
61
+ // biome-ignore lint/a11y/noNoninteractiveTabindex: horizontal scroll must be reachable by keyboard
62
+ tabIndex={0}
63
+ style={
64
+ isExpanded ? { height: inlineHeight } : undefined
65
+ }
66
+ >
67
+ {isExpanded ? null : content}
68
+ </section>
69
+ <Dialog
70
+ heading={label}
71
+ isVisible={isExpanded}
72
+ size="full"
73
+ onClose={() => {
74
+ setIsExpanded(false)
75
+ requestAnimationFrame(() => {
76
+ if (scrollRef.current)
77
+ scrollRef.current.scrollLeft =
78
+ scrollPosition.current
79
+ })
80
+ }}
81
+ >
82
+ {isExpanded ? content : null}
83
+ </Dialog>
84
+ </div>
85
+ )
86
+ }
package/src/index.ts CHANGED
@@ -493,6 +493,8 @@ export {
493
493
  getConnectionLabel,
494
494
  getIsConnectionBusy,
495
495
  } from "./statusIntent.ts"
496
+ export type { TableViewportProps } from "./TableViewport/TableViewport.tsx"
497
+ export { TableViewport } from "./TableViewport/TableViewport.tsx"
496
498
  export type {
497
499
  TabsLinkProps,
498
500
  TabsPanelProps,
@@ -620,7 +620,8 @@ test("the barrel is the only place components are re-exported", async () => {
620
620
  // ActionMenu composes IconButton and Menu for the overflow control.
621
621
  // ValuePairs owns compact label-over-value summaries.
622
622
  // Chart shares portable SVG geometry with Preact and image consumers.
623
- expect(componentNames.length).toBe(73)
623
+ // TableViewport owns readable comparisons and full-window expansion.
624
+ expect(componentNames.length).toBe(74)
624
625
 
625
626
  for (const name of componentNames) {
626
627
  expect(barrel).toContain(`export { ${name} }`)
@@ -700,6 +701,33 @@ const ENTRY_POINT_RUNTIMES: Record<
700
701
  // into `core` — which is why `ColorSchemeApplier` lives in the
701
702
  // core rather than beside the hook, so this entry never pulls
702
703
  // `react`.
704
+ "./charts": [
705
+ "@tanstack/charts",
706
+ "@tanstack/charts/scales/band",
707
+ "@tanstack/charts/scales/linear",
708
+ "@tanstack/charts/svg",
709
+ ],
710
+ "./charts/preact": [
711
+ "@tanstack/charts",
712
+ "@tanstack/charts/adapter/renderer",
713
+ "@tanstack/charts/motion",
714
+ "@tanstack/charts/scales/band",
715
+ "@tanstack/charts/scales/linear",
716
+ "@tanstack/charts/svg/renderer",
717
+ "@tanstack/charts/tooltip",
718
+ "preact",
719
+ "preact/hooks",
720
+ ],
721
+ "./charts/react": [
722
+ "@tanstack/charts",
723
+ "@tanstack/charts/motion",
724
+ "@tanstack/charts/react/core",
725
+ "@tanstack/charts/scales/band",
726
+ "@tanstack/charts/scales/linear",
727
+ "@tanstack/charts/svg/renderer",
728
+ "@tanstack/charts/tooltip",
729
+ "react",
730
+ ],
703
731
  "./browser": [],
704
732
  "./core": [],
705
733
  "./jotai": ["jotai"],
@@ -733,6 +761,7 @@ const ENTRY_POINT_RUNTIMES: Record<
733
761
  // browser, and it does so through this subpath so the coupling
734
762
  // is named rather than smuggled in through the main entry.
735
763
  "@charcuterie/logic/browser",
764
+ "@charcuterie/logic/charts/react",
736
765
  "@charcuterie/logic/core",
737
766
  "@charcuterie/tokens",
738
767
  "@floating-ui/react",
package/src/styles.css CHANGED
@@ -208,3 +208,55 @@
208
208
  transparent;
209
209
  }
210
210
  }
211
+
212
+ /* Comparisons keep their column geometry instead of splitting prose into narrow strips.
213
+ Inline has no block-size clamp: the document owns vertical scrolling. */
214
+ .charcuterie-table-scroll {
215
+ overflow-x: auto;
216
+ }
217
+ .charcuterie-table-content table {
218
+ display: table;
219
+ inline-size: 100%;
220
+ min-inline-size: var(--table-min-inline-size);
221
+ border-collapse: separate;
222
+ border-spacing: 0;
223
+ table-layout: fixed;
224
+ font-size: var(--font-size-sm);
225
+ line-height: 1.65;
226
+ }
227
+ .charcuterie-table-content :is(th, td) {
228
+ padding: 0.75rem 1rem;
229
+ border-inline-end: 1px solid var(--color-border-subtle);
230
+ border-block-end: 1px solid var(--color-border-subtle);
231
+ vertical-align: top;
232
+ text-align: start;
233
+ overflow-wrap: break-word;
234
+ color: var(--color-content-primary);
235
+ background: var(--color-surface-base);
236
+ }
237
+ .charcuterie-table-content thead th {
238
+ background: var(--color-surface-raised);
239
+ font-weight: 600;
240
+ }
241
+ [role="dialog"] .charcuterie-table-content thead th {
242
+ position: sticky;
243
+ inset-block-start: -1rem;
244
+ z-index: 2;
245
+ }
246
+ [role="dialog"]
247
+ .charcuterie-table-content
248
+ :is(th, td):first-child {
249
+ position: sticky;
250
+ inset-inline-start: -1rem;
251
+ background: var(--color-surface-raised);
252
+ z-index: 1;
253
+ }
254
+ .charcuterie-table-content thead th:first-child {
255
+ inline-size: clamp(10rem, 18vw, 16rem);
256
+ }
257
+ [role="dialog"]
258
+ .charcuterie-table-content
259
+ thead
260
+ th:first-child {
261
+ z-index: 3;
262
+ }