fix(ui): roter NEU-Badge, separate Nav-Pills, Footer-Headlines + Spalten
- AnnouncementBanner: führendes **bold** rendert als roter Pill-Badge - Header: Kalender/Adressbuch/Suche je eigene Pill statt geteiltem Container - LinkListBlock: uppercase raus, >4 Links → 4er-Spalten ab sm Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
{#if banner?.text}
|
{#if banner?.text}
|
||||||
<div class="w-full bg-wald-600 text-white print:hidden" role="note" style="font-size: 0.7rem;">
|
<div class="w-full bg-wald-600 text-white print:hidden" role="note" style="font-size: 0.7rem;">
|
||||||
<div class="container-custom flex items-center gap-3 py-2 md:justify-center md:text-center">
|
<div class="container-custom flex items-center gap-3 py-2 md:justify-center md:text-center">
|
||||||
<span>{@html textHtml}</span>
|
<span class="banner-text">{@html textHtml}</span>
|
||||||
{#if banner.link}
|
{#if banner.link}
|
||||||
<a
|
<a
|
||||||
href={banner.link}
|
href={banner.link}
|
||||||
@@ -22,3 +22,21 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* Leading **bold** in the banner text renders as a red "NEU"-style badge. */
|
||||||
|
.banner-text :global(strong:first-child) {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 0.3em;
|
||||||
|
padding: 0.1em 0.5em;
|
||||||
|
border-radius: 9999px;
|
||||||
|
background: var(--color-fire-600);
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.85em;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.2;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.03em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -193,9 +193,7 @@
|
|||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
<div
|
<div class="ml-2 flex items-center gap-1.5">
|
||||||
class="ml-2 flex items-center gap-0.5 rounded-full border border-wald-700/15 bg-wald-700/8 px-2 py-1"
|
|
||||||
>
|
|
||||||
{#each socialLinks as social}
|
{#each socialLinks as social}
|
||||||
{@const isInternal = social.href.startsWith("/")}
|
{@const isInternal = social.href.startsWith("/")}
|
||||||
{@const sActive = isInternal && isActiveLink(social.href, $page.url.pathname)}
|
{@const sActive = isInternal && isActiveLink(social.href, $page.url.pathname)}
|
||||||
@@ -203,7 +201,7 @@
|
|||||||
href={social.href}
|
href={social.href}
|
||||||
target={isInternal ? undefined : "_blank"}
|
target={isInternal ? undefined : "_blank"}
|
||||||
rel={isInternal ? undefined : "noopener noreferrer"}
|
rel={isInternal ? undefined : "noopener noreferrer"}
|
||||||
class="px-1.5 py-0.5 rounded-full transition-opacity hover:opacity-70 inline-flex items-center gap-1.5 {sActive ? 'font-bold' : ''}"
|
class="rounded-full border border-wald-700/15 bg-wald-700/8 px-2.5 py-1 transition-opacity hover:opacity-70 inline-flex items-center gap-1.5 {sActive ? 'font-bold' : ''}"
|
||||||
aria-current={sActive ? "page" : undefined}
|
aria-current={sActive ? "page" : undefined}
|
||||||
aria-label={social.label || t(T.header_social_aria)}
|
aria-label={social.label || t(T.header_social_aria)}
|
||||||
title={social.label || t(T.header_social_aria)}
|
title={social.label || t(T.header_social_aria)}
|
||||||
@@ -216,7 +214,7 @@
|
|||||||
{/each}
|
{/each}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="px-1.5 py-0.5 rounded-full transition-opacity hover:opacity-70 inline-flex items-center justify-center"
|
class="rounded-full border border-wald-700/15 bg-wald-700/8 px-2.5 py-1 transition-opacity hover:opacity-70 inline-flex items-center justify-center"
|
||||||
aria-label={searchOpen
|
aria-label={searchOpen
|
||||||
? t(T.header_search_close)
|
? t(T.header_search_close)
|
||||||
: t(T.header_search_open)}
|
: t(T.header_search_open)}
|
||||||
|
|||||||
@@ -30,9 +30,15 @@
|
|||||||
|
|
||||||
<div class="link-list {layoutClasses}" data-block="LinkList" data-block-type="link_list" data-block-slug={block._slug}>
|
<div class="link-list {layoutClasses}" data-block="LinkList" data-block-type="link_list" data-block-slug={block._slug}>
|
||||||
{#if block.headline}
|
{#if block.headline}
|
||||||
<h3 class="mb-3 text-sm font-semibold tracking-wide uppercase">{block.headline}</h3>
|
<h3 class="mb-3 text-sm font-semibold">{block.headline}</h3>
|
||||||
{/if}
|
{/if}
|
||||||
<ul class={iconOnlyAll ? "flex flex-wrap gap-3" : "flex flex-col gap-1.5"}>
|
<ul
|
||||||
|
class={iconOnlyAll
|
||||||
|
? "flex flex-wrap gap-3"
|
||||||
|
: links.length > 4
|
||||||
|
? "grid grid-flow-row gap-x-8 gap-y-1.5 sm:grid-flow-col sm:grid-rows-4"
|
||||||
|
: "flex flex-col gap-1.5"}
|
||||||
|
>
|
||||||
{#each links as link}
|
{#each links as link}
|
||||||
{@const hasIcon = !!link.icon}
|
{@const hasIcon = !!link.icon}
|
||||||
{@const showText = link.showText !== false}
|
{@const showText = link.showText !== false}
|
||||||
|
|||||||
Reference in New Issue
Block a user