diff --git a/components/mobile-menu.tsx b/components/mobile-menu.tsx
index 39228f1..35fc64e 100644
--- a/components/mobile-menu.tsx
+++ b/components/mobile-menu.tsx
@@ -1,6 +1,7 @@
"use client";
import { useEffect, useState } from "react";
+import { createPortal } from "react-dom";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { Menu, X, ChevronDown, Phone, ArrowRight } from "lucide-react";
@@ -8,7 +9,6 @@ import { Menu, X, ChevronDown, Phone, ArrowRight } from "lucide-react";
type NavService = { slug: string; title: string };
const LINKS = [
- { href: "/", label: "Anasayfa" },
{ href: "/cozumler", label: "Çözümler" },
{ href: "/projeler", label: "Projeler" },
{ href: "/blog", label: "Blog" },
@@ -25,10 +25,13 @@ export function MobileMenu({
phone: string;
phoneRaw: string;
}) {
+ const [mounted, setMounted] = useState(false);
const [open, setOpen] = useState(false);
const [servicesOpen, setServicesOpen] = useState(false);
const pathname = usePathname();
+ useEffect(() => setMounted(true), []);
+
// Rota değişince menüyü kapat
useEffect(() => {
setOpen(false);
@@ -42,6 +45,120 @@ export function MobileMenu({
};
}, [open]);
+ // Drawer + overlay — header transform bağlamından kaçmak için body'ye portal
+ const overlay = (
+
+ {/* Koyu overlay */}
+
setOpen(false)}
+ className={`absolute inset-0 bg-black/50 transition-opacity duration-300 ${
+ open ? "opacity-100" : "opacity-0"
+ }`}
+ />
+
+ {/* Sağ drawer — beyaz panel */}
+
+ {/* Üst bar */}
+
+
+ Menü
+
+
+
+
+ {/* Linkler */}
+
+
+ {/* Alt CTA */}
+
+
+
+ );
+
return (
- {/* Overlay + drawer */}
-
- {/* Backdrop */}
-
setOpen(false)}
- className={`absolute inset-0 bg-black/40 backdrop-blur-sm transition-opacity duration-300 ${
- open ? "opacity-100" : "opacity-0"
- }`}
- />
-
- {/* Panel */}
-
- {/* Üst bar */}
-
-
- Menü
-
-
-
-
- {/* Linkler */}
-
-
- {/* Alt CTA */}
-
-
-
+ {mounted && createPortal(overlay, document.body)}
);
}