/** قالب صفحات فروشگاه: نوار اعلان، هدر، فوتر و ناوبری پایین موبایل */
import { AiBeautyFloatingButton, AiBeautyPanel } from "@/components/ai/AiBeauty";
import { AnnouncementBar } from "@/components/layout/AnnouncementBar";
import { BottomNav } from "@/components/layout/BottomNav";
import { Footer } from "@/components/layout/Footer";
import { Header } from "@/components/layout/Header";
import { getCategoryIndex } from "@/server/services/catalog";
import { aiReady, getAiSettings } from "@/server/services/ai";
import { site } from "@/lib/site";

/** داده ساختاریافته سراسری: معرفی فروشگاه و جستجوی سایت (برای گوگل و موتورهای هوش مصنوعی) */
const siteJsonLd = [
  {
    "@context": "https://schema.org",
    "@type": "OnlineStore",
    name: site.name,
    alternateName: site.nameEn,
    url: site.url,
    logo: new URL("/brand/logo-full.png", site.url).toString(),
    description: site.description,
    email: site.email,
    areaServed: "IR",
    currenciesAccepted: "IRR",
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    name: site.name,
    url: site.url,
    inLanguage: "fa-IR",
    potentialAction: { "@type": "SearchAction", target: `${site.url}/search?q={search_term_string}`, "query-input": "required name=search_term_string" },
  },
];

export default async function ShopLayout({ children }: { children: React.ReactNode }) {
  const [cats, aiOn, aiSettings] = await Promise.all([getCategoryIndex(), aiReady(), getAiSettings()]);
  const tree = cats.tree;
  // آدرس هر دسته از سرور محاسبه می‌شود تا کامپوننت‌های کلاینت به داده کامل نیاز نداشته باشند
  const nav = tree.map((c) => ({
    id: c.id,
    name: c.name,
    href: cats.href(c.id),
    children: c.children.map((ch) => ({ id: ch.id, name: ch.name, href: cats.href(ch.id) })),
  }));

  return (
    <>
      <a href="#main" className="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:start-2 focus:z-[60] focus:rounded-full focus:bg-ink focus:px-4 focus:py-2 focus:text-paper">
        پرش به محتوای اصلی
      </a>
      <AnnouncementBar />
      <Header nav={nav} />
      <main id="main" className="min-h-[60vh] pb-20 md:pb-0">
        {children}
      </main>
      <Footer nav={nav} />
      <BottomNav nav={nav} />
      <AiBeautyFloatingButton />
      <AiBeautyPanel chatEnabled={aiOn && aiSettings.chatEnabled} />
      <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(siteJsonLd).replace(/</g, "\\u003c") }} />
    </>
  );
}
