Components

Badge

Displays a badge or a component that looks like a badge.

DefaultSecondaryDestructiveOutlineGhostLink

Installation

Cortexcn
pnpm dlx shadcn@latest add @cortexcn/badge

Usage

import { Badge, badgeVariants } from "@/components/badge";

Examples

Variants

DefaultSecondaryDestructiveOutlineGhostLink
import { Badge } from "@/components/badge"export function BadgeVariants() {  return (    <div className="flex flex-col gap-6">      <div className="flex flex-wrap gap-2 style-sera:gap-6">        <Badge>Default</Badge>        <Badge variant="secondary">Secondary</Badge>        <Badge variant="destructive">Destructive</Badge>        <Badge variant="outline">Outline</Badge>        <Badge variant="ghost">Ghost</Badge>        <Badge variant="link">Link</Badge>      </div>    </div>  )}

Icon left

DefaultSecondaryDestructiveOutlineGhostLink
import { Badge } from "@/components/badge"import { BadgeCheck } from "lucide-react"export function BadgeWithIconLeft() {  return (    <div className="flex flex-col gap-6 max-w-fit">      <div className="flex flex-wrap gap-2 style-sera:gap-6">        <Badge>          <BadgeCheck data-icon="inline-start" />          Default        </Badge>        <Badge variant="secondary">          <BadgeCheck data-icon="inline-start" />          Secondary        </Badge>        <Badge variant="destructive">          <BadgeCheck data-icon="inline-start" />          Destructive        </Badge>        <Badge variant="outline">          <BadgeCheck data-icon="inline-start" />          Outline        </Badge>        <Badge variant="ghost">          <BadgeCheck data-icon="inline-start" />          Ghost        </Badge>        <Badge variant="link">          <BadgeCheck data-icon="inline-start" />          Link        </Badge>      </div>    </div>  )}

Icon right

DefaultSecondaryDestructiveOutlineGhostLink
import { Badge } from "@/components/badge"import { ArrowRightIcon } from "lucide-react"export function BadgeWithIconRight() {  return (    <div className="flex flex-col gap-6 max-w-fit">      <div className="flex flex-wrap gap-2 style-sera:gap-6">        <Badge>          Default          <ArrowRightIcon data-icon="inline-end" />        </Badge>        <Badge variant="secondary">          Secondary          <ArrowRightIcon data-icon="inline-end" />        </Badge>        <Badge variant="destructive">          Destructive          <ArrowRightIcon data-icon="inline-end" />        </Badge>        <Badge variant="outline">          Outline          <ArrowRightIcon data-icon="inline-end" />        </Badge>        <Badge variant="ghost">          Ghost          <ArrowRightIcon data-icon="inline-end" />        </Badge>        <Badge variant="link">          Link          <ArrowRightIcon data-icon="inline-end" />        </Badge>      </div>    </div>  )}

With spinner

DefaultSecondaryDestructiveOutlineGhostLink
import { Badge } from "@/components/badge"import { Spinner } from "@/components/spinner"export function BadgeWithSpinner() {  return (    <div className="flex flex-col gap-6 max-w-fit">      <div className="flex flex-wrap gap-2 style-sera:gap-6">        <Badge>          <Spinner data-icon="inline-start" />          Default        </Badge>        <Badge variant="secondary">          <Spinner data-icon="inline-start" />          Secondary        </Badge>        <Badge variant="destructive">          <Spinner data-icon="inline-start" />          Destructive        </Badge>        <Badge variant="outline">          <Spinner data-icon="inline-start" />          Outline        </Badge>        <Badge variant="ghost">          <Spinner data-icon="inline-start" />          Ghost        </Badge>        <Badge variant="link">          <Spinner data-icon="inline-start" />          Link        </Badge>      </div>    </div>  )}

asChild

import { Badge } from "@/components/badge"import { ArrowUpRightIcon } from "lucide-react"export function BadgeAsLink() {  return (    <div className="flex flex-col gap-6">      <div className="flex flex-wrap gap-2 style-sera:gap-6">        <Badge asChild>          <a href="#">            Link{" "}            <ArrowUpRightIcon data-icon="inline-end" />          </a>        </Badge>        <Badge asChild variant="secondary">          <a href="#">            Link{" "}            <ArrowUpRightIcon data-icon="inline-end" />          </a>        </Badge>        <Badge asChild variant="destructive">          <a href="#">            Link{" "}            <ArrowUpRightIcon data-icon="inline-end" />          </a>        </Badge>        <Badge asChild variant="outline">          <a href="#">            Link{" "}            <ArrowUpRightIcon data-icon="inline-end" />          </a>        </Badge>        <Badge asChild variant="ghost">          <a href="#">            Link{" "}            <ArrowUpRightIcon data-icon="inline-end" />          </a>        </Badge>        <Badge asChild variant="link">          <a href="#">            Link{" "}            <ArrowUpRightIcon data-icon="inline-end" />          </a>        </Badge>      </div>    </div>  )}

Long text

A badge with a lot of text to see how it wraps
import { Badge } from "@/components/badge"export function BadgeLongText() {  return (    <div className="flex flex-col gap-6">      <div className="flex flex-wrap gap-2 style-sera:gap-6">        <Badge variant="secondary">          A badge with a lot of text to see how it wraps        </Badge>      </div>    </div>  )}

Custom colors

BlueGreenSkyPurpleBlueGreenSkyPurpleRed
import { Badge } from "@/components/badge"export function BadgeCustomColors() {  return (    <div className="flex flex-col gap-6 max-w-fit">      <div className="flex flex-wrap gap-2 style-sera:gap-6">        <Badge className="bg-blue-600 text-blue-50 dark:bg-blue-600 dark:text-blue-50">          Blue        </Badge>        <Badge className="bg-green-600 text-green-50 dark:bg-green-600 dark:text-green-50">          Green        </Badge>        <Badge className="bg-sky-600 text-sky-50 dark:bg-sky-600 dark:text-sky-50">          Sky        </Badge>        <Badge className="bg-purple-600 text-purple-50 dark:bg-purple-600 dark:text-purple-50">          Purple        </Badge>        <Badge className="bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300">          Blue        </Badge>        <Badge className="bg-green-50 text-green-700 dark:bg-green-950 dark:text-green-300">          Green        </Badge>        <Badge className="bg-sky-50 text-sky-700 dark:bg-sky-950 dark:text-sky-300">          Sky        </Badge>        <Badge className="bg-purple-50 text-purple-700 dark:bg-purple-950 dark:text-purple-300">          Purple        </Badge>        <Badge className="bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-300">          Red        </Badge>      </div>    </div>  )}

Adapted from the shadcn/ui Badge (MIT).