From bd921528f46a1d2c0f5f9c295352e7f264e9ea71 Mon Sep 17 00:00:00 2001 From: jisangs Date: Tue, 7 Jul 2026 10:06:13 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=98=EC=9D=91=ED=98=95=20=EC=9B=B9=20?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B8=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(admin)/MobileNav.tsx | 97 ++++++++ app/(admin)/extension-requests/page.tsx | 2 +- app/(admin)/layout.tsx | 22 +- .../[maestroId]/ExtensionRequestsSection.tsx | 6 +- .../maestros/[maestroId]/LogsSection.tsx | 2 +- .../maestros/[maestroId]/StudentsSection.tsx | 2 +- .../[maestroId]/UpgradeRequestsSection.tsx | 8 +- app/(admin)/maestros/page.tsx | 2 +- app/(admin)/nav-config.ts | 13 + app/(admin)/upgrade-requests/page.tsx | 2 +- docs/phase/phase16.md | 222 ++++++++++++++++++ 11 files changed, 350 insertions(+), 28 deletions(-) create mode 100644 app/(admin)/MobileNav.tsx create mode 100644 app/(admin)/nav-config.ts create mode 100644 docs/phase/phase16.md diff --git a/app/(admin)/MobileNav.tsx b/app/(admin)/MobileNav.tsx new file mode 100644 index 0000000..a0a0065 --- /dev/null +++ b/app/(admin)/MobileNav.tsx @@ -0,0 +1,97 @@ +"use client"; + +import { useEffect, useState } from "react"; +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import { Menu, X } from "lucide-react"; + +import { cn } from "@/lib/utils"; +import { navItems } from "./nav-config"; + +export function MobileNav() { + const [isOpen, setIsOpen] = useState(false); + const pathname = usePathname(); + + useEffect(() => { + setIsOpen(false); + }, [pathname]); + + useEffect(() => { + if (!isOpen) { + document.body.style.overflow = ""; + return; + } + + document.body.style.overflow = "hidden"; + + function handleKeyDown(e: KeyboardEvent) { + if (e.key === "Escape") setIsOpen(false); + } + + document.addEventListener("keydown", handleKeyDown); + return () => { + document.removeEventListener("keydown", handleKeyDown); + }; + }, [isOpen]); + + return ( + <> + + + {/* 배경 오버레이 — 탭하면 닫힘 */} +