import * as React from 'react' import { cva, type VariantProps } from 'class-variance-authority' import { cn } from '@/lib/utils' const alertVariants = cva( [ 'relative w-full', 'border border-solid border-l-[3px]', 'p-4', 'font-mono', 'rounded-none', ], { variants: { variant: { STATUS: [ 'border-[var(--border)]', 'border-l-[var(--color-green)]', 'bg-[var(--surface)]', ], WARNING: [ 'border-[var(--border)]', 'border-l-[var(--color-amber)]', 'bg-[var(--surface)]', ], CRITICAL: [ 'border-[var(--border)]', 'border-l-[var(--color-red)]', 'bg-[var(--surface)]', ], INFO: [ 'border-[var(--border)]', 'border-l-[var(--color-blue)]', 'bg-[var(--surface)]', ], }, }, defaultVariants: { variant: 'STATUS' }, } ) const prefixMap = { STATUS: { symbol: '◈', color: 'var(--color-green)', glow: 'var(--text-glow-green)' }, WARNING: { symbol: '⚠', color: 'var(--color-amber)', glow: 'var(--text-glow-amber)' }, CRITICAL: { symbol: '✕', color: 'var(--color-red)', glow: 'var(--text-glow-red)' }, INFO: { symbol: 'ℹ', color: 'var(--color-blue)', glow: 'var(--text-glow-blue)' }, } export interface AlertProps extends React.HTMLAttributes, VariantProps {} const Alert = React.forwardRef( ({ className, variant = 'STATUS', children, ...props }, ref) => { const v = variant ?? 'STATUS' const prefix = prefixMap[v] return (
{prefix.symbol}
{children}
) } ) Alert.displayName = 'Alert' /* ── AlertTitle ── */ const AlertTitle = React.forwardRef>( ({ className, style, ...props }, ref) => (
) ) AlertTitle.displayName = 'AlertTitle' /* ── AlertDescription ── */ const AlertDescription = React.forwardRef>( ({ className, style, ...props }, ref) => (

) ) AlertDescription.displayName = 'AlertDescription' export { Alert, AlertTitle, AlertDescription, alertVariants }