import { getAllBlogs, getBlogBySlug } from '../../../data/blogs';
import BlogDetailClient from './BlogDetailClient';
import { Metadata } from 'next';

// Generate static params for all blog slugs (required for static export)
export function generateStaticParams() {
    const blogs = getAllBlogs();
    return blogs.map((blog) => ({
        slug: blog.slug,
    }));
}

type Props = {
    params: Promise<{ slug: string }>
}

export async function generateMetadata(
    { params }: Props,
): Promise<Metadata> {
    const { slug } = await params;
    const blog = getBlogBySlug(slug);

    if (!blog) {
        return {
            title: 'Blog Not Found',
        };
    }

    return {
        title: blog.metaTitle || blog.title,
        description: blog.metaDescription || blog.excerpt,
        keywords: blog.keywords,
        openGraph: {
            title: blog.metaTitle || blog.title,
            description: blog.metaDescription || blog.excerpt,
            type: 'article',
            publishedTime: blog.date,
            authors: [blog.author],
        },
    };
}

export default async function BlogDetailPage({ params }: Props) {
    const { slug } = await params;
    const blog = getBlogBySlug(slug);

    return (
        <>
            {blog?.jsonLd && (
                <script
                    type="application/ld+json"
                    dangerouslySetInnerHTML={{ __html: JSON.stringify(blog.jsonLd) }}
                />
            )}
            <BlogDetailClient />
        </>
    );
}
