import { QueryClientProvider, type QueryClient } from '@tanstack/react-query'; import { createRouter, type RouterHistory } from '@tanstack/react-router'; import { RouterProvider } from '@tanstack/react-router'; import { getShellBridge } from '@/platform/shell/bridge'; import { routeTree } from '@/routeTree.gen'; import { createAppQueryClient } from './query-client'; export interface AppRouterContext { queryClient: QueryClient; platform: { getShellBridge: typeof getShellBridge; }; } export function createAppRouter( options: { history?: RouterHistory; queryClient?: QueryClient; context?: Partial; } = {}, ) { const queryClient = options.queryClient ?? createAppQueryClient(); const context: AppRouterContext = { ...options.context, queryClient, platform: { getShellBridge, ...options.context?.platform, }, }; return createRouter({ routeTree, history: options.history, context, defaultPreload: 'intent', defaultPreloadStaleTime: 0, scrollRestoration: true, defaultErrorComponent: DefaultErrorComponent, defaultNotFoundComponent: DefaultNotFoundComponent, }); } export function AppRouterProvider({ router, queryClient, }: { router: ReturnType; queryClient: QueryClient; }) { return ( ); } declare module '@tanstack/react-router' { interface Register { router: ReturnType; } } export function DefaultErrorComponent() { return (

Something went wrong

Please refresh the page and try again.

); } export function DefaultNotFoundComponent() { return (

Page not found

The requested page could not be found.

); }