Version 3 of the kit: - Radix UI replaced with Base UI (using the Shadcn UI patterns) - next-intl replaces react-i18next - enhanceAction deprecated; usage moved to next-safe-action - main layout now wrapped with [locale] path segment - Teams only mode - Layout updates - Zod v4 - Next.js 16.2 - Typescript 6 - All other dependencies updated - Removed deprecated Edge CSRF - Dynamic Github Action runner
44 lines
965 B
TypeScript
44 lines
965 B
TypeScript
import { Metadata } from 'next';
|
|
import { notFound } from 'next/navigation';
|
|
|
|
import { loadPRDPageData } from '../_lib/server/prd-page.loader';
|
|
import { PRDDetailView } from './_components/prd-detail-view';
|
|
|
|
interface PRDPageProps {
|
|
params: Promise<{
|
|
filename: string;
|
|
}>;
|
|
}
|
|
|
|
export async function generateMetadata({
|
|
params,
|
|
}: PRDPageProps): Promise<Metadata> {
|
|
const { filename } = await params;
|
|
|
|
try {
|
|
const prd = await loadPRDPageData(filename);
|
|
|
|
return {
|
|
title: `${prd.introduction.title} - PRD`,
|
|
description: prd.introduction.overview,
|
|
};
|
|
} catch {
|
|
return {
|
|
title: 'PRD Not Found',
|
|
};
|
|
}
|
|
}
|
|
|
|
export default async function PRDPage({ params }: PRDPageProps) {
|
|
const { filename } = await params;
|
|
|
|
try {
|
|
const prd = await loadPRDPageData(filename);
|
|
|
|
return <PRDDetailView filename={filename} prd={prd} />;
|
|
} catch (error) {
|
|
console.error('Failed to load PRD:', error);
|
|
notFound();
|
|
}
|
|
}
|