Badge

Small status label with variant styles.

Report a bug

Preview

Switch between light and dark to inspect the embedded Storybook preview.

Installation

pnpm dlx shadcn@latest add https://ui.vllnt.ai/r/badge.json

Storybook

Explore all variants, controls, and accessibility checks in the interactive Storybook playground.

View in Storybook

Code

import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "../../lib/utils"; const badgeVariants = cva( "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", { defaultVariants: { variant: "default", }, variants: { variant: { default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", outline: "text-foreground", secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", }, }, }, ); export type BadgeProps = {} & React.HTMLAttributes<HTMLSpanElement> & VariantProps<typeof badgeVariants>; function Badge({ className, variant, ...props }: BadgeProps) { return ( <span className={cn(badgeVariants({ variant }), className)} {...props} /> ); } export { Badge, badgeVariants };

Dependencies

  • @vllnt/ui@^0.2.1