import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { BetaGate } from './components/BetaGate';
import { AppErrorBoundary } from './components/AppErrorBoundary';
import './index.css';

const root = document.getElementById('root');
if (!root) throw new Error('#root fehlt in index.html');

const reactRoot = ReactDOM.createRoot(root);

// (10.09.2026) DIE VORSCHAU — NUR IM ENTWICKLUNGSSERVER, nur mit `?vorschau`.
// `import.meta.env.DEV` ist in `vite build` false: Der Zweig fällt samt dem
// dynamisch geladenen Modul aus dem ausgelieferten Bündel. Das hält
// server/vorschau.demo.ts fest, indem es baut und nachsieht. Der Login selbst
// bleibt unverändert; die Begründung steht in src/vorschau/vorschau.tsx.
if (import.meta.env.DEV && new URLSearchParams(window.location.search).has('vorschau')) {
  void import('./vorschau/vorschau').then(({ richteVorschauEin, vorschauAutostart, VorschauRahmen }) => {
    richteVorschauEin();
    reactRoot.render(
      <React.StrictMode>
        <AppErrorBoundary>
          <VorschauRahmen>
            <App autostart={vorschauAutostart} />
          </VorschauRahmen>
        </AppErrorBoundary>
      </React.StrictMode>,
    );
  });
} else {
  // Das Beta-Gate sitzt BEWUSST hier und nicht in App: Solange der Haftungshinweis
  // nicht bestätigt ist, wird <App /> gar nicht erst gemountet — kein useVault(),
  // kein Speicher-Boot, kein ausgelegter Honeypot. Ein Hinweis, den die App im
  // Hintergrund schon überholt hat, wäre keiner.
  reactRoot.render(
    <React.StrictMode>
      <AppErrorBoundary>
        <BetaGate>
          <App />
        </BetaGate>
      </AppErrorBoundary>
    </React.StrictMode>,
  );
}
