Files
OpenFrame/app/(marketing)/[slug]/page.tsx
T
yusufipk 56fb7403cf fix: resolve CI lint and formatting failures.
Replace internal anchor tags with Next.js Link components and format the marketing comparison route page.
2026-06-14 16:42:27 +02:00

56 lines
1.6 KiB
TypeScript

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<Metadata> {
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(/</g, '\\u003c');
return (
<>
<script type="application/ld+json" dangerouslySetInnerHTML={{ __html: safeStructuredData }} />
<ComparisonPage page={page} isLoggedIn={Boolean(session?.user)} />
</>
);
}