import { useConvexAccessToken, WebAuthProvider } from "@code/auth/web"; import { env } from "@code/env/web"; import { Toaster } from "@code/ui/components/sonner"; import { FlueProvider } from "@flue/react"; import "./index.css"; import { createFlueClient } from "@flue/sdk"; import { useMemo } from "react"; import { isRouteErrorResponse, Links, Meta, Outlet, Scripts, ScrollRestoration, } from "react-router"; import type { Route } from "./+types/root"; import { ThemeProvider } from "./components/theme-provider"; import { createFlueFetch } from "./lib/flue-transport"; export const links: Route.LinksFunction = () => [ { href: "https://fonts.googleapis.com", rel: "preconnect" }, { crossOrigin: "anonymous", href: "https://fonts.gstatic.com", rel: "preconnect", }, { href: "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap", rel: "stylesheet", }, ]; const flueBaseUrl = new URL(env.VITE_FLUE_URL); const flueFetch = createFlueFetch({ baseUrl: flueBaseUrl }); const AuthenticatedFlueProvider = ({ children, }: { children: React.ReactNode; }) => { const resolveAccessToken = useConvexAccessToken(); const client = useMemo( () => createFlueClient({ baseUrl: flueBaseUrl.toString(), fetch: flueFetch, headers: async () => { const accessToken = await resolveAccessToken(); const headers: Record = {}; if (accessToken) { headers.authorization = `Bearer ${accessToken}`; } return headers; }, }), [resolveAccessToken] ); return {children}; }; export const Layout = ({ children }: { children: React.ReactNode }) => ( {children} ); const App = () => ( ); export default App; export const ErrorBoundary = ({ error }: Route.ErrorBoundaryProps) => { let message = "Oops!"; let details = "An unexpected error occurred."; let stack: string | undefined; if (isRouteErrorResponse(error)) { const { status, statusText } = error; message = status === 404 ? "404" : "Error"; details = status === 404 ? "The requested page could not be found." : statusText || details; } else if (import.meta.env.DEV && error && error instanceof Error) { ({ message: details, stack } = error); } return (

{message}

{details}

{stack && (
          {stack}
        
)}
); };