aboutsummaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/+error.svelte40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte
new file mode 100644
index 00000000..a5cd1dee
--- /dev/null
+++ b/src/routes/+error.svelte
@@ -0,0 +1,40 @@
+<script lang="ts">
+ import { browser } from '$app/environment';
+ import levenshtein from 'fast-levenshtein';
+
+ $: suggestion = (() => {
+ let closest = '';
+ let lowestDistance = Infinity;
+
+ [
+ 'birthdays',
+ 'completed',
+ 'schedule',
+ 'settings',
+ 'tools',
+ 'updates',
+ 'user',
+ 'wrapped',
+ '...'
+ ].forEach((path) => {
+ let distance = levenshtein.get(browser ? window.location.pathname : '...', path);
+
+ if (distance < lowestDistance) {
+ lowestDistance = distance;
+ closest = path;
+ }
+ });
+
+ return closest;
+ })();
+</script>
+
+<p>Page not found.</p>
+
+<blockquote>
+ Did you mean "<a
+ href={suggestion}
+ style={suggestion === '...' ? 'pointer-events: none; color: inherit;' : ''}
+ >{suggestion.charAt(0).toUpperCase() + suggestion.slice(1)}</a
+ >"?
+</blockquote>