import { cache } from 'react'; import type { Metadata } from 'next'; import { notFound } from 'next/navigation'; import { createCmsClient } from '@kit/cms'; import { withI18n } from '~/lib/i18n/with-i18n'; import { Post } from '../../blog/_components/post'; const getPostBySlug = cache(async (slug: string) => { const client = await createCmsClient(); return client.getContentItemBySlug({ slug, collection: 'posts' }); }); export async function generateMetadata({ params, }: { params: { slug: string }; }): Promise { const post = await getPostBySlug(params.slug); if (!post) { notFound(); } const { title, publishedAt, description, image } = post; return Promise.resolve({ title, description, openGraph: { title, description, type: 'article', publishedTime: publishedAt, url: post.url, images: image ? [ { url: image, }, ] : [], }, twitter: { card: 'summary_large_image', title, description, images: image ? [image] : [], }, }); } async function BlogPost({ params }: { params: { slug: string } }) { const post = await getPostBySlug(params.slug); if (!post) { notFound(); } return (
); } export default withI18n(BlogPost);