import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { Outlet, Link, createRootRouteWithContext, useRouter, HeadContent, Scripts, } from "@tanstack/react-router"; import { useEffect, type ReactNode } from "react"; import appCss from "../styles.css?url"; import { reportLovableError } from "../lib/lovable-error-reporting"; function NotFoundComponent() { return (

404

Page not found

The page you're looking for doesn't exist or has been moved.

Go home
); } function ErrorComponent({ error, reset }: { error: Error; reset: () => void }) { console.error(error); const router = useRouter(); useEffect(() => { reportLovableError(error, { boundary: "tanstack_root_error_component" }); }, [error]); return (

This page didn't load

Something went wrong on our end. You can try refreshing or head back home.

Go home
); } export const Route = createRootRouteWithContext<{ queryClient: QueryClient }>()({ head: () => ({ meta: [ { charSet: "utf-8" }, { name: "viewport", content: "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover", }, { title: "سامانه جامع آمار و اطلاعات دیدوان" }, { name: "description", content: "بازار داخلی ارز، کامودیتی زنده و قیمت فلزات و فولاد — سامانه دیدوان", }, { name: "theme-color", content: "#f7f4ec" }, { name: "mobile-web-app-capable", content: "yes" }, { name: "apple-mobile-web-app-capable", content: "yes" }, { name: "apple-mobile-web-app-status-bar-style", content: "default" }, { name: "apple-mobile-web-app-title", content: "دیدوان" }, ], links: [ { rel: "stylesheet", href: appCss }, { rel: "manifest", href: "/manifest.webmanifest" }, { rel: "icon", href: "/icon.svg", type: "image/svg+xml" }, { rel: "apple-touch-icon", href: "/icon.svg" }, { rel: "preconnect", href: "https://fonts.googleapis.com" }, { rel: "preconnect", href: "https://fonts.gstatic.com", crossOrigin: "anonymous" }, { rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100..900&display=swap", }, ], }), shellComponent: RootShell, component: RootComponent, notFoundComponent: NotFoundComponent, errorComponent: ErrorComponent, }); function RootShell({ children }: { children: ReactNode }) { return ( {children} ); } function RootComponent() { const { queryClient } = Route.useRouteContext(); useEffect(() => { if ("serviceWorker" in navigator) { navigator.serviceWorker.register("/sw.js").catch(() => {}); } }, []); return ( {/* Required: nested routes render here. Removing breaks all child routes. */} ); }