GitHub

Components / Layout & Navigation / Steps

Steps beta

Where you are in a sequence of things that must happen in order.

Preview
  1. Account
  2. Workspace
  3. Billing
  4. 4Invite team
<ol class="k-steps" style="max-width:430px">
  <li data-state="done"><span class="n"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m4.5 12.5 5 5L19.5 6.5"/></svg></span><span class="t">Account</span></li>
  <li data-state="done"><span class="n"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m4.5 12.5 5 5L19.5 6.5"/></svg></span><span class="t">Workspace</span></li>
  <li data-state="current" aria-current="step"><span class="n"></span><span class="t">Billing</span></li>
  <li><span class="n">4</span><span class="t">Invite team</span></li>
</ol>
.k-steps{list-style:none;margin:0;padding:0;display:flex;font-family:var(--k-font)}
.k-steps li{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;position:relative;text-align:center}
.k-steps li::before{content:"";position:absolute;top:13px;left:calc(-50% + 16px);right:calc(50% + 16px);height:2px;background:var(--k-line);border-radius:2px}
.k-steps li:first-child::before{display:none}
.k-steps li[data-state="done"]::before{background:var(--k-ink)}
.k-steps .n{width:27px;height:27px;border-radius:50%;border:2px solid var(--k-line);background:var(--k-bg);display:grid;place-items:center;font-size:12px;font-weight:600;color:var(--k-ink-3);position:relative;z-index:1}
.k-steps li[data-state="done"] .n{background:var(--k-ink);border-color:var(--k-ink);color:var(--k-bg)}
.k-steps li[data-state="current"] .n{border-color:var(--k-ink);color:var(--k-ink)}
.k-steps li[data-state="current"] .n::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--k-core);position:absolute}
.k-steps .t{font-size:12px;font-weight:550;color:var(--k-ink-3)}
.k-steps li[data-state="current"] .t{color:var(--k-ink)}
.k-steps li[data-state="done"] .t{color:var(--k-ink-2)}

Usage

For checkouts, onboarding and setup flows of three to five steps. The current step carries the core dot — the same signature as the Switch and the Radio.

Accessibility

An ordered list underneath: screen readers get the sequence for free. Mark the current step with aria-current="step".

Related parts