diff --git a/public/assets/icons/side-menu/close.svg b/public/assets/icons/side-menu/close.svg
new file mode 100644
index 0000000..123b186
--- /dev/null
+++ b/public/assets/icons/side-menu/close.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/mobile/Header/index.tsx b/src/components/mobile/Header/index.tsx
index db9af0a..a226d86 100644
--- a/src/components/mobile/Header/index.tsx
+++ b/src/components/mobile/Header/index.tsx
@@ -1,6 +1,8 @@
'use client';
import { useRouter } from 'next/navigation';
+import Sidebar from '@/components/mobile/SidebarMenu/index';
+import { useState } from 'react';
import IconArrow from 'public/assets/icons/icon-arrow.svg';
import IconHamburger from 'public/assets/icons/icon-hamburger.svg';
@@ -11,28 +13,33 @@ interface HeaderProps {
export default function Header({ title, menu = false }: HeaderProps) {
const router = useRouter();
+ const [isSidebarOpen, setIsSidebarOpen] = useState(false);
return (
-
-
- {title}
- {menu ? (
+ <>
+
- ) : (
-
- )}
-
+ {title}
+ {menu ? (
+
+ ) : (
+
+ )}
+
+
+ setIsSidebarOpen(false)} />
+ >
);
}
diff --git a/src/components/mobile/SidebarMenu/index.tsx b/src/components/mobile/SidebarMenu/index.tsx
new file mode 100644
index 0000000..6d1fa50
--- /dev/null
+++ b/src/components/mobile/SidebarMenu/index.tsx
@@ -0,0 +1,121 @@
+'use client';
+
+import { useEffect } from 'react';
+import IconClose from 'public/assets/icons/side-menu/close.svg';
+import IconRentalList from 'public/assets/icons/side-menu/rental-item-list.svg';
+import IconRentalHistory from 'public/assets/icons/side-menu/rental-history.svg';
+import IconUserAlarm from 'public/assets/icons/side-menu/user-alarm.svg';
+import IconAdminDashboard from 'public/assets/icons/side-menu/admin-dashboard.svg';
+import IconAdminAlarm from 'public/assets/icons/side-menu/admin-alarm.svg';
+import IconLogout from 'public/assets/icons/side-menu/logout.svg';
+
+interface SidebarProps {
+ isOpen: boolean;
+ onClose: () => void;
+}
+
+const menuItems = [
+ { icon: IconRentalList, label: '복지 물품 목록', href: '/mobile/main' },
+ { icon: IconRentalHistory, label: '대여기록', href: '/mobile/history' },
+ { icon: IconUserAlarm, label: '알림', href: '/mobile/notification' },
+];
+
+const adminItems = [
+ {
+ icon: IconAdminDashboard,
+ label: '관리자 대시보드',
+ href: '/mobile/admin/dashboard',
+ },
+ {
+ icon: IconAdminAlarm,
+ label: '관리자 알림',
+ href: '/mobile/admin/notification',
+ },
+];
+
+const logoutItem = {
+ icon: IconLogout,
+ label: '로그아웃',
+ href: '/mobile/sign-in',
+};
+
+export default function Sidebar({ isOpen, onClose }: SidebarProps) {
+ return (
+ <>
+ {/* 오버레이 배경 */}
+
+
+ {/* 사이드바 */}
+
+ >
+ );
+}
diff --git a/src/components/mobile/layout/index.tsx b/src/components/mobile/layout/index.tsx
index 3451c5a..feb4a14 100644
--- a/src/components/mobile/layout/index.tsx
+++ b/src/components/mobile/layout/index.tsx
@@ -1,3 +1,5 @@
+'use client';
+
import React, { useEffect } from 'react';
interface MobileLayoutProps {