diff options
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/+error.svelte | 40 |
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> |