import React from "react"; import ReactDOM from "react-dom/client"; import { RouterProvider, createRouter } from "@tanstack/react-router"; import { QueryClient, QueryClientProvider, MutationCache } from "@tanstack/react-query"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { toast } from "sonner"; import { routeTree } from "./routeTree"; import { ThemeProvider } from "@/components/shell/theme-provider"; import { bootstrapSession } from "./lib/session"; import "./index.css"; const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 5 * 60 * 1000, gcTime: 10 * 60 * 1000, refetchOnWindowFocus: true, }, }, mutationCache: new MutationCache({ // Surface failures that individual mutations don't handle themselves so // silent validation/network errors never go unnoticed. onError: (error, _variables, _context, mutation) => { if (!mutation.options.onError) { toast.error((error as Error).message || "Request failed"); } }, }), }); const router = createRouter({ routeTree }); declare module "@tanstack/react-router" { interface Register { router: typeof router; } } const rootEl = document.getElementById("root"); if (!rootEl) throw new Error("Root element not found"); bootstrapSession().finally(() => { ReactDOM.createRoot(rootEl).render( {import.meta.env.DEV && } ); });