Context
The sync wizard guides the user through URL → email → admin approval → done/rejected. The progress bar at the top renders three segments.
Problem / Observation
- extension/src/popup/components/SyncScreen.tsx:57 declares
type Step = "url" | "auth" | "pending" | "approved" | "rejected"; — five values.
- extension/src/popup/components/SyncScreen.tsx:351 computes
const idx = step === "url" ? 0 : step === "auth" ? 1 : 2; and the bar has 3 fixed segments.
- Outcome: a user in
"rejected" sees all three bars filled (i <= 2 is true for i = 0, 1, 2) — the same UI as success, contradicting the rejection message right below it.
- No
role="progressbar", no aria-valuenow/aria-valuemax, no screen-reader narration of the step.
Proposed approach
- Treat
"approved" and "rejected" as terminal states and bypass the StepBar entirely (replace it with the result card directly), OR
- Drive the StepBar from a derived
progress: 0|1|2|3 so step 3 ("pending") is distinct from step 4 ("approved"/"rejected") and the rejected case renders the bar in red.
- Add
role="progressbar" with aria-valuemin/max/now and an aria-label to the bar.
Acceptance criteria
Context
The sync wizard guides the user through URL → email → admin approval → done/rejected. The progress bar at the top renders three segments.
Problem / Observation
type Step = "url" | "auth" | "pending" | "approved" | "rejected";— five values.const idx = step === "url" ? 0 : step === "auth" ? 1 : 2;and the bar has 3 fixed segments."rejected"sees all three bars filled (i <= 2is true fori = 0, 1, 2) — the same UI as success, contradicting the rejection message right below it.role="progressbar", noaria-valuenow/aria-valuemax, no screen-reader narration of the step.Proposed approach
"approved"and"rejected"as terminal states and bypass the StepBar entirely (replace it with the result card directly), ORprogress: 0|1|2|3so step 3 ("pending") is distinct from step 4 ("approved"/"rejected") and the rejected case renders the bar in red.role="progressbar"witharia-valuemin/max/nowand anaria-labelto the bar.Acceptance criteria
aria-*attributes present for SR users.