finish up the documentation page

Signed-off-by: ngn <ngn@ngn.tf>
This commit is contained in:
ngn
2025-01-17 02:42:32 +03:00
parent e87764a4c2
commit 6f7263dd84
28 changed files with 1141 additions and 234 deletions

View File

@ -31,7 +31,7 @@ export async function load({ fetch }) {
};
} catch (err) {
return {
error: err,
error: err.toString(),
};
}
}

View File

@ -1,11 +0,0 @@
import { goto } from "$app/navigation";
import { doc_get } from "$lib/doc";
export async function load({ fetch, params }) {
try {
return await doc_get(fetch, params.name);
} catch (err) {
if (err.toString().includes("not found")) return goto("/");
return { error: err };
}
}

View File

@ -0,0 +1,9 @@
import { doc_get } from "$lib/doc";
export async function load({ fetch, params }) {
try {
return { doc: await doc_get(fetch, params.name) };
} catch (err) {
return { error: err.toString() };
}
}

View File

@ -2,36 +2,48 @@
import Header from "$lib/header.svelte";
import Head from "$lib/head.svelte";
import { color } from "$lib/util.js";
import { language, color } from "$lib/util.js";
import { goto } from "$app/navigation";
import DOMPurify from "dompurify";
import { onMount } from "svelte";
import { marked } from "marked";
import { _ } from "svelte-i18n";
let { data } = $props();
marked.use({ breaks: true });
onMount(async () => {
if (data.error !== null) return await goto("/");
for (let key in data.doc)
data.doc[key]["content"] = DOMPurify.sanitize(data.doc[key]["content"]);
});
</script>
<Head title="documentation" desc="website and API documentation" />
<Header picture="reader" title={$_("doc.title")} />
<main>
<div class="markdown-body" style="--link-color: var(--{color()})">
{@html marked.parse(data.content)}
</div>
<div class="docs">
{#each data.docs as doc}
{#if doc.title == data.title}
<a href="/doc/{doc.name}" style="border-color: var(--{color()})">
<h1>{doc.title}</h1>
<h3>{doc.desc}</h3>
</a>
{:else}
<a href="/doc/{doc.name}" style="border-color: var(--white-3)">
<h1>{doc.title}</h1>
<h3>{doc.desc}</h3>
</a>
{/if}
{/each}
</div>
{#if data.doc !== undefined}
<div class="markdown-body" style="--link-color: var(--{color()})">
{@html marked.parse(data.doc[$language].content)}
</div>
<div class="docs">
{#each data.docs[$language] as doc}
{#if doc.title == data.doc[$language].title}
<a href="/doc/{doc.name}" style="border-color: var(--{color()})">
<h1>{doc.title}</h1>
<h3>{doc.desc}</h3>
</a>
{:else}
<a href="/doc/{doc.name}" style="border-color: var(--white-3)">
<h1>{doc.title}</h1>
<h3>{doc.desc}</h3>
</a>
{/if}
{/each}
</div>
{/if}
</main>
<style>