// Cinétique — App entry
const { useEffect: aUseEffect } = React;
const { useRoute, Nav, Footer, SignatureThread, HomePage, ImmoPage, CookieConsent, MentionsLegales, Confidentialite, ImmoRepondre, ImmoAppelPage, ImmoQuestionPage, DemarrerPage, QuestionPage } = window;

const LEGAL_ROUTES  = ['/mentions-legales', '/confidentialite'];
const IMMO_ROUTES   = ['/immobilier', '/immo/repondre', '/immo/appel', '/immo/question'];
const SHELL_HIDDEN  = [...LEGAL_ROUTES, '/immo/repondre', '/immo/appel', '/immo/question', '/demarrer', '/question'];

function App() {
  const [route, setRoute] = useRoute();

  aUseEffect(() => {
    window.scrollTo({ top: 0, behavior: 'instant' });
  }, [route]);

  aUseEffect(() => {
    const page = IMMO_ROUTES.includes(route) ? 'immo' : LEGAL_ROUTES.includes(route) ? 'legal' : 'home';
    document.body.dataset.page = page;
  }, [route]);

  aUseEffect(() => {
    if (window.posthog) window.posthog.capture('$pageview', { route });
  }, [route]);

  const hideShell = SHELL_HIDDEN.includes(route);

  return (
    <>
      <SignatureThread />
      {!hideShell && <Nav route={route} setRoute={setRoute} />}
      <main className={`page-shell page-${IMMO_ROUTES.includes(route) ? 'immo' : LEGAL_ROUTES.includes(route) ? 'legal' : 'home'}`}>
        {route === '/immobilier'
          ? <ImmoPage setRoute={setRoute} />
          : route === '/immo/repondre'
          ? <ImmoRepondre setRoute={setRoute} />
          : route === '/immo/appel'
          ? <ImmoAppelPage setRoute={setRoute} />
          : route === '/immo/question'
          ? <ImmoQuestionPage setRoute={setRoute} />
          : route === '/demarrer'
          ? <DemarrerPage setRoute={setRoute} />
          : route === '/question'
          ? <QuestionPage setRoute={setRoute} />
          : route === '/mentions-legales'
          ? <MentionsLegales setRoute={setRoute} />
          : route === '/confidentialite'
          ? <Confidentialite setRoute={setRoute} />
          : <HomePage setRoute={setRoute} />}
      </main>
      {!hideShell && <Footer setRoute={setRoute} />}
      <CookieConsent />
    </>
  );
}

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