// 228 FILMS · App composition + mount
// Architecture en pages individuelles hash-routées. Le hero et le footer
// restent identiques sur la home. Chaque univers a sa page dédiée.

function App() {
  const [t, setTweak] = useTweaks(window.TWEAK_DEFAULTS || {});
  const ctxValue = React.useMemo(() => ({ t, setTweak }), [t, setTweak]);
  const { page } = usePage();

  // Pages dédiées : layout réduit (Nav + Page + Footer + Cookie). Pas de Hero.
  if (page === 'mandats') return <Shell><MandatsRegistre /></Shell>;
  if (page === 'immobilier') return <Shell><ImmobilierParcours /></Shell>;
  if (page === 'contact') return <Shell><ContactCadrage /></Shell>;
  if (page === 'mentions') return <Shell><LegalMentions /></Shell>;
  if (page === 'privacy') return <Shell><LegalPrivacy /></Shell>;
  if (page === 'cgv') return <Shell><LegalCgv /></Shell>;

  // Home : Hero + Footer · navigation via nav top
  return (
    <TweaksCtx.Provider value={ctxValue}>
      <ScrollProgress />
      <Nav />
      <main>
        <Hero />
        <ArchitectureCinema />
      </main>
      <Footer />
      <CookieBanner />

      <TweaksPanel title="Tweaks · FILMS V1">
        <TweakSection label="Tuiles univers (hero)" />
        <TweakRadio label="Nom · typographie"
          value={t.tileNameFamily || 'inter'}
          options={['inter', 'garamond']}
          onChange={(v) => setTweak('tileNameFamily', v)} />
      </TweaksPanel>
    </TweaksCtx.Provider>
  );
}

function Shell({ children }) {
  const [t, setTweak] = useTweaks(window.TWEAK_DEFAULTS || {});
  const ctxValue = React.useMemo(() => ({ t, setTweak }), [t, setTweak]);
  return (
    <TweaksCtx.Provider value={ctxValue}>
      <ScrollProgress />
      <Nav />
      <main>{children}</main>
      <Footer />
      <CookieBanner />
    </TweaksCtx.Provider>
  );
}

// Mount
ReactDOM.createRoot(document.getElementById('root')).render(
  <ThemeProvider>
    <LangProvider>
      <ViewportProvider>
        <PageProvider>
          <App />
        </PageProvider>
      </ViewportProvider>
    </LangProvider>
  </ThemeProvider>
);
