import Link from "next/link";
import { notFound } from "next/navigation";
import { ArrowRight } from "lucide-react";
import type { Metadata } from "next";

import { SiteFooter } from "@/components/site-footer";
import { SiteHeader } from "@/components/site-header";
import { getPublishedItemBySlug, safeSettings } from "@/lib/cms";
import { resolveSiteContent } from "@/lib/site-settings";

export const dynamic = "force-dynamic";

export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }): Promise<Metadata> {
  const { slug } = await params;
  const item = await getPublishedItemBySlug(slug).catch(() => null);
  if (!item) return {};
  return {
    title: `${item.title} | مرکز معاملات آل عصفور`,
    description: item.summary,
    alternates: { canonical: `/read/${item.slug}` },
    openGraph: {
      title: item.title,
      description: item.summary,
      type: item.type === "article" ? "article" : "website",
      locale: "fa_IR",
      images: item.imageUrl ? [{ url: item.imageUrl, alt: item.title }] : undefined,
    },
  };
}

export default async function ReadPage({ params }: { params: Promise<{ slug: string }> }) {
  const { slug } = await params;
  const [item, settings] = await Promise.all([getPublishedItemBySlug(slug).catch(() => null), safeSettings()]);
  if (!item) notFound();
  const content = resolveSiteContent(settings);
  const back = item.type === "course" ? "/courses" : item.type === "article" ? "/knowledge" : "/tools";
  const schema = { "@context": "https://schema.org", "@type": item.type === "article" ? "Article" : "CreativeWork", headline: item.title, description: item.summary, inLanguage: "fa-IR", publisher: { "@type": "Organization", name: content.brand.name, url: "https://alstc.co" }, image: item.imageUrl || undefined };
  return <main className="min-h-screen bg-[#f7f8f5]"><SiteHeader content={content} /><article className="page-section"><Link href={back} className="inline-flex items-center gap-2 text-sm font-bold text-[#0a5a3c]"><ArrowRight className="size-4" /> بازگشت</Link><div className="mx-auto mt-6 max-w-4xl overflow-hidden rounded-[2rem] border border-emerald-950/10 bg-white shadow-sm">{item.imageUrl && <img src={item.imageUrl} alt={item.title} className="aspect-[16/7] w-full object-cover" />}<div className="p-7 sm:p-12">{item.subtitle && <span className="status-badge">{item.subtitle}</span>}<h1 className="mt-6 text-3xl font-black leading-[1.55] text-[#092f22] sm:text-5xl">{item.title}</h1>{item.summary && <p className="mt-6 text-lg leading-9 text-[#597067]">{item.summary}</p>}<div className="mt-9 whitespace-pre-line border-t border-emerald-950/10 pt-8 leading-9 text-[#304f43]">{item.body || "جزئیات تکمیلی این محتوا به‌زودی اضافه می‌شود."}</div></div></div></article><script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }} /><SiteFooter content={content} /></main>;
}
