From f7529d3b472bc58e25bb2f94581507e91133c385 Mon Sep 17 00:00:00 2001 From: Peter Meier Date: Wed, 1 Jul 2026 15:19:38 +0200 Subject: [PATCH] feat(frist): Deadline-Countdown site-weit + variant-Styling (urgent=rot) - DeadlineBannerBlock: Farbe nach variant (urgent rot / accent / info / default) - Layout: deadline-banner-auslegung-2026 site-weit im Bootstrap geladen + oben gerendert (vorher nur auf /regionalplan) - page-regionalplan: inline-Banner entfernt (kein Doppel), Content folgt separat Co-Authored-By: Claude Opus 4.8 (1M context) --- .../blocks/DeadlineBannerBlock.svelte | 22 +++++++++++++++---- src/routes/+layout.server.ts | 13 ++++++++++- src/routes/+layout.svelte | 4 ++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/lib/components/blocks/DeadlineBannerBlock.svelte b/src/lib/components/blocks/DeadlineBannerBlock.svelte index 2fdfc73..23b76a5 100644 --- a/src/lib/components/blocks/DeadlineBannerBlock.svelte +++ b/src/lib/components/blocks/DeadlineBannerBlock.svelte @@ -9,6 +9,20 @@ const layoutClasses = $derived(getBlockLayoutClasses(block.layout)); const showCountdown = $derived(block.showCountdown !== false); + // Farbgebung nach variant — "urgent" fällt auf (rot), damit die Frist wirkt. + const styles = $derived.by(() => { + switch (block.variant) { + case "urgent": + return { bar: "bg-fire-600", text: "text-white", link: "text-white hover:text-white/80" }; + case "accent": + return { bar: "bg-himmel-100", text: "text-himmel-900", link: "text-himmel-900 hover:text-himmel-700" }; + case "info": + return { bar: "bg-wald-50", text: "text-wald-900", link: "text-wald-900 hover:text-wald-700" }; + default: + return { bar: "bg-gray-50", text: "text-gray-900", link: "text-gray-900 hover:text-gray-700" }; + } + }); + let dismissed = $state(false); type ResolvedItem = { @@ -116,10 +130,10 @@ data-block-slug={block._slug} >
-

+

{sentence}{#if countdownStr}{sentence ? " · " : ""}{countdownStr}{/if}{#if href} @@ -127,7 +141,7 @@ {href} target={newTab ? "_blank" : undefined} rel={newTab ? "noopener noreferrer" : undefined} - class="font-semibold whitespace-nowrap text-gray-900 hover:text-gray-700" + class="font-semibold whitespace-nowrap {styles.link}" > {ctaLabel} Schließen

+ {#if data.deadlineBanner} + + {/if} {#if data.announcementBanner} {/if}