refactor(ui): Kicker-Zeilen ueber Ueberschriften entfernt

Jede zweite Ueberschrift trug eine kleine Versalien-Zeile mit Wabenpunkt
("• STIMMEN", "• AKTUELL VERFUEGBAR", "• KUNDENKONTO" ...). Auf 29 Seiten
und Abschnitten wiederholt las sich das wie eine Vorlage. SectionHeading
rendert sie nicht mehr, die Prop ist entfernt; die Ueberschrift traegt den
Abschnitt allein.

Die eyebrow-Texte, die weiterhin als Seitentitel, Bildbeschriftung oder
Breadcrumb dienen, bleiben; 18 danach ungenutzte Eintraege sind aus Typ und
beiden Woerterbuechern entfernt.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-09-26 01:41:48 +02:00
1 parent a4581d3467
commit 1fa8ca246a
33 files changed
+22 -107

No files matched your search

-3
View File
@@ -22,7 +22,6 @@ export async function CurrentHarvest({
<Container>
<ScrollReveal>
<SectionHeading
eyebrow={t.home.currentHarvest.eyebrow}
title={t.home.currentHarvest.title}
subtitle={t.home.currentHarvest.subtitle}
/>
@@ -72,7 +71,6 @@ export async function OriginStory() {
</ScrollReveal>
<ScrollReveal delay={0.1}>
<SectionHeading
eyebrow={t.home.originStory.eyebrow}
title={t.home.originStory.title}
/>
<p className="mt-6 text-ink/75 leading-relaxed">{content["home.originStory.paragraph1"]}</p>
@@ -104,7 +102,6 @@ export async function Philosophy() {
<Container>
<ScrollReveal>
<SectionHeading
eyebrow={t.home.philosophy.eyebrow}
title={t.home.philosophy.title}
align="center"
className="mx-auto"
+1 -5
View File
@@ -19,7 +19,6 @@ export async function ProcessTimeline() {
<Container>
<ScrollReveal>
<SectionHeading
eyebrow={t.home.processTimeline.eyebrow}
title={t.home.processTimeline.title}
align="center"
className="mx-auto"
@@ -47,7 +46,6 @@ export async function RegionalSection() {
<Container className="grid md:grid-cols-2 gap-16 lg:gap-24 items-center">
<ScrollReveal className="order-2 md:order-1">
<SectionHeading
eyebrow={t.home.regionalSection.eyebrow}
title={t.home.regionalSection.title}
/>
<p className="mt-6 text-ink/75 leading-relaxed">{content["home.regionalSection.paragraph1"]}</p>
@@ -90,7 +88,7 @@ export async function Sustainability() {
<Container className="grid gap-12 lg:grid-cols-12 lg:gap-16">
<ScrollReveal className="lg:col-span-5">
<div className="lg:sticky lg:top-32">
<SectionHeading eyebrow={t.home.sustainability.eyebrow} title={t.home.sustainability.title} />
<SectionHeading title={t.home.sustainability.title} />
</div>
</ScrollReveal>
<ul className="divide-y divide-ink/10 border-y border-ink/10 lg:col-span-7">
@@ -137,7 +135,6 @@ export async function BusinessTeaser() {
</ScrollReveal>
<ScrollReveal delay={0.1}>
<SectionHeading
eyebrow={t.home.businessTeaser.eyebrow}
title={t.home.businessTeaser.title}
/>
<p className="mt-6 text-ink/75 leading-relaxed">{content["home.businessTeaser.paragraph"]}</p>
@@ -174,7 +171,6 @@ export async function Reviews() {
<Container className="relative">
<ScrollReveal>
<SectionHeading
eyebrow={t.home.reviews.eyebrow}
title={t.home.reviews.title}
align="center"
className="mx-auto"
-1
View File
@@ -60,7 +60,6 @@ export function NewsletterSignup({ turnstileSiteKey }: { turnstileSiteKey?: stri
<HoneycombPattern className="text-honey/25" size={24} />
<div className="relative mx-auto max-w-2xl">
<SectionHeading
eyebrow={t.home.newsletter.eyebrow}
title={t.home.newsletter.title}
align="center"
className="mx-auto"
+5 -14
View File
@@ -1,6 +1,6 @@
import Link from "next/link";
import type { ComponentPropsWithoutRef, ReactNode } from "react";
import { HexMark, HoneycombPattern } from "@/components/honeycomb";
import { HoneycombPattern } from "@/components/honeycomb";
export function Container({
id,
@@ -82,7 +82,6 @@ export function Button({
}
export function SectionHeading({
eyebrow,
title,
subtitle,
align = "left",
@@ -90,14 +89,13 @@ export function SectionHeading({
level = "h2",
tone = "default",
}: {
eyebrow?: string;
title: string;
subtitle?: string;
align?: "left" | "center";
className?: string;
/** "h1" fuer Seiten, auf denen diese Komponente die einzige/primaere Ueberschrift ist (SEO-Heading-Hierarchie). Default h2, da die meisten Verwendungen einzelne Abschnitte innerhalb einer Seite mit eigenem h1 sind. */
level?: "h1" | "h2";
/** "inverted" fuer Abschnitte auf dunklem Grund (z.B. bg-forest) — steuert die Eyebrow-Farbe fuer ausreichenden Kontrast. */
/** "inverted" fuer Abschnitte auf dunklem Grund (z.B. bg-forest) — helle Ueberschrift und Untertitel. */
tone?: "default" | "inverted";
}) {
const Heading = level;
@@ -105,16 +103,9 @@ export function SectionHeading({
<div
className={`${align === "center" ? "text-center mx-auto" : "text-left"} max-w-2xl ${className}`}
>
{eyebrow ? (
<p
className={`flex items-center gap-2 tracking-wide-caps text-xs mb-4 ${
align === "center" ? "justify-center" : ""
} ${tone === "inverted" ? "text-honey-light" : "text-honey-dark"}`}
>
<HexMark className="h-2.5 w-2.5 flex-shrink-0" />
{eyebrow}
</p>
) : null}
{/* Bewusst ohne Kicker-Zeile ("• STIMMEN") ueber der Ueberschrift: auf
jeder Ueberschrift wiederholt wirkte das wie eine Vorlage. Die
Ueberschrift traegt den Abschnitt allein. */}
<Heading
className={`text-4xl md:text-5xl leading-[1.05] tracking-[-0.01em] ${
tone === "inverted" ? "text-cream" : "text-forest"