// Root app: shell, nav, tweaks integration function App() { const { view, user } = useStore(); // Initiale View aus WP-Seitenkontext (vom Deploy-Script gesetzt) React.useEffect(() => { if (window.F1_INITIAL_VIEW && view !== "loading") { setState(s => ({ ...s, view: window.F1_INITIAL_VIEW })); } }, []); // eslint-disable-line React.useEffect(() => { window.scrollTo(0, 0); }, [view]); // ---- Rendering --------------------------------------------------------- if (view === "loading") return ; if (!user || view === "auth") return ; const isAdmin = user.isAdmin; const renderView = () => { switch (view) { case "dashboard": return ; case "season": return ; case "races": return ; case "race": return ; case "leaderboard": return ; case "admin": return isAdmin ? : ; case "profile": return ; default: return ; } }; return (
{renderView()}
); } function UserMenu({ user, onLogout }) { const [open, setOpen] = React.useState(false); const ref = React.useRef(null); React.useEffect(() => { if (!open) return; const handler = e => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }; document.addEventListener('mousedown', handler); return () => document.removeEventListener('mousedown', handler); }, [open]); return (
{open && (
{user?.email || user?.name}
)}
); } function AppBar({ isAdmin, user }) { const view = useStore(s => s.view); const tabs = [ { k: "dashboard", l: "PIT WALL" }, { k: "races", l: "RENNEN" }, { k: "season", l: "SAISON" }, { k: "leaderboard", l: "TABELLE" }, ...(isAdmin ? [{ k: "admin", l: "ADMIN" }] : []), ]; const handleLogout = () => signOut(); return (
{/* Logo + User — eine Zeile, luftiger */}
{/* Logo */}
{/* Tabs direkt neben Logo auf Desktop */}
{tabs.map(t => ( ))}
{/* Rechts: Saison-Chip + User */}
Saison {window.SEED?.season || 2026}
{/* Mobile: Tabs in eigener Zeile */}
{tabs.map(t => ( ))}
); } function BottomNav({ isAdmin }) { const view = useStore(s => s.view); const tabs = [ { k: "dashboard", l: "PIT", i: "▣" }, { k: "races", l: "RACES", i: "≡" }, { k: "season", l: "SAISON", i: "★" }, { k: "leaderboard", l: "TABELLE",i: "P" }, ...(isAdmin ? [{ k: "admin", l: "ADMIN", i: "⚙" }] : []), ]; return (
{tabs.map(t => ( ))}
); } ReactDOM.createRoot(document.getElementById("root")).render();