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/recruit', icon: '๐ฅ', label: '์ฑ์ฉ๊ณต๊ณ ' }, { section: '๊ณ ๊ฐ ๊ด๋ฆฌ' }, { path: '/admin/inquiries', icon: '๐ฉ', label: '๋ฌธ์ ๊ด๋ฆฌ', badgeKey: 'pendingInquiries' }, { 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/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 (