aboutsummaryrefslogtreecommitdiff
path: root/components/modal.tsx
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-12-24 13:03:54 +0700
committerFactiven <[email protected]>2023-12-24 13:03:54 +0700
commit50a0f0240d7fef133eb5acc1bea2b1168b08e9db (patch)
tree307e09e505580415a58d64b5fc3580e9235869f1 /components/modal.tsx
parentUpdate README.md (#104) (diff)
downloadmoopa-50a0f0240d7fef133eb5acc1bea2b1168b08e9db.tar.xz
moopa-50a0f0240d7fef133eb5acc1bea2b1168b08e9db.zip
migrate to typescript
Diffstat (limited to 'components/modal.tsx')
-rw-r--r--components/modal.tsx25
1 files changed, 25 insertions, 0 deletions
diff --git a/components/modal.tsx b/components/modal.tsx
new file mode 100644
index 0000000..6865560
--- /dev/null
+++ b/components/modal.tsx
@@ -0,0 +1,25 @@
+type ModalProps = {
+ open: boolean;
+ onClose: () => void;
+ children: React.ReactNode;
+};
+
+export default function Modal({ open, onClose, children }: ModalProps) {
+ return (
+ <div
+ onClick={onClose}
+ className={`fixed z-[999] inset-0 flex justify-center items-center transition-colors ${
+ open ? "visible bg-black bg-opacity-50 backdrop-blur-sm" : "invisible"
+ }`}
+ >
+ <div
+ onClick={(e) => e.stopPropagation()}
+ className={`shadow rounded-xl transition-all ${
+ open ? "scale-100 opacity-100" : "scale-75 opacity-0"
+ }`}
+ >
+ {children}
+ </div>
+ </div>
+ );
+}