Skip to content

Steps

Progress tracker for multi-step flows. Uses a semantic <ol> — step numbers come from a CSS counter, and connectors are drawn between items (no extra markup).

  1. Account
  2. Details
  3. Payment
  4. Confirm
<ol class="af-steps">
  <li class="af-step af-is-complete">
    <span class="af-step-number" aria-hidden="true"></span>
    <span class="af-step-label">Account</span>
  </li>
  <li class="af-step af-is-complete">
    <span class="af-step-number" aria-hidden="true"></span>
    <span class="af-step-label">Details</span>
  </li>
  <li class="af-step af-is-active" aria-current="step">
    <span class="af-step-number" aria-hidden="true"></span>
    <span class="af-step-label">Payment</span>
  </li>
  <li class="af-step">
    <span class="af-step-number" aria-hidden="true"></span>
    <span class="af-step-label">Confirm</span>
  </li>
</ol>
  • af-is-complete — finished step (success badge + connector)
  • af-is-active — current step (aria-current="step")
  • (no modifier) — upcoming step
ClassPurpose
af-stepsThe <ol> container
af-stepEach <li> step
af-step-numberBadge; number from CSS counter
af-step-labelStep title

Leave af-step-number empty — the counter fills it. Mark it aria-hidden="true" so screen readers rely on the list semantics + label.