import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { Auth0Provider as RealAuth0Provider } from '@auth0/auth0-react'
import { Auth0Provider as MockAuth0Provider } from './mocks/auth0-react'
import './index.css'
import App from './App.tsx'

const domain = import.meta.env.VITE_AUTH0_DOMAIN;
const clientId = import.meta.env.VITE_AUTH0_CLIENT_ID;
const audience = import.meta.env.VITE_AUTH0_AUDIENCE;

if (typeof window !== 'undefined' && new URLSearchParams(window.location.search).has('mockAuth')) {
  window.localStorage.setItem('mockAuth', 'true');
}
const isMock = typeof window !== 'undefined' && (
  import.meta.env.VITE_MOCK_AUTH === 'true' || 
  window.localStorage.getItem('mockAuth') === 'true'
);

const Auth0Provider = isMock ? MockAuth0Provider as any : RealAuth0Provider;

createRoot(document.getElementById('root')!).render(
  <StrictMode>
    <Auth0Provider
      domain={domain}
      clientId={clientId}
      authorizationParams={{
        redirect_uri: window.location.origin,
        audience: audience,
      }}
    >
      <App />
    </Auth0Provider>
  </StrictMode>,
)
