项目文件夹

文件
2026-07-13 13:08:41 +08:00

46 行
1.2 KiB
TypeScript

const Modal = ({
isOpen,
onClose,
children,
title,
}: {
isOpen: boolean;
onClose: () => void;
children: React.ReactNode;
title: string;
}) => {
if (!isOpen) return null;
return (
<>
<div className="fixed inset-0 bg-black/50 z-50" onClick={onClose} />
<div className="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-white rounded-lg p-6 z-50 w-[600px] max-w-[90vw]">
<div className="flex justify-between items-center mb-4">
<h2 className="text-lg font-semibold">{title}</h2>
<button
onClick={onClose}
className="text-gray-500 hover:text-gray-700"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
</button>
</div>
{children}
</div>
</>
);
};
export default Modal;