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:
1 parent
a4581d3467
commit
1fa8ca246a
33 files changed
+22
-107
No files matched your search
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
Reference in new issue
Block a user