diff --git a/app/(marketing)/[slug]/page.tsx b/app/(marketing)/[slug]/page.tsx new file mode 100644 index 0000000..d62d136 --- /dev/null +++ b/app/(marketing)/[slug]/page.tsx @@ -0,0 +1,58 @@ +import type { Metadata } from 'next'; +import { notFound } from 'next/navigation'; +import { ComparisonPage } from '@/components/marketing/comparison-page'; +import { auth } from '@/lib/auth'; +import { comparisonPages, getComparisonPage } from '@/lib/marketing/comparison-pages'; +import { buildComparisonJsonLd, buildComparisonMetadata } from '@/lib/marketing/metadata'; + +interface MarketingSlugPageProps { + params: Promise<{ slug: string }>; +} + +export function generateStaticParams() { + return comparisonPages.map((page) => ({ slug: page.slug })); +} + +export async function generateMetadata({ params }: MarketingSlugPageProps): Promise { + const { slug } = await params; + const page = getComparisonPage(slug); + + if (!page) { + return {}; + } + + return buildComparisonMetadata({ + title: page.title, + description: page.metaDescription, + path: `/${page.slug}`, + keywords: page.keywords, + }); +} + +export default async function MarketingSlugPage({ params }: MarketingSlugPageProps) { + const { slug } = await params; + const page = getComparisonPage(slug); + + if (!page) { + notFound(); + } + + const session = await auth(); + const structuredData = buildComparisonJsonLd({ + title: page.title, + description: page.metaDescription, + path: `/${page.slug}`, + faq: page.faq, + }); + const safeStructuredData = JSON.stringify(structuredData).replace(/ +