Skip to content

Commit 880a460

Browse files
committed
add better error pages
1 parent e4e9af4 commit 880a460

File tree

7 files changed

+98
-0
lines changed

7 files changed

+98
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<script lang="ts">
2+
export let status: number = 500;
3+
export let error: { message?: string } | null = null;
4+
5+
const statusMeanings: Record<number, string> = {
6+
400: 'Bad Request',
7+
401: 'Unauthorized',
8+
403: 'Forbidden',
9+
404: 'Not Found',
10+
408: 'Request Timeout',
11+
409: 'Conflict',
12+
410: 'Gone',
13+
418: "I'm a teapot",
14+
422: 'Unprocessable Content',
15+
429: 'Too Many Requests',
16+
500: 'Internal Server Error',
17+
502: 'Bad Gateway',
18+
503: 'Service Unavailable',
19+
504: 'Gateway Timeout'
20+
};
21+
22+
$: meaning = statusMeanings[status] ?? (status >= 500 ? 'Server Error' : 'Unexpected Error');
23+
$: description = error?.message ?? 'Something went wrong while loading this page.';
24+
</script>
25+
26+
<section
27+
class="flex min-h-[70vh] flex-col items-center justify-center gap-6 px-6 py-12 text-center"
28+
aria-labelledby="error-title"
29+
>
30+
<header
31+
class="relative grid max-w-xl place-items-center"
32+
id="error-title"
33+
>
34+
<span
35+
class="text-[clamp(6rem,18vw,12rem)] font-bold tracking-[-0.05em] text-subtext0/10"
36+
aria-hidden="true"
37+
>
38+
{status}
39+
</span>
40+
<div
41+
class="absolute"
42+
>
43+
<p class="m-0 text-2xl font-bold text-lavender">{meaning}</p>
44+
</div>
45+
</header>
46+
47+
<p class="m-0 max-w-md text-md leading-relaxed text-subtext0">
48+
{description}
49+
</p>
50+
</section>

frontend/src/routes/+error.svelte

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script lang="ts">
2+
import ErrorPage from '$lib/components/ErrorPage.svelte';
3+
4+
export let error: Error;
5+
export let status: number;
6+
</script>
7+
8+
<ErrorPage {status} {error} />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script lang="ts">
2+
import ErrorPage from '$lib/components/ErrorPage.svelte';
3+
4+
export let error: Error;
5+
export let status: number;
6+
</script>
7+
8+
<ErrorPage {status} {error} />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script lang="ts">
2+
import ErrorPage from '$lib/components/ErrorPage.svelte';
3+
4+
export let error: Error;
5+
export let status: number;
6+
</script>
7+
8+
<ErrorPage {status} {error} />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script lang="ts">
2+
import ErrorPage from '$lib/components/ErrorPage.svelte';
3+
4+
export let error: Error;
5+
export let status: number;
6+
</script>
7+
8+
<ErrorPage {status} {error} />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script lang="ts">
2+
import ErrorPage from '$lib/components/ErrorPage.svelte';
3+
4+
export let error: Error;
5+
export let status: number;
6+
</script>
7+
8+
<ErrorPage {status} {error} />
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<script lang="ts">
2+
import ErrorPage from '$lib/components/ErrorPage.svelte';
3+
4+
export let error: Error;
5+
export let status: number;
6+
</script>
7+
8+
<ErrorPage {status} {error} />

0 commit comments

Comments
 (0)