File size: 780 Bytes
d4f8959 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import { AlertCircle, CheckCircle, Info } from 'lucide-react';
type Variant = 'error' | 'success' | 'info' | 'warning';
interface Props {
variant: Variant;
title?: string;
children: React.ReactNode;
}
const icons: Record<Variant, React.ReactNode> = {
error: <AlertCircle size={16} />,
success: <CheckCircle size={16} />,
info: <Info size={16} />,
warning: <AlertCircle size={16} />,
};
export function Alert({ variant, title, children }: Props) {
return (
<div className={`alert alert--${variant}`} role="alert">
<span className="alert__icon">{icons[variant]}</span>
<div className="alert__body">
{title && <p className="alert__title">{title}</p>}
<div className="alert__content">{children}</div>
</div>
</div>
);
}
|