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 (