import { RouterProvider } from "@tanstack/react-router";
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";

import { BackendProvider } from "./app/BackendProvider";
import { appI18n, initializeI18n } from "./i18n";
import { router } from "./router/router";
import { registerAppServiceWorker } from "./service-worker/registration";
import "./styles/index.css";

async function bootstrap(): Promise<void> {
  await initializeI18n();

  const rootElement = document.querySelector<HTMLElement>("#root");
  if (!rootElement) {
    throw new Error("Application root element is missing.");
  }

  document.documentElement.lang = appI18n.language;
  document.title = appI18n.t("app.documentTitle");
  registerAppServiceWorker();

  createRoot(rootElement).render(
    <StrictMode>
      <BackendProvider>
        <RouterProvider router={router} />
      </BackendProvider>
    </StrictMode>,
  );
}

void bootstrap();
