Files
freno-dev/src/routes/401.tsx
2026-01-06 18:18:04 -05:00

98 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { PageHead } from "~/components/PageHead";
import { HttpStatusCode } from "@solidjs/start";
import { useLocation, useNavigate } from "@solidjs/router";
import { createSignal, onMount, onCleanup } from "solid-js";
import { glitchText } from "~/lib/client-utils";
import { TerminalErrorPage } from "~/components/TerminalErrorPage";
export default function Page_401() {
const navigate = useNavigate();
const [glitch401, setGlitch401] = createSignal("401");
const location = useLocation();
onMount(() => {
const interval = glitchText(glitch401(), setGlitch401);
onCleanup(() => {
clearInterval(interval);
});
});
const errorContent = (
<div class="mb-8 w-full max-w-4xl font-mono">
<div class="mb-4 flex items-center gap-2">
<span class="text-red text-3xl font-bold">{glitch401()}</span>
<div class="border-overlay0 h-8 border-l" />
<div class="flex flex-col">
<span class="text-red font-mono text-sm">error:</span>
<span class="text-text font-mono">Unauthorized</span>
</div>
</div>
<div class="border-red bg-mantle mb-6 border-l-4 p-4 text-sm">
<div class="mb-2 flex items-start gap-2">
<span class="text-red">✗</span>
<div class="flex-1">
<div class="text-text">Access Denied</div>
<div class="text-subtext0 mt-1">
Authentication required to access this resource
</div>
</div>
</div>
<div class="text-subtext1 mt-3">
<span class="text-yellow">→</span> Location:{" "}
<span class="text-peach">{location.pathname}</span>
</div>
</div>
<div class="text-subtext0 space-y-2 text-sm">
<div class="flex items-start gap-2">
<span class="text-blue">ℹ</span>
<span>
Type <span class="text-green">help</span> to see available commands,
or try one of the suggestions below
</span>
</div>
</div>
</div>
);
const quickActions = (
<>
{" "}
<button
onClick={() => navigate("/login")}
class="group border-surface0 bg-mantle hover:border-yellow hover:bg-surface0 flex w-full items-center gap-2 border px-4 py-3 text-left transition-all"
>
<span class="text-green">$</span>
<span class="text-yellow group-hover:text-peach">./authenticate</span>
<span class="text-subtext1">--login</span>
<span class="text-subtext1 ml-auto opacity-0 transition-opacity group-hover:opacity-100">
[Login]
</span>
</button>
</>
);
return (
<>
<PageHead
title="401 Unauthorized"
description="401 - Unauthorized access. Please log in to access this page."
/>
<HttpStatusCode code={401} />
<TerminalErrorPage
errorContent={errorContent}
quickActions={quickActions}
disableTerminal
footer={
<>
<span class="text-red">401</span>{" "}
<span class="text-subtext0">|</span> Unauthorized Access
</>
}
/>
</>
);
}