@fairmint/ui 0.4.17 → 0.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- var propTypes = { exports: {} };
4
- exports.__module = propTypes;
2
+ const _commonjsHelpers = require("./_commonjsHelpers.cjs");
3
+ const index = require("../node_modules/fast-deep-equal/index.cjs");
4
+ var fastDeepEqualExports = index.__require();
5
+ const isEqual = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(fastDeepEqualExports);
6
+ module.exports = isEqual;
5
7
  //# sourceMappingURL=index3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,5 +1,8 @@
1
- var propTypes = { exports: {} };
1
+ import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
+ import { __require as requireFastDeepEqual } from "../node_modules/fast-deep-equal/index.js";
3
+ var fastDeepEqualExports = requireFastDeepEqual();
4
+ const isEqual = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports);
2
5
  export {
3
- propTypes as __module
6
+ isEqual as default
4
7
  };
5
8
  //# sourceMappingURL=index3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
- const _commonjsHelpers = require("./_commonjsHelpers.cjs");
3
- const index = require("../node_modules/fast-deep-equal/index.cjs");
4
- var fastDeepEqualExports = index.__require();
5
- const isEqual = /* @__PURE__ */ _commonjsHelpers.getDefaultExportFromCjs(fastDeepEqualExports);
6
- module.exports = isEqual;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ var propTypes = { exports: {} };
4
+ exports.__module = propTypes;
7
5
  //# sourceMappingURL=index4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index4.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,8 +1,5 @@
1
- import { getDefaultExportFromCjs } from "./_commonjsHelpers.js";
2
- import { __require as requireFastDeepEqual } from "../node_modules/fast-deep-equal/index.js";
3
- var fastDeepEqualExports = requireFastDeepEqual();
4
- const isEqual = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports);
1
+ var propTypes = { exports: {} };
5
2
  export {
6
- isEqual as default
3
+ propTypes as __module
7
4
  };
8
5
  //# sourceMappingURL=index4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
4
5
  const index = require("../../../theme/index.cjs");
5
6
  const layout = require("../../primitives/layout.cjs");
6
7
  ;/* empty css */
@@ -20,11 +21,36 @@ const CheckIcon = () => /* @__PURE__ */ jsxRuntime.jsx(
20
21
  children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m5 13 4 4 10-10" })
21
22
  }
22
23
  );
24
+ const StopIcon = () => /* @__PURE__ */ jsxRuntime.jsx(
25
+ "svg",
26
+ {
27
+ width: "11",
28
+ height: "11",
29
+ viewBox: "0 0 24 24",
30
+ fill: "none",
31
+ stroke: "currentColor",
32
+ strokeWidth: "2.5",
33
+ strokeLinecap: "round",
34
+ strokeLinejoin: "round",
35
+ "aria-hidden": "true",
36
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M7 7l10 10M17 7 7 17" })
37
+ }
38
+ );
39
+ const STATUS_TEXT = {
40
+ complete: "(done)",
41
+ active: void 0,
42
+ pending: void 0,
43
+ stopped: "(stopped)"
44
+ };
23
45
  const resolveActiveStep = (activeStep, stepCount) => {
24
46
  if (!Number.isFinite(activeStep)) return 1;
25
47
  return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);
26
48
  };
