import * as React from 'react' import { cva, type VariantProps } from 'class-variance-authority' import { cn } from '@/lib/utils' const statCardVariants = cva( [ 'relative flex flex-col font-mono', 'border border-solid rounded-none', ], { variants: { variant: { DEFAULT: ['border-[var(--border)]'], ACTIVE: ['border-[var(--color-green)]'], WARNING: ['border-[var(--color-amber)]'], CRITICAL: ['border-[var(--color-red)]'], }, }, defaultVariants: { variant: 'DEFAULT' }, } ) export interface StatCardProps extends React.HTMLAttributes, VariantProps { label: string value: string | number /** Delta text, e.g. "+2.3%" */ delta?: string /** true = positive (▲ green), false = negative (▼ red), undefined = neutral */ deltaPositive?: boolean /** Small status line shown at the bottom of the card */ sublabel?: string } const StatCard = React.forwardRef( ( { className, variant = 'DEFAULT', label, value, delta, deltaPositive, sublabel, style, ...props }, ref ) => { const accentColor = variant === 'ACTIVE' ? 'var(--color-green)' : variant === 'WARNING' ? 'var(--color-amber)' : variant === 'CRITICAL' ? 'var(--color-red)' : 'var(--text-secondary)' const accentGlow = variant === 'ACTIVE' ? 'var(--text-glow-green)' : variant === 'WARNING' ? 'var(--text-glow-amber)' : variant === 'CRITICAL' ? 'var(--text-glow-red)' : 'none' const deltaColor = deltaPositive === true ? 'var(--color-green)' : deltaPositive === false ? 'var(--color-red)' : 'var(--text-muted)' const deltaSymbol = deltaPositive === true ? '▲ ' : deltaPositive === false ? '▼ ' : '— ' return (
{/* Label */}
{label}
{/* Value */}
{value}
{/* Delta */} {delta !== undefined && (
{deltaSymbol}{delta}
)} {/* Sublabel */} {sublabel && (
{sublabel}
)}
) } ) StatCard.displayName = 'StatCard' export { StatCard, statCardVariants }