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 ( -