You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Harden and refine the Stepper component (packages/lab/src/Stepper — Stepper + Step). It has shipped in @astryxdesign/lab with a working API, tests, docs, and stories, but needs a hardening + design-refinement pass before it can graduate toward core.
⚠️ Design must align with the EPS stepper migration
Astryx's Stepper is intentionally different in design from the EPS stepper. We're actively working on the EPS → Astryx migration, so this refinement must align the two designs — decide deliberately where Astryx's stepper converges with EPS's and where it stays distinct, rather than drifting independently. Design decisions here should be made with the migration in mind, not in isolation.
Stepper: activeStep, orientation (horizontal/vertical), onStepClick (non-linear nav), label, density (compact/balanced/spacious). Renders as <ol>/<li> with aria-current="step".
Step: step index, label, description, status (accent/success/warning/error — color only), icon, indicator (auto/number/none/ReactNode), isDisabled, isOptional, endContent, density.
Hardening scope (per the Component Hardening Protocol)
Layer 1 — automated audit: token usage (note STEP_GAP = '2px' hardcoded gap — should this be a spacing token?), themeProps placement across states, prop/type naming, structure, export hygiene, a11y contracts.
Layer 2 — bug & visual fixes: verify every state the props already promise renders correctly — rest / hover / focus / active / disabled / the four status colors / completed vs. current vs. upcoming / optional. Keyboard nav for the clickable (onStepClick) case, aria-current wiring, focus order. Overflow / long-label / many-steps behavior in both orientations.
Layer 3 — design review: proportions, indicator modes, connector treatment, density scales, vertical-stepper content layout — evaluated against the EPS stepper as part of the migration alignment.
Acceptance criteria
Design reconciled with the EPS stepper as part of the migration (convergence/divergence decisions recorded).
Summary
Harden and refine the Stepper component (
packages/lab/src/Stepper—Stepper+Step). It has shipped in@astryxdesign/labwith a working API, tests, docs, and stories, but needs a hardening + design-refinement pass before it can graduate towardcore.Astryx's Stepper is intentionally different in design from the EPS stepper. We're actively working on the EPS → Astryx migration, so this refinement must align the two designs — decide deliberately where Astryx's stepper converges with EPS's and where it stays distinct, rather than drifting independently. Design decisions here should be made with the migration in mind, not in isolation.
Current state (for reference)
packages/lab/src/Stepper/—Stepper.tsx,Step.tsx,StepStatus.ts,StepperContext.ts, colocatedStepper.test.tsx,Stepper.doc.mjs/Step.doc.mjs, Storybook story.Stepper:activeStep,orientation(horizontal/vertical),onStepClick(non-linear nav),label,density(compact/balanced/spacious). Renders as<ol>/<li>witharia-current="step".Step:stepindex,label,description,status(accent/success/warning/error — color only),icon,indicator(auto/number/none/ReactNode),isDisabled,isOptional,endContent,density.XDSStepper(XDSStepper #215, feat(Stepper): add XDSStepper and XDSStep components #2206), moved to lab for API rework (refactor(Stepper): move to @xds/lab — API needs rework #2335), earlier hardening pass (Hardening: XDSStepper #2224, closed).Hardening scope (per the Component Hardening Protocol)
Layer 1 — automated audit: token usage (note
STEP_GAP = '2px'hardcoded gap — should this be a spacing token?),themePropsplacement across states, prop/type naming, structure, export hygiene, a11y contracts.Layer 2 — bug & visual fixes: verify every state the props already promise renders correctly — rest / hover / focus / active / disabled / the four
statuscolors / completed vs. current vs. upcoming / optional. Keyboard nav for the clickable (onStepClick) case,aria-currentwiring, focus order. Overflow / long-label / many-steps behavior in both orientations.Layer 3 — design review: proportions, indicator modes, connector treatment, density scales, vertical-stepper content layout — evaluated against the EPS stepper as part of the migration alignment.
Acceptance criteria
onStepClick) modes.