diff --git a/workloads/ecommerce/components/product/mobile-add-to-cart.tsx b/workloads/ecommerce/components/product/mobile-add-to-cart.tsx index 22bb946..c81421e 100644 --- a/workloads/ecommerce/components/product/mobile-add-to-cart.tsx +++ b/workloads/ecommerce/components/product/mobile-add-to-cart.tsx @@ -1,15 +1,41 @@ "use client"; +import { useEffect, useState } from "react"; import { ShoppingBag } from "lucide-react"; import { Button } from "@/components/ui/button"; import type { Product } from "@/lib/headless/types"; import { useCartStore } from "@/store/cart-store"; +// Antes esta barra quedaba fija desde el primer render en mobile, +// tapando permanentemente parte de la imagen del producto solo para +// duplicar un boton que ya está visible más abajo. Ahora se muestra +// recien cuando el boton real (#product-buy-button en ProductPurchase, +// visible tambien en mobile) sale del viewport -- mismo patron que el +// "Buy Now" sticky de Amazon, que solo aparece al scrollear mas alla +// del boton real. export function MobileAddToCart({ product }: { product: Product }) { const addItem = useCartStore((state) => state.addItem); + const [visible, setVisible] = useState(false); const outOfStock = product.variants[0]?.available === false; + + useEffect(() => { + const target = document.getElementById("product-buy-button"); + if (!target) return; + const observer = new IntersectionObserver((entries) => { + const entry = entries[0]; + if (entry) setVisible(!entry.isIntersecting); + }, { threshold: 0 }); + observer.observe(target); + return () => observer.disconnect(); + }, []); + return ( -