From 9a8e12fa8b4e0c676c336773daa2bca70b54e04d Mon Sep 17 00:00:00 2001 From: Cristian Felipe Cruz Buitron Date: Tue, 25 Aug 2026 14:10:33 -0500 Subject: [PATCH] feat(ecommerce): badge antes/ahora en tarjetas de producto Reutiliza Product.compareAtPrice (ya calculado en el provider de Medusa via original_amount > calculated_amount) para mostrar precio tachado + badge de descuento en la grilla/catalogo, no solo en la ficha de producto. ADR 0005 seccion 3, patron Walmart -- cero cambio de modelo de datos. --- .../ecommerce/components/product/product-card.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/workloads/ecommerce/components/product/product-card.tsx b/workloads/ecommerce/components/product/product-card.tsx index 2326496..dce0e7a 100644 --- a/workloads/ecommerce/components/product/product-card.tsx +++ b/workloads/ecommerce/components/product/product-card.tsx @@ -16,19 +16,29 @@ export function ProductCard({ product, priority = false }: { product: Product; p const wishlistHydrated = useWishlistStore((state) => state.hasHydrated); const toggleProduct = useWishlistStore((state) => state.toggleProduct); const isFavorite = wishlistHydrated && wishlistProducts.some((item) => item.id === product.id); + const discountPercent = + product.compareAtPrice && product.price + ? Math.round((1 - product.price / product.compareAtPrice) * 100) + : null; return (
{product.name} -
{product.isNew && Nuevo}{product.featured && Top}
+
{discountPercent && discountPercent > 0 && -{discountPercent}%}{product.isNew && Nuevo}{product.featured && Top}
{product.category}{product.collection}

{product.name}

{product.shortDescription}

-
{formatMoney(product.price, product.currency)}
+
+
+ {product.compareAtPrice && {formatMoney(product.compareAtPrice, product.currency)}} + {formatMoney(product.price, product.currency)} +
+ +
);