Badges

Badges label content with a status, category, or count: read-only metadata that tells the user what something is, not a control that asks them to act.

Demo

Change the props and copy the result.

Label
Component
type
color
size
import { Badge } from "@/components/base/badges/badges"; <Badge color="brand" size="lg">Label</Badge>

The family

Reach for the plain Badge for most labels. The rest of the family exists for the metadata it carries: a status dot, an icon, a country flag, an image, a dismiss button, an icon-only chip, and the announcement-style BadgeGroup. Each name links to its variants below. There is no states section, because a badge has none to force: everything here is static except the dismiss button on BadgeWithButton, whose hover and focus treatments are live in its gallery.

The components in this family, with their descriptions and import paths
ComponentDescriptionImport from
BadgeThe plain text badge in pill, color, and modern types.@/​components/​base/​badges/​badges
BadgeWithDotA badge with a leading status dot.@/​components/​base/​badges/​badges
BadgeWithIconA badge with a leading or trailing icon.@/​components/​base/​badges/​badges
BadgeWithFlagA badge with a leading country flag.@/​components/​base/​badges/​badges
BadgeWithImageA badge with a leading circular image.@/​components/​base/​badges/​badges
BadgeWithButtonA badge with a trailing dismiss button, the family’s only interactive element.@/​components/​base/​badges/​badges
BadgeIconAn icon-only badge chip, with no label.@/​components/​base/​badges/​badges
BadgeGroupAn announcement-style badge nested inside a wider pill with addon text.@/​components/​base/​badges/​badge-groups

Badge

The plain text badge: use it wherever content needs a status, category, or count beside it. Pick the type for the shape, the color for the meaning, and the size for the surface’s density. The full space follows in 3 sections, one per type, with the color axis read from the kit’s exported filledColors object: 11 colors across the top, the 3 sizes down the left.

pill-color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
md
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
lg
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
md
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
lg
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
modern
gray
sm
Draft
md
Draft
lg
Draft

The modern type is gray by design

The modern entry of the plain badge’s style map defines a single gray treatment, and the color prop’s type narrows to match, so the modern section above is a single gray column: no other combination compiles. The dot and icon variants below are the exception: their modern chip stays neutral while the addon takes the color.

Addon variants

Each member adds one piece of metadata to the same chip, and each runs the same three sections as the plain badge above: colors across the top, the 3 sizes down the left, one section per type. The dot and icon variants keep every color in their modern section, because that treatment keeps the chip neutral and tints only the addon; the flag, image, dismiss, and icon-only members follow the plain badge and take modern in gray alone, so their modern section is the single gray column.

BadgeWithDot

pill-color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
md
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
lg
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
md
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
lg
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
modern
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
md
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
lg
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label

BadgeWithIcon

pill-color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
md
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
lg
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
md
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
lg
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
modern
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
md
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
lg
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
10%
12%4%Add label

BadgeWithFlag

pill-color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
md
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
lg
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
md
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
lg
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
AU flagAustralia
modern
gray
sm
AU flagAustralia
md
AU flagAustralia
lg
AU flagAustralia

The flag artwork loads from the network

Every flag is an img pointing at untitledui.com, not an asset in this repo, so the badge renders empty offline or behind a blocking proxy. Self-host the SVGs if that matters to your product.

BadgeWithImage

pill-color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
md
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
lg
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
md
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
lg
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
Badge imageOlivia Rhye
modern
gray
sm
Badge imageOlivia Rhye
md
Badge imageOlivia Rhye
lg
Badge imageOlivia Rhye

BadgeWithButton

pill-color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
md
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
lg
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
md
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
lg
Draft
New
Failed
Pending
Active
Label
Label
Label
Label
Label
Label
modern
gray
sm
Draft
md
Draft
lg
Draft

The one interactive element in the family

The trailing dismiss is a real button, with its own hover and focus treatments, live above. It needs a buttonLabel every time; details are on the Code tab under Accessibility.

BadgeIcon

pill-color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
md
lg
color
graybranderrorwarningsuccessskyblueindigopurplepinkorange
sm
md
lg
modern
gray
sm
md
lg

An icon-only badge says nothing to a screen reader

The chip renders only the icon, and the kit gives it no accessible name, so whatever the icon means must also exist as text nearby.

BadgeGroup

An announcement chip: a small badge nested inside a wider pill, for release banners and hero eyebrows. Its full space follows in 2 sections, one per theme: 5 colors down the left, the 2 aligns across the top, and both sizes in every cell, each color carrying the message the Figma sheet writes for it. It is also the one member with hover styling and a pointer cursor, yet it renders no interactive element, so wrap it in a real link or button when it should go somewhere.

light
leadingtrailing
brand
New featureWe’ve just released a new feature
New featureWe’ve just released a new feature
We’ve just released a new featureNew feature
We’ve just released a new featureNew feature
warning
WarningJust to let you know this might be a problem
WarningJust to let you know this might be a problem
Just to let you know this might be a problemWarning
Just to let you know this might be a problemWarning
error
ErrorThere was a problem with that action
ErrorThere was a problem with that action
There was a problem with that actionFix now
There was a problem with that actionFix now
gray
Version 4.0We’ve just released a new feature
Version 4.0We’ve just released a new feature
We’ve just released a new featureVersion 4.0
We’ve just released a new featureVersion 4.0
success
SuccessYou’ve updated your profile and details
SuccessYou’ve updated your profile and details
You’ve updated your profile and detailsSuccess
You’ve updated your profile and detailsSuccess
modern
leadingtrailing
brand
New featureWe’ve just released a new feature
New featureWe’ve just released a new feature
We’ve just released a new featureNew feature
We’ve just released a new featureNew feature
warning
WarningJust to let you know this might be a problem
WarningJust to let you know this might be a problem
Just to let you know this might be a problemWarning
Just to let you know this might be a problemWarning
error
ErrorThere was a problem with that action
ErrorThere was a problem with that action
There was a problem with that actionFix now
There was a problem with that actionFix now
gray
Version 4.0We’ve just released a new feature
Version 4.0We’ve just released a new feature
We’ve just released a new featureVersion 4.0
We’ve just released a new featureVersion 4.0
success
SuccessYou’ve updated your profile and details
SuccessYou’ve updated your profile and details
You’ve updated your profile and detailsSuccess
You’ve updated your profile and detailsSuccess