/** * @component QuickViewModal * @purpose Product Quick View modal dialog previewing images, dynamic variant selection, pricing, specs, and Add to Cart action. * @a11y ARIA modal role, escape listener * @dependencies cartStore, catalogService, lucide-react */ 'use client'; import { useState } from 'react'; import Image from 'next/image'; import { X, Star, ShoppingBag, Check, ShieldCheck, Truck } from 'lucide-react'; import { useCartStore } from '@/store/cartStore'; import { formatCurrency, getImageUrl } from '@/lib/utils'; export function QuickViewModal() { const product = useCartStore((state) => state.quickViewProduct); const setQuickViewProduct = useCartStore((state) => state.setQuickViewProduct); const addToCart = useCartStore((state) => state.addToCart); const [selectedVariantIndex, setSelectedVariantIndex] = useState(0); const [added, setAdded] = useState(false); if (!product) return null; const variant = product.variants[selectedVariantIndex] || product.variants[0]; const mainImage = getImageUrl(product.images[0]?.image_url); const price = variant?.price || 0; const comparePrice = variant?.compare_price; const handleAddToCart = () => { addToCart(product, variant, 1); setAdded(true); setTimeout(() => setAdded(false), 2000); }; return (
{product.description}
{/* Variant Selector */} {product.variants.length > 1 && (