/** * Modal Component * * Reusable modal layout component with consistent styling and behavior. * * Features: * - Backdrop overlay with click-to-close * - Header with icon, title, subtitle, and close button * - Scrollable content area * - Sticky footer with action buttons * - Configurable max width * - Fade-in and scale-in animations * * @component * @layer Presentation */ import { X } from 'lucide-react'; export interface ModalProps { /** Modal title */ title: string; /** Optional subtitle */ subtitle?: string; /** Optional icon component */ icon?: React.ReactNode; /** Modal content */ children: React.ReactNode; /** Footer content (buttons) */ footer?: React.ReactNode; /** Close handler */ onClose: () => void; /** Max width class (default: max-w-2xl) */ maxWidth?: string; /** Whether to show close button (default: true) */ showCloseButton?: boolean; } /** * Modal Component */ export function Modal({ title, subtitle, icon, children, footer, onClose, maxWidth = 'max-w-2xl', showCloseButton = true, }: ModalProps) { return (
{subtitle}
}