import type { Metadata } from "next";
import { Suspense } from "react";
import { generateJsonLd, generatePageMetadata } from "@/lib/seo/metadata";
import { Skeleton } from "@/components/ui/skeleton";
import { VehiclesClient } from "@/roles/admin/components/vehicle-category/vehicles-client";
import { getVehicleCategoriesAction } from "@/features/vehicles/actions/vehicle-categories-actions";

export const metadata: Metadata = generatePageMetadata({
  title: "Vehicle",
  description:
    "Manage vehicles for the Ameera Holidays platform. Add, edit, activate, deactivate, or delete vehicles to control your platform coverage.",
  path: "/admin/vehicles",
  noIndex: true,
});

function VehiclesLoading() {
  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-32" />
          <Skeleton className="h-4 w-64" />
        </div>
        <Skeleton className="h-10 w-32" />
      </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 VehiclesPage() {
  const initialPage = 1;
  const initialPerPage = 10;
  const initialTab = "all" as const;
  const initialSearch = "";
  const initialResult = await getVehicleCategoriesAction(
    initialPage,
    initialPerPage,
    undefined,
    initialSearch
  );

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

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