Files
2026-09-06 23:29:00 -04:00

37 lines
912 B
TypeScript

import { createRoot, hydrateRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import { AuthProvider } from "./providers/AuthProvider";
import { SsrDataProvider } from "./ssr/context";
import type { SsrData } from "./ssr/types";
import App from "./app";
import "./assets/index.css";
declare global {
interface Window {
__SSR_DATA__?: SsrData;
}
}
const ssrData = window.__SSR_DATA__ ?? null;
delete window.__SSR_DATA__;
const tree = (
<SsrDataProvider data={ssrData}>
<AuthProvider>
<BrowserRouter>
<App />
</BrowserRouter>
</AuthProvider>
</SsrDataProvider>
);
const container = document.getElementById("root")!;
// Server-rendered pages ship markup to hydrate; every other route is still a
// plain client-side render into an empty root.
if (ssrData) {
hydrateRoot(container, tree);
} else {
createRoot(container).render(tree);
}