import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { safeJsonLd } from "@/lib/jsonld"; import { buildBreadcrumbList, buildCaseJsonLd, buildPageSocialMetadata, } from "@/lib/seo"; import { caseStudies, isClientCase, siteUrl } from "@/lib/site-content"; import { CaseCapabilitiesSection } from "../_components/CaseCapabilitiesSection"; import { CaseContactSection } from "../_components/CaseContactSection"; import { CaseHero } from "../_components/CaseHero"; import { CaseMediaSection } from "../_components/CaseMediaSection"; import { CaseResultSection } from "../_components/CaseResultSection"; 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" }; const url = `${siteUrl}/cases/${caseStudy.id}`; return { title: caseStudy.metaTitle, description: caseStudy.metaDescription, ...buildPageSocialMetadata({ url, title: caseStudy.metaTitle, description: caseStudy.metaDescription, 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 pageUrl = `${siteUrl}/cases/${caseStudy.id}`; const isClient = isClientCase(caseStudy); const jsonLd = { "@context": "https://schema.org", "@graph": [ buildCaseJsonLd(caseStudy), buildBreadcrumbList(pageUrl, [ ["Início", siteUrl], ["Cases", `${siteUrl}/cases`], [caseStudy.title, pageUrl], ] as const), ], }; return (

{isClient ? "O cliente e o contexto" : "O contexto do projeto"}

{caseStudy.context}

{caseStudy.role ? (

Minha participação: {" "} {caseStudy.role}

) : null}

O problema

{caseStudy.problem}

O que foi feito

    {caseStudy.deliveries.map((delivery) => (
  • {delivery}
  • ))}
Detalhes técnicos

Tecnologias

    {caseStudy.stack.map((item) => (
  • {item}
  • ))}

Decisões técnicas

    {caseStudy.decisions.map((decision) => (
  • {decision}
  • ))}
); }