MERIDIAN // NEXTUI

Badge

Status badge with six color variants: ice, green, amber, red, violet, and surface. Designed for dashboard labels, status indicators, and category tags.

$npx @voltenworks/shipui add badge --theme meridian
Or install the base component for free:
Live Preview
Open full demo
voltenworks.com/shipui/meridian/demo/components#02-badge
Usage
TSX
<Badge variant="green">Active</Badge>
Variants
<Badge variant="ice">Default</Badge>
<Badge variant="green">Active</Badge>
<Badge variant="amber">Pending</Badge>
<Badge variant="red">Error</Badge>
<Badge variant="violet">New</Badge>
<Badge variant="surface">Archived</Badge>
Source
TSX
import type * as React from 'react'
import { cn } from '@/lib/utils'

interface BadgeProps {
  children: React.ReactNode
  variant?: 'ice' | 'green' | 'amber' | 'red' | 'violet' | 'surface'
  className?: string
}

const variantClass: Record<NonNullable<BadgeProps['variant']>, string> = {
  ice: 'mdn-badge mdn-badge-ice',
  green: 'mdn-badge mdn-badge-green',
  amber: 'mdn-badge mdn-badge-amber',
  red: 'mdn-badge mdn-badge-red',
  violet: 'mdn-badge mdn-badge-violet',
  surface: 'mdn-badge mdn-badge-surface',
}

export function Badge({
  children,
  variant = 'ice',
  className,
}: BadgeProps): React.JSX.Element {
  return (
    <span className={cn(variantClass[variant], className)}>
      {children}
    </span>
  )
}
Preview in theme demoGet full theme, $49
Works withNext.js 15React 19Tailwind v4TypeScript 5
More from MERIDIAN // NEXT
MERIDIAN // NEXTUI

Button

Dashboard button with primary (solid), secondary (outline), and ghost variants in three sizes. Renders as a Next.js Link when an href is provided.

MERIDIAN // NEXTUI

Text

Polymorphic text primitive with body, caption, label, code, and mono variants. Renders as any block or inline HTML tag via the `as` prop.

MERIDIAN // NEXTUI

Card

Composable card with Card, CardHeader, and CardBody sub-components. Uses `mdn-card` CSS classes for consistent dashboard panel styling.

MERIDIAN // NEXTUI

StatusPill

Compact status indicator with five semantic states: ok, warn, err, idle, and info. Each state maps to a default label (Healthy, Degraded, Down, Idle, Info) that can be overridden via the label prop.