2026-07-30 21:31:35 +02:00
|
|
|
<script lang="ts">
|
2026-10-01 11:14:34 +02:00
|
|
|
import TextBlock from "layout/TextBlock.svelte";
|
2026-07-30 21:31:35 +02:00
|
|
|
import { type FSNavigator } from "./FSNavigator";
|
|
|
|
|
import { onMount } from "svelte";
|
2026-10-01 11:14:34 +02:00
|
|
|
import { breadcrumbs_store } from "wrap/HeaderStore";
|
2026-07-30 21:31:35 +02:00
|
|
|
|
|
|
|
|
let {
|
|
|
|
|
nav
|
|
|
|
|
}: {
|
|
|
|
|
nav: FSNavigator;
|
|
|
|
|
} = $props();
|
|
|
|
|
|
|
|
|
|
onMount(() => {
|
|
|
|
|
return nav.subscribe(nav => {
|
|
|
|
|
breadcrumbs_store.set(breadcrumbs)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
{#snippet breadcrumbs()}
|
|
|
|
|
{$nav.navigation_error}
|
|
|
|
|
{/snippet}
|
|
|
|
|
|
|
|
|
|
<TextBlock>
|
|
|
|
|
{#if $nav.navigation_error === "not_found" || $nav.navigation_error === "path_not_found"}
|
|
|
|
|
<h1>Page not found</h1>
|
|
|
|
|
<p>
|
|
|
|
|
This page could not be found.
|
|
|
|
|
</p>
|
|
|
|
|
{:else if $nav.navigation_error === "permission_denied" || $nav.navigation_error === "forbidden"}
|
|
|
|
|
<h1>Permission denied</h1>
|
|
|
|
|
<p>
|
|
|
|
|
You are not allowed to access this resource.
|
|
|
|
|
</p>
|
|
|
|
|
{:else if $nav.navigation_error === "unavailable_for_legal_reasons"}
|
|
|
|
|
<h1>Unavailable for legal reasons</h1>
|
|
|
|
|
<p>
|
|
|
|
|
This content has been removed for breaking the law.
|
|
|
|
|
</p>
|
2026-08-04 13:37:44 +02:00
|
|
|
{:else if $nav.navigation_error === "out_of_transfer"}
|
|
|
|
|
<h1>Traffic limit exceeded</h1>
|
|
|
|
|
<p>
|
|
|
|
|
The host user has exceeded the traffic limit of their subscription.
|
|
|
|
|
They need to upgrade to a higher subscription tier.
|
|
|
|
|
</p>
|
2026-07-30 21:31:35 +02:00
|
|
|
{:else}
|
|
|
|
|
<h1>Unknown error code</h1>
|
|
|
|
|
<p>
|
|
|
|
|
{$nav.navigation_error}
|
|
|
|
|
</p>
|
|
|
|
|
{/if}
|
|
|
|
|
</TextBlock>
|