diff --git a/frontend/src/components/admin/AdminHeader.jsx b/frontend/src/components/admin/AdminHeader.jsx new file mode 100644 index 0000000..f472c57 --- /dev/null +++ b/frontend/src/components/admin/AdminHeader.jsx @@ -0,0 +1,46 @@ +/** + * AdminHeader 컴포넌트 + * 모든 Admin 페이지에서 공통으로 사용하는 헤더 + * 로고, Admin 배지, 사용자 정보, 로그아웃 버튼 포함 + */ +import { useNavigate, Link } from 'react-router-dom'; +import { LogOut } from 'lucide-react'; + +function AdminHeader({ user }) { + const navigate = useNavigate(); + + const handleLogout = () => { + localStorage.removeItem('adminToken'); + localStorage.removeItem('adminUser'); + navigate('/admin'); + }; + + return ( + + + + + fromis_9 + + + Admin + + + + + 안녕하세요, {user?.username}님 + + + + 로그아웃 + + + + + ); +} + +export default AdminHeader; diff --git a/frontend/src/pages/pc/admin/AdminMembers.jsx b/frontend/src/pages/pc/admin/AdminMembers.jsx index f1d335f..15f6fbc 100644 --- a/frontend/src/pages/pc/admin/AdminMembers.jsx +++ b/frontend/src/pages/pc/admin/AdminMembers.jsx @@ -2,10 +2,11 @@ import { useState, useEffect } from 'react'; import { useNavigate, Link } from 'react-router-dom'; import { motion } from 'framer-motion'; import { - Edit2, LogOut, + Edit2, Home, ChevronRight, Users, User } from 'lucide-react'; import Toast from '../../../components/Toast'; +import AdminHeader from '../../../components/admin/AdminHeader'; import useToast from '../../../hooks/useToast'; function AdminMembers() { @@ -42,12 +43,6 @@ function AdminMembers() { }); }; - const handleLogout = () => { - localStorage.removeItem('adminToken'); - localStorage.removeItem('adminUser'); - navigate('/admin'); - }; - // 활동/탈퇴 멤버 분리 (is_former: 0=활동, 1=탈퇴) const activeMembers = members.filter(m => !m.is_former); const formerMembers = members.filter(m => m.is_former); @@ -103,30 +98,7 @@ function AdminMembers() { setToast(null)} /> {/* 헤더 */} - - - - - fromis_9 - - - Admin - - - - - 안녕하세요, {user?.username}님 - - - - 로그아웃 - - - - + {/* 메인 콘텐츠 */}