import type { Metadata } from "next"; import { notFound } from "next/navigation"; import { Media } from "@/components/Media"; import { PageHero } from "@/components/PageHero"; import { RichContent } from "@/components/RichContent"; import { getBlog } from "@/lib/api"; import { formatDate } from "@/lib/format"; import { PLACEHOLDER } from "@/lib/data"; import { SITE } from "@/lib/site"; type Props = { params: Promise<{ slug: string }>; }; export async function generateMetadata({ params }: Props): Promise { const { slug } = await params; try { const blog = await getBlog(slug); if (!blog) return { title: SITE.nameFa }; return { title: `${blog.title} | ${SITE.nameFa}`, description: blog.abstract || SITE.aboutShort, }; } catch { return { title: SITE.nameFa }; } } export default async function BlogDetailPage({ params }: Props) { const { slug } = await params; const blog = await getBlog(slug); if (!blog) notFound(); const author = [blog.author?.firstName, blog.author?.lastName].filter(Boolean).join(" "); return ( <>
{blog.publishedAt || blog.createdAt ? : null} {blog.categoryName ? {blog.categoryName} : null} {author ? {author} : null}
{blog.abstract ?

{blog.abstract}

: null}
); }