import { StrictMode } from 'react';
import { createRoot, hydrateRoot } from 'react-dom/client';
import { BrowserRouter, MemoryRouter } from 'react-router-dom';
import App from './App';
import { captureAttribution } from './lib/leadTracking';
import { initAnalytics } from './lib/analytics';
import './styles/index.css';

// Capture UTM parameters before anything else so the first paint already has
// campaign attribution available for any lead submitted later.
captureAttribution();
initAnalytics();

// Routing mode. 'browser' (default) uses real URLs. Set VITE_ROUTER_MODE=memory
// to build a self-contained, single-file preview that can run from anywhere -
// useful for sharing a demo build that is not served from a web root.
const Router = import.meta.env.VITE_ROUTER_MODE === 'memory' ? MemoryRouter : BrowserRouter;

const container = document.getElementById('root')!;
const app = (
  <StrictMode>
    <Router>
      <App />
    </Router>
  </StrictMode>
);

// The production build pre-renders every route to static HTML, so hydrate it
// rather than throwing the server markup away.
if (container.dataset.prerendered === 'true') {
  hydrateRoot(container, app);
} else {
  createRoot(container).render(app);
}
