import { isRouteErrorResponse, Links, Meta, Outlet, Scripts, ScrollRestoration, useLocation, } from "react-router"; import type { Route } from "./+types/root"; import "./app.css"; import { clerkMiddleware, rootAuthLoader, getAuth } from "@clerk/react-router/server"; import { Navbar } from "~/components/navbar"; import { ClerkProvider } from "@clerk/react-router"; import { Toaster } from "~/components/ui/sonner"; import { isUserAdminByClerkId } from "~/models/user"; export const middleware: Route.MiddlewareFunction[] = [clerkMiddleware()]; export async function loader(args: Route.LoaderArgs) { return rootAuthLoader(args, async () => { const { userId } = await getAuth(args); let isAdmin = false; if (userId) { isAdmin = await isUserAdminByClerkId(userId); } return { isAdmin }; }); } export const links: Route.LinksFunction = () => [ { 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=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap", }, ]; export function Layout({ children }: { children: React.ReactNode }) { return (
{details}
{stack && (
{stack}
)}