import { Head, Link, usePage } from '@inertiajs/react';
import { Calendar, ChevronRight, Tag } from 'lucide-react';

import FrontendLayout from '@/layouts/frontend-layout';

interface BlogCategory {
    id: number;
    name: string;
    slug: string;
}

interface BlogPost {
    id: number;
    title: string;
    slug: string;
    thumbnail: string | null;
    excerpt: string | null;
    body: string | null;
    created_at: string;
    category: BlogCategory | null;
    meta_title?: string;
    meta_description?: string;
}

interface Props {
    post: BlogPost;
    related: BlogPost[];
}

export default function BlogShow({ post, related }: Props) {
    const { siteSettings } = (usePage() as any).props;
    const siteName = siteSettings?.site_name ?? 'Kapor Bikreta';
    const date = new Date(post.created_at).toLocaleDateString('en-BD', { day: 'numeric', month: 'long', year: 'numeric' });

    return (
        <FrontendLayout>
            <Head title={`${post.meta_title ?? post.title} — ${siteName}`} />

            {/* Breadcrumb */}
            <div className="border-b bg-slate-50 py-3">
                <div className="mx-auto flex max-w-4xl items-center gap-2 px-4 text-sm text-slate-500">
                    <Link href="/" className="hover:text-indigo-600">Home</Link>
                    <ChevronRight size={13} />
                    <Link href="/blog" className="hover:text-indigo-600">Blog</Link>
                    <ChevronRight size={13} />
                    <span className="line-clamp-1 text-slate-700">{post.title}</span>
                </div>
            </div>

            <article className="mx-auto max-w-4xl px-4 py-10">
                {/* Category */}
                {post.category && (
                    <Link href={`/blog?category=${post.category.slug}`} className="mb-4 inline-block rounded-full bg-indigo-50 px-3 py-1 text-xs font-semibold text-indigo-600 hover:bg-indigo-100">
                        {post.category.name}
                    </Link>
                )}

                <h1 className="mb-4 text-3xl font-extrabold leading-tight text-slate-900 md:text-4xl">{post.title}</h1>

                <div className="mb-6 flex items-center gap-3 text-sm text-slate-400">
                    <span className="flex items-center gap-1"><Calendar size={13} /> {date}</span>
                </div>

                {/* Thumbnail */}
                {post.thumbnail && (
                    <div className="mb-8 overflow-hidden rounded-2xl">
                        <img src={`/storage/${post.thumbnail}`} alt={post.title} className="w-full object-cover" />
                    </div>
                )}

                {/* Body */}
                {post.body ? (
                    <div
                        className="prose prose-slate max-w-none prose-headings:font-bold prose-a:text-indigo-600 prose-img:rounded-xl"
                        dangerouslySetInnerHTML={{ __html: post.body }}
                    />
                ) : (
                    <p className="text-slate-500">No content yet.</p>
                )}
            </article>

            {/* Related posts */}
            {related.length > 0 && (
                <section className="border-t bg-slate-50 py-12">
                    <div className="mx-auto max-w-7xl px-4">
                        <h2 className="mb-6 text-xl font-bold text-slate-800">Related Articles</h2>
                        <div className="grid gap-5 sm:grid-cols-2 md:grid-cols-3">
                            {related.map((p) => (
                                <Link key={p.id} href={`/blog/${p.slug}`} className="group overflow-hidden rounded-2xl border bg-white shadow-sm transition hover:-translate-y-0.5 hover:shadow-md">
                                    {p.thumbnail ? (
                                        <img src={`/storage/${p.thumbnail}`} alt={p.title} className="aspect-video w-full object-cover transition group-hover:scale-105" />
                                    ) : (
                                        <div className="flex aspect-video w-full items-center justify-center bg-indigo-50">
                                            <Tag size={24} className="text-indigo-200" />
                                        </div>
                                    )}
                                    <div className="p-4">
                                        <h3 className="line-clamp-2 text-sm font-bold text-slate-800 group-hover:text-indigo-700">{p.title}</h3>
                                    </div>
                                </Link>
                            ))}
                        </div>
                    </div>
                </section>
            )}
        </FrontendLayout>
    );
}
