Devie UI
Version: 2026-02-14
Primary
Outline
Danger
Success
Warning

The Badge component is a custom implementation designed to display labels, tags, or status indicators with various visual styles and variants.

Installation

Here is the component implementation code that you can copy to your project:

// https://devie-ui.com/components/badge
 
import clsx from "clsx";
import React from "react";
import styles from "./Badge.module.scss";
 
type BadgeVariant =
  | "primary"
  | "outline"
  | "danger"
  | "success"
  | "warning"
  | "literalGray"
  | "literalBrown"
  | "literalOrange"
  | "literalYellow"
  | "literalGreen"
  | "literalBlue"
  | "literalPurple"
  | "literalPink"
  | "literalRed";
 
function Badge({
  variant = "outline",
  children,
  className,
  as: Component = "div",
  ...props
}: Badge.Props) {
  const badgeClassName = clsx(
    styles.badge,
    {
      [styles.primary]: variant === "primary",
      [styles.outline]: variant === "outline",
      [styles.danger]: variant === "danger",
      [styles.success]: variant === "success",
      [styles.warning]: variant === "warning",
      [styles.literalGray]: variant === "literalGray",
      [styles.literalBrown]: variant === "literalBrown",
      [styles.literalOrange]: variant === "literalOrange",
      [styles.literalYellow]: variant === "literalYellow",
      [styles.literalGreen]: variant === "literalGreen",
      [styles.literalBlue]: variant === "literalBlue",
      [styles.literalPurple]: variant === "literalPurple",
      [styles.literalPink]: variant === "literalPink",
      [styles.literalRed]: variant === "literalRed",
    },
 
    className,
  );
 
  return React.createElement(
    Component,
    {
      className: badgeClassName,
      ...props,
    },
    children,
  );
}
 
namespace Badge {
  export interface Props extends React.HTMLAttributes<HTMLDivElement> {
    variant?: BadgeVariant;
    as?: React.ElementType;
  }
}
 
export default Badge;

Use Cases

Badge Variants

Badges come in different variants to convey different meanings: primary, outline, danger, success, and warning.

Primary
Outline
Danger
Success
Warning

Badge with Icons

It's possible to add icons from Lucide or any other icon library to enhance the badge's visual meaning.

Completed
Featured

Clickable Badges

Badges can be made interactive by wrapping them in an anchor tag or using them as buttons. Hover effects applies automatically when the badge is inside an anchor (<a>) or rendered as a button element.s