www.lovefootball.live
Open in
urlscan Pro
104.17.247.119
Public Scan
Submitted URL: https://frogcalldigital.com/
Effective URL: https://www.lovefootball.live/
Submission: On January 08 via api from US — Scanned from CA
Effective URL: https://www.lovefootball.live/
Submission: On January 08 via api from US — Scanned from CA
Form analysis
13 forms found in the DOMGET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-form" is="spz-form" action-xhr="/search" method="get" @submit="header-search-predictive-script.execute(func='setSearchUrl', params=event.q)" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-input" type="text" name="q" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-render.rerender(data=event.value);search-predictive-result.rerender(data=event.value,redo=true);">
<label for="header-search-form-input" id="header-search-input-replace" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-close.toggleClass(class='header__search-close-show', force=true);header-search-input-replace.toggleClass(class='opacity-0', force=true);">
</label>
<spz-render class="header-search-search-icon-container i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="header-search-search-icon-render" layout="container" manual="" i-spzhtml-layout="container"
style="height: 24px;">
<template>
<a class="header-search-search-icon flex color-body" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a>
</template>
<a class="header-search-search-icon flex color-body" href="/search?q=" aria-label="search">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a></spz-render>
</div>
</form>
GET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-form" is="spz-form" action-xhr="/search" method="get" @submit="header-search-predictive-script.execute(func='setSearchUrl', params=event.q)" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-input" type="text" name="q" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-render.rerender(data=event.value);search-predictive-result.rerender(data=event.value,redo=true);">
<label for="header-search-form-input" id="header-search-input-replace" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-close.toggleClass(class='header__search-close-show', force=true);header-search-input-replace.toggleClass(class='opacity-0', force=true);">
</label>
<spz-render class="header-search-search-icon-container i-spzhtml-layout-container i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" id="header-search-search-icon-render" layout="container" manual=""
i-spzhtml-layout="container">
<a class="header-search-search-icon flex color-body" href="/search?q=" aria-label="search">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a>
<template>
<a class="header-search-search-icon flex color-body" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a>
</template>
</spz-render>
</div>
</form>
POST
<form id="cart-note-form-popup" class="w-full mb-5 hidden px-5 i-spzhtml-form" method="POST" action-xhr="/api/cart/note" items="cart" novalidate="">
<textarea class="cart-note-textarea type-body-font-family w-full color-body body-text-base bg-body" id="cart-note-textarea" name="note" rows="4" @input-debounced="cart-note-form-popup.insert(name='note', value=event.value);"
@change="cart-note-form-popup.submit(actionXhr='/api/cart/note');cart-note-render-popup.rerender(data=event);" autofocus=""></textarea>
</form>
POST
<form id="cart-note-form-popup" class="w-full mb-5 hidden i-spzhtml-form" method="POST" action-xhr="/api/cart/note" items="cart" novalidate="">
<textarea class="cart-note-textarea type-body-font-family w-full color-body body-text-base bg-body" id="cart-note-textarea" name="note" rows="4" @input-debounced="cart-note-form-popup.insert(name='note', value=event.value);"
@change="cart-note-form-popup.submit(actionXhr='/api/cart/note');cart-note-render-popup.rerender(data=event);" autofocus=""></textarea>
</form>
GET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-formmd" is="spz-form" action-xhr="/search" method="get" @submit="header-search-predictive-script.execute(func='setSearchUrl', params=event.q)" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-inputmd" type="text" name="q" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-rendermd.rerender(data=event.value);search-predictive-result.rerender(data=event.value,redo=true);">
<label for="header-search-form-inputmd" id="header-search-input-replacemd" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-closemd.toggleClass(class='header__search-close-show', force=true);header-search-input-replacemd.toggleClass(class='opacity-0', force=true);">
</label>
<spz-render class="header-search-search-icon-container i-spzhtml-layout-container i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" id="header-search-search-icon-rendermd" layout="container" manual=""
i-spzhtml-layout="container">
<a class="header-search-search-icon flex color-body" href="/search?q=" aria-label="search">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a>
<template>
<a class="header-search-search-icon flex color-body" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a>
</template>
</spz-render>
</div>
</form>
GET
<form class="flex-grow-1 i-spzhtml-form" id="header-search-formmodel" is="spz-form" action-xhr="/search" method="get" @submit="header-search-predictive-script.execute(func='setSearchUrl', params=event.q)" novalidate="">
<div tabindex="-1" class="flex relative header__search">
<input autocomplete="off" id="header-search-form-inputmodel" type="text" name="q" class="border-none header__search-placeholder-current header__search-input" placeholder="Search..."
@input-debounced="search-predictive.open;header-search-search-icon-rendermodel.rerender(data=event.value);search-predictive-result.rerender(data=event.value,redo=true);">
<label for="header-search-form-inputmodel" id="header-search-input-replacemodel" style="position: absolute; height: 40px; width: calc(100% - 52px); background-color: transparent;"
@tap="search-input-closemodel.toggleClass(class='header__search-close-show', force=true);header-search-input-replacemodel.toggleClass(class='opacity-0', force=true);">
</label>
<spz-render class="header-search-search-icon-container i-spzhtml-layout-container i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" id="header-search-search-icon-rendermodel" layout="container" manual=""
i-spzhtml-layout="container">
<a class="header-search-search-icon flex color-body" href="/search?q=" aria-label="search">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a>
<template>
<a class="header-search-search-icon flex color-body" href="/search?q=${encodeURIComponent(typeof(data||'')=='string'?data:'')}">
<svg class="" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg>
</a>
</template>
</spz-render>
</div>
</form>
<form role="spz-product-formd624116c-c56f-4e2a-8f32-b915bef8dfa5">
<div class="w-full flex flex-col gap-6 md:pt-6">
<div>
<div class="body-text-base leading-none font-semibold">Price</div>
<spz-render id="single-product-price-1735109766562" template="single-product-price-template-1735109766562" layout="container" manual="" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout"
i-spzhtml-layout="container" style="height: auto;">
<div class="">
<div class="qs-price-desc flex items-center flex-wrap body-plus-6 md:body-plus-4 mt-3" spz-if="true"> <spz-currency
class="inline-block mr-3 line-through color-compare-price i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" layout="container" value="51.53" spz-if="true" i-spzhtml-layout="container">
<div class="money">$51.53</div>
</spz-currency> <spz-currency class="inline-block mr-3 color-price qs-current-price i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" value="24.22" spz-if="true" layout="container"
i-spzhtml-layout="container">
<div class="money">$24.22</div>
</spz-currency> <span class="body-text-base color-save-text pd-info-save" spz-if="true"> Save <spz-currency class="inline-block i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" value="27.310000000000002"
layout="container" i-spzhtml-layout="container">
<div class="money">$27.31</div>
</spz-currency> </span> </div>
</div>
</spz-render>
</div>
<spz-variants interference="" id="single-product-variant-1735109766562" layout="container" manual="" src="script:single-product-data-1735109766562" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout"
i-spzhtml-layout="container">
<fieldset class="variants-options-container pd-info-variants-button-wrap border-none p-0 mt-2" name="Color">
<legend class="p-0">
<div class="product-info__variants_title">
<span class="body-text-base font-semibold" style="text-transform: capitalize;">color</span>
<spz-render id="single-product-variant-template-1735109766562-Color" manual="" layout="container" class="inline-block i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
<template>
<span class="pd-info-variants-title font-semibold">-${data.value}</span>
</template>
</spz-render>
</div>
</legend>
<div class="flex-wrap flex">
<div class="relative mt-1.5 mr-1.5">
<input type="radio" option="SIZE 5 E" id="single-product-info-variant-1735109766562-SIZE 5 E-0" class="pointer-events-auto w-full h-full" name="Color" value="SIZE 5 E" form="single-product-1735109766562" checked="">
<label class="pd-variants-label flex items-center justify-center break-words cursor-pointer flex-shrink-0 overflow-hidden" for="single-product-info-variant-1735109766562-SIZE 5 E-0" data-type="text">
<span class="break-words text-center">SIZE 5 E</span>
</label>
</div>
<div class="relative mt-1.5 mr-1.5">
<input type="radio" option="SIZE 5 A" id="single-product-info-variant-1735109766562-SIZE 5 A-1" class="pointer-events-auto w-full h-full" name="Color" value="SIZE 5 A" form="single-product-1735109766562">
<label class="pd-variants-label flex items-center justify-center break-words cursor-pointer flex-shrink-0 overflow-hidden" for="single-product-info-variant-1735109766562-SIZE 5 A-1" data-type="text">
<span class="break-words text-center">SIZE 5 A</span>
</label>
</div>
<div class="relative mt-1.5 mr-1.5">
<input type="radio" option="SIZE 5 B" id="single-product-info-variant-1735109766562-SIZE 5 B-2" class="pointer-events-auto w-full h-full" name="Color" value="SIZE 5 B" form="single-product-1735109766562">
<label class="pd-variants-label flex items-center justify-center break-words cursor-pointer flex-shrink-0 overflow-hidden" for="single-product-info-variant-1735109766562-SIZE 5 B-2" data-type="text">
<span class="break-words text-center">SIZE 5 B</span>
</label>
</div>
<div class="relative mt-1.5 mr-1.5">
<input type="radio" option="SIZE 5 D" id="single-product-info-variant-1735109766562-SIZE 5 D-3" class="pointer-events-auto w-full h-full" name="Color" value="SIZE 5 D" form="single-product-1735109766562">
<label class="pd-variants-label flex items-center justify-center break-words cursor-pointer flex-shrink-0 overflow-hidden" for="single-product-info-variant-1735109766562-SIZE 5 D-3" data-type="text">
<span class="break-words text-center">SIZE 5 D</span>
</label>
</div>
<div class="relative mt-1.5 mr-1.5">
<input type="radio" option="SIZE 5 C" id="single-product-info-variant-1735109766562-SIZE 5 C-4" class="pointer-events-auto w-full h-full" name="Color" value="SIZE 5 C" form="single-product-1735109766562">
<label class="pd-variants-label flex items-center justify-center break-words cursor-pointer flex-shrink-0 overflow-hidden" for="single-product-info-variant-1735109766562-SIZE 5 C-4" data-type="text">
<span class="break-words text-center">SIZE 5 C</span>
</label>
</div>
</div>
</fieldset>
</spz-variants>
<div>
<div class="body-text-base font-semibold">Quantity</div>
<spz-quantity class="quick-shop-quantity mt-2.5 border flex items-center rounded-global i-spzhtml-layout-fixed i-spzhtml-layout-size-defined i-spzhtml-element i-spzhtml-built i-spzhtml-layout" id="single-product-qty-1735109766562"
name="quantity" layout="fixed" width="108" height="40" value="1" min="1" max="999999999" icon-class="clear flex-shrink-0 rounded-global" number-class="clear flex-shrink-0 text-center text-lg" style="width:108px;height:40px;"
i-spzhtml-layout="fixed">
<div class="i-spzhtml-fill-content i-spzhtml-replaced-content"><span role="button" aria-label="decrease" class="i-spzhtml-quantity-number-decrease clear flex-shrink-0 rounded-global" disabled=""><svg width="16" height="16"
xmlns="http://www.w3.org/2000/svg">
<path d="M13.7 7.4a.3.3 0 0 1 .3.3v.6a.3.3 0 0 1-.3.3H2.3a.3.3 0 0 1-.3-.3v-.6a.3.3 0 0 1 .3-.3h11.4z" fill="currentColor"></path>
</svg></span><input type="number" name="quantity" min="1" max="999999999" class="i-spzhtml-quantity-number-input" aria-label="quantity"><span role="button" aria-label="increase"
class="i-spzhtml-quantity-number-increase clear flex-shrink-0 rounded-global"><svg width="16" height="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8.3 14a.3.3 0 0 0 .3-.3V8.6h5.1a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V2.3a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.1H2.3a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.1v5.1a.3.3 0 0 0 .3.3h.6z" fill="currentColor"></path>
</svg></span></div>
</spz-quantity>
</div>
<div class="pd-info-btn-wrap flex-col flex">
<button class="button-secondary flex items-center justify-center relative add-to-cart-button" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart" data-track-source="add_to_cart"
@tap="product-info-variants.toggleAttribute(force=true,key='needValidate',value=true);">
<span role="content">Add to cart</span>
<spz-render id="single-pd-info-atc-price" layout="container" manual="" template="atc-price-template" class="i-spzhtml-layout-container i-spzhtml-element i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container" style="height: auto;">
<div>
<div class="flex" spz-if="true"> - <spz-currency value="24.22" layout="container" class="i-spzhtml-element i-spzhtml-layout-container i-spzhtml-built i-spzhtml-layout" i-spzhtml-layout="container">
<div class="money">$24.22</div>
</spz-currency> </div>
</div>
</spz-render>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" aria-label="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<button class="button-primary mt-3 relative add-to-cart-button" role="buyNow" type="button" data-track="click" data-track-content="checkout" data-track-source="buy_now">
<span role="content">Buy it now</span>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" aria-label="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<div class="pd-info-tip-out-stock mt-2 text-center text-sm lg:mt-3 hidden"> Product was out of stock. </div>
<div class="pd-info-tip-unavailable mt-2 text-center text-sm lg:mt-3 hidden"> Product is unavailable. </div>
</div>
<div class="quick-shop-inventory-status body-plus-1 lg:body-plus-1 flex ">
<span class="font-semibold mr-1">Avaliability:</span>
<span data-type="in-stock">in stock, ready to be shipped</span>
</div>
</div>
<input name="product_id" type="hidden" value="d624116c-c56f-4e2a-8f32-b915bef8dfa5"><input name="variant_id" type="hidden" value="d37a4842-4d17-46d2-85bc-ae7d760d1af1"><input name="note" type="hidden">
</form>
POST
<form id="subscription-form1731978269442" class="subscription-form i-spzhtml-form" action-xhr="/api/customers/newsletters" method="POST" custom-validation="show-first-on-submit"
@submiterror="subscription-email-error1731978269442.showToast(content=event.errors);"
@submitsuccess="subscription-subscription-success1731978269442.toggleClass(class='hidden', force=false);subscription-form1731978269442.toggleClass(class='hidden', force=true);subscription-popup.open;" novalidate="">
<div class="subscription-form-group flex items-center justify-between border ">
<div class="subscription-form-item relative flex-1">
<input class="subscription-form-input clear w-full bg-white" type="text" id="subscription-email1731978269442" name="email" required="" placeholder="Enter your email"
pattern="[a-zA-Z0-9!#$%&'*+\/=?^_`\{\|\}~\-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`\{\|\}~\-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?">
<label class="subscription-form-label absolute color-body-text-60 text-base" for="subscription-email1731978269442">
</label>
<spz-toast validation-for="subscription-email1731978269442" visible-when-invalid="valueMissing" layout="nodisplay" class="i-spzhtml-layout-nodisplay i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved"
hidden="" style="" i-spzhtml-layout="nodisplay">Please fill in this field</spz-toast>
<spz-toast validation-for="subscription-email1731978269442" visible-when-invalid="patternMismatch" layout="nodisplay" class="i-spzhtml-layout-nodisplay i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved"
hidden="" style="" i-spzhtml-layout="nodisplay">Please enter a valid email address</spz-toast>
<spz-toast id="subscription-email-error1731978269442" layout="nodisplay" class="i-spzhtml-layout-nodisplay i-spzhtml-element i-spzhtml-notbuilt spz-notbuilt spz-unresolved i-spzhtml-unresolved" hidden="" style=""
i-spzhtml-layout="nodisplay"></spz-toast>
</div>
<button class="subscription-submit-btn button-primary flex-shrink-0 body-plus-2" type="submit" aria-label="submit">
<span class="md:hidden">Subscribe</span>
<svg class="lg:hidden" width="20" height="6" xmlns="http://www.w3.org/2000/svg">
<path d="m14 0 6 3-6 3V4H0V2h14V0z" fill="currentColor"></path>
</svg>
</button>
</div>
</form>
<form>
<input name="variant_id" type="hidden" value="${data.variants[0].id}">
<button class="product-tmpl-action" type="button" role="addToCart" aria-label="add" data-quick-shop="${data.handle}" data-track-product-id="${data.id}" data-track="click" data-track-content="add_to_cart" data-track-source="quick_shop">
<svg class="" spz-if="${!!data.available && (!!data.has_only_default_variant || !!(data.variants.length == 1))}" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"></path>
</svg>
</button>
</form>
POST
<form id="cart-note-form-drawer" class="w-full mb-5 hidden i-spzhtml-form" method="POST" action-xhr="/api/cart/note" items="cart" novalidate="">
<textarea class="cart-note-textarea type-body-font-family w-full color-body body-text-base bg-body" id="cart-note-textarea" name="note" rows="4" @input-debounced="cart-note-form-drawer.insert(name='note', value=event.value);"
@change="cart-note-form-drawer.submit(actionXhr='/api/cart/note');cart-note-render-drawer.rerender(data=event);" autofocus=""></textarea>
</form>
POST
<form id="cart-note-form-drawer-sticky" class="w-full mb-5 hidden i-spzhtml-form" method="POST" action-xhr="/api/cart/note" items="cart" novalidate="">
<textarea class="cart-note-textarea type-body-font-family w-full color-body body-text-base bg-body" id="cart-note-textarea" name="note" rows="4" @input-debounced="cart-note-form-drawer-sticky.insert(name='note', value=event.value);"
@change="cart-note-form-drawer-sticky.submit(actionXhr='/api/cart/note');cart-note-render-drawer-sticky.rerender(data=event);" autofocus=""></textarea>
</form>
<form>
<div class="quick-shop-content flex flex-col lg:gap-5 md:gap-3">
<spz-variants name="quick-shop-variant" id="quick-shop-variants" class="pointer-events-none" layout="container" template="quick-shop-variants-template" spz-if="${product_options && product_options.length > 0}" interference=""
${mouseoutevent}="" ${mouseoverevent}="" interact="hover"></spz-variants>
<div>
<div class="body-plus-1 leading-none font-semibold">Price</div>
<spz-render id="qs-prices-render" layout="container" template="qs-prices-template" manual=""> ${function() { const origin = "shop" const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v
=> v.available) || product.variants[0]; return !!selectedVariant ? ` <div class="flex items-center flex-wrap body-plus-6 md:body-plus-4 mt-4">
<spz-currency class="inline-block mr-3 line-through color-compare-price" value="${selectedVariant.compare_at_price}" layout="container" spz-if="${+selectedVariant.price < +selectedVariant.compare_at_price}"></spz-currency>
<spz-currency class="inline-block mr-3 color-price qs-current-price" value="${selectedVariant.price}" layout="container"></spz-currency>
<span class="body-text-base color-save-text pd-info-save" spz-if="${+selectedVariant.price < +selectedVariant.compare_at_price}"> Save <spz-currency class="inline-block" value="${selectedVariant.compare_at_price - selectedVariant.price}"
layout="container"></spz-currency>
</span>
</div> ` : ` <div class="flex items-center body-plus-6 md:body-plus-4 color-price">
<spz-currency layout="container" value="${data.price}"></spz-currency>
<span spz-if="${+data.price_min < +data.price_max}">-</span>
<spz-currency layout="container" value="${data.price_max}" spz-if="${+data.price_min < +data.price_max}"></spz-currency>
</div> `; }()} </spz-render>
</div>
<div>
<div class="body-plus-1 font-semibold md:mb-3">Quantity</div>
<spz-quantity class="quick-shop-quantity mt-2 border flex items-center rounded-global" id="quick-shop-quantity" name="quantity" layout="fixed" width="108" height="40" value="1" min="1"
max="${(productData.variants.find(v => v.available) || productData.variants[0]).available_quantity || productData.inventory_quantity}" icon-class="flex items-center justify-center h-full qs-qy-icon">
<svg class="" role="decrease" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"></path>
</svg>
<svg class="" role="increase" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"></path>
</svg>
</spz-quantity>
</div>
<div class="pd-info-btn-wrap flex-col flex">
<button class="button-secondary flex items-center justify-center relative add-to-cart-button" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart" data-track-source="add_to_cart"
@tap="product-info-variants.toggleAttribute(force=true,key='needValidate',value=true);">
<span role="content"> ${selectedVariant.available ? "Add to cart" : "SOLD OUT"} </span>
<spz-render id="qs_atc" layout="container" manual="" template="atc-price-template">
</spz-render>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" aria-label="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<button spz-if="${selectedVariant.available}" class="button-primary mt-3 relative add-to-cart-button" role="buyNow" type="button" data-track="click" data-track-content="checkout" data-track-source="buy_now">
<span role="content">Buy it now</span>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" aria-label="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<div class="pd-info-tip-out-stock mt-2 text-center text-sm lg:mt-3 hidden"> Product was out of stock. </div>
<div class="pd-info-tip-unavailable mt-2 text-center text-sm lg:mt-3 hidden"> Product is unavailable. </div>
</div>
<div class="quick-shop-inventory-status body-minus-1 flex"> ${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty =
product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-shop-exact-inventory-render"; const lowStock = 5; const selectedVariant
= product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking
&& inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return ` <span class="font-semibold mr-1">Avaliability:</span>
<span spz-if="${actualInventory == 0}" data-type="low-stock">Out of stock</span>
<span spz-if="${actualInventory != 0}">
<span spz-if="${actualInventory > lowStock}" data-type="in-stock">in stock, ready to be shipped</span>
<span spz-if="${actualInventory <= lowStock}" data-type="in-stock">Low stock</span>
</span> `; }()}
</div>
</div>
</form>
<form>
<div class="quick-shop-content flex flex-col lg:gap-5">
<spz-variants name="quick-view-variant" id="quick-view-variants" class="mt-5 pointer-events-none" layout="container" template="quick-view-variants-template" interference="" ${mouseoutevent}="" ${mouseoverevent}="" interact="hover"></spz-variants>
<div>
<div class="body-plus-1 leading-none font-semibold">Price</div>
<spz-render id="qv-prices-render" layout="container" template="qv-prices-template" manual=""> ${function() { const origin = "view" const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v
=> v.available) || product.variants[0]; return !!selectedVariant ? ` <div class="flex items-center flex-wrap body-plus-6 md:body-plus-4 mt-4">
<spz-currency class="inline-block mr-3 line-through color-compare-price" value="${selectedVariant.compare_at_price}" layout="container" spz-if="${+selectedVariant.price < +selectedVariant.compare_at_price}"></spz-currency>
<spz-currency class="inline-block mr-3 color-price qs-current-price" value="${selectedVariant.price}" layout="container"></spz-currency>
<span class="body-text-base color-save-text pd-info-save" spz-if="${+selectedVariant.price < +selectedVariant.compare_at_price}"> Save <spz-currency class="inline-block" value="${selectedVariant.compare_at_price - selectedVariant.price}"
layout="container"></spz-currency>
</span>
</div> ` : ` <div class="flex items-center body-plus-6 md:body-plus-4 color-price">
<spz-currency layout="container" value="${data.price}"></spz-currency>
<span spz-if="${+data.price_min < +data.price_max}">-</span>
<spz-currency layout="container" value="${data.price_max}" spz-if="${+data.price_min < +data.price_max}"></spz-currency>
</div> `; }()} </spz-render>
</div>
<div>
<div class="body-plus-1 font-semibold md:mb-3">Quantity</div>
<spz-quantity class="quick-shop-quantity mt-2 border flex items-center rounded-global" id="quick-view-quantity" name="quantity" layout="fixed" width="108" height="40" value="1" min="1"
max="${(productData.variants.find(v => v.available) || productData.variants[0]).available_quantity || productData.inventory_quantity}" icon-class="flex items-center justify-center h-full qs-qy-icon">
<svg class="" role="decrease" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"></path>
</svg>
<svg class="" role="increase" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"></path>
</svg>
</spz-quantity>
</div>
<div class="pd-info-btn-wrap flex-col flex">
<button class="button-secondary flex items-center justify-center relative add-to-cart-button" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart" data-track-source="add_to_cart"
@tap="product-info-variants.toggleAttribute(force=true,key='needValidate',value=true);">
<span role="content"> ${selectedVariant.available ? "Add to cart" : "SOLD OUT"} </span>
<spz-render id="qv_atc" layout="container" manual="" template="atc-price-template">
</spz-render>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" aria-label="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<button spz-if="${selectedVariant.available}" class="button-primary mt-3 relative add-to-cart-button" role="buyNow" type="button" data-track="click" data-track-content="checkout" data-track-source="buy_now">
<span role="content">Buy it now</span>
<div class="loading items-center justify-center absolute inset-0 flex" role="loading" aria-label="loading" show="">
<div class="loading-bounce"></div>
</div>
</button>
<div class="pd-info-tip-out-stock mt-2 text-center text-sm lg:mt-3 hidden"> Product was out of stock. </div>
<div class="pd-info-tip-unavailable mt-2 text-center text-sm lg:mt-3 hidden"> Product is unavailable. </div>
</div>
<div class="quick-shop-inventory-status body-minus-1 flex"> ${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty =
product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-view-exact-inventory-render"; const lowStock = 5; const selectedVariant
= product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking
&& inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return ` <span class="font-semibold mr-1">Avaliability:</span>
<span spz-if="${actualInventory == 0}" data-type="low-stock">Out of stock</span>
<span spz-if="${actualInventory != 0}">
<span spz-if="${actualInventory > lowStock}" data-type="in-stock">in stock, ready to be shipped</span>
<span spz-if="${actualInventory <= lowStock}" data-type="in-stock">Low stock</span>
</span> `; }()}
</div>
</div>
</form>
Text Content
function setSearchUrl(searchValue) { return Promise.resolve({ url: '/search?q=' + searchValue }); } exportFunction('setSearchUrl', setSearchUrl); XIAM function setSearchUrl(searchValue) { return Promise.resolve({ url: '/search?q=' + searchValue }); } exportFunction('setSearchUrl', setSearchUrl); function setSearchUrl(searchValue) { return Promise.resolve({ url: '/search?q=' + searchValue }); } exportFunction('setSearchUrl', setSearchUrl); Search Account Log in Create an account ${data.data.count > 99 ? '99+' : data.data.count} 0 Cart Your cart is reserved for ${data.mm}m ${data.ss}s 54s ! ${data.line_items.map(item => { return ` ${item.product_title} ${item.options.map(o => ` ${o.name}: ${o.value} `).join('')} ${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return ` ${propertie.name}: View image ` }else{ return ` ${propertie.name}: ${propertie.value} ` } }).join('')} Free gift *${item.quantity} ${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return ` ${discount_item.title} (-) ` }).join('') } `; }).join('')} Add order note Add order note Add order note Add order note Add order note Add order note Total: ${data.total_discount > 0 ? ( ` Save ${data.discount_applications.length > 0 && data.discount_applications.map(item => { return ` ${item.title}: ` }).join('')} ` ) : ''} Check out Taxes and shipping calculated at checkout Total: Check out Taxes and shipping calculated at checkout Your cart is currently empty. Close * Home * All Products * Football shirt * Football * Other Log in Create an account * Home * All Products * Football shirt * Football * Other * More links ${function() { var linkList = [ { id: 72805021, index: 1, title: "Home", url: '/', target: '', tag: "", product0: null , children: [ ] }, { id: 72805023, index: 2, title: "All Products", url: '/collections/all-products', target: '', tag: "", product0: null , children: [ ] }, { id: 72805025, index: 3, title: "Football shirt", url: '/collections/football-shirt', target: '', tag: "", product0: null , children: [ ] }, { id: 72805027, index: 4, title: "\t Football", url: '/collections/football', target: '', tag: "", product0: null , children: [ ] }, { id: 72805029, index: 5, title: "Other", url: '/collections/other', target: '', tag: "", product0: null , children: [ ] }, ].slice(offset); var hasChild = linkList.some(v => (v.children && v.children.length || v.product0)); if (!hasChild) { return ` ${linkList.map(item => ` * ${item.url ? ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `: ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `} ${item.children.length ? ` ` : ''} `).join('')} ` } else { return ` ${linkList.map(item => ` * ${item.url ? ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `: ` ${item.title} ${item.tag ? ` ${item.tag.label} ` : ''} `} ${item.children.length ? ` ` : ''} `).join('')} ${linkList.map(item => ` ${item.children ? ` ${item.children.map(link => { return ` * ${link.url ? ` ${link.title} ${link.tag ? ` ${link.tag.label} ` : ''} `: ` ${link.title} ${link.tag ? ` ${link.tag.label} ` : ''} `} ${link.children ? ` ${link.children.map(link_3 => ` * ${link_3.url ? ` ${link_3.title} ${link_3.tag ? ` ${link_3.tag.label} ` : ''} `: ` ${link_3.title} ${link_3.tag ? ` ${link_3.tag.label} ` : ''} `} `).join('')} ` : ''} `}).join('')} ${function() { const data = item.product0; if (!data) return ''; return ` ` }()} ` : ''} `).join('')} ` } }()} function setSearchUrl(searchValue) { return Promise.resolve({ url: '/search?q=' + searchValue }); } exportFunction('setSearchUrl', setSearchUrl); function setSearchUrl(searchValue) { return Promise.resolve({ url: '/search?q=' + searchValue }); } exportFunction('setSearchUrl', setSearchUrl); ${function() { if (data === undefined || typeof data !== 'string' || data == '') return ` `; if (data === 'close') return ''; return ` View more `; }()} FACTORY DIRECT SALES FACTORY DIRECT SALES Customizable name/number/bu'ding Go Shopping COLLECTION LIST ALL PRODUCTS FOOTBALL SHIRT FOOTBALL OTHER Save - -${data.value} ${function() { var thumbSwitchName = ''; return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const position = `option${index + 1}`; var isThumbImage = false; if (data.product.need_variant_image && thumbSwitchName === '') { const variantNames = [] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i].toLowerCase(); if (name === optionName.toLowerCase()) { isThumbImage = true; thumbSwitchName = name; } } } const variantType = "button"; const thumbStyle = "image"; const mouseEvent = isThumbImage ? ('single-product-variant-template-1735109766562-' + optionName + '.rerender(data=event);') : ''; return (variantType == 'dropdown' && !isThumbImage) ? ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `${value}` }).join('')} ` : ` ${optionName.toLowerCase()} -${data.selectedValues[optionName]} ${option.values.map((value,idx )=> { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = data.product.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} ${value} ` }).join('')} `; }).join('') }()} - ${function() { let availableQuantity = data && data.available_quantity; const lowStock = 5; if (availableQuantity == undefined) { return ''; } availableQuantity = Math.max(availableQuantity, 0); return availableQuantity > lowStock ? ` ${("{stock} in stock, ready to be shipped").replace(/\{*stock*\}/, availableQuantity)} ` : ` ${("Only {count} left!").replace(/\{*count*\}/, availableQuantity)} `; }()} PROFESSIONAL MATCH FOOTBALL FOR MEN PU SIZE 5 FUTBOL CHILD OUTDOOR SPORTS TRAINING BALL HIGH QUALITY ADULT TEAM 2002 SOCCER BALL Price $51.53 $24.22 Save $27.31 color -${data.value} SIZE 5 E SIZE 5 A SIZE 5 B SIZE 5 D SIZE 5 C Quantity Add to cart - $24.22 Buy it now Product was out of stock. Product is unavailable. Avaliability: in stock, ready to be shipped ALL PRODUCTS View all * SALE Spain Custom Soccer Jersey Sets Football Kits Kids Training Outfit Club Personalized Name Number Soccer Uniform for Boys & Girls $15.84 $31.69 - $15.85 * SALE Personalized Black Gold American Football Jersey Custom Printed Team Name Number Fans Gift Men Women Youth Football Top $16.53 $33.06 - $16.53 * SALE Custom American Football Jersey Personalized Blue White Team Printed Name Number Shirt Men Women Youth Kids Training Uniform $16.53 $33.06 - $16.53 * SALE Custom American Football Jersey Red White Personalized Printed Team Name Number Breathable Football Top for Men Women Youth Kids $16.53 $33.06 - $16.53 * SALE Custom American Football Jersey Black Red Personalized Print Team Name Number Men Women Youth Kids Football Training Shirts $16.53 $33.06 - $16.53 * SALE Custom American Football Jersey Blue White Men Women Youth Personalized Printed Team Name Number Football Uniform Fans Gift $16.53 $33.06 - $16.53 * SALE Custom Burgundy White American Football Jersey Personalized Printed Team Name Number Men Women Youth Kids Uniform Fans Gift $16.53 $33.06 - $16.53 * SALE Personalized Navy Gray Green American Football Jersey Custom Print Team Name Number Training Jersey Men Women Youth Fans Shirt $16.53 $33.06 - $16.53 * SALE Custom White Blue American Football Jersey for Men Women Youth Kids Personalized Printed Team Name Number Sportwear Fans Gift $16.53 $33.06 - $16.53 * SALE Custom Red White American Football Jersey for Men Women Youth Kids Personalized Printed Team Name Number Football Top $16.48 $32.96 - $16.48 Sign up and save Subscribe to get special offers, free giveaways, and once-in-a-lifetime deals. Please fill in this field Please enter a valid email address Subscribe Thanks for subscribing Sign Up For Newsletter Subscribe to get special offers, free giveaways, and once-in-a-lifetime deals. Thanks for subscribing FOOTBALL SHOP Factory direct sales, providing the ultimate cost-effectiveness, support customization, welcome to consult. American Express Apple Pay Mastercard PayPal American Express Apple Pay Mastercard PayPal © 2025 xiam ${function(){ const settings_product_title = "title"; const product_grid_image_size = "100%"; const settings_product_image_hover_on = true; let settings_product_save_label = true; const product_sold_out_label = true; const settings_product_swatches_name = []; const settings_collection_color_swatches = true; const variantShowLimit = 4; const private_id = 'product-tmpl-' + Math.random().toFixed(6).slice(-6) const product_variants = data.variants || []; const product_id = data.id; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; if (product_grid_image_size !== 'natural') { imageHeight = (imageWidth * parseFloat(product_grid_image_size)) / 100; } const price = Number(data.price_min); let compareAtPrice = Number(data.compare_at_price); let offRatio = data.off_ratio; const type = data.type; const isMock = data.isMock; let product_image_hover_on = false; for (let i = 0; i < product_variants.length; i++) { const item = product_variants[i]; const vcap = Number(item.compare_at_price); if (item.price == price && vcap > compareAtPrice) { compareAtPrice = vcap; offRatio = item.off_ratio; } } let second_image = null; if (settings_product_image_hover_on) { for (let i = 1; i < images.length; i++) { const img = images[i]; if (img.src && img.src.indexOf('video=') === -1) { second_image = img; product_image_hover_on = true; break; } } } let sold_label_on = false; let sale_label_on = false; if (settings_product_save_label == null) { settings_product_save_label = true; } if (!data.available && product_sold_out_label) { sold_label_on = true; } if (settings_product_save_label && compareAtPrice > price && data.available) { sale_label_on = true; } const diffPrice = compareAtPrice - price; const variantValues = []; const showVariants = []; if (data.need_variant_image && settings_collection_color_swatches && settings_product_swatches_name.length > 0) { for (let i = 0; i < (data.options || []).length; i++) { const option = data.originData.options[i]; const optionName = option.name && option.name.toLowerCase(); if (settings_product_swatches_name.includes(optionName)) { for (let j = 0; j < product_variants.length; j++) { const variant = product_variants[j]; const value = variant.options[i].value; if (!variantValues.includes(value)) { variantValues.push(value); showVariants.push(variant); } } break; } } } return ` ${function(){ if(showVariants.length == 0){ return ` ` } return ` ${ showVariants.map(item=>{ return ` `; }).join('') } ` }() } SOLD OUT SALE ${ showVariants.slice(0,variantShowLimit).map((item,index)=>{ return ` `; }).join('') } +${showVariants.length - variantShowLimit} ${(settings_product_title === 'sub_title' && data.brief) ? data.brief : data.title} - ${data.available ? ` ` : ''} `; }()} CART Your cart is reserved for ${data.mm}m ${data.ss}s ! ${data.line_items.map(item => { return ` ${item.product_title} ${item.options.map(o => ` ${o.name}: ${o.value} `).join('')} ${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return ` ${propertie.name}: View image ` }else{ return ` ${propertie.name}: ${propertie.value} ` } }).join('')} Free gift *${item.quantity} ${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return ` ${discount_item.title} (-) ` }).join('') } `; }).join('')} cart cart Your cart is currently empty. Continue shopping Add order note Add order note Total: ${data.total_discount > 0 ? ( ` Save ${data.discount_applications.length > 0 && data.discount_applications.map(item => { return ` ${item.title}: ` }).join('')} ` ) : ''} Check out Taxes and shipping calculated at checkout Add order note Add order note Total: ${data.total_discount > 0 ? ( ` Save ${data.discount_applications.length > 0 && data.discount_applications.map(item => { return ` ${item.title}: ` }).join('')} ` ) : ''} Check out Taxes and shipping calculated at checkout ${function(){ const productData = data.product; const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; const product_options = productData.options.filter(Boolean) || []; const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, ''); const mouseoutevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseout="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const mouseoverevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseover="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); return ` Price ${function() { const origin = "shop" const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? ` Save ` : ` - `; }()} Quantity ${selectedVariant.available ? "Add to cart" : "SOLD OUT"} Buy it now Product was out of stock. Product is unavailable. ${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-shop-exact-inventory-render"; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return ` Avaliability: Out of stock in stock, ready to be shipped Low stock `; }()} ` }()} ${function(){ let thumbSwitchName = ''; return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; const position = `option${index + 1}`; let isThumbImage = false; const thumbStyle = "image"; const variantType = "button"; if (data.product.need_variant_image && thumbSwitchName === '') { const variantNames = [] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i].toLowerCase(); if (name === optionName.toLowerCase()) { isThumbImage = true; thumbSwitchName = name; } } } return (variantType == 'dropdown' && !isThumbImage) ? ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `${value}` }).join('')} ` : ` ${optionName}: ${data.selectedValues[optionName]} ${option.values.map((value,idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = data.product.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} ` }).join('')} ` }).join('') }()} ${function(){ const { currentOptName, originData: { selectData, value } } = data; const optionValue = selectData ? selectData[currentOptName].value[0] : value; return `${optionValue}` }()} Save - const carousel = document.getElementById('quick-view-images'); const selecotr = document.getElementById('quick-view-thumb-images'); const resizeObserver = new ResizeObserver(entries => { for (let entry of entries) { const { height } = entry.contentRect; selecotr.style.height = height + 'px'; } }); resizeObserver.observe(carousel); ${function(){ const remove_variant_images_on = false; let product_swatches_name = []; product_swatches_name = product_swatches_name.map((name) => name.toLowerCase()); const variantsNamesSet = new Set(data.options.map((opt) => opt.name.toLowerCase()) || []); const containsSwatches = product_swatches_name.some((name) => variantsNamesSet.has(name)); const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, ''); const mouseoutevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseout="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const mouseoverevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseover="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const variants = data?.variants?.map((item) => item.image.path) || []; const productData = data; let images = data.images; if(remove_variant_images_on && containsSwatches) { images = data.images.filter((img) => !variants.includes(img.path)); } const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0; const initialSlide = selectedIndex === -1 ? 0 : selectedIndex; return ` ${images.map((image, index) => ` `).join('')} ${images.map(image => ` `).join('')} ${images.length > 1 ? ` ` : ''} ${data.title} Price ${function() { const origin = "view" const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? ` Save ` : ` - `; }()} Quantity ${selectedVariant.available ? "Add to cart" : "SOLD OUT"} Buy it now Product was out of stock. Product is unavailable. ${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const exactInventoryStatusId = "quick-view-exact-inventory-render"; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return ` Avaliability: Out of stock in stock, ready to be shipped Low stock `; }()} ` }()} ${function(){ let thumbSwitchName = ''; return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; const position = `option${index + 1}`; let isThumbImage = false; const thumbStyle = "image"; const variantType = "button"; if (data.product.need_variant_image && thumbSwitchName === '') { const variantNames = [] || []; for (let i = 0, len = variantNames.length; i < len; i++) { const name = variantNames[i].toLowerCase(); if (name === optionName.toLowerCase()) { isThumbImage = true; thumbSwitchName = name; } } } return (variantType == 'dropdown' && !isThumbImage) ? ` ${optionName.toLowerCase()} ${option.values.map(value => { const selected = data.selectedValues[optionName] == value ? 'selected' : ''; return `${value}` }).join('')} ` : ` ${optionName}: ${data.selectedValues[optionName]} ${option.values.map((value,idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; if (isThumbImage) { const variants = data.product.variants; for (let i = 0, len = variants.length; i < len; i++) { const variant = variants[i]; if (variant[position] == value && thumbImage == null) { thumbImage = variant.image; break; } } } return ` ${value} ` }).join('')} ` }).join('') }()} ${function(){ const { currentOptName, originData: { selectData, value } } = data; const optionValue = selectData ? selectData[currentOptName].value[0] : value; return `${optionValue}` }()} Save - - 111 GIFTS POINTS