Badges
tier 2 — classes.badge is a neutral pill. The semantic modifiers carry the same meaning as the
button families; the three categorical hues carry none at all.
Semantic
Use these when the colour means something. They follow the colour-blind toggle.
<span class="badge">Neutral</span>
<span class="badge badge-go">Approved</span>
<span class="badge badge-warn">Pending</span>
<span class="badge badge-danger">Failed</span>
<span class="badge badge-info">Informational</span>
<span class="badge badge-secret">Secret</span>
Three sizes
A badge is a label, not a target, so its sizes are a type scale rather than
the control heights — .badge-lg is 12px text, not
a 36px pill.
<div class="sedna-col sedna-gap-2">
<div class="sedna-row">
<span class="badge badge-sm">badge-sm</span>
<span class="badge">default</span>
<span class="badge badge-lg">badge-lg</span>
</div>
<div class="sedna-row sedna-baseline">
<span>In a line of text a <span class="badge badge-sm badge-go">badge-sm</span> does not push the line taller,</span>
</div>
<div class="sedna-row sedna-baseline">
<span class="text-lg">Beside a heading a <span class="badge badge-lg badge-warn">badge-lg</span> holds its own.</span>
</div>
</div>
Categorical
For distinguishing categories that have no ranking — a type, a queue, a source. Reach for these only after the semantic set, and never to imply good or bad.
<span class="badge badge-cyan">Login</span>
<span class="badge badge-orange">Job</span>
<span class="badge badge-teal">API</span>
Severity — an ordered scale
For a scale whose steps rank: an incident priority P1–P5, a CVSS band,
a triage tier. The label has to say the rank — “P2”,
“High”, “3 of 5” — because a bare coloured pill is a colour,
not a position; Progress takes the same ramp through
.progress-bar--sev-N.
<span class="badge badge-sev-1">P1 · Critical</span>
<span class="badge badge-sev-2">P2 · High</span>
<span class="badge badge-sev-3">P3 · Moderate</span>
<span class="badge badge-sev-4">P4 · Low</span>
<span class="badge badge-sev-5">P5 · Planning</span>
With an icon
<span class="badge badge-go"><i class="ri-check-line"></i> Sent</span>
<span class="badge badge-warn"><i class="ri-time-line"></i> 12 min</span>
<span class="badge badge-danger"><i class="ri-alert-line"></i> Breached</span>
In a card header and a table cell
The two places badges actually live.
| Action | Outcome | Age |
|---|---|---|
| Routing | Applied | 4 min |
| Priority | Rejected | 18 min |
<div class="card" style="width:100%">
<div class="card-head">
<strong>ORD-4209</strong>
<div class="card-head-right">
<span class="badge badge-warn">Pending</span>
<span class="badge">P3</span>
</div>
</div>
<table class="table">
<thead>
<tr><th>Action</th><th>Outcome</th><th>Age</th></tr>
</thead>
<tbody>
<tr><td>Routing</td><td><span class="badge badge-go">Applied</span></td><td class="col-muted">4 min</td></tr>
<tr><td>Priority</td><td><span class="badge badge-danger">Rejected</span></td><td class="col-muted">18 min</td></tr>
</tbody>
</table>
</div>