← back to Trademarks Copyright
src/app/error.tsx
28 lines
"use client";
import Link from "next/link";
import { useEffect } from "react";
export default function Error({ error, reset }: { error: Error & { digest?: string }; reset: () => void }) {
useEffect(() => { console.error("app error", error); }, [error]);
return (
<article className="mx-auto max-w-2xl">
<div className="card p-8 text-center">
<div className="text-xs uppercase tracking-widest text-red-700">500</div>
<h1 className="mt-2 text-3xl font-semibold">Something broke on our side.</h1>
<p className="mt-3 text-ink/70">We've been pinged. Meanwhile:</p>
<pre className="mt-3 rounded bg-ink/5 p-3 text-left text-xs text-ink/60 overflow-auto max-h-32">
{error.message}
{error.digest ? `\ndigest: ${error.digest}` : ""}
</pre>
<div className="mt-6 flex flex-wrap justify-center gap-2">
<button onClick={() => reset()} className="btn">Try again</button>
<Link href="/drops" className="btn-ghost">Back to Drops</Link>
<a href="mailto:drops@agentabrams.com" className="btn-ghost">Email support</a>
</div>
</div>
</article>
);
}