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