2024-04-21 10:51:31 -07:00
|
|
|
"use client";
|
|
|
|
|
|
|
|
import Creeper from "@/components/creeper";
|
|
|
|
import { minecrafter } from "@/font/fonts";
|
|
|
|
import { cn } from "@/app/common/utils";
|
2024-04-21 17:26:29 -07:00
|
|
|
import { ReactElement, useEffect } from "react";
|
2024-04-21 10:51:31 -07:00
|
|
|
import MinecraftButton from "@/components/minecraft-button";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The error page.
|
|
|
|
*
|
|
|
|
* @returns the page jsx
|
|
|
|
*/
|
|
|
|
const ErrorPage = ({
|
|
|
|
error,
|
|
|
|
reset,
|
|
|
|
}: {
|
|
|
|
error: Error & { digest?: string };
|
|
|
|
reset: () => void;
|
|
|
|
}): ReactElement => {
|
|
|
|
// Log the error upon mount
|
|
|
|
useEffect((): void => {
|
|
|
|
console.error(error);
|
|
|
|
}, [error]);
|
|
|
|
|
|
|
|
// Render the page
|
|
|
|
return (
|
|
|
|
<main className="h-screen flex flex-col gap-3 justify-center items-center text-center pointer-events-none">
|
|
|
|
{/* Creeper */}
|
|
|
|
<Creeper />
|
|
|
|
|
|
|
|
{/* Header */}
|
|
|
|
<h1
|
|
|
|
className={cn(
|
|
|
|
"text-5xl sm:text-6xl text-minecraft-green-3",
|
|
|
|
minecrafter.className
|
|
|
|
)}
|
|
|
|
>
|
|
|
|
We're Sssssorry
|
|
|
|
</h1>
|
|
|
|
|
|
|
|
{/* Error */}
|
|
|
|
<h2 className="text-2xl">
|
|
|
|
It's not you, it's us, something went wrong.
|
|
|
|
</h2>
|
|
|
|
|
|
|
|
{/* Try Again */}
|
|
|
|
<MinecraftButton className="mt-3.5 h-11" onClick={() => reset()}>
|
|
|
|
Try Again?
|
|
|
|
</MinecraftButton>
|
|
|
|
</main>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
export default ErrorPage;
|