import type { Metadata } from "next"; import Link from "next/link"; import CatalogCard from "@/components/CatalogCard"; import PageHero from "@/components/PageHero"; import { categoryHref, categoryTitle, fetchCategories } from "@/lib/categories"; import { fetchProducts } from "@/lib/products"; import { pageMetadata } from "@/lib/seo"; export const revalidate = 60; export async function generateMetadata({ searchParams, }: { searchParams: Promise<{ page?: string }>; }): Promise { const { page: pageParam } = await searchParams; const page = Math.max(1, Number(pageParam) || 1); return pageMetadata({ title: page > 1 ? `محصولات — صفحه ${page}` : "محصولات", description: "کاتالوگ پنجره UPVC، شیشه دوجداره و محصولات پنجره فرخ.", path: page > 1 ? `/products?page=${page}` : "/products", }); } export default async function ProductsPage({ searchParams, }: { searchParams: Promise<{ page?: string }>; }) { const { page: pageParam } = await searchParams; const page = Math.max(1, Number(pageParam) || 1); const [result, categories] = await Promise.all([ fetchProducts({ page, pageSize: 12 }), fetchCategories("product"), ]); const pageCount = Math.max(1, Math.ceil((result.total || result.items.length) / (result.pageSize || 12))); const topCategories = categories.filter((item) => !item.parentId); return ( <>
{topCategories.length > 0 ? (
{topCategories.map((item) => ( {categoryTitle(item)} ))}
) : null} {result.items.length === 0 ? (

محصولی برای نمایش وجود ندارد.

) : (
{result.items.map((product) => ( ))}
)} {pageCount > 1 ? ( ) : null}
); }