|
import React from "react";
|
|
|
|
interface ModalBackdropProps {
|
|
children: React.ReactNode;
|
|
onClose?: () => void;
|
|
}
|
|
|
|
export function ModalBackdrop({ children, onClose }: ModalBackdropProps) {
|
|
React.useEffect(() => {
|
|
const handleEscape = (e: KeyboardEvent) => {
|
|
if (e.key === "Escape") onClose?.();
|
|
};
|
|
|
|
window.addEventListener("keydown", handleEscape);
|
|
return () => window.removeEventListener("keydown", handleEscape);
|
|
}, []);
|
|
|
|
const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
if (e.target === e.currentTarget) onClose?.();
|
|
};
|
|
|
|
return (
|
|
<div className="fixed inset-0 flex items-center justify-center z-20">
|
|
<div
|
|
onClick={handleClick}
|
|
className="fixed inset-0 bg-black bg-opacity-80"
|
|
/>
|
|
<div className="relative">{children}</div>
|
|
</div>
|
|
);
|
|
}
|
|
|