import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import { HelmetProvider } from 'react-helmet-async';
import App from './App';
import { AuthProvider } from '@/cms/AuthContext';
import './styles/index.css';

// After a new deploy the old lazy-loaded chunks are gone; a stale open tab that
// navigates to a route would fail to import its chunk and render a blank page.
// Vite fires `vite:preloadError` in that case — reload once to fetch the new
// build (guarded against reload loops).
window.addEventListener('vite:preloadError', () => {
  if (!sessionStorage.getItem('reloaded-for-new-build')) {
    sessionStorage.setItem('reloaded-for-new-build', '1');
    window.location.reload();
  }
});

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <HelmetProvider>
      <BrowserRouter>
        <AuthProvider>
          <App />
        </AuthProvider>
      </BrowserRouter>
    </HelmetProvider>
  </StrictMode>,
);
