Data Display

Badge

Displays a small indicator positioned relative to another element, commonly used for notification counts, status dots, and labels

Completeness: styles-sufficient

The stylesheet is the whole component. There is no keyboard map beyond what the native element already does and nothing sets state at runtime that the CSS keys on, so a CSS-only port reproduces it.

Import

import { Badge } from '@blakeui/react';

Anatomy

Badge is designed to be positioned relative to another element using Badge.Anchor. Plain-text children are automatically wrapped in <Badge.Label>.

For standalone label usage, use the Chip component instead.

<Badge.Anchor>
  <Avatar />
  <Badge color="danger">5</Badge>
</Badge.Anchor>

Usage

JD5ABNewCD
import {Avatar, Badge} from "@blakeui/react";

const GREEN_AVATAR_URL = "https://cdn.blakeui.com/avatars/green.jpg";
const ORANGE_AVATAR_URL = "https://cdn.blakeui.com/avatars/orange.jpg";
const BLUE_AVATAR_URL = "https://cdn.blakeui.com/avatars/blue.jpg";

Colors

JDJDJDJDJD
import {Avatar, Badge} from "@blakeui/react";

const AVATAR_URL = "https://cdn.blakeui.com/avatars/green.jpg";

export function BadgeColors() {

Sizes

JD5JD5JD5
import {Avatar, Badge} from "@blakeui/react";

const AVATAR_URL = "https://cdn.blakeui.com/avatars/green.jpg";

export function BadgeSizes() {

Variants

primary

JD5JD5JD5JD5JD5

secondary

JD5JD5JD5JD5JD5

soft

JD5JD5JD5JD5JD5
import {Avatar, Badge, Separator} from "@blakeui/react";
import React from "react";

const AVATAR_URL = "https://cdn.blakeui.com/avatars/green.jpg";

Placements

JDtop-right
JDtop-left
JDbottom-right
JDbottom-left
import {Avatar, Badge} from "@blakeui/react";

const AVATAR_URL = "https://cdn.blakeui.com/avatars/green.jpg";

export function BadgePlacements() {

With Content

Badge supports text, numbers, and icons as content. When no children are provided, it renders as a dot indicator.

JD5JDNewJD99+JD
import {Avatar, Badge} from "@blakeui/react";
import {Bell} from "@gravity-ui/icons";

const AVATAR_URL = "https://cdn.blakeui.com/avatars/green.jpg";

Dot Badge

Empty badges act as status indicators — useful for online/offline states or activity signals.

JDJDJDJD
import {Avatar, Badge} from "@blakeui/react";

const AVATAR_URL = "https://cdn.blakeui.com/avatars/green.jpg";

export function BadgeDot() {

Styling

Passing Tailwind CSS classes

You can style the root container and individual slots:

import {Badge, Avatar} from '@blakeui/react';

function CustomBadge() {
  return (
    <Badge.Anchor>
      <Avatar />
      <Badge className="border-2 border-white" color="danger">
        <Badge.Label className="font-bold">99+</Badge.Label>
      </Badge>
    </Badge.Anchor>
  );
}

Customizing the component classes

To customize the Badge component classes, you can use the @layer components directive.
Learn more.

A worked example is in Styling.

blakeUI follows the BEM methodology to ensure component variants and states are reusable and easy to customize.

CSS Classes

The Badge component uses these CSS classes (View source styles):

Base Classes

  • .badge - Base badge container styles
  • .badge__label - Label text slot styles
  • .badge-anchor - Positioning wrapper for the anchored element

Color Classes

  • .badge--accent - Accent color variant
  • .badge--danger - Danger color variant
  • .badge--default - Default color variant
  • .badge--success - Success color variant
  • .badge--warning - Warning color variant

Variant Classes

  • .badge--primary - Primary variant with filled background
  • .badge--secondary - Secondary variant with default background
  • .badge--soft - Soft variant with lighter background

Size Classes

  • .badge--sm - Small size
  • .badge--md - Medium size (default)
  • .badge--lg - Large size

Placement Classes

  • .badge--top-right - Position at top-right corner (default)
  • .badge--top-left - Position at top-left corner
  • .badge--bottom-right - Position at bottom-right corner
  • .badge--bottom-left - Position at bottom-left corner

Compound Variant Classes

Badges support combining variant and color classes (e.g., .badge--primary.badge--accent). The following combinations have default styles defined:

Primary Variants:

  • .badge--primary.badge--accent - Primary accent with filled background
  • .badge--primary.badge--default - Primary default with filled background
  • .badge--primary.badge--success - Primary success with filled background
  • .badge--primary.badge--warning - Primary warning with filled background
  • .badge--primary.badge--danger - Primary danger with filled background

Soft Variants:

  • .badge--soft.badge--accent - Soft accent with lighter background
  • .badge--soft.badge--default - Soft default with lighter background
  • .badge--soft.badge--success - Soft success with lighter background
  • .badge--soft.badge--warning - Soft warning with lighter background
  • .badge--soft.badge--danger - Soft danger with lighter background

API Reference

Badge Props

PropTypeDefaultDescription
childrenReact.ReactNode-Content to display inside the badge (text, number, or icon). When omitted, renders as a dot.
classNamestring-Additional CSS classes for the root element
color"default" | "accent" | "success" | "warning" | "danger""default"Color variant of the badge
variant"primary" | "secondary" | "soft""primary"Visual style variant
size"sm" | "md" | "lg""md"Size of the badge
placement"top-right" | "top-left" | "bottom-right" | "bottom-left""top-right"Position of the badge relative to its anchor

Badge.Anchor Props

PropTypeDefaultDescription
childrenReact.ReactNode-The element to anchor the badge to, plus the Badge itself
classNamestring-Additional CSS classes for the anchor wrapper

Badge.Label Props

PropTypeDefaultDescription
childrenReact.ReactNode-Label text content
classNamestring-Additional CSS classes for the label slot

On this page