PageSourceSearch

https://www.lovisa.co.uk/cdn/shop/t/811/assets/component-product-card-new.js?v=33465185094190940691789977862

js lovisa.co.uk collected 2026-09-26 13:25:30 UTC 39,459 bytes, 245 lines download raw bytes

1window.fixProductImage=function(imgEl){const productHandle=imgEl.dataset.productImage;productHandle&&fetch(`https://${window.Shopify.shop}/api/2025-10/graphql.json`,{method:"POST",headers:{"Content-Type":"application/graphql","X-Shopify-Storefront-Access-Token":window.theme.storefrontAPIToken},body:`query {
2        product(handle: "${productHandle}") {
3          images(first: 1) {
4            nodes {
5              url(transform: { maxWidth: 640 })
6            }
7          }
8        }
9      }`}).then(res=>res.json()).then(data=>{data&&data.data&&data.data.product&&data.data.product.images&&data.data.product.images.nodes&&data.data.product.images.nodes[0]&&data.data.product.images.nodes[0].url?imgEl.src=data.data.product.images.nodes[0].url:imgEl.style.opacity=0})};function formatPriceWithSup(price){const formatted=slate.Currency.formatMoney(price,window.theme.moneyFormat).replace(/<\/?[^>]+(>|$)/g,""),symbol=window.theme.currentCurrencySymbol;return formatted.includes(symbol)?formatted.replace(symbol,`<em class="currency-symbol">${symbol}</em>`):`<em class="currency-symbol">${symbol}</em>${slate.Currency.removeCurrencySymbol(formatted)}`}function productPriceHtml(product){const currentVariant=product.variants&&product.variants.length>0?product.variants.find(v=>v.available)||product.variants[0]:{},productPrice=currentVariant.price||product.price,compareAtPrice=currentVariant.compareAtPrice||currentVariant.compareAtPrice||currentVariant.compare_at_price||currentVariant.compare_at_price||0;return`<div class="product-card__price product-card--flex" data-original-price="${productPrice}">
10                      <span class="product-prices ${compareAtPrice>productPrice?"discounted":""}">
11                          ${compareAtPrice>productPrice?`
12                              <span class="product-price-regular">
13                                ${formatPriceWithSup(compareAtPrice)}
14                              </span>
15                              <span class="sale-price-text-color product-price-discounted" data-product-price>
16                                ${formatPriceWithSup(productPrice)}
17                              </span>
18                          `:`
19                              <span class="product-price-regular" data-product-price>
20                                ${formatPriceWithSup(productPrice)}
21                              </span>
22                          `}
23                      </span>
24                      <span class="product-price-varies">
25                          ${product.price_varies?window.theme.strings.fromPrice||"From":""}
26                      </span>
27                       ${compareAtPrice&&compareAtPrice>productPrice?`<span class="product-per-off${window.theme.showPerOffMobile!==!1?" show-per-off-mobile":""}${window.theme.showPerOffDesktop!==!1?" show-per-off-desktop":""}">(-${100-Math.round(productPrice/compareAtPrice*100)}%)</span>`:""}
28                    </div>`}function predictiveSearchPriceHtml(product){const currentVariant=product.variants&&product.variants.length>0?product.variants.find(v=>v.available)||product.variants[0]:{},productPrice=currentVariant.price||product.price,compareAtPrice=currentVariant.compare_at_price||product.compare_at_price||0;return`<span class="product-prices ${compareAtPrice>productPrice?"discounted":""}">
29          ${compareAtPrice&&compareAtPrice>productPrice?`<span class="product-price-regular">${formatPriceWithSup(compareAtPrice)}</span>
30              <span class="sale-price-text-color product-price-discounted">${formatPriceWithSup(productPrice)}</span>`:`<span class="product-price-regular">${formatPriceWithSup(productPrice)}</span>`}
31          </span>
32          ${compareAtPrice&&compareAtPrice>productPrice?`<span class="product-per-off${window.theme.showPerOffMobile!==!1?" show-per-off-mobile":""}${window.theme.showPerOffDesktop!==!1?" show-per-off-desktop":""}">(-${100-Math.round(productPrice/compareAtPrice*100)}%)</span>`:""}`}function promoCardPriceHtml(product){const productPrice=(product.variants&&product.variants.length>0?product.variants.find(v=>v.available)||product.variants[0]:{}).price||product.price;return`<div class="price">${formatPriceWithSup(productPrice)}</div>`}if(window.updateProductData=function(productData){productData.forEach(product=>{const sku=(product.variants&&product.variants.length>0?product.variants.find(v=>v.available)||product.variants[0]:{}).sku||product.sku||!1,productCards=document.querySelectorAll('[data-component="ProductCard"][data-sku="'+sku+'"]');productCards.length&&productCards.forEach(productCard=>
32{const productPrice=productCard.querySelector(".product-card__price");productPrice&&(productPrice.outerHTML=productPriceHtml(product))});const productSearchCards=document.querySelectorAll('predictive-search-results [data-sku="'+sku+'"]');productSearchCards.length&&productSearchCards.forEach(productCard=>{const productPrice=productCard.querySelector(".product-card__price");productPrice&&(productPrice.innerHTML=predictiveSearchPriceHtml(product))});const productPromoCards=document.querySelectorAll('.promotion[data-sku="'+sku+'"]');productPromoCards.length&&productPromoCards.forEach(productCard=>{const productPrice=productCard.querySelector(".price");productPrice&&(productPrice.innerHTML=promoCardPriceHtml(product))})})},window.getProductPrices=function(variantIds){variantIds=variantIds.map(variantId=>typeof variantId=="string"?variantId.replace("gid://shopify/ProductVariant/"):variantId);let allProducts=getAllProducts(),missingProducts=[];if(allProducts.length){const productData=[];variantIds.forEach(variantId=>{const product=allProducts.find(prod=>prod.variants.some(variant=>variant.id==variantId||variant.id=="gid://shopify/ProductVariant/"+variantId));product?productData.push({handle:product.handle,id:product.id,sku:product.sku,variants:product.variants.map(variant=>({id:variant.id,price:variant.price*100,compareAtPrice:variant.compareAtPrice?variant.compareAtPrice*100:0,available:variant.available}))}):missingProducts.push(variantId)}),window.updateProductData(productData)}else missingProducts=variantIds;missingProducts.length&&fetch(`https://${window.Shopify.shop}/api/2025-10/graphql.json`,{method:"POST",headers:{"Content-Type":"application/graphql","X-Shopify-Storefront-Access-Token":window.theme.storefrontAPIToken},body:`
33            query getProducts @inContext(country: ${Shopify.country}) {
34              ${variantIds.map(id=>id?`p_${id}: node(id: "gid://shopify/ProductVariant/${id}") {
35                  id
36                  ... on ProductVariant {
37                    id
38                    product {
39                      id
40                      variants(first: 250) {
41                        edges {
42                          node {
43                            id
44                            sku
45                            title
46                            availableForSale
47                            price {
48                              amount
49                            }
50                            compareAtPrice {
51                              amount
52                            }
53                          }
54                        }
55                      }
56                    }
57                  }
58                }`:"").join(`
59`)}
60
61            }
62          `}).then(res=>res.json()).then(json=>{console.log("GOT PRODUCT PRICES FROM VARIANT IDS");const productData=[];Object.keys(json.data).forEach(key=>{const product=json.data[key]?.product;product&&productData.push({id:product.id.split("/").pop(),variants:product.variants.edges.map(variant=>({id:variant.node.id.split("/").pop(),available:variant.node.availableForSale,sku:variant.node.sku,price:variant.node.price?variant.node.price.amount*100:null,compareAtPrice:variant.node.compareAtPrice?variant.node.compareAtPrice.amount*100:null}))||[]})}),window.updateProductData(productData)})},window.renderProductCard=function(product,settings={}){const{modifiers="",heading="h4",type=null,viaFeature=null,gridSizing="medium-down--one-half medium-up--one-quarter"}=settings,escape=str=>str==null?"":String(str).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"),getSizedImageUrl=(src,size)=>src?typeof src=="string"?src.replace(/(\.[^.]*)$/,`_${size}$1`):src:"",currentVariant=product.variants&&product.variants.length>0?product.variants.find(v=>v.available)||product.variants[0]:{},productPrice=product.price,compareAtPrice=product.compare_at_price||0,isAvailable=product.available===void 0?currentVariant.available:product.available,tags=product.tags||[];let badgeStyles="",badge="",fomoBadgeStyle="",hasCollectionMetaBadge=!1,collectionMetaBadgeText="",collectionMetaBadgeColor="",collectionMetaBadgeBackgroun
62dColor="",displayBottom=!1,quickviewBadgeCounter=0,quickviewBadgeHtml="";const collectionMetaobjects=window.theme.collectionMetaobjects||[];if(product.collections){for(const meta of collectionMetaobjects)if(meta.collections&&meta.collections.length>0&&meta.collections.some(c=>product.collections.some(pc=>String(pc.handle)===String(c.handle)))){hasCollectionMetaBadge=!0,collectionMetaBadgeText=meta.badge_text,collectionMetaBadgeColor=meta.badge_text_color,collectionMetaBadgeBackgroundColor=meta.badge_background_color,meta.display_below_product_image&&(displayBottom=meta.display_below_product_image),badge=meta.badge_text,badgeStyles=`background-color: ${meta.badge_background_color}; color: ${meta.badge_text_color};`,meta.badge_border_color&&(badgeStyles+=` border-color:${meta.badge_border_color};`),meta.opacity&&(badgeStyles+=` opacity:${meta.opacity};`),meta.fomo_style==!0?fomoBadgeStyle="fomo-badge":meta.default_style==!0&&(fomoBadgeStyle="default-badge");break}}if(!badge){for(const tag of tags)if(tag.includes("badge:")){const parts=tag.split(":");if(badge=parts[1],badgeStyles="",parts[2]&&(badgeStyles+=`background-color: ${parts[2]};`),parts[3]&&(badgeStyles+=` color: ${parts[3]};`),badge.toLowerCase()==="new")break}}let offer="",offerProperty="";if(offer){const offerArray=offer.split("-");offerArray.length>1&&(offerProperty=`${offerArray[0]}-${offerArray[offerArray.length-1]}`)}let classes="product-card product-card--quick";modifiers&&modifiers.split(" ").forEach(mod=>classes+=` product-card--${mod}`);let dataAttrs=`class="${classes}"`;offerProperty&&(dataAttrs+=` data-offer="${offerProperty}"`),dataAttrs+=' data-component="ProductCard"',dataAttrs+=` data-product-title="${escape(product.title)}"`,currentVariant.sku&&(dataAttrs+=` data-sku="${currentVariant.sku}"`),dataAttrs+=` data-value="${productPrice/100}"`,dataAttrs+=` data-product-vendor="${escape(product.vendor)}"`,dataAttrs+=` data-product-type="${escape(product.type)}"`,type&&(dataAttrs+=` data-type="${type}"`);let productUrl=product.url;if(viaFeature&&type){const sep=productUrl.includes("?")?"&":"?";productUrl+=`${sep}via-feature=${viaFeature}&feature-type=${type}`}const featuredImage=product.featured_image||(product.images?product.images[0]:""),secondaryImage=product.images&&product.images[1],isOnlyInStore=tags.some(tag=>typeof tag=="string"&&tag.trim().toLowerCase()==="in-store");let promoHtml="",promo_callouts=window.theme.promo_callout_metaobject,promo_status=!1,promo_text="",promo_style="",promo_link="";const matchedCurrentCollection=promo_callouts.find(c=>String(c.handle||c.collection_url?.split("/").pop())===String(window.theme.currentPageHandle));if(matchedCurrentCollection)promo_text=matchedCurrentCollection.promo_text,promo_style=matchedCurrentCollection.text_colour,promo_link=`/collections/${window.theme.currentPageHandle}`,promo_status=!0;else if(promo_callouts&&product.collections)for(const promo of promo_callouts){const promoHandle=promo.handle||promo.collection_url?.split("/").pop(),matchedCollection=product.collections.find(c=>{const cHandle=typeof c=="object"&&c!==null?c.handle:c,cId=typeof c=="object"&&c!==null?c.id:null;return cId&&String(cId)===String(promo.id)||cHandle&&String(cHandle)===String(promoHandle)});if(matchedCollection){promo_text=promo.promo_text,promo_style=promo.text_colour,promo_link=`/collections/${matchedCollection.handle||promoHandle}`,promo_status=!0;break}}const multibuy_offer_discounts=window.theme.multibuy_offer_discounts||[];for(let i=0;i<multibuy_offer_discounts.length;i++){const offer2=multibuy_offer_discounts[i],discount_type=offer2.discount_type,discount_key=offer2.discount_key||"",collection_handle=offer2.collectionHandle||"",collectionTitle=offer2.collectionTitle||"";if(offer2.active===!1||offer2.active==="false"||!discount_key&&!collection_handle)continue;const currentPageHandle=window.theme&&window.theme.currentPageHandle?String(window.theme.currentPageHandle):window.location.pathname.includes("/collections/")?window.location.pathname.split("/collections/")[1].split("/")[0].split("?")[0]:"";let isMatch=!1;if((discount_type==="collection"||!discount_type)&&(collection_handle&&currentPageHandle&&String(currentPageHandle)===String(collection_handle)&&(isMatch=!0),!isMatch&&discount_key&&currentPageHandle&&String(currentPageHandle)===String(discount_key)&&(isMatch=!0),!isMatch&&product.collections&&Array.isArray(product.collections)&&(isMatch=product.collections.some(function(c){if(!c)return!1;const cHandle=typeof c=="object"&&c!==null?c.handle:typeof c=="string"?c:null,cTitle=typeof c=="object"&&c!==null?c.title:typeof c=="string"?c:null,cId=typeof c=="object"&&c!==null?c.id:typeof c=="number"||typeof c=="string"?c:null;return!!(collection_handle&&cHandle&&String(cHandle)===String(collection_handle)||discount_key&&(cHandle&&String(cHandle)===String(discount_key)||cTitle&&String(cTitle)===String(discount_key))||collectionTitle&&cTitle&&String(cTitle)===String(collectionTitle)||offer2.id&&cId&&String(cId)===String(offer2.id))})),!isMatch&&product.tags&&Array.isArray(product.tags)&&(collection_handle&&product.tags.includes(collection_handle)&&(isMatch=!0),!isMatch&&discount_key&&product.tags.includes(discount_key)&&(isMatch=!0))),!isMatch&&(discount_type==="tag"||!discount_type)&&product.tags&&Array.isArray(product.tags)&&(discount_key&&product.tags.includes(discount_key)&&(isMatch=!0),!isMatch&&collection_handle&&product.tags.includes(collection_handle)&&(isMatch=!0)),isMatch){promo_text=offer2.description||offer2.title||"",promo_link=offer2.collectionUrl||(collection_handle?`/collections/${collection_handle}`:discount_key?`/collections/all/tagged/${discount_key}`:"#"),promo_style=offer2.color||"",promo_status=!0;break}}promo_status&&(promoHtml=`
63            <a href="${promo_link}"${promo_style?` style="color:${promo_style}"`:""} class="promo_callout" data-text="${promo_text.replace(/\"|\'/g,"").replace(/\s/g,"")}" data-currency="${window.theme.currentCurrency}">
64                <svg class="plp-promo-img" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
65                  <path d="M3.65389 9.52002L2.72989 6.95802C2.61322 7.00469 2.30709 7.10922 1.73589 7.32202C1.0079 7.61602 1.03359 8.13402 1.06389 8.28802C1.1059 8.66602 1.4979 9.59059 1.67989 9.75802C1.92337 9.98202 2.45922 9.94002 2.67389 9.87002L3.65389 9.52002Z" fill="currentColor"/>
66                  <path d="M4.0879 9.35202L3.1639 6.79002C4.4855 6.29722 5.92657 4.87669 6.4819 4.22802C6.94857 5.52535 7.9631 8.33282 8.2879 9.18402C6.585
665 8.87042 4.77857 9.16535 4.0879 9.35202Z" fill="currentColor"/>
67                  <path d="M4.3679 9.73002L3.0799 10.192C3.4719 10.57 4.3063 11.3792 4.5079 11.592C4.7179 11.858 4.9979 11.886 5.1799 11.774C5.3927 11.6172 5.34324 11.3634 5.2919 11.256L4.3679 9.73002Z" fill="currentColor"/>
68                  <path d="M7.0839 3.24802C6.7591 3.36002 6.7619 3.68669 6.8039 3.83602C7.42924 5.54869 8.7023 9.04122 8.7919 9.31002C8.8899 9.52002 9.1979 9.63202 9.4079 9.53402C9.6543 9.42202 9.6879 9.15135 9.6739 9.03002C9.06724 7.36869 7.8147 3.93962 7.6579 3.51402C7.5739 3.30402 7.3219 3.16402 7.0839 3.24802Z" fill="currentColor"/>
69                  <path d="M11.0422 2.24694C11.1472 2.02294 11.0492 1.74994 10.8322 1.64494C10.6152 1.53994 10.3352 1.64494 10.2302 1.86194L9.64217 3.09394C9.53717 3.31794 9.63517 3.58394 9.85217 3.69594C10.0692 3.80794 10.3492 3.70994 10.4542 3.48594L11.0422 2.25394V2.24694Z" fill="currentColor"/>
70                  <path d="M11.4761 4.613C11.2451 4.697 11.1261 4.95599 11.2031 5.18699C11.2801 5.41799 11.5461 5.544 11.7771 5.46L13.0441 5.005C13.2751 4.928 13.4011 4.66199 13.3171 4.43099C13.2331 4.20699 12.9741 4.08099 12.7431 4.15799L11.4691 4.60599L11.4761 4.613Z" fill="currentColor"/>
71                  <path d="M12.5401 8.38602C12.7641 8.49102 13.0371 8.39302 13.1421 8.17602C13.2471 7.95902 13.1421 7.67902 12.9251 7.57402L11.6931 6.98602C11.4691 6.88102 11.1961 6.97202 11.0911 7.19602C10.9861 7.42002 11.0841 7.69302 11.3011 7.79802L12.5331 8.38602H12.5401Z" fill="currentColor"/>
72                </svg>
73                <svg class="quickview-promo-img" style="display:none;" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
74                    <path d="M0.912008 10.752C1.28001 11.776 2.00801 12.2 3.00001 11.984L4.68001 13.696C5.11201 14.136 5.53601 14.272 6.03201 14.096C6.67201 13.864 6.96801 13.232 6.56801 12.552L5.73601 11.152C6.97601 10.952 8.30401 10.952 9.60801 11.176C9.92001 11.568 10.416 11.704 10.944 11.52C11.608 11.28 11.896 10.648 11.656 9.98397L9.40001 3.79197C9.16001 3.12797 8.52801 2.83197 7.86401 3.07197C7.32801 3.26397 7.03201 3.71997 7.06401 4.23197C6.07201 5.43997 4.63201 6.52797 3.38401 7.13597L1.88801 7.67997C0.688008 8.11197 0.272008 8.97597 0.688008 10.136L0.912008 10.744V10.752ZM10.176 10.528L7.92001 4.33597C7.84801 4.12797 7.93601 3.93597 8.14401 3.86397C8.35201 3.79197 8.54401 3.87997 8.61601 4.08797L10.872 10.28C10.944 10.488 10.856 10.68 10.656 10.752C10.456 10.824 10.256 10.736 10.184 10.528H10.176ZM4.76001 10.52L3.79201 7.85597C5.16801 7.15997 6.38401 6.25597 7.33601 5.14397L9.21601 10.32C7.74401 10.072 6.24801 10.168 4.752
7401 10.52H4.76001ZM3.12801 11.088C2.36801 11.368 1.96001 11.192 1.69601 10.472L1.47201 9.86397C1.20801 9.14397 1.40801 8.75197 2.17601 8.47197L3.02401 8.16797L3.97601 10.792L3.12801 11.096V11.088ZM5.33601 13.216L3.82401 11.72L4.88801 11.336C4.88801 11.336 4.92001 11.336 4.93601 11.32L5.89601 12.912C6.02401 13.112 5.94401 13.296 5.76001 13.368C5.59201 13.424 5.48801 13.368 5.33601 13.216Z" fill="currentColor"/>
75                    <path d="M12.832 2.56805C12.952 2.31205 12.84 2.00005 12.592 1.88005C12.344 1.76005 12.024 1.88005 11.904 2.12805L11.232 3.53605C11.112 3.79205 11.224 4.09605 11.472 4.22405C11.72 4.35205 12.04 4.24005 12.16 3.98405L12.832 2.57605V2.56805Z" fill="currentColor"/>
76                    <path d="M13.328 5.27199C13.064 5.36799 12.928 5.66399 13.016 5.92799C13.104 6.19199 13.408 6.33599 13.672 6.23999L15.12 5.71999C15.384 5.63199 15.528 5.32799 15.432 5.06399C15.336 4.80799 15.04 4.66399 14.776 4.75199L13.32 5.26399L13.328 5.27199Z" fill="currentColor"/>
77                    <path d="M14.544 9.58402C14.8 9.70402 15.112 9.59202 15.232 9.34402C15.352 9.09602 15.232 8.77602 14.984 8.65602L13.576 7.98402C13.32 7.86402 13.008 7.96802 12.888 8.22402C12.768 8.48002 12.88 8.79202 13.128 8.91202L14.536 9.58402H14.544Z" fill="currentColor"/>
78                </svg>
79                <span>${theme.CurrencySwitcher.getCurrencyHTML(promo_text,!1,!0)}</span>
80            </a>
81            `);let html=`<div class="html2 product-card-wrapper quickview-open ${gridSizing}">
82  <a href="${productUrl}" title="${escape(product.title)}" class="collection__product-link">
83  <div ${dataAttrs}>`;if(featuredImage){if(html+=`<div class="product-card__image ">
84                 <div class="product-card__image--wrapper">`,product.images&&product.images.length>1)if(window.innerWidth>=theme.settings.grid_medium)html+=`<div data-image-slider>
85                      <span class="primary-image">
86                          <div class="product-card__image--cover"></div>
87                          ${`<img src="${getSizedImageUrl(featuredImage,"640x")}" class="product-card__img" alt="${escape(product.title)}" />`}
88                      </span>
89                      <span class="secondary-image">
90                          <div class="product-card__image--cover"></div>
91                          ${`<img src="${getSizedImageUrl(secondaryImage,"640x")}" class="product-card__img" alt="${escape(product.title)}" />`}
92                      </span>
93                    </div>`;else{let slider_html="";product.images.forEach(function(image){slider_html=`${slider_html}
94            <div class="product-card-image swiper-slide"> 
95              <div class="product-card__image--cover"></div>
96              ${`<img src="${getSizedImageUrl(image,"640x")}" class="product-card__img" alt="${escape(product.title)}" />`}
97            </div>
98            `}),html+=`<product-card-slider class="image_slider" data-image-slider>
99                <div class="swiper">
100                  <div class="swiper-wrapper">
101                    ${slider_html}
102                  </div>
103                  <div class="swiper-pagination"></div>
104                </div>
105              </<product-card-slider>
106            `}else html+=`<img src="${getSizedImageUrl(featuredImage,"640x")}" class="product-card__img" data-product-handle="${escape(product.handle)}" onerror="window.fixProductImage(this)" alt="${escape(product.title)}" />`;html+="</div>",html+=`<div class="product-card__actions ${isOnlyInStore?"hide":""}">`,html+=`     <form action="/cart/add" method="post" enctype="multipart/form-data" class="form">
107                        <input type="hidden" name="quantity" value="1">
108                        <select name="id" class="no-js" aria-label="${window.theme.strings.selectVariant}" data-product-select>
109                            ${product.variants.map(variant=>`
110                                <option value="${variant.id}" 
111                                    ${variant.id===currentVariant.id?'selected="selected"':""}
112                                    ${variant.available?"":'disabled="disabled"'}>
113                                    ${escape(variant.title)}
114                                </option>
115                            `).join("")}
116                        </select>
117                        
118                        ${product.has_only_default_variant?`
119                            ${isOnlyInStore?"":`
120                                <button class="product__add" type="submit" name="add" data-add-to-cart aria-label="${window.theme.strings.addToCart}" ${currentVariant.available?"":'disabled="disabled"'}>
121                                <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
122                                        <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" fill="white" fill-opacity="0.5"/>
123                                        <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" stroke="#999999" stroke-width="0.5"/>
124                                        <g clip-path="url(#clip0_750_7208)">
125                                        <path d="M22.6755 11.5823C22.5551 11.4619 22.382 11.3866 22.2089 11.3866H19.477C19.4544 10.4911 19.0932 9.65569 18.461 9.01599C17.8288 8.37629 16.9332 8 16 8C15.0668 8 14.1938 8.36124 13.5391 9.01599C12.9069 9.64817 12.5457 10.4911 12.5231 11.3866H9.79118C9.61809 11.3866 9.45252 11.4544 9.32458 11.5823C9.19664 11.7103 9.12891 11.8758 9.12891 12.0489V23.3377C9.12891 23.5108 9.19664 23.6839 9.32458 23.8043C9.45252 23.9247 9.61056 24 9.79118 24H22.2089C22.382 24 22.5551 23.9323 22.6755 23.8043C22.7959 23.6764 22.8711 23.5108 22.8711 23.3377V12.0489C22.8711 11.8758 22.8034 
12511.7027 22.6755 11.5823ZM21.5541 19.2888H10.4535V12.7037H12.5231V14.2992C12.5231 14.4722 12.5908 14.6453 12.7187 14.7658C12.8467 14.8862 13.0047 14.9614 13.1854 14.9614H13.8476V12.7037H18.175V14.9614H18.8373C19.0104 14.9614 19.1835 14.8937 19.3039 14.7658C19.4243 14.6378 19.4996 14.4722 19.4996 14.2992V12.7037H21.5692V19.2888H21.5541ZM10.4535 20.6058H21.5541V22.6754H10.4535V20.6058ZM13.8401 11.3866C13.8627 10.8448 14.0885 10.3405 14.4723 9.9492C14.8787 9.5428 15.4281 9.31703 16 9.31703C16.572 9.31703 17.1214 9.5428 17.5278 9.9492C17.9116 10.333 18.1374 10.8523 18.16 11.3866H13.8401Z" fill="#333333"/>
126                                        </g>
127                                        <defs>
128                                        <clipPath id="clip0_750_7208">
129                                        <rect width="13.7422" height="16" fill="white" transform="translate(9.12891 8)"/>
130                                        </clipPath>
131                                        </defs>
132                                    </svg>
133                                </button>
134                                <button class="product__add--mobile" type="submit" name="add" data-add-to-cart aria-label="${window.theme.strings.addToCart}">
135                                <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
136                                        <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" fill="white" fill-opacity="0.5"/>
137                                        <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" stroke="#999999" stroke-width="0.5"/>
138                                        <g clip-path="url(#clip0_750_7208)">
139                                        <path d="M22.6755 11.5823C22.5551 11.4619 22.382 11.3866 22.2089 11.3866H19.477C19.4544 10.4911 19.0932 9.65569 18.461 9.01599C17.8288 8.37629 16.9332 8 16 8C15.0668 8 14.1938 8.36124 13.5391 9.01599C12.9069 9.64817 12.5457 10.4911 12.5231 11.3866H9.79118C9.61809 11.3866 9.45252 11.4544 9.32458 11.5823C9.19664 11.7103 9.12891 11.8758 9.12891 12.0489V23.3377C9.12891 23.5108 9.19664 23.6839 9.32458 23.8043C9.45252 23.9247 9.61056 24 9.79118 24H22.2089C22.382 24 22.5551 23.9323 22.6755 23.8043C22.7959 23.6764 22.8711 23.5108 22.8711 23.3377V12.0489C22.8711 11.8758 22.8034 
13911.7027 22.6755 11.5823ZM21.5541 19.2888H10.4535V12.7037H12.5231V14.2992C12.5231 14.4722 12.5908 14.6453 12.7187 14.7658C12.8467 14.8862 13.0047 14.9614 13.1854 14.9614H13.8476V12.7037H18.175V14.9614H18.8373C19.0104 14.9614 19.1835 14.8937 19.3039 14.7658C19.4243 14.6378 19.4996 14.4722 19.4996 14.2992V12.7037H21.5692V19.2888H21.5541ZM10.4535 20.6058H21.5541V22.6754H10.4535V20.6058ZM13.8401 11.3866C13.8627 10.8448 14.0885 10.3405 14.4723 9.9492C14.8787 9.5428 15.4281 9.31703 16 9.31703C16.572 9.31703 17.1214 9.5428 17.5278 9.9492C17.9116 10.333 18.1374 10.8523 18.16 11.3866H13.8401Z" fill="#333333"/>
140                                    </g>
141                                    <defs>
142                                    <clipPath id="clip0_750_7208">
143                                    <rect width="13.7422" height="16" fill="white" transform="translate(9.12891 8)"/>
144                                    </clipPath>
145                                    </defs>
146                                </svg>
147                            </button>
148                            `}
149                        `:`
150                            <div class="product-card__variant-picker product-card__variant-picker--with-options">
151                                <span class="variant-picker__message visually-hidden" tabindex="-1">${window.theme.strings.selectOption}</span>
152                                <div role="list" class="product-card__variants">
153                                    ${product.variants.map(variant=>`
154                                        <div role="listitem" class="product-card__variant-container">
155                                            <button class="btn btn--text add-product-variant" data-variant-id="${variant.id}" ${variant.available?"":"disabled"}>${escape(variant.title)}</button>
156                                        </div>
157                                    `).join("")}
158                                     <div role="listitem" class="product-card__variant-container">
159                                        <button type="button" class="close-show-variants" aria-label="${window.theme.strings.closeVariants||"Close"}">
160                                            <svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg">
161                                                <path id="close" d="M1.6129 0.234883C1.29972 -0.0782944 0.791957 -0.0782944 0.47878 0.234883C0.165602 0.548061 0.165602 1.05582 0.47878 1.369L5.10978 6L0.478828 10.631C0.16565 10.9441 0.16565 11.4519 0.478828 11.7651C0.792005 12.0782 1.29977 12.0782 1.61294 11.7651L6.2439 7.13412L10.8748 11.7651C11.188 12.0782 11.6958 12.0782 12.009 11.7651C12.3221 11.4519 12.3221 10.9441 12.009 10.631L7.37801 6L12.009 1.369C12.3222 1.05582 12.3222 0.548061 12.009 0.234883C11.6958 -0.0782944 11.1881 -0.0782944 10.8749 0.234883L6.2439 4.86588L1.6129 0.234883Z" fill="#999999"/>
162                                            </svg>
163                                        </button>
164                                     </div>
165                                </div>
166                                <div role="list" class="product-card__mobile-variants">
167                                    ${product.variants.map(variant=>`
168                                        <div role="listitem">
169                                            <button class="product-card__variant add-product-variant" data-variant-id="${variant.id}" ${variant.available?"":"disabled"} aria-label="Select variant ${escape(variant.title)} for ${escape(product.title)}">
170                                                <span class="product-card__variant-text">${escape(variant.title)}</span> 
171                                                <!-- Icon Checkmark Omitted for brevity, can add if needed -->
172                                            </button>
173                                        </div>
174                                    `).join("")}
175                                </div>
176                            </div>
177                            
178                            <button class="product__add--show-variants" type="button" aria-label="${window.theme.strings.addToCart}" ${currentVariant.available?"":'disabled="disabled"'}>
179                                <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
180                                    <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" fill="white" fill-opacity="0.5"/>
181                                    <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" stroke="#999999" stroke-width="0.5"/>
182                                    <g clip-path="url(#clip0_750_7208)">
183                                    <path d="M22.6755 11.5823C22.5551 11.4619 22.382 11.3866 22.2089 11.3866H19.477C19.4544 10.4911 19.0932 9.65569 18.461 9.01599C17.8288 8.37629 16.9332 8 16 8C15.0668 8 14.1938 8.36124 13.5391 9.01599C12.9069 9.64817 12.5457 10.4911 12.5231 11.3866H9.79118C9.61809 11.3866 9.45252 11.4544 9.32458 11.5823C9.19664 11.7103 9.12891 11.8758 9.12891 12.0489V23.3377C9.12891 23.5108 9.19664 23.6839 9.32458 23.8043C9.45252 23.9247 9.61056 24 9.79118 24H22.2089C22.382 24 22.5551 23.9323 22.6755 23.8043C22.7959 23.6764 22.8711 23.5108 22.8711 23.3377V12.0489C22.8711 11.8758 22.8034 
18311.7027 22.6755 11.5823ZM21.5541 19.2888H10.4535V12.7037H12.5231V14.2992C12.5231 14.4722 12.5908 14.6453 12.7187 14.7658C12.8467 14.8862 13.0047 14.9614 13.1854 14.9614H13.8476V12.7037H18.175V14.9614H18.8373C19.0104 14.9614 19.1835 14.8937 19.3039 14.7658C19.4243 14.6378 19.4996 14.4722 19.4996 14.2992V12.7037H21.5692V19.2888H21.5541ZM10.4535 20.6058H21.5541V22.6754H10.4535V20.6058ZM13.8401 11.3866C13.8627 10.8448 14.0885 10.3405 14.4723 9.9492C14.8787 9.5428 15.4281 9.31703 16 9.31703C16.572 9.31703 17.1214 9.5428 17.5278 9.9492C17.9116 10.333 18.1374 10.8523 18.16 11.3866H13.8401Z" fill="#333333"/>
184                                    </g>
185                                    <defs>
186                                    <clipPath id="clip0_750_7208">
187                                    <rect width="13.7422" height="16" fill="white" transform="translate(9.12891 8)"/>
188                                    </clipPath>
189                                    </defs>
190                                </svg>
191                            </button>
192                            <button type="button" class="product__add--mobile product__add--show-variants" aria-label="${window.theme.strings.addToCart}">
193                                <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
194                                    <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" fill="white" fill-opacity="0.5"/>
195                                    <rect x="0.25" y="0.25" width="31.5" height="31.5" rx="15.75" stroke="#999999" stroke-width="0.5"/>
196                                    <g clip-path="url(#clip0_750_7208)">
197                                    <path d="M22.6755 11.5823C22.5551 11.4619 22.382 11.3866 22.2089 11.3866H19.477C19.4544 10.4911 19.0932 9.65569 18.461 9.01599C17.8288 8.37629 16.9332 8 16 8C15.0668 8 14.1938 8.36124 13.5391 9.01599C12.9069 9.64817 12.5457 10.4911 12.5231 11.3866H9.79118C9.61809 11.3866 9.45252 11.4544 9.32458 11.5823C9.19664 11.7103 9.12891 11.8758 9.12891 12.0489V23.3377C9.12891 23.5108 9.19664 23.6839 9.32458 23.8043C9.45252 23.9247 9.61056 24 9.79118 24H22.2089C22.382 24 22.5551 23.9323 22.6755 23.8043C22.7959 23.6764 22.8711 23.5108 22.8711 23.3377V12.0489C22.8711 11.8758 22.8034 
19711.7027 22.6755 11.5823ZM21.5541 19.2888H10.4535V12.7037H12.5231V14.2992C12.5231 14.4722 12.5908 14.6453 12.7187 14.7658C12.8467 14.8862 13.0047 14.9614 13.1854 14.9614H13.8476V12.7037H18.175V14.9614H18.8373C19.0104 14.9614 19.1835 14.8937 19.3039 14.7658C19.4243 14.6378 19.4996 14.4722 19.4996 14.2992V12.7037H21.5692V19.2888H21.5541ZM10.4535 20.6058H21.5541V22.6754H10.4535V20.6058ZM13.8401 11.3866C13.8627 10.8448 14.0885 10.3405 14.4723 9.9492C14.8787 9.5428 15.4281 9.31703 16 9.31703C16.572 9.31703 17.1214 9.5428 17.5278 9.9492C17.9116 10.333 18.1374 10.8523 18.16 11.3866H13.8401Z" fill="#333333"/>
198                                    </g>
199                                    <defs>
200                                    <clipPath id="clip0_750_7208">
201                                    <rect width="13.7422" height="16" fill="white" transform="translate(9.12891 8)"/>
202                                    </clipPath>
203                                    </defs>
204                                </svg>
205                            </button>
206                        `}
207                    </form>
208                  </div>
209
210                 ${badge&&!offerProperty?`
211                    <div class="product-card__badge ${hasCollectionMetaBadge?"product-card__badge--badge":""} ${fomoBadgeStyle}" ${badgeStyles?`style="${badgeStyles}"`:""}>
212                        ${escape(badge)}
213                    </div>
214                  `:""}
215
216                  ${offerProperty?`
217                    <div class="product-card__badge ${hasCollectionMetaBadge?"product-card__badge--badge":""}">
218                        ${offer.split("-")[0]} for ${window.theme.currencySymbol||window.theme.currentCurrencySymbol}${offer.split("-").pop()}
219                    </div>
220                  `:""}                  
221              </div>`}return html+=`<div class="product-card__info">
222              <div class="product-card__details">
223                  
224                  <div class="product-card__text">
225                    ${promoHtml}
226                     <${heading} class="product-card__title">
227                         <span>${escape(product.title)}</span>
228                     </${heading}>
229
230                     ${productPriceHtml(product)}
231                  </div>
232              </div>
233           </div>
234           
235           <script type="application/json" data-product-json>${JSON.stringify(product)}<\/script>
236           
237
238          </div>
239           </a>
240           </div>`,html},!window.customElements.get("product-quick-view")){let closeQuickview2=function(){quickViewWrapper.classList.remove("is-active"),quickViewWrapper.innerHTML=""};var closeQuickview=closeQuickview2;class ProductQuickView extends HTMLElement{constructor(){super(),this.handle=this.getAttribute("data-product-handle"),this.button=this.querySelector("button")||this,this.button.addEventListener("click",e=>{this.openQuickView()})}openQuickView(){this.button.classList.add("btn--loading"),fetch(`/products/${this.handle}?section_id=quickview-template`).then(response=>response.text()).then(html=>{quickViewWrapper.innerHTML=html,$(".product-quickview .product__images").slick({accessibility:!0,arrows:!0,dots:!1,infinite:!1,lazyLoad:"progressive",swipeToSlide:!0,rows:0,responsive:[{breakpoint:Number(theme.settings.grid_medium),settings:{arrows:!1,dots:!0}}]}),quickViewWrapper.classList.add("is-active");const getSiblingQv=which=>{const thisClosest=this.closest(".product-card-wrapper.swiper-slide")?.closest(".slick-slide")||this.closest(".product-card-wrapper");return thisClosest?thisClosest?.[which]?.querySelector("product-quick-view")||thisClosest?.[which]?.[which]?.querySelector("product-quick-view")||thisClosest?.[which]?.[which]?.[which]?.querySelector("product-quick-view")||thisClosest?.[which]?.[which]?.[which]?.[which]?.querySelector("product-quick-view"):null};let prevQV=getSiblingQv("previousElementSibling");if(prevQV.querySelector("button")&&(prevQV=prevQV.querySelector("button")),prevQV){const prev=document.createElement("button");prev.classList.add("quickview-prev","quickview-prev-product"),prev.innerHTML=`<svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg">
241          <path id="chevron-down" d="M6.611 1.4V0L0 7l6.611 7V1.4Z" fill="#333333"></path>
242        </svg>`,quickViewWrapper.querySelector(".quickview__content").appendChild(prev),prev.addEventListener("click",e=>{prevQV.click()})}let nextQV=getSiblingQv("nextElementSibling");if(nextQV.querySelector("button")&&(nextQV=nextQV.querySelector("button")),nextQV){const next=document.createElement("button");next.classList.add("quickview-next","quickview-next-product"),next.innerHTML=`<svg width="7" height="14" viewBox="0 0 7 14" fill="none" xmlns="http://www.w3.org/2000/svg">
243          <path id="chevron-down" d="M0.388914 1.4L0.388944 0L7.00006 6.99999L0.388971 14L0.388941 12.6L0.388971 7.00001L0.388914 1.4Z" fill="#333333"></path>
244        </svg>`,next.addEventListener("click",e=>{nextQV.click()}),quickViewWrapper.querySelector(".quickview__content").appendChild(next)}this.button.classList.remove("btn--loading")}).catch(error=>{console.log("Quickview error",error),this.button.classList.remove("btn--loading")})}}customElements.define("product-quick-view",ProductQuickView);const quickViewWrapper=document.createElement("div");quickViewWrapper.classList.add("quickview"),quickViewWrapper.classList.add("product-quickview"),document.body.appendChild(quickViewWrapper),quickViewWrapper.addEventListener("click",e=>{!e.target.closest(".quickview__content")&&!e.target.classList.contains(".quickview__content")&&closeQuickview2(),(e.target.closest(".quickview__close")||e.target.classList.contains("quickview__close"))&&closeQuickview2()})}
245//# sourceMappingURL=/cdn/shop/t/811/assets/component-product-card-new.js.map?v=33465185094190940691789977862

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.