2024-08-17 19:29:10 +02:00
|
|
|
<script lang="ts">
|
2024-08-27 16:39:29 +02:00
|
|
|
import Head from "../common/Head.svelte";
|
|
|
|
|
import Nav from "../common/Nav.svelte";
|
|
|
|
|
import Footer from "../common/Footer.svelte";
|
2024-09-10 17:29:57 +02:00
|
|
|
import { type WebsiteOverview, md } from "../../utils";
|
|
|
|
|
import type { Article } from "../../db-schema";
|
2024-08-20 19:17:05 +02:00
|
|
|
|
|
|
|
|
const {
|
2024-09-10 17:29:57 +02:00
|
|
|
websiteOverview,
|
|
|
|
|
article,
|
|
|
|
|
apiUrl
|
|
|
|
|
}: { websiteOverview: WebsiteOverview; article: Article; apiUrl: string } = $props();
|
2024-08-17 19:29:10 +02:00
|
|
|
</script>
|
|
|
|
|
|
2024-09-10 17:29:57 +02:00
|
|
|
<Head
|
|
|
|
|
{websiteOverview}
|
|
|
|
|
nestingLevel={1}
|
|
|
|
|
{apiUrl}
|
|
|
|
|
title={article.title}
|
|
|
|
|
metaDescription={article.meta_description}
|
|
|
|
|
/>
|
2024-08-17 19:29:10 +02:00
|
|
|
|
2024-09-10 17:29:57 +02:00
|
|
|
<Nav {websiteOverview} isDocsTemplate={false} isIndexPage={false} {apiUrl} />
|
2024-08-17 19:29:10 +02:00
|
|
|
|
|
|
|
|
<header>
|
2024-08-18 19:18:32 +02:00
|
|
|
<div class="container">
|
2024-08-18 20:12:27 +02:00
|
|
|
<hgroup>
|
2024-09-10 17:29:57 +02:00
|
|
|
<p>{article.publication_date}</p>
|
|
|
|
|
<h1>{article.title}</h1>
|
2024-08-18 20:12:27 +02:00
|
|
|
</hgroup>
|
2024-09-10 17:29:57 +02:00
|
|
|
{#if article.cover_image}
|
|
|
|
|
<img src="{apiUrl}/rpc/retrieve_file?id={article.cover_image}" alt="" />
|
2024-08-18 19:18:32 +02:00
|
|
|
{/if}
|
|
|
|
|
</div>
|
2024-08-17 19:29:10 +02:00
|
|
|
</header>
|
|
|
|
|
|
2024-09-10 17:29:57 +02:00
|
|
|
{#if article.main_content}
|
2024-08-20 19:17:05 +02:00
|
|
|
<main>
|
|
|
|
|
<div class="container">
|
2024-09-10 17:29:57 +02:00
|
|
|
{@html md(article.main_content)}
|
2024-08-20 19:17:05 +02:00
|
|
|
</div>
|
|
|
|
|
</main>
|
|
|
|
|
{/if}
|
2024-08-17 19:29:10 +02:00
|
|
|
|
2024-09-10 17:29:57 +02:00
|
|
|
<Footer {websiteOverview} isIndexPage={false} />
|