// ============ App shell + router (i18n aware) ============
const AppInner = () => {
  const { t, lang, setLang } = useI18n();
  const { user, setAuthRoute } = useAuth();
  const [route, setRoute] = useState(() => {
    try { return localStorage.getItem('edgebook:route') || 'dashboard'; } catch { return 'dashboard'; }
  });
  const [menuOpen, setMenuOpen] = useState(false);
  useEffect(() => { try { localStorage.setItem('edgebook:route', route); } catch {} }, [route]);
  useEffect(() => { window.scrollTo(0,0); setMenuOpen(false); }, [route]);

  // Landing page is the entry point for signed-out visitors
  if (!user) {
    if (route === 'login') return <AuthRouter onGoHome={()=>setRoute('landing')} />;
    return <LandingPage setRoute={setRoute} setAuthRoute={setAuthRoute} lang={lang} setLang={setLang} />;
  }

  // Onboarding guard — first-time user after verify
  let onboarded = 'true';
  try { onboarded = localStorage.getItem('edgebook:onboarded') ?? 'true'; } catch {}
  if (onboarded === 'false') return <OnboardingWizard setRoute={setRoute}/>;

  let page;
  switch (route) {
    case 'trades':    page = <TradesPage setRoute={setRoute}/>; break;
    case 'analytics': page = <AnalyticsPage />; break;
    case 'calendar':  page = <CalendarPage />; break;
    case 'journal':   page = <JournalPage />; break;
    case 'playbook':  page = <PlaybookPage />; break;
    case 'settings':  page = <SettingsPage />; break;
    case 'logtrade':  page = <LogTradePage setRoute={setRoute}/>; break;
    case 'dashboard':
    default:          page = <DashboardPage setRoute={setRoute}/>;
  }

  return (
    <div data-screen-label={route}>
      <TopNav route={route} setRoute={setRoute} menuOpen={menuOpen} setMenuOpen={setMenuOpen} lang={lang} setLang={setLang} />
      {menuOpen && <MobileMenu route={route} setRoute={setRoute} />}
      {page}
    </div>
  );
};

const App = () => (
  <I18nProvider>
    <ThemeProvider>
      <AuthProvider>
        <AccountProvider>
          <AppInner />
        </AccountProvider>
      </AuthProvider>
    </ThemeProvider>
  </I18nProvider>
);

ReactDOM.createRoot(document.getElementById('root')).render(<App />);
