Skip to content

Harden & refine Stepper (lab) — align design with EPS stepper migration #4181

Description

@cixzhang

Summary

Harden and refine the Stepper component (packages/lab/src/StepperStepper + 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.

Current state (for reference)

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).
  • Layer 1 audit clean (tokens, themeProps, naming, structure, a11y, exports).
  • All prop-promised states render correctly across themes + light/dark.
  • Keyboard + ARIA verified for linear and non-linear (onStepClick) modes.
  • Stories demonstrate every state, both orientations, all density scales, and edge cases (long labels, many steps).
  • Findings that exceed hardening scope (new props/variants) routed to spec issues; naming disputes routed to a vibe test.

Metadata

Metadata

Assignees

Labels

componentNew or improved UI componenthardeningComponent hardening and quality sweep

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions