import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { CtaBand, PageHero, PointList, ShotFrame } from "@/components/marketing/blocks"; import { FEATURE_PAGES, FEATURE_SLUGS, isFeatureSlug } from "@/lib/marketing/pages"; /** Detailseite eines Moduls — Inhalt aus `marketing.pages.`, Bilder aus public/marketing. */ type Props = { params: Promise<{ slug: string }> }; export function generateStaticParams() { return FEATURE_SLUGS.map((slug) => ({ slug })); } export async function generateMetadata({ params }: Props): Promise { const { slug } = await params; if (!isFeatureSlug(slug)) return {}; const t = await getTranslations("marketing"); return { title: t(`pages.${slug}.title`), description: t(`pages.${slug}.lead`) }; } export default async function FeatureDetailPage({ params }: Props) { const { slug } = await params; if (!isFeatureSlug(slug)) notFound(); const page = FEATURE_PAGES[slug]; const t = await getTranslations("marketing"); const points = Array.from({ length: page.points }, (_, i) => t(`pages.${slug}.p${i + 1}`)); const cards = Array.from({ length: page.cards }, (_, i) => ({ title: t(`pages.${slug}.c${i + 1}title`), text: t(`pages.${slug}.c${i + 1}text`), })); const [first, second] = page.shots; return ( <>

{t(`pages.${slug}.title`)}

    {cards.map((c) => (
  • {c.title}

    {c.text}

  • ))}
{second && (
)} ); }