feat: add route-backed project case studies
Some checks failed
Test and deploy / Verify production build (push) Has been cancelled
Test and deploy / Deploy production (push) Has been cancelled

This commit is contained in:
2026-09-09 22:00:57 +03:30
parent b3cfcfe057
commit 24cd86ede7
25 changed files with 1892 additions and 65 deletions

View File

@@ -0,0 +1,24 @@
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} />;
}