39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
|
|
'use client'
|
||
|
|
|
||
|
|
import { useEffect } from 'react'
|
||
|
|
import { Button } from '@/components/ui/button'
|
||
|
|
import { AlertTriangle } from 'lucide-react'
|
||
|
|
|
||
|
|
export default function Error({
|
||
|
|
error,
|
||
|
|
reset,
|
||
|
|
}: {
|
||
|
|
error: Error & { digest?: string }
|
||
|
|
reset: () => void
|
||
|
|
}) {
|
||
|
|
useEffect(() => {
|
||
|
|
// Log the error to an error reporting service
|
||
|
|
console.error(error)
|
||
|
|
}, [error])
|
||
|
|
|
||
|
|
return (
|
||
|
|
<div className="flex min-h-screen flex-col items-center justify-center gap-4 text-center">
|
||
|
|
<AlertTriangle className="h-16 w-16 text-destructive/50" />
|
||
|
|
<h1 className="text-2xl font-semibold">Something went wrong</h1>
|
||
|
|
<p className="max-w-md text-muted-foreground">
|
||
|
|
An unexpected error occurred. Please try again or contact support if the
|
||
|
|
problem persists.
|
||
|
|
</p>
|
||
|
|
{error.digest && (
|
||
|
|
<p className="text-xs text-muted-foreground">Error ID: {error.digest}</p>
|
||
|
|
)}
|
||
|
|
<div className="flex gap-4">
|
||
|
|
<Button onClick={() => reset()}>Try Again</Button>
|
||
|
|
<Button variant="outline" onClick={() => window.location.reload()}>
|
||
|
|
Refresh Page
|
||
|
|
</Button>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
)
|
||
|
|
}
|