◆ Components · Badges & Pills · v1.0
Status as
language
6 tones · 5 sizes · 4 shapes
pill · solid · tag · counter
01
ANATOMY · the default pill
dot · label · case · weight
★ ACTIVE NOW
▸ DOT
6px · glow-color · optional pulse
▸ LABEL
JetBrains Mono · 700 · UPPERCASE · LS .12em
▸ CASE
always upper · max 18 chars
▸ RADIUS
--r-full (999px)
▸ BORDER
1px tone/30 · fill tone/12
▸ HEIGHT
24px default · 32px lg · 18px xs
02
TONES · 6 + 2 solid
one role per color
★
LIME · BRAND
ACTIVE
LIVE
★ PRO
CYAN · INFO
INCOMING
ROUTING
+TRANSFERRED
VIOLET · PREMIUM
ENTERPRISE
★ NEW
BETA
RED · DANGER
MISSED
FAILED
−$0.04
AMBER · WARN
PENDING
RATE LIMIT
−4%
MUTE · NEUTRAL
QUEUED
UTC−05:00
DRAFT
★
SOLID · LIME
★ HERO
START TRIAL
SOLID · DARK
BETA · v1.0
★ NEW · BANNER
03
SIZES · 5 step scale
all 8pt-aligned in height
XS · 18px
X1
+2
!
Inline within body text · counter beside icons
SM · 22px
LIVE
EU-WEST-2
v1.0
Dense tables · sidebar items · meta rows
★
MD · 24px
ACTIVE
ENTERPRISE
MISSED
Default · cards · list rows · most call sites
LG · 32px
★ LIVE NOW
★ PRO PLAN
Section headers · hero pricing badge
XL · 40px
★ ANNOUNCEMENT
BETA · v1.0
Marketing announcement bars · launch ribbons
04
SHAPES · pill is canonical · tag · counter · keycap
4 variants beyond the pill
PILL · default
ACTIVE
+12
Status · count · category · the workhorse
TAG · removable
SALES
×
EU-WEST
×
PRIORITY
×
Filter chips · selected segments · removable
COUNTER · numeric
3
12
99+
★
2
Nav badges · inbox count · always numeric · max 99+
KEYCAP · shortcut
⌘
K
·
↵
·
ESC
Keyboard hints · command palette · tooltips
05
IN CONTEXT · the 6 real-world uses
pills live inside other components
★ CALL ROW · ACTIVE
MO
Mo · Outbound
SAL · 09:14 ·
03:21
LIVE
CALL ROW · MISSED
JD
Jane Doe · Inbound
+1 415 555 0142 · 4m ago
MISSED
NAV ITEM · UNREAD COUNTER
▸ INBOX · CALLS
14
FILTER BAR · REMOVABLE TAGS
FILTERED BY
SALES
×
EU-WEST
×
7-DAYS
×
PRICING TIER · PREMIUM
Pro Plan
$49 / mo · unlimited calls
★ POPULAR
COMMAND PALETTE · KEYCAPS
▸ Start a new call
⌘
N
06
RULES · what to do · what to avoid
opinionated · enforced
✓ DO
Use ONE tone per badge — never gradient or multi-color fills
Always set
text-transform: uppercase
Animate the dot with pulse
only
on live/active states
Pair counter badges with an icon they belong to
Use mute tone for inert/neutral facts (timezone, version)
✗ DON'T
Don't put sentence-case copy in a pill — uppercase only
Don't stack 4+ pills in a row — that's a tag input, use Tag
Don't use red/amber for "new feature" — use violet
Don't pulse static badges — kills the live-state signal
Don't exceed 18 character label — truncate or rephrase
07
TOKEN REFERENCE
--badge-* · component scope
RADIUS
pill
--r-full
RADIUS
tag
--r-3 · 6px
FONT
label
JetBrains 700
LS
tracking
0.12em
PAD-Y
md
5px
PAD-X
md
10–11px
DOT
size
6 × 6px
DOT GLOW
pulse
8px tone
FILL
tone
tone/.12
BORDER
tone
tone/.30
MAX LABEL
chars
≤ 18
PULSE
anim
1.6s ease