Badge macrolite
A small count or status label.
createSurface + updateComponents, A2UI v0.9.
[
{
"version": "v0.9",
"createSurface": {
"surfaceId": "preview",
"catalogId": "https://ui.exponential.at/catalogs/core/v1"
}
},
{
"version": "v0.9",
"updateComponents": {
"surfaceId": "preview",
"components": [
{
"id": "root",
"component": "Stack",
"direction": "vertical",
"align": "start",
"children": [
"example"
]
},
{
"id": "example",
"component": "Badge",
"text": "Active",
"variant": "default"
}
]
}
}
]This surface through a MemoryTransport. Install and transports: React guide.
This surface through a MemoryTransport. Install and transports: SwiftUI guide.
This surface through a MemoryTransport. Install and transports: Compose guide.
This surface through a MemoryTransport. Install and transports: gpui guide.




View exponential-ui-badge, painted by each native renderer.
variant · defaultvariant · secondaryvariant · outlinevariant · ghostvariant · destructivevariant · link| Prop | Type | Default | Description |
|---|---|---|---|
textrequiredbind | string | – | The label or number. |
variant | default | secondary | outline | ghost | destructive | link | "default" | Filled, secondary, outlined or destructive. |
icon | icon | – | An icon before the text. |
No events, no slots. Children: none.
- Role
text- Semantics
- text (status)
Not focusable; no keys.
- Recipe parts
Badge/rootBadge/iconBadge/label- Keyed by
variant:hover:pressed:focus:disabled:checked:open:selected:invalid:dragover
Count badge
EXP-962: the smallest chip there is — a 16px capsule carrying a NUMBER and nothing else, 10px semibold and tabular so a count can climb without the box twitching.
More
`muted` is a count you parked (the rail's drafts), `primary` one that wants you (unread). Zero renders NOTHING, because a badge is a signal and an empty signal is noise, and past `max` it reads `99+`. PLACEMENT stays at the call site — a row's trailing edge, a nav glyph's corner — so the badge owns only its shape. A `Pill size="sm"` is 24 tall and carries a word; this carries a quantity.
the caller-less web Badge was deleted (UI cleanup batch, EXP-1245..1251); no web count capsule today
GlassSegmentedControlapps/ios/ExpUI/Sources/GlassSegmentedControl.swiftthe one count capsule is inlined in a segment; the tab bar's unread mark is a FloatingBarBadgeDot
GlassSegmentedControlapps/android/app/src/main/java/com/exponential/app/ui/components/GlassSegmentedControl.ktthe same inline capsule (BadgeFill) inside a segment, reachable by nothing else
controls::pills::count_badgeapps/desktop/crates/exponential-ui-gpui/src/controls/pills.rsEXP-963: RailBadge::Count hangs it on the rail's Drafts entry