From fc96b665f5e1d1e180b57b038f1e99cb81f36e5b Mon Sep 17 00:00:00 2001 From: gahusb Date: Mon, 30 Mar 2026 22:11:00 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EA=B4=80=EB=A6=AC=EC=9E=90=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EB=B0=98?= =?UTF-8?q?=EC=9D=91=ED=98=95=20=EC=82=AC=EC=9D=B4=EB=93=9C=EB=B0=94=20?= =?UTF-8?q?=ED=86=A0=EA=B8=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- app/admin/components/AdminShell.tsx | 49 +++++++++++++++++++++++++++ app/admin/components/AdminSidebar.tsx | 42 ++++++++++++++++++----- app/admin/layout.tsx | 11 ++---- 3 files changed, 84 insertions(+), 18 deletions(-) create mode 100644 app/admin/components/AdminShell.tsx diff --git a/app/admin/components/AdminShell.tsx b/app/admin/components/AdminShell.tsx new file mode 100644 index 0000000..46b409e --- /dev/null +++ b/app/admin/components/AdminShell.tsx @@ -0,0 +1,49 @@ +'use client'; + +import { useState } from 'react'; +import AdminSidebar from './AdminSidebar'; + +export default function AdminShell({ children }: { children: React.ReactNode }) { + const [sidebarOpen, setSidebarOpen] = useState(false); + + return ( +
+ {/* 모바일 오버레이 */} + {sidebarOpen && ( +
setSidebarOpen(false)} + /> + )} + + setSidebarOpen(false)} /> + +
+ {/* 모바일 상단 헤더 */} +
+ +
+
+ 관 +
+ 관리자 패널 +
+
+
+ + {/* 메인 스크롤 영역 */} +
+ {children} +
+
+
+ ); +} diff --git a/app/admin/components/AdminSidebar.tsx b/app/admin/components/AdminSidebar.tsx index 77f15be..65e5bda 100644 --- a/app/admin/components/AdminSidebar.tsx +++ b/app/admin/components/AdminSidebar.tsx @@ -68,7 +68,12 @@ const NAV_ITEMS = [ }, ]; -export default function AdminSidebar() { +interface AdminSidebarProps { + isOpen?: boolean; + onClose?: () => void; +} + +export default function AdminSidebar({ isOpen = false, onClose }: AdminSidebarProps) { const pathname = usePathname(); const router = useRouter(); const [loggingOut, setLoggingOut] = useState(false); @@ -80,17 +85,36 @@ export default function AdminSidebar() { } return ( -