| 1 | import { RouterProvider } from "@tanstack/react-router"; |
| 2 | |
| 3 | import { BrowserProfileReporter } from "./browser/BrowserProfileReporter"; |
| 4 | import { ElectronBrowserHost } from "./browser/ElectronBrowserHost"; |
| 5 | import { CloudAuthentication } from "./cloud/CloudAuthentication"; |
| 6 | import { QuitHoldOverlay } from "./components/QuitHoldOverlay"; |
| 7 | import { AppAtomRegistryProvider } from "./rpc/atomRegistry"; |
| 8 | import 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 | */ |
| 15 | export 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 | } |