feat: add route-backed project case studies
This commit is contained in:
24
src/app/(en)/projects/[projectId]/page.tsx
Normal file
24
src/app/(en)/projects/[projectId]/page.tsx
Normal 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} />;
|
||||
}
|
||||
Reference in New Issue
Block a user