Add category detail URLs and polish mega menu UX.

Route categories to /products/category/{id}/{slug}, improve menu hover/layout, and hide stock/category clutter on product cards.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-23 00:34:23 +03:30
co-authored by Cursor
parent 5d53cf91eb
commit f078cdad0e
11 changed files with 375 additions and 128 deletions
+41
View File
@@ -0,0 +1,41 @@
import type { Product } from "@/lib/data";
import {
catalogProductToCard,
fetchCatalogProducts,
fetchStoreItems,
variantToProduct,
} from "@/lib/store";
export async function loadCategoryProducts(params: {
page?: number;
pageSize?: number;
categoryId?: string;
name?: string;
}) {
const page = params.page ?? 1;
const pageSize = params.pageSize ?? 20;
const [storeResult, catalogResult] = await Promise.all([
fetchStoreItems({
page,
pageSize,
categoryId: params.categoryId,
name: params.name,
}),
fetchCatalogProducts({
page,
pageSize,
categoryId: params.categoryId,
name: params.name,
}),
]);
const fromStore = storeResult.items.map(variantToProduct);
const products: Product[] = fromStore.length
? fromStore
: catalogResult.items.map(catalogProductToCard);
const total = fromStore.length ? storeResult.total : catalogResult.total;
const resolvedPageSize = fromStore.length ? storeResult.pageSize : catalogResult.pageSize;
const pageCount = Math.max(1, Math.ceil((total || products.length) / (resolvedPageSize || pageSize)));
return { products, total, pageCount, pageSize: resolvedPageSize || pageSize };
}