52 lines
1.2 KiB
TypeScript
52 lines
1.2 KiB
TypeScript
|
|
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||
|
|
import { Suspense } from "react";
|
||
|
|
|
||
|
|
async function ErrorContent({
|
||
|
|
searchParams,
|
||
|
|
}: {
|
||
|
|
searchParams: Promise<{ error: string }>;
|
||
|
|
}) {
|
||
|
|
const params = await searchParams;
|
||
|
|
|
||
|
|
return (
|
||
|
|
<>
|
||
|
|
{params?.error ? (
|
||
|
|
<p className="text-sm text-muted-foreground">
|
||
|
|
Code error: {params.error}
|
||
|
|
</p>
|
||
|
|
) : (
|
||
|
|
<p className="text-sm text-muted-foreground">
|
||
|
|
An unspecified error occurred.
|
||
|
|
</p>
|
||
|
|
)}
|
||
|
|
</>
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
export default function Page({
|
||
|
|
searchParams,
|
||
|
|
}: {
|
||
|
|
searchParams: Promise<{ error: string }>;
|
||
|
|
}) {
|
||
|
|
return (
|
||
|
|
<div className="flex min-h-svh w-full items-center justify-center p-6 md:p-10">
|
||
|
|
<div className="w-full max-w-sm">
|
||
|
|
<div className="flex flex-col gap-6">
|
||
|
|
<Card>
|
||
|
|
<CardHeader>
|
||
|
|
<CardTitle className="text-2xl">
|
||
|
|
Sorry, something went wrong.
|
||
|
|
</CardTitle>
|
||
|
|
</CardHeader>
|
||
|
|
<CardContent>
|
||
|
|
<Suspense>
|
||
|
|
<ErrorContent searchParams={searchParams} />
|
||
|
|
</Suspense>
|
||
|
|
</CardContent>
|
||
|
|
</Card>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
);
|
||
|
|
}
|