From b60da59c924534f5466a99ecc900409fa59454b2 Mon Sep 17 00:00:00 2001 From: Peter Meier Date: Sat, 11 Jul 2026 23:48:23 +0200 Subject: [PATCH] feat(headline): optionaler SectionHeader-Modus (kicker/number/action) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HeadlineBlock rendert als SectionHeader sobald kicker oder action gesetzt ist, sonst schlichte Text-Headline wie bisher (rückwärtskompatibel, opt-in). SectionHeader-Titel unterstützt jetzt \n →
. headline-Schema extends section_header. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/lib/block-types.ts | 6 ++++ src/lib/components/SectionHeader.svelte | 4 +-- .../blocks/HeadlineBlock.stories.ts | 12 +++++++ .../components/blocks/HeadlineBlock.svelte | 34 +++++++++++++++---- 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/lib/block-types.ts b/src/lib/block-types.ts index cc6add3..fe83350 100644 --- a/src/lib/block-types.ts +++ b/src/lib/block-types.ts @@ -45,6 +45,12 @@ export interface HeadlineBlockData { _slug?: string; tag?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6"; text?: string; + /** SectionHeader: Label über dem Titel (uppercase). Gesetzt → Headline rendert als Sektionskopf. */ + kicker?: string; + /** SectionHeader: Index vor dem Kicker, z.B. "03". */ + number?: string; + /** SectionHeader: CTA-Link (aufgelöst: url, linkName). */ + action?: string | { url?: string; linkName?: string; newTab?: boolean }; align?: "left" | "center" | "right"; layout?: BlockLayout; } diff --git a/src/lib/components/SectionHeader.svelte b/src/lib/components/SectionHeader.svelte index f64c3ff..0637c65 100644 --- a/src/lib/components/SectionHeader.svelte +++ b/src/lib/components/SectionHeader.svelte @@ -51,9 +51,9 @@ {/if} - + - {title} + {#each title.split('\n') as line, i}{#if i > 0}
{/if}{line}{/each}
{#if subtitle} diff --git a/src/lib/components/blocks/HeadlineBlock.stories.ts b/src/lib/components/blocks/HeadlineBlock.stories.ts index af7a9e7..b947c85 100644 --- a/src/lib/components/blocks/HeadlineBlock.stories.ts +++ b/src/lib/components/blocks/HeadlineBlock.stories.ts @@ -36,3 +36,15 @@ export const MitUmbruch: Story = { }, }, }; + +// Sobald kicker/action gesetzt → Headline rendert als SectionHeader. +export const AlsSektionskopf: Story = { + args: { + block: { + tag: 'h2', + text: 'Wir sind keine Lobby,\nkeine Partei, keine NGO.', + kicker: 'Über uns', + action: { url: '/about', linkName: 'Mehr über uns' }, + }, + }, +}; diff --git a/src/lib/components/blocks/HeadlineBlock.svelte b/src/lib/components/blocks/HeadlineBlock.svelte index f20a2da..3867dd2 100644 --- a/src/lib/components/blocks/HeadlineBlock.svelte +++ b/src/lib/components/blocks/HeadlineBlock.svelte @@ -1,10 +1,21 @@
- - {#each lines as line, i}{#if i > 0}
{/if}{line}{/each} -
+ {#if useSection} + + {:else} + + {#each lines as line, i}{#if i > 0}
{/if}{line}{/each} +
+ {/if}