{# Variant Selector Components =========================== Product variant selection (size, color, etc.) for product detail pages. Usage: {% from 'shared/macros/storefront/variant-selector.html' import variant_selector, size_selector, color_swatches %} #} {# Variant Selector ================ Generic variant selector that adapts to variant type. Parameters: - variants_var: Alpine.js expression for variants array (default: 'product.variants') - selected_var: Alpine.js variable for selected variant (default: 'selectedVariant') - type: 'buttons' | 'dropdown' | 'swatches' (default: 'buttons') - label: Label text (default: 'Select Option') - show_stock: Show stock status per variant (default: true) - on_change: Custom change handler (default: none) Expected variant object: { id: 1, name: 'Large', value: 'L', stock: 10, price_modifier: 0, color_hex: '#FF0000', // For swatches image_url: '...' // For swatches with preview } Usage: {{ variant_selector(variants_var='product.sizes', label='Size') }} #} {% macro variant_selector( variants_var='product.variants', selected_var='selectedVariant', type='buttons', label='Select Option', show_stock=true, on_change=none ) %}