diff --git a/src/components/Backdrop/backdrop.css b/src/components/Backdrop/backdrop.css
index 90cf8bf..3c73896 100644
--- a/src/components/Backdrop/backdrop.css
+++ b/src/components/Backdrop/backdrop.css
@@ -1,4 +1,6 @@
-.backdrop[aria-expanded] {
+.backdrop {
+ opacity: 0;
+ transition: opacity 0.25s;
height: 100%;
width: 100%;
position: fixed;
@@ -7,7 +9,12 @@
background: var(--codex-background-backdrop);
backdrop-filter: blur(2px);
display: block;
+ z-index: -1;
+}
+
+.backdrop[aria-expanded] {
z-index: 10;
+ opacity: 1;
}
.document-noOverflow {
diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx
index 86ce49e..3d3a61b 100644
--- a/src/components/Modal/Modal.tsx
+++ b/src/components/Modal/Modal.tsx
@@ -1,4 +1,4 @@
-import { ReactNode } from "react";
+import { ReactNode, useEffect, useState } from "react";
import { Backdrop } from "../Backdrop/Backdrop";
import { Button } from "../Button/Button";
import { classnames } from "../utils/classnames";
@@ -67,11 +67,28 @@ export function Modal({
children,
onAction,
}: Props) {
+ const [internalOpen, setInternalOpen] = useState(open);
+
+ useEffect(() => {
+ setInternalOpen(open);
+ }, [open]);
+
+ const internalClose = () => {
+ setInternalOpen(false);
+ setTimeout(onClose, 250);
+ };
+
return (
<>
-