Status label
● Stable · v0.1A small, read-only pill that names the state of one thing — "Pending", "Synced", "Paid", "Offline", "Overdue". It lets a user read status by colour and word at a glance, without a sentence.
In context
Purpose
StatusLabel answers "what's the state of this?" in one glance — on a payment row, a synced entry, a draft. It's the smallest way to show status, and it's read-only: if tapping it does something, it's an ActionChip, not a StatusLabel.
Anatomy
- Pill — a tone-tinted rounded container.
- Dot (optional) — a small tone-coloured dot, good for live/sync status.
- Icon (optional, overrides the dot) — for a more specific mark.
- Label — one or two words, never a sentence.
Variants
neutral (plain states like "Draft"), info, success ("Paid", "Synced"),
warning ("Pending"), error ("Overdue"), and brand (a teal-tinted highlight
state). Tones map to the feedback tokens.
Code
import { StatusLabel } from '@daytwo/components'<StatusLabel label="Paid" tone="success" dot /><StatusLabel label="Pending" tone="warning" dot /><StatusLabel label="Overdue" tone="error" />
When to use
- A status per row in a list (payments, entries, missions).
- A sync/online marker (with
dot). - Any place a state needs a name but no interaction.
When NOT to use
- A tappable filter/action — use an ActionChip.
- A full message — use an Alert.
- Decoration — a pill with no real state behind it is noise.
Good vs bad
- Good: "Overdue" in
errornext to a customer who owes money — a real state, one word, scannable down the column. - Bad: a bright
brandpill on every row "for emphasis" — colour stops meaning anything, and the one row that actually needs attention disappears.
Edge cases
Long Burmese/Thai label
numberOfLines={1}; keep to 1–2 words
WhyA pill that wraps stops reading as a status token
Many rows
Use a small, consistent tone set so a column scans
WhyStatus is only useful if the colours mean the same thing everywhere
Dark mode
bg/fg follow the feedback tokens per theme
WhyContrast must hold in both schemes
Read-only by definition
A StatusLabel reports; it never acts. The moment it's tappable, switch to an ActionChip so the affordance is honest.
Tokens used
color.background.tertiarycolor.feedback.successBgcolor.feedback.warningBgcolor.feedback.errorBgcolor.brand.tintradius.pilltypography.caption