{# Add to Cart Components ====================== Standardized add-to-cart functionality with quantity selector. Usage: {% from 'shared/macros/storefront/add-to-cart.html' import add_to_cart_button, add_to_cart_form %} #} {# Add to Cart Button ================== Simple add to cart button with loading state. Parameters: - product_id_var: Alpine.js expression for product ID (default: 'product.id') - variant_id_var: Alpine.js expression for variant ID (default: 'selectedVariant?.id') - quantity_var: Alpine.js variable for quantity (default: 'quantity') - loading_var: Alpine.js variable for loading state (default: 'addingToCart') - stock_var: Alpine.js expression for stock (default: 'product.stock') - action: Alpine.js action to execute (default: 'addToCart()') - size: 'sm' | 'md' | 'lg' (default: 'md') - full_width: Make button full width (default: true) - show_icon: Show cart icon (default: true) - label: Button label (default: 'Add to Cart') - loading_label: Label while loading (default: 'Adding...') Usage: {{ add_to_cart_button() }} {{ add_to_cart_button(size='lg', label='Buy Now') }} #} {% macro add_to_cart_button( product_id_var='product.id', variant_id_var='selectedVariant?.id', quantity_var='quantity', loading_var='addingToCart', stock_var='product.stock', action='addToCart()', size='md', full_width=true, show_icon=true, label='Add to Cart', loading_label='Adding...' ) %} {% set sizes = { 'sm': {'btn': 'px-3 py-1.5 text-sm', 'icon': 'w-4 h-4'}, 'md': {'btn': 'px-4 py-2.5 text-base', 'icon': 'w-5 h-5'}, 'lg': {'btn': 'px-6 py-3 text-lg', 'icon': 'w-6 h-6'} } %} {% set s = sizes[size] %} {% endmacro %} {# Add to Cart Form ================ Complete add to cart section with quantity selector. Parameters: - product_var: Alpine.js variable for product (default: 'product') - quantity_var: Alpine.js variable for quantity (default: 'quantity') - loading_var: Alpine.js variable for loading state (default: 'addingToCart') - action: Alpine.js action to execute (default: 'addToCart()') - show_stock: Show stock status (default: true) - size: 'sm' | 'md' | 'lg' (default: 'md') Usage: {{ add_to_cart_form() }} #} {% macro add_to_cart_form( product_var='product', quantity_var='quantity', loading_var='addingToCart', action='addToCart()', show_stock=true, size='md' ) %} {% from 'shared/macros/inputs.html' import number_stepper %}