import React from 'react'; import { Box } from './primitives/Box'; import { Stack } from './primitives/Stack'; import { Text } from './Text'; import { Surface } from './primitives/Surface'; import { Icon } from './Icon'; import { Info, AlertTriangle, AlertCircle, CheckCircle, LucideIcon } from 'lucide-react'; interface InfoBannerProps { title?: string; message?: string; children?: React.ReactNode; variant?: 'info' | 'warning' | 'error' | 'success'; type?: 'info' | 'warning' | 'error' | 'success'; icon?: LucideIcon; } export function InfoBanner({ title, message, children, variant = 'info', type, icon }: InfoBannerProps) { const configs = { info: { bg: 'rgba(59, 130, 246, 0.1)', border: 'rgba(59, 130, 246, 0.2)', iconColor: 'rgb(96, 165, 250)', icon: Info }, warning: { bg: 'rgba(245, 158, 11, 0.1)', border: 'rgba(245, 158, 11, 0.2)', iconColor: 'rgb(251, 191, 36)', icon: AlertTriangle }, error: { bg: 'rgba(239, 68, 68, 0.1)', border: 'rgba(239, 68, 68, 0.2)', iconColor: 'rgb(248, 113, 113)', icon: AlertCircle }, success: { bg: 'rgba(16, 185, 129, 0.1)', border: 'rgba(16, 185, 129, 0.2)', iconColor: 'rgb(52, 211, 153)', icon: CheckCircle } }; const activeVariant = type || variant; const config = configs[activeVariant as keyof typeof configs] || configs.info; const BannerIcon = icon || config.icon; return ( {title && ( {title} )} {message && ( {message} )} {children} ); }