import Link from 'next/link' import SeoIcon, { type SeoIconName } from '@/components/seo/SeoIcon' import type { SeoPageProfile } from '@/lib/seoPages' import type { SeoTemplateCopy } from '@/lib/seoTemplateCopy' interface SectionProps { profile: SeoPageProfile copy: SeoTemplateCopy } export function SeoHero({ profile, copy, secondaryHref = '#methodology', }: SectionProps & { secondaryHref?: string }) { return (
{copy.hero.eyebrow}

{profile.h1}

{profile.tagline}

{profile.directAnswer}

{copy.hero.ctaPrimary} {copy.hero.ctaSecondary}
{copy.hero.stat1Title}
{copy.hero.stat1Label}
{copy.hero.stat2Title}
{copy.hero.stat2Label}
{/* eslint-disable-next-line @next/next/no-img-element */} {profile.heroImageAlt
{copy.hero.floatTitle}
{copy.hero.floatLabel}
) } export function SeoAdvantage({ profile, copy, showInsights = false, }: SectionProps & { showInsights?: boolean }) { // 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 (
{copy.advantage.eyebrow}

{copy.advantage.heading}

{profile.definitionBlock}

{copy.advantage.updated}: {reviewedAt}
{showInsights &&

{copy.didYouKnow.title}

}
) } export function SeoMethodology({ copy, intent = 'identification', }: { copy: SeoTemplateCopy intent?: 'identification' | 'diagnosis' }) { const methodology = intent === 'diagnosis' ? copy.diagnosisMethodology : copy.methodology return (
{methodology.eyebrow}

{methodology.title}

{methodology.lead}

{methodology.steps.map((step, index) => (
{index + 1}

{step.title}

{step.body}

))}
) } const comparisonIcons: SeoIconName[] = ['check_circle', 'calendar', 'healing', 'sun'] export function SeoComparison({ profile, copy, intent = 'identification', }: SectionProps & { intent?: 'identification' | 'diagnosis' | 'care' | 'watering' }) { const tipLink = profile.relatedLinks[0] return (
{copy.comparison.eyebrow}

{profile.featureTable.title}

{copy.comparison.intentLead[intent]}

{tipLink && (

{copy.comparison.tipTitle}

{copy.comparison.tipBody}

{tipLink.label} →
)}
{profile.featureTable.rows.map((row, index) => (

{row.feature}

{copy.comparison.greenlens}

{row.greenlens}

{profile.featureTable.alternativeLabel}

{row.alternative}

))}
) } export function SeoContentSections({ profile }: { profile: SeoPageProfile }) { if (!profile.contentSections || profile.contentSections.length === 0) return null return (
{profile.contentSections.map((section) => (
{section.eyebrow}

{section.title}

{section.body}

{section.bullets && (
    {section.bullets.map((item) => (
  • {item}
  • ))}
)}
))}
) } export function SeoOfferBlock({ profile }: { profile: SeoPageProfile }) { if (!profile.offer) return null const { eyebrow, title, body, terms, ctaLabel } = profile.offer return (
{eyebrow}

{title}

{body}

{ctaLabel}

{terms}

) } export function SeoBestFit({ profile, copy }: SectionProps) { return (
{copy.bestFit.chooseTag}

{copy.bestFit.chooseTitle}

{copy.bestFit.notTag}

{copy.bestFit.notTitle}

) } export function SeoFaq({ profile, copy }: SectionProps) { return (

{copy.faq.title}

{profile.faqs.map((item) => (

{item.question}

{item.answer}

))}
) } export function SeoRelated({ profile, copy }: SectionProps) { if (profile.relatedLinks.length === 0) return null return (
{copy.related.tag}

{copy.related.title}

{profile.relatedLinks.map((link) => (

{link.label}

{link.description}

))}
) }