"use client"; import Link from "next/link"; import { useEffect, useState } from "react"; type NavItem = { label: string; href: string; }; type MobileNavProps = { items: NavItem[]; dir: "rtl" | "ltr"; openLabel: string; closeLabel: string; }; export function MobileNav({ items, dir, openLabel, closeLabel }: MobileNavProps) { const [open, setOpen] = useState(false); useEffect(() => { if (!open) { return; } const previousOverflow = document.body.style.overflow; const media = window.matchMedia("(min-width: 768px)"); const handleHashChange = () => { setOpen(false); }; const handleKeyDown = (event: KeyboardEvent) => { if (event.key === "Escape") { setOpen(false); } }; const handleMediaChange = (event: MediaQueryListEvent) => { if (event.matches) { setOpen(false); } }; document.body.style.overflow = "hidden"; window.addEventListener("hashchange", handleHashChange); document.addEventListener("keydown", handleKeyDown); media.addEventListener("change", handleMediaChange); return () => { document.body.style.overflow = previousOverflow; window.removeEventListener("hashchange", handleHashChange); document.removeEventListener("keydown", handleKeyDown); media.removeEventListener("change", handleMediaChange); }; }, [open]); const label = open ? closeLabel : openLabel; return (