// Root app const LoadingScreen = () => (
XP
carregando campanha…
); const App = () => { const s = useGameState(); React.useEffect(() => { if (s.user) { document.documentElement.setAttribute('data-theme', s.user.theme || 'dark'); } }, [s.user?.theme]); if (s.authLoading) return ; if (!s.user) return ; const theme = s.user.theme || 'dark'; const setTheme = (t) => s.updateUser({ theme: t }); const open = s.quests.filter((q) => q.status === 'open' && (q.recurrence ? isRecurringDueToday(q) : q.deadline === 'Hoje')).length; let screen = null; switch (s.route) { case 'home': screen = ; break; case 'quests': screen = ; break; case 'badges': screen = ; break; case 'rank': screen = ; break; case 'profile': screen = ; break; case 'settings': screen = ; break; default: screen = ; } return (
{screen}
{s.showForge && s.setShowForge(false)} onCreate={s.addQuest} />} {s.celeb && } s.setShowForge(true)}>Forjar nova missão { const q = s.quests.find((x) => x.status === 'open'); if (q) s.completeQuest(q.id); }}>Concluir próxima missão
); }; ReactDOM.createRoot(document.getElementById('root')).render();