diff --git a/apps/sim/app/(landing)/blog/[slug]/page.tsx b/apps/sim/app/(landing)/blog/[slug]/page.tsx new file mode 100644 index 0000000000..3cfd0c8d0f --- /dev/null +++ b/apps/sim/app/(landing)/blog/[slug]/page.tsx @@ -0,0 +1,166 @@ +import type { Metadata } from 'next' +import Image from 'next/image' +import Link from 'next/link' +import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' +import { FAQ } from '@/lib/blog/faq' +import { getAllPostMeta, getPostBySlug, getRelatedPosts } from '@/lib/blog/registry' +import { buildArticleJsonLd, buildBreadcrumbJsonLd, buildPostMetadata } from '@/lib/blog/seo' +import { soehne } from '@/app/fonts/soehne/soehne' + +export async function generateStaticParams() { + const posts = await getAllPostMeta() + return posts.map((p) => ({ slug: p.slug })) +} + +export async function generateMetadata({ + params, +}: { + params: Promise<{ slug: string }> +}): Promise { + const { slug } = await params + const post = await getPostBySlug(slug) + return buildPostMetadata(post) +} + +export const revalidate = 86400 + +export default async function Page({ params }: { params: Promise<{ slug: string }> }) { + const { slug } = await params + const post = await getPostBySlug(slug) + const Article = post.Content + const jsonLd = buildArticleJsonLd(post) + const breadcrumbLd = buildBreadcrumbJsonLd(post) + const related = await getRelatedPosts(slug, 3) + + return ( +
+