import React, { useState, useEffect } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { Icons } from './IconSet'; import { authService } from '../services/AuthService'; import { DiscordUser } from '../types'; interface LayoutProps { children: React.ReactNode; activeTab: string; onNavigate: (tab: string) => void; } const NavItem = ({ active, label, to }: { active: boolean; label: string; to: string; }) => ( {label} ); const Layout: React.FC = ({ children, activeTab, onNavigate }) => { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const [user, setUser] = useState(null); const [rememberMe, setRememberMe] = useState(() => { // Load remember me preference from localStorage return localStorage.getItem('rememberMe') === 'true'; }); useEffect(() => { // Subscribe to auth changes const unsubscribe = authService.subscribe(setUser); return unsubscribe; }, []); return (
{/* Top Header - Website Style */}
{/* Logo */}
onNavigate('/')} >
P.V.
Projekt: Vollidion
{/* Desktop Nav */}
{user?.isAdmin && ( <> )} {/* Mobile Menu Toggle */}
{/* Mobile Nav Dropdown */} {mobileMenuOpen && (
setMobileMenuOpen(false)} className="block py-2 text-textMuted hover:text-textMain">Übersicht setMobileMenuOpen(false)} className="block py-2 text-textMuted hover:text-textMain">Städte setMobileMenuOpen(false)} className="block py-2 text-textMuted hover:text-textMain">Bürger setMobileMenuOpen(false)} className="block py-2 text-textMuted hover:text-textMain">Organisationen setMobileMenuOpen(false)} className="block py-2 text-textMuted hover:text-textMain">Unternehmen setMobileMenuOpen(false)} className="block py-2 text-textMuted hover:text-textMain">Weltkarte {user?.isAdmin && ( setMobileMenuOpen(false)} className="block py-2 text-red-400 hover:text-red-300">Admin )} setMobileMenuOpen(false)} className="block py-2 text-textMain">Datapack holen setMobileMenuOpen(false)} className="block py-2 text-accentInfo font-mono text-sm border-t border-white/5 pt-4">{"Admin Setup >_"}
)}
{/* Main Content - Page Flow */}
{children}
{/* Footer - Adds to the "Website" feel */}
); }; export default Layout;