Initial SvelteKit frontend port of windwiderstand.de
Deploy / verify (push) Failing after 32s
Deploy / deploy (push) Has been skipped

Full parity with Astro site: content rows, post/tag routes, pagination,
event badges + OSM map, comments, Live-Search via /api/search-index,
CMS image proxy, RSS, sitemap.

Deploy: Dockerfile + docker-compose.prod.yml + Gitea Actions workflow
to build + push to git.pm86.de registry and ssh-deploy to Contabo.
This commit is contained in:
Peter Meier
2026-04-17 22:01:30 +02:00
parent 852cef0980
commit 2fef91a548
137 changed files with 28585 additions and 0 deletions
@@ -0,0 +1,37 @@
<script lang="ts">
import { getBlockLayoutClasses } from "$lib/block-layout";
import type { LinkListBlockData } from "$lib/block-types";
let { block }: { block: LinkListBlockData } = $props();
const layoutClasses = $derived(
block.layout ? getBlockLayoutClasses(block.layout) : "col-span-12 mb-4",
);
const links = $derived(block.links ?? []);
</script>
<div class={layoutClasses} data-block-type="link_list" data-block-slug={block._slug}>
{#if block.headline}
<h3 class="mb-2 font-semibold text-zinc-900">{block.headline}</h3>
{/if}
<ul class="list-disc space-y-1 pl-5">
{#each links as link}
{#if typeof link === "object" && link !== null && "url" in link}
<li>
<a
href={(link as { url?: string }).url ?? "#"}
class="underline text-green-700 hover:text-green-800"
target={(link as { newTab?: boolean }).newTab ? "_blank" : undefined}
rel={(link as { newTab?: boolean }).newTab ? "noopener noreferrer" : undefined}
>
{(link as { linkName?: string }).linkName ?? (link as { url?: string }).url}
</a>
</li>
{:else}
<li>
<span class="text-zinc-500">{typeof link === "string" ? link : "Link"}</span>
</li>
{/if}
{/each}
</ul>
</div>