Fix legal-page autolink color, add Blog breadcrumb, revert breadcrumb color

- RichText.tsx: Lexical's auto-detected "autolink" nodes (a typed-out
  email/URL, as opposed to an editor-inserted link) fell through to
  Payload's unstyled default converter — only "link" was overridden.
  AGB's Vertragspartner email rendered as plain black text because of
  this. Both node types now get the same text-brand/hover:underline
  treatment.
- Breadcrumb color revert: the breadcrumb Startseite links across the
  4 legal pages/shop should stay their original hover:text-brand
  treatment — only the actual content/contact links needed the
  always-brand-colored style, not page-level breadcrumbs.
- /blog was the one page missing both a breadcrumb and the
  text-h-feature heading size every other section page (/shop, legal
  pages) already uses — added to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018unaXmuzVA8ct1b6WoyP1U
This commit is contained in:
Marco
2026-07-31 22:50:48 +00:00
parent 7c26bf7b7c
commit b88a8edd35
6 changed files with 25 additions and 5 deletions
+1 -1
View File
@@ -27,7 +27,7 @@ export default async function AgbPage() {
<main className="flex flex-col flex-1 bg-bg-base">
<Reveal className="flex flex-col gap-3 items-start pb-6 pt-10 px-[var(--layout-padding-x)] w-full">
<p className="flex items-center gap-2 text-body-sm text-text-muted">
<Link href="/" className="text-brand hover:underline">Startseite</Link>
<Link href="/" className="hover:text-brand transition-colors">Startseite</Link>
<span></span>
<span className="text-text-primary">AGB</span>
</p>
+11 -1
View File
@@ -66,8 +66,18 @@ export default async function BlogOverviewPage({
hero-fade-left/hero-fade-bottom overlays (node 4577:330). */}
<Reveal className="relative flex flex-col sm:flex-row items-center w-full min-h-[20rem] sm:min-h-[27.5rem] border-b border-border overflow-hidden">
<div className="relative z-10 flex flex-col gap-4 items-start px-[var(--layout-padding-x)] py-10 sm:py-0 w-full sm:w-auto sm:max-w-[26rem]">
{/* Breadcrumb + text-h-feature heading — same treatment as
/shop's ShopHeader.tsx and every legal page, this hero was
the one page missing both (its own bespoke photo-bleed
layout predates that convention being established
elsewhere). */}
<p className="flex items-center gap-2 text-body-sm text-text-muted">
<Link href="/" className="hover:text-brand transition-colors">Startseite</Link>
<span></span>
<span className="text-text-primary">Blog</span>
</p>
<p
className="font-semibold text-display text-text-primary"
className="font-semibold text-h-feature text-text-primary"
style={{ fontFamily: "var(--font-lora)" }}
>
Blog
+10
View File
@@ -160,6 +160,16 @@ function buildConverters(quoteLabel: string): JSXConvertersFunction {
{nodesToJSX({ nodes: node.children })}
</a>
),
// Lexical auto-detects a typed-out URL/email as its own "autolink" node,
// distinct from an editor-inserted "link" node — falls through to
// Payload's unstyled default converter without this, which is why the
// Impressum/AGB's typed-in-place mailto addresses rendered as plain
// black text instead of matching every editor-inserted link.
autolink: ({ node, nodesToJSX }) => (
<a href={node.fields?.url ?? "#"} className="text-brand hover:underline">
{nodesToJSX({ nodes: node.children })}
</a>
),
// Lexical's native blockquote feature — used by every post written
// before Blocks existed. Kept working exactly as before (own comment on
// Posts.ts's `content` field editor config on why this stays enabled
+1 -1
View File
@@ -26,7 +26,7 @@ export default async function DatenschutzPage() {
<main className="flex flex-col flex-1 bg-bg-base">
<Reveal className="flex flex-col gap-3 items-start pb-6 pt-10 px-[var(--layout-padding-x)] w-full">
<p className="flex items-center gap-2 text-body-sm text-text-muted">
<Link href="/" className="text-brand hover:underline">Startseite</Link>
<Link href="/" className="hover:text-brand transition-colors">Startseite</Link>
<span></span>
<span className="text-text-primary">Datenschutz</span>
</p>
+1 -1
View File
@@ -29,7 +29,7 @@ export default async function ImpressumPage() {
<main className="flex flex-col flex-1 bg-bg-base">
<Reveal className="flex flex-col gap-3 items-start pb-6 pt-10 px-[var(--layout-padding-x)] w-full">
<p className="flex items-center gap-2 text-body-sm text-text-muted">
<Link href="/" className="text-brand hover:underline">Startseite</Link>
<Link href="/" className="hover:text-brand transition-colors">Startseite</Link>
<span></span>
<span className="text-text-primary">Impressum</span>
</p>
+1 -1
View File
@@ -27,7 +27,7 @@ export default async function WiderrufPage() {
<main className="flex flex-col flex-1 bg-bg-base">
<Reveal className="flex flex-col gap-3 items-start pb-6 pt-10 px-[var(--layout-padding-x)] w-full">
<p className="flex items-center gap-2 text-body-sm text-text-muted">
<Link href="/" className="text-brand hover:underline">Startseite</Link>
<Link href="/" className="hover:text-brand transition-colors">Startseite</Link>
<span></span>
<span className="text-text-primary">Widerruf</span>
</p>