import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { registerSW } from 'virtual:pwa-register';
import '@mantine/core/styles.css';
import '@mantine/dates/styles.css';
import '@mantine/notifications/styles.css';
import './stil.css';
import { App } from './App';

// E-17: `Temporal` (siehe shared/datum.ts) war bislang durch Electrons
// gebündelte, exakt bekannte Chromium-Version garantiert nativ verfügbar,
// ohne Electron (Aufgabe 10.4) läuft die Anwendung im Browser der
// Nutzer:innen — dessen Engine kennt diese Anwendung nicht. Der Guard lädt
// den Polyfill nur dort nach, wo er tatsächlich fehlt.
if (typeof Temporal === 'undefined') {
  await import('temporal-polyfill/global');
}

// Aufgabe 9.2: registriert den Service Worker aus echtem JS statt aus einem
// von `vite-plugin-pwa` injizierten Inline-Skript in `index.html` — die dort
// gesetzte CSP erlaubt bewusst kein `'unsafe-inline'` für Skripte.
registerSW({ immediate: true });

const container = document.getElementById('root');
if (!container) {
  throw new Error('Root-Element #root fehlt in index.html.');
}

createRoot(container).render(
  <StrictMode>
    <App />
  </StrictMode>,
);
