mirror of
https://github.com/FranP-code/Reflecto.git
synced 2025-10-13 00:43:31 +00:00
68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
import type { QueryClient } from "@tanstack/react-query";
|
|
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
|
|
import {
|
|
createRootRouteWithContext,
|
|
HeadContent,
|
|
Outlet,
|
|
useRouterState,
|
|
} from "@tanstack/react-router";
|
|
import { TanStackRouterDevtools } from "@tanstack/react-router-devtools";
|
|
import Header from "@/components/header";
|
|
import Loader from "@/components/loader";
|
|
import { ThemeProvider } from "@/components/theme-provider";
|
|
import { Toaster } from "@/components/ui/sonner";
|
|
import type { trpc } from "@/utils/trpc";
|
|
import "../index.css";
|
|
|
|
export interface RouterAppContext {
|
|
trpc: typeof trpc;
|
|
queryClient: QueryClient;
|
|
}
|
|
|
|
export const Route = createRootRouteWithContext<RouterAppContext>()({
|
|
component: RootComponent,
|
|
head: () => ({
|
|
meta: [
|
|
{
|
|
title: "Reflecto",
|
|
},
|
|
{
|
|
name: "description",
|
|
content: "Reflecto is a web application",
|
|
},
|
|
],
|
|
links: [
|
|
{
|
|
rel: "icon",
|
|
href: "/favicon.ico",
|
|
},
|
|
],
|
|
}),
|
|
});
|
|
|
|
function RootComponent() {
|
|
const isFetching = useRouterState({
|
|
select: (s) => s.isLoading,
|
|
});
|
|
|
|
return (
|
|
<>
|
|
<HeadContent />
|
|
<ThemeProvider
|
|
attribute="class"
|
|
defaultTheme="dark"
|
|
disableTransitionOnChange
|
|
storageKey="vite-ui-theme"
|
|
>
|
|
<div className="grid h-svh grid-rows-[auto_1fr]">
|
|
<Header />
|
|
{isFetching ? <Loader /> : <Outlet />}
|
|
</div>
|
|
<Toaster richColors />
|
|
</ThemeProvider>
|
|
<TanStackRouterDevtools position="bottom-left" />
|
|
<ReactQueryDevtools buttonPosition="bottom-right" position="bottom" />
|
|
</>
|
|
);
|
|
}
|