import type { ReactNode } from "react"; import { Breadcrumbs, type Crumb } from "@/components/Breadcrumbs"; import { OrganicBlob } from "@/components/OrganicBlob"; import { JsonLd, breadcrumbJsonLd } from "@/lib/seo/jsonld"; import { getSiteUrl } from "@/lib/seo/config"; type PageHeaderProps = { eyebrow?: string; title: string; lead?: ReactNode; crumbs?: Crumb[]; }; /** Renders the visual breadcrumb trail AND its matching BreadcrumbList JSON-LD from the same `crumbs` — every page that already passes `crumbs` gets structured breadcrumb data for free. */ export async function PageHeader({ eyebrow, title, lead, crumbs }: PageHeaderProps) { const breadcrumbData = crumbs?.length ? await (async () => { const siteUrl = await getSiteUrl(); const items = [ { name: "Startseite", url: siteUrl }, ...crumbs.map((crumb) => ({ name: crumb.title, url: crumb.href ? `${siteUrl}${crumb.href}` : undefined })), ]; return breadcrumbJsonLd(items); })() : null; return (
{breadcrumbData && } {crumbs && } {eyebrow && (

{eyebrow}

)}

{title}

{lead && (
{lead}
)}
); }