---
import { Badge } from "@/components/ui/badge"
---
<div class="flex w-full flex-wrap justify-center gap-2">
<Badge>Badge</Badge>
<Badge variant="secondary">Secondary</Badge>
<Badge variant="destructive">Destructive</Badge>
<Badge variant="outline">Outline</Badge>
</div>Installation
npx shadcn@latest add @fulldev/badge
Usage
import { Badge } from "@/components/ui/badge"
<Badge variant="default">Badge</Badge>
Badge renders a span. It is strict polymorphic: pass as to render another
element and use that element’s attributes, such as <Badge as="a" href="/docs">
or <Badge as="button" type="button">. badgeVariants gives the same classes
to a custom element.
Variants
Use the variant prop to change the variant of the badge.
---
import { Badge } from "@/components/ui/badge"
---
<div class="flex flex-wrap gap-2">
<Badge>Default</Badge>
<Badge variant="secondary">Secondary</Badge>
<Badge variant="destructive">Destructive</Badge>
<Badge variant="outline">Outline</Badge>
<Badge variant="ghost">Ghost</Badge>
</div>With Icon
Add data-icon="inline-start" or data-icon="inline-end" to the icon for the
correct spacing.
---
import BadgeCheck from "@lucide/astro/icons/badge-check"
import BookmarkIcon from "@lucide/astro/icons/bookmark"
import { Badge } from "@/components/ui/badge"
---
<div class="flex flex-wrap gap-2">
<Badge variant="secondary">
<BadgeCheck data-icon="inline-start" />
Verified
</Badge>
<Badge variant="outline">
Bookmark
<BookmarkIcon data-icon="inline-end" />
</Badge>
</div>With Spinner
Render a Spinner inside the badge with data-icon="inline-start" or
data-icon="inline-end".
---
import { Badge } from "@/components/ui/badge"
import { Spinner } from "@/components/ui/spinner"
---
<div class="flex flex-wrap gap-2">
<Badge variant="destructive">
<Spinner data-icon="inline-start" />
Deleting
</Badge>
<Badge variant="secondary">
Generating
<Spinner data-icon="inline-end" />
</Badge>
</div>Link
Use as="a" with href to render the badge as a link.
---
import ArrowUpRightIcon from "@lucide/astro/icons/arrow-up-right"
import { Badge } from "@/components/ui/badge"
---
<Badge as="a" href="#link">
Open Link <ArrowUpRightIcon data-icon="inline-end" />
</Badge>Custom Colors
Add classes such as bg-green-50 dark:bg-green-800 to customize the colors.
---
import { Badge } from "@/components/ui/badge"
---
<div class="flex flex-wrap gap-2">
<Badge class="bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300">
Blue
</Badge>
<Badge class="bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300">
Green
</Badge>
<Badge class="bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300">
Sky
</Badge>
<Badge class="bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300">
Purple
</Badge>
<Badge class="bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300">
Red
</Badge>
</div>RTL
---
import BadgeCheck from "@lucide/astro/icons/badge-check"
import BookmarkIcon from "@lucide/astro/icons/bookmark"
import { Badge } from "@/components/ui/badge"
const translations = {
en: {
dir: "ltr",
values: {
badge: "Badge",
secondary: "Secondary",
destructive: "Destructive",
outline: "Outline",
verified: "Verified",
bookmark: "Bookmark",
},
},
ar: {
dir: "rtl",
values: {
badge: "شارة",
secondary: "ثانوي",
destructive: "مدمر",
outline: "مخطط",
verified: "متحقق",
bookmark: "إشارة مرجعية",
},
},
he: {
dir: "rtl",
values: {
badge: "תג",
secondary: "משני",
destructive: "הרסני",
outline: "קווי מתאר",
verified: "מאומת",
bookmark: "סימנייה",
},
},
}
const { dir, values: t } = translations.ar
---
<div class="flex w-full flex-wrap justify-center gap-2" dir={dir}>
<Badge>{t.badge}</Badge>
<Badge variant="secondary">{t.secondary}</Badge>
<Badge variant="destructive">{t.destructive}</Badge>
<Badge variant="outline">{t.outline}</Badge>
<Badge variant="secondary">
<BadgeCheck data-icon="inline-start" />
{t.verified}
</Badge>
<Badge variant="outline">
{t.bookmark}
<BookmarkIcon data-icon="inline-end" />
</Badge>
</div>API Reference
Source: src/components/ui/badge
| Prop | Type | Default |
|---|---|---|
variant | "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | "default" |
as | HTML tag | "span" |
Badge writes its variant to data-variant.