// Root app
const LoadingScreen = () => (
);
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();