import { Alert, AlertTitle } from '@mui/material'; import './AlertBanner.css'; // AlertBanner is one of the few components that does NOT have getPConnect. // So, no need to extend PConnProps interface AlertBannerProps { id: string; variant: string; messages: string[]; onDismiss?: any; } const VARIANT_MAP: Record = { urgent: { severity: 'error', label: 'Error' }, warning: { severity: 'warning', label: 'Warning' }, success: { severity: 'success', label: 'Success' }, info: { severity: 'info', label: 'Info' } }; function renderMessage(message: string) { const colonIndex = message.indexOf(':'); if (colonIndex === -1) return message; return ( <> {message.slice(0, colonIndex + 1)} {message.slice(colonIndex + 1)} ); } export default function AlertBanner({ id, variant, messages, onDismiss }: AlertBannerProps) { const { severity, label } = VARIANT_MAP[variant] ?? VARIANT_MAP.info; const isMultiple = messages.length > 1; return (
{isMultiple && ( {label} {messages.length} )} {isMultiple ? (
    {messages.map(message => (
  • {renderMessage(message)}
  • ))}
) : ( renderMessage(messages[0]) )}
); }