verbesserte Copy

This commit is contained in:
2026-07-26 23:16:29 +02:00
parent c7c1864fc6
commit 50c0f33dd7
26 changed files with 1476 additions and 142 deletions

View File

@@ -38,6 +38,20 @@ export function SeoHero({
{copy.hero.ctaSecondary}
</a>
</div>
<ul className="mt-6 flex flex-wrap gap-x-5 gap-y-2 seo-fade seo-fade-3">
{profile.timeCue && (
<li className="flex items-center gap-2 text-sm text-on-surface-variant">
<SeoIcon name="check_circle" className="w-4 h-4 shrink-0 text-primary" />
<span>{profile.timeCue}</span>
</li>
)}
{copy.hero.trustChips.map((chip) => (
<li key={chip} className="flex items-center gap-2 text-sm text-on-surface-variant">
<SeoIcon name="check_circle" className="w-4 h-4 shrink-0 text-primary" />
<span>{chip}</span>
</li>
))}
</ul>
<div className="mt-12 grid grid-cols-2 gap-6 pt-8 border-t border-surface-container-high seo-fade seo-fade-3">
<div>
<div className="font-display text-2xl font-semibold text-primary mb-1">{copy.hero.stat1Title}</div>
@@ -52,7 +66,11 @@ export function SeoHero({
<div className="lg:col-span-6 flex justify-center items-center seo-fade seo-fade-2">
<div className="relative w-full max-w-[320px] md:max-w-[380px] h-[550px] md:h-[650px] rounded-3xl overflow-hidden shadow-2xl border-[8px] border-surface-container">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img alt={copy.hero.imageAlt} className="w-full h-full object-cover" src="/hero.jpg" />
<img
alt={profile.heroImageAlt ?? copy.hero.imageAlt}
className="w-full h-full object-cover"
src={profile.heroImage ?? '/hero.jpg'}
/>
<div className="absolute bottom-6 left-1/2 -translate-x-1/2 w-[90%] bg-surface/95 backdrop-blur p-4 rounded-xl border border-surface-container-highest flex items-center gap-3 shadow-xl">
<div className="w-1.5 h-8 bg-primary rounded-full"></div>
<div>
@@ -71,11 +89,9 @@ export function SeoAdvantage({
copy,
showInsights = false,
}: SectionProps & { showInsights?: boolean }) {
const reviewedAt = {
de: 'Juli 2026',
en: 'July 2026',
es: 'Julio 2026',
}[profile.locale ?? 'en']
// Echtes Prüfdatum aus dem Profil. Kein globales Datum — eine Seite, die seit
// April unverändert ist, darf kein aktuelleres Datum behaupten.
const reviewedAt = profile.lastUpdated
return (
<section className={`max-w-[1200px] mx-auto px-6 py-16 grid grid-cols-1 ${showInsights ? 'lg:grid-cols-3' : ''} gap-12 border-t border-surface-container-high`} id="advantage">
@@ -221,6 +237,29 @@ export function SeoContentSections({ profile }: { profile: SeoPageProfile }) {
)
}
export function SeoOfferBlock({ profile }: { profile: SeoPageProfile }) {
if (!profile.offer) return null
const { eyebrow, title, body, terms, ctaLabel } = profile.offer
return (
<section className="max-w-[1200px] mx-auto px-6 py-16">
<div className="bg-surface rounded-2xl p-8 md:p-12 border border-surface-container-high shadow-sm">
<span className="text-xs font-semibold tracking-[0.1em] uppercase text-primary block mb-4">{eyebrow}</span>
<h2 className="font-display font-semibold text-2xl md:text-3xl text-primary mb-4 max-w-[26ch]">{title}</h2>
<p className="font-body text-on-surface-variant leading-relaxed mb-6 max-w-[60ch]">{body}</p>
<a
className="inline-flex justify-center items-center px-8 py-3 bg-ink text-white rounded-full font-bold shadow-lg hover:bg-ink-soft transition-colors duration-300"
href="#download"
>
{ctaLabel}
</a>
<p className="font-body text-sm text-on-surface-variant mt-5 max-w-[60ch]">{terms}</p>
</div>
</section>
)
}
export function SeoBestFit({ profile, copy }: SectionProps) {
return (
<section className="max-w-[1200px] mx-auto px-6 py-16 grid grid-cols-1 md:grid-cols-2 gap-8">