1import { RouterProvider } from "@tanstack/react-router";
2
3import { BrowserProfileReporter } from "./browser/BrowserProfileReporter";
4import { ElectronBrowserHost } from "./browser/ElectronBrowserHost";
5import { CloudAuthentication } from "./cloud/CloudAuthentication";
6import { QuitHoldOverlay } from "./components/QuitHoldOverlay";
7import { AppAtomRegistryProvider } from "./rpc/atomRegistry";
8import type { AppRouter } from "./router";
9
10/**
11 * Owns renderer-wide providers. The Electron browser host intentionally sits
12 * outside the router so its webviews survive route transitions, but it must
13 * share the same atom registry as routed UI.
14 */
15export function AppRoot({ router }: { readonly router: AppRouter }) {
16 return (
17 <AppAtomRegistryProvider>
18 <RouterProvider router={router} />
19 <CloudAuthentication />
20 <ElectronBrowserHost />
21 <BrowserProfileReporter />
22 <QuitHoldOverlay />
23 </AppAtomRegistryProvider>
24 );
25}