import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import { caseStudies, siteName, siteUrl } from "@/lib/site-content"; interface CasePageProps { params: Promise<{ slug: string }>; } export function generateStaticParams() { return caseStudies.map((caseStudy) => ({ slug: caseStudy.id })); } export async function generateMetadata({ params, }: CasePageProps): Promise { const { slug } = await params; const caseStudy = caseStudies.find((item) => item.id === slug); if (!caseStudy) return { title: `Case não encontrado | ${siteName}` }; const url = `${siteUrl}/cases/${caseStudy.id}`; return { title: `${caseStudy.title}: ${caseStudy.subtitle} | ${siteName}`, description: caseStudy.summary, alternates: { canonical: url }, openGraph: { title: caseStudy.title, description: caseStudy.summary, url, siteName, type: "article", }, }; } export default async function CasePage({ params }: CasePageProps) { const { slug } = await params; const caseStudy = caseStudies.find((item) => item.id === slug); if (!caseStudy) notFound(); const url = `${siteUrl}/cases/${caseStudy.id}`; const jsonLd = { "@context": "https://schema.org", "@graph": [ { "@type": "Article", headline: caseStudy.title, description: caseStudy.summary, mainEntityOfPage: url, author: { "@id": `${siteUrl}/#person` }, about: caseStudy.stack, }, { "@type": "BreadcrumbList", itemListElement: [ { "@type": "ListItem", position: 1, name: "Inicio", item: siteUrl }, { "@type": "ListItem", position: 2, name: "Cases", item: `${siteUrl}/cases`, }, { "@type": "ListItem", position: 3, name: caseStudy.title, item: url, }, ], }, ], }; return (