Badge
A label that emphasizes an element that requires attention, or helps categorize with other similar elements.
Variants
graygray-subtle
blueblue-subtle
purplepurple-subtle
amberamber-subtle
redred-subtle
pinkpink-subtle
greengreen-subtle
tealteal-subtle
inverted
Trial
Turborepo
Sizes
SmallMediumLarge
With icons
graygraygraygraygraygray
blueblueblueblueblueblue
purplepurplepurplepurplepurplepurple
amberamberamberamberamberamber
redredredredredred
pinkpinkpinkpinkpinkpink
greengreengreengreengreengreen
tealtealtealtealtealteal
invertedinvertedinverted
Best Practices
- Use Badge for short, scannable metadata that sits next to the thing it describes: status, plan tier, environment, or role. One badge per row; two side by side is a sign the row needs a second column.
- For a colored dot without text, use Status Dot. For clickable filter chips that toggle a query, use the
pillvariant or a small Button. - Badges are static labels. Don’t wire
onClickonto them; promote to a Button or link if the user can act on the value. - Keep badge content to text or
icon+ text. Never stack two icons or a child Badge inside a Badge. - Pair lifecycle badges (
Alpha,Beta,Early Access) with a Tooltip that names the limit, likeAlpha: API may change before GA. - Title Case, one word when possible, two max:
Active,Pending,Pro,Enterprise Trial. Match the canonical API or log term:ProductionnotProd,DeployednotLive,CancelednotCancelled(the Vercel API uses one L). - Don’t add a checkmark icon for success states or an X for errors; the variant carries that signal. Map meaning to color:
greenfor healthy,redfor error,amberfor warning,bluefor informational or production,grayfor neutral. The-subtlesuffix tones any of them down on dense surfaces. - Skip stuffing sentences inside (
Currently Active,You are on Pro); the surrounding row supplies the context. - Set
titlefor icon-only or ambiguous badges so screen readers announce the meaning. Don’t rely on color alone; the text has to be readable without it.
Was this helpful?