27
- const getStepProgressStatus = (step, stepNumber, activeStep) => {
49
+ const getStepProgressStatus = (step, stepNumber, activeStep, variant = "navigation") => {
50
+ if (variant === "status") {
51
+ if (step.stopped) return "stopped";
52
+ if (step.completed) return "complete";
53
+ }
28
54
  if (stepNumber === activeStep) return "active";
29
55
  if (step.completed ?? stepNumber < activeStep) return "complete";
30
56
  return "pending";
@@ -33,11 +59,28 @@ function StepProgress({
33
59
  steps,
34
60
  activeStep,
35
61
  orientation = "horizontal",
62
+ variant = "navigation",
36
63
  onStepChange,
37
64
  ariaLabel = "Progress"
38
65
  }) {
66
+ const listRef = React.useRef(null);
67
+ const resolvedActiveStep = resolveActiveStep(activeStep, Math.max(steps.length, 1));
68
+ React.useEffect(() => {
69
+ const list = listRef.current;
70
+ const pill = list?.children[resolvedActiveStep - 1]?.querySelector(
71
+ ".fairmint-step-progress__pill"
72
+ );
73
+ if (!list || !pill || list.scrollWidth <= list.clientWidth) return;
74
+ const listBox = list.getBoundingClientRect();
75
+ const pillBox = pill.getBoundingClientRect();
76
+ if (pillBox.left < listBox.left) {
77
+ list.scrollLeft -= listBox.left - pillBox.left;
78
+ } else if (pillBox.right > listBox.right) {
79
+ list.scrollLeft += pillBox.right - listBox.right;
80
+ }
81
+ }, [resolvedActiveStep]);
39
82
  if (steps.length === 0) return null;
40
- const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);
83
+ const isStatus = variant === "status";
41
84
  const rootStyle = {
42
85
  "--fairmint-step-progress-brand": index.brandColors.indigo,
43
86
  // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.
@@ -51,25 +94,43 @@ function StepProgress({
51
94
  // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.
52
95
  "--fairmint-step-progress-surface-selected": index.fairmintVars.colorBgBrandSubtleHover,
53
96
  "--fairmint-step-progress-active-border": index.indigoColors[3],
54
- "--fairmint-step-progress-active-indicator-text": index.commonColors.white,
97
+ // Not brand indigo: no ink clears AA on it. Both follow the scheme, giving white on
98
+ // indigo[6] (6.29:1) in light and dark ink on indigo[2] (11.8:1) in dark.
99
+ "--fairmint-step-progress-active-indicator": index.fairmintVars.colorIconOnSurfaceSelected,
100
+ "--fairmint-step-progress-active-indicator-text": index.fairmintVars.colorTextInverse,
55
101
  "--fairmint-step-progress-complete-border": index.indigoColors[3],
56
- "--fairmint-step-progress-complete-text": index.fairmintVars.colorIconOnSurfaceSelected
102
+ "--fairmint-step-progress-complete-text": index.fairmintVars.colorIconOnSurfaceSelected,
103
+ // The detail line is the one place that needs muted ink; pending labels above it stay primary.
104
+ "--fairmint-step-progress-detail": index.fairmintVars.colorTextSecondary,
105
+ "--fairmint-step-progress-stopped": index.fairmintVars.colorErrorSolid,
106
+ "--fairmint-step-progress-stopped-indicator-text": index.commonColors.white,
107
+ "--fairmint-step-progress-stopped-text": index.fairmintVars.colorErrorText,
108
+ // Status rows lay out as a grid; the last column never stretches, so it stays flush right.
109
+ "--fairmint-step-progress-columns": steps.length > 1 ? `repeat(${steps.length - 1}, auto) minmax(min-content, max-content)` : "minmax(min-content, max-content)"
57
110
  };
58
111
  return /* @__PURE__ */ jsxRuntime.jsx(
59
112
  layout.Box,
60
113
  {
61
- component: "nav",
114
+ component: isStatus ? "div" : "nav",
115
+ role: isStatus ? "group" : void 0,
62
116
  "aria-label": ariaLabel,
63
117
  className: "fairmint-step-progress",
64
118
  "data-orientation": orientation,
119
+ "data-variant": variant,
65
120
  style: rootStyle,
66
- children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "fairmint-step-progress__list", children: steps.map((step, index2) => {
121
+ children: /* @__PURE__ */ jsxRuntime.jsx("ol", { ref: listRef, className: "fairmint-step-progress__list", children: steps.map((step, index2) => {
67
122
  const stepNumber = index2 + 1;
68
- const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep);
69
- const isInteractive = Boolean(onStepChange) && !step.disabled;
123
+ const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep, variant);
124
+ const isInteractive = !isStatus && Boolean(onStepChange) && !step.disabled;
125
+ const detail = isStatus ? step.detail : void 0;
126
+ const statusText = isStatus ? STATUS_TEXT[status] : void 0;
70
127
  const pillContent = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
71
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-step-progress__indicator", "aria-hidden": "true", children: status === "complete" ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, {}) : stepNumber }),
72
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-step-progress__label", children: step.label })
128
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-step-progress__indicator", "aria-hidden": "true", children: status === "complete" ? /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, {}) : status === "stopped" ? /* @__PURE__ */ jsxRuntime.jsx(StopIcon, {}) : stepNumber }),
129
+ detail ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "fairmint-step-progress__text", children: [
130
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-step-progress__label", children: step.label }),
131
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-step-progress__detail", children: detail })
132
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-step-progress__label", children: step.label }),
133
+ statusText ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "fairmint-step-progress__status-text", children: statusText }) : null
73
134
  ] });
74
135
  return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "fairmint-step-progress__item", children: [
75
136
  isInteractive ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"StepProgress.cjs","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"sourcesContent":["import { brandColors, commonColors, fairmintVars, indigoColors } from \"../../../theme\";\nimport { Box, UnstyledButton } from \"../../primitives/layout\";\nimport \"./StepProgress.css\";\n\nexport type StepProgressOrientation = \"horizontal\" | \"vertical\";\nexport type StepProgressStepStatus = \"complete\" | \"active\" | \"pending\";\n\nexport interface StepProgressStep {\n /** Visible label in the progress pill. */\n label: string;\n /** Explicitly mark a step complete when completion is not derived from activeStep. */\n completed?: boolean;\n /** Prevent navigation to this step when onStepChange is supplied. */\n disabled?: boolean;\n}\n\nexport interface StepProgressProps {\n /** Ordered steps. The visible number is derived from this array and is 1-indexed. */\n steps: readonly StepProgressStep[];\n /** Current step number. This is intentionally 1-indexed to match StepCard and the UI. */\n activeStep: number;\n /** Row of pills for in-app progress or a rail for onboarding. @default \"horizontal\" */\n orientation?: StepProgressOrientation;\n /** Called with the 1-indexed step number when a pill is activated. */\n onStepChange?: (step: number) => void;\n /** Accessible label for the navigation. @default \"Progress\" */\n ariaLabel?: string;\n}\n\nconst CheckIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m5 13 4 4 10-10\" />\n </svg>\n);\n\nconst resolveActiveStep = (activeStep: number, stepCount: number) => {\n if (!Number.isFinite(activeStep)) return 1;\n return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);\n};\n\nexport const getStepProgressStatus = (\n step: StepProgressStep,\n stepNumber: number,\n activeStep: number,\n): StepProgressStepStatus => {\n if (stepNumber === activeStep) return \"active\";\n if (step.completed ?? stepNumber < activeStep) return \"complete\";\n return \"pending\";\n};\n\n/**\n * Numbered progress pills shared by horizontal in-app flows and vertical\n * onboarding rails. Owns navigation only — the numbered content container is\n * `StepCard`, and `StepFlow` pairs the two into the canonical shell.\n */\nexport function StepProgress({\n steps,\n activeStep,\n orientation = \"horizontal\",\n onStepChange,\n ariaLabel = \"Progress\",\n}: StepProgressProps) {\n if (steps.length === 0) return null;\n\n const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);\n const rootStyle = {\n \"--fairmint-step-progress-brand\": brandColors.indigo,\n // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.\n \"--fairmint-step-progress-border\": fairmintVars.colorTextSecondary,\n // Kept off the ring token: the ring carries the step number and needs 3:1, the\n // connector is decorative and reads as a hairline between pills.\n \"--fairmint-step-progress-connector\": fairmintVars.colorBorderDefault,\n \"--fairmint-step-progress-text-primary\": fairmintVars.colorTextPrimary,\n // Pending labels use primary ink; active hierarchy is weight + fill, not mute gray.\n \"--fairmint-step-progress-text-secondary\": fairmintVars.colorTextPrimary,\n // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.\n \"--fairmint-step-progress-surface-selected\": fairmintVars.colorBgBrandSubtleHover,\n \"--fairmint-step-progress-active-border\": indigoColors[3],\n \"--fairmint-step-progress-active-indicator-text\": commonColors.white,\n \"--fairmint-step-progress-complete-border\": indigoColors[3],\n \"--fairmint-step-progress-complete-text\": fairmintVars.colorIconOnSurfaceSelected,\n };\n\n return (\n <Box\n component=\"nav\"\n aria-label={ariaLabel}\n className=\"fairmint-step-progress\"\n data-orientation={orientation}\n style={rootStyle}\n >\n <ol className=\"fairmint-step-progress__list\">\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep);\n const isInteractive = Boolean(onStepChange) && !step.disabled;\n const pillContent = (\n <>\n <span className=\"fairmint-step-progress__indicator\" aria-hidden=\"true\">\n {status === \"complete\" ? <CheckIcon /> : stepNumber}\n </span>\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n </>\n );\n\n return (\n <li key={`${stepNumber}-${step.label}`} className=\"fairmint-step-progress__item\">\n {isInteractive ? (\n <UnstyledButton\n type=\"button\"\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-interactive=\"true\"\n data-disabled=\"false\"\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-label={`Step ${stepNumber}: ${step.label}`}\n onClick={() => onStepChange?.(stepNumber)}\n >\n {pillContent}\n </UnstyledButton>\n ) : (\n <span\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-disabled={step.disabled ? \"true\" : \"false\"}\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n title={`Step ${stepNumber}: ${step.label}`}\n >\n {pillContent}\n </span>\n )}\n {index < steps.length - 1 ? (\n <span\n className=\"fairmint-step-progress__connector\"\n data-state={status}\n aria-hidden=\"true\"\n />\n ) : null}\n </li>\n );\n })}\n </ol>\n </Box>\n );\n}\n\nexport const STEP_PROGRESS_MOBILE_BREAKPOINT = \"48em\";\n"],"names":["jsx","brandColors","fairmintVars","indigoColors","commonColors","Box","index","jsxs","Fragment","UnstyledButton"],"mappings":"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"}
1
+ {"version":3,"file":"StepProgress.cjs","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { brandColors, commonColors, fairmintVars, indigoColors } from \"../../../theme\";\nimport { Box, UnstyledButton } from \"../../primitives/layout\";\nimport \"./StepProgress.css\";\n\nexport type StepProgressOrientation = \"horizontal\" | \"vertical\";\nexport type StepProgressVariant = \"navigation\" | \"status\";\nexport type StepProgressStepStatus = \"complete\" | \"active\" | \"pending\" | \"stopped\";\n\nexport interface StepProgressStep {\n /** Visible label in the progress pill. */\n label: string;\n /** Explicitly mark a step complete when completion is not derived from activeStep. */\n completed?: boolean;\n /** Prevent navigation to this step when onStepChange is supplied. */\n disabled?: boolean;\n /** Second line under the label, such as when the step happened. Shown by the status variant only. */\n detail?: string;\n /** The record stopped at this step (rejected, failed, cancelled). Shown by the status variant only. */\n stopped?: boolean;\n}\n\nexport interface StepProgressProps {\n /** Ordered steps. The visible number is derived from this array and is 1-indexed. */\n steps: readonly StepProgressStep[];\n /** Current step number. This is intentionally 1-indexed to match StepCard and the UI. */\n activeStep: number;\n /** Row of pills for in-app progress or a rail for onboarding. @default \"horizontal\" */\n orientation?: StepProgressOrientation;\n /**\n * `navigation` is where the user is in a flow they are filling in. `status` is where a\n * record is in its lifecycle: read-only, no pill, and each step can carry a `detail`.\n * @default \"navigation\"\n */\n variant?: StepProgressVariant;\n /** Called with the 1-indexed step number when a pill is activated. Ignored by the status variant. */\n onStepChange?: (step: number) => void;\n /** Accessible label for the navigation. @default \"Progress\" */\n ariaLabel?: string;\n}\n\nconst CheckIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m5 13 4 4 10-10\" />\n </svg>\n);\n\nconst StopIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M7 7l10 10M17 7 7 17\" />\n </svg>\n);\n\nconst STATUS_TEXT: Readonly<Record<StepProgressStepStatus, string | undefined>> = {\n complete: \"(done)\",\n active: undefined,\n pending: undefined,\n stopped: \"(stopped)\",\n};\n\nconst resolveActiveStep = (activeStep: number, stepCount: number) => {\n if (!Number.isFinite(activeStep)) return 1;\n return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);\n};\n\nexport const getStepProgressStatus = (\n step: StepProgressStep,\n stepNumber: number,\n activeStep: number,\n variant: StepProgressVariant = \"navigation\",\n): StepProgressStepStatus => {\n if (variant === \"status\") {\n if (step.stopped) return \"stopped\";\n // A finished record has no current step: its last step is done, not in progress.\n if (step.completed) return \"complete\";\n }\n if (stepNumber === activeStep) return \"active\";\n if (step.completed ?? stepNumber < activeStep) return \"complete\";\n return \"pending\";\n};\n\n/**\n * Numbered progress pills shared by horizontal in-app flows and vertical\n * onboarding rails. Owns navigation only — the numbered content container is\n * `StepCard`, and `StepFlow` pairs the two into the canonical shell.\n *\n * The `status` variant reuses the same anatomy as a read-only lifecycle track,\n * so a record's progress and a flow's progress look like one component.\n */\nexport function StepProgress({\n steps,\n activeStep,\n orientation = \"horizontal\",\n variant = \"navigation\",\n onStepChange,\n ariaLabel = \"Progress\",\n}: StepProgressProps) {\n const listRef = useRef<HTMLOListElement>(null);\n const resolvedActiveStep = resolveActiveStep(activeStep, Math.max(steps.length, 1));\n\n // When the row scrolls, keep the current step in view as it changes. Scrolls the\n // list only — scrollIntoView would also move the page to the progress row.\n useEffect(() => {\n const list = listRef.current;\n const pill = list?.children[resolvedActiveStep - 1]?.querySelector<HTMLElement>(\n \".fairmint-step-progress__pill\",\n );\n if (!list || !pill || list.scrollWidth <= list.clientWidth) return;\n const listBox = list.getBoundingClientRect();\n const pillBox = pill.getBoundingClientRect();\n if (pillBox.left < listBox.left) {\n list.scrollLeft -= listBox.left - pillBox.left;\n } else if (pillBox.right > listBox.right) {\n list.scrollLeft += pillBox.right - listBox.right;\n }\n }, [resolvedActiveStep]);\n\n if (steps.length === 0) return null;\n\n const isStatus = variant === \"status\";\n const rootStyle = {\n \"--fairmint-step-progress-brand\": brandColors.indigo,\n // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.\n \"--fairmint-step-progress-border\": fairmintVars.colorTextSecondary,\n // Kept off the ring token: the ring carries the step number and needs 3:1, the\n // connector is decorative and reads as a hairline between pills.\n \"--fairmint-step-progress-connector\": fairmintVars.colorBorderDefault,\n \"--fairmint-step-progress-text-primary\": fairmintVars.colorTextPrimary,\n // Pending labels use primary ink; active hierarchy is weight + fill, not mute gray.\n \"--fairmint-step-progress-text-secondary\": fairmintVars.colorTextPrimary,\n // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.\n \"--fairmint-step-progress-surface-selected\": fairmintVars.colorBgBrandSubtleHover,\n \"--fairmint-step-progress-active-border\": indigoColors[3],\n // Not brand indigo: no ink clears AA on it. Both follow the scheme, giving white on\n // indigo[6] (6.29:1) in light and dark ink on indigo[2] (11.8:1) in dark.\n \"--fairmint-step-progress-active-indicator\": fairmintVars.colorIconOnSurfaceSelected,\n \"--fairmint-step-progress-active-indicator-text\": fairmintVars.colorTextInverse,\n \"--fairmint-step-progress-complete-border\": indigoColors[3],\n \"--fairmint-step-progress-complete-text\": fairmintVars.colorIconOnSurfaceSelected,\n // The detail line is the one place that needs muted ink; pending labels above it stay primary.\n \"--fairmint-step-progress-detail\": fairmintVars.colorTextSecondary,\n \"--fairmint-step-progress-stopped\": fairmintVars.colorErrorSolid,\n \"--fairmint-step-progress-stopped-indicator-text\": commonColors.white,\n \"--fairmint-step-progress-stopped-text\": fairmintVars.colorErrorText,\n // Status rows lay out as a grid; the last column never stretches, so it stays flush right.\n \"--fairmint-step-progress-columns\":\n steps.length > 1\n ? `repeat(${steps.length - 1}, auto) minmax(min-content, max-content)`\n : \"minmax(min-content, max-content)\",\n };\n\n return (\n <Box\n // A status track is not navigation: nothing in it goes anywhere.\n component={isStatus ? \"div\" : \"nav\"}\n role={isStatus ? \"group\" : undefined}\n aria-label={ariaLabel}\n className=\"fairmint-step-progress\"\n data-orientation={orientation}\n data-variant={variant}\n style={rootStyle}\n >\n <ol ref={listRef} className=\"fairmint-step-progress__list\">\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep, variant);\n const isInteractive = !isStatus && Boolean(onStepChange) && !step.disabled;\n const detail = isStatus ? step.detail : undefined;\n // The indicator icons are aria-hidden, so a status track says done and stopped in words.\n const statusText = isStatus ? STATUS_TEXT[status] : undefined;\n const pillContent = (\n <>\n <span className=\"fairmint-step-progress__indicator\" aria-hidden=\"true\">\n {status === \"complete\" ? (\n <CheckIcon />\n ) : status === \"stopped\" ? (\n <StopIcon />\n ) : (\n stepNumber\n )}\n </span>\n {detail ? (\n <span className=\"fairmint-step-progress__text\">\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n <span className=\"fairmint-step-progress__detail\">{detail}</span>\n </span>\n ) : (\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n )}\n {statusText ? (\n <span className=\"fairmint-step-progress__status-text\">{statusText}</span>\n ) : null}\n </>\n );\n\n return (\n <li key={`${stepNumber}-${step.label}`} className=\"fairmint-step-progress__item\">\n {isInteractive ? (\n <UnstyledButton\n type=\"button\"\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-interactive=\"true\"\n data-disabled=\"false\"\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-label={`Step ${stepNumber}: ${step.label}`}\n onClick={() => onStepChange?.(stepNumber)}\n >\n {pillContent}\n </UnstyledButton>\n ) : (\n <span\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-disabled={step.disabled ? \"true\" : \"false\"}\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n title={`Step ${stepNumber}: ${step.label}`}\n >\n {pillContent}\n </span>\n )}\n {index < steps.length - 1 ? (\n <span\n className=\"fairmint-step-progress__connector\"\n data-state={status}\n aria-hidden=\"true\"\n />\n ) : null}\n </li>\n );\n })}\n </ol>\n </Box>\n );\n}\n\nexport const STEP_PROGRESS_MOBILE_BREAKPOINT = \"48em\";\n"],"names":["jsx","useRef","useEffect","brandColors","fairmintVars","indigoColors","commonColors","Box","index","jsxs","Fragment","UnstyledButton"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export type StepProgressOrientation = "horizontal" | "vertical";
2
- export type StepProgressStepStatus = "complete" | "active" | "pending";
2
+ export type StepProgressVariant = "navigation" | "status";
3
+ export type StepProgressStepStatus = "complete" | "active" | "pending" | "stopped";
3
4
  export interface StepProgressStep {
4
5
  /** Visible label in the progress pill. */
5
6
  label: string;
@@ -7,6 +8,10 @@ export interface StepProgressStep {
7
8
  completed?: boolean;
8
9
  /** Prevent navigation to this step when onStepChange is supplied. */
9
10
  disabled?: boolean;
11
+ /** Second line under the label, such as when the step happened. Shown by the status variant only. */
12
+ detail?: string;
13
+ /** The record stopped at this step (rejected, failed, cancelled). Shown by the status variant only. */
14
+ stopped?: boolean;
10
15
  }
11
16
  export interface StepProgressProps {
12
17
  /** Ordered steps. The visible number is derived from this array and is 1-indexed. */
@@ -15,17 +20,26 @@ export interface StepProgressProps {
15
20
  activeStep: number;
16
21
  /** Row of pills for in-app progress or a rail for onboarding. @default "horizontal" */
17
22
  orientation?: StepProgressOrientation;
18
- /** Called with the 1-indexed step number when a pill is activated. */
23
+ /**
24
+ * `navigation` is where the user is in a flow they are filling in. `status` is where a
25
+ * record is in its lifecycle: read-only, no pill, and each step can carry a `detail`.
26
+ * @default "navigation"
27
+ */
28
+ variant?: StepProgressVariant;
29
+ /** Called with the 1-indexed step number when a pill is activated. Ignored by the status variant. */
19
30
  onStepChange?: (step: number) => void;
20
31
  /** Accessible label for the navigation. @default "Progress" */
21
32
  ariaLabel?: string;
22
33
  }
23
- export declare const getStepProgressStatus: (step: StepProgressStep, stepNumber: number, activeStep: number) => StepProgressStepStatus;
34
+ export declare const getStepProgressStatus: (step: StepProgressStep, stepNumber: number, activeStep: number, variant?: StepProgressVariant) => StepProgressStepStatus;
24
35
  /**
25
36
  * Numbered progress pills shared by horizontal in-app flows and vertical
26
37
  * onboarding rails. Owns navigation only — the numbered content container is
27
38
  * `StepCard`, and `StepFlow` pairs the two into the canonical shell.
39
+ *
40
+ * The `status` variant reuses the same anatomy as a read-only lifecycle track,
41
+ * so a record's progress and a flow's progress look like one component.
28
42
  */
29
- export declare function StepProgress({ steps, activeStep, orientation, onStepChange, ariaLabel, }: StepProgressProps): import("react").JSX.Element | null;
43
+ export declare function StepProgress({ steps, activeStep, orientation, variant, onStepChange, ariaLabel, }: StepProgressProps): import("react").JSX.Element | null;
30
44
  export declare const STEP_PROGRESS_MOBILE_BREAKPOINT = "48em";
31
45
  //# sourceMappingURL=StepProgress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepProgress.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"names":[],"mappings":"AAEA,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuBD,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,EACtB,YAAY,MAAM,EAClB,YAAY,MAAM,KACjB,sBAIF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,UAAU,EACV,WAA0B,EAC1B,YAAY,EACZ,SAAsB,GACvB,EAAE,iBAAiB,sCAoFnB;AAED,eAAO,MAAM,+BAA+B,SAAS,CAAC"}
1
+ {"version":3,"file":"StepProgress.d.ts","sourceRoot":"","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"names":[],"mappings":"AAGA,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC1D,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qGAAqG;IACrG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,qGAAqG;IACrG,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8CD,eAAO,MAAM,qBAAqB,GAChC,MAAM,gBAAgB,EACtB,YAAY,MAAM,EAClB,YAAY,MAAM,EAClB,UAAS,mBAAkC,KAC1C,sBASF,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,UAAU,EACV,WAA0B,EAC1B,OAAsB,EACtB,YAAY,EACZ,SAAsB,GACvB,EAAE,iBAAiB,sCA2InB;AAED,eAAO,MAAM,+BAA+B,SAAS,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { fairmintVars, indigoColors, commonColors, brandColors } from "../../../theme/index.js";
2
+ import { useRef, useEffect } from "react";
3
+ import { fairmintVars, commonColors, indigoColors, brandColors } from "../../../theme/index.js";
3
4
  import { Box } from "../../primitives/layout.js";
4
5
  /* empty css */
5
6
  import { UnstyledButton } from "../../../node_modules/@mantine/core/esm/components/UnstyledButton/UnstyledButton.js";
@@ -18,11 +19,36 @@ const CheckIcon = () => /* @__PURE__ */ jsx(
18
19
  children: /* @__PURE__ */ jsx("path", { d: "m5 13 4 4 10-10" })
19
20
  }
20
21
  );
22
+ const StopIcon = () => /* @__PURE__ */ jsx(
23
+ "svg",
24
+ {
25
+ width: "11",
26
+ height: "11",
27
+ viewBox: "0 0 24 24",
28
+ fill: "none",
29
+ stroke: "currentColor",
30
+ strokeWidth: "2.5",
31
+ strokeLinecap: "round",
32
+ strokeLinejoin: "round",
33
+ "aria-hidden": "true",
34
+ children: /* @__PURE__ */ jsx("path", { d: "M7 7l10 10M17 7 7 17" })
35
+ }
36
+ );
37
+ const STATUS_TEXT = {
38
+ complete: "(done)",
39
+ active: void 0,
40
+ pending: void 0,
41
+ stopped: "(stopped)"
42
+ };
21
43
  const resolveActiveStep = (activeStep, stepCount) => {
22
44
  if (!Number.isFinite(activeStep)) return 1;
23
45
  return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);
24
46
  };
25
- const getStepProgressStatus = (step, stepNumber, activeStep) => {
47
+ const getStepProgressStatus = (step, stepNumber, activeStep, variant = "navigation") => {
48
+ if (variant === "status") {
49
+ if (step.stopped) return "stopped";
50
+ if (step.completed) return "complete";
51
+ }
26
52
  if (stepNumber === activeStep) return "active";
27
53
  if (step.completed ?? stepNumber < activeStep) return "complete";
28
54
  return "pending";
@@ -31,11 +57,28 @@ function StepProgress({
31
57
  steps,
32
58
  activeStep,
33
59
  orientation = "horizontal",
60
+ variant = "navigation",
34
61
  onStepChange,
35
62
  ariaLabel = "Progress"
36
63
  }) {
64
+ const listRef = useRef(null);
65
+ const resolvedActiveStep = resolveActiveStep(activeStep, Math.max(steps.length, 1));
66
+ useEffect(() => {
67
+ const list = listRef.current;
68
+ const pill = list?.children[resolvedActiveStep - 1]?.querySelector(
69
+ ".fairmint-step-progress__pill"
70
+ );
71
+ if (!list || !pill || list.scrollWidth <= list.clientWidth) return;
72
+ const listBox = list.getBoundingClientRect();
73
+ const pillBox = pill.getBoundingClientRect();
74
+ if (pillBox.left < listBox.left) {
75
+ list.scrollLeft -= listBox.left - pillBox.left;
76
+ } else if (pillBox.right > listBox.right) {
77
+ list.scrollLeft += pillBox.right - listBox.right;
78
+ }
79
+ }, [resolvedActiveStep]);
37
80
  if (steps.length === 0) return null;
38
- const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);
81
+ const isStatus = variant === "status";
39
82
  const rootStyle = {
40
83
  "--fairmint-step-progress-brand": brandColors.indigo,
41
84
  // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.
@@ -49,25 +92,43 @@ function StepProgress({
49
92
  // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.
50
93
  "--fairmint-step-progress-surface-selected": fairmintVars.colorBgBrandSubtleHover,
51
94
  "--fairmint-step-progress-active-border": indigoColors[3],
52
- "--fairmint-step-progress-active-indicator-text": commonColors.white,
95
+ // Not brand indigo: no ink clears AA on it. Both follow the scheme, giving white on
96
+ // indigo[6] (6.29:1) in light and dark ink on indigo[2] (11.8:1) in dark.
97
+ "--fairmint-step-progress-active-indicator": fairmintVars.colorIconOnSurfaceSelected,
98
+ "--fairmint-step-progress-active-indicator-text": fairmintVars.colorTextInverse,
53
99
  "--fairmint-step-progress-complete-border": indigoColors[3],
54
- "--fairmint-step-progress-complete-text": fairmintVars.colorIconOnSurfaceSelected
100
+ "--fairmint-step-progress-complete-text": fairmintVars.colorIconOnSurfaceSelected,
101
+ // The detail line is the one place that needs muted ink; pending labels above it stay primary.
102
+ "--fairmint-step-progress-detail": fairmintVars.colorTextSecondary,
103
+ "--fairmint-step-progress-stopped": fairmintVars.colorErrorSolid,
104
+ "--fairmint-step-progress-stopped-indicator-text": commonColors.white,
105
+ "--fairmint-step-progress-stopped-text": fairmintVars.colorErrorText,
106
+ // Status rows lay out as a grid; the last column never stretches, so it stays flush right.
107
+ "--fairmint-step-progress-columns": steps.length > 1 ? `repeat(${steps.length - 1}, auto) minmax(min-content, max-content)` : "minmax(min-content, max-content)"
55
108
  };
56
109
  return /* @__PURE__ */ jsx(
57
110
  Box,
58
111
  {
59
- component: "nav",
112
+ component: isStatus ? "div" : "nav",
113
+ role: isStatus ? "group" : void 0,
60
114
  "aria-label": ariaLabel,
61
115
  className: "fairmint-step-progress",
62
116
  "data-orientation": orientation,
117
+ "data-variant": variant,
63
118
  style: rootStyle,
64
- children: /* @__PURE__ */ jsx("ol", { className: "fairmint-step-progress__list", children: steps.map((step, index) => {
119
+ children: /* @__PURE__ */ jsx("ol", { ref: listRef, className: "fairmint-step-progress__list", children: steps.map((step, index) => {
65
120
  const stepNumber = index + 1;
66
- const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep);
67
- const isInteractive = Boolean(onStepChange) && !step.disabled;
121
+ const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep, variant);
122
+ const isInteractive = !isStatus && Boolean(onStepChange) && !step.disabled;
123
+ const detail = isStatus ? step.detail : void 0;
124
+ const statusText = isStatus ? STATUS_TEXT[status] : void 0;
68
125
  const pillContent = /* @__PURE__ */ jsxs(Fragment, { children: [
69
- /* @__PURE__ */ jsx("span", { className: "fairmint-step-progress__indicator", "aria-hidden": "true", children: status === "complete" ? /* @__PURE__ */ jsx(CheckIcon, {}) : stepNumber }),
70
- /* @__PURE__ */ jsx("span", { className: "fairmint-step-progress__label", children: step.label })
126
+ /* @__PURE__ */ jsx("span", { className: "fairmint-step-progress__indicator", "aria-hidden": "true", children: status === "complete" ? /* @__PURE__ */ jsx(CheckIcon, {}) : status === "stopped" ? /* @__PURE__ */ jsx(StopIcon, {}) : stepNumber }),
127
+ detail ? /* @__PURE__ */ jsxs("span", { className: "fairmint-step-progress__text", children: [
128
+ /* @__PURE__ */ jsx("span", { className: "fairmint-step-progress__label", children: step.label }),
129
+ /* @__PURE__ */ jsx("span", { className: "fairmint-step-progress__detail", children: detail })
130
+ ] }) : /* @__PURE__ */ jsx("span", { className: "fairmint-step-progress__label", children: step.label }),
131
+ statusText ? /* @__PURE__ */ jsx("span", { className: "fairmint-step-progress__status-text", children: statusText }) : null
71
132
  ] });
72
133
  return /* @__PURE__ */ jsxs("li", { className: "fairmint-step-progress__item", children: [
73
134
  isInteractive ? /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"StepProgress.js","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"sourcesContent":["import { brandColors, commonColors, fairmintVars, indigoColors } from \"../../../theme\";\nimport { Box, UnstyledButton } from \"../../primitives/layout\";\nimport \"./StepProgress.css\";\n\nexport type StepProgressOrientation = \"horizontal\" | \"vertical\";\nexport type StepProgressStepStatus = \"complete\" | \"active\" | \"pending\";\n\nexport interface StepProgressStep {\n /** Visible label in the progress pill. */\n label: string;\n /** Explicitly mark a step complete when completion is not derived from activeStep. */\n completed?: boolean;\n /** Prevent navigation to this step when onStepChange is supplied. */\n disabled?: boolean;\n}\n\nexport interface StepProgressProps {\n /** Ordered steps. The visible number is derived from this array and is 1-indexed. */\n steps: readonly StepProgressStep[];\n /** Current step number. This is intentionally 1-indexed to match StepCard and the UI. */\n activeStep: number;\n /** Row of pills for in-app progress or a rail for onboarding. @default \"horizontal\" */\n orientation?: StepProgressOrientation;\n /** Called with the 1-indexed step number when a pill is activated. */\n onStepChange?: (step: number) => void;\n /** Accessible label for the navigation. @default \"Progress\" */\n ariaLabel?: string;\n}\n\nconst CheckIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m5 13 4 4 10-10\" />\n </svg>\n);\n\nconst resolveActiveStep = (activeStep: number, stepCount: number) => {\n if (!Number.isFinite(activeStep)) return 1;\n return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);\n};\n\nexport const getStepProgressStatus = (\n step: StepProgressStep,\n stepNumber: number,\n activeStep: number,\n): StepProgressStepStatus => {\n if (stepNumber === activeStep) return \"active\";\n if (step.completed ?? stepNumber < activeStep) return \"complete\";\n return \"pending\";\n};\n\n/**\n * Numbered progress pills shared by horizontal in-app flows and vertical\n * onboarding rails. Owns navigation only — the numbered content container is\n * `StepCard`, and `StepFlow` pairs the two into the canonical shell.\n */\nexport function StepProgress({\n steps,\n activeStep,\n orientation = \"horizontal\",\n onStepChange,\n ariaLabel = \"Progress\",\n}: StepProgressProps) {\n if (steps.length === 0) return null;\n\n const resolvedActiveStep = resolveActiveStep(activeStep, steps.length);\n const rootStyle = {\n \"--fairmint-step-progress-brand\": brandColors.indigo,\n // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.\n \"--fairmint-step-progress-border\": fairmintVars.colorTextSecondary,\n // Kept off the ring token: the ring carries the step number and needs 3:1, the\n // connector is decorative and reads as a hairline between pills.\n \"--fairmint-step-progress-connector\": fairmintVars.colorBorderDefault,\n \"--fairmint-step-progress-text-primary\": fairmintVars.colorTextPrimary,\n // Pending labels use primary ink; active hierarchy is weight + fill, not mute gray.\n \"--fairmint-step-progress-text-secondary\": fairmintVars.colorTextPrimary,\n // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.\n \"--fairmint-step-progress-surface-selected\": fairmintVars.colorBgBrandSubtleHover,\n \"--fairmint-step-progress-active-border\": indigoColors[3],\n \"--fairmint-step-progress-active-indicator-text\": commonColors.white,\n \"--fairmint-step-progress-complete-border\": indigoColors[3],\n \"--fairmint-step-progress-complete-text\": fairmintVars.colorIconOnSurfaceSelected,\n };\n\n return (\n <Box\n component=\"nav\"\n aria-label={ariaLabel}\n className=\"fairmint-step-progress\"\n data-orientation={orientation}\n style={rootStyle}\n >\n <ol className=\"fairmint-step-progress__list\">\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep);\n const isInteractive = Boolean(onStepChange) && !step.disabled;\n const pillContent = (\n <>\n <span className=\"fairmint-step-progress__indicator\" aria-hidden=\"true\">\n {status === \"complete\" ? <CheckIcon /> : stepNumber}\n </span>\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n </>\n );\n\n return (\n <li key={`${stepNumber}-${step.label}`} className=\"fairmint-step-progress__item\">\n {isInteractive ? (\n <UnstyledButton\n type=\"button\"\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-interactive=\"true\"\n data-disabled=\"false\"\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-label={`Step ${stepNumber}: ${step.label}`}\n onClick={() => onStepChange?.(stepNumber)}\n >\n {pillContent}\n </UnstyledButton>\n ) : (\n <span\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-disabled={step.disabled ? \"true\" : \"false\"}\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n title={`Step ${stepNumber}: ${step.label}`}\n >\n {pillContent}\n </span>\n )}\n {index < steps.length - 1 ? (\n <span\n className=\"fairmint-step-progress__connector\"\n data-state={status}\n aria-hidden=\"true\"\n />\n ) : null}\n </li>\n );\n })}\n </ol>\n </Box>\n );\n}\n\nexport const STEP_PROGRESS_MOBILE_BREAKPOINT = \"48em\";\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StepProgress.js","sources":["../../../../src/components/generic/StepProgress/StepProgress.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { brandColors, commonColors, fairmintVars, indigoColors } from \"../../../theme\";\nimport { Box, UnstyledButton } from \"../../primitives/layout\";\nimport \"./StepProgress.css\";\n\nexport type StepProgressOrientation = \"horizontal\" | \"vertical\";\nexport type StepProgressVariant = \"navigation\" | \"status\";\nexport type StepProgressStepStatus = \"complete\" | \"active\" | \"pending\" | \"stopped\";\n\nexport interface StepProgressStep {\n /** Visible label in the progress pill. */\n label: string;\n /** Explicitly mark a step complete when completion is not derived from activeStep. */\n completed?: boolean;\n /** Prevent navigation to this step when onStepChange is supplied. */\n disabled?: boolean;\n /** Second line under the label, such as when the step happened. Shown by the status variant only. */\n detail?: string;\n /** The record stopped at this step (rejected, failed, cancelled). Shown by the status variant only. */\n stopped?: boolean;\n}\n\nexport interface StepProgressProps {\n /** Ordered steps. The visible number is derived from this array and is 1-indexed. */\n steps: readonly StepProgressStep[];\n /** Current step number. This is intentionally 1-indexed to match StepCard and the UI. */\n activeStep: number;\n /** Row of pills for in-app progress or a rail for onboarding. @default \"horizontal\" */\n orientation?: StepProgressOrientation;\n /**\n * `navigation` is where the user is in a flow they are filling in. `status` is where a\n * record is in its lifecycle: read-only, no pill, and each step can carry a `detail`.\n * @default \"navigation\"\n */\n variant?: StepProgressVariant;\n /** Called with the 1-indexed step number when a pill is activated. Ignored by the status variant. */\n onStepChange?: (step: number) => void;\n /** Accessible label for the navigation. @default \"Progress\" */\n ariaLabel?: string;\n}\n\nconst CheckIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m5 13 4 4 10-10\" />\n </svg>\n);\n\nconst StopIcon = () => (\n <svg\n width=\"11\"\n height=\"11\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M7 7l10 10M17 7 7 17\" />\n </svg>\n);\n\nconst STATUS_TEXT: Readonly<Record<StepProgressStepStatus, string | undefined>> = {\n complete: \"(done)\",\n active: undefined,\n pending: undefined,\n stopped: \"(stopped)\",\n};\n\nconst resolveActiveStep = (activeStep: number, stepCount: number) => {\n if (!Number.isFinite(activeStep)) return 1;\n return Math.min(Math.max(Math.trunc(activeStep), 1), stepCount);\n};\n\nexport const getStepProgressStatus = (\n step: StepProgressStep,\n stepNumber: number,\n activeStep: number,\n variant: StepProgressVariant = \"navigation\",\n): StepProgressStepStatus => {\n if (variant === \"status\") {\n if (step.stopped) return \"stopped\";\n // A finished record has no current step: its last step is done, not in progress.\n if (step.completed) return \"complete\";\n }\n if (stepNumber === activeStep) return \"active\";\n if (step.completed ?? stepNumber < activeStep) return \"complete\";\n return \"pending\";\n};\n\n/**\n * Numbered progress pills shared by horizontal in-app flows and vertical\n * onboarding rails. Owns navigation only — the numbered content container is\n * `StepCard`, and `StepFlow` pairs the two into the canonical shell.\n *\n * The `status` variant reuses the same anatomy as a read-only lifecycle track,\n * so a record's progress and a flow's progress look like one component.\n */\nexport function StepProgress({\n steps,\n activeStep,\n orientation = \"horizontal\",\n variant = \"navigation\",\n onStepChange,\n ariaLabel = \"Progress\",\n}: StepProgressProps) {\n const listRef = useRef<HTMLOListElement>(null);\n const resolvedActiveStep = resolveActiveStep(activeStep, Math.max(steps.length, 1));\n\n // When the row scrolls, keep the current step in view as it changes. Scrolls the\n // list only — scrollIntoView would also move the page to the progress row.\n useEffect(() => {\n const list = listRef.current;\n const pill = list?.children[resolvedActiveStep - 1]?.querySelector<HTMLElement>(\n \".fairmint-step-progress__pill\",\n );\n if (!list || !pill || list.scrollWidth <= list.clientWidth) return;\n const listBox = list.getBoundingClientRect();\n const pillBox = pill.getBoundingClientRect();\n if (pillBox.left < listBox.left) {\n list.scrollLeft -= listBox.left - pillBox.left;\n } else if (pillBox.right > listBox.right) {\n list.scrollLeft += pillBox.right - listBox.right;\n }\n }, [resolvedActiveStep]);\n\n if (steps.length === 0) return null;\n\n const isStatus = variant === \"status\";\n const rootStyle = {\n \"--fairmint-step-progress-brand\": brandColors.indigo,\n // colorBorderDefault washes out on colorBgSurfaceSecondary; text-secondary clears 3:1.\n \"--fairmint-step-progress-border\": fairmintVars.colorTextSecondary,\n // Kept off the ring token: the ring carries the step number and needs 3:1, the\n // connector is decorative and reads as a hairline between pills.\n \"--fairmint-step-progress-connector\": fairmintVars.colorBorderDefault,\n \"--fairmint-step-progress-text-primary\": fairmintVars.colorTextPrimary,\n // Pending labels use primary ink; active hierarchy is weight + fill, not mute gray.\n \"--fairmint-step-progress-text-secondary\": fairmintVars.colorTextPrimary,\n // indigo[1] — surface-selected (indigo[0]) is too close to the secondary canvas.\n \"--fairmint-step-progress-surface-selected\": fairmintVars.colorBgBrandSubtleHover,\n \"--fairmint-step-progress-active-border\": indigoColors[3],\n // Not brand indigo: no ink clears AA on it. Both follow the scheme, giving white on\n // indigo[6] (6.29:1) in light and dark ink on indigo[2] (11.8:1) in dark.\n \"--fairmint-step-progress-active-indicator\": fairmintVars.colorIconOnSurfaceSelected,\n \"--fairmint-step-progress-active-indicator-text\": fairmintVars.colorTextInverse,\n \"--fairmint-step-progress-complete-border\": indigoColors[3],\n \"--fairmint-step-progress-complete-text\": fairmintVars.colorIconOnSurfaceSelected,\n // The detail line is the one place that needs muted ink; pending labels above it stay primary.\n \"--fairmint-step-progress-detail\": fairmintVars.colorTextSecondary,\n \"--fairmint-step-progress-stopped\": fairmintVars.colorErrorSolid,\n \"--fairmint-step-progress-stopped-indicator-text\": commonColors.white,\n \"--fairmint-step-progress-stopped-text\": fairmintVars.colorErrorText,\n // Status rows lay out as a grid; the last column never stretches, so it stays flush right.\n \"--fairmint-step-progress-columns\":\n steps.length > 1\n ? `repeat(${steps.length - 1}, auto) minmax(min-content, max-content)`\n : \"minmax(min-content, max-content)\",\n };\n\n return (\n <Box\n // A status track is not navigation: nothing in it goes anywhere.\n component={isStatus ? \"div\" : \"nav\"}\n role={isStatus ? \"group\" : undefined}\n aria-label={ariaLabel}\n className=\"fairmint-step-progress\"\n data-orientation={orientation}\n data-variant={variant}\n style={rootStyle}\n >\n <ol ref={listRef} className=\"fairmint-step-progress__list\">\n {steps.map((step, index) => {\n const stepNumber = index + 1;\n const status = getStepProgressStatus(step, stepNumber, resolvedActiveStep, variant);\n const isInteractive = !isStatus && Boolean(onStepChange) && !step.disabled;\n const detail = isStatus ? step.detail : undefined;\n // The indicator icons are aria-hidden, so a status track says done and stopped in words.\n const statusText = isStatus ? STATUS_TEXT[status] : undefined;\n const pillContent = (\n <>\n <span className=\"fairmint-step-progress__indicator\" aria-hidden=\"true\">\n {status === \"complete\" ? (\n <CheckIcon />\n ) : status === \"stopped\" ? (\n <StopIcon />\n ) : (\n stepNumber\n )}\n </span>\n {detail ? (\n <span className=\"fairmint-step-progress__text\">\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n <span className=\"fairmint-step-progress__detail\">{detail}</span>\n </span>\n ) : (\n <span className=\"fairmint-step-progress__label\">{step.label}</span>\n )}\n {statusText ? (\n <span className=\"fairmint-step-progress__status-text\">{statusText}</span>\n ) : null}\n </>\n );\n\n return (\n <li key={`${stepNumber}-${step.label}`} className=\"fairmint-step-progress__item\">\n {isInteractive ? (\n <UnstyledButton\n type=\"button\"\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-interactive=\"true\"\n data-disabled=\"false\"\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-label={`Step ${stepNumber}: ${step.label}`}\n onClick={() => onStepChange?.(stepNumber)}\n >\n {pillContent}\n </UnstyledButton>\n ) : (\n <span\n className=\"fairmint-step-progress__pill\"\n data-state={status}\n data-disabled={step.disabled ? \"true\" : \"false\"}\n aria-current={status === \"active\" ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n title={`Step ${stepNumber}: ${step.label}`}\n >\n {pillContent}\n </span>\n )}\n {index < steps.length - 1 ? (\n <span\n className=\"fairmint-step-progress__connector\"\n data-state={status}\n aria-hidden=\"true\"\n />\n ) : null}\n </li>\n );\n })}\n </ol>\n </Box>\n );\n}\n\nexport const STEP_PROGRESS_MOBILE_BREAKPOINT = \"48em\";\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -100,7 +100,7 @@ export type { StepCardProps } from './components/generic/StepCard/StepCard';
100
100
  export { StepCard } from './components/generic/StepCard/StepCard';
101
101
  export type { StepFlowOrientation, StepFlowProps, StepFlowStep, } from './components/generic/StepFlow/StepFlow';
102
102
  export { STEP_FLOW_DEFAULT_MAX_WIDTH, StepFlow } from './components/generic/StepFlow/StepFlow';
103
- export type { StepProgressOrientation, StepProgressProps, StepProgressStep, StepProgressStepStatus, } from './components/generic/StepProgress/StepProgress';
103
+ export type { StepProgressOrientation, StepProgressProps, StepProgressStep, StepProgressStepStatus, StepProgressVariant, } from './components/generic/StepProgress/StepProgress';
104
104
  export { getStepProgressStatus, STEP_PROGRESS_MOBILE_BREAKPOINT, StepProgress, } from './components/generic/StepProgress/StepProgress';
105
105
  export type { TablePaginationProps, TablePaginationRowsPerPageOption, } from './components/generic/TablePagination/TablePagination';
106
106
  export { TablePagination } from './components/generic/TablePagination/TablePagination';
@@ -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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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
- const index = require("../../../../../../_virtual/index4.cjs");
4
+ const index = require("../../../../../../_virtual/index3.cjs");
5
5
  const getStatus = require("../../get-status/get-status.cjs");
6
6
  const clearListState = require("../../lists/clear-list-state.cjs");
7
7
  const getPath = require("../../paths/get-path.cjs");
@@ -1,5 +1,5 @@
1
1
  import { useState, useRef, useCallback } from "react";
2
- import isEqual from "../../../../../../_virtual/index4.js";
2
+ import isEqual from "../../../../../../_virtual/index3.js";
3
3
  import { getStatus } from "../../get-status/get-status.js";
4
4
  import { clearListState } from "../../lists/clear-list-state.js";
5
5
  import { getPath } from "../../paths/get-path.js";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const index$1 = require("../../_virtual/index3.cjs");
3
+ const index$1 = require("../../_virtual/index4.cjs");
4
4
  const index = require("./node_modules/react-is/index.cjs");
5
5
  const factoryWithTypeCheckers = require("./factoryWithTypeCheckers.cjs");
6
6
  const factoryWithThrowingShims = require("./factoryWithThrowingShims.cjs");
@@ -1,4 +1,4 @@
1
- import { __module as propTypes } from "../../_virtual/index3.js";
1
+ import { __module as propTypes } from "../../_virtual/index4.js";
2
2
  import { __require as requireReactIs } from "./node_modules/react-is/index.js";
3
3
  import { __require as requireFactoryWithTypeCheckers } from "./factoryWithTypeCheckers.js";
4
4
  import { __require as requireFactoryWithThrowingShims } from "./factoryWithThrowingShims.js";
package/dist/styles.css CHANGED
@@ -27,24 +27,31 @@
27
27
  }
28
28
 
29
29
  /*
30
- * Sized to its label, capped, and never grown to fill a share.
30
+ * Sized to its label, capped, and joined to the next step by a connector.
31
31
  *
32
32
  * Three things have to hold at once. A short step like "Sign" should not sit in a
33
- * pill stretched to a quarter of the row, so the item takes its content width
33
+ * pill stretched to a quarter of the row, so the pill takes its content width
34
34
  * rather than an equal share. A wordy step should not push its neighbours aside,
35
- * so `max-width` caps it and the label ellipsises inside. And once the steps stop
36
- * fitting, the row should run past the container for the list to scroll rather than
37
- * every pill squeezing down — which is what shrinking to `min-width: 0` used to do.
35
+ * so `max-width` caps the pill and the label ellipsises inside. And once the steps
36
+ * stop fitting, the row should run past the container for the list to scroll rather
37
+ * than every pill squeezing down, so neither the item nor the pill shrinks.
38
38
  *
39
- * The spare room goes *between* the pills via `justify-content` on the list, not
40
- * inside them.
39
+ * The spare room goes into the connectors *between* the pills, not inside them:
40
+ * every item but the last grows, and its connector takes the growth.
41
41
  */
42
42
  .fairmint-step-progress__item {
43
- flex: 0 1 auto;
44
- max-width: 14rem;
43
+ display: flex;
44
+ flex: 1 0 auto;
45
+ align-items: center;
46
+ gap: 0.5rem;
47
+ }
48
+
49
+ .fairmint-step-progress__item:last-child {
50
+ flex: none;
45
51
  }
46
52
 
47
53
  .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__item {
54
+ display: block;
48
55
  flex: none;
49
56
  width: 100%;
50
57
  max-width: none;
@@ -59,6 +66,8 @@
59
66
  * classes here settles it in any order.
60
67
  */
61
68
  .fairmint-step-progress .fairmint-step-progress__pill {
69
+ /* Positioned so the visually hidden labels inside stay inside the scrolling row. */
70
+ position: relative;
62
71
  box-sizing: border-box;
63
72
  display: flex;
64
73
  align-items: center;
@@ -78,10 +87,9 @@
78
87
  }
79
88
 
80
89
  /*
81
- * Centered, because a pill only has slack when something other than its content
82
- * set its width — and then that slack should sit evenly rather than all on the
83
- * right. In a row above the mobile breakpoint the item is sized to its content,
84
- * so this is a no-op; the `min-width` floor further down is what makes it show.
90
+ * Centered, so that if something other than its content sets a pill's width, the
91
+ * slack sits evenly rather than all on the right. Row pills are sized to their own
92
+ * content at every width, so normally this changes nothing.
85
93
  *
86
94
  * The vertical rail keeps the `flex-start` from the rule above: its pills stretch
87
95
  * to the rail width by design, and labels down a rail read as a left-aligned
@@ -91,7 +99,10 @@
91
99
  * ellipsises from the end rather than being clipped at both.
92
100
  */
93
101
  .fairmint-step-progress[data-orientation="horizontal"] .fairmint-step-progress__pill {
102
+ flex: none;
94
103
  justify-content: center;
104
+ width: auto;
105
+ max-width: 14rem;
95
106
  }
96
107
 
97
108
  .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__pill {
@@ -138,9 +149,14 @@
138
149
  line-height: 1;
139
150
  }
140
151
 
152
+ /*
153
+ * Filled with the completed check's ink rather than the brand: white on brand is
154
+ * 4.47:1, under AA for a number this small. In dark mode the ink turns light, so
155
+ * the number takes the inverse (dark) text color with it.
156
+ */
141
157
  .fairmint-step-progress__pill[data-state="active"] .fairmint-step-progress__indicator {
142
- border-color: var(--fairmint-step-progress-brand, #6366f1);
143
- background: var(--fairmint-step-progress-brand, #6366f1);
158
+ border-color: var(--fairmint-step-progress-active-indicator, #4f46e5);
159
+ background: var(--fairmint-step-progress-active-indicator, #4f46e5);
144
160
  color: var(--fairmint-step-progress-active-indicator-text, #ffffff);
145
161
  }
146
162
 
@@ -176,8 +192,19 @@
176
192
  white-space: normal;
177
193
  }
178
194
 
195
+ /*
196
+ * A hairline from each step to the next, so the pills read as one sequence. The
197
+ * line leaving a completed step takes the completed indicator's border color, so
198
+ * progress shows along the line as well as on the pills.
199
+ */
179
200
  .fairmint-step-progress__connector {
180
- display: none;
201
+ flex: 1 0 1rem;
202
+ height: 1px;
203
+ background: var(--fairmint-step-progress-connector, #e5e7eb);
204
+ }
205
+
206
+ .fairmint-step-progress__connector[data-state="complete"] {
207
+ background: var(--fairmint-step-progress-complete-border, #a5b4fc);
181
208
  }
182
209
 
183
210
  .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__connector {
@@ -185,16 +212,11 @@
185
212
  width: 1px;
186
213
  height: 0.875rem;
187
214
  margin-left: 1.3125rem;
188
- background: var(--fairmint-step-progress-connector, #e5e7eb);
189
- }
190
-
191
- .fairmint-step-progress[data-orientation="vertical"]
192
- .fairmint-step-progress__connector[data-state="complete"] {
193
- background: var(--fairmint-step-progress-complete-border, #a5b4fc);
194
215
  }
195
216
 
196
217
  @media (max-width: 47.99em) {
197
- .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__list {
218
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
219
+ .fairmint-step-progress__list {
198
220
  flex-direction: row;
199
221
  gap: 0.5rem;
200
222
  margin-bottom: 1.5rem;
@@ -205,43 +227,331 @@
205
227
  padding-bottom: 0.25rem;
206
228
  }
207
229
 
208
- .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__item {
209
- flex: 0 0 auto;
230
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
231
+ .fairmint-step-progress__item {
232
+ display: flex;
233
+ flex: 1 0 auto;
210
234
  width: auto;
211
- max-width: 14rem;
235
+ }
236
+
237
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
238
+ .fairmint-step-progress__item:last-child {
239
+ flex: none;
212
240
  }
213
241
 
214
242
  .fairmint-step-progress .fairmint-step-progress__pill {
215
243
  justify-content: center;
216
244
  width: auto;
217
- min-width: 9rem;
218
245
  }
219
246
 
220
- .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__pill {
247
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
248
+ .fairmint-step-progress__pill {
249
+ flex: none;
250
+ max-width: 14rem;
221
251
  min-height: 2.125rem;
222
252
  padding: 0.5rem 0.75rem;
223
253
  border-radius: 999px;
224
254
  }
225
255
 
226
- .fairmint-step-progress[data-orientation="vertical"]
256
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
227
257
  .fairmint-step-progress__pill[data-state="active"] {
228
258
  border-color: var(--fairmint-step-progress-active-border, #a5b4fc);
229
259
  }
230
260
 
231
- .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__indicator {
261
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
262
+ .fairmint-step-progress__indicator {
232
263
  flex-basis: 1.125rem;
233
264
  width: 1.125rem;
234
265
  height: 1.125rem;
235
266
  }
236
267
 
237
- .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__label {
268
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
269
+ .fairmint-step-progress__label {
238
270
  overflow: hidden;
239
271
  text-overflow: ellipsis;
240
272
  white-space: nowrap;
241
273
  }
242
274
 
243
- .fairmint-step-progress[data-orientation="vertical"] .fairmint-step-progress__connector {
244
- display: none;
275
+ .fairmint-step-progress[data-orientation="vertical"]:where(:not([data-variant="status"]))
276
+ .fairmint-step-progress__connector {
277
+ width: auto;
278
+ height: 1px;
279
+ margin-left: 0;
280
+ }
281
+
282
+ /*
283
+ * On a phone only the current step keeps its label; the others shrink to their
284
+ * numbered indicator. Five labelled pills don't fit across a phone, and a row
285
+ * that scrolls with no cue reads as a shorter flow than it is. Numbers keep the
286
+ * whole sequence in view and still take a tap (36px tall, 30px wide). The label
287
+ * stays in the markup for assistive tech, and interactive pills carry it in
288
+ * their aria-label too. Spacing tightens so five steps fit at 375px; the row
289
+ * still scrolls if a flow has more steps than that. Navigation only: a status
290
+ * track shows every label and stacks into a rail instead.
291
+ */
292
+ .fairmint-step-progress[data-orientation]:where(:not([data-variant="status"]))
293
+ .fairmint-step-progress__list,
294
+ .fairmint-step-progress[data-orientation]:where(:not([data-variant="status"]))
295
+ .fairmint-step-progress__item {
296
+ gap: 0.25rem;
297
+ }
298
+
299
+ .fairmint-step-progress[data-orientation]:where(:not([data-variant="status"]))
300
+ .fairmint-step-progress__connector {
301
+ flex-basis: 0.375rem;
302
+ }
303
+
304
+ .fairmint-step-progress:where(:not([data-variant="status"]))
305
+ .fairmint-step-progress__pill:not([data-state="active"]) {
306
+ min-width: 0;
307
+ padding: 0.5rem 0.3125rem;
308
+ }
309
+
310
+ .fairmint-step-progress:where(:not([data-variant="status"]))
311
+ .fairmint-step-progress__pill[data-state="active"] {
312
+ max-width: 10.5rem;
313
+ }
314
+
315
+ .fairmint-step-progress:where(:not([data-variant="status"]))
316
+ .fairmint-step-progress__pill:not([data-state="active"])
317
+ .fairmint-step-progress__label {
318
+ position: absolute;
319
+ width: 1px;
320
+ height: 1px;
321
+ margin: -1px;
322
+ padding: 0;
323
+ overflow: hidden;
324
+ clip: rect(0 0 0 0);
325
+ white-space: nowrap;
326
+ border: 0;
327
+ }
328
+ }
329
+
330
+ /* Read by screen readers, kept off screen: the status track's done/stopped icons are aria-hidden. */
331
+ .fairmint-step-progress__status-text {
332
+ position: absolute;
333
+ width: 1px;
334
+ height: 1px;
335
+ margin: -1px;
336
+ padding: 0;
337
+ overflow: hidden;
338
+ clip: rect(0 0 0 0);
339
+ white-space: nowrap;
340
+ border: 0;
341
+ }
342
+
343
+ /*
344
+ * Status variant: where a record is in its lifecycle, not where the user is in a
345
+ * flow. Same indicator, label, and connector as navigation, minus the pill — a
346
+ * filled pill reads as "click me" and nothing here is clickable. Position moves
347
+ * onto the indicator instead (an outlined brand ring with a soft halo), as the
348
+ * design-quality rules ask: selected borders sit on the indicator, not the row.
349
+ *
350
+ * The phone collapse above skips status tracks (`:where(:not([data-variant="status"]))`),
351
+ * and these rules out-rank the one mobile pill rule that still reaches them.
352
+ */
353
+
354
+ /*
355
+ * The list scrolls, so it clips anything drawn outside it — including the current
356
+ * step's halo when the first step sits flush at the edge. Padding gives the halo
357
+ * room and the matching negative margin keeps the steps aligned with the card.
358
+ * No bottom margin: a status track sits in its own card, not above a StepCard.
359
+ */
360
+ .fairmint-step-progress[data-variant="status"] .fairmint-step-progress__list {
361
+ width: calc(100% + 0.5rem);
362
+ margin: -0.25rem;
363
+ padding: 0.25rem;
364
+ }
365
+
366
+ .fairmint-step-progress[data-variant="status"] .fairmint-step-progress__pill,
367
+ .fairmint-step-progress[data-variant="status"] .fairmint-step-progress__pill[data-state="active"] {
368
+ justify-content: flex-start;
369
+ gap: 0.625rem;
370
+ min-height: 0;
371
+ padding: 0.25rem 0;
372
+ border-color: transparent;
373
+ border-radius: 0;
374
+ background: transparent;
375
+ }
376
+
377
+ /* Two lines of text beside it, so the indicator steps up a size from the navigation pill. */
378
+ .fairmint-step-progress[data-variant="status"] .fairmint-step-progress__indicator {
379
+ flex-basis: 1.5rem;
380
+ width: 1.5rem;
381
+ height: 1.5rem;
382
+ font-size: 0.75rem;
383
+ }
384
+
385
+ .fairmint-step-progress[data-variant="status"]
386
+ .fairmint-step-progress__pill[data-state="active"]
387
+ .fairmint-step-progress__indicator {
388
+ border-color: var(--fairmint-step-progress-brand, #6366f1);
389
+ background: transparent;
390
+ box-shadow: 0 0 0 3px var(--fairmint-step-progress-surface-selected, #e0e7ff);
391
+ /*
392
+ * The number takes the completed check's ink, not the brand: brand on the card is
393
+ * 4.47:1 light and 3.94:1 dark, under AA for text this small. The ring stays brand.
394
+ */
395
+ color: var(--fairmint-step-progress-complete-text, #4f46e5);
396
+ }
397
+
398
+ .fairmint-step-progress[data-variant="status"]
399
+ .fairmint-step-progress__pill[data-state="stopped"]
400
+ .fairmint-step-progress__indicator {
401
+ border-color: var(--fairmint-step-progress-stopped, #e5484d);
402
+ background: var(--fairmint-step-progress-stopped, #e5484d);
403
+ color: var(--fairmint-step-progress-stopped-indicator-text, #ffffff);
404
+ }
405
+
406
+ .fairmint-step-progress[data-variant="status"]
407
+ .fairmint-step-progress__pill[data-state="stopped"]
408
+ .fairmint-step-progress__label {
409
+ color: var(--fairmint-step-progress-stopped-text, #b42318);
410
+ font-weight: 600;
411
+ }
412
+
413
+ .fairmint-step-progress__text {
414
+ display: flex;
415
+ flex-direction: column;
416
+ min-width: 0;
417
+ gap: 0.125rem;
418
+ }
419
+
420
+ .fairmint-step-progress__detail {
421
+ min-width: 0;
422
+ overflow: hidden;
423
+ text-overflow: ellipsis;
424
+ white-space: nowrap;
425
+ color: var(--fairmint-step-progress-detail, #6c737f);
426
+ font-size: 0.75rem;
427
+ line-height: 1.3;
428
+ }
429
+
430
+ /*
431
+ * With no pill padding, the rail's connector lines up under the larger indicator's
432
+ * center: half the 1.5rem indicator, plus the pill's 1px border, less half the line.
433
+ */
434
+ .fairmint-step-progress[data-variant="status"][data-orientation="vertical"]
435
+ .fairmint-step-progress__connector {
436
+ height: 1rem;
437
+ margin-left: calc(0.75rem + 0.5px);
438
+ }
439
+
440
+ /*
441
+ * When a status row runs short of room, labels wrap inside their step instead of
442
+ * the row scrolling. A record page is read at a glance, and a track whose last step
443
+ * sits off the edge with no cue looks like it ends early. Labels never ellipsise —
444
+ * "Approved · hold placed" cut short loses the part that matters.
445
+ *
446
+ * A grid rather than flex, for which label wraps. Flex shrinks every step by the
447
+ * same proportion, so even "TA review" breaks onto two lines. Grid starts each step
448
+ * at its narrowest and hands out the room evenly until a step fits on one line, so
449
+ * short labels settle first and only the long ones wrap. The columns come from the
450
+ * component (`repeat(n - 1, auto)` plus a last column that never stretches), so the
451
+ * spare room past that goes into the connectors and the last step stays flush right.
452
+ *
453
+ * The track is a size container, for the rail fallback below. A size container
454
+ * ignores its content when its own width is worked out, so a status track fills its
455
+ * parent like a block and needs a parent with a set width. In a parent that sizes to
456
+ * its content (a centered flex item, a Group, inline-block, a popover) it collapses.
457
+ */
458
+ .fairmint-step-progress[data-variant="status"] {
459
+ container: fairmint-step-progress-status / inline-size;
460
+ }
461
+
462
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
463
+ .fairmint-step-progress__list {
464
+ display: grid;
465
+ grid-template-columns: var(--fairmint-step-progress-columns, none);
466
+ grid-auto-flow: column;
467
+ /* The base list's space-between would put the spare room in the gaps instead. */
468
+ justify-content: normal;
469
+ }
470
+
471
+ /* No clipping: it would cut the current step's halo and let a step shrink past its widest word. */
472
+ .fairmint-step-progress[data-variant="status"] .fairmint-step-progress__pill {
473
+ overflow: visible;
474
+ }
475
+
476
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
477
+ .fairmint-step-progress__pill {
478
+ flex: 0 1 auto;
479
+ justify-content: flex-start;
480
+ min-width: 0;
481
+ max-width: none;
482
+ }
483
+
484
+ /*
485
+ * A step in the row is never narrower than its detail line, and isn't capped: a cap
486
+ * or a shrinking text column would let a long detail paint over the connector and the
487
+ * next step. Labels still wrap, so this only widens a step that has a long detail.
488
+ */
489
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
490
+ .fairmint-step-progress__text {
491
+ min-width: auto;
492
+ }
493
+
494
+ .fairmint-step-progress[data-variant="status"] .fairmint-step-progress__label {
495
+ overflow: visible;
496
+ text-overflow: clip;
497
+ white-space: normal;
498
+ text-wrap: balance;
499
+ }
500
+
501
+ /*
502
+ * In a row the detail holds its line, so a timestamp doesn't break mid-time. A rail
503
+ * has height to spare but not width, so there a long detail wraps instead.
504
+ */
505
+ .fairmint-step-progress[data-variant="status"] .fairmint-step-progress__detail {
506
+ overflow: visible;
507
+ text-overflow: clip;
508
+ }
509
+
510
+ .fairmint-step-progress[data-variant="status"][data-orientation="vertical"]
511
+ .fairmint-step-progress__detail {
512
+ white-space: normal;
513
+ }
514
+
515
+ /*
516
+ * Below this the steps would wrap past two lines, so the track stacks into a rail.
517
+ * This keys off the track's own width, not the viewport: the same track can sit in
518
+ * a wide page or a narrow side column. The row's scroll stays as the last resort
519
+ * for a step count this width doesn't cover.
520
+ */
521
+ @container fairmint-step-progress-status (max-width: 40rem) {
522
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
523
+ .fairmint-step-progress__list {
524
+ display: flex;
525
+ flex-direction: column;
526
+ gap: 0;
527
+ overflow: visible;
528
+ }
529
+
530
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
531
+ .fairmint-step-progress__item,
532
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
533
+ .fairmint-step-progress__item:last-child {
534
+ display: block;
535
+ flex: none;
536
+ width: 100%;
537
+ }
538
+
539
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
540
+ .fairmint-step-progress__text {
541
+ min-width: 0;
542
+ }
543
+
544
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
545
+ .fairmint-step-progress__detail {
546
+ white-space: normal;
547
+ }
548
+
549
+ .fairmint-step-progress[data-variant="status"][data-orientation="horizontal"]
550
+ .fairmint-step-progress__connector {
551
+ display: block;
552
+ width: 1px;
553
+ height: 1rem;
554
+ margin-left: calc(0.75rem + 0.5px);
245
555
  }
246
556
  }
247
557
  .fairmint-step-flow {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fairmint/ui",
3
- "version": "0.4.17",
3
+ "version": "0.4.19",
4
4
  "type": "module",
5
5
  "description": "Fairmint design system and UI component library",
6
6
  "license": "SEE LICENSE IN LICENSE",