Github

Badge

Same look of HeroUI's badge

BadgeNotifications
import { BellIcon } from "lucide-react";

import { Badge } from "@/components/ui/badge";

export function BadgeDemo() {
	return (
		<div className="flex items-center gap-3">
			<Badge>Badge</Badge>
			<Badge size="lg" variant="primary">
				<BellIcon data-icon="inline-start" />
				Notifications
			</Badge>
		</div>
	);
}

Installation

pnpm dlx shadcn@latest add https://herocn.dev/r/badge.json

Usage

import { Badge } from "@/components/ui/badge"
<Badge>Badge</Badge>
<Badge variant="success">Success</Badge>
<Badge size="sm">Small badge</Badge>

Examples

Variants

Use the variant prop to change the variant of the badge.

DefaultPrimarySuccessWarningDestructive
import { Badge } from "@/components/ui/badge";

export function BadgeVariants() {
	return (
		<div className="flex flex-wrap items-center gap-2">
			<Badge>Default</Badge>
			<Badge variant="primary">Primary</Badge>
			<Badge variant="success">Success</Badge>
			<Badge variant="warning">Warning</Badge>
			<Badge variant="destructive">Destructive</Badge>
		</div>
	);
}

Sizes

Use the size prop to change the size of the badge.

SmallDefaultLarge
import { Badge } from "@/components/ui/badge";

export function BadgeSizes() {
	return (
		<div className="flex flex-wrap items-center gap-2">
			<Badge size="sm">Small</Badge>
			<Badge>Default</Badge>
			<Badge size="lg">Large</Badge>
		</div>
	);
}

With Icon

You can render an icon inside the badge. Use data-icon="inline-start" to render the icon on the left and data-icon="inline-end" to render the icon on the right.

NotificationsNew
import { BellIcon, CheckCheckIcon } from "lucide-react";

import { Badge } from "@/components/ui/badge";

export function BadgeIcon() {
	return (
		<div className="flex flex-wrap items-center gap-2">
			<Badge>
				<BellIcon data-icon="inline-start" />
				Notifications
			</Badge>
			<Badge variant="success">
				<CheckCheckIcon data-icon="inline-end" />
				New
			</Badge>
		</div>
	);
}

Custom Colors

You can customize the colors of a badge by adding custom classes such as bg-green-50 dark:bg-green-800 to the Badge component.

Custom greenCustom blueCustom amber
import { Badge } from "@/components/ui/badge";

export function BadgeColors() {
	return (
		<div className="flex flex-wrap items-center gap-2">
			<Badge className="bg-green-50 text-green-900 dark:bg-green-800 dark:text-green-50">
				Custom green
			</Badge>
			<Badge className="bg-blue-50 text-blue-900 dark:bg-blue-800 dark:text-blue-50">
				Custom blue
			</Badge>
			<Badge className="bg-amber-50 text-amber-900 dark:bg-amber-800 dark:text-amber-50">
				Custom amber
			</Badge>
		</div>
	);
}

RTL

جديدموثققيد الانتظارالإشعارات
"use client";

import {
	BellIcon,
	CheckCheckIcon,
	StarIcon,
	TriangleAlertIcon,
} from "lucide-react";

import {
	type Translations,
	useTranslation,
} from "@/components/language-selector";
import { Badge } from "@/components/ui/badge";

const translations: Translations = {
	en: {
		dir: "ltr",
		values: {
			new: "New",
			verified: "Verified",
			pending: "Pending",
			notifications: "Notifications",
		},
	},
	ar: {
		dir: "rtl",
		values: {
			new: "جديد",
			verified: "موثق",
			pending: "قيد الانتظار",
			notifications: "الإشعارات",
		},
	},
	he: {
		dir: "rtl",
		values: {
			new: "חדש",
			verified: "מאומת",
			pending: "ממתין",
			notifications: "התראות",
		},
	},
};

export function BadgeRtl() {
	const { dir, language, t } = useTranslation(translations, "ar");

	return (
		<div
			className="flex flex-wrap items-center gap-2"
			lang={language}
			dir={dir}
		>
			<Badge variant="primary">
				<StarIcon data-icon="inline-start" />
				{t.new}
			</Badge>
			<Badge variant="success">
				<CheckCheckIcon data-icon="inline-start" />
				{t.verified}
			</Badge>
			<Badge variant="warning">
				<TriangleAlertIcon data-icon="inline-start" />
				{t.pending}
			</Badge>
			<Badge>
				<BellIcon data-icon="inline-start" />
				{t.notifications}
			</Badge>
		</div>
	);
}

API Reference

Badge

The Badge component displays a badge or a component that looks like a badge.

PropTypeDefault