import type { Metadata } from "next";
import { Suspense } from "react";
import { generatePageMetadata, generateJsonLd } from "@/lib/seo/metadata";
import { FaqCategoriesClient } from "@/roles/admin/components/faq-categories/faq-categories-client";
import { Skeleton } from "@/components/ui/skeleton";
import { getFaqCategoriesAction } from "@/features/faq-categories/actions/faq-categories-actions";

export const metadata: Metadata = generatePageMetadata({
  title: "FAQ Categories",
  description:
    "Manage FAQ categories for the Ameera Holidays platform. Add, edit, activate, deactivate, or delete FAQ categories.",
  path: "/admin/faq-categories",
  noIndex: true,
});

function FaqCategoriesLoading() {
  return (
    <div className="admin-section space-y-6">
      <div className="flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between">
        <div className="space-y-2">
          <Skeleton className="h-8 w-48" />
          <Skeleton className="h-4 w-64" />
        </div>
        <Skeleton className="h-10 w-44" />
      </div>
      <div className="space-y-4">
        <Skeleton className="h-10 w-72" />
        <Skeleton className="h-96 w-full rounded-xl" />
      </div>
    </div>
  );
}

export default async function FaqCategoriesPage() {
  const initialPage = 1;
  const initialSearch = "";
  const initialResult = await getFaqCategoriesAction(
    initialSearch,
    initialPage
  );

  const jsonLd = generateJsonLd({
    "@type": "WebPage",
    name: "FAQ Categories Management | Ameera Holidays Admin",
    description:
      "Administrative interface for managing FAQ categories in the Ameera Holidays platform.",
  });

  return (
    <>
      <script type="application/ld+json" dangerouslySetInnerHTML={jsonLd} />
      <main>
        <Suspense fallback={<FaqCategoriesLoading />}>
          <FaqCategoriesClient
            initialData={initialResult.success ? initialResult.data : undefined}
            initialSearch={initialSearch}
            initialPage={initialPage}
          />
        </Suspense>
      </main>
    </>
  );
}
