DELETE FROM KEYWORDS WHERE ID_DOMAINE=35902074DoneDoneDone
URL:www.cartridgedepot.co.za
Connection: keep-alive
Date: Sat, 02 Nov 2024 06:30:30 GMT
Content-Length: 0
Content-Type: text/html; charset=utf-8
Location: https://cartridgedepot.co.za/
Server: cloudflare
Vary: Accept
x-sorting-hat-podid: 180
x-sorting-hat-shopid: 63206555829
x-storefront-renderer-rendered: 1
x-redirect-reason: https_required
x-frame-options: DENY
content-security-policy: frame-ancestors 'none';
x-shopid: 63206555829
x-shardid: 180
powered-by: Shopify
server-timing: processing;dur=14;desc="gc:1", db;dur=4, asn;desc="12322", edge;desc="CDG", country;desc="FR", pageType;desc="index", servedBy;desc="pc6k", requestID;desc="08397610-5886-40ad-a642-6b4fbe871132-1730529030"
x-dc: gcp-europe-west1,gcp-europe-west1,gcp-europe-west1
x-request-id: 08397610-5886-40ad-a642-6b4fbe871132-1730529030
Alt-Svc: h3=":443"; ma=86400
CF-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=H%2BnQ4opHuMFy1Ic%2BdaLhacCnDMRZH1uFJQ7bPmpoPQ%2FKYN21HoGl750bsGJAAQTsp6kJXKsJ%2FFx7rHWjwnFxZCQ3LZbOgMHP0P8bB9H%2BBmMGNVIJT3Wk4iocWnqqixGl2HiGZHSS4UQ9sQ%3D%3D"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}
Server-Timing: cfRequestDuration;dur=58.000088
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Permitted-Cross-Domain-Policies: none
X-Download-Options: noopen
CF-RAY: 8dc213875e3f3cbd-CDG
Location => https://cartridgedepot.co.za/
Status => 301
(vide) Tentative en https
<!doctype html>
<html class="js" lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="">
<link rel="canonical" href="https://cartridgedepot.co.za/"><link rel="icon" type="image/png" href="//cartridgedepot.co.za/cdn/shop/files/favCartridge-Depot-Logo-1.png?crop=center&height=32&v=1721655961&width=32"><link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin><title>
Cartridge Depot
</title>
<meta property="og:site_name" content="Cartridge Depot">
<meta property="og:url" content="https://cartridgedepot.co.za/">
<meta property="og:title" content="Cartridge Depot">
<meta property="og:type" content="website">
<meta property="og:description" content="Cartridge Depot"><meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Cartridge Depot">
<meta name="twitter:description" content="Cartridge Depot">
<script src="//cartridgedepot.co.za/cdn/shop/t/2/assets/constants.js?v=132983761750457495441721629154" defer="defer"></script>
<script src="//cartridgedepot.co.za/cdn/shop/t/2/assets/pubsub.js?v=158357773527763999511721629154" defer="defer"></script>
<script src="//cartridgedepot.co.za/cdn/shop/t/2/assets/global.js?v=88558128918567037191721629154" defer="defer"></script><script src="//cartridgedepot.co.za/cdn/shop/t/2/assets/animations.js?v=88693664871331136111721629153" defer="defer"></script><script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/63206555829/digital_wallets/dialog">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-ZA"></script>
<script id="shopify-features" type="application/json">{"accessToken":"4b245336958fb9b8aa22893f72bf47de","betas":["rich-media-storefront-analytics"],"domain":"cartridgedepot.co.za","predictiveSearch":true,"shopId":63206555829,"smart_payment_buttons_url":"https:\/\/cartridgedepot.co.za\/cdn\/shopifycloud\/payment-sheet\/assets\/latest\/spb.en.js","dynamic_checkout_cart_url":"https:\/\/cartridgedepot.co.za\/cdn\/shopifycloud\/payment-sheet\/assets\/latest\/dynamic-checkout-cart.en.js","locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "cf3e3f.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"ZAR","rate":"1.0"};
Shopify.country = "ZA";
Shopify.theme = {"name":"Trade","id":137175040181,"schema_name":"Trade","schema_version":"15.0.0","theme_store_id":2699,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "cartridgedepot.co.za/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"index"}</script>
<script>(function() {
function asyncLoad() {
var urls = ["https:\/\/cdn1.judge.me\/assets\/installed.js?shop=cf3e3f.myshopify.com","https:\/\/d1639lhkj5l89m.cloudfront.net\/js\/storefront\/uppromote.js?shop=cf3e3f.myshopify.com"];
for (var i = 0; i < urls.length; i++) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = urls[i];
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
};
if(window.attachEvent) {
window.attachEvent('onload', asyncLoad);
} else {
window.addEventListener('load', asyncLoad, false);
}
})();</script>
<script id="__st">var __st={"a":63206555829,"offset":7200,"reqid":"90312362-6352-4b0b-b1a2-1d90d44d9bac-1730529030","pageurl":"cartridgedepot.co.za\/","u":"827645a8ae9a","p":"home"};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(',');function s(t,e,n=!1){try{const o=window.sessionStorage;for(const[n,c]of Object.entries(JSON.parse(o.getItem(e))))t.elements[n]&&(t.elements[n].value=c);n&&o.removeItem(e)}catch{}}const a='form_key',i=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response','password'],u=()=>{try{return window.sessionStorage}catch{return}},m=t=>t.elements[a],f='form_type',d='cptcha';function p(t){t.dataset[d]=!0}const l=window,h=l.document,_='Shopify',y='ce_forms',E='captcha';let v=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe','https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.4.0.iife.js',T={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=l[_][y],c=o.bindForm;if(c)return c(t,g,e,T).then(n);o.q.push([[t,g,e,T],n]),v||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:'https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.4.0.iife.js'})),v=!0)});var g,T;l[_]=l[_]||{},l[_][y]=l[_][y]||{},l[_][y].q=[],l[_][E]=l[_][E]||{},l[_][E].protect=function(t,e){n(t,void 0,e),p(t)},Object.freeze(l[_][E]),function(t,e,n,l,h,_){const[y,E,v,g]=function(t,e,n){const s=e?o:[],a=t?c:[],i=[...s,...a],u=[...o],m=r(i),f=r(s),d=n&&r(i.filter((([t,e])=>n.includes(e)))),p=r(u),l=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];return[l(m),l(f),l(d),l(p)]}(l,h,_),T=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},S=t=>y().includes(t);t.addEventListener('submit',(t=>{const e=T(t);if(!e)return;const n=S(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=m(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!u())return;!function(t){const e=u();if(!e)return;const n=m(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){m(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:a})),t.elements[a].value=e}(t,e),function(t,e){const n=u();if(!n)return;const o=[...t.querySelectorAll('input[type="password"]')].map((({name:t})=>t)),c=[...i,...o],r={};for(const[s,a]of new FormData(t).entries())c.includes(s)||(r[s]=a);n.setItem(e,JSON.stringify(r))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const w=(t,e)=>{t&&!t.dataset[d]&&(n(t,e.some((e=>e===t))),p(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=T(t);S(e)&&w(e,E())}));const A=e.get('form_key'),b=e.get(f),I=A&&b;t.addEventListener('DOMContentLoaded',(()=>{const t=E();if(I)for(const e of t)e.elements[f].value===b&&s(e,A);[...new Set([...v(),...y().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>w(e,t)))}))}(h,new URLSearchParams(l.location.search),n,!0,!0,['guest_login'])})()}();</script>
<script integrity="sha256-EGCDRYTvIEOXsReXgqGwkAR+5Dl8tickSrieA/ZcQwc=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//cartridgedepot.co.za/cdn/shopifycloud/shopify/assets/storefront/load_feature-1060834584ef204397b1179782a1b090047ee4397cb627244ab89e03f65c4307.js" crossorigin="anonymous"></script>
<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://cartridgedepot.co.za/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
</script>
<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("#dynamic-checkout-cart")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
</script>
<script id='scb4127' type='text/javascript' async='' src='https://cartridgedepot.co.za/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script><script id="sections-script" data-sections="header" defer="defer" src="//cartridgedepot.co.za/cdn/shop/t/2/compiled_assets/scripts.js?74"></script>
<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
<style data-shopify>
@font-face {
font-family: Poppins;
font-weight: 400;
font-style: normal;
font-display: swap;
src: url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n4.934accbf9f5987aa89334210e6c1e9151f37d3b6.woff2?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=993c2da09c4a272f8698a86623e4641da168ef73c2afead20b9530a85a85fc7b") format("woff2"),
url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n4.ee28d4489eaf5de9cf6e17e696991b5e9148c716.woff?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=d12ca97318e5f2a8b632c009081060322f9a7774476f584fe8e01da6f2da314b") format("woff");
}
@font-face {
font-family: Poppins;
font-weight: 700;
font-style: normal;
font-display: swap;
src: url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n7.58aca33913fc6666cc9e8a53f6b16ec5c3c05a3f.woff2?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=988622a6ec2cfa3d449f2c435ecb6c39c44d2959f1e9e6c4eba8241f71d95c9d") format("woff2"),
url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n7.59016f931f3f39434d2e458fba083eb7db7a07d9.woff?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=62467886d1522a572432878a865bca1e88eae2f8cb3747d87384507bf9601f92") format("woff");
}
@font-face {
font-family: Poppins;
font-weight: 400;
font-style: italic;
font-display: swap;
src: url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_i4.a7e8d886e15d5fb9bc964a53b3278effbf270e9c.woff2?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=01850bb5bf5ef1aeb6ce50736edf3875dd01822314ef5d6e520763f7e5e7a69f") format("woff2"),
url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_i4.e87de252199e27825a41bf81646996685d86452d.woff?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=fbf6702fde81521649c7f45b623c0df6513aea3ea566c03d06736cc5754b3b79") format("woff");
}
@font-face {
font-family: Poppins;
font-weight: 700;
font-style: italic;
font-display: swap;
src: url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_i7.4f85a5d51a1aecf426eea47ac4570ef7341bfdc1.woff2?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=7b08fa58428520ab8cbd85ab54b5f2b246557d371bbb820a1a690b7c5edb8d82") format("woff2"),
url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_i7.aff3a08a92d1c136586c611b9fc43d357dfbbefe.woff?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=f3bd3827588d9d8f2b184e9c85e7ec1c6810c6dddbdd07b082f6810aaafe3d1a") format("woff");
}
@font-face {
font-family: Poppins;
font-weight: 700;
font-style: normal;
font-display: swap;
src: url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n7.58aca33913fc6666cc9e8a53f6b16ec5c3c05a3f.woff2?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=988622a6ec2cfa3d449f2c435ecb6c39c44d2959f1e9e6c4eba8241f71d95c9d") format("woff2"),
url("//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n7.59016f931f3f39434d2e458fba083eb7db7a07d9.woff?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=62467886d1522a572432878a865bca1e88eae2f8cb3747d87384507bf9601f92") format("woff");
}
:root,
.color-scheme-1 {
--color-background: 244,244,244;
--gradient-background: #f4f4f4;
--color-foreground: 43,44,45;
--color-background-contrast: 180,180,180;
--color-shadow: 0,17,40;
--color-button: 253,204,0;
--color-button-text: 38,38,38;
--color-secondary-button: 244,244,244;
--color-secondary-button-text: 0,17,40;
--color-link: 0,17,40;
--color-badge-foreground: 43,44,45;
--color-badge-background: 244,244,244;
--color-badge-border: 43,44,45;
--payment-terms-background-color: rgb(244 244 244);
}
.color-scheme-2 {
--color-background: 255,255,255;
--gradient-background: #ffffff;
--color-foreground: 38,38,38;
--color-background-contrast: 191,191,191;
--color-shadow: 0,17,40;
--color-button: 253,204,0;
--color-button-text: 255,255,255;
--color-secondary-button: 255,255,255;
--color-secondary-button-text: 121,117,114;
--color-link: 121,117,114;
--color-badge-foreground: 38,38,38;
--color-badge-background: 255,255,255;
--color-badge-border: 38,38,38;
--payment-terms-background-color: rgb(255 255 255);
}
.color-scheme-3 {
--color-background: 253,204,0;
--gradient-background: #fdcc00;
--color-foreground: 38,38,38;
--color-background-contrast: 126,101,0;
--color-shadow: 0,17,40;
--color-button: 253,253,253;
--color-button-text: 38,38,38;
--color-secondary-button: 253,204,0;
--color-secondary-button-text: 84,72,60;
--color-link: 84,72,60;
--color-badge-foreground: 38,38,38;
--color-badge-background: 253,204,0;
--color-badge-border: 38,38,38;
--payment-terms-background-color: rgb(253 204 0);
}
.color-scheme-4 {
--color-background: 28,34,40;
--gradient-background: #1c2228;
--color-foreground: 255,255,255;
--color-background-contrast: 39,47,55;
--color-shadow: 0,17,40;
--color-button: 255,255,255;
--color-button-text: 0,17,40;
--color-secondary-button: 28,34,40;
--color-secondary-button-text: 255,255,255;
--color-link: 255,255,255;
--color-badge-foreground: 255,255,255;
--color-badge-background: 28,34,40;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(28 34 40);
}
.color-scheme-5 {
--color-background: 50,56,65;
--gradient-background: #323841;
--color-foreground: 255,255,255;
--color-background-contrast: 61,68,79;
--color-shadow: 0,17,40;
--color-button: 253,204,0;
--color-button-text: 38,38,38;
--color-secondary-button: 50,56,65;
--color-secondary-button-text: 255,255,255;
--color-link: 255,255,255;
--color-badge-foreground: 255,255,255;
--color-badge-background: 50,56,65;
--color-badge-border: 255,255,255;
--payment-terms-background-color: rgb(50 56 65);
}
.color-scheme-7da6c26c-2823-4bec-87f5-019355833025 {
--color-background: 244,244,244;
--gradient-background: #f4f4f4;
--color-foreground: 253,204,0;
--color-background-contrast: 180,180,180;
--color-shadow: 0,17,40;
--color-button: 244,244,244;
--color-button-text: 38,38,38;
--color-secondary-button: 244,244,244;
--color-secondary-button-text: 0,17,40;
--color-link: 0,17,40;
--color-badge-foreground: 253,204,0;
--color-badge-background: 244,244,244;
--color-badge-border: 253,204,0;
--payment-terms-background-color: rgb(244 244 244);
}
body, .color-scheme-1, .color-scheme-2, .color-scheme-3, .color-scheme-4, .color-scheme-5, .color-scheme-7da6c26c-2823-4bec-87f5-019355833025 {
color: rgba(var(--color-foreground), 0.75);
background-color: rgb(var(--color-background));
}
:root {
--font-body-family: Poppins, sans-serif;
--font-body-style: normal;
--font-body-weight: 400;
--font-body-weight-bold: 700;
--font-heading-family: Poppins, sans-serif;
--font-heading-style: normal;
--font-heading-weight: 700;
--font-body-scale: 1.0;
--font-heading-scale: 1.0;
--media-padding: px;
--media-border-opacity: 0.05;
--media-border-width: 1px;
--media-radius: 8px;
--media-shadow-opacity: 0.0;
--media-shadow-horizontal-offset: 0px;
--media-shadow-vertical-offset: 4px;
--media-shadow-blur-radius: 5px;
--media-shadow-visible: 0;
--page-width: 120rem;
--page-width-margin: 0rem;
--product-card-image-padding: 1.2rem;
--product-card-corner-radius: 0.8rem;
--product-card-text-alignment: left;
--product-card-border-width: 0.0rem;
--product-card-border-opacity: 0.1;
--product-card-shadow-opacity: 0.0;
--product-card-shadow-visible: 0;
--product-card-shadow-horizontal-offset: 0.0rem;
--product-card-shadow-vertical-offset: 0.4rem;
--product-card-shadow-blur-radius: 0.5rem;
--collection-card-image-padding: 0.0rem;
--collection-card-corner-radius: 0.8rem;
--collection-card-text-alignment: left;
--collection-card-border-width: 0.0rem;
--collection-card-border-opacity: 0.1;
--collection-card-shadow-opacity: 0.0;
--collection-card-shadow-visible: 0;
--collection-card-shadow-horizontal-offset: 0.0rem;
--collection-card-shadow-vertical-offset: 0.4rem;
--collection-card-shadow-blur-radius: 0.5rem;
--blog-card-image-padding: 0.0rem;
--blog-card-corner-radius: 0.8rem;
--blog-card-text-alignment: left;
--blog-card-border-width: 0.0rem;
--blog-card-border-opacity: 0.1;
--blog-card-shadow-opacity: 0.0;
--blog-card-shadow-visible: 0;
--blog-card-shadow-horizontal-offset: 0.0rem;
--blog-card-shadow-vertical-offset: 0.4rem;
--blog-card-shadow-blur-radius: 0.5rem;
--badge-corner-radius: 4.0rem;
--popup-border-width: 1px;
--popup-border-opacity: 0.1;
--popup-corner-radius: 8px;
--popup-shadow-opacity: 0.05;
--popup-shadow-horizontal-offset: 0px;
--popup-shadow-vertical-offset: 4px;
--popup-shadow-blur-radius: 5px;
--drawer-border-width: 1px;
--drawer-border-opacity: 0.1;
--drawer-shadow-opacity: 0.0;
--drawer-shadow-horizontal-offset: 0px;
--drawer-shadow-vertical-offset: 4px;
--drawer-shadow-blur-radius: 5px;
--spacing-sections-desktop: 0px;
--spacing-sections-mobile: 0px;
--grid-desktop-vertical-spacing: 12px;
--grid-desktop-horizontal-spacing: 12px;
--grid-mobile-vertical-spacing: 6px;
--grid-mobile-horizontal-spacing: 6px;
--text-boxes-border-opacity: 0.1;
--text-boxes-border-width: 0px;
--text-boxes-radius: 8px;
--text-boxes-shadow-opacity: 0.0;
--text-boxes-shadow-visible: 0;
--text-boxes-shadow-horizontal-offset: 0px;
--text-boxes-shadow-vertical-offset: 4px;
--text-boxes-shadow-blur-radius: 5px;
--buttons-radius: 6px;
--buttons-radius-outset: 7px;
--buttons-border-width: 1px;
--buttons-border-opacity: 1.0;
--buttons-shadow-opacity: 0.0;
--buttons-shadow-visible: 0;
--buttons-shadow-horizontal-offset: 0px;
--buttons-shadow-vertical-offset: 4px;
--buttons-shadow-blur-radius: 5px;
--buttons-border-offset: 0.3px;
--inputs-radius: 6px;
--inputs-border-width: 1px;
--inputs-border-opacity: 0.55;
--inputs-shadow-opacity: 0.0;
--inputs-shadow-horizontal-offset: 0px;
--inputs-margin-offset: 0px;
--inputs-shadow-vertical-offset: 4px;
--inputs-shadow-blur-radius: 5px;
--inputs-radius-outset: 7px;
--variant-pills-radius: 40px;
--variant-pills-border-width: 1px;
--variant-pills-border-opacity: 0.55;
--variant-pills-shadow-opacity: 0.0;
--variant-pills-shadow-horizontal-offset: 0px;
--variant-pills-shadow-vertical-offset: 4px;
--variant-pills-shadow-blur-radius: 5px;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
html {
box-sizing: border-box;
font-size: calc(var(--font-body-scale) * 62.5%);
height: 100%;
}
body {
display: grid;
grid-template-rows: auto auto 1fr auto;
grid-template-columns: 100%;
min-height: 100%;
margin: 0;
font-size: 1.5rem;
letter-spacing: 0.06rem;
line-height: calc(1 + 0.8 / var(--font-body-scale));
font-family: var(--font-body-family);
font-style: var(--font-body-style);
font-weight: var(--font-body-weight);
}
@media screen and (min-width: 750px) {
body {
font-size: 1.6rem;
}
}
</style>
<link href="//cartridgedepot.co.za/cdn/shop/t/2/assets/base.css?v=167505101062515089431725340995" rel="stylesheet" type="text/css" media="all" />
<link rel="preload" as="font" href="//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n4.934accbf9f5987aa89334210e6c1e9151f37d3b6.woff2?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=993c2da09c4a272f8698a86623e4641da168ef73c2afead20b9530a85a85fc7b" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="//cartridgedepot.co.za/cdn/fonts/poppins/poppins_n7.58aca33913fc6666cc9e8a53f6b16ec5c3c05a3f.woff2?h1=Y2YzZTNmLmFjY291bnQubXlzaG9waWZ5LmNvbQ&h2=Y2FydHJpZGdlZGVwb3QuY28uemE&hmac=988622a6ec2cfa3d449f2c435ecb6c39c44d2959f1e9e6c4eba8241f71d95c9d" type="font/woff2" crossorigin>
<link
rel="stylesheet"
href="//cartridgedepot.co.za/cdn/shop/t/2/assets/component-predictive-search.css?v=118923337488134913561721629154"
media="print"
onload="this.media='all'"
><script>
if (Shopify.designMode) {
document.documentElement.classList.add('shopify-design-mode');
}
</script>
<!-- BEGIN app block: shopify://apps/boost-ai-search-discovery/blocks/instant-search-app-embedded/7fc998ae-a150-4367-bab8-505d8a4503f7 --><script>
(function setupISW() {
if (!window.boostWidgetIntegration) {
window.boostWidgetIntegration = {}
}
const config = window.boostWidgetIntegration;
if (!config.taeSettings) {
config.taeSettings = {};
}
const taeSettings = config.taeSettings;
taeSettings.instantSearch = {
enabled: true,
}
})();
</script>
<!-- END app app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core -->
<link rel="dns-prefetch" href="https://cdn.judge.me">
<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Enter your name (public)","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Enter your email (private)","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review","widget_review_body_placeholder_text":"Write your comments here","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank you! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","verified_badge_text":"Verified","verified_badge_placement":"left-of-reviewer-name","widget_hide_border":false,"widget_social_share":false,"all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_sorting_pictures_first_text":"Pictures First","floating_tab_button_name":"★ Judge.me Reviews","floating_tab_title":"Let customers speak for us","floating_tab_url":"","floating_tab_url_enabled":false,"all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","all_reviews_text_badge_url":"","all_reviews_text_style":"branded","featured_carousel_title":"Let customers speak for us","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_url":"","verified_count_badge_style":"branded","verified_count_badge_url":"","picture_reminder_submit_button":"Upload Pictures","widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","remove_microdata_snippet":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","widget_search_bar_placeholder":"Search reviews","widget_sorting_verified_only_text":"Verified only","featured_carousel_verified_badge_enable":true,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_more_text":"Load More Reviews","widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_verified_by_shop_text":"Verified by Shop","widget_load_with_code_splitting":true,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subtitle":"Tag us to see your picture featured in our page","widget_ugc_primary_button_text":"Buy Now","widget_ugc_secondary_button_text":"Load More","widget_ugc_reviews_button_text":"View Reviews","widget_primary_color":"#FFDD00","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_verified_by_judgeme_text":"Verified by Judge.me","widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_show_collected_by_judgeme":true,"widget_collected_by_judgeme_text":"collected by Judge.me","widget_load_more_text":"Load More","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","how_reviews_are_collected":"How reviews are collected?","widget_gdpr_statement":"How we use your data: We’ll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me’s \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","platform":"shopify","branding_url":"https://judge.me/reviews","branding_text":"Powered by Judge.me","locale":"en","reply_name":"Cartridge Depot","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"can_be_branded":false};</script> <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color:#fd0;--jdgm-secondary-color:rgba(255,221,0,0.1);--jdgm-star-color:#fd0;--jdgm-write-review-text-color:white;--jdgm-write-review-bg-color:#FFDD00;--jdgm-paginate-color:#fd0;--jdgm-border-radius:0}.jdgm-histogram__bar-content{background-color:#fd0}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#fd0}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__replier:before{content:'cartridgedepot.store'}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}
</style>
<style class='jdgm-miracle-styles'>
@-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-prev-badge{display:block !important}
</style>
<script data-cfasync='false' class='jdgm-script'>
!function(e){window.jdgm=window.jdgm||{},jdgm.CDN_HOST="https://cdn.judge.me/",
jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)?
setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){
!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d),
(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!",
a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))},
jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest;
t.onreadystatechange=function(){4===t.readyState&&(Function(t.response)(),d&&d(t.response))},
t.open("GET",e),t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll(
".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting?
parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_HOST+"widget_v3/base.css"):
jdgm.loadCSS(jdgm.CDN_HOST+"widget/base.css"):jdgm.loadCSS(jdgm.CDN_HOST+"shopify_v2.css"),
jdgm.loadJS(jdgm.CDN_HOST+"loader.js"))}))}(document);
</script>
<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.judge.me/shopify_v2.css"></noscript>
<!-- BEGIN app snippet: theme_fix_tags --><script>
(function() {
var jdgmThemeFixes = null;
if (!jdgmThemeFixes) return;
var thisThemeFix = jdgmThemeFixes[Shopify.theme.id];
if (!thisThemeFix) return;
if (thisThemeFix.html) {
document.addEventListener("DOMContentLoaded", function() {
var htmlDiv = document.createElement('div');
htmlDiv.classList.add('jdgm-theme-fix-html');
htmlDiv.innerHTML = thisThemeFix.html;
document.body.append(htmlDiv);
});
};
if (thisThemeFix.css) {
var styleTag = document.createElement('style');
styleTag.classList.add('jdgm-theme-fix-style');
styleTag.innerHTML = thisThemeFix.css;
document.head.append(styleTag);
};
if (thisThemeFix.js) {
var scriptTag = document.createElement('script');
scriptTag.classList.add('jdgm-theme-fix-script');
scriptTag.innerHTML = thisThemeFix.js;
document.head.append(scriptTag);
};
})();
</script>
<!-- END app snippet -->
<!-- End of Judge.me Core -->
<!-- END app app block --><!-- BEGIN app block: shopify://apps/boost-ai-search-discovery/blocks/boost-sd-ssr/7fc998ae-a150-4367-bab8-505d8a4503f7 --> <script type='text/javascript'>
"use strict";
(() => {
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
// tae/utils.js
var utils_exports = {};
__export(utils_exports, {
addParamsLocale: () => addParamsLocale,
checkCssAndRender: () => checkCssAndRender,
checkExistFilterOptionParam: () => checkExistFilterOptionParam,
convertValueRequestStockStatus: () => convertValueRequestStockStatus,
detectDeviceByWidth: () => detectDeviceByWidth,
formatPercentSaleLabel: () => formatPercentSaleLabel,
generateUuid: () => generateUuid,
getApi: () => getApi,
getCurrentPage: () => getCurrentPage,
getLocalStorage: () => getLocalStorage,
getParamsHistory: () => getParamsHistory,
getQueryParamByKey: () => getQueryParamByKey,
getSortBy: () => getSortBy,
inViewPortHandler: () => inViewPortHandler,
initBlocks: () => initBlocks,
isBadSearchTerm: () => isBadSearchTerm,
isBadUrl: () => isBadUrl,
isCartPage: () => isCartPage,
isCollectionPage: () => isCollectionPage,
isHomePage: () => isHomePage,
isMobileWidth: () => isMobileWidth,
isProductPage: () => isProductPage,
isSearchPage: () => isSearchPage,
isTabletPortraitMaxWidth: () => isTabletPortraitMaxWidth,
isVendorPage: () => isVendorPage,
lazyLoadImages: () => lazyLoadImages,
mergeDeep: () => mergeDeep,
removeLocalStorage: () => removeLocalStorage,
roundToNearest50: () => roundToNearest50,
saveRequestId: () => saveRequestId,
setLocalStorage: () => setLocalStorage,
updateValuesOptions: () => updateValuesOptions
});
function generateUuid() {
return "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g, function(c) {
var r = Math.random() * 16 | 0;
return r.toString(16);
});
}
function mergeDeep(...objects) {
const isObject = (obj) => obj && typeof obj === "object";
return objects.reduce((prev, obj) => {
Object.keys(obj).forEach((key) => {
const pVal = prev[key];
const oVal = obj[key];
if (Array.isArray(pVal) && Array.isArray(oVal)) {
prev[key] = pVal.concat(...oVal);
} else if (isObject(pVal) && isObject(oVal)) {
prev[key] = mergeDeep(pVal, oVal);
} else {
prev[key] = oVal;
}
});
return prev;
}, {});
}
function formatPercentSaleLabel(to, from = 0) {
let label = "";
if (!from) {
label = `under ${to}%`;
} else if (!to) {
label = `above ${from}%`;
} else {
label = `${from}% - ${to}%`;
}
return label;
}
function updateValuesOptions(options) {
if (!Array.isArray(options)) return options;
return options.map((option) => {
var _a;
if (option.filterType === "percent_sale") {
option.values = (_a = option.values) == null ? void 0 : _a.map((item) => {
item.key = item.key.replace("*-", ":").replace("-*", ":").replace("-", ":");
item.label = formatPercentSaleLabel(item.to, item.from);
return item;
});
}
return option;
});
}
function getQueryParamByKey(key) {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(key);
}
function convertValueRequestStockStatus(v) {
if (typeof v === "string") {
if (v === "out-of-stock") return false;
return true;
}
if (Array.isArray(v)) {
return v.map((_v) => {
if (_v === "out-of-stock") {
return false;
}
return true;
});
}
}
function isMobileWidth() {
return window.innerWidth < 576;
}
function isTabletPortraitMaxWidth() {
return window.innerWidth < 991;
}
function detectDeviceByWidth() {
let result = "";
if (isMobileWidth()) {
result += "mobile|";
} else {
result = result.replace("mobile|", "");
}
if (isTabletPortraitMaxWidth()) {
result += "tablet_portrait_max";
} else {
result = result.replace("tablet_portrait_max", "");
}
return result;
}
function getParamsHistory() {
const url = new URL(window.location);
var isXSS = isBadUrl(url);
if (isXSS) {
console.log("bad url!!!!", isXSS);
window.location.href = window.location.pathname;
} else {
const FILTER_HISTORY_PREFIX = "pf_";
const { searchParams } = url;
const sort = searchParams.get("sort");
const page = searchParams.get("page");
const paramMap = {};
for (let key of searchParams.keys()) {
if (key.startsWith(FILTER_HISTORY_PREFIX) && !paramMap[key]) {
if (key === "pf_tag") {
paramMap.tag = searchParams.getAll(key);
delete paramMap.pf_tag;
} else {
paramMap[key] = searchParams.getAll(key);
}
}
}
return { paramMap, sort, page };
}
}
function getSortBy() {
const {
generalSettings: { collection_id = 0, page: tempPage, default_sort_by: defaultSortBy },
additionalElementSettings: { default_sort_order: defaultSortOrder = {}, customSortingList }
} = window.boostWidgetIntegration.app["production"];
const page = tempPage || "collection";
const defaultSortingList = [
"relevance",
"best-selling",
"manual",
"title-ascending",
"title-descending",
"price-ascending",
"price-descending",
"created-ascending",
"created-descending"
];
const sortQueryKey = getQueryParamByKey("sort");
let sortingList = customSortingList ? customSortingList.split("|") : defaultSortingList;
if (sortQueryKey && sortingList.includes(sortQueryKey)) return sortQueryKey;
const searchPage = page === "search";
const collectionPage = page === "collection";
if (searchPage) sortingList.splice(sortingList.indexOf("manual"), 1);
const { all, search } = defaultSortOrder;
if (collectionPage) {
if (collection_id in defaultSortOrder) {
return defaultSortOrder[collection_id];
} else if (all) {
return all;
} else if (defaultSortBy) {
return defaultSortBy;
}
} else if (searchPage) {
return search || "relevance";
}
}
async function getApi(url, params, widgetDomId) {
var _a, _b, _c, _d, _e, _f;
const key = params.toString();
const hasFilterParams = key.includes("pf_");
const block = window.boostWidgetIntegration.blocks || {};
const newId = generateUuid();
window.boostWidgetIntegration.blocks[widgetDomId].latestFilterSearchRequest = newId;
const {
filterSettings: { sortingAvailableFirst, availableAfterFiltering, productAndVariantAvailable },
generalSettings: { collection_tags },
shop
} = window.boostWidgetIntegration.app["production"];
if ((collection_tags == null ? void 0 : collection_tags.length) > 0) {
params.set("tag", collection_tags[0]);
}
params.set("t", Date.now());
params.set("sid", generateUuid());
if (sortingAvailableFirst) {
params.set("sort_first", "available");
}
if (!availableAfterFiltering && !productAndVariantAvailable) {
params.set("product_available", false);
params.set("variant_available", false);
} else if (!availableAfterFiltering && productAndVariantAvailable) {
params.set("product_available", true);
params.set("variant_available", true);
} else {
params.set("product_available", hasFilterParams);
params.set("variant_available", hasFilterParams);
}
const customParams = window.boostSdCustomParams;
if (customParams && Object.keys(customParams).length > 0) {
for (const key2 in customParams) {
params.set(key2, customParams[key2]);
}
}
const response = await fetch(`${url}?${params}`, { method: "GET" });
const HTTP_STATUS_NEED_FALLBACK = [404, 413, 403, 500];
if (HTTP_STATUS_NEED_FALLBACK.includes(response.status)) {
enableProductFilterFallback();
}
const resJson = await response.json();
const type = isSearchPage() ? "search" : "filter";
saveRequestId(type, (_a = resJson == null ? void 0 : resJson.meta) == null ? void 0 : _a.rid);
const PRE_ACTION = "boostSdPreAction";
setLocalStorage(PRE_ACTION, type);
let html = "";
if (resJson.html) {
html = await resJson.html;
block[widgetDomId].filterTree = resJson.filter;
if (resJson.bundles) {
block[widgetDomId].dynamicBundles = resJson.bundles;
saveRequestId(type, (_b = resJson == null ? void 0 : resJson.meta) == null ? void 0 : _b.rid, resJson.bundles);
}
resJson.filter.options = updateValuesOptions(resJson.filter.options);
const timestamp = (/* @__PURE__ */ new Date()).getTime();
window.boostWidgetIntegration.blocks[widgetDomId].cache[key] = __spreadProps(__spreadValues({}, resJson), { timestamp });
const {
filterLayout,
filterTreeHorizontalStyle,
filterTreeMobileStyle,
filterTreeVerticalStyle
} = ((_c = resJson.setting) == null ? void 0 : _c.filterSettings) || {};
if (filterLayout && filterTreeHorizontalStyle && filterTreeMobileStyle && filterTreeVerticalStyle) {
console.log("Ensure Layout settings");
window.boostWidgetIntegration.blocks[widgetDomId].filterSettings = __spreadValues(__spreadValues({}, window.boostWidgetIntegration.blocks[widgetDomId].filterSettings), {
filterLayout,
filterTreeHorizontalStyle,
filterTreeMobileStyle,
filterTreeVerticalStyle
});
}
} else {
html = await response.text();
}
if ((_d = resJson.meta) == null ? void 0 : _d.money_format) {
shop.money_format = resJson.meta.money_format;
}
if ((_e = resJson.meta) == null ? void 0 : _e.money_format_with_currency) {
shop.money_format_with_currency = resJson.meta.money_format_with_currency;
}
if ((_f = resJson.meta) == null ? void 0 : _f.currency) {
shop.currency = resJson.meta.currency;
}
if (html && widgetDomId) {
const widget = document.getElementById(widgetDomId);
const app = window.boostWidgetIntegration.app["production"];
checkCssAndRender(app, widget, html);
window.boostWidgetIntegration.blocks[widgetDomId].isLoadingHtml = false;
}
}
function initBlocks(blocks, feature, app, templateSettings, sort, widgetId, defaultParams) {
for (const block of blocks) {
window.boostWidgetIntegration.blocks[block.id] = window.boostWidgetIntegration.blocks[block.id] || {};
const context = window.boostWidgetIntegration.blocks[block.id];
context.widgetInfo = {};
context.widgetInfo = templateSettings;
context.templateSettings = templateSettings;
context.app = app;
context.id = block.id;
context.document = block;
context.cache = context.cache || {};
if (defaultParams) context.defaultParams = defaultParams;
context.blockType = feature || "filter";
context.defaultSort = sort;
context.widgetId = widgetId;
if (feature === "recommendation") context.widgetId = block.id.replace("boost-sd-widget-", "");
}
}
var addParamsLocale = (params) => {
var _a, _b, _c, _d, _e, _f, _g;
if (parseFloat(`${(_b = (_a = window.Shopify) == null ? void 0 : _a.currency) == null ? void 0 : _b.rate}`) === 1) return params;
return __spreadProps(__spreadValues({}, params), {
currency_rate: (_d = (_c = window.Shopify) == null ? void 0 : _c.currency) == null ? void 0 : _d.rate,
currency: (_f = (_e = window.Shopify) == null ? void 0 : _e.currency) == null ? void 0 : _f.active,
country: (_g = window.Shopify) == null ? void 0 : _g.country,
return_all_currency_fields: false
});
};
var getLocalStorage = (key) => {
try {
const value = localStorage.getItem(key);
if (value) return JSON.parse(value);
return null;
} catch (error) {
return null;
}
};
var setLocalStorage = (key, value) => {
try {
localStorage.setItem(key, JSON.stringify(value));
} catch (error) {
console.log("Error setLocalStorage", error);
}
};
var removeLocalStorage = (key) => {
try {
localStorage.removeItem(key);
} catch (error) {
console.log("Error setLocalStorage", error);
}
};
var PRE_REQUEST_IDS = "boostSdPreRequestIds";
var PLACEMENT = {
product_page: "product_page",
search_page: "search_page",
instant_search: "instant_search"
};
function saveRequestId(type = "filter", request_id, bundles = []) {
if (!request_id) return;
const requestIds = getLocalStorage(PRE_REQUEST_IDS) || {};
requestIds[type] = request_id;
if (bundles && Array.isArray(bundles)) {
bundles.forEach((bundle) => {
let placement = "";
switch (type) {
case "search":
placement = PLACEMENT.search_page;
break;
case "suggest":
placement = PLACEMENT.search_page;
break;
case "product_page_bundle":
placement = PLACEMENT.product_page;
default:
break;
}
requestIds[`${bundle.widgetId}_${placement}`] = request_id;
});
}
setLocalStorage(PRE_REQUEST_IDS, requestIds);
}
function roundToNearest50(num) {
const remainder = num % 50;
if (remainder > 25) {
return num + (50 - remainder);
} else {
return num - remainder;
}
}
function checkCssAndRender(app, dom, html) {
if (!dom) return;
if (app.themeCssLoaded && app.settingsCSSLoaded) {
dom.innerHTML = html;
window.boostWidgetIntegration.status = "ready";
lazyLoadImages(dom);
return;
}
let tempElement;
const interval = setInterval(() => {
if (app.themeCssLoaded && app.settingsCSSLoaded) {
console.log("css loaded");
if (tempElement) {
document.body.removeChild(tempElement);
}
dom.innerHTML = html;
window.boostWidgetIntegration.status = "ready";
lazyLoadImages(dom);
clearInterval(interval);
} else {
if (tempElement) return;
tempElement = document.createElement("div");
tempElement.style.display = "none";
tempElement.innerHTML = html;
document.body.appendChild(tempElement);
const hasProductList = !!tempElement.querySelector(".boost-sd__product-list");
if (hasProductList && isMobileWidth()) {
const productImages = Array.from(
tempElement.querySelectorAll(".boost-sd__product-image img")
).slice(0, 6);
productImages.forEach((elm) => {
if (elm.src) {
const img = new Image();
img.src = elm.src;
}
});
}
}
}, 50);
}
function lazyLoadImages(dom) {
if (!dom) return;
const lazyImages = dom.querySelectorAll("img[loading='lazy']");
lazyImages.forEach(function(img) {
inViewPortHandler([img.parentElement], (element) => {
const img2 = element.querySelector("img[loading='lazy']");
if (img2) {
img2.removeAttribute("loading");
}
});
});
}
function inViewPortHandler(elements, callback) {
var observer = new IntersectionObserver(function intersectionObserverCallback(entries, observer2) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
callback(entry.target);
observer2.unobserve(entry.target);
}
});
});
elements.forEach(function(element) {
observer.observe(element);
});
}
var isBadUrl = (url) => {
try {
if (!url) {
url = getWindowLocation().search;
}
var urlParams = decodeURIComponent(url).split("&");
var isXSSUrl = false;
if (urlParams.length > 0) {
for (var i = 0; i < urlParams.length; i++) {
var param = urlParams[i];
isXSSUrl = isBadSearchTerm(param);
if (isXSSUrl) break;
}
}
return isXSSUrl;
} catch (e) {
return true;
}
};
var getWindowLocation = () => {
var href = window.location.href;
var escapedHref = href.replace(/%3C/g, "<").replace(/%3E/g, ">");
var rebuildHrefArr = [];
for (var i = 0; i < escapedHref.length; i++) {
rebuildHrefArr.push(escapedHref.charAt(i));
}
var rebuildHref = rebuildHrefArr.join("").split("<").join("%3C").split(">").join("%3E");
var rebuildSearch = "";
var hrefWithoutHash = rebuildHref.replace(/#.*$/, "");
if (hrefWithoutHash.split("?").length > 1) {
rebuildSearch = hrefWithoutHash.split("?")[1];
if (rebuildSearch.length > 0) {
rebuildSearch = "?" + rebuildSearch;
}
}
return {
pathname: window.location.pathname,
href: rebuildHref,
search: rebuildSearch
};
};
var isBadSearchTerm = (term) => {
if (typeof term == "string") {
term = term.toLowerCase();
var domEvents = [
"img src",
"script",
"alert",
"onabort",
"popstate",
"afterprint",
"beforeprint",
"beforeunload",
"blur",
"canplay",
"canplaythrough",
"change",
"click",
"contextmenu",
"copy",
"cut",
"dblclick",
"drag",
"dragend",
"dragenter",
"dragleave",
"dragover",
"dragstart",
"drop",
"durationchange",
"ended",
"error",
"focus",
"focusin",
"focusout",
"fullscreenchange",
"fullscreenerror",
"hashchange",
"input",
"invalid",
"keydown",
"keypress",
"keyup",
"load",
"loadeddata",
"loadedmetadata",
"loadstart",
"mousedown",
"mouseenter",
"mouseleave",
"mousemove",
"mouseover",
"mouseout",
"mouseout",
"mouseup",
"offline",
"online",
"pagehide",
"pageshow",
"paste",
"pause",
"play",
"playing",
"progress",
"ratechange",
"resize",
"reset",
"scroll",
"search",
"seeked",
"seeking",
"select",
"show",
"stalled",
"submit",
"suspend",
"timeupdate",
"toggle",
"touchcancel",
"touchend",
"touchmove",
"touchstart",
"unload",
"volumechange",
"waiting",
"wheel"
];
var potentialEventRegex = new RegExp(domEvents.join("=|on"));
var countOpenTag = (term.match(/</g) || []).length;
var countCloseTag = (term.match(/>/g) || []).length;
var isAlert = (term.match(/alert\(/g) || []).length;
var isConsoleLog = (term.match(/console\.log\(/g) || []).length;
var isExecCommand = (term.match(/execCommand/g) || []).length;
var isCookie = (term.match(/document\.cookie/g) || []).length;
var isJavascript = (term.match(/j.*a.*v.*a.*s.*c.*r.*i.*p.*t/g) || []).length;
var isPotentialEvent = potentialEventRegex.test(term);
if (countOpenTag > 0 && countCloseTag > 0 || countOpenTag > 1 || countCloseTag > 1 || isAlert || isConsoleLog || isExecCommand || isCookie || isJavascript || isPotentialEvent) {
return true;
}
}
return false;
};
var isCollectionPage = () => {
var _a, _b, _c, _d;
return ((_d = (_c = (_b = (_a = window.boostWidgetIntegration) == null ? void 0 : _a.app) == null ? void 0 : _b["production"]) == null ? void 0 : _c.generalSettings) == null ? void 0 : _d.page) === "collection";
};
var isSearchPage = () => {
var _a, _b, _c, _d;
return ((_d = (_c = (_b = (_a = window.boostWidgetIntegration) == null ? void 0 : _a.app) == null ? void 0 : _b["production"]) == null ? void 0 : _c.generalSettings) == null ? void 0 : _d.page) === "search";
};
var isCartPage = () => {
var _a, _b, _c, _d;
return ((_d = (_c = (_b = (_a = window.boostWidgetIntegration) == null ? void 0 : _a.app) == null ? void 0 : _b["production"]) == null ? void 0 : _c.generalSettings) == null ? void 0 : _d.page) === "cart";
};
var isProductPage = () => {
var _a, _b, _c, _d;
return ((_d = (_c = (_b = (_a = window.boostWidgetIntegration) == null ? void 0 : _a.app) == null ? void 0 : _b["production"]) == null ? void 0 : _c.generalSettings) == null ? void 0 : _d.page) === "product";
};
var isHomePage = () => {
var _a, _b, _c, _d;
return ((_d = (_c = (_b = (_a = window.boostWidgetIntegration) == null ? void 0 : _a.app) == null ? void 0 : _b["production"]) == null ? void 0 : _c.generalSettings) == null ? void 0 : _d.page) === "index";
};
var isVendorPage = () => {
return window.location.pathname.indexOf("/collections/vendors") > -1 ? true : false;
};
var getCurrentPage = () => {
let currentPage = "";
switch (true) {
case isCollectionPage():
currentPage = "collection_page";
break;
case isSearchPage():
currentPage = "search_page";
break;
case isProductPage():
currentPage = "product_page";
break;
case isCartPage():
currentPage = "cart_page";
break;
case isHomePage():
currentPage = "home_page";
break;
default:
break;
}
return currentPage;
};
var checkExistFilterOptionParam = () => {
const queryParams = new URLSearchParams(window.location.search);
for (const [key, value] of queryParams.entries()) {
if (key.indexOf("pf_") > -1) {
return true;
}
}
return false;
};
var enableProductFilterFallback = () => {
const cdn = "https://boost-cdn-prod.bc-solutions.net";
const script = document.createElement("script");
script.src = `${cdn}/fallback-theme/1.0.12/boost-sd-fallback-theme.js`;
script.defer = true;
script.onload = () => {
const enableEvent = new CustomEvent("boost-sd-enable-product-filter-fallback");
window.dispatchEvent(enableEvent);
console.log("dispatch event");
};
document.body.appendChild(script);
};
// tae/cart.js
function initCart() {
const app = window.boostWidgetIntegration.app["production"];
document.body.id = "bc-cart";
initBlocks([document.body], "cart", app, app.templateSettings, {}, "bc-cart", "");
}
// src/utils/browser.js
var requestIdleCallback = window.requestIdleCallback || function(cb) {
let start = Date.now();
return setTimeout(function() {
cb({
didTimeout: false,
timeRemaining: function() {
return Math.max(0, 50 - (Date.now() - start));
}
});
}, 1);
};
var cancelIdleCallback = window.cancelIdleCallback || function(id) {
clearTimeout(id);
};
// src/constants/filter-tree.js
var FILTER_MOBILE_FULL_HEIGHT_CLASS = "boost-sd__filter-option-itemwrapper--full-height";
var FILTER_MOBILE_FULL_HEIGHT_SELECTOR = `.${FILTER_MOBILE_FULL_HEIGHT_CLASS}`;
// src/utils/validate.js
var isPageType = () => {
return window.location.pathname.indexOf("/collections/types") > -1 ? true : false;
};
// tae/collection-filter.js
function initCollectionFilter() {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
console.log("block filter init ", /* @__PURE__ */ new Date(), "-", (/* @__PURE__ */ new Date()).getMilliseconds(), "ms");
const {
convertValueRequestStockStatus: convertValueRequestStockStatus2,
isMobileWidth: isMobileWidth2,
detectDeviceByWidth: detectDeviceByWidth2,
getParamsHistory: getParamsHistory2,
getSortBy: getSortBy2,
getApi: getApi2,
getLocalStorage: getLocalStorage2,
generateUuid: generateUuid2,
initBlocks: initBlocks2,
addParamsLocale: addParamsLocale2,
roundToNearest50: roundToNearest502,
getCurrentPage: getCurrentPage2,
isCollectionPage: isCollectionPage3,
isSearchPage: isSearchPage3,
isVendorPage: isVendorPage3
} = utils_exports;
const app = window.boostWidgetIntegration.app["production"];
if (typeof ((_b = (_a = app == null ? void 0 : app.customization) == null ? void 0 : _a.filter) == null ? void 0 : _b.beforeRender) === "function") {
app.customization.filter.beforeRender();
}
const {
generalSettings: { page = "collection" }
} = app || {};
const widgetName = page === "collection" ? "collectionFilters" : "searchPage";
const width = window.innerWidth;
const isMobile = isMobileWidth2();
const productPerRow = isMobile ? ((_e = (_d = (_c = app.templateSettings) == null ? void 0 : _c.themeSettings) == null ? void 0 : _d.productList) == null ? void 0 : _e.productsPerRowOnMobile) || 2 : ((_h = (_g = (_f = app.templateSettings) == null ? void 0 : _f.themeSettings) == null ? void 0 : _g.productList) == null ? void 0 : _h.productsPerRowOnDesktop) || 3;
let showFilterTree = 0;
if (((_j = (_i = app.templateSettings) == null ? void 0 : _i.filterSettings) == null ? void 0 : _j.filterLayout) === "vertical" && ((_l = (_k = app.templateSettings) == null ? void 0 : _k.filterSettings) == null ? void 0 : _l.filterTreeVerticalStyle) === "style-default") {
showFilterTree = 1;
}
const productImageMaxWidth = isMobile ? width / productPerRow : width / (productPerRow + showFilterTree);
const filterDom = document.querySelector(
".boost-sd__filter-product-list:not(.boost-sd__filter-product-list--ready)"
);
(_m = filterDom == null ? void 0 : filterDom.classList) == null ? void 0 : _m.add("boost-sd__filter-product-list--ready");
const widgetId = app.templateMetadata[widgetName] || "default";
const filterDomId = `${widgetId}-${generateUuid2()}`;
const sort = getSortBy2();
let shop = "cf3e3f.myshopify.com";
const paramsHistory = getParamsHistory2();
const productPerPage = (_p = (_o = (_n = app.templateSettings) == null ? void 0 : _n.themeSettings) == null ? void 0 : _o.productList) == null ? void 0 : _p.productsPerPage;
const selectedValueOfLimitList = getLocalStorage2("boostSDLimit") || productPerPage;
const limitSetting = getLocalStorage2("boostSDLimitSetting");
const limit = limitSetting === productPerPage ? parseInt(selectedValueOfLimitList) : productPerPage || 16;
let defaultParams = {
_: "pf",
shop,
page: paramsHistory.page || 1,
limit,
sort: paramsHistory.sort || sort,
locale: ((_q = app == null ? void 0 : app.generalSettings) == null ? void 0 : _q.current_locale) || "en",
event_type: "init",
pg: getCurrentPage2(),
build_filter_tree: true,
collection_scope: "0" ,
money_format: "R {{amount}}",
money_format_with_currency: "R {{amount}} ZAR",
widgetId,
// TODO: Update later when having breakpoint
viewAs: `grid--${isMobileWidth2() ? ((_t = (_s = (_r = app.templateSettings) == null ? void 0 : _r.themeSettings) == null ? void 0 : _s.productList) == null ? void 0 : _t.productsPerRowOnMobile) || 2 : ((_w = (_v = (_u = app.templateSettings) == null ? void 0 : _u.themeSettings) == null ? void 0 : _v.productList) == null ? void 0 : _w.productsPerRowOnDesktop) || 3}`,
device: detectDeviceByWidth2(),
first_load: false,
productImageWidth: roundToNearest502(productImageMaxWidth),
productPerRow,
widget_updated_at: (_x = app.templateMetadata) == null ? void 0 : _x.updatedAt,
templateId:
"iaCE7txsoa"
};
defaultParams = addParamsLocale2(defaultParams);
if (filterDom) {
filterDom.id = filterDomId;
window.boostWidgetIntegration.blocks[filterDomId] = {};
const params = new URLSearchParams(defaultParams);
params["first_load"] = true;
params["search_no_result"] = Object.keys(paramsHistory.paramMap).length === 0;
Object.keys(paramsHistory.paramMap).forEach((key) => {
paramsHistory.paramMap[key].forEach(
(v) => params.append(
`${key}[]`,
key.startsWith(`${defaultParams._}_st_`) ? convertValueRequestStockStatus2(v) : v
)
);
});
const urlParams = new URLSearchParams(window.location.search);
const searchQuery = urlParams.get("q");
const url = isSearchPage3() || searchQuery ? app.searchUrl : app.filterUrl;
if (searchQuery) {
if (isVendorPage3()) {
params.set("vendor", searchQuery);
} else if (isPageType()) {
params.set("product_type", searchQuery);
} else {
params.set("q", searchQuery);
}
if (isCollectionPage3()) {
params.set("incollection_search", true);
params.set("event_type", "incollection_search");
}
buildSearchQueryParamsWithSuggestion(params);
}
if ((_y = app.b2b) == null ? void 0 : _y.enabled) {
params.set(
"company_location_id",
`${app.b2b.current_company_id}_${app.b2b.current_location_id}`
);
const shopifyCurrencySettings = (_z = window.Shopify) == null ? void 0 : _z.currency;
params.set("currency", shopifyCurrencySettings.active);
params.set("currency_rate", shopifyCurrencySettings.rate);
}
getApi2(url, params, filterDomId);
if (filterDom && app.jsLibLoadStatus === "pending") {
const observer = new MutationObserver(function(mutationsList, observer2) {
mutationsList.forEach(function(mutation) {
if (mutation.type === "childList" && mutation.addedNodes.length > 0) {
mutation.addedNodes.forEach(function(addedNode) {
var _a2;
const imgElement = (_a2 = addedNode == null ? void 0 : addedNode.querySelector) == null ? void 0 : _a2.call(
addedNode,
".boost-sd__filter-product-list .boost-sd__product-image img"
);
if (app.jsLibLoadStatus === "pending") {
const loadIntegrationScript = () => {
var _a3;
if (document.getElementById("bc-widget-integration")) {
console.warn("Integration script is already loaded");
return;
}
const widgetLibScript = document.createElement("script");
widgetLibScript.setAttribute("src", app.libUrl);
widgetLibScript.defer = true;
widgetLibScript.id = "bc-widget-integration";
const env = "production";
if (env === "development") widgetLibScript.type = "module";
(_a3 = document.head) == null ? void 0 : _a3.appendChild(widgetLibScript);
app.jsLibLoadStatus = "loading";
widgetLibScript.onload = function() {
app.jsLibLoadStatus = "loaded";
};
};
if (imgElement) {
imgElement.addEventListener("load", function() {
loadIntegrationScript();
});
} else {
loadIntegrationScript();
}
observer2.disconnect();
}
});
}
});
});
observer.observe(filterDom, { childList: true, subtree: true });
}
initBlocks2([filterDom], "filter", app, app.templateSettings, sort, widgetId, defaultParams);
}
}
var initRobotMeta = () => {
const { checkExistFilterOptionParam: checkExistFilterOptionParam2, getQueryParamByKey: getQueryParamByKey2, isSearchPage: isSearchPage3 } = utils_exports;
const {
generalSettings: { enableRobot = true }
} = window.boostWidgetIntegration.app["production"];
if (!enableRobot) return;
const robot = document.querySelector('meta[content="noindex,nofollow,nosnippet"]');
if (!robot && (checkExistFilterOptionParam2() || getQueryParamByKey2("q") && !isSearchPage3())) {
const meta = document.createElement("meta");
meta.name = "robots";
meta.content = "noindex,nofollow,nosnippet";
document.head.append(meta);
}
};
var buildSearchQueryParamsWithSuggestion = (params) => {
const SUGGESTION_DATA = "boostSDSuggestionData";
const CLICK_SUGGESTION_TERM = "boostSDClickSuggestionTerm";
const term = getLocalStorage(CLICK_SUGGESTION_TERM);
if (!term) return;
const suggestionData = getLocalStorage(SUGGESTION_DATA);
if (!suggestionData) return;
params.set("query", suggestionData.query);
params.set("parent_request_id", suggestionData.id);
params.set("suggestion", term);
params.set("item_rank", suggestionData.suggestions.findIndex((item) => item === term) + 1);
removeLocalStorage(CLICK_SUGGESTION_TERM);
removeLocalStorage(SUGGESTION_DATA);
};
// tae/instant-search.js
function initInstantSearch() {
const app = window.boostWidgetIntegration.app["production"];
const instantSearchDom = document.createElement("div");
instantSearchDom.id = "bc-instant-search";
document.body.appendChild(instantSearchDom);
initBlocks(
[instantSearchDom],
"instantSearch",
app,
app.templateSettings,
{},
instantSearchDom.id,
""
);
}
// tae/predictive-bundle.js
function initPredictiveBundle() {
const app = window.boostWidgetIntegration.app["production"];
const predictiveBundleDom = document.querySelector(".boost-sd-widget-predictive-bundle");
if (!predictiveBundleDom) return;
predictiveBundleDom.id = "bc-predictive-bundle";
initBlocks([predictiveBundleDom], "predictiveBundle", app, app.templateSettings, {}, "", "");
}
// tae/recommendation.js
function initRecommendation() {
const app = window.boostWidgetIntegration.app["production"];
const recommendationWidgetDoms = document.querySelectorAll('[id^="boost-sd-widget-"]');
const recommendationWidgets = {};
;
recommendationWidgets['home-page'] = {"homepage-645201":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"newest-arrivals","limit":12,"layoutDisplay":"carousel"},"widgetName":"Just dropped","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"cf3e3f.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"homepage-076486":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"bestsellers","limit":12,"layoutDisplay":"carousel"},"widgetName":"Best Sellers","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"cf3e3f.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}}}
recommendationWidgets['cart-page'] = {"cartpage-160813":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"recently-viewed","limit":12,"layoutDisplay":"carousel"},"widgetName":"Still interested in this?","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"cf3e3f.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"cartpage-614562":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"related-items","limit":12,"layoutDisplay":"carousel","modelType":"Alternative","secondaryAlgorithm":"bestsellers"},"widgetName":"Similar Products","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"cf3e3f.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}}}
recommendationWidgets['product-page'] = {"productpage-426103":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"recently-viewed","limit":12,"layoutDisplay":"carousel"},"widgetName":"Recently viewed","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"cf3e3f.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"productpage-080085":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"frequently-bought-together","limit":2,"layoutDisplay":"bundle","modelType":"FBT","secondaryAlgorithm":"bestsellers"},"widgetName":"Frequently Bought Together","widgetStatus":"draft","widgetDesignSettings":{"bundleStyle":"style1","layoutDisplay":"bundle","numberOfRecommendProduct":2,"templateType":"customization","themePreview":"","titleAlignment":"left","titleFont":"Poppins","titleFontSize":14,"titleFontStyle":"100","titleTextColor":"#3D4246","titleTextTransform":"capitalize"}}}
recommendationWidgets['collection-page'] = {"collectionpage-518806":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"newest-arrivals","limit":12,"layoutDisplay":"carousel"},"widgetName":"Just dropped","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"cf3e3f.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}},"collectionpage-243010":{"params":{"shop":"cf3e3f.myshopify.com","recommendationType":"trending-products","limit":12,"layoutDisplay":"carousel","calculatedBasedOn":"purchase-events","rangeOfTime":"7-day"},"widgetName":"Most Popular Products","widgetStatus":"draft","widgetDesignSettings":{"tenantId":"cf3e3f.myshopify.com","widgetId":"defaultSettings","layoutDisplay":"carousel","templateType":"customization","themePreview":"","numberOfRecommendProduct":12,"numberOfProductPerRow":4,"titleAlignment":"left","titleTextColor":"#3D4246","titleFont":"Poppins","titleTextTransform":"capitalize","titleFontSize":14,"titleFontStyle":"100"}}}
recommendationWidgets['defaultSettings'] = null
;
app.recommendationWidgets = recommendationWidgets;
for (const recDom of recommendationWidgetDoms) {
recDom.innerHTML = `<!-- TEMPLATE RECOMMENDATION PLACEHOLDER-->
<div class="boost-sd__rc-pl">
<div class="boost-sd__rc-title-pl">
<span class="boost-sd__rc-pl-item" style="width: 150px; height: 30px;"></span>
</div>
<div class="boost-sd__rc-product-list-pl">
<span class="boost-sd__rc-pl-item"></span>
<span class="boost-sd__rc-pl-item"></span>
<span class="boost-sd__rc-pl-item"></span>
<span class="boost-sd__rc-pl-item"></span>
</div>
<div class="boost-sd__rc-info-pl">
<span class="boost-sd__rc-pl-item"></span>
<span class="boost-sd__rc-pl-item"></span>
<span class="boost-sd__rc-pl-item"></span>
</div>
</div>
<style>
.boost-sd__rc-pl {
width: 100%;
min-height: 600px;
}
.boost-sd__rc-pl-item {
display: block;
width: 100%;
height: 20px;
background: rgba(0, 0, 0, 0.07);
margin-bottom: 16px;
animation: 2s infinite place-holder-animation;
}
.boost-sd__rc-title-pl {
width: 100%;
display: flex;
padding: 0 0 30px;
}
.boost-sd__rc-product-list-pl {
display: flex;
width: 100%;
padding: 0;
gap: 32px;
position: relative;
margin-bottom: 20px;
}
.boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(3),
.boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(4) {
display: none;
}
.boost-sd__rc-product-list-pl .boost-sd__rc-pl-item {
display: block;
flex-wrap: wrap;
width: calc(50% - 8px);
height: 218px;
}
.boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(2) {
width: 80%
}
.boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(3) {
width: 50%
}
@media only screen and (min-width: 768px) {
.boost-sd__rc-pl-item {
margin-bottom: 8px;
}
.boost-sd__rc-title-pl {
padding-bottom: 60px;
}
.boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(3),
.boost-sd__rc-product-list-pl .boost-sd__rc-pl-item:nth-child(4) {
display: block;
}
.boost-sd__rc-product-list-pl .boost-sd__rc-pl-item {
height: 382px;
width: calc(25% - 8px);
}
.boost-sd__rc-info-pl .boost-sd__rc-pl-item:first-child {
width: 50%
}
.boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(2) {
width: 40%
}
.boost-sd__rc-info-pl .boost-sd__rc-pl-item:nth-child(3) {
width: 30%
}
}
@keyframes place-holder-animation {
0% {
opacity: 1;
}
50% {
opacity: 0.5;
}
100% {
opacity: 1;
}
}
</style>`;
}
initBlocks(
[...recommendationWidgetDoms],
"recommendation",
app,
app.templateSettings,
{},
"",
""
);
}
// tae/pre-order.js
function initPreOrder() {
var _a, _b;
const app = window.boostWidgetIntegration.app["production"];
if (typeof ((_b = (_a = app == null ? void 0 : app.customization) == null ? void 0 : _a.preOrder) == null ? void 0 : _b.beforeRender) === "function") {
app.customization.preOrder.beforeRender();
}
const preOrderDom = document.querySelector(".boost-sd__preOrder-container");
if (preOrderDom) initBlocks([preOrderDom], "preOrder", app, app.templateSettings, {}, "", "");
}
// tae/settings.js
function initSettings() {
window.boostWidgetIntegration = window.boostWidgetIntegration || {};
window.boostWidgetIntegration.app = window.boostWidgetIntegration.app || {};
window.boostWidgetIntegration.blocks = window.boostWidgetIntegration.blocks || {};
window.boostWidgetIntegration.app["production"] = window.boostWidgetIntegration.app["production"] || {};
const combinedAppSettings = mergeDeep(
__spreadProps(__spreadValues(__spreadProps(__spreadValues({
filterUrl: "https://services.mybcapps.com/bc-sf-filter/filter",
searchUrl: "https://services.mybcapps.com/bc-sf-filter/search",
productUrl: "https://services.mybcapps.com/bc-sf-filter/products",
cdn: "https://cdn.boostcommerce.io",
taeSettings: {
instantSearch: null
},
shop: {
name: "Cartridge Depot",
url: "https://cartridgedepot.co.za",
domain: "cf3e3f.myshopify.com",
currency: "ZAR",
money_format: "R {{amount}}",
money_format_with_currency: "R {{amount}} ZAR"
}
},
{
}
), {
filterSettings: Object.assign(__spreadValues({
swatch_extension: "png"
},
{
}), {"showFilterOptionCount":true,"showRefineBy":true,"showOutOfStockOption":false,"showSingleOption":false,"keepToggleState":true,"showLoading":false,"activeScrollToTop":false,"productAndVariantAvailable":false,"availableAfterFiltering":false}),
searchSettings:
{"enableInstantSearch":true,"showSuggestionProductImage":true,"showSuggestionProductPrice":true,"showSuggestionProductSalePrice":true,"showSuggestionProductSku":true,"showSuggestionProductVendor":true}
,
additionalElementSettings: Object.assign(
{
default_sort_order: {"search":"","all":""},
}, {"customSortingList":"relevance|best-selling|manual|title-ascending|title-descending|price-ascending|price-descending|created-ascending|created-descending","enableCollectionSearch":false}),
b2b: Object.assign({
enabled: false
},
{
}
),
generalSettings: Object.assign(__spreadProps(__spreadValues({
preview_mode: false,
preview_path: "",
page: "index",
custom_js_asset_url: "",
custom_css_asset_url: "",
collection_id: 0,
collection_handle: "",
collection_product_count: 0
},
{
}), {
collection_tags: null,
current_tags: null,
default_sort_by: "",
swatch_extension: "png",
no_image_url: "https://cdn.shopify.com/extensions/e3c1b503-36d8-4d8a-854f-e638a56afba6/boost-ai-search-discovery-109/assets/boost-pfs-no-image.jpg",
search_term: "",
template: "index",
currencies: ["ZAR"],
current_currency:"ZAR",
published_locales: __spreadValues({},
{"en":true}
),
current_locale: "en"
}), {})
}),
{
translation: {"refineDesktop":"Filter","refine":"Refine By","refineMobile":"Refine By","refineMobileCollapse":"Hide Filter","clear":"Clear","clearAll":"Clear All","viewMore":"View More","viewLess":"View Less","apply":"Apply","applyAll":"Apply All","close":"Close","back":"Back","showLimit":"Show","collectionAll":"All","under":"Under","above":"Above","ratingStar":"Star","ratingStars":"Stars","ratingUp":"& Up","showResult":"Show result","searchOptions":"Search Options","inCollectionSearch":"Search for products in this collection","loadPreviousPage":"Load Previous Page","loadMore":"Load more {{ amountProduct }} Products","loadMoreTotal":"{{ from }} - {{ to }} of {{ total }} Products","viewAs":"View as","listView":"List view","gridView":"Grid view","gridViewColumns":"Grid view {{count}} Columns","search":{"generalTitle":"General Title (when no search term)","resultHeader":"Search results for \"{{ terms }}\"","resultNumber":"Showing {{ count }} results for \"{{ terms }}\"","seeAllProducts":"See all products","resultEmpty":"We are sorry! We couldn't find results for \"{{ terms }}\".\nBut don't give up – check the spelling or try less specific search terms.","resultEmptyWithSuggestion":"Sorry, nothing found for \"{{ terms }}\". Check out these items instead?","searchTotalResult":"Showing {{ count }} result","searchTotalResults":"Showing {{ count }} results","searchPanelProduct":"Products","searchPanelCollection":"Collections","searchPanelPage":"Blogs & Pages","searchTipsTitle":"Search tips","searchTipsContent":"Please double-check your spelling.\nUse more generic search terms.\nEnter fewer keywords.\nTry searching by product type, brand, model number or product feature.","noSearchResultSearchTermLabel":"Check out some of these popular searches","noSearchResultProductsLabel":"Trending products","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products"},"suggestion":{"viewAll":"View all {{ count }} products","didYouMean":"Did you mean: {{ terms }}","searchBoxPlaceholder":"Search","suggestQuery":"Show {{ count }} results for {{ terms }}","instantSearchSuggestionsLabel":"Popular suggestions","instantSearchCollectionsLabel":"Collections","instantSearchProductsLabel":"Products","instantSearchPagesLabel":"Pages","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products","noSearchResultSearchTermLabel":"Check out some of these popular searches","noSearchResultProductsLabel":"Trending products"},"error":{"noFilterResult":"Sorry, no products matched your selection","noSearchResult":"Sorry, no products matched the keyword","noProducts":"No products found in this collection","noSuggestionResult":"Sorry, nothing found for \"{{ terms }}\".","noSuggestionProducts":"Sorry, nothing found for \"{{ terms }}\"."},"recommendation":{"homepage-645201":"Just dropped","homepage-076486":"Best Sellers","collectionpage-518806":"Just dropped","collectionpage-243010":"Most Popular Products","productpage-426103":"Recently viewed","productpage-080085":"Frequently Bought Together","cartpage-160813":"Still interested in this?","cartpage-614562":"Similar Products"},"productItem":{"qvBtnLabel":"Quick view","atcAvailableLabel":"Add to cart","soldoutLabel":"Sold out","productItemSale":"Sale","productItemSoldOut":"Sold out","viewProductBtnLabel":"View product","atcSelectOptionsLabel":"Select options","amount":"None","savingAmount":"Save {{saleAmount}}","swatchButtonText1":"+{{count}}","swatchButtonText2":"+{{count}}","swatchButtonText3":"+{{count}}","inventoryInStock":"In stock","inventoryLowStock":"Only {{count}} left!","inventorySoldOut":"Sold out","atcAddingToCartBtnLabel":"Adding...","atcAddedToCartBtnLabel":"Added!","atcFailedToCartBtnLabel":"Failed!"},"quickView":{"qvQuantity":"Quantity","qvViewFullDetails":"View full details","buyItNowBtnLabel":"Buy it now","qvQuantityError":"Please input quantity"},"cart":{"atcMiniCartSubtotalLabel":"Subtotal","atcMiniCartEmptyCartLabel":"Your Cart Is Currently Empty","atcMiniCartCountItemLabel":"item","atcMiniCartCountItemLabelPlural":"items","atcMiniCartShopingCartLabel":"Your cart","atcMiniCartViewCartLabel":"View cart","atcMiniCartCheckoutLabel":"Checkout"},"recentlyViewed":{"recentProductHeading":"Recently Viewed Products"},"mostPopular":{"popularProductsHeading":"Popular Products"},"perpage":{"productCountPerPage":"Display: {{count}} per page"},"productCount":{"textDescriptionCollectionHeader":"{{count}} product","textDescriptionCollectionHeaderPlural":"{{count}} products","textDescriptionToolbar":"{{count}} product","textDescriptionToolbarPlural":"{{count}} products","textDescriptionPagination":"Showing {{from}} - {{to}} of {{total}} product","textDescriptionPaginationPlural":"Showing {{from}} - {{to}} of {{total}} products"},"pagination":{"loadPreviousText":"Load Previous Page","loadPreviousInfiniteText":"Load Previous Page","loadMoreText":"Load more","prevText":"Previous","nextText":"Next"},"sortingList":{"sorting":"Sort by","relevance":"Relevance","best-selling":"Best selling","manual":"Manual","title-ascending":"Title ascending","title-descending":"Title descending","price-ascending":"Price ascending","price-descending":"Price descending","created-ascending":"Created ascending","created-descending":"Created descending"},"collectionHeader":{"collectionAllProduct":"Products"},"breadcrumb":{"home":"Home","collections":"Collections","pagination":"Page {{ page }} of {{totalPages}}","toFrontPage":"Back to the front page"},"sliderProduct":{"prevButton":"Previous","nextButton":"Next"}},
primary_language: {"refineDesktop":"Filter","refine":"Refine By","refineMobile":"Refine By","refineMobileCollapse":"Hide Filter","clear":"Clear","clearAll":"Clear All","viewMore":"View More","viewLess":"View Less","apply":"Apply","applyAll":"Apply All","close":"Close","back":"Back","showLimit":"Show","collectionAll":"All","under":"Under","above":"Above","ratingStar":"Star","ratingStars":"Stars","ratingUp":"& Up","showResult":"Show result","searchOptions":"Search Options","inCollectionSearch":"Search for products in this collection","loadPreviousPage":"Load Previous Page","loadMore":"Load more {{ amountProduct }} Products","loadMoreTotal":"{{ from }} - {{ to }} of {{ total }} Products","viewAs":"View as","listView":"List view","gridView":"Grid view","gridViewColumns":"Grid view {{count}} Columns","search":{"generalTitle":"General Title (when no search term)","resultHeader":"Search results for \"{{ terms }}\"","resultNumber":"Showing {{ count }} results for \"{{ terms }}\"","seeAllProducts":"See all products","resultEmpty":"We are sorry! We couldn't find results for \"{{ terms }}\".\nBut don't give up – check the spelling or try less specific search terms.","resultEmptyWithSuggestion":"Sorry, nothing found for \"{{ terms }}\". Check out these items instead?","searchTotalResult":"Showing {{ count }} result","searchTotalResults":"Showing {{ count }} results","searchPanelProduct":"Products","searchPanelCollection":"Collections","searchPanelPage":"Blogs & Pages","searchTipsTitle":"Search tips","searchTipsContent":"Please double-check your spelling.\nUse more generic search terms.\nEnter fewer keywords.\nTry searching by product type, brand, model number or product feature.","noSearchResultSearchTermLabel":"Check out some of these popular searches","noSearchResultProductsLabel":"Trending products","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products"},"suggestion":{"viewAll":"View all {{ count }} products","didYouMean":"Did you mean: {{ terms }}","searchBoxPlaceholder":"Search","suggestQuery":"Show {{ count }} results for {{ terms }}","instantSearchSuggestionsLabel":"Popular suggestions","instantSearchCollectionsLabel":"Collections","instantSearchProductsLabel":"Products","instantSearchPagesLabel":"Pages","searchBoxOnclickRecentSearchLabel":"Recent searches","searchBoxOnclickSearchTermLabel":"Popular searches","searchBoxOnclickProductsLabel":"Trending products","noSearchResultSearchTermLabel":"Check out some of these popular searches","noSearchResultProductsLabel":"Trending products"},"error":{"noFilterResult":"Sorry, no products matched your selection","noSearchResult":"Sorry, no products matched the keyword","noProducts":"No products found in this collection","noSuggestionResult":"Sorry, nothing found for \"{{ terms }}\".","noSuggestionProducts":"Sorry, nothing found for \"{{ terms }}\"."},"recommendation":{"homepage-645201":"Just dropped","homepage-076486":"Best Sellers","collectionpage-518806":"Just dropped","collectionpage-243010":"Most Popular Products","productpage-426103":"Recently viewed","productpage-080085":"Frequently Bought Together","cartpage-160813":"Still interested in this?","cartpage-614562":"Similar Products"},"productItem":{"qvBtnLabel":"Quick view","atcAvailableLabel":"Add to cart","soldoutLabel":"Sold out","productItemSale":"Sale","productItemSoldOut":"Sold out","viewProductBtnLabel":"View product","atcSelectOptionsLabel":"Select options","amount":"None","savingAmount":"Save {{saleAmount}}","swatchButtonText1":"+{{count}}","swatchButtonText2":"+{{count}}","swatchButtonText3":"+{{count}}","inventoryInStock":"In stock","inventoryLowStock":"Only {{count}} left!","inventorySoldOut":"Sold out","atcAddingToCartBtnLabel":"Adding...","atcAddedToCartBtnLabel":"Added!","atcFailedToCartBtnLabel":"Failed!"},"quickView":{"qvQuantity":"Quantity","qvViewFullDetails":"View full details","buyItNowBtnLabel":"Buy it now","qvQuantityError":"Please input quantity"},"cart":{"atcMiniCartSubtotalLabel":"Subtotal","atcMiniCartEmptyCartLabel":"Your Cart Is Currently Empty","atcMiniCartCountItemLabel":"item","atcMiniCartCountItemLabelPlural":"items","atcMiniCartShopingCartLabel":"Your cart","atcMiniCartViewCartLabel":"View cart","atcMiniCartCheckoutLabel":"Checkout"},"recentlyViewed":{"recentProductHeading":"Recently Viewed Products"},"mostPopular":{"popularProductsHeading":"Popular Products"},"perpage":{"productCountPerPage":"Display: {{count}} per page"},"productCount":{"textDescriptionCollectionHeader":"{{count}} product","textDescriptionCollectionHeaderPlural":"{{count}} products","textDescriptionToolbar":"{{count}} product","textDescriptionToolbarPlural":"{{count}} products","textDescriptionPagination":"Showing {{from}} - {{to}} of {{total}} product","textDescriptionPaginationPlural":"Showing {{from}} - {{to}} of {{total}} products"},"pagination":{"loadPreviousText":"Load Previous Page","loadPreviousInfiniteText":"Load Previous Page","loadMoreText":"Load more","prevText":"Previous","nextText":"Next"},"sortingList":{"sorting":"Sort by","relevance":"Relevance","best-selling":"Best selling","manual":"Manual","title-ascending":"Title ascending","title-descending":"Title descending","price-ascending":"Price ascending","price-descending":"Price descending","created-ascending":"Created ascending","created-descending":"Created descending"},"collectionHeader":{"collectionAllProduct":"Products"},"breadcrumb":{"home":"Home","collections":"Collections","pagination":"Page {{ page }} of {{totalPages}}","toFrontPage":"Back to the front page"},"sliderProduct":{"prevButton":"Previous","nextButton":"Next"}},
}
), {
user:
{
}
}),
window.boostWidgetIntegration.app["production"] || {}
);
window.boostWidgetIntegration.env = "production";
window.boostWidgetIntegration.app["production"] = combinedAppSettings;
window.boostWidgetIntegration.app["production"].customization = window.boostWidgetIntegration.app["production"].customization || {};
window.boostWidgetIntegration.regisCustomization = function(fc, scope) {
if (typeof fc === "function" && fc.name && !scope) {
const functionName = fc.name;
window.boostWidgetIntegration.app["production"].customization[functionName] = fc;
} else if (typeof fc === "function" && fc.name && scope) {
window.boostWidgetIntegration.app["production"].customization[scope] = window.boostWidgetIntegration.app["production"].customization[scope] || {};
const functionName = fc.name;
window.boostWidgetIntegration.app["production"].customization[scope][functionName] = fc;
} else {
console.error("Invalid function or function does not have a name.");
}
};
}
// tae/app.js
(function() {
var _a, _b, _c, _d, _e, _f;
initSettings();
initRobotMeta();
window.boostSDTaeUtils = { lazyLoadImages, inViewPortHandler, initCollectionFilter };
const app = window.boostWidgetIntegration.app["production"];
window.boostWidgetIntegration.status = "initializing";
app.fallback = {
themeCssUrl: "https://cdn.boostcommerce.io/widget-integration/theme/default/1.0.1/main.css",
settingsCssUrl: "https://boost-cdn-staging.bc-solutions.net/widget-integration/theme/default/staging/default-settings.css"
};
boostWidgetIntegration.generalSettings = app.generalSettings;
const templateId =
"iaCE7txsoa"
|| "";
boostWidgetIntegration.generalSettings.templateId = templateId;
const templateMetadata =
{"collectionFilters":"iaCE7txsoa/themes/default/main__0__liquid","productList":"iaCE7txsoa/product-list/main__0__liquid","productItem":"iaCE7txsoa/product-item/main__0__liquid","collectionHeader":"iaCE7txsoa/collection-header/main__0__liquid","searchPage":"iaCE7txsoa/themes/default/search__0__liquid","mostPopularProducts":"iaCE7txsoa/no-search-result-page/most-popular-products__0__liquid","recommendation":"iaCE7txsoa/recommendation/main__0__liquid","recommendationDynamicBundle":"iaCE7txsoa/recommendation/main-dynamic-bundle__0__liquid","instantSearchWidget":"iaCE7txsoa/instant-search-widget/main__0__liquid","quickView":"iaCE7txsoa/quickview/main__0__liquid","cart":"iaCE7txsoa/cart/main__0__liquid","placeholderFilterTree":"iaCE7txsoa/place-holder/place-holder__0__liquid","placeholderRecommendation":"iaCE7txsoa/recommendation-placeholder/main__0__liquid","templateVersion":"2.6.1","setupVersion":"v3","applyUniqueVersion":true,"themeNameLib":"default","themeLibVersion":"1.29.1","themeCssVersion":"2.6.1","themeCssUrl":"https://cdn.boostcommerce.io/widget-integration/theme/default/2.6.1/main.css","settingsCssUrl":"https://cdn.shopify.com/s/files/1/0632/0655/5829/files/boost-app-do-not-delete-this-file-cf3e3f__iaCE7txsoa-settings.css?v=1724143130","updatedAt":1729742498,"customizeCssUrl":"https://cdn.boostcommerce.io/widget-integration/theme/customization/cf3e3f.myshopify.com/iaCE7txsoa/customization-1724142126080.css","customizeJsUrl":"https://cdn.boostcommerce.io/widget-integration/theme/customization/cf3e3f.myshopify.com/iaCE7txsoa/customization-1724142125187.js","upgradeLog":"Script upgrade theme lib version to 1.29.1 at 1729742498"}
|| {};
const devMode = window.boostWidgetIntegration.mode === "development";
const env = "production";
const cssLink = document.createElement("link");
cssLink.rel = "stylesheet";
cssLink.type = "text/css";
cssLink.media = "all";
if (templateMetadata == null ? void 0 : templateMetadata.themeCssUrl) {
cssLink.href = templateMetadata.themeCssUrl;
if (env === "staging") {
cssLink.href += `?v=${Date.now()}`;
}
} else if ((_a = app == null ? void 0 : app.fallback) == null ? void 0 : _a.themeCssUrl) {
cssLink.href = (_b = app == null ? void 0 : app.fallback) == null ? void 0 : _b.themeCssUrl;
}
const settingsCSSLink = document.createElement("link");
settingsCSSLink.rel = "stylesheet";
settingsCSSLink.type = "text/css";
settingsCSSLink.media = "all";
if ((templateMetadata == null ? void 0 : templateMetadata.settingsCssUrl) && !devMode) {
settingsCSSLink.href = templateMetadata.settingsCssUrl;
} else if ((_c = app == null ? void 0 : app.fallback) == null ? void 0 : _c.settingsCssUrl) {
settingsCSSLink.href = (_d = app == null ? void 0 : app.fallback) == null ? void 0 : _d.settingsCssUrl;
}
if (devMode) {
app.themeCssLoaded = true;
app.settingsCSSLoaded = true;
} else if (cssLink.href && settingsCSSLink.href) {
document.head.appendChild(cssLink);
cssLink.onload = function() {
app.themeCssLoaded = true;
};
document.head.appendChild(settingsCSSLink);
settingsCSSLink.onload = function() {
app.settingsCSSLoaded = true;
};
const rtlDetected = document.documentElement.getAttribute("dir") === "rtl";
if (rtlDetected) {
const rtlLink = document.createElement("link");
rtlLink.rel = "stylesheet";
rtlLink.type = "text/css";
rtlLink.media = "all";
const themeCssUrl = new URL(cssLink.href);
const themeCssPathWithoutFilename = themeCssUrl.pathname.split("/").slice(0, -1).join("/");
const rtlCssPath = themeCssPathWithoutFilename + "/rtl.css";
const rtlCssUrl = new URL(rtlCssPath, themeCssUrl.origin);
rtlLink.href = rtlCssUrl.href;
document.head.appendChild(rtlLink);
}
}
if (!devMode) {
app.cdn = app.cdn || "https://cdn.boostcommerce.io";
let themeLibVersion = env === "staging" ? "staging" : templateMetadata.themeLibVersion || "1.5.0";
let libUrl = app.libUrl || `${app.cdn}/widget-integration/${themeLibVersion}/bc-widget-integration.js`;
if (env === "development") {
libUrl = `${app.cdn}/widget-integration/bc-widget-integration.js`;
}
if (env === "staging") {
libUrl += `?v=${Date.now()}`;
}
app.libUrl = libUrl;
const link = document.createElement("link");
if (env === "development") {
link.rel = "modulepreload";
} else {
link.rel = "preload";
}
link.as = "script";
link.href = libUrl;
(_e = document.head) == null ? void 0 : _e.appendChild(link);
if (isMobileWidth()) {
app.jsLibLoadStatus = "pending";
} else {
const widgetLibScript = document.createElement("script");
widgetLibScript.setAttribute("src", libUrl);
widgetLibScript.defer = true;
if (env === "development") widgetLibScript.type = "module";
(_f = document.head) == null ? void 0 : _f.appendChild(widgetLibScript);
app.jsLibLoadStatus = "loading";
widgetLibScript.onload = function() {
app.jsLibLoadStatus = "loaded";
};
}
}
app.filterUrl = "https://services.mybcapps.com/bc-sf-filter/filter";
app.searchUrl = "https://services.mybcapps.com/bc-sf-filter/search";
app.productUrl = "https://services.mybcapps.com/bc-sf-filter/products";
app.recommendUrl = "https://services.mybcapps.com/discovery/recommend";
app.templateUrl = "https://services.mybcapps.com/bc-sf-filter/ssr-template";
app.bundleUrl = "https://services.mybcapps.com/bc-sf-filter/bundles";
app.templateMetadata = templateMetadata;
const product =
""
|| {};
window.boostSDData = { product };
let templateSettings =
{"appPreferenceSettings":{"watermark":false},"generalSettings":{"addCollectionToProductUrl":false,"breakpointmobile":"575px","breakpointtabletportraitmin":"576px","breakpointtabletportraitmax":"991px","breakpointtabletlandscapetmin":"992px","breakpointtabletlandscapemax":"1199px","breakpointdesktop":"1200px"},"searchSettings":{"searchPanelBlocks":{"searchTermSuggestions":{"label":"Check out some of these popular searches","searchTermList":[],"backup":[],"type":"based_on_data","active":false},"mostPopularProducts":{"label":"Trending products","productList":[],"backup":[],"type":"based_on_data","active":true},"products":{"label":"Products","pageSize":25,"active":true,"displayImage":true},"collections":{"label":"Collections","pageSize":25,"active":true,"displayImage":false,"displayDescription":false},"pages":{"label":"Pages","pageSize":25,"active":true,"displayImage":false,"displayExcerpt":false},"searchEmptyResultMessages":{"active":true,"label":"We are sorry! We couldn't find results for \"{{ terms }}\".{{ breakline }}But don't give up – check the spelling or try less specific search terms."},"searchTips":{"label":"Search tips","active":true,"searchTips":"Please double-check your spelling.{{ breakline }}Use more generic search terms.{{ breakline }}Enter fewer keywords.{{ breakline }}Try searching by product type, brand, model number or product feature."}},"suggestionNoResult":{"search_terms":{"label":"Check out some of these popular searches","status":true,"data":[],"type":"based_on_data","backup":[]},"products":{"label":"Trending products","status":true,"data":[],"type":"based_on_data","backup":[]}},"enableInstantSearch":true,"productAvailable":false,"showSuggestionProductImage":true,"showSuggestionProductPrice":true,"showSuggestionProductSalePrice":true,"showSuggestionProductSku":true,"showSuggestionProductVendor":true,"suggestionBlocks":[{"type":"suggestions","label":"Popular suggestions","status":"active","number":3},{"type":"collections","label":"Collections","status":"active","number":3},{"type":"products","label":"Products","status":"active","number":6},{"type":"pages","label":"Blog & Pages","status":"active","number":3}],"searchBoxOnclick":{"recentSearch":{"label":"Recent searches","status":true,"number":"3"},"searchTermSuggestion":{"label":"Popular searches","status":true,"data":[],"backup":[],"type":"manually"},"productSuggestion":{"label":"Trending products","status":true,"data":[],"backup":[],"type":"manually"}},"suggestionStyle":"style2","suggestionStyle1ProductItemType":"list","suggestionStyle1ProductPosition":"none","suggestionStyle1ProductPerRow":"1","suggestionStyle2ProductItemType":"list","suggestionStyle2ProductPosition":"right","suggestionStyle2ProductPerRow":"2","suggestionStyle3ProductItemType":"list","suggestionStyle3ProductPosition":"right","suggestionStyle3ProductPerRow":"3"},"filterSettings":{"showFilterOptionCount":true,"showRefineBy":true,"showOutOfStockOption":false,"showSingleOption":false,"keepToggleState":true,"changeMobileButtonLabel":false,"sortingAvailableFirst":false,"showLoading":false,"activeScrollToTop":false,"showVariantImageBasedOnSelectedFilter":"","productAndVariantAvailable":false,"availableAfterFiltering":false,"isShortenUrlParam":false,"filterTreeMobileStyle":"style2","filterTreeVerticalStyle":"style-default","filterTreeHorizontalStyle":"style1","stickyFilterOnDesktop":false,"stickyFilterOnMobile":false,"style":{"filterTitleTextColor":"","filterTitleFontSize":"","filterTitleFontWeight":"","filterTitleFontTransform":"","filterTitleFontFamily":"","filterOptionTextColor":"","filterOptionFontSize":"","filterOptionFontFamily":"","filterMobileButtonTextColor":"","filterMobileButtonFontSize":"","filterMobileButtonFontWeight":"","filterMobileButtonFontTransform":"","filterMobileButtonFontFamily":"","filterMobileButtonBackgroundColor":""},"filterLayout":"vertical"},"additionalElementSettings":{"customSortingList":"relevance|best-selling|manual|title-ascending|title-descending|price-ascending|price-descending|created-ascending|created-descending","enableCollectionSearch":false},"themeSettings":{"productItems":{"general":{"borderLayout":"noBorder","subLayout":"subLayout_2_2"},"productImg":{"elements":{"productSaleLabel":{"shape":"rectangle","displayType":"text","displayOptions":"always","color":"#FFFFFF","backgroundColor":"#DD3300","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit","isEnable":true},"productSoldOutLabel":{"hideOtherLabelsWhenSoldOut":true,"shape":"rectangle","displayType":"text","displayOptions":"always","color":"#FFFFFF","backgroundColor":"#222222","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit","isEnable":true},"productCustomLabelByTag":{"shape":"rectangle","color":"#FFFFFF","backgroundColor":"#00A47C","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit","isEnable":false},"selectOptionBtn":{"buttonType":"selectOptionBtn","action":"quickAddToCart","isEnable":true},"qvBtn":{"buttonType":"qvBtn","isEnable":true}},"grid":{"top":{"direction":"horizontal","elements":{"left":["saleLabel","soldOutLabel","customLabelByTag"]}},"bottom":{"direction":"horizontal","elements":{"left":["selectOptionBtn","qvBtn"]}}},"aspectRatioType":"natural","hoverEffect":"reveal-second-image"},"styleSettings":{"selectOptionBtn":{"showOnHovering":true,"showOn":"desktopOnly","displayType":"textWithIcon","shape":"rectangle","imgSrc":"https://boost-cdn-prod.bc-solutions.net/icon/add-to-cart-white.svg","iconPosition":"left","backgroundColor":"#222222","backgroundColorOnHover":"#222222","borderColor":"#222222","borderColorOnHover":"#222222","textColor":"#FFFFFF","textColorOnHover":"#FFFFFF","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit","width":"100%"},"qvBtn":{"showOn":"desktopOnly","showOnHovering":true,"displayType":"icon","shape":"square","imgSrc":"https://boost-cdn-prod.bc-solutions.net/icon/quick-view.svg","iconPosition":"left","width":"40px","backgroundColor":"#FFFFFF","backgroundColorOnHover":"#FFFFFF","borderColor":"#222222","borderColorOnHover":"#222222","textColor":"#222222","textColorOnHover":"#222222","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","fontWeight":"inherit"}},"productInfo":{"textAlign":"left","elements":{"swatches.1":{"showOptionValueOnHovering":true,"shape":"circle","changeProductImageOn":"hover","isEnable":false},"title":{"color":"#222222","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"capitalize","isEnable":true,"fontWeight":"inherit"},"vendor":{"color":"#595959","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","textTransform":"uppercase","isEnable":false,"fontWeight":"inherit"},"price":{"showCentAsSuperscript":false,"showCurrencyCodes":false,"compareAtPricePosition":"right","showSavingDisplay":false,"priceColor":"#222222","priceFontSizeScale":100,"priceFontFamily":"inherit","priceFontStyle":"inherit","priceFontSize":"inherit","priceFontSizeTabletPortrait":"inherit","priceFontSizeTabletLandscape":"inherit","priceFontSizeMobile":"inherit","salePriceColor":"#DD3300","salePriceFontSizeScale":100,"salePriceFontFamily":"inherit","salePriceFontStyle":"inherit","salePriceFontSize":"inherit","salePriceFontSizeTabletPortrait":"inherit","salePriceFontSizeTabletLandscape":"inherit","salePriceFontSizeMobile":"inherit","compareAtPriceColor":"#595959","compareAtPriceFontSizeScale":100,"compareAtPriceFontFamily":"inherit","compareAtPriceFontStyle":"inherit","compareAtPriceFontSize":"inherit","compareAtPriceFontSizeTabletPortrait":"inherit","compareAtPriceFontSizeTabletLandscape":"inherit","compareAtPriceFontSizeMobile":"inherit","savingDisplayColor":"#DD3300","savingDisplayFontSizeScale":100,"savingDisplayFontFamily":"inherit","savingDisplayFontStyle":"inherit","savingDisplayFontSize":"inherit","savingDisplayFontSizeTabletPortrait":"inherit","savingDisplayFontSizeTabletLandscape":"inherit","savingDisplayFontSizeMobile":"inherit","isEnable":true,"priceFontWeight":"inherit","salePriceFontWeight":"inherit","compareAtPriceFontWeight":"inherit","savingDisplayFontWeight":"inherit"},"rating":false,"swatches.2":{"showOptionValueOnHovering":true,"shape":"circle","changeProductImageOn":"hover","isEnable":false},"swatches.3":{"showOptionValueOnHovering":true,"shape":"circle","changeProductImageOn":"hover","isEnable":false}}}},"additionalElements":{"pagination":{"paginationType":"default","alignment":"center","productCount":{"showProductCount":false,"position":"top"},"number":{"shape":"circle","color":"#222222","colorOnSelected":"#222222","backgroundColor":"#FFFFFF","backgroundColorOnSelected":"#FFFFFF","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","fontWeight":"inherit"},"button":{"shape":"circle","buttonType":"icon-only","color":"#222222","backgroundColor":"#FFFFFF","backgroundColorOnHover":"#FFFFFF","textTransform":"none","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","fontWeight":"inherit"}},"toolbar":{"layout":"3_1","elements":{"viewAs":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#222222","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","listType":"grid/list","isEnable":true,"fontWeight":"inherit"},"productCount":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#222222","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":true,"fontWeight":"inherit"},"showLimitList":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#222222","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":false,"fontWeight":"inherit"},"sorting":{"fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","color":"#222222","fontFamily":"inherit","fontStyle":"inherit","textTransform":"none","isEnable":true,"fontWeight":"inherit"}}},"collectionHeader":{"isEnable":false,"layout":2,"contentPosition":"middle-center","elements":{"breadCrumb":{"showCollectionTitle":false,"showCollectionList":false,"showPagination":false,"placement":"on-top","alignment":"middle-left","isEnable":false},"collectionImage":{"size":"medium","parallaxEffect":false,"directionParallax":"vertical","isEnable":true},"collectionTitle":{"textAlign":"center","textTransform":"none","fontSizeScale":100,"fontSize":40,"fontSizeTabletPortrait":40,"fontSizeTabletLandscape":40,"fontSizeMobile":30,"fontFamily":"inherit","fontStyle":"inherit","collectionTitleColor":"#222222","isEnable":true,"fontWeight":"inherit"},"productCount":{"fontSizeScale":100,"fontSize":14,"fontSizeTabletPortrait":14,"fontSizeTabletLandscape":14,"fontSizeMobile":14,"color":"#222222","isEnable":false},"collectionDescription":{"fontSize":null,"fontSizeTabletPortrait":null,"fontSizeTabletLandscape":null,"fontSizeMobile":null,"isEnable":false}}}},"quickView":{"showProductImage":true,"thumbnailPosition":"topLeft","buttonOverall":{"shape":"round","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","fontWeight":"inherit"},"buyItNowBtn":{"enable":true,"color":"#FFFFFF","hoverColor":"#FFFFFF","backgroundColor":"#222222","hoverBackgroundColor":"#222222","textTransform":"none"},"addToCartBtn":{"color":"#222222","hoverColor":"#222222","backgroundColor":"#FFFFFF","hoverBackgroundColor":"#FFFFFF","borderColor":"#222222","hoverBorderColor":"#222222","textTransform":"none"}},"cart":{"enableCart":false,"cartStyle":"side","generalLayout":{"shape":"round","fontSizeScale":100,"fontSize":"inherit","fontSizeTabletPortrait":"inherit","fontSizeTabletLandscape":"inherit","fontSizeMobile":"inherit","fontFamily":"inherit","fontStyle":"inherit","fontWeight":"inherit"},"checkoutBtn":{"textTransform":"none","color":"#FFFFFF","hoverColor":"#FFFFFF","backgroundColor":"#222222","hoverBackgroundColor":"#222222"},"viewCartBtn":{"textTransform":"none","color":"#222222","hoverColor":"#222222","backgroundColor":"#FFFFFF","hoverBackgroundColor":"#FFFFFF","borderColor":"#222222"}},"productList":{"productsPerPage":24,"productsPerRowOnDesktop":3,"productsPerRowOnMobile":2}},"currentAppIntegration":{},"themeName":"default","srcThemeNameLib":"trade"}
|| {};
app.templateSettings = templateSettings;
app.template = {};
;
app.template["quickView"] = `<!-- TEMPLATE QUICK VIEW -->
{% if product.original_images != nil %}
{% assign image_array = product.original_images %}
{% else %}
{% assign image_array = product.images_info %}
{% endif %}
{% if image_array.size == 0 %}
{% assign image_array = "no_image" | split: ' ' %}
{% endif %}
{% assign show_prev_next_btns = image_array.size > 4 %}
{% capture productData %}
{
"id": "{{ product.id }}",
"handle": "{{ product.handle }}",
"variantId": "{{ product.variant_id }}",
"splitProduct": "{{ product.split_product }}",
"variants": {{ product.variants | json | escape }},
"tags": {{ product.tags | json | escape }},
"images": {{ image_array | json | escape }}
}
{% endcapture %}
<div class="boost-sd__modal" id="boost-sd__modal-quickview" aria-modal="true" role="dialog" aria-label="modal" data-product-id='{{ productData.id }}' data-product='{{ productData | json_encode }}'>
<div class="boost-sd__modal-backdrop"></div>
<div class="boost-sd__modal-container">
<div tabindex="-1" class="boost-sd__modal-wrapper">
<div class="boost-sd__quick-view" product-id="{{ product.id }}">
<div class="boost-sd__quick-view-product-image">
<div class="boost-sd__slider boost-sd__slider--thumb-vertical">
<div class="boost-sd__thumbs-container boost-sd__thumbs-container--vertical">
{% if show_prev_next_btns %}
<div class="boost-sd__thumbs-container-prev-button boost-sd__thumbs-container-prev-button--vertical"><button type="button" aria-label="Previous" class="boost-sd__button boost-sd__button--circle boost-sd__button--full-width" style="padding: 0px;" disabled=""><span class="boost-sd__icon" style="margin: 0px;">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__thumbs-container-button-icon">
<path stroke-linejoin="round" stroke-linecap="round" stroke="currentColor" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path>
</svg>
</span></button></div>
{% endif %}
<div class="boost-sd__thumbs-container-thumbs boost-sd__thumbs-container-thumbs--vertical">
{% if request.previewMode == true %}
{% for image in image_array limit: 4 %}
<div class="boost-sd__thumbs-container-thumbs-item">
<div class="boost-sd__slide">
<div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4">
<div class="boost-sd__product-image">
<img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="{{ product.title | escape }}" />
</div>
</div>
</div>
</div>
{% endfor %}
{% else %}
{% for image in image_array %}
<div class="boost-sd__thumbs-container-thumbs-item">
<div class="boost-sd__slide">
<div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4">
<div class="boost-sd__product-image">
<img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="{{ product.title | escape }}" />
</div>
</div>
</div>
</div>
{% endfor %}
{% endif %}
</div>
{% if show_prev_next_btns %}
<div class="boost-sd__thumbs-container-next-button boost-sd__thumbs-container-next-button--vertical"><button type="button" aria-label="Next" class="boost-sd__button boost-sd__button--circle boost-sd__button--full-width" style="padding: 0px;"><span class="boost-sd__icon" style="margin: 0px;">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__thumbs-container-button-icon">
<path stroke-linejoin="round" stroke-linecap="round" stroke="currentColor" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path>
</svg>
</span></button></div>
{% endif %}
</div>
<div class="slick-slider">
{% if request.previewMode == true %}
{% for image in image_array limit: 1 %}
<div class="boost-sd__slide">
<div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4">
<div class="boost-sd__product-image-row boost-sd__product-image-row--top">
<div class="boost-sd__product-image-column boost-sd__product-image-column--in-top boost-sd__product-image-column--left">
{% assign hideOtherLabelsWhenSoldOut = true -%}
{% if hideOtherLabelsWhenSoldOut != true -%}
{% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%}
{% if compareAtPriceMin > product.price_min -%}
{% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%}
{% assign salePercent = percent | append: '%' -%}
{% assign saleAmount = compareAtPriceMin | minus: product.price_min -%}
{% assign productItemSaleTranslated = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--sale">
<span class="boost-sd__product-label-text">
<span>{{ productItemSaleTranslated }}</span>
</span>
</div>
{% endif -%}
{% if product.available == false -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--soldout">
<span class="boost-sd__product-label-text">{{ "productItem.productItemSoldOut" | translate: translations, "Sold out" }}</span>
</div>
{% endif -%}
{% else -%}
{% if product.available == false -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--soldout">
<span class="boost-sd__product-label-text">{{ "productItem.productItemSoldOut" | translate: translations, "Sold out" }}</span>
</div>
{% else -%}
{% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%}
{% if compareAtPriceMin > product.price_min -%}
{% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%}
{% assign salePercent = percent | append: '%' -%}
{% assign saleAmount = compareAtPriceMin | minus: product.price_min -%}
{% assign translatedText = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount %}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--sale">
<span class="boost-sd__product-label-text">
<span>{{ translatedText }}</span>
</span>
</div>
{% endif -%}
{% endif -%}
{% endif -%}
</div>
</div>
<div class="boost-sd__product-image">
<img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="{{ product.title | escape }}" />
</div>
</div>
</div>
{% endfor %}
{% else %}
{% for image in image_array %}
<div class="boost-sd__slide">
<div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--aspect-ratio-3-4">
<div class="boost-sd__product-image-row boost-sd__product-image-row--top">
<div class="boost-sd__product-image-column boost-sd__product-image-column--in-top boost-sd__product-image-column--left">
{% assign hideOtherLabelsWhenSoldOut = true -%}
{% if hideOtherLabelsWhenSoldOut != true -%}
{% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%}
{% if compareAtPriceMin > product.price_min -%}
{% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%}
{% assign salePercent = percent | append: '%' -%}
{% assign saleAmount = compareAtPriceMin | minus: product.price_min -%}
{% assign productItemSaleTranslated = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--sale">
<span class="boost-sd__product-label-text">
<span>{{ productItemSaleTranslated }}</span>
</span>
</div>
{% endif -%}
{% if product.available == false -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--soldout">
<span class="boost-sd__product-label-text">{{ "productItem.productItemSoldOut" | translate: translations, "Sold out" }}</span>
</div>
{% endif -%}
{% else -%}
{% if product.available == false -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--soldout">
<span class="boost-sd__product-label-text">{{ "productItem.productItemSoldOut" | translate: translations, "Sold out" }}</span>
</div>
{% else -%}
{% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%}
{% if compareAtPriceMin > product.price_min -%}
{% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%}
{% assign salePercent = percent | append: '%' -%}
{% assign saleAmount = compareAtPriceMin | minus: product.price_min -%}
{% assign translatedText = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount %}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--sale">
<span class="boost-sd__product-label-text">
<span>{{ translatedText }}</span>
</span>
</div>
{% endif -%}
{% endif -%}
{% endif -%}
</div>
</div>
<div class="boost-sd__product-image">
<img id="product-image-{{ product.id }}" class="boost-sd__product-image-img boost-sd__product-image-img--main" {% if image.src %} src="{{ image.src }}" {% else %} src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268" {% endif %} fetchpriority="auto" sizes="200px" decoding="async" loading="eager" alt="{{ product.title | escape }}" />
</div>
</div>
</div>
{% endfor %}
{% endif %}
</div>
</div>
</div>
<div class="boost-sd__quick-view-product-info">
<h2 class="boost-sd__quick-view-title">{{ product.title }}</h2>
<p class="boost-sd__quick-view-vendor">{{ product.vendor }}</p>
<div class="boost-sd__quick-view-price">
<span class="boost-sd__format-currency"><span class="">$ {{ product.price_min }}</span></span>
</div>
{% for swatch in product.options_with_values %}
<div class="boost-sd__product-swatch">
<div class="boost-sd__product-swatch-title">{{ swatch.label | escape }}</div>
<div class="boost-sd__product-swatch-options">
{% for value in swatch.values %}
<div class="boost-sd__product-swatch-option">
<div class="boost-sd__radio">
<div class="boost-sd__tooltip">
{% if swatch.original_name == 'color' %}
<div class="boost-sd__tooltip-content">{{ value.title | strip_html | escape }}</div>
{% endif %}
<input id="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-input boost-sd__radio-input--hidden" type="radio" value="{{ value.title | strip_html | escape }}" checked="" />
{% if swatch.original_name == 'color' %}
{% assign backgroundSwatch = "background-color:" | append: value.title | strip_html | escape %}
{% assign domain = request.shop %}
{% assign imageName = value.title | strip_html | downcase | strip | escape %}
{% if imageName contains " " %}
{% assign imageName = imageName | replace: ' ', "-" %}
{% endif %}
{% assign url = "//" | append: domain | append: "/cdn/shop/files/" | append: imageName | append: ".png" %}
{% assign backgroundSwatch = backgroundSwatch | append: "; background-image: url('" | append: url | append: "');"%}
<label tabindex="{{ forloop.index }}" for="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-label boost-sd__radio-label--hide-text {% if forloop.first %}boost-sd__radio-label--selected{% endif %} boost-sd__radio-label--large" style="{{ backgroundSwatch }}">
{{ value.title | strip_html | escape }}
</label>
{% else %}
<label tabindex="{{ forloop.index }}" for="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-label {% if forloop.first %}boost-sd__radio-label--selected{% endif %} boost-sd__radio-label--in-quick-view">{{ value.title | strip_html | escape }}</label>
{% endif %}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
<div class="boost-sd__quick-view-quantity">
<p class="boost-sd__quick-view-quantity-title">{{ "quickView.qvQuantity" | translate: translations, 'Quantity' }}</p>
<div class="boost-sd__input-number boost-sd__input-number--md">
<div class="boost-sd__input-number-btn-wrapper">
<button type="button" class="boost-sd__button boost-sd__button--full-width boost-sd__input-number-btn"><span>-</span></button>
</div>
<input type="number" aria-label="Item quantity" class="boost-sd__input-number-input" value="1" />
<div class="boost-sd__input-number-btn-wrapper">
<button type="button" class="boost-sd__button boost-sd__button--full-width boost-sd__input-number-btn"><span>+</span></button>
</div>
</div>
<div class="boost-sd__quick-view-quantity-error" style="color: red; font-size: 90%; display: none">{{ "quickView.qvQuantityError" | translate: translations, 'Please input quantity' }}</div>
</div>
<div class="boost-sd__quick-view-btn">
<button type="button" class="boost-sd__button boost-sd__button--border boost-sd__button--round boost-sd__button--large boost-sd__btn-add-to-cart">
<span class="boost-sd__button-text">{{ "productItem.atcAvailableLabel" | translate: translations, 'Add to cart' }}</span>
</button>
<button type="button" class="boost-sd__button boost-sd__button--border boost-sd__button--round boost-sd__button--large boost-sd__btn-buy-now">
<span class="boost-sd__button-text">{{ "quickView.buyItNowBtnLabel" | translate: translations, 'Buy it now' }}</span>
</button>
</div>
<a class="boost-sd__quick-view-details-link" href="/products/{{ product.handle }}">{{ "quickView.qvViewFullDetails" | translate: translations, 'View full details' }}</a>
</div>
</div>
<button type="button" aria-label="Close" class="boost-sd__button boost-sd__button--transparent boost-sd__button--float boost-sd__modal-close-btn">
<svg class="boost-sd__modal-close-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.3536 5.35355C19.5488 5.15829 19.5488 4.84171 19.3536 4.64645C19.1583 4.45118 18.8417 4.45118 18.6464 4.64645L12 11.2929L5.35355 4.64645C5.15829 4.45118 4.84171 4.45118 4.64645 4.64645C4.45118 4.84171 4.45118 5.15829 4.64645 5.35355L11.2929 12L4.64645 18.6464C4.45118 18.8417 4.45118 19.1583 4.64645 19.3536C4.84171 19.5488 5.15829 19.5488 5.35355 19.3536L12 12.7071L18.6464 19.3536C18.8417 19.5488 19.1583 19.5488 19.3536 19.3536C19.5488 19.1583 19.5488 18.8417 19.3536 18.6464L12.7071 12L19.3536 5.35355Z" fill="#222222"></path>
</svg>
</button>
<div tabindex="0" class="boost-sd__modal-last-child"></div>
</div>
</div>
</div>`;
;
app.template["cart"] = `<!-- TEMPLATE CART -->
{% comment %} This Template contains a few variables built from the client js side {% endcomment %}`;
;
app.template["refineBy"] = `<!-- TEMPLATE REFINE BY -->
<div class='boost-sd__refine-by-vertical-refine-by'>
<div class='boost-sd__refine-by-vertical-refine-by-title'>
<div class='boost-sd__refine-by-vertical-refine-by-heading'>{{ "refine" | translate: translations, "Refine By" }}</div>
<button type='button' aria-label='{{ "clearAll" | translate: translations, "Clear All" }}' id='boost-sd__button--clear-all-filters' class='boost-sd__button boost-sd__button--clear' data-metadata='{ "action": { "clearAllFilter": "" } }'>
<span class='boost-sd__button-text' data-metadata='{ "action": { "clearAllFilter": "" } }'>{{ "clearAll" | translate: translations, "Clear All" }}</span>
</button>
</div>
<div class='boost-sd__refine-by-vertical-refine-by-list'>
{% for refineByOption in refineBy.options %}
<button metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json }} } }' class='boost-sd__refine-by-vertical-refine-by-item' aria-label='{{ "clearAll" | translate: translations, "Clear All" }}' id='{{refineByOption.data.value | downcase | replace: " ", "-" | append: "-clear-filter" | simpleMd5 }}'>
<div metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json }} } }' class='boost-sd__refine-by-vertical-refine-by-type'>
<span metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json }} } }' class='boost-sd__refine-by-vertical-refine-by-option'>
{{ refineByOption.data.label | escape }}:
</span>
<span metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json }} } }' class='boost-sd__refine-by-vertical-refine-by-value'>
{% if refineByOption.type == 'range' %}
{% if refineByOption.data.key == 'pf_p_price' or refineByOption.data.key == 'pf_vp_variants_price' %}
{{
refineByOption.data.value.lower
| currency_format: refineByOption.data.moneyFormatValue
}}
-
{{
refineByOption.data.value.upper
| currency_format: refineByOption.data.moneyFormatValue
}}
{% else %}
{{ refineByOption.data.value.lower | escape }} - {{ refineByOption.data.value.upper | escape }}
{% endif %}
{% else %}
{{ refineByOption.data.valueDisplay | escape}}
{% endif %}
</span>
</div>
<svg metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json }} } }' class='boost-sd__refine-by-vertical-refine-by-clear' xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' role='img' aria-label='{{ "clearAll" | translate: translations, "Clear All" }}' fill='#222'>
<path metadata='{"action": { "clearFilter": {{ refineByOption.metaData | json }} } }' fill-rule="evenodd" clip-rule="evenodd" d="M7.41401 6.00001L11.707 1.70701C12.098 1.31601 12.098 0.684006 11.707 0.293006C11.316 -0.0979941 10.684 -0.0979941 10.293 0.293006L6.00001 4.58601L1.70701 0.293006C1.31601 -0.0979941 0.684006 -0.0979941 0.293006 0.293006C-0.0979941 0.684006 -0.0979941 1.31601 0.293006 1.70701L4.58601 6.00001L0.293006 10.293C-0.0979941 10.684 -0.0979941 11.316 0.293006 11.707C0.488006 11.902 0.744006 12 1.00001 12C1.25601 12 1.51201 11.902 1.70701 11.707L6.00001 7.41401L10.293 11.707C10.488 11.902 10.744 12 11 12C11.256 12 11.512 11.902 11.707 11.707C12.098 11.316 12.098 10.684 11.707 10.293L7.41401 6.00001Z" fill="#3D4246">
</path>
</svg>
</button>
{% endfor %}
</div>
</div>`;
;
app.template["filterOptionBoxItem"] = `{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% if request.previewMode == true %}
<li class="boost-sd__filter-option-item boost-sd__filter-option-box-item">
<button role='checkbox' aria-label='{{ value.key | escape_once | strip_html }}' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'>
<span class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ value.key | escape | upcase }}
{% else %}
{{ value.key | escape }}
{% endif %}
</span>
</button>
</li>
{% else %}
<li class='{{ className }}'>
<button id='{{ actionId }}' data-action='{{ dataAction }}' role='checkbox' aria-label='Find product with {{ label | escape }} is {{ value.label | escape_once | strip_html }}' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'>
<span data-action='{{ dataAction }}' class='boost-sd__filter-option-item-label'>
{% if displayAllValuesInUppercaseForm %}
{{ value.label | escape | upcase }}
{% else %}
{{ value.label | escape }}
{% endif %}
</span>
</button>
</li>
{% endif %}`;
;
app.template["filterOptionListItem"] = `{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% if request.previewMode == true %}
<li class="boost-sd__filter-option-item boost-sd__filter-option-list-option-item">
<button role="checkbox" aria-checked="false" aria-label="{{ value.key | escape_once }}" class="boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button boost-sd__filter-option-item-button--with-checkbox">
{% if option.filterType == "variants_price" or option.filterType == "price" %}
{% if value.from == 0 %}
{{ "under" | translate: translations, "Under" }}
{{ value.to | format_currency: option.moneyFormatValue }}
{% elsif value.to == nil %}
{{ "above" | translate: translations, "Above" }}
{{ value.from | format_currency: option.moneyFormatValue }}
{% elsif value.from != 0 and value.to != nil %}
{{ value.from | format_currency: option.moneyFormatValue }} - {{ value.to | format_currency: option.moneyFormatValue }}
{% endif %}
{% elsif option.filterType == "percent_sale" %}
{% if value.from == nil %}
{{ "under" | translate: translations, "Under" }}
{{ value.to }}
{% elsif value.to == nil %}
{{ "above" | translate: translations, "Above" }}
{{ value.from }}
{% elsif value.from != 0 and value.to != nil %}
{{ value.from }}% - {{ value.to }}%
{% endif %}
{% else %}
<span class="boost-sd__filter-option-item-label">
{% if option.displayAllValuesInUppercaseForm %}
{% if option.filterType == "stock" or option.filterType == "collection" %}
{{ value.label | upcase | escape }}
{% else %}
{{ value.key | upcase | escape }}
{% endif %}
{% else %}
{% if option.filterType == "stock" or option.filterType == "collection" %}
{{ value.label | escape }}
{% else %}
{{ value.key | escape }}
{% endif %}
{% endif %}
</span>
{% endif %}
{% if filterSettings.showFilterOptionCount %}
<span aria-label="Number of products: ({{ value.doc_count }})" class="boost-sd__filter-option-item-amount">({{ value.doc_count }})</span>
{% endif %}
</button>
</li>
{% else %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'>
<button id='{{ actionId }}' data-action='{{ dataAction }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ value.label | escape_once | strip_html }}' class='{{ className }}'>
<span data-action='{{ dataAction }}' class='boost-sd__filter-option-item-label'>
{% if displayAllValuesInUppercaseForm %}
{{ value.label | upcase | escape }}
{% else %}
{{ value.label | escape }}
{% endif %}
</span>
{% if showDocCount %}
<span data-action='{{ dataAction }}' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>
({{ value.doc_count }})</span>
{% endif %}
</button>
</li>
{% endif %}`;
;
app.template["filterOptionSwatchItem"] = `{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% assign swatchListStyle = option.swatchStyle == 'circle-list' or option.swatchStyle == 'square-list' %}
{% if request.previewMode == true %}
{% assign swatchTyleClass = "" %}
{% if swatchListStyle %}
{% assign swatchTyleClass = "list" %}
{% else %}
{% assign swatchTyleClass = "grid" %}
{% endif %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-swatch-item'>
<button title='{{ value.key | strip_html | escape }}' role='checkbox' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'>
<span class='boost-sd__filter-option-swatch-item-img boost-sd__filter-option-swatch-item-img--{{swatchTyleClass}} boost-sd__filter-option-swatch-item-img--circle' style='background-color: {{ value.key | escape }};'></span>
{% if swatchListStyle %}
<span class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ value.key | escape | upcase }}
{% else %}
{{ value.key | escape }}
{% endif %}
</span>
<span aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span>
{% endif %}
</button>
</li>
{% else %}
<li data-action='{{ dataAction }}' class='boost-sd__filter-option-item boost-sd__filter-option-swatch-item'>
<button id='{{ actionId }}' data-action='{{ dataAction }}' title='Find product with {{ label | escape }} is {{ value.label | escape | strip_html }}' role='checkbox' aria-checked='false' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button'>
<span data-action='{{ dataAction }}' class='{{ className }}' style='background-color: {{ swatchValue.backgroundColor | strip_html }}; background-image: {{ swatchValue.backgroundImage | strip_html }}'></span>
{% if swatchType == 'list' %}
<span data-action='{{ dataAction }}' class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ value.label | escape | upcase }}
{% else %}
{{ value.label | escape }}
{% endif %}
</span>
{% if showDocCount %}
<span data-action='{{ dataAction }}' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span>
{% endif %}
{% endif %}
</button>
</li>
{% endif %}`;
;
app.template["filterOptionMultiLevelCollectionItem"] = `{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% if request.previewMode == true %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections {% if option.keepValuesStatic and value.doc_count == 0 %} boost-sd__filter-option-item-multilevel-collections--disabled {% endif %}'>
<div class='boost-sd__filter-option-item-multilevel-collections-firstlevel'>
<a title='Link to {{ value.displayName }}' href='/collections/{{ value.handle }}' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-link'>
<span class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ value.displayName | upcase }}
{% else %}
{{ value.displayName }}
{% endif %}
</span>
</a>
{% if value.existedTags %}
<button type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent'>
<svg class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='#222'>
<path class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path>
</svg>
</button>
{% endif %}
</div>
</li>
{% else %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections {% if option.keepValuesStatic and value.doc_count == 0 %} boost-sd__filter-option-item-multilevel-collections--disabled {% endif %}'>
<div class='boost-sd__filter-option-item-multilevel-collections-firstlevel'>
<a id='{{ actionId }}' metaData='{{ metaData | json }}' title='Link to {{ value.displayName }}' data-action='select-filter-item' href='/collections/{{ value.handle }}' class='{{ className }}'>
<span style='{{styleOptionItem}}' data-metadata='{{ metaData | json }}' class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ value.displayName | upcase }}
{% else %}
{{ value.displayName }}
{% endif %}
</span>
</a>
{% if value.existedTags %}
<button id='{{ value.actionIdArrow }}' data-metadata='{{ value.metaDataArrow | json }}' type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent' style='padding-right: 0px;'>
<svg id='{{ value.targetIdArrow }}' data-metadata='{{ value.metaDataArrow | json }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='#222'>
<path data-metadata='{{ value.metaDataArrow | json }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path>
</svg>
</button>
{% endif %}
</div>
{% if value.existedTags > 0 %}
<ul id='{{ value.targetIdList }}' class='boost-sd__filter-option-item-multilevel-collections-listitem boost boost-sd__g-hide'>
{% for tag in value.tags %}
<li class='boost-sd__filter-option-item-multilevel-collections-secondlevel'>
<div class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections-secondlevel-title'>
<a id='{{ tag.actionId }}' data-metadata='{{ tag.metaData | json }}' title='Link to {{ tag.displayName }}' data-action='select-filter-item' href='/collections/frontpage/{{ tag.tag }}' class='{{ tag.className }}'>
<span data-metadata='{{ tag.metaData | json }}' class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ tag.displayName | upcase }}
{% else %}
{{ tag.displayName }}
{% endif %}
</span>
</a>
{% if tag.existedSubTags %}
<button id='{{ tag.actionIdArrow }}' data-metadata='{{ tag.metaDataArrow | json }}' type='button' aria-label='Expand/Collapse {{ tag.displayName }}' class='boost-sd__button boost-sd__button--transparent' style='padding-right: 0px;'>
<svg id='{{ tag.targetIdArrow }}' data-metadata='{{ tag.metaDataArrow | json }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ tag.displayName }}' viewBox='0 0 7 12' fill='#222'>
<path data-metadata='{{ tag.metaDataArrow | json }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path>
</svg>
</button>
{% endif %}
</div>
{% if tag.existedSubTags %}
<ul id='{{ tag.targetIdList }}' class='boost-sd__filter-option-item-multilevel-collections-thirdlevel boost-sd__g-hide'>
{% for subTag in tag.subTags %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-item-multilevel-collections-thirdlevel-title'>
<a id='{{ subTag.actionId }}' data-metadata='{{ subTag.metaData | json }}' title='Link to {{ subTag.displayName }}' data-action='select-filter-item' href='/collections/frontpage/{{ subTag.tag }}' class='{{ subTag.className }}'>
<span data-metadata='{{ subTag.metaData | json }}' class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ subTag.displayName | upcase }}
{% else %}
{{ subTag.displayName }}
{% endif %}
</span>
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endif %}`;
;
app.template["filterOptionMultiLevelTagItem"] = `{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% if request.previewMode == true %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'>
<button role='checkbox' aria-checked='false' aria-label='{{ value.displayName }}' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button boost-sd__filter-option-item-button--with-checkbox'>
<span class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ value.displayName | upcase }}
{% else %}
{{ value.displayName }}
{% endif %}
</span>
</button>
{% assign existedTags = value.subTags | size %}
{% if existedTags > 0 %}
<button type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent boost-sd__filter-option-list-option-item-collapse-btn'>
<svg class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='#222'>
<path class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z">
</path>
</svg>
</button>
{% endif %}
</li>
{% else %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'>
<button id='{{ actionId }}' data-metadata='{{ metaData | json }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ value.displayName | escape | strip_html }}' class='{{ className }}'>
<span style='{{styleOptionItem}}' data-metadata='{{ metaData | json}}' class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ value.displayName | upcase }}
{% else %}
{{ value.displayName }}
{% endif %}
</span>
</button>
{% assign existedTags = value.subTags | size %}
{% if existedTags > 0 %}
<button id='{{ value.actionIdArrow }}' data-metadata='{{ value.metaDataArrow | json }}' type='button' aria-label='Expand/Collapse {{ value.displayName }}' class='boost-sd__button boost-sd__button--transparent boost-sd__filter-option-list-option-item-collapse-btn'>
<svg id='{{ value.targetIdArrow }}' data-metadata='{{ value.metaDataArrow | json }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ value.displayName }}' viewBox='0 0 7 12' fill='{{colorOptionItem}}'>
<path data-metadata='{{ value.metaDataArrow | json }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path>
</svg>
</button>
{% comment %} style="display: none" {% endcomment %}
<ul id='{{ value.targetIdList }}' class='boost-sd__filter-option-list-option-item-sublist boost-sd__g-hide'>
{% for tag in value.subTags %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'>
<button id='{{ tag.actionId }}' data-metadata='{{ tag.metaData | json }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ tag.displayName | escape | strip_html }}' class='{{ tag.className }}'>
<span style='{{styleOptionItem}}' data-metadata='{{ tag.metaData | json }}' class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ tag.displayName | upcase }}
{% else %}
{{ tag.displayName }}
{% endif %}
</span>
</button>
{% assign existedSubTags = tag.subTags | size %}
{% if existedSubTags > 0 %}
<button id='{{ tag.actionIdArrow }}' data-metadata='{{ tag.metaDataArrow | json }}' type='button' aria-label='Expand/Collapse {{ tag.displayName }}' class='boost-sd__button boost-sd__button--transparent boost-sd__filter-option-list-option-item-collapse-btn'>
<svg id='{{ tag.targetIdArrow }}' data-metadata='{{ tag.metaDataArrow | json }}' class='boost-sd__arrow-icon boost-sd__arrow-icon--right' xmlns='http://www.w3.org/2000/svg' width='7' height='12' role='img' aria-label='Expand/Collapse {{ tag.displayName }}' viewBox='0 0 7 12' fill='{{colorOptionItem}}'>
<path data-metadata='{{ tag.metaDataArrow | json }}' class="boost-sd__arrow-icon-path" d="M6.58942 0.610713C6.26398 0.285274 5.73635 0.285274 5.41091 0.610713L0.611415 5.41021C0.455135 5.56649 0.366829 5.77895 0.366829 5.99996C0.366829 6.22098 0.454629 6.43294 0.610909 6.58922L5.41091 11.3892C5.73635 11.7147 6.26398 11.7147 6.58942 11.3892C6.91486 11.0638 6.91486 10.5362 6.58942 10.2107L2.37867 5.99996L6.58942 1.78922C6.91486 1.46379 6.91486 0.936153 6.58942 0.610713Z"></path>
</svg>
</button>
{% comment %} style="display: none" {% endcomment %}
<ul id='{{ tag.targetIdList }}' class='boost-sd__filter-option-list-option-item-sublist boost-sd__g-hide'>
{% for subTag in tag.subTags %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-list-option-item'>
<button id='{{ subTag.actionId }}' data-metadata='{{ subTag.metaData | json }}' role='checkbox' aria-checked='false' aria-label='Find product with {{ label | escape }} is {{ subTag.displayName | escape | strip_html }}' class='{{ subTag.className }}'>
<span style='{{styleOptionItem}}' data-metadata='{{ subTag.metaData | json }}' class='boost-sd__filter-option-item-label'>
{% if option.displayAllValuesInUppercaseForm %}
{{ subTag.displayName | upcase }}
{% else %}
{{ subTag.displayName }}
{% endif %}
</span>
</button>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endif %}`;
;
app.template["filterOptionRatingItem"] = `{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% if request.previewMode == true %}
<li class='boost-sd__filter-option-item boost-sd__filter-option-rating-item'>
<button role='checkbox' aria-checked='false' aria-label='{{ value.key }} Stars. Number of products: {{value.doc_count}}' class='boost-sd__filter-option-item-button boost-sd__filter-option-item-button--as-button boost-sd__filter-option-item-button--with-checkbox'>
<span role='presentation' class='boost-sd__filter-option-rating-item-presentation'>
{% for i in (0..4) %}
{% if i < value.from %}
<i class='boost-sd__filter-option-rating-item-icon-star boost-sd__filter-option-rating-item-icon-star--active' style='color: {{ starColor }} ;'></i>
{% else %}
<i class='boost-sd__filter-option-rating-item-icon-star' style='color: {{ starColor }} ;'></i>
{% endif %}
{% endfor %}
{% if showExactRating == false %}
<span>& Up</span>
{% endif %}
</span>
<span aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span>
</button>
</li>
{% else %}
<li data-value='{{ value.key }}' data-action='{{ dataAction }}' class='boost-sd__filter-option-item boost-sd__filter-option-rating-item'>
<button id='{{ actionId }}' data-action='{{ dataAction }}' role='checkbox' aria-checked='false' aria-label='{{ value.key }} Stars. Number of products: {{value.doc_count}}' class='{{ className }}'>
<span data-action='{{ dataAction }}' role='presentation' class='boost-sd__filter-option-rating-item-presentation'>
{% for i in (0..4) %}
{% if i < value.from %}
<i data-action='{{ dataAction }}' class='boost-sd__filter-option-rating-item-icon-star boost-sd__filter-option-rating-item-icon-star--active' style='color: {{ starColor }} ;'></i>
{% else %}
<i data-action='{{ dataAction }}' class='boost-sd__filter-option-rating-item-icon-star' style='color: {{ starColor }} ;'></i>
{% endif %}
{% endfor %}
{% if showExactRating == false %}
<span data-action='{{ dataAction }}'>& Up</span>
{% endif %}
</span>
<span data-action='{{ dataAction }}' aria-label='Number of products: ({{ value.doc_count }})' class='boost-sd__filter-option-item-amount'>({{ value.doc_count }})</span>
</button>
</li>
{% endif %}`;
;
app.template["productPrice"] = `{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% assign removePriceDecimal = false -%}
{% assign decimalDelimiter = '' -%}
{% assign withoutTrailingZeros = true -%}
{% assign showCentAsSuperscript = false -%}
{% assign money_format = request.money_format -%}
{% assign showSavingDisplay = false -%}
{% assign minPrice = product.price_min | times: 1.0 -%}
{% assign maxPrice = 0 -%}
{% if product.price_max -%}
{% assign maxPrice = product.price_max | times: 1.0 -%}
{% endif -%}
{% comment %} convert variable compareAtPriceMin to number {% endcomment %}
{% assign compareAtPriceMin = 0 -%}
{% if product.compare_at_price_min -%}
{% assign compareAtPriceMin = product.compare_at_price_min | times: 1.0 -%}
{% endif -%}
{% assign isSale = false -%}
{% assign salePercent = 0 -%}
{% assign saleAmount = 0 -%}
{% if compareAtPriceMin > minPrice -%}
{% assign isSale = true -%}
{% endif -%}
{% assign compareAtPriceWithFormat = '' -%}
{% unless compareAtPriceMin == null or compareAtPriceMin == 0 or isSale == false -%}
{% comment %} calculate salePercent base on compareAtPriceMin and minPrice {% endcomment %}
{% assign compare = compareAtPriceMin | minus: minPrice | times: 100 -%}
{% assign salePercent = compare | divided_by: compareAtPriceMin | ceil | append: '%' -%}
{% comment %} compareAtPriceWithFormat is compare price with PriceMin and format currency {% endcomment %}
{% assign compareAtPriceWithFormat = compareAtPriceMin | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%}
{% assign saleAmount = compareAtPriceMin | minus: minPrice -%}
{% endunless -%}
{% comment %} Format price min {% endcomment %}
{% assign priceMinWithFormat = minPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}
{% comment %} Format price max {% endcomment %}
{% assign priceMaxWithFormat = '' -%}
{% if product.price_max and maxPrice > minPrice -%}
{% assign priceMaxWithFormat = maxPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}
{% endif -%}
{% comment %} priceMax used for multi variant price display where it can have min-max price with format and translation {% endcomment %}
{% assign hasMultiVariantPrice = false -%}
{% if translations.productItem.amount contains "minPrice" -%}
{% assign hasMultiVariantPrice = true -%}
{% endif -%}
{% assign isSamePrice = true -%}
{% if minPrice != maxPrice or product.compare_at_price_min != product.compare_at_price_max -%}
{% assign isSamePrice = false -%}
{% endif -%}
{% assign priceValueWithFormat = priceMinWithFormat -%}
{% if isSamePrice == false and maxPrice > minPrice and hasMultiVariantPrice -%}
{% assign priceValueWithFormat = "productItem.amount" | translate: translations, "" | replace: '{{minPrice}}', priceMinWithFormat | replace: '{{maxPrice}}', priceMaxWithFormat -%}
{% endif -%}
{% assign savingPriceWithFormat = '' -%}
{% unless showSavingDisplay == false or saleAmount == 0 -%}
{% assign saleAmountWithFormat = saleAmount | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%}
{% assign savingPriceWithFormat = "productItem.savingAmount" | translate: translations, "Save {{saleAmount}}" | replace: '{{saleAmount}}', saleAmountWithFormat | replace: '{{salePercent}}', salePercent -%}
{% endunless -%}
{% comment %} Price compare display top or bottom {% endcomment %}
{% comment %} Price compare display left or right {% endcomment %}
<div class="boost-sd__product-price-wrapper">
<span class="boost-sd__product-price-content boost-sd__product-price-content--text-align-left">
<span role="text" aria-label="sale price: {{ priceValueWithFormat }}" class="{% if isSale == true %}boost-sd__product-price--sale{% else %}boost-sd__product-price--default{% endif %}">
<span class="boost-sd__format-currency">{{ priceValueWithFormat }}</span>
</span>
{% if compareAtPriceWithFormat -%}
<span role="text" aria-label="regular price: {{ compareAtPriceWithFormat }}" class="boost-sd__format-currency boost-sd__format-currency--price-compare boost-sd__product-price--compare"> {{ compareAtPriceWithFormat }}
</span>
{% endif -%}
</span>
{% if savingPriceWithFormat -%}
<span role="text" aria-label="saving {{ savingPriceWithFormat }}" class="boost-sd__product-price--saving">
<span class="boost-sd__format-currency">{{ savingPriceWithFormat }}</span>
</span>
{% endif -%}
</div>`;
;
app.template["recommendation"] = `<!-- TEMPLATE RECOMMENDATION -->
{% assign widgetNameTranslationLabel = 'recommendation.' | append: widgetId %}
<div id='{{ widgetId }}' class='boost-sd__recommendation' data-product-price='true'>
<div class='boost-sd__recommendation-title boost-sd__recommendation-title--{{ widgetDesignSettings.titleAlignment }}'>
<span class='boost-sd__recommendation-title-text'>
{{ widgetNameTranslationLabel | translate: translations, widgetName }}
</span>
</div>
{% if widgetDesignSettings.layoutDisplay == 'carousel' %}
<!-- TEMPLATE RECOMMENDATION TYPE CAROUSEL -->
<div class="boost-sd__slider">
<div class="boost-sd__slider-container">
{% for product in products %}
<div class="boost-sd__slide">
{% capture domain %}{{ widgetDesignSettings.tenantId }}{% endcapture %}
<!-- TEMPLATE GRID PRODUCT ITEM -->
{% if product.original_images != nil %}
{% assign imageArray = product.original_images %}
{% else %}
{% assign imageArray = product.images_info %}
{% endif %}
{% assign productId = product.id %}
{% if product.variant_id %}
{% assign productId = product.variant_id %}
{% endif %}
{% assign filterOptionIdImageBaseOn = 'pf_opt_color' %}
{% capture filterOptionIdImageBaseOn %}{% endcapture %}
{% assign optionName = filterOptionIdImageBaseOn | replace: 'pf_opt_','' %}
{% assign valueRequest = request[filterOptionIdImageBaseOn] %}
{% assign selectedVariantImageByFilterOption = nil %}
{% for item in product.variants %}
{% assign optionNameValue = optionName | append: ":" | append: valueRequest %}
{% if item.merged_options contains optionNameValue %}
{% if item.image %}
{% assign selectedVariantImageByFilterOption = item.image %}
{% endif %}
{% break %}
{% endif %}
{% endfor %}
{% capture productVariants %}
[
{% for variant in product.variants %}
{
"title": "{{ variant.title }}",
"id": "{{ variant.id }}",
"available": {{ variant.available }}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
{% endcapture %}
{% capture productData %}
{
"handle": "{{ product.handle }}",
"variantId": "{{ product.variant_id }}",
"splitProduct": "{{ product.split_product }}",
"variants": {{ productVariants | json | escape }},
"priceMin": "{{ product.price_min }}",
"priceMax": "{{ product.price_max }}",
"compareAtPriceMin": "{{ product.compare_at_price_min }}",
"compareAtPriceMax": "{{ product.compare_at_price_max }}",
"images": {{ imageArray | json | escape }},
"options_with_values": {{ product.options_with_values | json | escape }},
"selectedVariantImageByFilterOption": "{{ selectedVariantImageByFilterOption | escape }}"
}
{% endcapture %}
<div class='boost-sd__product-item boost-sd__product-item--noBorder boost-sd__product-item-grid-view-layout' id='{{ product.id }}' data-product-id='{{ productId }}' data-product='{{ productData | json_encode }}'>
<!-- TEMPLATE GRID PRODUCT ITEM - PRODUCT IMAGE -->
{%- capture aspectRatio %}natural{% endcapture -%}
<div class="boost-sd__product-item-grid-view-layout-image">
<a aria-label="{{ product.title | escape }}" class="boost-sd__product-link boost-sd__product-link-image"
{%- if request.previewMode != true %} href="/products/{{ product.handle }}"{% endif -%}
>
<div style="position: relative">
{% assign aspect_ratio = '' -%}
{% if aspectRatio == 'natural' -%}
{% assign imageWidth = product.images_info[0].width -%}
{% assign imageHeight = product.images_info[0].height -%}
{% assign aspect_ratio = aspect_ratio | append: 'aspect-ratio:' | append: imageWidth | append: '/' | append: imageHeight -%}
{% endif -%}
<div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--has-second-image boost-sd__product-image-wrapper--natural"
style="{{ aspect_ratio }}">
<div class="boost-sd__product-image">
{% assign firstImageSrc = '' -%}
{% if selectedVariantImageByFilterOption != nil -%}
{% assign firstImageSrc = selectedVariantImageByFilterOption -%}
{% else -%}
{% assign firstImageSrc = product.images_info[0].src -%}
{% endif -%}
{% assign widthParam = "&width=" -%}
{% assign widths = "200,300,400,500,700,800" | split: "," -%}
{% if request.device contains 'mobile' -%}
{% assign maxWidth = 400 -%}
{% else -%}
{% assign maxWidth = 700 -%}
{% endif -%}
{% if request.productImageWidth != blank -%}
{% assign imageWidth = request.productImageWidth | plus: 0 -%}
{% if imageWidth > maxWidth -%}
{% assign maxWidth = imageWidth -%}
{% endif -%}
{% endif -%}
{% if product.images_info[0] -%}
{% capture srcset -%}
{% for width in widths -%}
{% assign widthNo = width | plus: 0%}
{% if widthNo < maxWidth -%}
{{ firstImageSrc }}{{ widthParam }}{{ width }} {{ width }}w,
{% else -%}
{{ firstImageSrc }}{{ widthParam }}{{ maxWidth }} {{ maxWidth }}w
{% break -%}
{% endif -%}
{% endfor -%}
{% endcapture -%}
{% assign productPerRow = 4 -%}
{% if request.productPerRow != blank -%}
{% assign productPerRow = request.productPerRow | plus: 0 -%}
{% endif -%}
<img id="product-image-{{ product.id }}"
class="boost-sd__product-image-img boost-sd__product-image-img--main"
{% if index and index < productPerRow -%}
loading="eager"
{% else -%}
loading="lazy"
{% endif -%}
decoding="async"
alt="{{ product.title | escape }}" src="{{ firstImageSrc }}&width=200" srcset="{{ srcset }}">
{% if product.images_info[1] -%}
{% assign secondImageSrc = product.images_info[1].src -%}
{% capture secondImageSrcset -%}
{% for width in widths -%}
{% assign widthNo = width | plus: 0 -%}
{% if widthNo < maxWidth -%}
{{ secondImageSrc }}{{ widthParam }}{{ width }} {{ width }}w,
{% else -%}
{{ secondImageSrc }}{{ widthParam }}{{ maxWidth }} {{ maxWidth }}w
{% break -%}
{% endif -%}
{% endfor -%}
{% endcapture -%}
<img
width="auto"
height="auto"
{% if index and index < productPerRow -%}
loading="eager"
{% else -%}
loading="lazy"
{% endif -%}
class="boost-sd__product-image-img boost-sd__product-image-img--second"
alt="{{ product.title | escape }}" src="{{ product.images_info[1].src }}&width=200" srcset="{{ secondImageSrcset }}">
{% endif -%}
{% else -%}
<img id="product-image-{{ product.id }}"
class="boost-sd__product-image-img boost-sd__product-image-img--main"
alt="{{ product.title | escape }}" src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268">
{% endif -%}
</div>
<div class="boost-sd__product-image-row boost-sd__product-image-row--top ">
<div class="boost-sd__product-image-column boost-sd__product-image-column--in-top boost-sd__product-image-column--left">
{% assign hideOtherLabelsWhenSoldOut = true -%}
{% if hideOtherLabelsWhenSoldOut != true -%}
{% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%}
{% if compareAtPriceMin > product.price_min -%}
{% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%}
{% assign salePercent = percent | append: '%' -%}
{% assign saleAmount = compareAtPriceMin | minus: product.price_min -%}
{% assign productItemSaleTranslated = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--sale">
<span class="boost-sd__product-label-text">
<span>{{ productItemSaleTranslated }}</span>
</span>
</div>
{% endif -%}
{% if product.available == false -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--soldout">
<span class="boost-sd__product-label-text">{{ "productItem.productItemSoldOut" | translate: translations, "Sold out" }}</span>
</div>
{% endif -%}
{% else -%}
{% if product.available == false -%}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--soldout">
<span class="boost-sd__product-label-text">{{ "productItem.productItemSoldOut" | translate: translations, "Sold out" }}</span>
</div>
{% else -%}
{% assign compareAtPriceMin = product.compare_at_price_min | default: 0 -%}
{% if compareAtPriceMin > product.price_min -%}
{% assign percent = compareAtPriceMin | minus: product.price_min | times: 100 | divided_by: compareAtPriceMin| round -%}
{% assign salePercent = percent | append: '%' -%}
{% assign saleAmount = compareAtPriceMin | minus: product.price_min -%}
{% assign translatedText = "productItem.productItemSale" | translate: translations, "Sale" | replace: '{{salePercent}}', salePercent | replace: '{{saleAmount}}', saleAmount %}
<div class="boost-sd__product-label boost-sd__product-label--text boost-sd__product-label--rectangle boost-sd__product-label--sale">
<span class="boost-sd__product-label-text">
<span>{{ translatedText }}</span>
</span>
</div>
{% endif -%}
{% endif -%}
{% endif -%}
</div>
</div>
<div class="boost-sd__product-image-row boost-sd__product-image-row--bottom">
<div class="boost-sd__product-image-column boost-sd__product-image-column--in-bottom boost-sd__product-image-column--right">
{% capture metaData %}
{
"action": {
{% if product.variants.size == 1 %}
"addToCart": {
"productId": "{{ product.variants[0].id }}"
}
{% else %}
{% if request.device contains 'mobile' %}
"quickView": {
"productId": "{{ product.id }}",
"fromSelectOptionBtn": true
}
{% else %}
"quickAddToCart": {
"productId": "{{ product.id }}",
"variant_id": "{{ product.variant_id }}"
}
{% endif %}
{% endif %}
}
}
{% endcapture %}
{% assign selectOptionBtnLabel = '' %}
{% if product.available == false %}
{% assign selectOptionBtnLabel = "productItem.soldoutLabel" | translate: translations, 'Sold out' %}
{% elsif product.variants.size == 1 %}
{% assign selectOptionBtnLabel = "productItem.atcAvailableLabel" | translate: translations, 'Add to cart' %}
{% else %}
{% assign selectOptionBtnLabel = "productItem.atcSelectOptionsLabel" | translate: translations, 'Choose options' %}
{% endif %}
<button
class='boost-sd__button boost-sd__button--select-option boost-sd__button--border boost-sd__button--show-on-hover boost-sd__button--hide-on-mobile boost-sd__button--rectangle'
type='button'
aria-label='{{ selectOptionBtnLabel }}'
{% if product.available == false %}
disabled
{% endif %}
data-metadata='{{ metaData | json_encode }}'
>
<span class='boost-sd__icon boost-sd__icon--is-image boost-sd__icon--fill-current-color'></span>
<span class='boost-sd__button-text boost-sd__cta-button-text'>{{ selectOptionBtnLabel }}</span>
</button>
{% capture metaData %}
{
"action": {
"quickView": {
"productId": "{{ product.id }}"
}
}
}
{% endcapture %}
<button
class='boost-sd__button boost-sd__button--border boost-sd__button--show-on-hover boost-sd__button--hide-on-mobile boost-sd__button--square boost-sd__button--quick-view'
type='button'
aria-label='Quick view'
data-metadata='{{ metaData | json_encode }}'>
<span class='boost-sd__icon boost-sd__icon--is-image boost-sd__icon--fill-current-color'></span>
</button>
</div>
</div>
</div>
{% comment %} POPUP {% endcomment %}
<div class="boost-sd__popup-select-option" style="display: none">
<div class="boost-sd__popup-select-option-container">
{% for swatch in product.options_with_values -%}
<div class="boost-sd__product-swatch">
<div class="boost-sd__product-swatch-title">{{ swatch.label | escape }}</div>
<div class="boost-sd__product-swatch-options">
{% for value in swatch.values -%}
<div class="boost-sd__product-swatch-option">
<div class="boost-sd__radio">
<div class="boost-sd__tooltip">
{% if swatch.original_name == 'color' -%}
<div class="boost-sd__tooltip-content" style="display: none;">{{ value.title | strip_html | escape }}</div>
{% endif -%}
<input id="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-input boost-sd__radio-input--hidden" type="radio" value="{{ value.title | strip_html | escape }}" checked="" />
{% if swatch.original_name == 'color' -%}
{% assign backgroundSwatch = "background-color:" | append: value.title | strip_html | escape -%}
{% assign imageName = value.title | strip_html | downcase | strip | escape -%}
{% if imageName contains " " -%}
{% assign imageName = imageName | replace: ' ', "-" -%}
{% endif -%}
{% assign url = "//" | append: domain | append: "/cdn/shop/files/" | append: imageName | append: ".png" -%}
{% assign backgroundSwatch = backgroundSwatch | append: "; background-image: url('" | append: url | append: "');"%}
<label
tabindex="{{ forloop.index }}"
for="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}"
class="boost-sd__radio-label boost-sd__radio-label--hide-text {% if forloop.first %}boost-sd__radio-label--selected{% endif %} boost-sd__radio-label--large"
style="{{ backgroundSwatch }}"
>
{{ value.title | strip_html | escape }}
</label>
{% else -%}
<label tabindex="{{ forloop.index }}" for="product-swatch-qv-{{ product.id }}-{{ value.title | strip_html | escape }}" class="boost-sd__radio-label {% if forloop.first %}boost-sd__radio-label--selected{% endif %} boost-sd__radio-label--in-quick-view">{{ value.title | strip_html | escape }}</label>
{% endif -%}
</div>
</div>
</div>
{% endfor -%}
</div>
</div>
{% endfor -%}
<button type="button" aria-label="close-popup" class="boost-sd__button boost-sd__button--transparent boost-sd__button--float boost-sd__popup-select-option-close-btn">
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.9024 3.56904C13.0325 3.43886 13.0325 3.22781 12.9024 3.09763C12.7722 2.96746 12.5611 2.96746 12.431 3.09763L8 7.5286L3.56904 3.09763C3.43886 2.96746 3.22781 2.96746 3.09763 3.09763C2.96746 3.22781 2.96746 3.43886 3.09763 3.56904L7.5286 8L3.09763 12.431C2.96746 12.5611 2.96746 12.7722 3.09763 12.9024C3.22781 13.0325 3.43886 13.0325 3.56904 12.9024L8 8.47141L12.431 12.9024C12.5611 13.0325 12.7722 13.0325 12.9024 12.9024C13.0325 12.7722 13.0325 12.5611 12.9024 12.431L8.47141 8L12.9024 3.56904Z" fill="#222222"></path>
</svg>
</button>
</div>
<button type="button" aria-label="Add to cart" class="boost-sd__button boost-sd__button--primary boost-sd__button--add-to-cart boost-sd__button--full-width boost-sd__button--large boost-sd__btn-add-to-cart"><span class="boost-sd__button-text">{{ "productItem.atcAvailableLabel" | translate: translations, 'Add to cart' }}</span></button>
</div>
{% comment %} POPUP {% endcomment %}
</div>
</a>
</div>
<!-- TEMPLATE GRID PRODUCT ITEM - PRODUCT INFO -->
<a
aria-labelledby="product-title-{{ product.id }} product-price-{{ product.id }}"
class="boost-sd__product-link" {% if request.previewMode != true %} href="/products/{{ product.handle }}"{% endif %}>
<div class="boost-sd__product-info boost-sd__product-info--left">
<div class="boost-sd__product-title" id="product-title-{{ product.id }}">
{{ product.title | escape }}
</div>
<div class="boost-sd__product-price" id="product-price-{{ product.id }}">
{% comment %} This Template contains a few variables built from the client js side {% endcomment %}
{% assign removePriceDecimal = false -%}
{% assign decimalDelimiter = '' -%}
{% assign withoutTrailingZeros = true -%}
{% assign showCentAsSuperscript = false -%}
{% assign money_format = request.money_format -%}
{% assign showSavingDisplay = false -%}
{% assign minPrice = product.price_min | times: 1.0 -%}
{% assign maxPrice = 0 -%}
{% if product.price_max -%}
{% assign maxPrice = product.price_max | times: 1.0 -%}
{% endif -%}
{% comment %} convert variable compareAtPriceMin to number {% endcomment %}
{% assign compareAtPriceMin = 0 -%}
{% if product.compare_at_price_min -%}
{% assign compareAtPriceMin = product.compare_at_price_min | times: 1.0 -%}
{% endif -%}
{% assign isSale = false -%}
{% assign salePercent = 0 -%}
{% assign saleAmount = 0 -%}
{% if compareAtPriceMin > minPrice -%}
{% assign isSale = true -%}
{% endif -%}
{% assign compareAtPriceWithFormat = '' -%}
{% unless compareAtPriceMin == null or compareAtPriceMin == 0 or isSale == false -%}
{% comment %} calculate salePercent base on compareAtPriceMin and minPrice {% endcomment %}
{% assign compare = compareAtPriceMin | minus: minPrice | times: 100 -%}
{% assign salePercent = compare | divided_by: compareAtPriceMin | ceil | append: '%' -%}
{% comment %} compareAtPriceWithFormat is compare price with PriceMin and format currency {% endcomment %}
{% assign compareAtPriceWithFormat = compareAtPriceMin | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%}
{% assign saleAmount = compareAtPriceMin | minus: minPrice -%}
{% endunless -%}
{% comment %} Format price min {% endcomment %}
{% assign priceMinWithFormat = minPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}
{% comment %} Format price max {% endcomment %}
{% assign priceMaxWithFormat = '' -%}
{% if product.price_max and maxPrice > minPrice -%}
{% assign priceMaxWithFormat = maxPrice | format_currency: money_format, showCentAsSuperscript, removePriceDecimal , decimalDelimiter, withoutTrailingZeros -%}
{% endif -%}
{% comment %} priceMax used for multi variant price display where it can have min-max price with format and translation {% endcomment %}
{% assign hasMultiVariantPrice = false -%}
{% if translations.productItem.amount contains "minPrice" -%}
{% assign hasMultiVariantPrice = true -%}
{% endif -%}
{% assign isSamePrice = true -%}
{% if minPrice != maxPrice or product.compare_at_price_min != product.compare_at_price_max -%}
{% assign isSamePrice = false -%}
{% endif -%}
{% assign priceValueWithFormat = priceMinWithFormat -%}
{% if isSamePrice == false and maxPrice > minPrice and hasMultiVariantPrice -%}
{% assign priceValueWithFormat = "productItem.amount" | translate: translations, "" | replace: '{{minPrice}}', priceMinWithFormat | replace: '{{maxPrice}}', priceMaxWithFormat -%}
{% endif -%}
{% assign savingPriceWithFormat = '' -%}
{% unless showSavingDisplay == false or saleAmount == 0 -%}
{% assign saleAmountWithFormat = saleAmount | format_currency: money_format, showCentAsSuperscript, removePriceDecimal, decimalDelimiter, withoutTrailingZeros -%}
{% assign savingPriceWithFormat = "productItem.savingAmount" | translate: translations, "Save {{saleAmount}}" | replace: '{{saleAmount}}', saleAmountWithFormat | replace: '{{salePercent}}', salePercent -%}
{% endunless -%}
{% comment %} Price compare display top or bottom {% endcomment %}
{% comment %} Price compare display left or right {% endcomment %}
<div class="boost-sd__product-price-wrapper">
<span
class="boost-sd__product-price-content boost-sd__product-price-content--text-align-left"
>
<span
role="text"
aria-label="sale price: {{ priceValueWithFormat }}"
class="{% if isSale == true %}boost-sd__product-price--sale{% else %}boost-sd__product-price--default{% endif %}"
>
<span class="boost-sd__format-currency">{{ priceValueWithFormat }}</span>
</span>
{% if compareAtPriceWithFormat -%}
<span
role="text"
aria-label="regular price: {{ compareAtPriceWithFormat }}"
class="boost-sd__format-currency boost-sd__format-currency--price-compare boost-sd__product-price--compare"
> {{ compareAtPriceWithFormat }}
</span>
{% endif -%}
</span>
{% if savingPriceWithFormat -%}
<span
role="text"
aria-label="saving {{ savingPriceWithFormat }}"
class="boost-sd__product-price--saving">
<span class="boost-sd__format-currency">{{ savingPriceWithFormat }}</span>
</span>
{% endif -%}
</div>
</div>
<!-- PRODUCT INVENTORY -->
{% assign swatches = '' %}
</div>
</a>
</div>
</div>
{% endfor %}
{% assign numberOfProductPerRow = widgetDesignSettings.numberOfProductPerRow %}
{% assign numberOfRecommendProduct = widgetDesignSettings.numberOfRecommendProduct %}
{% if numberOfRecommendProduct < numberOfProductPerRow %}
{% assign sliderPages = 1 %}
{% assign disable = "disabled" %}
{% else %}
{% assign sliderPages = numberOfRecommendProduct | divided_by: numberOfProductPerRow | ceil %}
{% assign disable = "" %}
{% endif %}
</div>
<div class="boost-sd__prev-button boost-sd__prev-button--inside">
<button type="button" aria-label="Previous" class="boost-sd__button boost-sd__button--circle boost-sd__slider-button" {{ disable }}>
<span class="boost-sd__icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__prev-button-icon">
<path stroke-linejoin="round" stroke-linecap="round" stroke="#212121" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path>
</svg>
</span>
</button>
</div>
<div class="boost-sd__next-button boost-sd__next-button--inside">
<button type="button" aria-label="Next" class="boost-sd__button boost-sd__button--circle boost-sd__slider-button" {{ disable }}>
<span class="boost-sd__icon" style="margin: 0px;">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 10 7" height="7" width="10" class="boost-sd__next-button-icon">
<path stroke-linejoin="round" stroke-linecap="round" stroke="#212121" d="M0.764024 5.51189L5.00002 1.28789L9.23602 5.51189"></path>
</svg>
</span>
</button>
</div>
</div>
{% else %}
<!-- TEMPLATE RECOMMENDATION TYPE BUNDLE -->
{% assign bundleStyle = widgetDesignSettings.bundleStyle %}
<div class="boost-sd__recommendation-bundle boost-sd__recommendation-bundle--{{ bundleStyle }}">
<div class="boost-sd__recommendation-bundle-left">
<div class="boost-sd__recommendation-bundle-images boost-sd__recommendation-bundle-images--{{ bundleStyle }}">
{% for product in products %}
<div class="boost-sd__recommendation-bundle-image-item">
{% if product.checked %}
<a class="boost-sd__product-link boost-sd__product-link-image" href="/products/{{ product.handle }}">
{% endif %}
<div class="boost-sd__product-image-wrapper boost-sd__product-image-wrapper--full-box">
<div class="boost-sd__product-image {% unless product.checked %} boost-sd__product-image--blur {% endunless %}">
{% if product.images_info[0] %}
<img id="product-image-{{ product.id }}"
class="boost-sd__product-image-img boost-sd__product-image-img--main"
src="{{ product.images_info[0].src }}"
alt="{{ product.title | escape }}"
width="auto" height="auto" />
{% else %}
<img id="product-image-{{ product.id }}"
class="boost-sd__product-image-img boost-sd__product-image-img--main"
src="https://cdn.shopify.com/extensions/201f4d7b-8d39-43a4-82de-e6f412341695/0.0.0/assets/boost-pfs-no-image.jpg?v=1677838268"
alt="{{ product.title | escape }}"
width="auto" height="auto" />
{% endif %}
</div>
</div>
{% if product.checked %}
</a>
{% endif %}
{% if bundleStyle == 'style2' %}
<div
class="boost-sd__recommendation-bundle-item-info boost-sd__recommendation-bundle-item-info--{{ bundleStyle }}">
<div class="boost-sd__recommendation-bundle-item-info-content {% unless product.checked %} boost-sd__recommendation-bundle-item-info-content--blur {% endunless %}">
<div class="boost-sd__recommendation-bundle-item-title">
{% if forloop.index0 == 0 %}
<b>This item:</b>
{{ product.title | escape }}
{% elsif product.checked %}
<a class="boost-sd__product-link" href="/products/{{ product.handle }}">
{{ product.title | escape }}
</a>
{% else %}
{{ product.title | escape }}
{% endif %}
</div>
{%- if product.selectedOption.title != 'Default Title' -%}
<div
class="boost-sd__recommendation-bundle-dropdown-wrapper boost-sd__recommendation-bundle-dropdown-wrapper--{{ bundleStyle }}">
<div id="boost-sd__dropdown-{{ widgetId }}" class="boost-sd__dropdown {% unless product.checked %} boost-sd__dropdown--disabled {% endunless %}">
<div class="boost-sd__dropdown-selected-option">
<span class="boost-sd__dropdown-option-text" title="{{ product.selectedOption.title | escape }}">{{ product.selectedOption.title | escape }}</span>
<svg width="8" height="12" viewBox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M7.09832 3.98009e-07L0.901685 -1.43717e-07C0.15069 -2.09371e-07 -0.269991 0.75351 0.193991 1.2676L3.29231 4.70055C3.65265 5.09982 4.34735 5.09982 4.70769 4.70055L7.80601 1.2676C8.26999 0.753511 7.84931 4.63664e-07 7.09832 3.98009e-07Z"
fill="#5C5F62"></path>
</svg>
</div>
<ul id="boost-sd__dropdown-list-{{ widgetId }}" class="boost-sd__dropdown-option-list">
{% for variant in product.variants %}
<li id="boost-sd__dropdown-option-{{ widgetId }}"
class="boost-sd__dropdown-option {% if variant.title == product.selectedOption.title %}boost-sd__dropdown-option--selected{% endif %}">
{{ variant.title | escape }}
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
<div class="boost-sd__recommendation-bundle-checkbox">
<span class="boost-sd__recommendation-bundle-checkbox-box
{% if product.checked %} boost-sd__recommendation-bundle-checkbox-box--checked {% endif %}"></span>
</div>
<span class="boost-sd__format-currency"><span>{{ product.selectedOption.price }}</span></span>
</div>
</div>
{% endif %}
</div>
{% unless forloop.last %}
<div
class="boost-sd__recommendation-bundle-plus-icon-wrapper boost-sd__recommendation-bundle-plus-icon-wrapper--{{ bundleStyle }}">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M15 7H9V1C9 0.448 8.553 0 8 0C7.447 0 7 0.448 7 1V7H1C0.447 7 0 7.448 0 8C0 8.552 0.447 9 1 9H7V15C7 15.552 7.447 16 8 16C8.553 16 9 15.552 9 15V9H15C15.553 9 16 8.552 16 8C16 7.448 15.553 7 15 7Z"
fill="#5C5F62"></path>
</svg>
</div>
{% endunless %}
{% endfor %}
</div>
{% if bundleStyle == 'style1' %}
{% for product in products %}
<div
class="boost-sd__recommendation-bundle-item-info boost-sd__recommendation-bundle-item-info--{{ bundleStyle }}">
<div class="boost-sd__recommendation-bundle-item-info-content {% unless product.checked %} boost-sd__recommendation-bundle-item-info-content--blur {% endunless %}">
<div class="boost-sd__recommendation-bundle-item-title">
<div class="boost-sd__recommendation-bundle-checkbox">
<span class="boost-sd__recommendation-bundle-checkbox-box
{% if product.checked %} boost-sd__recommendation-bundle-checkbox-box--checked {% endif %}"></span>
</div>
{% if forloop.index0 == 0 %}
<b>This item: </b>
{{ product.title | escape }}
{% elsif product.checked %}
<a class="boost-sd__product-link" href="/products/{{ product.handle }}">
{{ product.title | escape }}
</a>
{% else %}
{{ product.title | escape }}
{% endif %}
</div>
{%- if product.selectedOption.title != 'Default Title' -%}
<div
class="boost-sd__recommendation-bundle-dropdown-wrapper boost-sd__recommendation-bundle-dropdown-wrapper--{{ bundleStyle }}">
<div id="boost-sd__dropdown-{{ widgetId }}" class="boost-sd__dropdown {% unless product.checked %} boost-sd__dropdown--disabled {% endunless %}">
<div class="boost-sd__dropdown-selected-option">
<span class="boost-sd__dropdown-option-text" title="{{ product.selectedOption.title | escape }}">{{ product.selectedOption.title | escape }}</span>
<svg width="8" height="12" viewBox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M7.09832 3.98009e-07L0.901685 -1.43717e-07C0.15069 -2.09371e-07 -0.269991 0.75351 0.193991 1.2676L3.29231 4.70055C3.65265 5.09982 4.34735 5.09982 4.70769 4.70055L7.80601 1.2676C8.26999 0.753511 7.84931 4.63664e-07 7.09832 3.98009e-07Z"
fill="#5C5F62"></path>
</svg>
</div>
<ul id="boost-sd__dropdown-list-{{ widgetId }}" class="boost-sd__dropdown-option-list">
{% for variant in product.variants %}
<li id="boost-sd__dropdown-option-{{ widgetId }}"
class="boost-sd__dropdown-option {% if variant.title == product.selectedOption.title %}boost-sd__dropdown-option--selected{% endif %}">
{{ variant.title | escape }}
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
<span class="boost-sd__format-currency"><span>{{ product.selectedOption.price }}</span></span>
</div>
</div>
{% endfor %}
{% endif %}
</div>
<div class="boost-sd__recommendation-bundle-right">
{% if hasSelectedProduct == true %}
<div class="boost-sd__recommendation-bundle-total-price">
Total price:
<b class="boost-sd__recommendation-bundle-price-text">
<span class="boost-sd__format-currency">{{ totalPrice }}</span>
</b>
</div>
{% endif %}
<button type="button" {% if hasSelectedProduct==false %}disabled{% endif %}
class="boost-sd__button boost-sd__button--primary boost-sd__button--large boost-sd__button--round boost-sd__button--full-width boost-sd__btn-add-to-cart">
<span>Add to Cart</span>
</button>
</div>
</div>
{% endif %}
</div>
<style>
#{{widgetId}} .boost-sd__recommendation-title {
color: {{ widgetDesignSettings.titleTextColor }};
font-family: {{ widgetDesignSettings.titleFont }};
font-size: {{ widgetDesignSettings.titleFontSize }}px;
text-transform: {{ widgetDesignSettings.titleTextTransform }};
font-style: {{ widgetDesignSettings.titleFontStyle }}
}
</style>
`;
;
app.template["searchTabCollectionsContent"] = `<div class="boost-sd__search-result-panel-content">
{% for collection in collections %}
<a href="/collections/{{ collection.handle }}" class="boost-sd__search-result-panel-content-item">
{% capture collectionsDisplayImage %}
false
{% endcapture %}
{% if collectionsDisplayImage and collection.image != null %}
<div class="boost-sd__search-result-panel-content-item-image">
<img src="{{ collection.image.src }}">
</div>
{% endif %}
<div class="boost-sd__search-result-panel-content-item-text">
<p class="boost-sd__search-result-panel-content-item-title">{{ collection.title | escape }}</p>
{% capture collectionsDisplayDescription %}
false
{% endcapture %}
{% if collectionsDisplayDescription and collection.body_html != "" %}
<div class="boost-sd__search-result-panel-content-item-description">{{ collection.body_html | escape }}</div>
{% endif %}
</div>
</a>
{% endfor %}
{% capture pageSize %}
25
{% endcapture %}
{% assign pageSize = pageSize | plus: 0 %}
{% if pageSize < total_collection %}
{% assign totalPage = total_collection | divided_by: pageSize | ceil %}
{% assign pagination = request.page | pagination_list: totalPage | split: "," %}
{% assign to_product = request.page | times: request.limit %}
<div class="boost-sd__pagination boost-sd__pagination--center">
{% if request.page != 1 %}
<button type="button" aria-label="previous page" class="boost-sd__pagination-button boost-sd__pagination-button--circle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;">
<span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--left">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7">
<path d="M6.80474 0.528514C6.54439 0.268165 6.12228 0.268165 5.86193 0.528514L0.861929 5.52851C0.601579 5.78886 0.601579 6.21097 0.861929 6.47132L5.86193 11.4713C6.12228 11.7317 6.54439 11.7317 6.80474 11.4713C7.06509 11.211 7.06509 10.7889 6.80474 10.5285L2.27614 5.99992L6.80474 1.47132C7.06509 1.21097 7.06509 0.788864 6.80474 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path>
</svg>
</span>
</button>
{% endif %}
{% for page_string in pagination %}
{% assign page = page_string | plus: 0 %}
{% if page == 0 %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--disabled boost-sd__pagination-number--circle">...</button>
{% elsif page == request.page %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--circle boost-sd__pagination-number--active" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;">{{ page }}</button>
{% else %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--circle" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;">{{ page }}</button>
{% endif %}
{% endfor %}
{% if request.page != totalPage %}
<button type="button" aria-label="next page" class="boost-sd__pagination-button boost-sd__pagination-button--circle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;">
<span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--right">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7">
<path d="M0.195262 0.528514C0.455612 0.268165 0.877722 0.268165 1.13807 0.528514L6.13807 5.52851C6.39842 5.78886 6.39842 6.21097 6.13807 6.47132L1.13807 11.4713C0.877722 11.7317 0.455612 11.7317 0.195262 11.4713C-0.0650874 11.211 -0.0650874 10.7889 0.195262 10.5285L4.72386 5.99992L0.195262 1.47132C-0.0650874 1.21097 -0.0650874 0.788864 0.195262 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path>
</svg>
</span>
</button>
{% endif %}
</div>
{% endif %}
</div>`;
;
app.template["searchTabPagesContent"] = `<div class="boost-sd__search-result-panel-content">
{% for page in pages %}
<a href="{{ page.url }}" class="boost-sd__search-result-panel-content-item">
{% capture pagesDisplayImage %}
false
{% endcapture %}
{% if pagesDisplayImage and page.image != null %}
<div class="boost-sd__search-result-panel-content-item-image">
<img src="{{ page.image.src }}">
</div>
{% endif %}
<div class="boost-sd__search-result-panel-content-item-text">
<p class="boost-sd__search-result-panel-content-item-title">{{ page.title | escape }}</p>
{% capture pagesDisplayDescription %}
{% endcapture %}
{% if pagesDisplayDescription and page.body_html != "" %}
<div class="boost-sd__search-result-panel-content-item-description">{{ page.body_html | escape}}</div>
{% endif %}
</div>
</a>
{% endfor %}
{% capture pageSize %}
25
{% endcapture %}
{% assign pageSize = pageSize | plus: 0 %}
{% if pageSize < total_page %}
{% assign totalPage = total_page | divided_by: pageSize | ceil %}
{% assign pagination = request.page | pagination_list: totalPage | split: "," %}
{% assign to_product = request.page | times: request.limit %}
<div class="boost-sd__pagination boost-sd__pagination--center">
{% if request.page != 1 %}
<button type="button" aria-label="previous page" class="boost-sd__pagination-button boost-sd__pagination-button--circle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;">
<span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--left">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7">
<path d="M6.80474 0.528514C6.54439 0.268165 6.12228 0.268165 5.86193 0.528514L0.861929 5.52851C0.601579 5.78886 0.601579 6.21097 0.861929 6.47132L5.86193 11.4713C6.12228 11.7317 6.54439 11.7317 6.80474 11.4713C7.06509 11.211 7.06509 10.7889 6.80474 10.5285L2.27614 5.99992L6.80474 1.47132C7.06509 1.21097 7.06509 0.788864 6.80474 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path>
</svg>
</span>
</button>
{% endif %}
{% for page_string in pagination %}
{% assign page = page_string | plus: 0 %}
{% if page == 0 %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--disabled boost-sd__pagination-number--circle">...</button>
{% elsif page == request.page %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--circle boost-sd__pagination-number--active" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;">{{ page }}</button>
{% else %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--circle" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;">{{ page }}</button>
{% endif %}
{% endfor %}
{% if request.page != totalPage %}
<button type="button" aria-label="next page" class="boost-sd__pagination-button boost-sd__pagination-button--circle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;">
<span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--right">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7">
<path d="M0.195262 0.528514C0.455612 0.268165 0.877722 0.268165 1.13807 0.528514L6.13807 5.52851C6.39842 5.78886 6.39842 6.21097 6.13807 6.47132L1.13807 11.4713C0.877722 11.7317 0.455612 11.7317 0.195262 11.4713C-0.0650874 11.211 -0.0650874 10.7889 0.195262 10.5285L4.72386 5.99992L0.195262 1.47132C-0.0650874 1.21097 -0.0650874 0.788864 0.195262 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path>
</svg>
</span>
</button>
{% endif %}
</div>
{% endif %}
</div>`;
;
app.template["searchTabCollectionsContentPagination"] = `{% assign pagination = request.page | pagination_list: totalPage | split: "," %}
{% assign to_product = request.page | times: request.limit %}
<div class="boost-sd__pagination boost-sd__pagination--center">
{% if request.page != 1 %}
<button type="button" aria-label="previous page" class="boost-sd__pagination-button boost-sd__pagination-button--circle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;">
<span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--left">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7">
<path d="M6.80474 0.528514C6.54439 0.268165 6.12228 0.268165 5.86193 0.528514L0.861929 5.52851C0.601579 5.78886 0.601579 6.21097 0.861929 6.47132L5.86193 11.4713C6.12228 11.7317 6.54439 11.7317 6.80474 11.4713C7.06509 11.211 7.06509 10.7889 6.80474 10.5285L2.27614 5.99992L6.80474 1.47132C7.06509 1.21097 7.06509 0.788864 6.80474 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path>
</svg>
</span>
</button>
{% endif %}
{% for page_string in pagination %}
{% assign page = page_string | plus: 0 %}
{% if page == 0 %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--disabled boost-sd__pagination-number--circle">...</button>
{% elsif page == request.page %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--circle boost-sd__pagination-number--active" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;">{{ page }}</button>
{% else %}
<button class="boost-sd__pagination-number boost-sd__pagination-number--circle" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit;">{{ page }}</button>
{% endif %}
{% endfor %}
{% if request.page != totalPage %}
<button type="button" aria-label="next page" class="boost-sd__pagination-button boost-sd__pagination-button--circle boost-sd__pagination-button--next" style="color: rgb(122, 122, 122); background-color: rgba(0, 0, 0, 0); font-size: inherit; text-transform: none; border-color: transparent; border-width: 1px; border-style: solid;">
<span class="boost-sd__pagination-button-icon boost-sd__pagination-button-icon--right">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 7 12" height="12" width="7">
<path d="M0.195262 0.528514C0.455612 0.268165 0.877722 0.268165 1.13807 0.528514L6.13807 5.52851C6.39842 5.78886 6.39842 6.21097 6.13807 6.47132L1.13807 11.4713C0.877722 11.7317 0.455612 11.7317 0.195262 11.4713C-0.0650874 11.211 -0.0650874 10.7889 0.195262 10.5285L4.72386 5.99992L0.195262 1.47132C-0.0650874 1.21097 -0.0650874 0.788864 0.195262 0.528514Z" clip-rule="evenodd" fill-rule="evenodd"></path>
</svg>
</span>
</button>
{% endif %}
</div>`;
;
app.template["placeholderFilterTree"] = `<!-- TEMPLATE PLACEHOLDER -->
<div class='boost-sd-container'>
<div class='boost-sd-layout boost-sd-layout--has-filter-vertical'>
<div class='boost-sd-left boost-filter-tree-column'>
<!-- TEMPLATE FILTER TREE PLACEHOLDER -->
<div id="boost-sd__filter-tree-wrapper" class="boost-sd__filter-tree-wrapper">
<div class="boost-sd__filter-tree-vertical ">
<div class="boost-sd__filter-tree-vertical-placeholder">
<div class="boost-sd__filter-tree-vertical-placeholder-item">
<span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__filter-tree-vertical-placeholder-item">
<span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__filter-tree-vertical-placeholder-item">
<span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__filter-tree-vertical-placeholder-item">
<span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__filter-tree-vertical-placeholder-item">
<span class="boost-sd__placeholder-item" style="width:80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:65%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width:40%; border-radius: 0;"></span>
</div>
</div>
</div>
</div>
</div>
<div class='boost-sd-right boost-product-listing-column'>
<!-- TEMPLATE TOOLBAR PLACEHOLDER-->
<div class="boost-sd__toolbar-container">
<div class="boost-sd__toolbar-inner">
<div class="boost-sd__toolbar-content">
<div class="boost-sd__toolbar boost-sd__toolbar--3_1">
<span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0;"></span>
<span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0; margin-bottom: 0"></span>
<span class="boost-sd__toolbar-item boost-sd__placeholder-item" style="height: 28px; border-radius: 0; margin-bottom: 0"></span>
</div>
</div>
</div>
</div>
<!-- TEMPLATE PRODUCT LIST PLACEHOLDER-->
<div class="boost-sd__product-list-placeholder boost-sd__product-list-placeholder--3-col">
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
<div class="boost-sd__product-list-placeholder-item">
<span class="boost-sd__placeholder-item" style="width: 100%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 80%; border-radius: 0;"></span>
<span class="boost-sd__placeholder-item" style="width: 40%; border-radius: 0;"></span>
</div>
</div>
<div class="boost-sd__pagination boost-sd__pagination--center">
<span class="boost-sd__placeholder-item" style="height: 40px; border-radius: 0;"></span>
</div>
</div>
</div>
</div>
<style>
.boost-sd__collection-header {
width: 100%;
height: 130px;
display: block;
background: -webkit-gradient(linear,
left top,
right top,
color-stop(8%, #eee),
color-stop(18%, #e6e6e6),
color-stop(33%, #eee));
background-color: #eee;
animation: banner-place-holder-shimmer 2s linear infinite forwards;
}
.boost-sd__collection-header:empty {
display: block;
}
.boost-sd__collection-header .boost-sd__placeholder-item {
height: 130px;
}
@media only screen and (min-width: 992px) {
.boost-sd__collection-header,
.boost-sd__collection-header .boost-sd__placeholder-item {
height: 150px;
}
}
@keyframes banner-place-holder-shimmer {
0% {
background-position: -1500px 0;
}
100% {
background-position: 1500px 0;
}
}
.boost-sd__in-collection-search {
margin-bottom: 20px;
margin-top: 20px;
width: 100%;
max-width: 100%;
display: flex;
position: relative;
}
.boost-sd__in-collection-search--horizontal {
margin: 20px auto 0;
max-width: 592px;
}
@media only screen and (min-width: 992px) {
.boost-sd__in-collection-search {
margin-bottom: 16px;
margin-top: 16px;
}
}
.boost-sd__filter-tree-vertical {
margin-top: 0;
margin-right: 0;
}
.boost-sd__filter-tree-vertical-placeholder {
background: transparent;
width: 100%;
max-width: 100%;
display: none;
}
.boost-sd__filter-tree-vertical-placeholder-list {
margin: 30px 10px 0;
padding: 0;
list-style: none;
}
.boost-sd__filter-tree-vertical-placeholder-item {
max-width: 100%;
padding: 20px 0;
display: block;
}
.boost-sd__filter-tree-vertical-placeholder-item:first-child {
padding-top: 0;
}
.boost-sd__filter-tree-vertical-placeholder-item:not(:last-child) {
border-bottom: 1px solid #ebebeb;
}
.boost-sd__filter-tree-vertical-placeholder-item::before,
.boost-sd__filter-tree-vertical-placeholder-item::after,
{
display: none;
}
.boost-sd__filter-tree-horizontal-placeholder {
display: none;
}
@media only screen and (min-width: 992px) {
.boost-sd__filter-tree-vertical {
width: 272px;
}
.boost-sd-layout .boost-sd-left .boost-sd__filter-tree-wrapper .boost-sd__filter-tree-vertical {
margin-right: 16px;
margin-left: 0;
}
.boost-sd__filter-tree-vertical-placeholder,
.boost-sd__filter-tree-horizontal-placeholder {
display: inline-block;
}
.boost-sd-layout--has-filter-horizontal {
flex-wrap: wrap;
margin-top: 0;
}
.boost-sd-layout--has-filter-horizontal .boost-sd-left,
.boost-sd-layout--has-filter-horizontal .boost-sd-right {
flex: 0 0 100%;
}
.boost-sd__filter-tree-horizontal {
width: 100%;
}
.boost-sd__filter-tree-horizontal-placeholder {
padding: 16px 0;
border-top: 1px solid #ebebeb;
width: 100%;
max-width: 100%;
background: transparent;
}
.boost-sd__filter-tree-horizontal-placeholder-list {
margin: 0;
padding: 0;
list-style: none;
border-bottom: 1px solid #e8e9eb;
}
.boost-sd__filter-tree-horizontal-placeholder-item {
border: none;
display: inline-block;
margin-right: 35px;
position: relative;
}
.boost-sd__filter-tree-horizontal-placeholder-button {
width: auto;
height: auto;
display: inline-block;
position: relative;
padding: 5px 15px 5px 0;
margin: 0;
min-height: auto;
min-width: 0;
border-radius: 0;
box-shadow: none;
background: none;
border: none;
letter-spacing: normal;
text-align: left;
cursor: pointer;
}
.boost-sd__filter-tree-horizontal-placeholder-button .boost-sd__placeholder-item {
width: 80px;
height: 10px;
display: inline-block;
margin: 0 15px 0 0;
}
.boost-sd__filter-tree-horizontal-placeholder-icon {
transform: rotate(-90deg);
}
}
.boost-sd__in-collection-search {
margin-bottom: 20px;
margin-top: 20px;
width: 100%;
max-width: 100%;
display: flex;
position: relative;
}
.boost-sd__in-collection-search--horizontal {
margin: 20px auto 0;
max-width: 592px;
}
@media only screen and (min-width: 992px) {
.boost-sd__in-collection-search {
margin-bottom: 16px;
margin-top: 16px;
}
}
.boost-sd__toolbar-container {
width: 100%;
margin-bottom: 16px;
}
.boost-sd__toolbar-inner {
max-width: 1216px;
margin: 0 auto;
}
.boost-sd__toolbar-content {
border-bottom: 1px solid #ebebeb;
border-top: 1px solid #ebebeb;
padding: 16px 0;
}
.boost-sd__toolbar {
align-items: center;
width: 100%;
display: flex;
flex-wrap: wrap;
column-gap: 16px;
justify-content: space-between;
}
.boost-sd__toolbar .boost-sd__placeholder-item {
flex-basis: 45%;
}
.boost-sd__toolbar .boost-sd__placeholder-item:first-child {
flex-basis: 100%;
margin-bottom: 16px;
}
@media only screen and (min-width: 992px) {
.boost-sd__toolbar-content {
display: flex;
align-items: center;
border-bottom: none;
padding: 16px 0 16px;
border-top: 1px solid #ebebeb;
border-bottom: 0;
}
.boost-sd__toolbar {
flex-wrap: inherit;
}
.boost-sd__toolbar .boost-sd__placeholder-item {
flex-basis: auto;
}
.boost-sd__toolbar .boost-sd__placeholder-item:first-child {
flex-basis: auto;
margin-bottom: 0;
}
.boost-sd__toolbar--3_1 .boost-sd__toolbar-item {
flex: 1;
}
.boost-sd__toolbar--3_1 .boost-sd__toolbar-item:nth-child(2) {
justify-content: center;
}
.boost-sd__toolbar--3_1 .boost-sd__toolbar-item:nth-child(3) {
justify-content: end;
}
}
.boost-sd__product-list-placeholder {
gap: 16px;
margin-bottom: 32px;
flex-wrap: wrap;
width: 100%;
display: flex;
}
.boost-sd__product-list-placeholder--1-col .boost-sd__product-list-placeholder-item {
width: 100%;
}
.boost-sd__product-list-placeholder--2-col .boost-sd__product-list-placeholder-item,
.boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item,
.boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item,
.boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item,
.boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item {
width: calc(50% - 8px);
}
.boost-sd__product-list-placeholder .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child {
height: 222px;
}
.boost-sd__pagination {
padding-top: 10px;
padding-bottom: 10px;
justify-content: center;
align-items: center;
display: flex;
}
@media only screen and (min-width: 576px) {
.boost-sd__product-list-placeholder {
gap: 32px;
margin-bottom: 64px;
}
.boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item,
.boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item,
.boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item,
.boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item {
width: calc(33.3333333333% - (32px - 32px / 3));
}
}
@media only screen and (min-width: 992px) {
.boost-sd__product-list-placeholder .boost-sd__placeholder-item:not(:last-child) {
margin-bottom: 8px;
}
.boost-sd__product-list-placeholder .boost-sd__placeholder-item:first-child {
margin-bottom: 16px;
}
.boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child {
height: 382px;
}
.boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child {
height: 275px;
}
.boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child {
height: 215px;
}
.boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item .boost-sd__placeholder-item:first-child {
height: 175px;
}
.boost-sd__product-list-placeholder--3-col .boost-sd__product-list-placeholder-item {
width: calc(33.3333333333% - (32px - 32px / 3));
}
.boost-sd__product-list-placeholder--4-col .boost-sd__product-list-placeholder-item {
width: calc(25% - (32px - 32px / 4));
}
.boost-sd__product-list-placeholder--5-col .boost-sd__product-list-placeholder-item {
width: calc(20% - (32px - 32px / 5));
}
.boost-sd__product-list-placeholder--6-col .boost-sd__product-list-placeholder-item {
width: calc(16.6666667% - (32px - 32px / 6));
}
}
.boost-sd-container * {
box-sizing: border-box;
}
.boost-sd__placeholder-item {
background: rgba(0, 0, 0, 0.07);
border-radius: 50rem;
min-width: 50px;
max-width: 100%;
height: 20px;
animation: 2s infinite place-holder-animation;
display: inline-block;
}
.boost-sd__placeholder-item:empty {
display: block;
}
.boost-sd__placeholder-item:not(:last-child) {
margin-bottom: 18px;
}
.boost-sd-layout {
margin: 20px auto 0;
}
.boost-sd-left {
position: relative;
}
.boost-sd-layout .boost-sd-right {
width: 100%;
margin-bottom: 20px;
}
@keyframes place-holder-animation {
0% {
opacity: 1;
}
50% {
opacity: 0.5;
}
100% {
opacity: 1;
}
}
@media only screen and (min-width: 992px) {
.boost-sd-layout {
display: flex;
max-width: 1216px;
}
.boost-sd-layout .boost-sd-right {
flex: auto;
max-width: 100%;
}
}
</style>`;
;
})();
document.addEventListener("DOMContentLoaded", function() {
var _a, _b;
const taeSettings = window.boostWidgetIntegration.taeSettings;
const app = window.boostWidgetIntegration.app["production"];
const hasFilterBlock = document.querySelector(".boost-sd__filter-product-list");
const env = "production";
if (app.jsLibLoadStatus === "pending" && !hasFilterBlock) {
const widgetLibScript = document.createElement("script");
widgetLibScript.setAttribute("src", app.libUrl);
widgetLibScript.defer = true;
if (env === "development") widgetLibScript.type = "module";
(_a = document.head) == null ? void 0 : _a.appendChild(widgetLibScript);
app.jsLibLoadStatus = "loading";
widgetLibScript.onload = function() {
app.jsLibLoadStatus = "loaded";
};
}
if (((_b = taeSettings == null ? void 0 : taeSettings.instantSearch) == null ? void 0 : _b.enabled) && boostWidgetIntegration.generalSettings.templateId) {
initInstantSearch();
}
initRecommendation();
initCart();
initPredictiveBundle();
initPreOrder();
const checkCssLoaded = function() {
var _a2;
if (app.themeCssLoaded && app.settingsCSSLoaded) {
window.boostWidgetIntegration.status = "ready";
const app2 = window.boostWidgetIntegration.app["production"];
const templateMetadata = app2.templateMetadata;
if (templateMetadata == null ? void 0 : templateMetadata.customizeCssUrl) {
const customizeCss = document.createElement("link");
customizeCss.rel = "stylesheet";
customizeCss.type = "text/css";
customizeCss.href = templateMetadata == null ? void 0 : templateMetadata.customizeCssUrl;
document.head.appendChild(customizeCss);
}
if (templateMetadata == null ? void 0 : templateMetadata.customizeJsUrl) {
const customizeJs = document.createElement("script");
customizeJs.defer = true;
customizeJs.type = "module";
customizeJs.setAttribute("src", templateMetadata.customizeJsUrl);
(_a2 = document.body) == null ? void 0 : _a2.appendChild(customizeJs);
}
} else {
setTimeout(() => {
checkCssLoaded();
}, 50);
}
};
checkCssLoaded();
});
})();
/*! Bundled license information:
pretty-print-json/dist/pretty-print-json.js:
(*! pretty-print-json v3.0.1 ~~ https://pretty-print-json.js.org ~~ MIT License *)
*/
</script>
<style>
.boost-sd__filter-product-list img[loading='lazy'] {
display: none;
}
</style>
<!-- END app app block --><script src="https://cdn.shopify.com/extensions/73b7f507-a512-4d2c-8924-4ce4fabeaf61/inbox-1068/assets/inbox-chat-loader.js" type="text/javascript" defer="defer"></script>
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {var session_token = document.cookie.match(/_shopify_s=([^;]*)/);function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 63206555829,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token: session_token && session_token.length === 2 ? session_token[1] : "",page_type: "index"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
<script id="web-pixels-manager-setup">(function d(d,e,r,a,n){var o,i,t,s,l=(i=(o={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(12[7-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(12[7-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,t=o.legacy,s=navigator.userAgent,i.test(s)?"modern":(t.test(s),"legacy"));window.Shopify=window.Shopify||{};var c=window.Shopify;c.analytics=c.analytics||{};var u=c.analytics;u.replayQueue=[],u.publish=function(d,e,r){return u.replayQueue.push([d,e,r]),!0};try{self.performance.mark("wpm:start")}catch(d){}var h=[r,"/wpm","/b",n,l.substring(0,1),".js"].join("");!function(d){var e=d.src,r=d.async,a=void 0===r||r,n=d.onload,o=d.onerror,i=document.createElement("script"),t=document.head,s=document.body;i.async=a,i.src=e,n&&i.addEventListener("load",n),o&&i.addEventListener("error",o),t?t.appendChild(i):s?s.appendChild(i):console.error("Did not find a head or body element to append the script")}({src:h,async:!0,onload:function(){var r=window.webPixelsManager.init(d);e(r);var a=window.Shopify.analytics;a.replayQueue.forEach((function(d){var e=d[0],a=d[1],n=d[2];r.publishCustomEvent(e,a,n)})),a.replayQueue=[],a.publish=r.publishCustomEvent,a.visitor=r.visitor},onerror:function(){var e=d.storefrontBaseUrl.replace(/\/$/,""),r="".concat(e,"/.well-known/shopify/monorail/unstable/produce_batch"),n=JSON.stringify({metadata:{event_sent_at_ms:(new Date).getTime()},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:a||"latest",bundle_target:l,page_url:self.location.href,status:"failed",surface:d.surface,error_msg:"".concat(h," has failed to load")},metadata:{event_created_at_ms:(new Date).getTime()}}]});try{if(self.navigator.sendBeacon.bind(self.navigator)(r,n))return!0}catch(d){}var o=new XMLHttpRequest;try{return o.open("POST",r,!0),o.setRequestHeader("Content-Type","text/plain"),o.send(n),!0}catch(d){console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging a load error.")}return!1}})})({shopId: 63206555829,storefrontBaseUrl: "https://cartridgedepot.co.za",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",surface: "storefront-renderer",enabledBetaFlags: [],webPixelsConfigList: [{"id":"266797237","configuration":"{\"shopId\":\"158881\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"2c024cd91ca56b8917c3e5d26c96fac3","type":"APP","apiClientId":2773553,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0220","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0220","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Cartridge Depot","paymentSettings":{"currencyCode":"ZAR"},"myshopifyDomain":"cf3e3f.myshopify.com","countryCode":"ZA","storefrontUrl":"https:\/\/cartridgedepot.co.za"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"purchasingCompany":null},},function pageEvents(webPixelsManagerAPI) {webPixelsManagerAPI.publish("page_viewed", {});},"https://cartridgedepot.co.za/cdn","197cd42ad7ab868de58b6bcb07f9e270c5ea6f17","d9f539ffw0e1474c4pae8b6d69m179c86ad",);</script> <script>window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'ZAR';
var meta = {"page":{"pageType":"home"}};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}</script>
<script>window.ShopifyAnalytics.merchantGoogleAnalytics = function() {
};
</script>
<script class="analytics">(function () {
var customDocumentWrite = function(content) {
var jquery = null;
if (window.jQuery) {
jquery = window.jQuery;
} else if (window.Checkout && window.Checkout.$) {
jquery = window.Checkout.$;
}
if (jquery) {
jquery('body').append(content);
}
};
var hasLoggedConversion = function(token) {
if (token) {
return document.cookie.indexOf('loggedConversion=' + token) !== -1;
}
return false;
}
var setCookieIfConversion = function(token) {
if (token) {
var twoMonthsFromNow = new Date(Date.now());
twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
}
}
var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
if (trekkie.integrations) {
return;
}
trekkie.methods = [
'identify',
'page',
'ready',
'track',
'trackForm',
'trackLink'
];
trekkie.factory = function(method) {
return function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
trekkie.push(args);
return trekkie;
};
};
for (var i = 0; i < trekkie.methods.length; i++) {
var key = trekkie.methods[i];
trekkie[key] = trekkie.factory(key);
}
trekkie.load = function(config) {
trekkie.config = config || {};
trekkie.config.initialDocumentCookie = document.cookie;
var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
var scriptFallback = document.createElement('script');
scriptFallback.type = 'text/javascript';
scriptFallback.onerror = function(error) {
var Monorail = {
produce: function produce(monorailDomain, schemaId, payload) {
var currentMs = new Date().getTime();
var event = {
schema_id: schemaId,
payload: payload,
metadata: {
event_created_at_ms: currentMs,
event_sent_at_ms: currentMs
}
};
return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
},
sendRequest: function sendRequest(endpointUrl, payload) {
// Try the sendBeacon API
if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
var blobData = new window.Blob([payload], {
type: 'text/plain'
});
if (window.navigator.sendBeacon(endpointUrl, blobData)) {
return true;
} // sendBeacon was not successful
} // XHR beacon
var xhr = new XMLHttpRequest();
try {
xhr.open('POST', endpointUrl);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.send(payload);
} catch (e) {
console.log(e);
}
return false;
},
isIos12: function isIos12() {
return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
}
};
Monorail.produce('monorail-edge.shopifysvc.com',
'trekkie_storefront_load_errors/1.1',
{shop_id: 63206555829,
theme_id: 137175040181,
app_name: "storefront",
context_url: window.location.href,
source_url: "//cartridgedepot.co.za/cdn/s/trekkie.storefront.a8ef5c2c4f1c6e0839c6b8857d0a2edb7d22d961.min.js"});
};
scriptFallback.async = true;
scriptFallback.src = '//cartridgedepot.co.za/cdn/s/trekkie.storefront.a8ef5c2c4f1c6e0839c6b8857d0a2edb7d22d961.min.js';
first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//cartridgedepot.co.za/cdn/s/trekkie.storefront.a8ef5c2c4f1c6e0839c6b8857d0a2edb7d22d961.min.js';
first.parentNode.insertBefore(script, first);
};
trekkie.load(
{"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":63206555829,"isMerchantRequest":null,"themeId":137175040181,"themeCityHash":"9355690923197090398","contentLanguage":"en","currency":"ZAR"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain"},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
);
var loaded = false;
trekkie.ready(function() {
if (loaded) return;
loaded = true;
window.ShopifyAnalytics.lib = window.trekkie;
var originalDocumentWrite = document.write;
document.write = customDocumentWrite;
try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
document.write = originalDocumentWrite;
window.ShopifyAnalytics.lib.page(null,{"pageType":"home"});
var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
var token = match? match[1]: undefined;
if (!hasLoggedConversion(token)) {
setCookieIfConversion(token);
}
});
var eventsListenerScript = document.createElement('script');
eventsListenerScript.async = true;
eventsListenerScript.src = "//cartridgedepot.co.za/cdn/shopifycloud/shopify/assets/shop_events_listener-61fa9e0a912c675e178777d2b27f6cbd482f8912a6b0aa31fa3515985a8cd626.js";
document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();</script>
<script class="boomerang">
(function () {
window.BOOMR = window.BOOMR || {};
window.BOOMR.themeName = "Trade";
window.BOOMR.themeVersion = "15.0.0";
window.BOOMR.shopId = 63206555829;
window.BOOMR.themeId = 137175040181;
})();</script>
<script
defer
src="https://cartridgedepot.co.za/cdn/shopifycloud/perf-kit/shopify-perf-kit-1.0.1.min.js"
data-application="storefront-renderer"
data-shop-id="63206555829"
data-render-region="gcp-europe-west1"
data-page-type="index"
data-theme-instance-id="137175040181"
data-monorail-region="shop_domain"
data-resource-timing-sampling-rate="10"
></script>
</head>
Cartridge Depot
Recherche META Description de la page
Recherche META Keywords de la page
UPDATE DOMAINES SET server='cloudflare',redirection='https://cartridgedepot.co.za/',Status='200',err='',[TITRE]=N'
Cartridge Depot
',[DESCRIPTION]=N'',[KEYWORDS]=N'' WHERE id=35902074
0
Cartridge Depot
0.
(1)--------->0
6. Cartridge (9)--------->0
7. Depot
(6)--------->0
INSERT INTO KEYWORDS (keyword,id_domaine) VALUES (N'
',35902074),(N'Cartridge',35902074),(N'Depot
',35902074)