Badges communicate status, counts, and metadata in dense enterprise interfaces (tables, headers, filters, and toolbars). Variants are token-driven, theme-safe, and designed for long work sessions. This page includes animated + live badges and a gamified achievement set.
Solid badges for high-signal statuses and counts.
import { Badge } from "@/design-system/components/Badge";
export function Example() {
return (
<div className="badges-row">
<Badge>Default</Badge>
<Badge tone="primary">Primary</Badge>
<Badge tone="success">Approved</Badge>
<Badge tone="warning">Needs review</Badge>
<Badge tone="danger">Blocked</Badge>
<Badge tone="neutral">Neutral</Badge>
</div>
);
}
Adds requested tones: "yellow" and "dark". Yellow maps to the warning token channel for consistency.
import { Badge } from "@/design-system/components/Badge";
export function Example() {
return (
<div className="badges-row">
<Badge tone="yellow">Yellow (requested)</Badge>
<Badge tone="dark">Dark (requested)</Badge>
<Badge variant="soft" tone="yellow">Yellow soft</Badge>
<Badge variant="outline" tone="dark">Dark outline</Badge>
</div>
);
}
Soft badges are ideal for tables, filters, and secondary status metadata.
import { Badge } from "@/design-system/components/Badge";
export function Example() {
return (
<div className="badges-row">
<Badge variant="soft" tone="primary">Primary</Badge>
<Badge variant="soft" tone="success">Active</Badge>
<Badge variant="soft" tone="warning">Pending</Badge>
<Badge variant="soft" tone="danger">Overdue</Badge>
<Badge variant="soft" tone="neutral">Draft</Badge>
</div>
);
}
Outline badges remain readable on busy surfaces while keeping a premium enterprise feel.
import { Badge } from "@/design-system/components/Badge";
import { CheckCircle2 } from "lucide-react";
export function Example() {
return (
<div className="badges-row">
<Badge variant="outline" tone="primary">Outline</Badge>
<Badge variant="outline" tone="success" leadingIcon={<CheckCircle2 />}>Verified</Badge>
<Badge variant="outline" tone="warning">Flagged</Badge>
<Badge variant="outline" tone="danger">Denied</Badge>
</div>
);
}
Pill badges are best for counts, segments, and compact labels.
import { Badge } from "@/design-system/components/Badge";
export function Example() {
return (
<div className="badges-row">
<Badge shape="pill" tone="primary">Pill</Badge>
<Badge shape="pill" variant="soft" tone="neutral">Count: 12</Badge>
<Badge shape="pill" variant="outline" tone="success">Online</Badge>
</div>
);
}
Soft-border badges provide structure. Label badges are premium tags for headers and dense tables.
import { Badge } from "@/design-system/components/Badge";
export function Example() {
return (
<div className="badges-row">
<Badge variant="soft-border" tone="primary">Soft border</Badge>
<Badge variant="soft-border" tone="success">HIPAA-ready</Badge>
<Badge variant="label" tone="neutral">Label</Badge>
<Badge variant="label" tone="yellow">Beta</Badge>
<Badge variant="label" tone="danger">Restricted</Badge>
</div>
);
}
Premium gradient badges for rare, high-emphasis markers (e.g., Premium, Priority).
import { Badge } from "@/design-system/components/Badge";
import { Sparkles } from "lucide-react";
export function Example() {
return (
<div className="badges-row">
<Badge variant="gradient" tone="primary" leadingIcon={<Sparkles />}>Premium</Badge>
<Badge variant="gradient" tone="success">Approved</Badge>
<Badge variant="gradient" tone="yellow">Priority</Badge>
<Badge variant="gradient" tone="dark">Secure</Badge>
</div>
);
}
Subtle enterprise-safe animations for attention without being distracting. Respects reduced-motion.
import { Badge } from "@/design-system/components/Badge";
import { Activity, Sparkles } from "lucide-react";
export function Example() {
return (
<div className="badges-row">
<Badge variant="soft" tone="primary" animation="pulse" leadingIcon={<Activity />}>
Updating
</Badge>
<Badge variant="gradient" tone="success" animation="glow">
Success
</Badge>
<Badge variant="achievement" tone="primary" animation="shine" leadingIcon={<Sparkles />}>
Featured
</Badge>
</div>
);
}
Use live badges for real-time states (Live, Syncing, Monitoring). Adds a ping ring to the dot.
import { Badge } from "@/design-system/components/Badge";
import { Radio, Shield } from "lucide-react";
export function Example() {
return (
<div className="badges-row">
<Badge variant="soft" tone="success" live leadingIcon={<Radio />}>
Live
</Badge>
<Badge variant="soft" tone="warning" live>
Syncing
</Badge>
<Badge variant="outline" tone="dark" live leadingIcon={<Shield />}>
Monitoring
</Badge>
</div>
);
}
Two enterprise patterns: inline count badges inside a button, and corner badges for notifications.
import { Button } from "@/design-system/components/Button";
import { Badge } from "@/design-system/components/Badge";
export function Example() {
return (
<div className="badges-toolbar">
<Button variant="ghost" size="sm">
Inbox <Badge variant="soft" tone="primary" shape="pill">12</Badge>
</Button>
<span className="badge-anchor">
<Button variant="primary" size="sm">
Notifications
</Button>
<Badge className="badge-corner" size="xs" shape="pill" tone="danger">
3
</Badge>
</span>
</div>
);
}
Enterprise header layout: title + environment tag + right-side status.
import { Badge } from "@/design-system/components/Badge";
export function Example() {
return (
<div className="badge-header-row">
<div className="badge-header-left">
<h3 className="h3">Students</h3>
<Badge variant="label" tone="yellow">Beta</Badge>
</div>
<Badge variant="soft" tone="success" live>Synced</Badge>
</div>
);
}
Achievement-style badges for motivation layers: streaks, levels, milestones, and recognition. Use sparingly in enterprise apps.
import { Badge } from "@/design-system/components/Badge";
import { Trophy, Flame, Zap, Crown } from "lucide-react";
export function Example() {
return (
<div className="badges-row">
<Badge variant="achievement" tone="yellow" shape="pill" leadingIcon={<Trophy />} animation="shine">
Top Performer
</Badge>
<Badge variant="achievement" tone="danger" shape="pill" leadingIcon={<Flame />} animation="glow">
7‑Day Streak
</Badge>
<Badge variant="achievement" tone="primary" shape="pill" leadingIcon={<Zap />} animation="pulse">
Level 12
</Badge>
<Badge variant="achievement" tone="dark" shape="pill" leadingIcon={<Crown />} animation="shine">
Elite
</Badge>
</div>
);
}