import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { PageHeader } from "@/components/PageHeader"; import { Section } from "@/components/Section"; import { ImagePlaceholder } from "@/components/ImagePlaceholder"; import { RichText } from "@/components/RichText"; import { CTA } from "@/components/CTA"; import { BookingWidget } from "@/components/booking/BookingWidget"; import { getOfferBySlug } from "@/lib/payload/content"; import { moodForOffer } from "@/lib/angebote"; import { mediaAlt, mediaUrl } from "@/lib/payload/media"; import { OFFER_CATEGORIES } from "@/collections/Offers"; import { getCurrentCustomer } from "@/lib/auth/customer"; export const dynamic = "force-dynamic"; type Args = { params: Promise<{ slug: string }> }; export async function generateMetadata({ params }: Args): Promise { const { slug } = await params; const offer = await getOfferBySlug(slug); if (!offer) return {}; return { title: offer.title, description: offer.shortDescription, }; } export default async function OfferDetailPage({ params }: Args) { const { slug } = await params; const offer = await getOfferBySlug(slug); if (!offer) notFound(); const categoryLabel = OFFER_CATEGORIES.find((c) => c.value === offer.category)?.label; const customer = offer.bookable ? await getCurrentCustomer() : null; return ( <>
{(offer.price || offer.durationMinutes) && (
{offer.price && (
Preis {offer.price}
)} {offer.durationMinutes && (
Dauer {offer.durationMinutes} Minuten
)}
)}
{offer.bookable ? (

Termin auswählen

) : ( )} ); }