in frontend-vite/src/common/components/Alert.tsx [12:49]
export default ({ mode, title, subtitle, className, children }: AlertProps) => {
let icon;
switch (mode) {
case 'info':
icon = <InformationCircleIcon className="w-8 h-8" />;
break;
case 'loading':
icon = <ClockIcon className="w-8 h-8" />;
break;
case 'success':
icon = <CheckCircleIcon className="w-8 h-8" />;
break;
case 'error':
icon = <XCircleIcon className="w-8 h-8" />;
break;
default:
icon = null;
}
return (
<div
className={clsx(className, 'flex items-center px-4 py-3 rounded', 'items-center', 'gap-4', {
'bg-blue-100 border border-blue-400 text-blue-700': mode === 'info' || mode === 'loading',
'bg-green-100 border border-green-400 text-green-700': mode === 'success',
'bg-red-100 border border-red-400 text-red-700': mode === 'error',
})}
role="alert"
>
{icon}
<div className="block sm:inline">
{title && <h3 className="font-bold">{title}</h3>}
{subtitle && <span className="text-xs">{subtitle}</span>}
</div>
{children}
</div>
);
};