/** صفحه برند: /brand/lumina */
import type { Metadata } from "next";
import { seo } from "@/lib/seo";
import { notFound } from "next/navigation";
import { ListingView } from "@/components/listing/ListingView";
import { Breadcrumbs } from "@/components/ui/Breadcrumbs";
import { parseListingParams, listingSeo } from "@/lib/listing-params";
import { getBrandBySlug, getCategoryIndex, listProducts } from "@/server/services/catalog";

type Props = {
  params: Promise<{ slug: string }>;
  searchParams: Promise<Record<string, string | string[] | undefined>>;
};

export async function generateMetadata({ params, searchParams }: Props): Promise<Metadata> {
  const brand = await getBrandBySlug((await params).slug);
  if (!brand) return {};
  const { path, titleSuffix } = listingSeo(`/brand/${brand.slug}`, parseListingParams(await searchParams, { brands: [brand.slug] }), true);
  return seo({
    title: `محصولات ${brand.name} (${brand.nameEn})${titleSuffix}`,
    description: `خرید محصولات اصل ${brand.name}. ${brand.description}`,
    path,
  });
}

export default async function BrandPage({ params, searchParams }: Props) {
  const brand = await getBrandBySlug((await params).slug);
  if (!brand) notFound();

  const filters = parseListingParams(await searchParams, { brands: [brand.slug] });
  const [result, cats] = await Promise.all([listProducts(filters), getCategoryIndex()]);

  return (
    <ListingView
      title={`${brand.name} · ${brand.nameEn}`}
      description={`${brand.description} ساخت ${brand.country}.`}
      breadcrumbs={<Breadcrumbs items={[{ name: "برندها", href: "/brands" }, { name: brand.name }]} />}
      basePath={`/brand/${brand.slug}`}
      filters={filters}
      result={result}
      subcategories={cats.tree.map((c) => ({ name: c.name, href: cats.href(c.id) }))}
      lockedBrand
    />
  );
}
