30 lines
873 B
TypeScript
30 lines
873 B
TypeScript
import { useRouteError, isRouteErrorResponse } from 'react-router-dom';
|
|||
|
|
|
||
|
|
export default function ErrorPage() {
|
||
|
|
const error = useRouteError();
|
||
|
|
let errorMessage: string;
|
||
|
|
|
||
|
|
if (isRouteErrorResponse(error)) {
|
||
|
|
errorMessage = error.statusText;
|
||
|
|
} else if (error instanceof Error) {
|
||
|
|
errorMessage = error.message;
|
||
|
|
} else if (typeof error === 'string') {
|
||
|
|
errorMessage = error;
|
||
|
|
} else {
|
||
|
|
console.error(error);
|
||
|
|
errorMessage = 'Unknown error';
|
||
|
|
}
|
||
|
|
|
||
|
|
return (
|
||
|
|
<div className="min-h-screen flex items-center justify-center bg-gray-50">
|
||
|
|
<div className="text-center">
|
||
|
|
<h1 className="text-6xl font-bold text-red-600 mb-4">Oops!</h1>
|
||
|
|
<p className="text-xl text-gray-700 mb-2">
|
||
|
|
Sorry, an unexpected error has occurred.
|
||
|
|
</p>
|
||
|
|
<p className="text-gray-500 italic">{errorMessage}</p>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
);
|
||
|
|
}
|