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:
co-authored by
Cursor
parent
5d53cf91eb
commit
f078cdad0e
@@ -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 };
|
||||
}
|
||||
Reference in New Issue
Block a user