import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import 'animal-island-ui/style';

import { ConsoleAuthGate } from './auth/console-auth.js';
import { AppShell, resolveRoute } from './app-shell.js';
import { useBrowserPathname } from './navigation/use-browser-pathname.js';
import './styles.css';

const root = document.querySelector<HTMLElement>('#root');
if (!root) throw new Error('Missing application root');

function resolveBrowserPathname(pathname: string): string {
  const route = resolveRoute(pathname);
  return route.kind === 'redirect' ? (route.to ?? pathname) : pathname;
}

function BrowserApp() {
  const pathname = useBrowserPathname(resolveBrowserPathname);
  return (
    <ConsoleAuthGate>
      <AppShell pathname={pathname} />
    </ConsoleAuthGate>
  );
}

createRoot(root).render(
  <StrictMode>
    <BrowserApp />
  </StrictMode>,
);
