From 8f780c358590c6f31398e11abea4d33f5e56932a Mon Sep 17 00:00:00 2001 From: Unchained Date: Tue, 24 Mar 2026 18:50:39 +0200 Subject: [PATCH] fix: bundle UI improvements - remove QTY selector, filter bundles from similar products --- src/app/[locale]/products/[slug]/page.tsx | 8 ++++---- src/app/[locale]/products/page.tsx | 6 +++++- src/components/product/ProductDetail.tsx | 22 ---------------------- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/app/[locale]/products/[slug]/page.tsx b/src/app/[locale]/products/[slug]/page.tsx index 60983c9..95467da 100644 --- a/src/app/[locale]/products/[slug]/page.tsx +++ b/src/app/[locale]/products/[slug]/page.tsx @@ -88,9 +88,10 @@ export default async function ProductPage({ params }: ProductPageProps) { let relatedProducts: Product[] = []; let bundleProducts: Product[] = []; try { - const allProducts = await getProducts(saleorLocale, 8); + const allProducts = await getProducts(saleorLocale, 50); relatedProducts = allProducts .filter((p: Product) => p.id !== product.id) + .filter((p) => !p.name.includes("2x Set") && !p.name.includes("3x Set")) .slice(0, 4); } catch (e) {} @@ -100,10 +101,9 @@ export default async function ProductPage({ params }: ProductPageProps) { const bundleAttr = p.attributes?.find( (attr) => attr.attribute.slug === "bundle-items" ); - if (!bundleAttr) return false; + if (!bundleAttr || bundleAttr.values.length === 0) return false; return bundleAttr.values.some((val) => { - const baseIdPart = product.id.replace("UHJvZHVjdDo", ""); - return val.slug.includes(baseIdPart); + return val.name === product.name || p.name.includes(product.name.split(" - ")[0]); }); }); } catch (e) {} diff --git a/src/app/[locale]/products/page.tsx b/src/app/[locale]/products/page.tsx index 28fee69..1004018 100644 --- a/src/app/[locale]/products/page.tsx +++ b/src/app/[locale]/products/page.tsx @@ -27,7 +27,11 @@ export default async function ProductsPage({ params }: ProductsPageProps) { setRequestLocale(validLocale); const t = await getTranslations("Products"); const saleorLocale = getSaleorLocale(validLocale as Locale); - const products = await getProducts(saleorLocale); + const allProducts = await getProducts(saleorLocale); + + const products = allProducts.filter((product) => { + return !product.name.includes("2x Set") && !product.name.includes("3x Set"); + }); return ( <> diff --git a/src/components/product/ProductDetail.tsx b/src/components/product/ProductDetail.tsx index 7e35bda..cf901e3 100644 --- a/src/components/product/ProductDetail.tsx +++ b/src/components/product/ProductDetail.tsx @@ -354,28 +354,6 @@ export default function ProductDetail({ product, relatedProducts, bundleProducts ) )} -
- - {t("qty")} - -
- - {quantity} - -
-
- {isAvailable ? (