@charcuterie/ui 4.8.0 → 4.9.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
@@ -4,7 +4,7 @@ The components. Look from `@charcuterie/tokens`, state from `@charcuterie/logic`
4
4
  that Playwright and an AI agent can actually drive.
5
5
 
6
6
  M3 ships the **P0 pure-presentation** set: `Spinner`, `Skeleton`, `Button`, `IconButton`,
7
- `Badge`, `ProgressBar`, `EmptyState`, `Card`, `LiveStatusIndicator`, `MediaTile` — plus
7
+ `Badge`, `ProgressBar`, `ProgressCard`, `EmptyState`, `Card`, `LiveStatusIndicator`, `MediaTile` — plus
8
8
  `VisuallyHidden`, which the first three of those need. M4 adds the overlays: `Modal`,
9
9
  `Popover`, `Tabs`.
10
10
 
@@ -17,6 +17,8 @@ export type ProgressBarProps = Omit<ComponentPropsWithRef<"div">, "children"> &
17
17
  /** Required. A progressbar with no name is a grey rectangle. */
18
18
  label: string;
19
19
  max?: number;
20
+ /** Content above a full-height, muted track. It stays outside the ARIA widget. */
21
+ overlay?: ReactNode;
20
22
  size?: ProgressBarSize;
21
23
  thresholds?: readonly ProgressThreshold[];
22
24
  value?: number;
@@ -47,5 +49,5 @@ export type ProgressBarProps = Omit<ComponentPropsWithRef<"div">, "children"> &
47
49
  * right by rendering a separate element; stating it on one
48
50
  * element is the same answer without the duplication.
49
51
  */
50
- export declare const ProgressBar: ({ className, intent, isIndeterminate, isLabelVisible, isValueShown, label, max, size, thresholds, value, ...divProps }: ProgressBarProps) => ReactNode;
52
+ export declare const ProgressBar: ({ className, intent, isIndeterminate, isLabelVisible, isValueShown, label, max, overlay, size, thresholds, value, ...divProps }: ProgressBarProps) => ReactNode;
51
53
  //# sourceMappingURL=ProgressBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACV,MAAM,OAAO,CAAA;AAKd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAO3D,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,UAAU,CACX,GAAG;IACF,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW,GAAI,wHAYzB,gBAAgB,KAAG,SAqFrB,CAAA"}
