Badge
Status badge with six color variants: ice, green, amber, red, violet, and surface. Designed for dashboard labels, status indicators, and category tags.
<Badge variant="green">Active</Badge><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>
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>
)
}
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.
Text
Polymorphic text primitive with body, caption, label, code, and mono variants. Renders as any block or inline HTML tag via the `as` prop.
Card
Composable card with Card, CardHeader, and CardBody sub-components. Uses `mdn-card` CSS classes for consistent dashboard panel styling.
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.