// 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 (
);
}
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();