1
+ {"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACV,MAAM,OAAO,CAAA;AAKd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAO3D,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAEhD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,UAAU,CACX,GAAG;IACF,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAA;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW,GAAI,iIAazB,gBAAgB,KAAG,SA0GrB,CAAA"}
@@ -35,16 +35,24 @@ const TRACK_SIZE_CLASS = {
35
35
  * right by rendering a separate element; stating it on one
36
36
  * element is the same answer without the duplication.
37
37
  */
38
- export const ProgressBar = ({ className, intent = "accent", isIndeterminate = false, isLabelVisible = false, isValueShown = false, label, max = 100, size = "md", thresholds, value = 0, ...divProps }) => {
38
+ export const ProgressBar = ({ className, intent = "accent", isIndeterminate = false, isLabelVisible = false, isValueShown = false, label, max = 100, overlay, size = "md", thresholds, value = 0, ...divProps }) => {
39
39
  const labelId = useUniqueId();
40
40
  const percent = toProgressPercent(value, max);
41
41
  const clampedValue = toProgressValue(value, max);
42
42
  const fillIntent = getProgressIntent(percent, intent, thresholds);
43
- return (_jsxs("div", { ...divProps, className: toClassName("flex flex-col gap-1", className), children: [isLabelVisible || isValueShown ? (_jsxs("div", { className: "flex items-baseline justify-between gap-2 text-sm", children: [isLabelVisible ? (_jsx("span", { className: "text-content-secondary", id: labelId, children: label })) : (_jsx(VisuallyHidden, { id: labelId, children: label })), isValueShown && !isIndeterminate ? (_jsxs("span", { className: "text-content-muted tabular-nums", children: [percent, "%"] })) : null] })) : (_jsx(VisuallyHidden, { id: labelId, children: label })), _jsx("div", { "aria-busy": isIndeterminate || undefined, "aria-labelledby": labelId, "aria-valuemax": max, "aria-valuemin": 0, "aria-valuenow": isIndeterminate ? undefined : clampedValue, className: toClassName("relative w-full overflow-hidden rounded-full bg-surface-sunken", TRACK_SIZE_CLASS[size]), role: "progressbar", children: isIndeterminate ? (_jsx("span", { className: toClassName(
44
- // The sweep animates `inset-inline-start`, so it runs
45
- // the other way in RTL for free — and its
46
- // reduced-motion fallback hatches the whole track
47
- // rather than parking at one end.
48
- "charcuterie-sweep absolute inset-y-0 w-2/5 rounded-full", INTENT_SOLID_FILL_CLASS[fillIntent]) })) : (_jsx("span", { className: toClassName("block h-full rounded-full transition-[inline-size] duration-(--duration-normal) ease-standard", INTENT_SOLID_FILL_CLASS[fillIntent]), style: { inlineSize: `${percent}%` } })) })] }));
43
+ return (_jsxs("div", { ...divProps, className: toClassName("flex flex-col gap-1", className), children: [isLabelVisible || isValueShown ? (_jsxs("div", { className: "flex items-baseline justify-between gap-2 text-sm", children: [isLabelVisible ? (_jsx("span", { className: "text-content-secondary", id: labelId, children: label })) : (_jsx(VisuallyHidden, { id: labelId, children: label })), isValueShown && !isIndeterminate ? (_jsxs("span", { className: "text-content-muted tabular-nums", children: [percent, "%"] })) : null] })) : (_jsx(VisuallyHidden, { id: labelId, children: label })), _jsxs("div", { className: overlay == null
44
+ ? undefined
45
+ : "grid overflow-hidden rounded-xl", children: [_jsx("div", { "aria-busy": isIndeterminate || undefined, "aria-labelledby": labelId, "aria-valuemax": max, "aria-valuemin": 0, "aria-valuenow": isIndeterminate ? undefined : clampedValue, className: toClassName("relative w-full overflow-hidden rounded-full bg-surface-sunken", overlay == null
46
+ ? TRACK_SIZE_CLASS[size]
47
+ : "h-full rounded-xl [grid-area:1/1]"), role: "progressbar", children: isIndeterminate ? (_jsx("span", { className: toClassName(
48
+ // The sweep animates `inset-inline-start`, so it runs
49
+ // the other way in RTL for free — and its
50
+ // reduced-motion fallback hatches the whole track
51
+ // rather than parking at one end.
52
+ "charcuterie-sweep absolute inset-y-0 w-2/5 rounded-full", INTENT_SOLID_FILL_CLASS[fillIntent], overlay == null
53
+ ? undefined
54
+ : "rounded-none opacity-30") })) : (_jsx("span", { className: toClassName("block h-full rounded-full transition-[inline-size] duration-(--duration-normal) ease-standard", INTENT_SOLID_FILL_CLASS[fillIntent], overlay == null
55
+ ? undefined
56
+ : "rounded-none opacity-30"), style: { inlineSize: `${percent}%` } })) }), overlay == null ? null : (_jsx("div", { className: "relative min-w-0 [grid-area:1/1]", children: overlay }))] })] }));
49
57
  };
50
58
  //# sourceMappingURL=ProgressBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAOhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAsC,CAAA;AAErE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAA;AA2B3B,MAAM,gBAAgB,GAAoC;IACxD,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,KAAK;CACV,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,SAAS,EACT,MAAM,GAAG,QAAQ,EACjB,eAAe,GAAG,KAAK,EACvB,cAAc,GAAG,KAAK,EACtB,YAAY,GAAG,KAAK,EACpB,KAAK,EACL,GAAG,GAAG,GAAG,EACT,IAAI,GAAG,IAAI,EACX,UAAU,EACV,KAAK,GAAG,CAAC,EACT,GAAG,QAAQ,EACM,EAAa,EAAE;IAChC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAA;IAE7B,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE7C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAEhD,MAAM,UAAU,GAAG,iBAAiB,CAClC,OAAO,EACP,MAAM,EACN,UAAU,CACX,CAAA;IAED,OAAO,CACL,kBACM,QAAQ,EACZ,SAAS,EAAE,WAAW,CACpB,qBAAqB,EACrB,SAAS,CACV,aAEA,cAAc,IAAI,YAAY,CAAC,CAAC,CAAC,CAChC,eAAK,SAAS,EAAC,mDAAmD,aAC/D,cAAc,CAAC,CAAC,CAAC,CAChB,eACE,SAAS,EAAC,wBAAwB,EAClC,EAAE,EAAE,OAAO,YAEV,KAAK,GACD,CACR,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IAAC,EAAE,EAAE,OAAO,YACxB,KAAK,GACS,CAClB,EAEA,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAClC,gBAAM,SAAS,EAAC,iCAAiC,aAC9C,OAAO,SACH,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IAAC,EAAE,EAAE,OAAO,YACxB,KAAK,GACS,CAClB,EAED,2BACa,eAAe,IAAI,SAAS,qBACtB,OAAO,mBACT,GAAG,mBACH,CAAC,mBAEd,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,EAE5C,SAAS,EAAE,WAAW,CACpB,gEAAgE,EAChE,gBAAgB,CAAC,IAAI,CAAC,CACvB,EACD,IAAI,EAAC,aAAa,YAEjB,eAAe,CAAC,CAAC,CAAC,CACjB,eACE,SAAS,EAAE,WAAW;oBACpB,sDAAsD;oBACtD,0CAA0C;oBAC1C,kDAAkD;oBAClD,kCAAkC;oBAClC,yDAAyD,EACzD,uBAAuB,CAAC,UAAU,CAAC,CACpC,GACD,CACH,CAAC,CAAC,CAAC,CACF,eACE,SAAS,EAAE,WAAW,CACpB,+FAA+F,EAC/F,uBAAuB,CAAC,UAAU,CAAC,CACpC,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,GAAG,EAAE,GACpC,CACH,GACG,IACF,CACP,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/ProgressBar/ProgressBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { IntentName } from "@charcuterie/tokens";
2
+ import type { ReactNode } from "react";
3
+ import { type CardProps } from "../Card/Card.tsx";
4
+ export type ProgressCardMetric = {
5
+ label: string;
6
+ value: ReactNode;
7
+ };
8
+ export type ProgressCardLayout = "band" | "hierarchy";
9
+ export type ProgressCardProps = Omit<CardProps, "heading" | "footer"> & {
10
+ "aria-label": string;
11
+ /** App-owned identity: a title, an identifier, or a format mark. */
12
+ header: ReactNode;
13
+ /** Whole-card intent is independent of the progress fill. */
14
+ intent?: IntentName;
15
+ isIndeterminate?: boolean;
16
+ isValueEmphasized?: boolean;
17
+ layout?: ProgressCardLayout;
18
+ max?: number;
19
+ media?: ReactNode;
20
+ metrics?: readonly ProgressCardMetric[];
21
+ progressIntent?: IntentName;
22
+ progressLabel: string;
23
+ status?: string;
24
+ value?: number;
25
+ /** App-formatted percentage or terminal state; never inferred from intent. */
26
+ valueText: string;
27
+ };
28
+ /** A progress-first card. The app owns state, formatting, actions, and diagnosis. */
29
+ export declare const ProgressCard: ({ actions, children, className, header, intent, isIndeterminate, isValueEmphasized, layout, max, media, metrics, progressIntent, progressLabel, status, value, valueText, ...cardProps }: ProgressCardProps) => ReactNode;
30
+ //# sourceMappingURL=ProgressCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressCard.d.ts","sourceRoot":"","sources":["../../src/ProgressCard/ProgressCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAKvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,WAAW,CAAA;AAErD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,SAAS,EACT,SAAS,GAAG,QAAQ,CACrB,GAAG;IACF,YAAY,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,MAAM,EAAE,SAAS,CAAA;IACjB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACvC,cAAc,CAAC,EAAE,UAAU,CAAA;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,YAAY,GAAI,0LAkB1B,iBAAiB,KAAG,SA8FtB,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Card } from "../Card/Card.js";
3
+ import { INTENT_APPEARANCE_CLASS } from "../intentStyles.js";
4
+ import { ProgressBar } from "../ProgressBar/ProgressBar.js";
5
+ import { toClassName } from "../toClassName.js";
6
+ /** A progress-first card. The app owns state, formatting, actions, and diagnosis. */
7
+ export const ProgressCard = ({ actions, children, className, header, intent = "neutral", isIndeterminate = false, isValueEmphasized = true, layout = "band", max, media, metrics = [], progressIntent = "accent", progressLabel, status, value, valueText, ...cardProps }) => {
8
+ const headline = (_jsxs("div", { className: toClassName("relative flex flex-wrap items-end justify-between gap-2", layout === "band" ? "p-3" : "mb-3"), children: [status ? (_jsx("span", { className: "min-w-0 wrap-anywhere font-medium text-content-secondary text-sm", children: status })) : null, _jsx("span", { className: toClassName("min-w-0 wrap-anywhere text-end tabular-nums", isValueEmphasized
9
+ ? "font-bold text-4xl leading-none tracking-tight cq-sm:text-[3.25rem]"
10
+ : "font-semibold text-xl"), children: valueText })] }));
11
+ return (_jsx(Card, { ...cardProps, className: toClassName("relative rounded-2xl", intent === "neutral"
12
+ ? undefined
13
+ : INTENT_APPEARANCE_CLASS[intent].soft, "text-content-primary", className), children: _jsxs("div", { className: "flex gap-3.5", children: [media ? (_jsx("div", { className: "flex shrink-0 flex-col items-start gap-2", children: media })) : null, _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-start justify-between gap-3", children: [_jsx("div", { className: "min-w-0 flex-1 basis-40 wrap-anywhere", children: header }), actions ? (_jsx("div", { className: "relative z-10 flex flex-wrap items-center gap-2", children: actions })) : null] }), _jsxs("div", { className: "mt-5", children: [layout === "hierarchy" ? headline : null, _jsx(ProgressBar, { intent: progressIntent, isIndeterminate: isIndeterminate, label: progressLabel, max: max, overlay: layout === "band" ? headline : undefined, value: value })] }), metrics.length > 0 ? (_jsx("div", { className: "@container", children: _jsx("dl", { className: "mt-3 grid grid-cols-1 gap-2 cq-sm:grid-cols-3", children: metrics.map(({ label, value: metricValue }) => (_jsxs("div", { className: "flex items-baseline justify-between gap-2 rounded-lg border border-border-subtle bg-surface-sunken/70 px-2.5 py-2 cq-sm:block", children: [_jsx("dt", { className: "min-w-0 wrap-anywhere font-semibold text-content-muted text-xs uppercase tracking-wide", children: label }), _jsx("dd", { className: "m-0 min-w-0 wrap-anywhere font-semibold text-lg tabular-nums cq-sm:mt-1", children: metricValue ?? "—" })] }, label))) }) })) : null, children] })] }) }));
14
+ };
15
+ //# sourceMappingURL=ProgressCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressCard.js","sourceRoot":"","sources":["../../src/ProgressCard/ProgressCard.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -166,6 +166,8 @@ export type { ProgressBarProps, ProgressBarSize, } from "./ProgressBar/ProgressB
166
166
  export { ProgressBar } from "./ProgressBar/ProgressBar.tsx";
167
167
  export type { ProgressThreshold } from "./ProgressBar/progressValue.ts";
168
168
  export { getProgressIntent, toProgressPercent, toProgressValue, } from "./ProgressBar/progressValue.ts";
169
+ export type { ProgressCardLayout, ProgressCardMetric, ProgressCardProps, } from "./ProgressCard/ProgressCard.tsx";
170
+ export { ProgressCard } from "./ProgressCard/ProgressCard.tsx";
169
171
  export type { QueryBuilderLabels, QueryBuilderProps, } from "./QueryBuilder/QueryBuilder.tsx";
170
172
  export { QueryBuilder } from "./QueryBuilder/QueryBuilder.tsx";
171
173
  export type { RadioGroupProps, RadioItem, } from "./RadioGroup/RadioGroup.tsx";
@@ -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
@@ -93,6 +93,7 @@ export { Popover } from "./Popover/Popover.js";
93
93
  export { PortraitTiles } from "./PortraitTiles/PortraitTiles.js";
94
94
  export { ProgressBar } from "./ProgressBar/ProgressBar.js";
95
95
  export { getProgressIntent, toProgressPercent, toProgressValue, } from "./ProgressBar/progressValue.js";
96
+ export { ProgressCard } from "./ProgressCard/ProgressCard.js";
96
97
  export { QueryBuilder } from "./QueryBuilder/QueryBuilder.js";
97
98
  export { RadioGroup } from "./RadioGroup/RadioGroup.js";
98
99
  export { Rail } from "./Rail/Rail.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charcuterie/ui",
3
- "version": "4.8.0",
3
+ "version": "4.9.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",
@@ -35,6 +35,8 @@ export type ProgressBarProps = Omit<
35
35
  /** Required. A progressbar with no name is a grey rectangle. */
36
36
  label: string
37
37
  max?: number
38
+ /** Content above a full-height, muted track. It stays outside the ARIA widget. */
39
+ overlay?: ReactNode
38
40
  size?: ProgressBarSize
39
41
  thresholds?: readonly ProgressThreshold[]
40
42
  value?: number
@@ -80,6 +82,7 @@ export const ProgressBar = ({
80
82
  isValueShown = false,
81
83
  label,
82
84
  max = 100,
85
+ overlay,
83
86
  size = "md",
84
87
  thresholds,
85
88
  value = 0,
@@ -133,38 +136,59 @@ export const ProgressBar = ({
133
136
  )}
134
137
 
135
138
  <div
136
- aria-busy={isIndeterminate || undefined}
137
- aria-labelledby={labelId}
138
- aria-valuemax={max}
139
- aria-valuemin={0}
140
- aria-valuenow={
141
- isIndeterminate ? undefined : clampedValue
139
+ className={
140
+ overlay == null
141
+ ? undefined
142
+ : "grid overflow-hidden rounded-xl"
142
143
  }
143
- className={toClassName(
144
- "relative w-full overflow-hidden rounded-full bg-surface-sunken",
145
- TRACK_SIZE_CLASS[size],
146
- )}
147
- role="progressbar"
148
144
  >
149
- {isIndeterminate ? (
150
- <span
151
- className={toClassName(
152
- // The sweep animates `inset-inline-start`, so it runs
153
- // the other way in RTL for free — and its
154
- // reduced-motion fallback hatches the whole track
155
- // rather than parking at one end.
156
- "charcuterie-sweep absolute inset-y-0 w-2/5 rounded-full",
157
- INTENT_SOLID_FILL_CLASS[fillIntent],
158
- )}
159
- />
160
- ) : (
161
- <span
162
- className={toClassName(
163
- "block h-full rounded-full transition-[inline-size] duration-(--duration-normal) ease-standard",
164
- INTENT_SOLID_FILL_CLASS[fillIntent],
165
- )}
166
- style={{ inlineSize: `${percent}%` }}
167
- />
145
+ <div
146
+ aria-busy={isIndeterminate || undefined}
147
+ aria-labelledby={labelId}
148
+ aria-valuemax={max}
149
+ aria-valuemin={0}
150
+ aria-valuenow={
151
+ isIndeterminate ? undefined : clampedValue
152
+ }
153
+ className={toClassName(
154
+ "relative w-full overflow-hidden rounded-full bg-surface-sunken",
155
+ overlay == null
156
+ ? TRACK_SIZE_CLASS[size]
157
+ : "h-full rounded-xl [grid-area:1/1]",
158
+ )}
159
+ role="progressbar"
160
+ >
161
+ {isIndeterminate ? (
162
+ <span
163
+ className={toClassName(
164
+ // The sweep animates `inset-inline-start`, so it runs
165
+ // the other way in RTL for free — and its
166
+ // reduced-motion fallback hatches the whole track
167
+ // rather than parking at one end.
168
+ "charcuterie-sweep absolute inset-y-0 w-2/5 rounded-full",
169
+ INTENT_SOLID_FILL_CLASS[fillIntent],
170
+ overlay == null
171
+ ? undefined
172
+ : "rounded-none opacity-30",
173
+ )}
174
+ />
175
+ ) : (
176
+ <span
177
+ className={toClassName(
178
+ "block h-full rounded-full transition-[inline-size] duration-(--duration-normal) ease-standard",
179
+ INTENT_SOLID_FILL_CLASS[fillIntent],
180
+ overlay == null
181
+ ? undefined
182
+ : "rounded-none opacity-30",
183
+ )}
184
+ style={{ inlineSize: `${percent}%` }}
185
+ />
186
+ )}
187
+ </div>
188
+ {overlay == null ? null : (
189
+ <div className="relative min-w-0 [grid-area:1/1]">
190
+ {overlay}
191
+ </div>
168
192
  )}
169
193
  </div>
170
194
  </div>
@@ -0,0 +1,43 @@
1
+ import { Canvas, Controls, Meta } from "@storybook/addon-docs/blocks";
2
+ import * as ProgressCardStories from "./ProgressCard.stories";
3
+
4
+ <Meta of={ProgressCardStories} />
5
+
6
+ # ProgressCard
7
+
8
+ A progress-first card with a large value over a filled band and distinct metric blocks.
9
+ Use it for transfers, imports, backups, or other measurable work. `Card` owns the shell;
10
+ `ProgressBar` owns clamping, the named ARIA widget, and indeterminate motion.
11
+
12
+ <Canvas of={ProgressCardStories.Playground} />
13
+
14
+ ## Ownership
15
+
16
+ The library owns layout, responsive typography, metric contrast, and whole-card intent.
17
+ The app supplies identity, media, formatted values, actions, and meaningful issue text.
18
+ Neither an absent diagnosis nor a numeric percentage implies a warning here.
19
+
20
+ `intent` colors the entire card; `progressIntent` colors the fill independently.
21
+ `valueText` is app-formatted text, while `value` and `max` drive measurable progress.
22
+ Set `isIndeterminate` when progress cannot yet be measured and use a state such as
23
+ "Preparing" for `valueText`. Set `isValueEmphasized={false}` for terminal state text.
24
+ The band overlay stays outside the progressbar role so its content retains semantics.
25
+
26
+ <Controls />
27
+
28
+ ## Layouts and states
29
+
30
+ `band` is the default. `hierarchy` places the same headline above a thin progress track.
31
+ Metrics stack when their own content area is narrow, even if media makes the whole card
32
+ wide. The viewport does not decide this. Labels should be unique.
33
+
34
+ <Canvas of={ProgressCardStories.AllVariants} />
35
+ <Canvas of={ProgressCardStories.AllStates} />
36
+ <Canvas of={ProgressCardStories.Responsive} />
37
+
38
+ ## App-owned controls
39
+
40
+ Action slots use the same controls as the rest of the app. The card does not define cancel,
41
+ retry, or confirmation policy. Additional issue details belong in `children`.
42
+
43
+ <Canvas of={ProgressCardStories.Interactive} />
@@ -0,0 +1,178 @@
1
+ import { playgroundParameters } from "@charcuterie/storybook-config/story-parameters"
2
+ import type { Meta, StoryObj } from "@storybook/react"
3
+ import { useState } from "react"
4
+
5
+ import { intentArgType } from "../argTypes.storyHelpers.ts"
6
+ import { Button } from "../Button/Button.tsx"
7
+ import {
8
+ ContainerBoard,
9
+ StoryCell,
10
+ StoryGrid,
11
+ } from "../board.storyHelpers.tsx"
12
+ import { ProgressCard } from "./ProgressCard.tsx"
13
+
14
+ const metrics = [
15
+ { label: "Speed", value: "17.2 MB/s" },
16
+ { label: "Remaining", value: "9m" },
17
+ { label: "Finishes", value: "4:44 AM" },
18
+ ]
19
+
20
+ const meta = {
21
+ title: "Components/Feedback/ProgressCard",
22
+ component: ProgressCard,
23
+ parameters: { layout: "padded" },
24
+ argTypes: {
25
+ intent: intentArgType,
26
+ progressIntent: intentArgType,
27
+ },
28
+ args: {
29
+ "aria-label": "Archive transfer",
30
+ header: "Archive transfer",
31
+ layout: "band",
32
+ metrics,
33
+ progressLabel: "Transfer progress",
34
+ status: "Transferring",
35
+ value: 82.5,
36
+ valueText: "82.5%",
37
+ },
38
+ } satisfies Meta<typeof ProgressCard>
39
+
40
+ export default meta
41
+ type Story = StoryObj<typeof meta>
42
+
43
+ export const Playground: Story = {
44
+ parameters: playgroundParameters,
45
+ }
46
+
47
+ export const AllVariants: Story = {
48
+ render: (props) => (
49
+ <StoryGrid columns={2}>
50
+ {(["band", "hierarchy"] as const).map((layout) => (
51
+ <StoryCell
52
+ align="stretch"
53
+ key={layout}
54
+ label={layout}
55
+ >
56
+ <ProgressCard
57
+ {...props}
58
+ aria-label={`Transfer ${layout}`}
59
+ layout={layout}
60
+ />
61
+ </StoryCell>
62
+ ))}
63
+ </StoryGrid>
64
+ ),
65
+ }
66
+
67
+ export const AllStates: Story = {
68
+ render: (props) => (
69
+ <StoryGrid columns={2}>
70
+ <StoryCell align="stretch" label="Preparing">
71
+ <ProgressCard
72
+ {...props}
73
+ aria-label="Preparing transfer"
74
+ isIndeterminate
75
+ isValueEmphasized={false}
76
+ metrics={[]}
77
+ status={undefined}
78
+ valueText="Preparing"
79
+ />
80
+ </StoryCell>
81
+ <StoryCell align="stretch" label="Warning">
82
+ <ProgressCard
83
+ {...props}
84
+ aria-label="Transfer warning"
85
+ intent="warning"
86
+ progressIntent="warning"
87
+ status="Needs attention"
88
+ >
89
+ <p className="mt-2 text-intent-warning-content text-sm">
90
+ The source stopped responding.
91
+ </p>
92
+ </ProgressCard>
93
+ </StoryCell>
94
+ <StoryCell align="stretch" label="Failed">
95
+ <ProgressCard
96
+ {...props}
97
+ aria-label="Failed transfer"
98
+ intent="danger"
99
+ isValueEmphasized={false}
100
+ metrics={[]}
101
+ progressIntent="danger"
102
+ status={undefined}
103
+ valueText="Failed"
104
+ />
105
+ </StoryCell>
106
+ <StoryCell align="stretch" label="Complete">
107
+ <ProgressCard
108
+ {...props}
109
+ aria-label="Complete transfer"
110
+ isValueEmphasized={false}
111
+ metrics={[]}
112
+ progressIntent="success"
113
+ status={undefined}
114
+ value={100}
115
+ valueText="Complete"
116
+ />
117
+ </StoryCell>
118
+ </StoryGrid>
119
+ ),
120
+ }
121
+
122
+ export const Responsive: Story = {
123
+ render: (props) => (
124
+ <ContainerBoard>
125
+ {(width) => (
126
+ <ProgressCard
127
+ {...props}
128
+ aria-label={`Transfer at ${width}`}
129
+ header="ARCHIVE_TRANSFER_WITH_A_VERY_LONG_UNBROKEN_NAME"
130
+ media={
131
+ <span className="rounded-md bg-surface-sunken p-2">
132
+ 07
133
+ </span>
134
+ }
135
+ actions={
136
+ <Button
137
+ appearance="outline"
138
+ intent="danger"
139
+ size="sm"
140
+ >
141
+ Cancel
142
+ </Button>
143
+ }
144
+ />
145
+ )}
146
+ </ContainerBoard>
147
+ ),
148
+ }
149
+
150
+ const ControlledProgressCard = () => {
151
+ const [isCanceled, setIsCanceled] = useState(false)
152
+ return (
153
+ <ProgressCard
154
+ aria-label="Cancelable transfer"
155
+ header="Archive transfer"
156
+ actions={
157
+ <Button
158
+ appearance="outline"
159
+ intent="danger"
160
+ isDisabled={isCanceled}
161
+ onClick={() => setIsCanceled(true)}
162
+ >
163
+ Cancel
164
+ </Button>
165
+ }
166
+ isValueEmphasized={!isCanceled}
167
+ metrics={isCanceled ? [] : metrics}
168
+ progressLabel="Transfer progress"
169
+ status={isCanceled ? undefined : "Transferring"}
170
+ value={82.5}
171
+ valueText={isCanceled ? "Canceled" : "82.5%"}
172
+ />
173
+ )
174
+ }
175
+
176
+ export const Interactive: Story = {
177
+ render: () => <ControlledProgressCard />,
178
+ }
@@ -0,0 +1,118 @@
1
+ import { composeStories } from "@storybook/react"
2
+ import { expect, userEvent, within } from "storybook/test"
3
+ import { test } from "vitest"
4
+
5
+ import { mountStory } from "../mountStory.testHelpers.ts"
6
+ import { expectAgentDrivable } from "../testing/index.ts"
7
+ import {
8
+ DESKTOP,
9
+ setViewport,
10
+ } from "../viewport.testHelpers.ts"
11
+ import * as stories from "./ProgressCard.stories.tsx"
12
+
13
+ const {
14
+ Playground,
15
+ AllVariants,
16
+ AllStates,
17
+ Responsive,
18
+ Interactive,
19
+ } = composeStories(stories)
20
+
21
+ test("the large value overlays a real named progressbar and the metrics stay outside it", async () => {
22
+ const { canvas } = await mountStory(Playground)
23
+ const card = expectAgentDrivable(canvas, {
24
+ role: "region",
25
+ name: "Archive transfer",
26
+ })
27
+ const bar = within(card).getByRole("progressbar", {
28
+ name: "Transfer progress",
29
+ })
30
+ const percentage = within(card).getByText("82.5%")
31
+ await expect(bar).toHaveAttribute("aria-valuenow", "82.5")
32
+ await expect(bar).not.toContainElement(percentage)
33
+ await expect(
34
+ bar.getBoundingClientRect().height,
35
+ ).toBeGreaterThan(50)
36
+ await expect(
37
+ bar.getBoundingClientRect().top,
38
+ ).toBeLessThan(percentage.getBoundingClientRect().top)
39
+ await expect(
40
+ within(card).getAllByRole("term"),
41
+ ).toHaveLength(3)
42
+ })
43
+
44
+ test("both layouts preserve progress semantics", async () => {
45
+ const { canvas } = await mountStory(AllVariants)
46
+ for (const layout of ["band", "hierarchy"]) {
47
+ const card = expectAgentDrivable(canvas, {
48
+ role: "region",
49
+ name: `Transfer ${layout}`,
50
+ })
51
+ await expect(
52
+ within(card).getByRole("progressbar"),
53
+ ).toHaveAttribute("aria-valuenow", "82.5")
54
+ await expect(
55
+ within(card).getByText("82.5%"),
56
+ ).toBeVisible()
57
+ }
58
+ })
59
+
60
+ test("issues tint the complete card and indeterminate progress has no invented value", async () => {
61
+ const { canvas } = await mountStory(AllStates)
62
+ const warning = expectAgentDrivable(canvas, {
63
+ role: "region",
64
+ name: "Transfer warning",
65
+ })
66
+ await expect(warning).toHaveClass(
67
+ "bg-intent-warning-surface",
68
+ )
69
+ await expect(
70
+ canvas.getByRole("region", { name: "Failed transfer" }),
71
+ ).toHaveClass("bg-intent-danger-surface")
72
+ const preparing = canvas.getByRole("region", {
73
+ name: "Preparing transfer",
74
+ })
75
+ await expect(
76
+ within(preparing).getByRole("progressbar"),
77
+ ).not.toHaveAttribute("aria-valuenow")
78
+ await expect(
79
+ within(preparing).queryByRole("term"),
80
+ ).not.toBeInTheDocument()
81
+ })
82
+
83
+ test("the card fits each container width with a long title, media, and actions", async () => {
84
+ await setViewport(DESKTOP)
85
+ const { canvas } = await mountStory(Responsive)
86
+ for (const width of ["15rem", "24rem", "34rem"]) {
87
+ const card = expectAgentDrivable(canvas, {
88
+ role: "region",
89
+ name: `Transfer at ${width}`,
90
+ })
91
+ await expect(card.scrollWidth).toBeLessThanOrEqual(
92
+ card.clientWidth,
93
+ )
94
+ const metrics = card.querySelector("dl") as HTMLElement
95
+ await expect(
96
+ getComputedStyle(metrics).gridTemplateColumns.split(
97
+ " ",
98
+ ),
99
+ ).toHaveLength(width === "34rem" ? 3 : 1)
100
+ }
101
+ })
102
+
103
+ test("the app action remains keyboard-operable above the progress band", async () => {
104
+ const { canvas } = await mountStory(Interactive)
105
+ const card = expectAgentDrivable(canvas, {
106
+ role: "region",
107
+ name: "Cancelable transfer",
108
+ })
109
+ const cancel = within(card).getByRole("button", {
110
+ name: "Cancel",
111
+ })
112
+ cancel.focus()
113
+ await userEvent.keyboard("{Enter}")
114
+ await expect(
115
+ within(card).getByText("Canceled"),
116
+ ).toBeVisible()
117
+ await expect(cancel).toBeDisabled()
118
+ })
@@ -0,0 +1,152 @@
1
+ import type { IntentName } from "@charcuterie/tokens"
2
+ import type { ReactNode } from "react"
3
+
4
+ import { Card, type CardProps } from "../Card/Card.tsx"
5
+ import { INTENT_APPEARANCE_CLASS } from "../intentStyles.ts"
6
+ import { ProgressBar } from "../ProgressBar/ProgressBar.tsx"
7
+ import { toClassName } from "../toClassName.ts"
8
+
9
+ export type ProgressCardMetric = {
10
+ label: string
11
+ value: ReactNode
12
+ }
13
+
14
+ export type ProgressCardLayout = "band" | "hierarchy"
15
+
16
+ export type ProgressCardProps = Omit<
17
+ CardProps,
18
+ "heading" | "footer"
19
+ > & {
20
+ "aria-label": string
21
+ /** App-owned identity: a title, an identifier, or a format mark. */
22
+ header: ReactNode
23
+ /** Whole-card intent is independent of the progress fill. */
24
+ intent?: IntentName
25
+ isIndeterminate?: boolean
26
+ isValueEmphasized?: boolean
27
+ layout?: ProgressCardLayout
28
+ max?: number
29
+ media?: ReactNode
30
+ metrics?: readonly ProgressCardMetric[]
31
+ progressIntent?: IntentName
32
+ progressLabel: string
33
+ status?: string
34
+ value?: number
35
+ /** App-formatted percentage or terminal state; never inferred from intent. */
36
+ valueText: string
37
+ }
38
+
39
+ /** A progress-first card. The app owns state, formatting, actions, and diagnosis. */
40
+ export const ProgressCard = ({
41
+ actions,
42
+ children,
43
+ className,
44
+ header,
45
+ intent = "neutral",
46
+ isIndeterminate = false,
47
+ isValueEmphasized = true,
48
+ layout = "band",
49
+ max,
50
+ media,
51
+ metrics = [],
52
+ progressIntent = "accent",
53
+ progressLabel,
54
+ status,
55
+ value,
56
+ valueText,
57
+ ...cardProps
58
+ }: ProgressCardProps): ReactNode => {
59
+ const headline = (
60
+ <div
61
+ className={toClassName(
62
+ "relative flex flex-wrap items-end justify-between gap-2",
63
+ layout === "band" ? "p-3" : "mb-3",
64
+ )}
65
+ >
66
+ {status ? (
67
+ <span className="min-w-0 wrap-anywhere font-medium text-content-secondary text-sm">
68
+ {status}
69
+ </span>
70
+ ) : null}
71
+ <span
72
+ className={toClassName(
73
+ "min-w-0 wrap-anywhere text-end tabular-nums",
74
+ isValueEmphasized
75
+ ? "font-bold text-4xl leading-none tracking-tight cq-sm:text-[3.25rem]"
76
+ : "font-semibold text-xl",
77
+ )}
78
+ >
79
+ {valueText}
80
+ </span>
81
+ </div>
82
+ )
83
+
84
+ return (
85
+ <Card
86
+ {...cardProps}
87
+ className={toClassName(
88
+ "relative rounded-2xl",
89
+ intent === "neutral"
90
+ ? undefined
91
+ : INTENT_APPEARANCE_CLASS[intent].soft,
92
+ "text-content-primary",
93
+ className,
94
+ )}
95
+ >
96
+ <div className="flex gap-3.5">
97
+ {media ? (
98
+ <div className="flex shrink-0 flex-col items-start gap-2">
99
+ {media}
100
+ </div>
101
+ ) : null}
102
+ <div className="min-w-0 flex-1">
103
+ <div className="flex flex-wrap items-start justify-between gap-3">
104
+ <div className="min-w-0 flex-1 basis-40 wrap-anywhere">
105
+ {header}
106
+ </div>
107
+ {actions ? (
108
+ <div className="relative z-10 flex flex-wrap items-center gap-2">
109
+ {actions}
110
+ </div>
111
+ ) : null}
112
+ </div>
113
+ <div className="mt-5">
114
+ {layout === "hierarchy" ? headline : null}
115
+ <ProgressBar
116
+ intent={progressIntent}
117
+ isIndeterminate={isIndeterminate}
118
+ label={progressLabel}
119
+ max={max}
120
+ overlay={
121
+ layout === "band" ? headline : undefined
122
+ }
123
+ value={value}
124
+ />
125
+ </div>
126
+ {metrics.length > 0 ? (
127
+ <div className="@container">
128
+ <dl className="mt-3 grid grid-cols-1 gap-2 cq-sm:grid-cols-3">
129
+ {metrics.map(
130
+ ({ label, value: metricValue }) => (
131
+ <div
132
+ className="flex items-baseline justify-between gap-2 rounded-lg border border-border-subtle bg-surface-sunken/70 px-2.5 py-2 cq-sm:block"
133
+ key={label}
134
+ >
135
+ <dt className="min-w-0 wrap-anywhere font-semibold text-content-muted text-xs uppercase tracking-wide">
136
+ {label}
137
+ </dt>
138
+ <dd className="m-0 min-w-0 wrap-anywhere font-semibold text-lg tabular-nums cq-sm:mt-1">
139
+ {metricValue ?? "—"}
140
+ </dd>
141
+ </div>
142
+ ),
143
+ )}
144
+ </dl>
145
+ </div>
146
+ ) : null}
147
+ {children}
148
+ </div>
149
+ </div>
150
+ </Card>
151
+ )
152
+ }
package/src/index.ts CHANGED
@@ -364,6 +364,12 @@ export {
364
364
  toProgressPercent,
365
365
  toProgressValue,
366
366
  } from "./ProgressBar/progressValue.ts"
367
+ export type {
368
+ ProgressCardLayout,
369
+ ProgressCardMetric,
370
+ ProgressCardProps,
371
+ } from "./ProgressCard/ProgressCard.tsx"
372
+ export { ProgressCard } from "./ProgressCard/ProgressCard.tsx"
367
373
  export type {
368
374
  QueryBuilderLabels,
369
375
  QueryBuilderProps,
@@ -251,6 +251,8 @@ test("a container-query component is never storied in a shrink-to-fit cell", ()
251
251
  // answer neither, because a track is about the same width in
252
252
  // both.
253
253
  "PortraitTiles",
254
+ // Metrics query the space remaining beside the media, not the entire card.
255
+ "ProgressCard",
254
256
  // `Stepper`'s container is the one that decides whether a
255
257
  // `horizontal` sequence is actually horizontal. Below `--cq-md`
256
258
  // it falls back to the vertical column, because four steps side
@@ -612,7 +614,8 @@ test("the barrel is the only place components are re-exported", async () => {
612
614
  // consumer deciding whether an item is on screen must ask the
613
615
  // question the same way the bars are placed, or the two answers
614
616
  // drift by a day and nothing says so.
615
- expect(componentNames.length).toBe(66)
617
+ // ProgressCard composes Card and ProgressBar for progress-first dashboards.
618
+ expect(componentNames.length).toBe(67)
616
619
 
617
620
  for (const name of componentNames) {
618
621
  expect(barrel).toContain(`export { ${name} }`)