import * as React from 'react' import { cva, type VariantProps } from 'class-variance-authority' import { cn } from '@/lib/utils' const badgeVariants = cva( [ 'inline-flex items-center gap-1.5', 'px-2 py-0.5', 'text-[0.65rem] font-mono font-medium uppercase tracking-widest', 'border border-solid', 'rounded-none', 'whitespace-nowrap', ], { variants: { variant: { ACTIVE: [ 'border-[var(--color-green)]', 'text-[var(--color-green)]', ], OFFLINE: [ 'border-[var(--border)]', 'text-[var(--text-muted)]', ], WARNING: [ 'border-[var(--color-amber)]', 'text-[var(--color-amber)]', ], CRITICAL: [ 'border-[var(--color-red)]', 'text-[var(--color-red)]', ], SCANNING: [ 'border-[var(--color-green)]', 'text-[var(--color-green)]', ], }, }, defaultVariants: { variant: 'ACTIVE', }, } ) export interface BadgeProps extends React.HTMLAttributes, VariantProps {} function Badge({ className, variant, children, ...props }: BadgeProps) { const isScanning = variant === 'SCANNING' return ( {isScanning && ( ● )} {!isScanning && variant === 'ACTIVE' && ●} {!isScanning && variant === 'OFFLINE' && ○} {!isScanning && variant === 'WARNING' && ⚠} {!isScanning && variant === 'CRITICAL' && ✕} {children} ) } export { Badge, badgeVariants }