// AdminHeader — neon nav for admin pages. Desktop: inline tabs. Mobile: burger menu. const { useState: useAdmHState, useEffect: useAdmHEffect, useRef: useAdmHRef } = React; function AdmIconLogout() { return ( ); } function AdmIconBurger() { return ( ); } function AdminHeader({ route, user, balance, brandName, onToggleAdminMode, onNavigate, onLogout }) { const [menuOpen, setMenuOpen] = useAdmHState(false); const menuRef = useAdmHRef(null); const navItems = [ { key: 'admin', label: 'Дашборд', icon: '📊' }, { key: 'admin-users', label: 'Юзеры', icon: '👥' }, { key: 'admin-orders', label: 'Заказы', icon: '📋' }, { key: 'admin-support', label: 'Тех Поддержка', icon: '💬' }, ]; // Close mobile menu on outside click useAdmHEffect(() => { if (!menuOpen) return; const onDown = (e) => { if (menuRef.current && !menuRef.current.contains(e.target)) setMenuOpen(false); }; document.addEventListener('mousedown', onDown); return () => document.removeEventListener('mousedown', onDown); }, [menuOpen]); const handleNav = (key) => { setMenuOpen(false); onNavigate(key); }; return ( onNavigate('admin')}> AD {brandName} · admin {navItems.map(n => ( onNavigate(n.key)} > {n.icon} {n.label} ))} {/* Exit admin mode — top-level, icon-only on mobile (label hidden by .admin-toggle__label CSS) */} 🛠 Обычный режим {/* Logout — desktop only; on mobile lives inside burger menu */} {/* Mobile burger — opens nav menu */} setMenuOpen(v => !v)} title="Меню" aria-label="Меню" > {menuOpen && ( {navItems.map(n => ( handleNav(n.key)} > {n.icon} {n.label} ))} { setMenuOpen(false); onLogout(); }} style={{ color: '#dc3545' }} > Выйти из аккаунта )} ); } Object.assign(window, { AdminHeader });