mirror of
https://github.com/domfelipe/mika-agent-assist.git
synced 2026-08-07 06:36:46 +00:00
79 lines
2.8 KiB
TypeScript
79 lines
2.8 KiB
TypeScript
import { createRouter, useRouter } from "@tanstack/react-router";
|
|
import { QueryClient } from "@tanstack/react-query";
|
|
import { routeTree } from "./routeTree.gen";
|
|
|
|
function DefaultErrorComponent({ error, reset }: { error: Error; reset: () => void }) {
|
|
const router = useRouter();
|
|
|
|
return (
|
|
<div className="flex min-h-screen items-center justify-center bg-background px-4">
|
|
<div className="max-w-md text-center">
|
|
<div className="mx-auto mb-6 flex h-16 w-16 items-center justify-center rounded-full bg-destructive/10">
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
className="h-8 w-8 text-destructive"
|
|
fill="none"
|
|
viewBox="0 0 24 24"
|
|
stroke="currentColor"
|
|
strokeWidth={2}
|
|
>
|
|
<path
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
<h1 className="text-2xl font-bold tracking-tight text-foreground">Algo deu errado</h1>
|
|
<p className="mt-2 text-sm text-muted-foreground">
|
|
Ocorreu um erro inesperado. Tente novamente.
|
|
</p>
|
|
{import.meta.env.DEV && error.message && (
|
|
<pre className="mt-4 max-h-40 overflow-auto rounded-md bg-muted p-3 text-left font-mono text-xs text-destructive">
|
|
{error.message}
|
|
</pre>
|
|
)}
|
|
<div className="mt-6 flex items-center justify-center gap-3">
|
|
<button
|
|
onClick={() => {
|
|
router.invalidate();
|
|
reset();
|
|
}}
|
|
className="inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary-dark"
|
|
>
|
|
Tentar novamente
|
|
</button>
|
|
<a
|
|
href="/"
|
|
className="inline-flex items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground transition-colors hover:bg-accent"
|
|
>
|
|
Ir para o início
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export const getRouter = () => {
|
|
// Fresh QueryClient per request — never module-level (vaza dados entre SSR requests)
|
|
const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: 30_000,
|
|
retry: 1,
|
|
refetchOnWindowFocus: false,
|
|
},
|
|
},
|
|
});
|
|
|
|
const router = createRouter({
|
|
routeTree,
|
|
context: { queryClient },
|
|
scrollRestoration: true,
|
|
defaultPreloadStaleTime: 0,
|
|
defaultErrorComponent: DefaultErrorComponent,
|
|
});
|
|
|
|
return router;
|
|
};
|