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) <noreply@anthropic.com>
This commit is contained in:
Peter Meier
2026-07-01 15:19:38 +02:00
parent 3908c117df
commit f7529d3b47
3 changed files with 34 additions and 5 deletions
@@ -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}
>
<div
class="gradient-blob-bg bg-gray-50 py-2.5"
class="gradient-blob-bg {styles.bar} py-2.5"
>
<div class="container-custom flex items-center gap-x-6">
<p class="my-0! flex-1 text-sm/6 text-gray-900">
<p class="my-0! flex-1 text-sm/6 {styles.text}">
{sentence}{#if countdownStr}{sentence ? " · " : ""}<span
class="font-semibold">{countdownStr}</span
>{/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}&nbsp;<Icon
icon="lucide:arrow-right"
@@ -146,7 +160,7 @@
<span class="sr-only">Schließen</span>
<Icon
icon="lucide:x"
class="size-5 text-gray-900"
class="size-5 {styles.text}"
aria-hidden="true"
/>
</button>