Files
my-protfolio/src/app/(en)/projects/[projectId]/page.tsx
Amirhossein Khalili 24cd86ede7
Some checks failed
Test and deploy / Verify production build (push) Has been cancelled
Test and deploy / Deploy production (push) Has been cancelled
feat: add route-backed project case studies
2026-09-09 22:00:57 +03:30

25 lines
1.0 KiB
TypeScript

import type { Metadata } from 'next';
import { notFound } from 'next/navigation';
import { CaseStudyContent } from '@/components/CaseStudyContent';
import { getAdjacentProjects, getProject, projectIds } from '@/data/projects';
type Props = { params: Promise<{ projectId: string }> };
export const dynamicParams = false;
export const generateStaticParams = () => projectIds.map((projectId) => ({ projectId }));
export async function generateMetadata({ params }: Props): Promise<Metadata> {
const { projectId } = await params;
const project = getProject('en', projectId);
if (!project) return {};
return { title: `${project.title} case study | Amirhossein Khalili`, description: project.caseStudy.introduction };
}
export default async function ProjectPage({ params }: Props) {
const { projectId } = await params;
const project = getProject('en', projectId);
const adjacent = getAdjacentProjects('en', projectId);
if (!project || !adjacent) notFound();
return <CaseStudyContent project={project} locale="en" {...adjacent} />;
}