import '@abraham/reflection';
import { provideAuth, setupAuthContext } from '@/app/auth/context';
import { providePlatform } from '@/infra/platform/context';
import { provideStorages } from '@/infra/storage/context';
import { provideStyles } from '@/infra/styles/context';
import { type Injector, ReflectiveInjector } from '@outposts/injection-js';
import { RouterProvider, createRouter } from '@tanstack/react-router';
import {
InjectorContextVoidInjector,
InjectorProvider,
} from 'oidc-client-rx/adapters/react';
import { Suspense } from 'react';
import { createRoot } from 'react-dom/client';
import { AppNotFoundComponent } from './components/layout/app-not-found';
import { routeTree } from './routeTree.gen';
import './app.css';
// Create a new router instance
const router = createRouter({
routeTree,
defaultPreload: 'intent',
defaultStaleTime: 5000,
scrollRestoration: true,
defaultNotFoundComponent: AppNotFoundComponent,
notFoundMode: 'root',
context: {
injector: InjectorContextVoidInjector,
},
});
// Register the router instance for type safety
declare module '@tanstack/react-router' {
interface Register {
router: typeof router;
}
}
const injector: Injector = ReflectiveInjector.resolveAndCreate([
...providePlatform(),
...provideStorages(),
...provideAuth(router),
...provideStyles(),
]);
setupAuthContext(injector);
const rootElement = document.getElementById('root');
const App = () => {
return (
);
};
if (rootElement) {
const root = createRoot(rootElement);
root.render();
}