import type { Metadata } from "next"; import { PageHeader } from "@/components/PageHeader"; import { Section, SectionHeading } from "@/components/Section"; import { ContactForm } from "@/components/ContactForm"; import { AngebotCard } from "@/components/AngebotCard"; import { Reveal } from "@/components/Reveal"; import { getBookingGlobal, getContactGlobal, getSEOSettingsGlobal } from "@/lib/payload/globals"; import { getOffers } from "@/lib/payload/content"; import { moodForOffer } from "@/lib/angebote"; import { mediaUrl } from "@/lib/payload/media"; import { resolveSeo } from "@/lib/seo/resolve"; import { buildMetadata } from "@/lib/seo/metadata"; import { getSiteUrl } from "@/lib/seo/config"; import { JsonLd, webPageJsonLd } from "@/lib/seo/jsonld"; import { siteConfig } from "@/lib/site"; export const dynamic = "force-dynamic"; const FALLBACK_DESCRIPTION = "Kennenlernen & Termine vereinbaren."; export async function generateMetadata(): Promise { const [booking, seoSettings] = await Promise.all([getBookingGlobal(), getSEOSettingsGlobal()]); const resolved = resolveSeo({ seo: booking.seo, fallbackTitle: `Termin buchen – ${siteConfig.name}`, fallbackDescription: () => booking.lead || seoSettings.defaultDescription || FALLBACK_DESCRIPTION, defaultOgImage: seoSettings.defaultOgImage, }); return buildMetadata({ title: resolved.title, description: resolved.description, path: "/termin-buchen", ogImageUrl: resolved.ogImageUrl, keywords: resolved.keywords, }); } export default async function TerminBuchenPage() { const [booking, contact, offers] = await Promise.all([getBookingGlobal(), getContactGlobal(), getOffers()]); const bookableOffers = offers.filter((offer) => offer.bookable); const siteUrl = await getSiteUrl(); return ( <> {bookableOffers.length > 0 && (
{bookableOffers.map((offer, i) => ( ))}
)} {booking.steps && booking.steps.length > 0 && (
{booking.steps.map((s, i) => (

{String(i + 1).padStart(2, "0")}

{s.title}

{s.text}

))}
)}
0 ? "Für einen konkreten Termin wähle oben ein Angebot — hier kannst du auch einfach eine allgemeine Nachricht schreiben." : undefined } align="left" />
{booking.formNote && (

{booking.formNote}

)}
); }