{# Product Gallery Components ========================== Image gallery with thumbnails, zoom, and lightbox for product detail pages. Usage: {% from 'shared/macros/storefront/product-gallery.html' import product_gallery, gallery_thumbnails %} #} {# Product Gallery =============== Full image gallery with main image and thumbnails. Parameters: - images_var: Alpine.js expression for images array (default: 'product.images') - selected_var: Alpine.js variable for selected image index (default: 'selectedImage') - show_thumbnails: Show thumbnail navigation (default: true) - enable_zoom: Enable hover zoom on main image (default: true) - enable_lightbox: Enable fullscreen lightbox (default: true) - max_thumbnails: Max thumbnails to show (default: 5) - aspect_ratio: Main image aspect ratio (default: 'square') Expected image object: { id: 1, url: 'https://...', thumbnail_url: 'https://...', alt: 'Product image' } Usage: {{ product_gallery(images_var='product.images') }} #} {% macro product_gallery( images_var='product.images', selected_var='selectedImage', show_thumbnails=true, enable_zoom=true, enable_lightbox=true, max_thumbnails=5, aspect_ratio='square' ) %} {% set aspects = { 'square': 'aspect-square', '4:3': 'aspect-[4/3]', '3:4': 'aspect-[3/4]', '16:9': 'aspect-video', '3:2': 'aspect-[3/2]' } %} {% set aspect_class = aspects.get(aspect_ratio, 'aspect-square') %}