import { useEffect, useState } from 'react'; import { NavLink, Outlet, useNavigate, useLocation } from 'react-router-dom'; import './admin.css'; const NAV = [ { section: '메인' }, { path: '/admin/dashboard', icon: 'πŸ“Š', label: 'λŒ€μ‹œλ³΄λ“œ' }, { section: 'μ½˜ν…μΈ  관리' }, { path: '/admin/news', icon: 'πŸ“°', label: 'λ‰΄μŠ€/곡지사항' }, { path: '/admin/history', icon: 'πŸ“…', label: 'νšŒμ‚¬ μ—°ν˜' }, { path: '/admin/recruit', icon: 'πŸ‘₯', label: 'μ±„μš©κ³΅κ³ ' }, { section: '고객 관리' }, { path: '/admin/inquiries', icon: 'πŸ“©', label: '문의 관리', badgeKey: 'pendingInquiries' }, { path: '/admin/members', icon: 'πŸ‘€', label: 'νšŒμ› 관리' }, { section: 'μ‹œμŠ€ν…œ' }, { path: '/admin/settings', icon: 'βš™οΈ', label: 'μ„€μ •' }, ]; export default function AdminLayout() { const navigate = useNavigate(); const location = useLocation(); const [user, setUser] = useState(null); const [pageTitle, setPageTitle] = useState('λŒ€μ‹œλ³΄λ“œ'); const [badges, setBadges] = useState({}); useEffect(() => { const token = localStorage.getItem('admin_token'); if (!token) { navigate('/admin/login'); return; } const userData = JSON.parse(localStorage.getItem('admin_user') || '{}'); setUser(userData); fetchBadges(token); }, [navigate]); useEffect(() => { const map = { '/admin/dashboard': 'λŒ€μ‹œλ³΄λ“œ', '/admin/news': 'λ‰΄μŠ€/곡지사항 관리', '/admin/inquiries': '문의 관리', '/admin/recruit': 'μ±„μš©κ³΅κ³  관리', '/admin/members': 'νšŒμ› 관리', '/admin/settings': 'μ„€μ •', }; setPageTitle(map[location.pathname] || 'κ΄€λ¦¬μž'); }, [location.pathname]); const fetchBadges = async (token) => { try { const res = await fetch('/api/admin/dashboard', { headers: { Authorization: `Bearer ${token}` }, }); if (res.ok) { const d = await res.json(); setBadges({ pendingInquiries: d.pendingInquiries || 0 }); } } catch {} }; const logout = () => { localStorage.removeItem('admin_token'); localStorage.removeItem('admin_user'); navigate('/admin/login'); }; if (!user) return null; return (

{pageTitle}

πŸ‘€ {user.displayName || user.username} 🌐 ν™ˆνŽ˜μ΄μ§€ 보기
); }