import { motion } from 'framer-motion'; import type { CanvasComponent } from '../../types/canvas'; import { RendererWrapper, type ComponentRenderContext } from './RendererWrapper'; import { AlertTriangle, AlertCircle, Info, CheckCircle2 } from 'lucide-react'; interface Props { component: CanvasComponent; ctx: ComponentRenderContext } const SEVERITY_MAP = { error: { icon: AlertTriangle, bg: 'rgba(239,68,68,0.08)', border: 'rgba(239,68,68,0.25)', text: '#f87171', accent: '#ef4444' }, warning: { icon: AlertCircle, bg: 'rgba(251,191,36,0.08)', border: 'rgba(251,191,36,0.25)', text: '#fbbf24', accent: '#f59e0b' }, info: { icon: Info, bg: 'rgba(59,130,246,0.08)', border: 'rgba(59,130,246,0.2)', text: '#60a5fa', accent: '#3b82f6' }, success: { icon: CheckCircle2, bg: 'rgba(52,211,153,0.08)', border: 'rgba(52,211,153,0.25)', text: '#34d399', accent: '#10b981' }, }; export function ErrorNoticeRenderer({ component, ctx }: Props) { const params = component.visualizationParameters as { errorCode?: string; message?: string; severity?: 'error' | 'warning' | 'info' | 'success'; retryable?: boolean; }; const severity = params.severity ?? 'warning'; const { icon: Icon, bg, border, text, accent } = SEVERITY_MAP[severity] ?? SEVERITY_MAP.warning; return (
{params.errorCode && (

{params.errorCode}

)}

{params.message ?? 'An error occurred rendering this component.'}

{params.retryable && ( )}
); }