import { RouterProvider, createRouter } from '@tanstack/react-router'
import { Analytics } from '@vercel/analytics/react'
import { SpeedInsights } from '@vercel/speed-insights/react'
import { StrictMode } from 'react'
import ReactDOM from 'react-dom/client'
import { HelmetProvider } from 'react-helmet-async'

import reportWebVitals from './reportWebVitals.ts'
import { routeTree } from './routeTree.gen'
import { CookieProvider } from '@/contexts/CookieContext'
import { LanguageProvider } from '@/contexts/LanguageContext'
import './styles.css'
import './v2.css'
import './v2-pages.css'

declare const __VERCEL_BUILD__: boolean

// Import SEO testing utility in development
if (import.meta.env.DEV) {
  void import('./utils/seo-test.ts').then(({ runSEOTest }) => {
    // Make SEO test available globally in development
    ;(window as any).runSEOTest = runSEOTest
    console.log(
      '🔍 SEO Testing available! Run runSEOTest() in console to analyze page SEO.',
    )
  })
}

const router = createRouter({
  routeTree,
  context: {},
  defaultPreload: 'intent',
  scrollRestoration: true,
  scrollRestorationBehavior: 'instant',
  defaultStructuralSharing: true,
  defaultPreloadStaleTime: 0,
})

declare module '@tanstack/react-router' {
  interface Register {
    router: typeof router
  }
}

const rootElement = document.getElementById('app')
if (rootElement && !rootElement.innerHTML) {
  const root = ReactDOM.createRoot(rootElement)
  root.render(
    <StrictMode>
      <HelmetProvider>
        <LanguageProvider>
          <CookieProvider>
            <RouterProvider router={router} />
          </CookieProvider>
        </LanguageProvider>
        {__VERCEL_BUILD__ && <Analytics />}
        {__VERCEL_BUILD__ && <SpeedInsights />}
      </HelmetProvider>
    </StrictMode>,
  )
}

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals()
