1<!doctype html> 2<html class="no-js" lang="en-US" > 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 6 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"> 7 <title>nisartmacka</title> 8 <meta name="keywords" content="nisartmacka"> 9 <meta name="description" content="nisartmacka"> 10 <meta http-equiv="x-dns-prefetch-control" content="on"> 11 <link rel="dns-prefetch" href="//static.staticdj.com/"> 12 <link rel="preconnect" href="//static.staticdj.com/"> 13 <link rel="dns-prefetch" href="//img.staticdj.com/"> 14 <link rel="preconnect" href="//img.staticdj.com/"> 15 <link rel="canonical" href="https://www.nisartmacka.com/cart"> 16 <link rel="shortcut icon" href="https://img.staticdj.com/117942214d78bef5d082b9a525782106.JPG"> 17 <meta name="theme-color" content=""> 18 <meta name="format-detection" content="telephone=no, email=no"> 19 <link href="https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2" as="font" type="font/woff2" crossorigin="anonymous" rel="preload"> 20 <link href="https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2" as="font" type="font/woff2" crossorigin="anonymous" rel="preload"> 21 <meta property="og:site_name" content="nisartmacka"> 22<meta property="og:url" content="https://www.nisartmacka.com/cart"> 23<meta property="og:title" content="nisartmacka"> 24<meta property="og:type" content="website"> 25<meta property="og:description" content="nisartmacka"> 26<meta name="twitter:site" content="@"> 27<meta name="twitter:card" content="summary_large_image"> 28<meta name="twitter:title" content="nisartmacka"> 29<meta name="twitter:description" content="nisartmacka"> 30<style spz-runtime> 31/* runtime-start */[hidden]{display:none!important}.i-spzhtml-element{display:inline-block}[layout=nodisplay]:not(.i-spzhtml-element){display:none!important}.i-spzhtml-layout-fixed,[layout=fixed][width][height]:not(.i-spzhtml-layout-fixed){display:inline-block;position:relative}.i-spzhtml-layout-responsive,[layout=responsive][width][height]:not(.i-spzhtml-layout-responsive),[width][height][heights]:not([layout]):not(.i-spzhtml-layout-responsive),[width][height][sizes]:not(img):not([layout]):not(.i-spzhtml-layout-responsive){display:block;position:relative}.i-spzhtml-layout-intrinsic,[layout=intrinsic][width][height]:not(.i-spzhtml-layout-intrinsic){display:inline-block;max-width:100%;position:relative}[layout=intrinsic][width][height].i-spzhtml-layout-intrinsic .i-spzhtml-fill-content{min-width:auto;width:auto}.i-spzhtml-layout-intrinsic .i-spzhtml-sizer{max-width:100%}.i-spzhtml-intrinsic-sizer{display:block!important;max-width:100%}.i-spzhtml-layout-container,.i-spzhtml-layout-fixed-height,.i-spzhtml-layout-logic,[layout=container],[layout=fixed-height][height]:not(.i-spzhtml-layout-fixed-height),[layout=logic]{display:block;position:relative}.i-spzhtml-layout-fill,.i-spzhtml-layout-fill.i-spzhtml-notbuilt,[layout=fill]:not(.i-spzhtml-layout-fill){bottom:0;display:block;left:0;overflow:hidden!important;position:absolute;right:0;top:0}.i-spzhtml-layout-flex-item,[layout=flex-item]:not(.i-spzhtml-layout-flex-item){display:block;flex:1 1 auto;position:relative}.i-spzhtml-layout-size-defined{overflow:hidden!important}.i-spzhtml-layout-awaiting-size{bottom:auto!important;position:absolute!important;top:auto!important}i-spzhtml-sizer{display:block!important}@supports (aspect-ratio:1/1){i-spzhtml-sizer.i-spzhtml-disable-ar{display:none!important}}.i-spzhtml-fill-content{display:block;height:0;margin:auto;max-height:100%;max-width:100%;min-height:100%;min-width:100%;width:0}.i-spzhtml-layout-size-defined .i-spzhtml-fill-content{bottom:0;left:0;position:absolute;right:0;top:0}.i-spzhtml-replaced-content{border:none!important;padding:0!important}.i-spzhtml-unresolved{overflow:hidden!important;position:relative}.i-spzhtml-notbuilt,[layout]:not(.i-spzhtml-element):not([i-spzhtml-ssr]),[width][height][heights]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]),[width][height][sizes]:not(img):not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]){color:transparent!important;overflow:hidden!important;position:relative}.i-spzhtml-notbuilt:not(.i-spzhtml-layout-container):not([i-spzhtml-ssr])>*,[layout]:not([layout=container]):not(.i-spzhtml-element):not([i-spzhtml-ssr])>*,[width][height][heights]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr])>*,[width][height][sizes]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr])>*{display:none}[layout]:not([layout=container]):not(.i-spzhtml-element):not([i-spzhtml-ssr]),[layout]:not([layout=container]):not([manual]):not([i-spzhtml-ssr]).i-spzhtml-notbuilt,[width][height][heights]:not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]),[width][height][sizes]:not(img):not([layout]):not(.i-spzhtml-element):not([i-spzhtml-ssr]){color:transparent!important;line-height:0!important}spz-img:not(.i-spzhtml-element)[i-spzhtml-ssr]>img.i-spzhtml-fill-content{display:block}.i-spzhtml-ghost{visibility:hidden!important}.i-spzhtml-element>[placeholder],[layout]:not(.i-spzhtml-element)>[placeholder],[width][height][heights]:not([layout]):not(.i-spzhtml-element)>[placeholder],[width][height][sizes]:not([layout]):not(.i-spzhtml-element)>[placeholder]{display:block;line-height:normal}.i-spzhtml-element>[placeholder].hidden,.i-spzhtml-element>[placeholder].spz-hidden{visibility:hidden}.i-spzhtml-layout-container>[placeholder].hidden,.i-spzhtml-layout-container>[placeholder].spz-hidden{display:none}.i-spzhtml-layout-size-defined>[placeholder]{bottom:0!important;left:0!important;position:absolute!important;right:0!important;top:0!important;z-index:1}spz-img.i-spzhtml-ssr:not(.i-spzhtml-element)>[placeholder]{z-index:auto}.i-spzhtml-notbuilt>[placeholder]{display:block!important}template{display:none!important}[visible-when-invalid]:not(.visible),form [submit-error],form [submit-success],form [submitting]{display:none}[layout=intrinsic][i-spzhtml-unheight-layout] img,[layout=responsive][i-spzhtml-unheight-layout] img{height:auto!important;position:relative!important;width:100%!important}html{overflow-x:hidden!important}html,html body{height:auto!important}html body{margin:0!important}body{text-size-adjust:100%}html.i-spzhtml-doc{touch-action:pan-y pinch-zoom}html.i-spzhtml-doc>body{overflow:visible!important;position:relative!important}.i-spzhtml-scroll-disabled{overflow-x:hidden!important;overflow-y:hidden!important}.i-spzhtml-carousel-scroll-disabled{touch-action:none;touch-action:pan-y}spz-list [role=loading]:not([pagination]),spz-list [role=loading]:not([scroll]),spz-list [role=slot]:not(.i-spzhtml-list-slot),spz-pagination>[role=arrow]{display:none}
31spz-carousel{display:flex!important}ljs-img[layout=intrinsic][auto-fit]:not([width][height]),spz-img[layout=intrinsic][auto-fit]:not([width][height]),spz-img[layout=responsive][auto-fit]{width:100%}spz-accordion>section>:last-child{display:none!important}spz-accordion>section[expanded]>:last-child{display:block!important}spz-menu [spz-menu-root]{display:flex;flex-wrap:nowrap}spz-carousel:not([dom-mounted]) .i-spzhtml-slides-container>:not(.i-spzhtml-slide-item-show),spz-carousel:not([dom-mounted]) [next],spz-carousel:not([dom-mounted]) [pre],spz-carousel:not([dom-mounted]):not([i-spzhtml-ssr])>*{display:none}spz-carousel .i-spzhtml-slides-container{box-sizing:content-box;transform:translate(0);z-index:1}spz-carousel .i-spzhtml-slide-item,spz-carousel .i-spzhtml-slides-container{display:flex;height:100%;position:relative;transition-property:transform;width:100%}spz-carousel .i-spzhtml-slide-item{flex-shrink:0}spz-carousel .i-spzhtml-slide-item>*{overflow:hidden!important;width:100%}spz-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item{display:none;opacity:0}spz-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item-show{display:flex;opacity:1!important}.i-spzhtml-tab-panel:not([active]),spz-menu [spz-menu-submenu]{display:none}spz-menu>*{opacity:0;pointer-events:none}spz-menu[finish]>*{opacity:1!important;pointer-events:auto!important}spz-list[display-in-order] [role=listitem] spz-img img{opacity:0;transition:opacity .5s linear}spz-dropdown{display:none}spz-script{font-size:0}ljs-list [role=loading]:not([pagination]),ljs-list [role=loading]:not([scroll]),ljs-list [role=slot]:not(.i-spzhtml-list-slot),ljs-pagination>[role=arrow]{display:none}ljs-carousel{display:flex!important}ljs-img[layout=responsive][auto-fit]{width:100%}ljs-accordion>section>:last-child{display:none!important}ljs-accordion>section[expanded]>:last-child{display:block!important}[layout=container]:not(.i-spzhtml-built){color:inherit!important}ljs-menu [spz-menu-root]{display:flex;flex-wrap:nowrap}ljs-menu>*{opacity:0;pointer-events:none}ljs-menu[finish]>*{opacity:1!important;pointer-events:auto!important}ljs-list[display-in-order] [role=listitem] ljs-img img{opacity:0;transition:opacity .5s linear}ljs-script{font-size:0}ljs-img:not(.i-spzhtml-element)[i-spzhtml-ssr]>img.i-spzhtml-fill-content{display:block}ljs-img.i-spzhtml-ssr:not(.i-spzhtml-element)>[placeholder]{z-index:auto}ljs-carousel:not([dom-mounted]) .i-spzhtml-slides-container>:not(.i-spzhtml-slide-item-show),ljs-carousel:not([dom-mounted]) [next],ljs-carousel:not([dom-mounted]) [pre],ljs-carousel:not([dom-mounted]):not([i-spzhtml-ssr])>*{display:none}ljs-carousel .i-spzhtml-slides-container{box-sizing:content-box;transform:translate(0);z-index:1}ljs-carousel .i-spzhtml-slide-item,ljs-carousel .i-spzhtml-slides-container{display:flex;height:100%;position:relative;transition-property:transform;width:100%}ljs-carousel .i-spzhtml-slide-item{flex-shrink:0}ljs-carousel .i-spzhtml-slide-item>*{overflow:hidden!important;width:100%}ljs-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item{display:none;opacity:0}ljs-carousel[effect=fade] .i-spzhtml-slides-container .i-spzhtml-slide-item-show{display:flex;opacity:1!important}ljs-menu [spz-menu-submenu],ljs-tabs:not([finish]) [role=tabpanel],spz-tabs:not([finish]) [role=tabpanel]{display:none}ljs-text,spz-text{visibility:hidden}ljs-gallery>:not(:first-child),spz-gallery>:not(:first-child){display:none}ljs-gallery.i-spzhtml-built>:not(:first-child),spz-gallery.i-spzhtml-built>:not(:first-child){display:unset}/* runtime-end */ 32</style>
33<script type="text/javascript"> 34/* env-start */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=8)}({8:function(e,t){window.seahorse_env={"flag_plugin_loader":"","v1_spz_version":"v1.0.87","v1_spz_tag":"v26.4.13","aliyun_scene_id":"1gewqec5"}}});/* env-end */ 35</script>
35 36 37<link href="//static.staticdj.com/cuttlefish/v1/spz.min.js" as="script" type="text/javascript" crossorigin="anonymous" rel="preload"> 38 39<style> 40 :root { 41 --page-width-base: 1440px; 42 --page-width: var(--page-width-base); 43 --page-spacing: 16px; 44 45 --type-text-font-size: 14px; 46 --type-heading-font-size: 30px; 47 --type-nav-font-size: 16px; 48 --color-general-bg: #FFFFFF; 49 --color-general-heading-text: #202020; 50 --color-general-text: #202020; 51 --color-price-text: #EB391B; 52 --color-product-title-text: #202020; 53 --color-compare-at-price-text: rgba(32,32,32,.6); 54 --color-save-price-text: #EB391B; 55 --color-custom-label-text: #E75D32; 56 --color-custom-label-bg: #FFF9F1; 57 --color-btn-bg: #202020; 58 --color-btn-text: #FFFFFF; 59 --color-label-bg: rgba(198, 156, 109, 1); 60 --color-label-text: #FFFFFF; 61 --color-sold-label-bg: #FFFFFF; 62 --color-sold-label-text: #202020; 63 --color-announcement-bg: #FFFFFF; 64 --color-announcement-text: #000000; 65 --color-cart-dot-bg: rgba(198, 156, 109, 1); 66 --color-cart-dot-text: #FFFFFF; 67 --color-header-bg: rgba(255, 249, 241, 1); 68 --color-header-text: #202020; 69 --color-header-search-bg: rgba(230, 230, 230, 0.4); 70 --color-header-search-text: #202020; 71 --color-header-search-btn-bg: #202020; 72 --color-header-search-btn-text: #FFFFFF; 73 --color-menu-bg: #F8F8F8; 74 --color-menu-item-bg: #FFFFFF; 75 --color-menu-item-text: #202020; 76 --color-actived-menu-item-bg: rgba(198, 156, 109, 1); 77 --color-actived-menu-item-text: #FFFFFF; 78 --color-footer-bg: rgba(40, 40, 40, 1); 79 --color-footer-border: rgba(230, 230, 230, 0.1); 80 --color-footer-text: rgba(255, 255, 255, 1); 81 --color-newsletter-border: #E6E6E6; 82 --color-newsletter-bg: #FFFFFF; 83 --color-newsletter-text: #202020; 84 --color-newsletter-btn-bg: #202020; 85 --color-newsletter-btn-text: #FFFFFF; 86 --color-countdown-bg: rgba(248, 248, 248, 0.8); 87 --color-countdown-time-text: #EA3F36; 88 /* é¢è²ç¸å ³ */ 89 --color-body-bg: #FFFFFF; 90 --color-body-bg-80: rgba(255, 255, 255, 0.8); 91 --color-product-title-text: #202020; 92 --color-primary-btn-bg: #202020; 93 --color-primary-btn-bg-10: rgba(32, 32, 32, 0.1); 94 --color-primary-btn-text: #FFFFFF; 95 96 --color-body-text: #202020; 97 --color-body-text-50: rgba(32, 32, 32, 0.5); 98 --color-body-text-60: rgba(32, 32, 32, 0.6); 99 --color-body-text-70: rgba(32, 32, 32, 0.7); 100 --color-body-text-75: rgba(32, 32, 32, 0.75); 101 --color-body-text-80: rgba(32, 32, 32, 0.8); 102 --color-body-text-85: rgba(32, 32, 32, 0.85); 103 --color-body-text-90: rgba(32, 32, 32, 0.9); 104 105 --color-menu-item-text-70: rgba(32, 32, 32, 0.7); 106 --color-menu-item-text-80: rgba(32, 32, 32, 0.8); 107 --color-menu-item-text-90: rgba(32, 32, 32, 0.9); 108 --color-actived-menu-item-bg: rgba(198, 156, 109, 1); 109 --color-actived-menu-item-text: #FFFFFF; 110 111 --color-header-search-text-50: rgba(32, 32, 32, 0.5); 112 113 --color-header-text-70: rgba(32, 32, 32, 0.7); 114 115 /* è¾¹æ¡é¢è² */ 116 --color-border: #E6E6E6; 117 --color-border-35: rgba(230, 230, 230, 0.35); 118 --color-border-60: rgba(230, 230, 230, 0.6); 119 120 /* åè§ */ 121 --global-border-radius: 2px; 122 --global-small-border-radius: 2px; 123 --global-fixed-border-radius: 2px; 124 --btn-border-radius: 2px; 125 --btn-fixed-border-radius: 2px; 126 127 /* åä½ç¸å ³ */ 128 --font-body-family: Lato, sans-serif; 129 --font-body-style: normal; 130 --font-body-weight: 400; 131 132 --font-heading-family: Lato, sans-serif; 133 --font-heading-style: normal; 134 --font-heading-weight: 400; 135 136 /* åè®¡æ¶ */ 137 --color-countdown-bg: rgba(248, 248, 248, 0.8); 138 --color-countdown-time-text: #EA3F36; 139 140 /* mask */ 141 --color-mask-bg: rgba(0, 0, 0, 0.3); 142 143 /* æä¾ç»æä»¶ */ 144 --breakpoint: 960; 145 146 /* z-index */ 147 --z-index-dropdown: 1000; 148 --z-index-sticky: 1020; 149 --z-index-fixed: 1030; 150 --z-index-modal-backdrop: 1040; 151 --z-index-modal: 1050; 152 --z-index-popover: 1060; 153 --z-index-tooltip: 1070; 154 } 155 156 @media (min-width: 960px) { 157 :root { 158 --page-spacing: 100px; 159 160 /* åè§ */ 161 --global-border-radius: 2px; 162 --global-small-border-radius: 2px; 163 } 164 } 165 166 .type-text-font-family { 167 font-family: var(--font-body-family); 168 font-style: var(--font-body-style); 169 font-weight: var(--font-body-weight); 170 } 171 172 .type-heading-font-family { 173 font-family: var(--font-heading-family); 174 font-style: var(--font-heading-style); 175 font-weight: var(--font-heading-weight); 176 } 177 178 /* latin-ext */@font-face { font-family: 'Lato'; font-style: normal; font-weight: 400; font-display: swap;
178 src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Lato'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;} 179 /* latin-ext */@font-face { font-family: 'Lato'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjxAwXiWtFCfQ7A.woff2) format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Lato'; font-style: normal; font-weight: 400; font-display: swap; src: url(https://fonts.gstatic.com/s/lato/v25/S6uyw4BMUTPHjx4wXiWtFCc.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;} 180</style> 181 <style> 182 html { 183 -ms-text-size-adjust: 100%; 184 -webkit-text-size-adjust: 100%; 185 -webkit-font-smoothing: antialiased; 186 -moz-osx-font-smoothing: grayscale; 187 -webkit-tap-highlight-color: transparent; 188 } 189 190 body { 191 padding-bottom: constant(safe-area-inset-bottom); 192 padding-bottom: env(safe-area-inset-bottom); 193 -webkit-tap-highlight-color: transparent; 194 } 195 196 *, 197 :after, 198 :before { 199 box-sizing: border-box; 200 } 201 202 *:focus { 203 outline: none; 204 } 205 206 /* Chrome, Safari, Edge, Opera */ 207 input::-webkit-outer-spin-button, 208 input::-webkit-inner-spin-button { 209 -webkit-appearance: none; 210 margin: 0; 211 } 212 213 /* Firefox */ 214 input[type='number'] { 215 -moz-appearance: textfield; 216 } 217 218 input[type='text'], 219 input[type='search'], 220 input[type='email'], 221 input[type='password'], 222 input:not([type]), 223 textarea { 224 appearance: none; 225 -webkit-appearance: none; 226 } 227 228 input, 229 textarea, 230 button, 231 select { 232 font-family: inherit; 233 font-style: inherit; 234 font-weight: inherit; 235 font-size: inherit; 236 color: var(--color-body-text); 237 } 238 239 input[type='button'], 240 button, 241 select, 242 label { 243 cursor: pointer; 244 } 245 246 input[type='search']::-webkit-search-cancel-button { 247 display: none; 248 } 249 250 /* theme base class */ 251 html body.nova { 252 color: var(--color-body-text); 253 font-size: var(--type-text-font-size); 254 background-color: var(--color-body-bg); 255 } 256 257 body > .page_container{ 258 min-height: 100vh; 259 display: flex; 260 flex-direction: column; 261 } 262 body > .page_container > .main-content{ 263 margin-bottom: auto; 264 } 265 266 .page-container { 267 max-width: var(--page-width); 268 padding: 0 var(--page-spacing); 269 margin: 0 auto; 270 } 271 272 @media (max-width: 959.98px) { 273 .md\:page-container { 274 max-width: var(--page-width); 275 padding: 0 var(--page-spacing); 276 margin: 0 auto; 277 } 278 } 279 280 @media (min-width: 960px) { 281 .lg\:page-container { 282 max-width: var(--page-width); 283 padding: 0 var(--page-spacing); 284 margin: 0 auto; 285 } 286 } 287 288 .clear { 289 margin: 0; 290 padding: 0; 291 border: 0; 292 outline: none; 293 list-style: none; 294 background-color: transparent; 295 } 296 297 [spz-if="false"], 298 [hidden] { 299 display: none !important; 300 } 301 302 /* title default style */ 303 304 .title-font { 305 font-size: var(--type-heading-font-size); 306 color: var(--color-general-heading-text); 307 } 308 309 @media (max-width: 959.98px) { 310 .title-font { 311 font-size: calc(var(--type-heading-font-size) * .8); 312 } 313 } 314 315 .title-color{ 316 color: var(--color-general-heading-text); 317 } 318 .product-title-color { 319 color: var(--color-product-title-text); 320 } 321 .text-color-8{ 322 color: var(--color-body-text-80); 323 } 324 325 /* Border Radius */ 326 .rounded-global { 327 border-radius: var(--global-border-radius); 328 } 329 330 .rounded-global-small {
331 border-radius: var(--global-small-border-radius); 332 } 333 334 .rounded-global-fixed { 335 border-radius: var(--global-fixed-border-radius); 336 } 337 338 .rounded-btn { 339 border-radius: var(--btn-border-radius); 340 } 341 342 .rounded-btn-fixed { 343 border-radius: var(--btn-fixed-border-radius); 344 } 345 .rounded-\[1px\] { 346 border-radius: 1px; 347 } 348 349 /* Button */ 350 .button-primary { 351 font-weight: bold; 352 text-align: center; 353 border: 1px solid transparent; 354 color: var(--color-primary-btn-text); 355 border-radius: var(--btn-border-radius); 356 background-color: var(--color-primary-btn-bg); 357 transition: all .2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 358 cursor: pointer; 359 } 360 361 .button-secondary { 362 color: var(--color-body-text); 363 background-color: transparent; 364 border: 1px solid var(--color-border); 365 border-radius: var(--btn-border-radius); 366 transition: all .2s cubic-bezier(0.445, 0.05, 0.55, 0.95);; 367 cursor: pointer; 368 } 369 370 /* Select */ 371 .secondary-select { 372 cursor: pointer; 373 -webkit-appearance: none; 374 -moz-appearance: none; 375 appearance: none; 376 border-width: 1px; 377 border-style: solid; 378 border-color: rgba(230, 230, 230, 1); 379 background-color: transparent; 380 color: var(--color-body-text); 381 } 382 383 @media (min-width: 960px) { 384 .button-primary:hover { 385 background-color: var(--color-cart-dot-bg); 386 } 387 388 .button-secondary:hover { 389 color: var(--color-primary-btn-text); 390 border-color: var(--color-primary-btn-bg); 391 background-color: var(--color-primary-btn-bg); 392 } 393 } 394 395 /* line-clamp-* */ 396 .line-clamp-1 { 397 overflow: hidden; 398 text-overflow: ellipsis; 399 white-space: nowrap; 400 } 401 402 .line-clamp-2 { 403 overflow: hidden; 404 display: -webkit-box; 405 -webkit-line-clamp: 2; 406 -webkit-box-orient: vertical; 407 word-break: break-word; 408 } 409 410 .hide-scrollbar {
411 -ms-overflow-style: none; 412 scrollbar-width: none; 413 } 414 415 .hide-scrollbar::-webkit-scrollbar, 416 .hide-scrollbar ::-webkit-scrollbar { 417 display: none; 418 } 419 420 .break-words { 421 overflow-wrap: break-word; 422 word-break: break-word; 423 } 424 /* mce */ 425 .mce-content p:first-child { 426 margin-top: 0; 427 } 428 .mce-content p:last-child { 429 margin-bottom: 0; 430 } 431 .mce-content img + img, 432 .mce-content spz-img + spz-img { 433 margin-top: 30px; 434 } 435 .mce-content spz-img { 436 max-width: 100% !important; 437 } 438 .mce-content table { 439 max-width: 100%; 440 border-collapse: collapse; 441 } 442 .mce-content table td, 443 .mce-content table th { 444 padding: 8px; 445 border: 1px solid #e6e6e6; 446 } 447 .mce-content iframe { 448 max-width: 100%; 449 } 450 .mce-content blockquote { 451 margin: 1em 40px; 452 } 453 .mce-content a { 454 color: inherit; 455 word-break: break-all; 456 } 457 458 /* loading */ 459 @keyframes spinning { 460 from { 461 -webkit-transform: rotate(0deg); 462 transform: rotate(0deg); 463 } 464 465 to { 466 -webkit-transform: rotate(1turn); 467 transform: rotate(1turn); 468 } 469 } 470 471 spz-loading { 472 background: rgba(0, 0, 0, 0.3); 473 } 474 475 @keyframes rotate { 476 0% { 477 -webkit-transform: rotate(0deg); 478 transform: rotate(0deg) 479 } 480 to { 481 -webkit-transform: rotate(1turn); 482 transform: rotate(1turn) 483 } 484 } 485 486 spz-loading .loading-inner { 487 border-radius: 50%; 488 border-top: 3px solid transparent; 489 border-left: 3px solid transparent; 490 border-right: 3px solid transparent; 491 width: 26px; 492 height: 26px; 493 border: 3px solid #fff; 494 -webkit-animation: rotate .8s ease infinite; 495 animation: rotate .8s ease infinite; 496 border-bottom-color: #fff; 497 border-top-color: transparent; 498 border-left-color: transparent; 499 border-right-color: transparent; 500 } 501 502 .loading{ 503 --loading-show: flex !important; 504 --loading-hide: none !important; 505 } 506 507 .loading[show]{ 508 display: var(--loading-show); 509 } 510 511 .loading[hide]{ 512 display: var(--loading-hide); 513 } 514 515 .loading[has-full-mask]{ 516 position: fixed; 517 top: 0; 518 bottom: 0; 519 right: 0; 520 left: 0; 521 background: var(--color-mask-bg); 522 z-index: var(--z-index-modal-backdrop); 523 } 524 525 .loading-bounce { 526 width: 26px; 527 height: 26px; 528 border-radius: 50%; 529 border: 3px solid transparent; 530 border-bottom-color: #fff; 531 animation: spinning .8s ease infinite; 532 -webkit-animation: spinning .8s ease infinite; 533 } 534 535 /* spz-carousel button */ 536 spz-carousel .spz-carousel-button { 537 display: flex; 538 align-items: center; 539 justify-content: center; 540 width: 44px; 541 height: 44px; 542 border-radius: 100%; 543 box-shadow: 4px 4px 16px rgba(18, 27, 23, 0.04); 544 background-color: rgba(255, 255, 255, 1); 545 cursor: pointer; 546 opacity: 0 !important; 547 transition: opacity 300ms cubic-bezier(0.455, 0.03, 0.515, 0.955); 548 } 549 550 @media (min-width: 960px) { 551 spz-carousel:hover .spz-carousel-button { 552 opacity: 1 !important; 553 } 554 555 .lg\:line-clamp-3 { 556 overflow: hidden; 557 display: -webkit-box; 558 -webkit-line-clamp: 3; 559 -webkit-box-orient: vertical; 560 word-break: break-word; 561 } 562 } 563 564 spz-carousel .spz-carousel-button-prev > svg { 565 transform: rotate(-90deg); 566 } 567 568 spz-carousel .spz-carousel-button-next > svg { 569 transform: rotate(90deg); 570 } 571 572 .button-primary[loading], 573 .button-secondary[loading] { 574 pointer-events: none; 575 } 576 577 .button-primary[loading] [role="content"], 578 .button-secondary[loading] [role="content"], 579 .button-primary:not([loading]) .loading, 580 .button-secondary:not([loading]) .loading { 581 opacity: 0; 582 } 583 584 .button-primary[loading] .loading, 585 .button-secondary[loading] .loading { 586 opacity: 1; 587 } 588 589 /* discount style */ 590 .discount_gift_content { 591 display: inline-flex; 592 align-items: center; 593 padding: 4px; 594 color: #EB391B; 595 background-color: rgba(235, 57, 27, 0.1); 596 border-radius: 2px; 597 } 598 .discount_gift_content .discount__gift_lan { 599 margin-left: 2px; 600 } 601 602 spz-carousel > .i-spzhtml-slides-container { 603 width: 100%; 604 } 605 606 spz-sidebar ~ .i-spzhtml-sidebar-mask { 607 background-color: var(--color-body-text-50); 608 } 609</style> 610 611<style> 612 .page_container { 613 padding-top: 0px; 614 padding-right: 0px; 615 padding-bottom: 0px; 616 padding-left: 0px; 617 } 618 619 @media (min-width: 960px) { 620 .page_container { 621 padding-top: 0px; 622 padding-right: 0px; 623 padding-bottom: 0px; 624 padding-left: 0px; 625 } 626 } 627</style> 628<style> 629 /* position, display, width, height */ 630 .uppercase { text-transform: uppercase; } 631 .\!static { position: static; } 632 .relative { position: relative; } 633 .absolute { position: absolute; } 634 .sticky { position: sticky; } 635 /* top left right bottom */ 636 .top-0 { top: 0; } 637 .top-1\/2 { top: 50%; } 638 .bottom-0 { bottom: 0; } 639 .bottom-3 { bottom: 12px;} 640 .bottom-5 { bottom: 20px; } 641 .-bottom-5 { bottom: -20px } 642 .inset-0 { top: 0; left: 0; right: 0; bottom: 0; } 643 .inset-x-\[-22px\] { left: -22px; right: -22px; } 644 .-inset-y-5 { top: -20px; bottom: -20px; } 645 646 .block { display: block; } 647 .inline-block { display: inline-block; } 648 .inline-flex { display: inline-flex; } 649 .flex { display: flex; } 650 .flex-1 { flex: 1; } 651 .flex-col { flex-direction: column; } 652 .items-end { align-items: flex-end; } 653 .items-center { align-items: center; } 654 .self-center { align-self: center; } 655 .items-start { align-items: flex-start; } 656 .items-stretch { align-items: stretch; } 657 .justify-end { justify-content: flex-end; } 658 .justify-center { justify-content: center; } 659 .justify-between { justify-content: space-between; } 660 .flex-center{ display: flex; align-items: center; justify-content: center; } 661 .flex-grow { flex-grow: 1; } 662 .flex-shrink-0 { flex-shrink: 0; } 663 .flex-wrap { flex-wrap: wrap; } 664 .flex-1 { flex: 1; } 665 .flex-row-reverse { flex-direction: row-reverse; } 666 .hidden { display: none; } 667 .\!hidden { display: none !important; } 668 .empty-hidden:empty{ display: none; } 669 670 .max-w-full { max-width: 100%; } 671 .max-w-\[300px\] { max-width: 300px; } 672 .min-w-\[0px\] { min-width: 0px; } 673 674 .w-full { width: 100%; } 675 .w-7 { width: 28px; } 676 .w-10 { width: 40px; } 677 .w-11 { width: 44px; } 678 .h-full { height: 100%; } 679 .h-11 { width: 44px; } 680 .h-14 { height: 56px;} 681 682 683 /* margin, padding */ 684 .m-0 { margin: 0; } 685 .-mt-3 { margin-top: -12px; } 686 .mt-0\.5 { margin-top: 2px; } 687 .mt-0 { margin-top: 0; } 688 .mt-1 { margin-top: 4px; } 689 .mt-1\.5 { margin-top: 6px; } 690 .mt-2 { margin-top: 8px; } 691 .mt-3 { margin-top: 12px; } 692 .mt-4 { margin-top: 16px; } 693 .mt-5 { margin-top: 20px; } 694 .mt-6 { margin-top: 24px; } 695 .mt-7 { margin-top: 28px; } 696 .mt-8 { margin-top: 32px; } 697 .mt-9 { margin-top: 36px; } 698 .mt-10 { margin-top: 40px; } 699 700 .mb-1 { margin-bottom: 4px; } 701 .mb-2 { margin-bottom: 8px; } 702 .mb-3 { margin-bottom: 12px; } 703 .mb-4 { margin-bottom: 16px; } 704 .mb-5 { margin-bottom: 20px; } 705 .mb-6 { margin-bottom: 24px; } 706 .mb-8 { margin-bottom: 32px; } 707 .mx-auto { margin-left: auto; margin-right: auto; } 708 .mx-0 { margin-left: 0; margin-right: 0; } 709 .mx-5 { margin-left: 20px; margin-right: 20px; } 710 .my-1 { margin-top: 4px; margin-bottom: 4px; } 711 .my-6 { margin-top: 24px; margin-bottom: 24px; } 712 .my-10 { margin-top: 40px; margin-bottom: 40px; } 713 .my-14 { margin-top: 56px; margin-bottom: 56px; } 714 715 .p-0 { padding: 0; } 716 .p-2 { padding: 8px; } 717 .p-3 { padding: 12px; } 718 .p-4 { padding: 16px; } 719 .p-6 { padding: 24px; } 720 .p-8 { padding: 32px; } 721 .p-\[15px\] { padding: 15px; } 722 .px-2 { padding-left: 8px; padding-right: 8px; } 723 .px-3 { padding-left: 12px; padding-right: 12px; } 724 .px-4 { padding-left: 16px; padding-right: 16px; } 725 .px-5 { padding-left: 20px; padding-right: 20px; } 726 .px-6 { padding-left: 24px; padding-right: 24px; } 727 .px-10 { padding-left: 40px; padding-right: 40px; } 728 .px-\[18px\] { padding-left: 18px; padding-right: 18px; } 729 .px-\[22px\] { padding-left: 22px; padding-right: 22px; } 730 .py-\[10px\] { padding-top: 10px; padding-bottom: 10px; } 731 732 .py-0 { padding-top: 0; padding-bottom: 0; } 733 .py-1 { padding-top: 4px; padding-bottom: 4px; } 734 .py-2 { padding-top: 8px; padding-bottom: 8px; } 735 .py-3 { padding-top: 12px; padding-bottom: 12px; } 736 .py-4 { padding-top: 16px; padding-bottom: 16px; } 737 .py-5 { padding-top: 20px; padding-bottom: 20px; } 738 .py-6 { padding-top: 24px; padding-bottom: 24px; } 739 .py-8 { padding-top: 32px; padding-bottom: 32px; } 740 .py-12 { padding-top: 48px; padding-bottom: 48px; } 741 .pt-2 { padding-top: 8px; } 742 .pt-3 { padding-top: 12px; } 743 .pt-4 { padding-top: 16px; } 744 .pt-5 { padding-top: 20px; } 745 .pt-6 { padding-top: 24px; } 746 .pt-10 { padding-top: 40px; } 747 .pt-12 { padding-top: 48px; } 748 .pb-1 { padding-bottom: 4px; } 749 .pb-2 { padding-bottom: 8px; } 750 .pb-3 { padding-bottom: 12px; } 751 .pb-4 { padding-bottom: 16px; } 752 .pb-8 { padding-bottom: 32px; } 753 .pb-full { padding-bottom: 100%; } 754 755 /* Typography */ 756 .body-minus-2 { font-size: calc(var(--type-text-font-size) - 2px); } 757 .body-minus-1 { font-size: calc(var(--type-text-font-size) - 1px); } 758 .body-base { font-size: var(--type-text-font-size); } 759 .body-plus-1 { font-size: calc(var(--type-text-font-size) + 1px); } 760 .body-plus-2 { font-size: calc(var(--type-text-font-size) + 2px); } 761 .body-plus-3 { font-size: calc(var(--type-text-font-size) + 3px); } 762 .body-plus-4 { font-size: calc(var(--type-text-font-size) + 4px); } 763 .body-plus-6 { font-size: calc(var(--type-text-font-size) + 6px); } 764 .text-2xl { font-size: 24px; line-height: 28px; } 765 .text-xs { font-size: 12px; line-height: 16px; } 766 .text-sm { font-size: 14px; line-height: 20px; } 767 .text-base { font-size: 16px; line-height: 24px; } 768 .text-lg { font-size: 18px; line-height: 28px; } 769 .text-0 { font-size: 0; } 770 .text-5 { font-size: 20px; } 771 .text-6 { font-size: 24px; } 772 .text-8 { font-size: 32px; } 773 774 .text-inherit { color: inherit; } 775 .text-center { text-align: center; } 776 .text-current{ color:currentColor }
777 .text-btn-bg { color: var(--color-primary-btn-bg); } 778 779 .text-white { color: rgba(255,255,255,1); } 780 .text-compare-at-price-color { color:var(--color-compare-at-price-text); } 781 .bg-btn-text-color { background-color: var(--color-primary-btn-text); } 782 783 .font-normal { font-weight: 400; } 784 .font-medium { font-weight: 500; } 785 .font-semibold { font-weight: 600; } 786 .font-bold { font-weight: 700; } 787 788 .leading-none { line-height: 1; } 789 .leading-1\.1 { line-height: 1.1; } 790 .leading-1\.15 { line-height: 1.15; } 791 .leading-1\.2 { line-height: 1.2; } 792 .leading-1\.25 { line-height: 1.25; } 793 .leading-1\.3 { line-height: 1.3; } 794 .leading-1\.4 { line-height: 1.4; } 795 .leading-1\.5 { line-height: 1.5; } 796 .leading-1\.7 { line-height: 1.7; } 797 798 .break-all { word-break: break-all; } 799 800 .whitespace-nowrap { white-space: nowrap; } 801 802 .overflow-hidden { overflow: hidden; } 803 .overflow-x-hidden { overflow-x: hidden; } 804 .overflow-x-auto { overflow-x: auto; } 805 .overflow-y-hidden { overflow-y: hidden; } 806 .overflow-y-auto { overflow-y: auto; } 807 808 .underline { text-decoration: underline; } 809 .no-underline { text-decoration-line: none; } 810 .appearance-none { 811 -webkit-appearance: none; 812 -moz-appearance: none; 813 appearance: none; 814 } 815 816 /* Color */ 817 .color-body { color: var(--color-body-text); } 818 .color-body-60 { color: var(--color-body-text-60); } 819 .color-body-70 { color: var(--color-body-text-70); } 820 .color-heading { color: var(--color-general-heading-text); } 821 .color-price { color: var(--color-price-text); } 822 .color-save-price { color: var(--color-save-price-text); } 823 .color-compare-price { color: var(--color-compare-at-price-text); } 824 .color-text-default { color: #9F9F9F; } 825 .color-custom-label-text {color: var(--color-custom-label-text);} 826 827 /* Background */ 828 .bg-custom-label {background-color: var(--color-custom-label-bg);} 829 .bg-color-body {background-color: var(--color-body-bg);} 830 .color-body-text { color: var(--color-body-text); } 831 832 /* Border Radius */ 833 .rounded-sm { border-radius: 2px; } 834 .rounded { border-radius: 4px; } 835 .rounded-full { border-radius: 9999px; } 836 837 /* Border */ 838 .border-none { border-style: none; } 839 .border { border: 1px solid var(--color-border); } 840 .border-t { border-top: 1px solid var(--color-border); } 841 .border-b { border-bottom: 1px solid var(--color-border); } 842 .border-solid { border-style: solid; } 843 .\!border-none { border-style: none !important; } 844 .border-t { border-top-width: 1px; } 845 .border-0 { border-width: 0; } 846 .border-t-0 { border-top-width: 0;} 847 .border-\[\#e6e6e6\] { border-color: rgba(230,230,230,1); } 848 .placeholder-svg { 849 position: relative; 850 } 851 852 .placeholder-svg > svg { 853 width: 100%; 854 height: 100%; 855 top: 0; 856 right: 0; 857 bottom: 0; 858 left: 0; 859 fill: #c0c0c0; 860 background-color: #eee; 861 } 862 863 /* z-index */ 864 .z-1 { z-index: 1; } 865 .z-10 { z-index: 10; } 866 .z-20 { z-index: 20; } 867 .z-50 { z-index: 50; } 868 .-z-1 { z-index: -1; } 869 870 /* .z-dropdown { z-index: 1000; } */ 871 872 /* Object */ 873 .object-contain { -o-object-fit: contain; object-fit: contain; } 874 .object-cover { -o-object-fit: cover; object-fit: cover; } 875 876 /* opacity */ 877 .opacity-0 { opacity: 0; } 878 .opacity-\[18\%\] { opacity: 18%; } 879 .opacity-50 { opacity: .5; } 880 .opacity-60 { opacity: .6; } 881 .opacity-70 { opacity: .7; } 882 .opacity-75{ opacity: .75; } 883 884 .group-hover\:opacity-100 { opacity: 1; } 885 886 /* text decoration */ 887 .line-through { text-decoration: line-through; } 888 889 /* Other */ 890 .cursor-pointer { cursor: pointer; } 891 .pointer-events-none { pointer-events: none; } 892 .pointer-events-auto { pointer-events: auto; } 893 894 /* svg */ 895 .fill-svg { fill: silver; } 896 .bg-svg { background-color: rgba(238, 238, 238, 1); } 897 .bg-black { background-color: rgba(0,0,0,1); } 898 .bg-white { background-color: rgba(255,255,255,1); } 899 /* grid */ 900 .grid { display: grid; } 901 .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } 902 .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } 903 .grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } 904 .grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } 905 .grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } 906 .grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } 907 .grid-cols-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); } 908 .grid-cols-8 { grid-template-columns: repeat(8, minmax(0, 1fr)); } 909 .grid-cols-9 { grid-template-columns: repeat(9, minmax(0, 1fr)); } 910 .grid-cols-10 { grid-template-columns: repeat(10, minmax(0, 1fr)); } 911 912 .gap-3 { gap: 12px; } 913 .gap-4 { gap: 16px; } 914 .gap-x-4 { column-gap: 16px; } 915 .gap-x-6 { column-gap: 24px; } 916 .gap-x-10 { column-gap: 40px; } 917 .gap-y-4 { row-gap: 16px; } 918 .gap-y-5 { row-gap: 20px; } 919 .gap-y-6 { row-gap: 24px; } 920 .gap-y-11 { row-gap: 44px; } 921 922 .truncate{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 923 924 /* btn */ 925 .primary-btn { cursor: pointer; border-width: 1px; border-style: solid; border-color: transparent; background-color: var(--color-primary-btn-bg); text-align: center; color: var(--color-primary-btn-text); } 926 .primary-btn:hover { background-color: var(--color-cart-dot-bg); } 927 .secondary-btn{ cursor: pointer; border-width: 1px; border-style: solid; border-color: rgba(230,230,230,1); background-color: transparent; color: var(--color-body-text);} 928 .secondary-btn:hover{ border-color: var(--color-primary-btn-bg); background-color: var(--color-primary-btn-bg); color: var(--color-primary-btn-text); } 929 930 .rounded-btn { border-radius: var(--btn-border-radius); } 931 932 /* last */ 933 .last\:mb-0:last-child { margin-bottom: 0; } 934 935 /* transform */ 936 .-translate-y-1\/2 { transform: var(-50%); } 937 938 /* box */ 939 .box-border { box-sizing: border-box; } 940 941 /* ul li */ 942 .list-none { list-style-type: none; } 943 944 .left-0 { left: 0; }
945 .left-1\/2 { left: 50%; } 946 .left-3 { left: 12px; } 947 .right-0 { right: 0; } 948 .right-3 { right: 12px; } 949 .right-4 { right: 16px; } 950 .right-8 { right: 32px; } 951 .mr-\[6px\] { margin-right: 6px; } 952 .ml-auto { margin-left: auto; } 953 .-ml-3 { margin-left: -12px; } 954 .ml-1 { margin-left: 4px; } 955 .ml-2 { margin-left: 8px; } 956 .ml-3 { margin-left: 12px; } 957 .ml-4 { margin-left: 16px; } 958 .ml-5 { margin-left: 20px; } 959 .ml-6 { margin-left: 24px; } 960 .ml-7 { margin-left: 28px; } 961 .mr-1 { margin-right: 4px; } 962 .mr-2 { margin-right: 8px; } 963 .mr-3 { margin-right: 12px; } 964 .mr-4 { margin-right: 16px; } 965 .mr-5 { margin-right: 20px; } 966 .pl-2 { padding-left: 8px; } 967 .pl-3 { padding-left: 12px; } 968 .pr-3 { padding-right: 12px; } 969 .text-left { text-align: left; } 970 .text-right { text-align: right; } 971 .rotate-90 { transform: rotate(90deg); } 972 .rotate--90 { transform: rotate(-90deg); } 973 .rotate-180 { transform: rotate(180deg); } 974 .-translate-x-1\/2 { transform: translateX(-50%); } 975 @media (max-width: 959.98px) { 976 .md\:hidden { display: none !important; } 977 .md\:flex { display: flex; } 978 .md\:flex-row-reverse { flex-direction: row-reverse; } 979 .md\:flex-col-reverse { flex-direction: column-reverse; } 980 .md\:flex-1 { flex: 1; } 981 .md\:flex-col { flex-direction: column; } 982 .md\:justify-end { justify-content: flex-end; } 983 .md\:justify-center { justify-content: center; } 984 .md\:justify-between { justify-content: space-between; } 985 .md\:items-center { align-items: center; }
986 .md\:self-center { align-self: center; } 987 .md\:shrink-0 { flex-shrink: 0; } 988 .md\:items-start { align-items: flex-start; } 989 .md\:flex-wrap { flex-wrap: wrap; } 990 991 .md\:w-full { width: 100%; } 992 993 .md\:mt-4 { margin-top: 16px; } 994 .md\:mt-5 { margin-top: 20px; } 995 .md\:mt-6 { margin-top: 24px; } 996 .md\:mt-9 { margin-top: 36px; } 997 .md\:mb-3 { margin-bottom: 13px; } 998 .md\:mb-4 { margin-bottom: 16px; } 999 .md\:mb-5 { margin-bottom: 20px; } 1000 .md\:mx-4 { margin-left: 16px; margin-right: 16px; } 1001 1002 .md\:pb-0 { padding-bottom: 0; } 1003 .md\:px-8 { padding-left: 32px; padding-right: 32px; } 1004 .md\:px-4 { padding-left: 16px; padding-right: 16px; } 1005 .md\:pt-6 { padding-top: 24px; } 1006 .md\:pt-4 { padding-top: 16px; } 1007 .md\:pt-2 { padding-top: 8px; } 1008 .md\:pt-10 { padding-top: 40px; } 1009 .md\:pb-5 { padding-bottom: 20px; } 1010 .md\:pb-6 { padding-bottom: 24px; } 1011 .md\:py-3 { padding-top: 12px; padding-bottom: 12px; } 1012 .md\:order-1 { order: 1; } 1013 .md\:order-2 { order: 2; } 1014 1015 .md\:body-minus-2 { font-size: calc(var(--type-text-font-size) - 2px); } 1016 .md\:body-plus-1 { font-size: calc(var(--type-text-font-size) + 1px); } 1017 .md\:body-plus-2 { font-size: calc(var(--type-text-font-size) + 2px); } 1018 .md\:text-base { font-size: 16px; line-height: 24px; } 1019 .md\:text-xs { font-size: 12px; line-height: 16px; } 1020 .md\:text-sm { font-size: 14px; line-height: 20px; } 1021 .md\:text-center { text-align: center; } 1022 1023 .md\:border-t { border-top: 1px solid var(--color-border); } 1024 .md\:pb-full { padding-bottom: 100%; } 1025 .md\:pt-\[30px\] { padding-top: 30px; } 1026 .md\:pb-\[54px\] { padding-bottom: 54px; } 1027 .md\:p-\[30px\] { padding: 30px; } 1028 1029 .md\:gap-x-4 { column-gap: 16px; } 1030 .md\:gap-y-6 { row-gap: 24px; } 1031 .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } 1032 1033 .md\:overflow-x-scroll { overflow: scroll; } 1034 .md\:w-2\/3 { width: 66.67%; } 1035 .md\:truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 1036 1037 .md\:color-body-70 { color: var(--color-body-text-70); } 1038 } 1039 1040 @media (min-width: 960px) { 1041 .lg\:hidden { display: none !important; } 1042 .lg\:flex { display: flex; } 1043 .lg\:flex-wrap { flex-wrap: wrap; } 1044 .lg\:flex-row-reverse { flex-direction: row-reverse; } 1045 .lg\:flex-col-reverse { flex-direction: column-reverse; } 1046 .lg\:flex-1 { flex: 1; } 1047 .lg\:flex-col { flex-direction: column; } 1048 .lg\:items-center { align-items: center; } 1049 .lg\:justify-end { justify-content: flex-end; } 1050 .lg\:justify-center { justify-content: center; } 1051 .lg\:justify-between { justify-content: space-between; } 1052 .lg\:shrink-0 { flex-shrink: 0; } 1053 1054 .lg\:w-full { width: 100%; } 1055 .lg\:h-full { height: 100%; } 1056 .lg\:w-1\/2 { width: 50%; } 1057 1058 .lg\:mx-8 { margin-left: 32px; margin-right: 32px; } 1059 .lg\:mt-1 { margin-top: 4px; } 1060 .lg\:mt-2 { margin-top: 8px; } 1061 .lg\:mt-3 { margin-top: 12px; } 1062 .lg\:mt-4 { margin-top: 16px; } 1063 .lg\:mt-5 { margin-top: 20px; } 1064 .lg\:mt-6 { margin-top: 24px; } 1065 .lg\:mt-7 { margin-top: 28px; } 1066 .lg\:mt-8 { margin-top: 32px; } 1067 .lg\:mt-9 { margin-top: 36px; } 1068 .lg\:mt-10 { margin-top: 40px; } 1069 .lg\:mt-15 { margin-top: 60px; } 1070 .lg\:mt-84 { margin-top: 84px; } 1071 .lg\:mb-3 { margin-bottom: 12px; } 1072 .lg\:mb-4 { margin-bottom: 16px; } 1073 .lg\:mb-5 { margin-bottom: 20px; } 1074 .lg\:mb-7 { margin-bottom: 28px; } 1075 .lg\:mb-15 { margin-bottom: 60px; } 1076 1077 .lg\:p-4 { padding: 16px; } 1078 .lg\:p-8 { padding: 32px; } 1079 .lg\:px-3 { padding-left: 12px; padding-right: 12px; } 1080 .lg\:px-5 { padding-left: 20px; padding-right: 20px; } 1081 .lg\:px-6 { padding-left: 24px; padding-right: 24px; } 1082 .lg\:px-8 { padding-left: 32px; padding-right: 32px; } 1083 .lg\:px-12 { padding-left: 48px; padding-right: 48px; } 1084 .lg\:px-20 { padding-left: 80px; padding-right: 80px; } 1085 1086 .lg\:px-10 { padding-left: 40px; padding-right: 40px; } 1087 .lg\:py-5 { padding-top: 20px; padding-bottom: 20px; } 1088 .lg\:py-6 { padding-top: 24px; padding-bottom: 24px; } 1089 .lg\:py-7 { padding-top: 28px; padding-bottom: 28px; } 1090 .lg\:py-8 { padding-top: 32px; padding-bottom: 32px; } 1091 .lg\:py-15 { padding-top: 60px; padding-bottom: 60px; } 1092 .lg\:py-20 {padding-top: 80px; padding-bottom: 80px; } 1093 .lg\:pt-1 { padding-top: 4px; } 1094 .lg\:pt-3 { padding-top: 12px; } 1095 .lg\:pt-5 { padding-top: 20px; } 1096 .lg\:pt-6 { padding-top: 24px; } 1097 .lg\:pt-8 { padding-top: 32px; } 1098 .lg\:pt-9 { padding-top: 36px; } 1099 .lg\:pt-10 { padding-top: 40px; } 1100 .lg\:pt-15 { padding-top: 60px; } 1101 .lg\:pt-11 { padding-top: 44px; } 1102 .lg\:pb-6 { padding-bottom: 24px; } 1103 .lg\:pb-8 { padding-bottom: 32px; } 1104 .lg\:pb-9 { padding-bottom: 36px; } 1105 .lg\:pb-13 { padding-bottom: 52px; } 1106 .lg\:px-\[98px\] { padding-left: 98px; padding-right: 98px; } 1107 1108 .lg\:max-w-full{ max-width: 100%;} 1109 1110 .lg\:body-plus-1 { font-size: calc(var(--type-text-font-size) + 1px); } 1111 .lg\:body-plus-2 { font-size: calc(var(--type-text-font-size) + 2px); } 1112 .lg\:body-plus-4 { font-size: calc(var(--type-text-font-size) + 4px); } 1113 .lg\:text-7 { font-size: 28px; } 1114 .lg\:text-sm { font-size: 14px; line-height: 20px; } 1115 .lg\:text-base { font-size: 16px; line-height: 24px; } 1116 .lg\:text-xl { font-size: 20px; line-height: 24px; } 1117 .lg\:text-2xl { font-size: 24px; line-height: 28px; } 1118 .lg\:text-3xl { font-size: 28px; line-height: 32px; } 1119 1120 .lg\:text-center { text-align: center; } 1121
1122 .lg\:color-text-default { color: #9F9F9F; } 1123 1124 .lg\:border { border: 1px solid var(--color-border); } 1125 1126 .lg\:leading-1\.2 { line-height: 1.2; } 1127 1128 .lg\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } 1129 .lg\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } 1130 .lg\:grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } 1131 .lg\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } 1132 .lg\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } 1133 .lg\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } 1134 .lg\:gap-y-11 { row-gap: 44px; } 1135 1136 .lg\:gap-3 { gap: 12px; } 1137 .lg\:gap-4 { gap: 16px; } 1138 .lg\:gap-6 { gap: 24px; } 1139 .lg\:gap-y-4 { row-gap: 16px; } 1140 .lg\:gap-y-5 { row-gap: 20px; } 1141 .lg\:gap-y-6 { row-gap: 24px; } 1142 .lg\:gap-y-11 { row-gap: 44px; } 1143 .lg\:gap-x-4 { column-gap: 16px; } 1144 .lg\:gap-x-6 { column-gap: 24px; } 1145 .lg\:gap-x-10 { column-gap: 40px; } 1146 1147 .lg\:inset-0 { top: 0; right: 0; bottom: 0; left: 0; } 1148 1149 .lg\:bottom-4 { bottom: 16px; } 1150 .lg\:bottom-5 { bottom: 20px; } 1151 1152 .lg\:overflow-hidden { overflow: hidden; } 1153 1154 /* box */ 1155 .lg\:box-border { box-sizing: border-box; } 1156 1157 .lg\:hover\:border-btn-bg:hover:hover { border-color: var(--color-primary-btn-bg); } 1158 .lg\:hover\:bg-btn-bg:hover { background-color: var(--color-primary-btn-bg); } 1159 .lg\:hover\:text-btn-text-color:hover {color: var(--color-primary-btn-text); } 1160 .lg\:hover\:shadow-image:hover { box-shadow: 0 3px 10px 1px rgba(0, 0, 0, 0.1); } 1161 .lg\:order-1 { order: 1; } 1162 .lg\:order-2 { order: 2; } 1163 } 1164 @media (max-width: 959.98px) { 1165 .md\:ml-4 { margin-left: 16px; } 1166 .md\:pr-4 { padding-right: 16px; } 1167 .md\:pl-4 { padding-left: 16px; } 1168 .md\:rounded-l-none { border-top-left-radius: 0; border-bottom-left-radius: 0; } 1169 } 1170 @media (min-width: 960px) { 1171 .lg\:ml-auto { margin-left: auto; } 1172 .lg\:ml-1 { margin-left: 4px; } 1173 .lg\:ml-4 { margin-left: 16px; } 1174 .lg\:ml-8 { margin-left: 32px; } 1175 .lg\:ml-10 { margin-left: 40px; } 1176 .lg\:mr-0 { margin-right: 0; } 1177 .lg\:mr-3 { margin-right: 12px; } 1178 .lg\:mr-4 { margin-right: 16px; } 1179 .lg\:mr-5 { margin-right: 20px; } 1180 .lg\:pr-10{ padding-right: 40px; } 1181 .lg\:pl-10{ padding-left: 40px; } 1182 .lg\:pl-\[42px\] { padding-left: 42px; } 1183 .lg\:border-l { border-left: 1px solid var(--color-border); } 1184 .lg\:border-r { border-right: 1px solid var(--color-border); } 1185 .lg\:rounded-l-none { border-top-left-radius: 0; border-bottom-left-radius: 0; } 1186 } 1187 </style> 1188<style> 1189 /* image */ 1190 .product-snippet__img, 1191 .product-snippet__img-secondary{ 1192 transition: opacity 400ms, transform 400ms; 1193 } 1194 .product-snippet__img-secondary { 1195 opacity: 0; 1196 } 1197 1198 .product-snippet__img { 1199 opacity: 1; 1200 } 1201 1202 .product-snippet__img-link{ 1203 border-radius: var(--global-small-border-radius); 1204 } 1205 .product-snippet__img-wrapper.show_carousel .product-snippet__img_main, 1206 .product-snippet__img-wrapper:not(.show_carousel) .product-snippet__img_carousel{ 1207 display: none !important; 1208 } 1209 .product-snippet__img_carousel .i-spzhtml-slide-item > * { 1210 width: 100% !important; 1211 padding: 0 !important; 1212 margin: 0 !important; 1213 } 1214 /* label */ 1215 .product_snippet__label { 1216 position: absolute; 1217 top: 8px; 1218 left: 8px; 1219 padding: 2px; 1220 text-decoration-line: none; 1221 font-size: 12px; 1222 line-height: 1.2; 1223 border-radius: 2px ; 1224 z-index: 1; 1225 } 1226 .product_snippet__label:not([label-type="sold_out"]){ 1227 background-color: var(--color-label-bg); 1228 color: var(--color-label-text); 1229 } 1230 .product_snippet__label[label-type="sold_out"]{ 1231 background-color: var(--color-sold-label-bg); 1232 color: var(--color-sold-label-text); 1233 } 1234 .product_snippet__label spz-currency{ 1235 display: inline-flex; 1236 } 1237 .product-snippet__title{ 1238 word-break: break-word; 1239 } 1240 1241 /* price */ 1242 .product-snippet__price-wrapper{ 1243 line-height: 1.3; 1244 } 1245 .product-snippet__price{ 1246 padding-right: 6px; 1247 font-weight: 500; 1248 } 1249 .product-snippet__price spz-currency{ 1250 display: inline-flex; 1251 } 1252 1253 .product-snippet__from-price spz-currency { 1254 margin-left: 1px; 1255 } 1256 1257 html[dir="rtl"] .product-snippet__from-price spz-currency { 1258 margin-left: 0; 1259 margin-right: 1px; 1260 } 1261 1262 .product-snippet__price, 1263 .product-snippet__price .money, 1264 .product-snippet__compare-at-price{ 1265 overflow: hidden; 1266 text-overflow: ellipsis; 1267 white-space: nowrap; 1268 } 1269 1270 .product-snippet__price .money { 1271 line-height: 1.25; 1272 font-weight: 500; 1273 color: var(--color-price-text); 1274 } 1275 1276 .product-snippet__compare-at-price { 1277 line-height: 1.15; 1278 color: var(--color-compare-at-price-text); 1279 } 1280 1281 .product-snippet__price-wrapper:not([wholesale-enabled]) .product-snippet__compare-at-price{ 1282 text-decoration: line-through; 1283 } 1284 1285 .product-info-sales-and-reviews * + * { 1286 margin-left: 8px; 1287 } 1288 1289 html[dir="rtl"] .product-info-sales-and-reviews * + * { 1290 margin-left: 0; 1291 margin-right: 8px; 1292 } 1293 1294 @media (min-width: 960px){ 1295 .product-snippet__price-wrapper{ 1296 line-height: 1.1; 1297 } 1298 .product-snippet__price{ 1299 font-size: calc(var(--type-text-font-size) + 2px); 1300 } 1301 1302 .product_snippet__label { 1303 padding: 2px 4px; 1304 } 1305 1306 .product-snippet__img-link[has-secondary-image]:hover .product-snippet__img{ 1307 opacity: 0; 1308 } 1309 1310 .product-snippet__img-link[has-secondary-image]:hover .product-snippet__img-secondary{ 1311 opacity: 1; 1312 } 1313 .product-snippet__img-secondary{ 1314 transform: scale(1.05); 1315 } 1316 1317 .product-snippet__img-link[has-secondary-image]:hover .product-snippet__img-secondary{ 1318 transform: scale(1); 1319 } 1320 } 1321 /* thumbnails */ 1322 .product-snippet__thumbnails-item, 1323 .product-snippet__thumbnails-item img{ 1324 border-radius: 1px; 1325 } 1326 1327 .product-snippet__thumbnails-item + .product-snippet__thumbnails-item { 1328 margin-left: 8px; 1329 } 1330 1331 1332 html[dir="rtl"] .product-snippet__thumbnails-item + .product-snippet__thumbnails-item { 1333 margin-left: 0; 1334 margin-right: 8px; 1335 } 1336 1337 .product-snippet__thumbnails-item[option] { 1338 position: relative; 1339 } 1340 1341 .product-snippet__thumbnails-item[option]::before { 1342 content: ''; 1343 z-index: 1; 1344 position: absolute; 1345 top: 0; 1346 left: 0; 1347 right: 0; 1348 bottom: 0; 1349 border: 1px solid transparent; 1350 border-radius: var(--global-fixed-border-radius); 1351 transition: all .2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 1352 } 1353 1354 .product-snippet__thumbnails-item[option][selected]::before { 1355 border-color: var(--color-body-text); 1356 } 1357 1358 .product-snippet__thumbnails-item:not([option]) { 1359 margin: 0; 1360 padding: 0 8px; 1361 line-height: 36px; 1362 } 1363 1364 html[dir="rtl"] .product-snippet__thumbnails-item:not([option]) { 1365 margin: 0; 1366 } 1367 1368 /* quick shop icon */ 1369 .product-snippet__quick-shop-icon { 1370 position: absolute; 1371 right: 8px; 1372 bottom: 8px; 1373 display: flex; 1374 align-items: center; 1375 justify-content: center; 1376 margin: 0; 1377 padding: 7px; 1378 border: none; 1379 border-radius: 9999px; 1380 background: rgba(255, 255, 255, 0.9); 1381 color: var(--color-body-text); 1382 z-index: 1; 1383 } 1384 1385 html[dir="rtl"] .product-snippet__quick-shop-icon { 1386 left: 8px; 1387 right: unset; 1388 } 1389 1390 @media (max-width: 959.98px) { 1391 .product-snippet__quick-shop-icon::before { 1392 content: ''; 1393 position: absolute; 1394 top: -5px; 1395 left: -8px; 1396 right: -8px; 1397 bottom: -8px; 1398 } 1399 } 1400 1401 @media (min-width: 960px){ 1402 .product-snippet__quick-shop-icon { 1403 padding: 10px; 1404 opacity: 0; 1405 transform: translateY(4px); 1406 transition: opacity .3s cubic-bezier(0.445, 0.05, 0.55, 0.95), 1407 transform .3s cubic-bezier(0.445, 0.05, 0.55, 0.95); 1408 } 1409 1410 .product-snippet__img-wrapper:hover .product-snippet__quick-shop-icon{ 1411 opacity: 1; 1412 transform: translateY(0); 1413 } 1414 } 1415 /* quick shop btn */ 1416 .product-snippet__quick-shop-btn{ 1417 width: 100%; 1418 min-height: 40px; 1419 padding: 8px; 1420 border: 1px solid var(--color-primary-btn-bg); 1421 font-size: calc(var(--type-text-font-size) + 2px); 1422 font-weight: 600; 1423 } 1424 .product-snippet__quick-shop-btn[disable]{ 1425 color: #9f9f9f; 1426 background-color: rgba(230, 230, 230, .5); 1427 border: none; 1428 cursor: default; 1429 } 1430 .product-snippet__quick-shop-btn:not(.select), 1431 .product_snippet__atc_select_btn{ 1432 margin-top: 24px; 1433 } 1434 .product_snippet__atc_dropdown .i-spzhtml-dropdown-container{ 1435 min-width: 100%; 1436 } 1437 1438 .product_snippet__atc_tooltip .i-spzhtml-tooltip-inner{ 1439 padding: 0; 1440 box-shadow: none; 1441 } 1442 .product_snippet__atc_tooltip_content{ 1443 display: flex; 1444 flex-direction: column; 1445 padding: 4px 0; 1446 color: var(--color-body-text); 1447 font-size: var(--type-text-font-size); 1448 background: var(--color-body-bg); 1449 box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1), 0px 8px 40px rgba(0, 0, 0, 0.2); 1450 max-height: 300px; 1451 overflow: hidden auto; 1452 } 1453 .product_snippet__atc_tooltip_content input[type="radio"]{ 1454 display: none; 1455 } 1456 .product_snippet__atc_tooltip_content label{ 1457 padding: 12px; 1458 border-bottom: 1px solid #e5e5e5; 1459 display: flex; 1460 flex-wrap: wrap; 1461 } 1462 .product_snippet__atc_tooltip_content label:not([disabled]):hover{ 1463 background: var(--color-body-text); 1464 color: var(--color-body-bg); 1465 } 1466 .product_snippet__atc_tooltip_content label[disabled]{ 1467 opacity: 0.6; 1468 } 1469 .product_snippet__atc_tooltip_content .product-snippet__compare-at-price{ 1470 text-decoration: line-through; 1471 } 1472</style> 1473
1473<script> 1474 window.SHOP_PARAMS = { 1475 product_lang:{ 1476 added_to_cart_successfully:"Added successfully", 1477 view_cart:"View Cart", 1478 select_variant:"Please select a variant at least", 1479 line_items_variant_withdraw: "Some items are not in stock, please re-order", 1480 line_items_variant_sold_out: "Some items have been sold out, please re-order", 1481 product_reorder: "Some items information has been updated, please re-order" 1482 }, 1483 product_settings: { 1484 add_to_cart_process:"drawer", 1485 } 1486 } 1487 window.breakpoint = 960; 1488 window.disabled_exts = ["bootstrap", "image_video", "social_login", "global_version", "share_product", "boowc", "paypal_express"]; 1489 </script>
1489 1490
1490<script async crossorigin="anonymous" src="//static.staticdj.com/cuttlefish/v1/spz.min.js"></script>
1490 1491
1491<script>window.C_SETTINGS={image_domain:"//img.staticdj.com/",payment_settings:{"paypal_express_enabled":true,"dynamic_config":{"paypal_js_sdk_url":"https:\/\/www.paypal.com\/sdk\/js?client-id=AUwoRlv3iZ3jt3o3hhcft_tZ5g6tvefEpjCf9YNGeH7q8p_WraleitkKfLnWIs8HLpzalgRA5AMT0BYO¤cy=USD&disable-funding=card%2Cbancontact%2Cblik%2Ceps%2Cgiropay%2Cideal%2Cmercadopago%2Cmybank%2Cp24%2Csepa%2Csofort%2Cvenmo&enable-funding=paylater&merchant-id=7YRJJN7AMVJ6U","express_checkout_config":{"express_channels":["paypal","useepaygoogle","useepayapple"],"express_account_infos":{"paypal":{"channel_id":"67e4a57c-072f-489a-b977-5c8061f6f0b0","merchant_id":"7YRJJN7AMVJ6U","client_id":"BAAiZ4LenqMMdtcXldpCRb3odF0ds0xi86HuE1WESa8AF9AWLTyNAYLVXBlKvOigJHBREo2puhfqfQU9AA","account":"merchant","partner_account":{"id":"partner_region_cn","client_id":"AUwoRlv3iZ3jt3o3hhcft_tZ5g6tvefEpjCf9YNGeH7q8p_WraleitkKfLnWIs8HLpzalgRA5AMT0BYO"}},"useepayapple":{"channel_id":"b37a0c1e-2b3c-40c1-abbd-47fa32c3ec0c","supported_networks":["visa","masterCard","discover","amex"],"merchant_capabilities":["supports3DS","supportsDebit","supportsCredit"],"country_code":"HK"},"useepaygoogle":{"channel_id":"e92ba1c5-50cd-4b85-aba4-05f2419904e5","gateway":"useepay","gateway_merchant_id":"500000000016593","merchant_name":"nisartmacka","allowed_card_networks":["DISCOVER","MASTERCARD","VISA","AMEX"],"allowed_auth_methods":["PAN_ONLY","CRYPTOGRAM_3DS"]}},"express_theme_configs":{"useepayapple":{"theme_type":"Light"},"useepaygoogle":{"theme_type":"Light"}}},"scm":"cart_ec.11096.11097.11098.11099","unified_user_id":"","fallback_reason":"","request_id":"08a11f03-228d-4886-8789-d5e7cc3229b8","ec_recommend":{"recommend_count":3,"exp_group":"C","channel_groups":[{"payment_type":"paypal","candidates":[{"channel":"paypal","score":16.23}]},{"payment_type":"google_pay","candidates":[{"channel":"useepaygoogle","score":4.66}]},{"payment_type":"apple_pay","candidates":[{"channel":"useepayapple","score":0}]}],"scm":"cart_ec.11096.11097.11098.11099","unified_user_id":""},"ec_legacy_apple_pay_block_store_ids":["2036132","2171855","1021775","2373789","2050387","1831597","2386285","2374192"],"ec_legacy_google_pay_block_store_ids":["2036132","2171855","1021775","2373789","2050387","1831597","2386285","2374192"],"ec_legacy_spz_paypal_store_ids":[]}},sa_server_url:"https://r.shoplazza.com/sa?project=production&store_id=2189163",sa_web_url:"https://r.shoplazza.com/?store_id=2189163",routes:{root:""},currency_code:"USD",currency_symbol:"$",currency_symbol_pos:"left",theme:{"theme_id":"aa676694-c806-41d5-bc70-e26cb00f74e3","theme_version_id":"16994","merchant_theme_name":"Nova 2023","theme_preset":"","updated_at":"2026-04-01 09:02:27","merchant_theme_updated_at":"2024-10-22 07:42:25","theme_type":"standard","support_block":true,"support_app_block":true,"ext_theme_key":"","merchant_theme_c_version":"3.5.6","merchant_theme_version":"24.65.0"},customer:{"customer_id":null,"customer_phone":null,"customer_email":null},shop:{"shop_id":"2189163","shop_env":0,"shop_name":"nisartmacka","finance":1,"cdn_domain":"\/\/static.staticdj.com\/","image_domain":"\/\/img.staticdj.com\/","wholesale_enabled":false,"time_zone":"-0800","attrs":null,"show_payment_logo":false},meta:{page:{"template_name":"cart","template_type":13,"template_suffix":"default"}},money_format:"amount",money_round_currencies:{"round_off_halfup":["XOF","XAF","XPF","BIF","CLP","KMF","DJF","GNF","ISK","JPY","PYG","RWF","KRW","UGX","VUV","VND","UYI","HUF","TWD"],"round_off_zero":[],"round_off_floor":[],"round_off_ceil":[]},slug:"nisartmacka",CLIENT_SENTRY_DSN:"https://[email protected]/5",region:"cn",store_plan:"base",store_trial:false,password_enabled:false,namespace:"production",market:{"market_id":null,"market_currency":null,"market_lang":null,"market_currency_symbol":null,"market_base_currency":null,"market_base_currency_symbol":null,"primary_market_id":null,"primary_market_currency":null,"primary_market_currency_symbol":null,"primary_market_lang":"en-US","market_price_setting":null,"market_domain":null},app_root_domain:"shoplazza.com",product_snippet_prefix:"shoplazza-product-snippet",section_prefix:"shoplaza-section"};window[atob("U0hPUExBWlpB")]= window.C_SETTINGS;</script>
1491<style type="text/css"> 1492 .theme-toast-wrap{ 1493 position: fixed; 1494 z-index: var(--z-index-tooltip); 1495 top: 64px; 1496 right: 0; 1497 left: 0; 1498 pointer-events: none; 1499 } 1500 .theme-toast{ 1501 width: 100%; 1502 background: rgba(41, 41, 41, 0.95); 1503 color: #fff; 1504 pointer-events: auto; 1505 border-radius: 0px; 1506 position: unset !important; 1507 transform: unset !important; 1508 text-align: left !important; 1509 } 1510 @media (min-width: 960px) { 1511 .theme-toast-wrap { 1512 top: 60px; 1513 } 1514 .theme-toast{ 1515 width: 400px; 1516 border-radius: 2px; 1517 } 1518 } 1519 1520 .add_cart-toast-wrap{ 1521 position: fixed; 1522 z-index: var(--z-index-tooltip); 1523 top: 64px; 1524 right: 0; 1525 left: 0; 1526 pointer-events: none; 1527 } 1528 .add_cart-toast{ 1529 width: 100%; 1530 background: rgba(41, 41, 41, 0.95); 1531 color: #fff; 1532 pointer-events: auto; 1533 border-radius: 0px; 1534 position: unset !important; 1535 transform: unset !important; 1536 text-align: left !important; 1537 } 1538 .toast_view_cart { 1539 color: #F3D07D; 1540 } 1541 @media (min-width: 960px) { 1542 .add_cart-toast-wrap { 1543 top: 60px; 1544 } 1545 .add_cart-toast{ 1546 width: 400px; 1547 border-radius: 2px; 1548 } 1549 } 1550</style>
1551<script type="text/javascript"> 1552/* top_v2-start */!function(e){var t={};function n(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(s,o,function(t){return e[t]}.bind(null,o));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=12)}([function(e,t,n){"use strict";n.d(t,"h",(function(){return s})),n.d(t,"i",(function(){return o})),n.d(t,"s",(function(){return r})),n.d(t,"o",(function(){return i})),n.d(t,"r",(function(){return a})),n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return d})),n.d(t,"e",(function(){return u})),n.d(t,"c",(function(){return l})),n.d(t,"d",(function(){return p})),n.d(t,"f",(function(){return h})),n.d(t,"n",(function(){return _})),n.d(t,"g",(function(){return f})),n.d(t,"k",(function(){return v})),n.d(t,"l",(function(){return y})),n.d(t,"q",(function(){return m})),n.d(t,"j",(function(){return g})),n.d(t,"p",(function(){return b})),n.d(t,"m",(function(){return w}));const s="dj.request",o="dj.response",r="dj.viewContent",i="dj.productSearch",a="dj.variantChange",c="dj.addToCart",d="dj.cartChange",u="dj.cartUpdate",l="dj.cartItemChange",p="dj.cartItemDelete",h="dj.checkoutSubmit",_="dj.passwordReset",f="dj.completeRegistration",v="dj.login",y="dj.logout",m="dj.registration",g="dj.emailSubscription",b="dj.purchase",w="dj.pageLoad"},function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"d",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return a}));var s=n(0);window.__SEAHORSE_BUS={listeners:{},addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)},dispatchEvent(e,t){const n=this.listeners[e];n&&n.length>0?n.forEach(n=>{try{n(t)}catch(t){console.error("æ§è¡äºä»¶åè°å¤±è´¥: "+e,t)}}):console.error("æ²¡ææ¾å°äºä»¶çå¬å¨: "+e)}};const o=function(e){const t=document.createElement("a");return t.href=e,t},r=(e,t)=>{var n;const o=(e=>e?{...e,event_time:Date.now(),__is_seahorse_event:!0}:null)(t);e===s.a&&window.__SEAHORSE_BUS.dispatchEvent(e,o);const r=new CustomEvent(e,{detail:o,bubbles:!0});null===(n=document.body)||void 0===n||n.dispatchEvent(r)},i=(e,t)=>{document.addEventListener(e,(function(e){t(e,e.detail)}))},a=e=>{const t={};try{if(!e||e.match(/^[{\[]+[^]*[}\]]+$/))return t;e.replace(/[?&]+([^=&]+)=([^&]*)/gi,(e,n,s)=>{null!=s&&(t[n]=s)})}catch(e){console.log(e)}return t}},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));const s=function(){var e,t,n,s,o,r,i,a,c,d,u;const l=window.C_SETTINGS||window[atob("U0hPUExBWlpB")]||{};window[atob("U0hPUF9QQVJBTVM=")]=Object.assign({customer_id:null===(e=l.customer)||void 0===e?void 0:e.customer_id,finance:null===(t=l.shop)||void 0===t?void 0:t.finance,finance_symbol:l.currency_symbol,cdn_domain:null===(n=l.shop)||void 0===n?void 0:n.cdn_domain,theme_id:null===(s=l.theme)||void 0===s?void 0:s.theme_id,theme_name:null===(o=l.theme)||void 0===o?void 0:o.merchant_theme_name,theme_version:null===(r=l.theme)||void 0===r?void 0:r.theme_version_id,shop_name:null===(i=l.shop)||void 0===i?void 0:i.shop_name,shop_id:null===(a=l.shop)||void 0===a?void 0:a.shop_id,shop_env:null===(c=l.shop)||void 0===c?void 0:c.shop_env,default_img:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==",template_name:null===(d=l.meta)||void 0===d||null===(d=d.page)||void 0===d?void 0:d.template_name,template_type:null===(u=l.meta)||void 0===u||null===(u=u.page)||void 0===u||null===(u=u.template_type)||void 0===u?void 0:u.toString()},window[atob("U0hPUF9QQVJBTVM=")]||{})}},function(e,t,n){"use strict";function s(){var e;null===(e=window.djInterceptors)||void 0===e||null===(e=e.proxy)||void 0===e||e.use(o)}function o({url:e,method:t,_body:n,redirect:s}){let o=null;try{var r,i,a;if(e.endsWith("/api/checkout/order")&&"POST"===t&&!s)if(n="string"==typeof n?JSON.parse(n):n,o={time:Date.now(),isOptimizedVersion:!1,source:["buy_now","cart"].includes(null===(r=n.refer_info)||void 0===r?void 0:r.source)?null===(i=n.refer_info)||void 0===i?void 0:i.source:"buy_now"},n.enable_order_create_proxy&&"one_page"!=(null===(a=n.refer_info)||void 0===a?void 0:a.source)){o&&(o.isOptimizedVersion=!0);const t=document.createElement("form");return t.method="POST",t.action=e.replace("/api/checkout/order","/checkout/create_order"),t.style.display="none",function(e,t){const n=document.createElement("input");n.type="hidden",n.name="data",n.value=JSON.stringify(t),e.appendChild(n)}(t,n),document.body.appendChild(t),t.submit(),document.body.removeChild(t),Promise.resolve(new Response(JSON.stringify({state:"success",ignore_to_checkout:!0,data:{items:n.line_items,refer_info:n.refer_info}}),{status:200,headers:{"Content-Type":"application/json"}}))}}catch(s){console.error("proxyCreateOrder error",e,t,n,s)}finally{o&&sessionStorage.setItem("CREATE_ORDER",JSON.stringify(o))}}n.d(t,"a",(function(){return s}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return y}
1552));class s{constructor(){this._handlers=[]}use(e){return this._handlers.push(e),this._handlers.length-1}eject(e){this._handlers[e]&&(this._handlers[e]=null)}forEach(e){this._handlers.forEach((t,n)=>{null!==t&&e(t,n)})}length(){return this._handlers.length}}var o=n(1);const r="dj.request",i="dj.response",a="dj.beforeRequest",c="application/x-www-form-urlencoded",d="application/json",u=/(?:\[)(.+?)(?:\])/g,l=/^\d$/,p=e=>{if(!e)return e;let t=e;try{t=JSON.parse(JSON.stringify(e)),Object.keys(e).forEach(n=>{var s;let o=null==n?void 0:n.match(u);if(!o)return void(t[n]=e[n]);o=o.map(e=>e.slice(1,-1));const r=o[0],i=l.test(r),a=null==n?void 0:n.slice(0,null==n?void 0:n.indexOf("["));t[a]||(t[a]=i?[]:{}),null===(s=o)||void 0===s||s.forEach(s=>{l.test(s)||(i?(t[a][r]||(t[a][r]={}),t[a][r][s]=e[n]):t[a][s]=e[n])})})}catch(e){console.log(e)}return t};class h{constructor(e,t,n,s){this.__reqHeaders=Object.assign({},n),this._request={url:e,redirect:void 0,method:t,headers:n,_body:s,body:void 0},this._response={data:void 0,headers:void 0,status:void 0},this.__origin_code_map_={}}redirectUrl_(){return this._request.redirect}getContentType_(e){for(const t in e.headers||{})if("content-type"===t.toLowerCase())return e.headers[t]}getRequestType_(){return this.getContentType_(this._request)}getResponseType_(){return this.getContentType_(this._response)}serializeBody_(){const e=this.getRequestType_();if(!e||!this._request._body)return;let t=void 0;try{e.indexOf(c)>-1?t=this.formStringToObj_(this._request._body):e.indexOf(d)>-1&&(t=JSON.parse(this._request._body))}catch{}t&&(this._request.body=t)}deserializeBody_(){const e=this.getRequestType_();if(!e||!this._request.body)return;let t=void 0;try{e.indexOf(c)>-1?t=this.formBodyToString_(this._request.body):e.indexOf(d)>-1&&(t=JSON.stringify(this._request.body))}catch{}t&&(this._request._body=t)}formBodyToString_(e){const t=[],n=(e,n)=>{t.push(this.getEncodeValue_(e)+"="+this.getEncodeValue_(n))};for(const t in e){const s=e[t];Array.isArray(s)?s.forEach(e=>{n(t,e)}):n(t,s)}return t.join("&")}formStringToObj_(e){const t={};if(!e||e.match(/^[{\[]+[^]*[}\]]+$/))return t;const n=[];return("?"+e).replace(/[?&]+([^=&]+)=([^&]*)/gi,(e,s,o)=>{null!=o&&(s=this.getDecodeValue_(s),o=this.getDecodeValue_(o),n.push({key:s,value:o}),null!=t[s]?t[s]=n.filter(e=>e.key==s).map(e=>e.value):t[s]=o)}),t}getDecodeValue_(e){const t=decodeURIComponent(e),n=e!==encodeURIComponent(t)?e:t;return this.__origin_code_map_[n]=e,n}getEncodeValue_(e){return void 0!==this.__origin_code_map_[e]?this.__origin_code_map_[e]:null==e?e:encodeURIComponent(e)}triggerBeforeRequestEvent(){Object(o.d)(a,Object.assign({},this._request,{body:p(this._request.body)}))}triggerRequestEvent(){Object(o.d)(r,Object.assign({},this._request,{body:p(this._request.body)}))}triggerResponseEvent(){Object(o.d)(i,{request:Object.assign({},this._request,{body:p(this._request.body)}),response:this._response})}shouldSendDirectly_(){var e,t;if(!(null!==(e=window.djInterceptors)&&void 0!==e&&null!==(e=e.request)&&void 0!==e&&e.length()||null!==(t=window.djInterceptors)&&void 0!==t&&null!==(t=t.proxy)&&void 0!==t&&t.length()))return!0;const n=this.getRequestType_();return!(!n||-1!==n.indexOf(c)||-1!==n.indexOf(d))}shouldReturnDirectly_(){var e;if(null===(e=window.djInterceptors)||void 0===e||null===(e=e.response)||void 0===e||!e.length())return!0;const t=this.getResponseType_();return!(!t||-1!==t.indexOf(d))}headersModified_(){const e={};let t=!1;const n=this._request.headers;return Object.getOwnPropertyNames(n||{}).forEach(s=>{n[s]!==this.__reqHeaders[s]&&(e[s]=n[s],t=!0)}),t?e:void 0}requestHooks_(){var e;let t=[],n=Promise.resolve(this._request);for(null===(e=window.djInterceptors)||void 0===e||null===(e=e.request)||void 0===e||e.forEach(e=>{t.push(e)});t.length;)n=n.then(t.shift());return n}responseHooks_(){var e;const t=Object.assign(this._response,{config:this._request});let n=Promise.resolve(t);if(this.shouldReturnDirectly_())return n;let s=[];for(null===(e=window.djInterceptors)||void 0===e||null===(e=e.response)||void 0===e||e.forEach(e=>{s.push(e)});s.length;)n=n.then(s.shift());return n}send(e){const t=()=>{if(e)return this.triggerRequestEvent(),e(this._request._body,this.redirectUrl_(),this.headersModified_())};
1552return this.shouldSendDirectly_()?t():this.requestHooks_().then(e=>{e&&e.body&&this.deserializeBody_()}).catch(e=>{console.log(e)}).then(()=>this.handleProxyHook_()).then(e=>e||t())}mock(e){return e?this.parseResponse_(e).then(()=>{this.triggerResponseEvent()}).then(()=>this.responseHooks_()).then(({data:t,status:n})=>{if(!t)return e;if(t instanceof Response)return t;if(e.hasOwnProperty("data")){const s=this.canParseToJson_(e.data);return{status:n,data:this.isObject_(s)?JSON.stringify(t):t}}return e instanceof Response?new Response(JSON.stringify(t),{status:n,headers:e.headers,statusText:e.statusText}):void 0}).catch(()=>(this.triggerResponseEvent(),e)):Promise.resolve(e)}parseResponse_(e){if(this._response.status=e.status||200,e.hasOwnProperty("data")){this._response.headers=e.headers;const t=this.canParseToJson_(e.data);return this._response.data=this.isObject_(t)?t:e.data,Promise.resolve()}return e instanceof Response?(this._response.headers=this.parseHeaders_(e.headers),e.clone().json().then(e=>{this._response.data=e}).catch(()=>this._response.data=e)):Promise.resolve()}parseHeaders_(e){const t={};if("function"==typeof e.entries)for(const n of e.entries())t[n[0]]=n[1];return t}canParseToJson_(e){try{return JSON.parse(e)}catch{}return!1}isObject_(e){return"object"==typeof e}handleBeforeRequest_(){this.serializeBody_(),this.triggerBeforeRequestEvent()}async handleProxyHook_(){try{var e;const t=[];null===(e=window.djInterceptors)||void 0===e||null===(e=e.proxy)||void 0===e||e.forEach(e=>{t.push(e)});for(const e of t){const t=await e(this._request);if(t)return t}}catch(e){console.log(e)}}intercept(e){this.handleBeforeRequest_();const t=this.send(e);if(t instanceof Promise)return t.then(e=>this.mock(e))}}function _(){const e=function(e){if(this.readyState===window.XMLHttpRequest.DONE&&(e.requestProxy_||e.responseMock_))return e.responseMock_||(e.responseMock_=t=>e.requestProxy_.mock.apply(e.requestProxy_,[t])),e.responseMock_({status:this.status,data:this.responseType_&&"text"!=this.responseType_?this.response:this.responseText,headers:f(e)}).then(({data:e,status:t})=>(this.response=this.responseText=e,this.status=t,e))};!function(e){const t=window;t.__xhr=t.__xhr||t.XMLHttpRequest;const n=t.__xhr.prototype.setRequestHeader,s=t.__xhr.prototype.open,o=t.__xhr.prototype.send,r=function(e,t){e&&Object.getOwnPropertyNames(e).filter(e=>!t||!t.hasOwnProperty(e)).forEach(t=>{n.apply(this,[t,e[t]])})};function i(t){return function(){const n=this.hasOwnProperty(t+"_")?this[t+"_"]:this.xhr[t],s=(e[t]||{}).getter;return s&&s(n,this)||n}}function a(t){return function(n){const s=this.xhr,o=this,r=e[t];if("on"===t.substring(0,2))o[t+"_"]=n,s[t]=function(r){const i=e[t]&&e[t].call(o,s,r);i?i.then(()=>n.call(o,r)):n.call(o,r)};else{const e=(r||{}).setter;n=e&&e(n,o)||n,this[t+"_"]=n;try{s[t]=n}catch(e){}}}}function c(t){return function(){const n=[].slice.call(arguments);if(e[t]){const s=e[t].call(this,n,this.xhr);if(s&&s.then)return s.then(()=>this.xhr[t].apply(this.xhr,[].slice.call(arguments)))}return this.xhr[t].apply(this.xhr,n)}}t.XMLHttpRequest.prototype.setRequestHeader=function(e,t){return this._headers=Object.assign({},this._headers||{},{[e]:t}),n.apply(this,arguments)},t.XMLHttpRequest.prototype.open=function(e,t){return this._method=e||"GET",this._url=t,s.apply(this,arguments)},t.XMLHttpRequest.prototype.send=function(e){return this.requestProxy_=new h(this._url,this._method,this._headers,e),this.requestProxy_.intercept((e,t,n)=>{t&&(s.apply(this,[this._method,t]),r.apply(this,[this._headers,n])),r.apply(this,[n]),o.call(this,e)})},t.XMLHttpRequest=function(){const e=new t.__xhr;for(let t in e){"function"===typeof e[t]?this[t]=c(t):Object.defineProperty(this,t,{get:i(t),set:a(t),enumerable:!0})}this.xhr=e},t.XMLHttpRequest.prototype=t.__xhr.prototype,Object.assign(t.XMLHttpRequest,{UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4}),t.__xhr}({onreadystatechange:e,onload:e,onloadend:e,addEventListener:function(t,n){const s=this;if(["load","loadend","timeout","error","readystatechange","abort"].includes(t[0]))return e.call(s,n)}})}function f(e){const t=e.getAllResponseHeaders().trim().split(/[\r\n]+/);var n={};
1552return t.forEach(e=>{const t=e.split(": "),s=t.shift(),o=t.shift();n[s]=o}),n}const v=["checkout","thank_you"],y=()=>{var e;v.includes(null===(e=window.C_SETTINGS)||void 0===e||null===(e=e.meta)||void 0===e||null===(e=e.page)||void 0===e?void 0:e.template_name)||(window.djInterceptors={request:new s,response:new s,track:new s,proxy:new s},_(),function(){const e=window.fetch;"function"==typeof e&&(window.fetch=function(t,n={}){const s=(null==n?void 0:n.method)||"GET";return new h(t,s,null==n?void 0:n.headers,null==n?void 0:n.body).intercept((s,o,r)=>(n.body=s,r&&(n.headers&&"function"==typeof n.headers.set?Object.getOwnPropertyNames(r).forEach(e=>n.headers.set(e,r[e])):(n.headers||(n.headers={}),Object.assign(n.headers,r))),t=o||t,e.call(this,t,n)))})}())}},function(e,t,n){"use strict";n.d(t,"a",(function(){return b}));var s=n(1),o=n(0);const r=(e,t)=>{e>=200&&e<300&&t()},i=e=>{var t;if(!e)return{};const n=e.quantity||1,s=e.add_quantity||e.quantity||1;let o={option1:"",option2:"",option3:""};return null===(t=e.options)||void 0===t||t.forEach((e,t)=>{o["option"+(t+1)]=e.value}),{product_id:e.product_id,variant_id:e.variant_id,variant:o,name:e.product_title,item_price:e.price,quantity:n,number:s,properties:e.properties,sku:e.sku,vendor:e.vendor,type:""}},a=[{path:/\/api\/customers\/sign_up$/,method:"post",events:{[o.q]:({body:e},t)=>{t({accout:e.email,sign_up_method:e.email.indexOf("@")<0?"ææºå·":"é®ç®±"})}}}],c=[{path:/\/api\/cart$/,method:"get",events:{[o.e]:({response:e},t)=>{r(e.status,()=>{var n;(n=e.data,"[object Object]"===Object.prototype.toString.call(n))&&t(e.data.cart)})}}},{path:/\/api\/search$/,method:"get",events:{[o.o]:({response:e,url:t},n)=>{r(e.status,()=>{const o=e.data.data||{},{total:r}=o;let i=o.keyword;i||(i=Object(s.b)(t).keyword),n({keyWord:i,total:r,hasResult:r>0,source:"api"})})}}},{path:new RegExp("/api/products/[0-9a-fA-F]{4}(?:[0-9a-fA-F]{4}-){4}[0-9a-fA-F]{12}$"),method:"get",events:{[o.s]:({response:e},t)=>{r(e.status,()=>{var n;t({product:null===(n=e.data)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.product,selected:{},qty:1,source:"api"})})}}},{path:/\/api\/cart$/,method:"post",events:{[o.a]:({response:e},t)=>{r(e.status,()=>{var n;const s=null===(n=e.data.data)||void 0===n||null===(n=n.items)||void 0===n?void 0:n[0];t(i(s))})},[o.b]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/cart\/batch$/,method:"post",events:{[o.a]:({response:e},t)=>{r(e.status,()=>{var n;null===(n=e.data.items)||void 0===n||n.map(e=>{t(i(e))})})},[o.b]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/checkout\/order$/,method:"post",events:{[o.a]:({body:e,response:t},n)=>{r(t.status,()=>{var s;const o=null===(s=e.refer_info)||void 0===s?void 0:s.source;if("buy_now"==o){var r,a,c;const s=null===(r=t.data.data)||void 0===r||null===(r=r.items)||void 0===r?void 0:r[0],d=null===(a=e.refer_info)||void 0===a?void 0:a.pay_method,u=null===(c=t.data.data)||void 0===c?void 0:c.trade_id,l=Object.assign({},i(s),{source:o,pay_method:d,trade_id:u});n(l)}})},[o.f]:({body:e,response:t},n)=>{r(t.status,()=>{n({line_items:e&&e.line_items||[],refer_info:e&&e.refer_info||{}})})}}},{path:/\/api\/customers\/password_reset$/,method:"patch",events:{[o.n]:({response:e},t)=>{200===e.status?t({forget:!0}):422===e.status&&t({forget:!1})}}},{path:/\/api\/customers\/sign_up$/,method:"post",events:{[o.g]:({response:e},t)=>{r(e.status,()=>{t("register")})}}},{path:/\/api\/customers\/sign_in$/,method:"post",events:{[o.k]:({body:e,response:t},n)=>{const s=function(t,s){var o;n({login_method:e.email.indexOf("@")<0?"ææºå·":"é®ç®±",shop_name:null===(o=window.C_SETTINGS.shop)||void 0===o?void 0:o.shop_name,login_result:t,fail_reason:s||""})};if(200===t.status)s(!0);else if(422===t.status){const e=t.data.errors;s(!1,null!=e&&e.join?e.join(","):e)}}}},{path:/\/api\/customers\/sign_out$/,method:"post",events:{[o.l]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/customers\/newsletters$/,method:"post",events:{[o.j]:({response:e},t)=>{r(e.status,()=>{t()})}}},{path:/\/api\/cart\/[\w\-]+$/,method:"patch",events:{[o.b]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)}
1552)},[o.e]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)})},[o.c]:({body:e,response:t},n)=>{r(t.status,()=>{n({cart:t.data.cart,item:e})})}}},{path:/\/api\/cart\/[\w\-]+$/,method:"delete",events:{[o.b]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)})},[o.e]:({response:e},t)=>{r(e.status,()=>{t(e.data.cart)})},[o.d]:({body:e,response:t},n)=>{r(t.status,()=>{n({cart:t.data.cart,item:e})})}}}],d=(e,t,n)=>{const o=Object(s.c)(t).pathname;return e.find(e=>{const t=e.path;if(e.method!==n.toLowerCase())return!1;if(t instanceof RegExp){if(t.test(o))return!0}else if(t===o)return!0})},u=(e,t)=>{if(!e)return;const n=(e=>{var t;const n={};return null===(t=window.djInterceptors)||void 0===t||null===(t=t.track)||void 0===t||t.forEach((t,s)=>{var o;null!=e&&null!==(o=e.events)&&void 0!==o&&o[t.event]&&(n[t.event]=Object.assign({},n[t.event],t.params),(null==t.once||t.once)&&window.djInterceptors.track.eject(s))}),n})(e);Object.keys((null==e?void 0:e.events)||{}).forEach(o=>{e.events[o](t,e=>{["undefined","object"].includes(typeof e)&&(e=Object.assign({},e,{_extra:n[o]})),Object(s.d)(o,e)})})},l=location.origin+"__recently-viewed-productIds__",p=(e,t)=>{try{window.localStorage.setItem(e,JSON.stringify(t))}catch(e){console.error(e)}},h=e=>{try{const t=window.localStorage.getItem(e);return t&&JSON.parse(t)}catch(e){console.error(e)}},_=({product:e,selected:t,qty:n,quantity:r})=>{var i;let a=e,c=t;const{product:d,selected:u}=y()||{};(null==e?void 0:e.id)!==(null==d?void 0:d.id)||null!=d&&null!==(i=d.options)&&void 0!==i&&i.length||(a=d,c=u),Object(s.d)(o.s,{product:a||{},selected:c||{},qty:n||r||1,source:"pageview"})},f=(e,t,n)=>{if(C_SETTINGS.meta.page.template_name===t)try{window.addEventListener(e,n)}catch{}},v=(e,t)=>
1552{f("load",e,t)};function y(){let e=document.querySelector("#product-json");return e?JSON.parse(e.innerHTML):"function"==typeof $?$(document).data("djproduct"):void 0}const m=()=>{v("product",()=>{let e={product:{},selected:{},qty:1},t=y();t&&Object.assign(e,t),requestAnimationFrame(()=>_(e)),requestAnimationFrame(()=>{let e=h(l)||[];const n=t&&t.product&&t.product.id;if(n){const t=e.indexOf(n);-1!==t&&e.splice(t,1),e.unshift(n),p(l,e)}})}),Object(s.a)(o.r,(e,t)=>{"complete"===document.readyState&&(t&&t.source&&"initial_load"===t.source||_(t))})};function g(){m(),v("search",()=>{const e=Object(s.b)(location.search).q,t=Number.parseInt("",10)||0;Object(s.d)(o.o,{keyword:e,total:t,hasResult:t>0,keyWord:e,source:"pageview"})}),v("thank_you",()=>{var e;const t=null===(e=window.ORDER)||void 0===e?void 0:e.id,n=h("__thank_you_already_event_map__")||{};null!=n&&n[t]||(n[t]=!0,p("__thank_you_already_event_map__",n),Object(s.d)(o.p,Object.assign({},window.ORDER||{},{order_count:window.ORDER.customer&&window.ORDER.customer.order_count})))}),v("thank_you",()=>{Object(s.d)(o.m,Object.assign({},window.ORDER||{}))}),v("product",()=>{Object(s.d)(o.m,Object.assign({},y()||{}))})}function b(){Object(s.a)(o.h,(e,{url:t,method:n,body:s})=>{const o=d(a,t,n);u(o,{url:t,body:s})}),Object(s.a)(o.i,(e,{request:t,response:n})=>{const{url:s,method:o,body:r}=t,i=d(c,s,o);u(i,{url:s,method:o,body:r,response:n})}),g()}},function(e,t){try{(()=>{const e=e=>{const t=e.split("&&")[0];if(!t)return[];const n=t.indexOf("=");let s="";return-1!==n&&(s=t.slice(n+1)),s?s.split(";").filter(e=>e):[]},t=(e,t)=>{if(!t)return;if(/\/cuttlefish\//.test(t))return;return e.some(e=>{let n=t;return t.replace&&(n=t.replace("https:","")),n==e.replace("https:","")})},n=["application/javascript","text/javascript"],s=(e,t)=>{self.MainThread.upgradeScript(e,t)},o=o=>{const r=e(o);new MutationObserver(e=>{e.forEach(({addedNodes:e})=>{e.forEach(e=>{(e=>1===e.nodeType&&"SCRIPT"===e.tagName&&(!e.type||n.includes(e.type)))(e)&&(t(r,e.src)||"worker"==e.getAttribute("scope"))&&(e.type="text/spz-script",s(e.src,e))})})}).observe(document.documentElement,{childList:!0,subtree:!0})},r=o=>{const r=e(o),i=document.createElement,a=(e,s)=>e&&t(r,e)&&n.includes(s);document.createElement=function(e){const t=i.call(document,e);return"script"===e.toLowerCase()&&function(e){let t="",n="text/javascript";Object.defineProperty(e,"src",{get:function(){return t},set:function(o){t=o,e.setAttribute("src",o),a(t,n)&&(e.type="text/spz-script",s(t))}}),Object.defineProperty(e,"type",{get:function(){return n},set:function(s){n=s,a(t,n)&&(n="text/spz-script"),e.setAttribute("type",n)}});const o=e.setAttribute;e.setAttribute=function(){const t=Array.prototype.slice.call(arguments);"src"===t[0]?a(t[1],e.type)&&(e.type="text/spz-script",s(t[1])):"type"===t[0]&&a(e.src,t[1])&&(t[1]="text/spz-script"),o.apply(e,t)}}(t),t}};(()=>{const e="";e.includes("script_url")&&!e.includes("is_switch=0")&&(self.MainThread||(()=>{const e=window.C_SETTINGS.shop.cdn_domain+"cuttlefish/plugin",t=document.createElement("script");t.src=e+"/main.js",t.crossOrigin="anonymous",t.setAttribute("async",""),document.head.appendChild(t)})(),o(e),r(e))})()})()}catch(e){console.log(e)}},,,,,,function(e,t,n){n(13),n(6)},function(e,t,n){"use strict";n.r(t);var s=n(2),o=n(4),r=n(5),i=n(3);Object(s.a)(),Object(o.a)(),Object(i.a)(),Object(r.a)()}]);/* top_v2-end */ 1553</script>
1553 1554<style id="spz-theme-vars"> 1555 :root { 1556 --spz-theme-pdp-title-font-family: var(--font-heading-family); 1557 --spz-theme-pdp-title-font-size: calc(var(--type-heading-font-size) * 0.8); 1558 --spz-theme-pdp-title-line-height: 1.25; 1559 --spz-theme-pdp-title-font-weight: var(--font-heading-weight); 1560 --spz-theme-pdp-title-color: var(--color-product-title-text); 1561 --spz-theme-pdp-subtitle-font-size: var(--type-text-font-size); 1562 --spz-theme-pdp-subtitle-line-height: 1.2; 1563 --spz-theme-pdp-subtitle-font-weight: var(--font-body-weight); 1564 --spz-theme-pdp-subtitle-color: #9F9F9F; 1565 --spz-theme-pdp-price-font-family: var(--font-heading-family); 1566 --spz-theme-pdp-price-font-size: calc(var(--type-heading-font-size) * .8); 1567 --spz-theme-pdp-price-line-height: 1.2; 1568 --spz-theme-pdp-price-font-weight: 600; 1569 --spz-theme-pdp-price-color: var(--color-price-text); 1570 --spz-theme-pdp-compare-price-font-size: calc(var(--type-text-font-size) + 2px); 1571 --spz-theme-pdp-compare-price-line-height: 1.2; 1572 --spz-theme-pdp-compare-price-font-weight: var(--font-body-weight); 1573 --spz-theme-pdp-compare-price-color: var(--color-compare-at-price-text); 1574 --spz-theme-pdp-save-badge-font-size: calc(var(--type-text-font-size) - 2px); 1575 --spz-theme-pdp-save-badge-line-height: 1.2; 1576 --spz-theme-pdp-save-badge-font-weight: 600; 1577 --spz-theme-pdp-save-badge-color: var(--color-save-price-text); 1578 --spz-theme-pdp-save-badge-border: 1px solid currentColor; 1579 --spz-theme-pdp-save-badge-radius: 2px; 1580 --spz-theme-pdp-save-badge-padding: 0px 4px; 1581 --spz-theme-pdp-variant-title-font-family: var(--font-body-family); 1582 --spz-theme-pdp-variant-title-font-size: calc(var(--type-text-font-size) + 2px); 1583 --spz-theme-pdp-variant-title-font-weight: 600; 1584 --spz-theme-pdp-variant-font-size: var(--type-text-font-size); 1585 --spz-theme-pdp-variant-line-height: 1.15; 1586 --spz-theme-pdp-variant-font-weight: var(--font-body-weight); 1587 --spz-theme-pdp-variant-color: var(--color-body-text-75); 1588 --spz-theme-pdp-variant-border: 1px solid var(--color-border); 1589 --spz-theme-pdp-variant-radius: var(--btn-fixed-border-radius); 1590 --spz-theme-pdp-variant-min-width: auto; 1591 --spz-theme-pdp-variant-min-height: auto; 1592 --spz-theme-pdp-variant-max-width: none; 1593 --spz-theme-pdp-variant-padding: 13px 16px; 1594 --spz-theme-pdp-variant-gap: 12px; 1595 --spz-theme-pdp-qty-label-font-family: var(--font-body-family); 1596 --spz-theme-pdp-qty-label-font-size: calc(var(--type-text-font-size) + 2px); 1597 --spz-theme-pdp-qty-label-line-height: 1.25; 1598 --spz-theme-pdp-qty-label-font-weight: 600; 1599 --spz-theme-pdp-qty-label-color: var(--color-body-text); 1600 --spz-theme-pdp-qty-font-size: calc(var(--type-text-font-size) + 2px); 1601 --spz-theme-pdp-qty-radius: 2px; 1602 --spz-theme-pdp-atc-button-font-size: calc(var(--type-text-font-size) + 2px); 1603 --spz-theme-pdp-atc-button-line-height: 1.25; 1604 --spz-theme-pdp-atc-button-font-weight: 500; 1605 --spz-theme-pdp-atc-button-height: 52px; 1606 --spz-theme-pdp-atc-button-padding: 0px 0px 0px 0px; 1607 --spz-theme-pdp-atc-button-radius: var(--btn-border-radius); 1608 --spz-theme-pdp-buy-button-font-size: calc(var(--type-text-font-size) + 2px); 1609 --spz-theme-pdp-buy-button-line-height: 1.25; 1610 --spz-theme-pdp-buy-button-font-weight: 500; 1611 --spz-theme-pdp-stock-note-font-size: var(--type-text-font-size); 1612 --spz-theme-pdp-stock-note-line-height: 1.2; 1613 --spz-theme-pdp-stock-note-font-weight: var(--font-body-weight); 1614 --spz-theme-pdp-stock-note-color: var(--color-price-text); 1615 --spz-theme-plp-title-font-size: 24px; 1616 --spz-theme-plp-title-line-height: 1.3; 1617 --spz-theme-plp-title-font-weight: 400; 1618 --spz-theme-plp-title-font-family: var(--font-body-family); 1619 --spz-theme-plp-title-color: var(--color-general-heading-text); 1620 --spz-theme-plp-card-title-font-size: var(--type-text-font-size); 1621 --spz-theme-plp-card-title-line-height: 1.25; 1622 --spz-theme-plp-card-title-font-weight: var(--font-heading-weight); 1623 --spz-theme-plp-card-title-font-family: var(--font-heading-family); 1624 --spz-theme-plp-card-title-color: var(--color-product-title-text); 1625 --spz-theme-plp-card-price-font-size: calc(var(--type-text-font-size) + 2px);
1626 --spz-theme-plp-card-price-font-weight: 600; 1627 --spz-theme-plp-card-price-color: var(--color-price-text); 1628 --spz-theme-plp-card-compare-font-size: var(--type-text-font-size); 1629 --spz-theme-plp-card-compare-line-height: 1.15; 1630 --spz-theme-plp-card-compare-font-weight: var(--font-body-weight); 1631 --spz-theme-plp-card-compare-color: var(--color-compare-at-price-text); 1632 --spz-theme-plp-badge-font-size: 12px; 1633 --spz-theme-plp-badge-padding: 2px 4px; 1634 --spz-theme-plp-badge-radius: var(--global-border-radius); 1635 --spz-theme-plp-badge-color: var(--color-label-text); 1636 --spz-theme-plp-soldout-color: var(--color-sold-label-text); 1637 --spz-theme-plp-quick-add-color: var(--color-quick-shop-btn-bg); 1638 --spz-theme-plp-swatch-gap: 8px; 1639 --spz-theme-plp-swatch-radius: var(--global-fixed-border-radius); 1640 --spz-theme-plp-card-image-radius: var(--global-small-border-radius); 1641 --spz-theme-plp-card-image-aspect-ratio: calc(100 / 100); 1642 --spz-theme-plp-card-radius: 0; 1643 --spz-theme-cart-drawer-width: 468px; 1644 --spz-theme-cart-drawer-radius: 0; 1645 --spz-theme-cart-title-font-size: calc(var(--type-heading-font-size) * 0.8); 1646 --spz-theme-cart-title-line-height: 1.17; 1647 --spz-theme-cart-title-font-weight: var(--font-heading-weight); 1648 --spz-theme-cart-item-title-font-size: var(--type-text-font-size); 1649 --spz-theme-cart-item-title-line-height: 1.25; 1650 --spz-theme-cart-item-title-font-weight: var(--font-body-weight); 1651 --spz-theme-cart-item-title-font-family: var(--font-body-family); 1652 --spz-theme-cart-item-title-color: var(--color-product-title-text); 1653 --spz-theme-cart-item-variant-font-size: var(--type-text-font-size); 1654 --spz-theme-cart-item-variant-color: var(--color-body-text-70); 1655 --spz-theme-cart-item-price-font-size: calc(var(--type-text-font-size) + 2px); 1656 --spz-theme-cart-item-price-line-height: 1.25; 1657 --spz-theme-cart-item-price-font-weight: 500; 1658 --spz-theme-cart-item-price-color: var(--color-price-text); 1659 --spz-theme-cart-qty-radius: var(--global-border-radius); 1660 --spz-theme-cart-qty-border: 1px solid var(--color-border); 1661 --spz-theme-cart-item-image-radius: var(--global-fixed-border-radius); 1662 --spz-theme-cart-summary-card-bg: var(--color-cart-subtotal-bg); 1663 --spz-theme-cart-checkout-bg: var(--color-primary-btn-bg); 1664 --spz-theme-cart-checkout-color: var(--color-primary-btn-text); 1665 --spz-theme-cart-checkout-height: 46px; 1666 --spz-theme-cart-checkout-font-size: calc(var(--type-text-font-size) + 2px); 1667 --spz-theme-cart-checkout-font-weight: 700; 1668 --spz-theme-cart-checkout-radius: var(--btn-border-radius); 1669 --spz-theme-atc-modal-width: 495px; 1670 --spz-theme-atc-modal-max-height: 86vh; 1671 --spz-theme-atc-modal-border-width: 0; 1672 --spz-theme-atc-modal-radius: var(--global-small-border-radius); 1673 --spz-theme-page-width: 1440px; 1674 --spz-theme-page-gutter: var(--page-spacing); 1675 --spz-theme-grid-gap-x: 40px; 1676 --spz-theme-grid-gap-y: 44px; 1677 --spz-theme-button-radius: var(--btn-border-radius); 1678 --spz-theme-button-border-width: 1px; 1679 --spz-theme-button-hover-bg-color: var(--color-primary-btn-bg); 1680 --spz-theme-button-hover-text-color: var(--color-primary-btn-text); 1681 --spz-theme-input-bg-color: transparent; 1682 --spz-theme-input-text-color: var(--color-body-text); 1683 --spz-theme-input-border-color: var(--color-border); 1684 --spz-theme-input-radius: var(--global-border-radius); 1685 --spz-theme-toast-radius: 2px; 1686 --spz-theme-progress-radius: 1px; 1687 --spz-theme-pill-radius: 9999px; 1688 } 1689 #cart-drawer-modal, [data-spz-theme-scope="cart-drawer"] { 1690 --spz-theme-cart-item-price-font-size: var(--type-text-font-size); 1691 } 1692 @media (max-width: 959px) { 1693 :root { 1694 --spz-theme-pdp-title-font-size: calc(var(--type-heading-font-size) * 0.47); 1695 --spz-theme-pdp-variant-title-font-size: var(--type-text-font-size); 1696 --spz-theme-pdp-variant-padding: 10px 16px; 1697 --spz-theme-pdp-atc-button-height: 42px; 1698 --spz-theme-pdp-atc-button-padding: px px px px; 1699 --spz-theme-cart-drawer-width: 84.62%; 1700 --spz-theme-page-gutter: 16px; 1701 --spz-theme-grid-gap-x: 15px; 1702 --spz-theme-grid-gap-y: 24px; 1703 --spz-theme-toast-radius: 0; 1704 } 1705 } 1706</style> 1707
1708<script type="text/javascript"> 1709/* golden-top-start */!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="https://static.staticdj.com/",n(n.s=13)}([function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"d",(function(){return o})),n.d(t,"e",(function(){return a})),n.d(t,"m",(function(){return c})),n.d(t,"j",(function(){return s})),n.d(t,"l",(function(){return u})),n.d(t,"b",(function(){return d})),n.d(t,"h",(function(){return l})),n.d(t,"f",(function(){return m})),n.d(t,"g",(function(){return f})),n.d(t,"i",(function(){return _})),n.d(t,"k",(function(){return g}));const r=()=>{var e=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,t=/(android)/i.test(navigator.userAgent);return e?1:t?2:3},i=()=>{String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(e,t){return t=!t||t<0?0:+t,this.substring(t,t+e.length)===e}});var e=window.location.pathname||"";return"/"==e||e.startsWith("/home")||e.startsWith("/index")?"index":e.startsWith("/products/")?"product":e.startsWith("/collections/")||e.startsWith("/products")?"product_group":e.startsWith("/promotions/")?"activity":e.startsWith("/search")?"search":e.startsWith("/checkout/")?"checkout":"other"},o=function(e){let t=e&&e.discount_applications;if("string"==typeof t)try{t=JSON.parse(t)}catch(e){return}if(Array.isArray(t))return t.map((function(e){return e&&e.discount_id})).join(",")},a=function(e){return(e&&e.line_items||[]).reduce((function(e,t){return e+(t.quantity||0)}),0)},c=(e,t)=>{var n;const r=new CustomEvent(e,{detail:t||null,bubbles:!0});null===(n=document.body)||void 0===n||n.dispatchEvent(r)},s=(e,t)=>{"dj.addToCart"===e&&window.__SEAHORSE_BUS.addEventListener(e,(function(n){const r={type:e,detail:n};n&&!n.__is_seahorse_event||t(r,n)})),document.addEventListener(e,(function(n){"dj.addToCart"===e&&n.detail&&n.detail.__is_seahorse_event||t(n,n.detail)}))},u=(e,t,n,r=!1)=>{var i=new Date;return i.setTime(i.getTime()+31536e6),document.cookie=e+"="+encodeURIComponent(t)+";expires="+(n||i).toGMTString()+";domain="+location.host.split(".").map((function(e,t,n){return 0==t&&n.length>2?"":e})).join(".")+";path=/"+(r?";SameSite=None;Secure":""),!0},d=e=>{var t=new RegExp("(^| )"+e+"=([^;]*)(;|$)"),n=document.cookie.match(t);return n?decodeURIComponent(n[2]):""},l=()=>window&&window.sessionStorage&&"function"==typeof window.sessionStorage.setItem&&"function"==typeof window.sessionStorage.getItem,m=(e="")=>e.split("/")[2]||"",f=()=>C_SETTINGS.meta&&C_SETTINGS.meta.page&&14===C_SETTINGS.meta.page.template_type,_=()=>C_SETTINGS.meta&&C_SETTINGS.meta.page&&42===C_SETTINGS.meta.page.template_type,g=function(e){return"number"!=typeof e||isNaN(e)?void 0:Math.round(10*e)/10}},function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));const r="_extra",i={UTM:atob("c2hvcGxhenphX2FfcA=="),UTM_PARAMS:"utm_a_p",SESSION_ID_OLD:"session_id",SESSION_ID_NEW:"ss_id_a_p"},o="data-track"},function(e,t,n){"use strict";n.d(t,"h",(function(){return m})),n.d(t,"e",(function(){return f})),n.d(t,"d",(function(){return _})),n.d(t,"g",(function(){return g})),n.d(t,"c",(function(){return p})),n.d(t,"f",(function(){return h})),n.d(t,"a",(function(){return v}));var r=n(0);n.d(t,"b",(function(){return r.b}));var i=n(1);let o=0;const a={name:"fbclid",get:()=>Object(r.b)(a.name),set:()=>{var e=new RegExp(`(^|&)${a.name}=([^&]*)(&|$)`),t=window.location.search.substring(1).match(e);if(null!=t&&t[2]){var n="fb.1."+(new Date).getTime()+"."+t[2];Object(r.l)(a.name,n)}}},c={name:"_epik",get:()=>{try{const t=Object(r.b)(c.name);if(t)return t;var e=window.location.search.substring(1).match(/(^|&)epik=([^&]*)(&|$)/);
1709return null!=e&&e[2]?decodeURIComponent(e[2]):""}catch(e){return""}}},s={name:"ttclid",get:()=>Object(r.b)(s.name),set:()=>{var e=new RegExp(`(^|&)${s.name}=([^&]*)(&|$)`),t=window.location.search.substring(1).match(e);null!=t&&t[2]&&Object(r.l)(s.name,t[2])}},u={name:i.a.SESSION_ID_NEW,get:()=>Object(r.b)(u.name),set:()=>{let e=u.get()||Object(r.b)(i.a.SESSION_ID_OLD);const t=!e;e||(e=(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString());const n=new Date((new Date).getTime()+18e5),o="https:"===location.protocol;return Object(r.l)(u.name,e,n,o),Object(r.l)(i.a.SESSION_ID_OLD,e,n,o),{isNew:t}}},d={name:atob("c2hvcGxhenphX3NvdXJjZQ=="),get:()=>{try{return Object(r.b)(d.name)||localStorage[d.name]}catch(e){}return""},set:()=>{var e=document.referrer,t=location.href,n=navigator.userAgent,i=([["Facebook",/(facebook)|(fbclid=.+)/i,/fbclid=.+/,/FBAV|FBAN|FBIOS/i],["GoogleAds",/gclid=.+/i,/gclid=.+/i,0],["Google",/google/i,0,0],["Instagram",/instagram/i,0,/instagram/i],["Pinterest",/(pinterest)|(epik=.+)/i,/epik=.+/i,/pinterest/i],["Snapchat",/snapchat/i,0,/snapchat/i],["TikTok",/ads.tiktok/i,0,/tiktok/i],["Mailchimp",/mc_cid=.+/i,0,0],["Baidu",/baidu/i,0,0],["YouTube",/youtube/i,0,/youtube/i],["Twitter",/(twitter)|(t.co)/i,0,/twitter/i],["LinkedIn",/linkedin/i,0,/linkedin/i],["WhatsApp",/whatsapp/i,0,/whatsapp/i],["Reddit",/reddit/i,0,0],["Yahoo",/yahoo/i,0,0],["Bing",/bing/i,0,0],["Yandex",/yandex/i,0,0]].find((function(r){return r[1]&&r[1].test(e)||r[2]&&r[2].test(t)||r[3]&&r[3].test(n)}))||[""])[0],o=d.name,a=new Date((new Date).getTime()+6048e5);d.get()||Object(r.l)(o,JSON.stringify({$first_visit_url:t,$latest_referrer_host:i,expire:a.getTime()}),a)&&function(){try{localStorage[o]=d.get()}catch(e){}}(),!d.get()&&localStorage[o]&&((JSON.parse(localStorage[o])&&JSON.parse(localStorage[o]).expire||0)<(new Date).getTime()||Object(r.l)(o,localStorage[o])),d.get()&&!localStorage[o]&&function(){try{localStorage[o]=d.get()}catch(e){}}()}},l={name:"client_id",get:()=>Object(r.b)(l.name)},m=()=>{(()=>{const e=l.get();d.get()||(o=1),e&&"null"!=e||(o=1)})(),a.set(),s.set();const e=u.set();return d.set(),{sessionId:e}},f=()=>o,_=()=>a.get(),g=()=>s.get(),p=()=>c.get(),h=()=>u.get(),v=()=>l.get()},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0);const i=(e=!0)=>{if(e)return window.djTracker=window.djTracker||[],void(window.djTrack=window.djTrack||function(e,t){window.djTracker.push({eventName:e,params:t})});window.djTrack=function(e,t={}){e&&Object(r.m)("dj.track",{eventName:e,params:t})},(window.djTracker||[]).map(({eventName:e,params:t})=>{window.djTrack(e,t)})}},,,,,,,,,,function(e,t,n){"use strict";n.r(t);var r=n(0),i=n(1);const o=e=>{try{const t=localStorage.getItem(e);if(!t)return"";const n=JSON.parse(t);return!n||!n.expire||n.expire<(new Date).getTime()?"":n.value||""}catch(e){return""}},a=(e,t,n)=>{try{localStorage.setItem(e,JSON.stringify({value:t,expire:n}))}catch(e){}},c=e=>{let t=Object(r.b)(e);return t||(t=o(e),t&&Object(r.l)(e,t,new Date((new Date).getTime()+18e5))),t},s=(e,t)=>{const n=(new Date).getTime()+18e5;Object(r.l)(e,t,new Date(n)),a(e,t,n)},u={name:"last_template_name",get:()=>c(u.name),set:e=>{s(u.name,e)}},d={name:"latest_referrer",get:()=>c(d.name),set:e=>{s(d.name,e)}},l={name:"last_land_url",get:()=>c(l.name),set:(e,t)=>{if(Object(r.i)())return;const n=e.sessionId.isNew;if(Object(r.g)()&&!n)return;let i=l.get(),o=u.get(),a=d.get();const c=Object(r.f)(document.referrer),m=location.host,f=c&&m&&c!==m,_=c===m&&"admin"===(document.referrer||"").split("/")[3],g=!document.referrer;var p,h;(f||_||g||n&&c===m)&&(i=location.href,o=(null===(p=C_SETTINGS.meta)||void 0===p||null===(h=p.page)||void 0===h?void 0:h.template_name)||"",a=document.referrer);i&&s(l.name,i),o&&u.set(o),a&&d.set(a)}},m=()=>{let e=SHOP_PARAMS.fbq_pv_event_id;return e||(e=(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString(),Object.defineProperty(SHOP_PARAMS,"fbq_pv_event_id",{configurable:!1,get:()=>e,set:()=>{console.log("[golden] SHOP_PARAMS.fbq_pv_event_id çæåä¸å
许修æ¹")}})),e},f=()=>{const e=new URLSearchParams(window.location.search);return["utm_source","utm_medium","utm_campaign","utm_term","utm_content"].map(t=>{const n=e.get(t);return n?`${t}=${encodeURIComponent(n)}`:null}).filter(e=>null!==e).join("&")};function _(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,g(r.key),r)}}function g(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}const p="image",h="beacon",v="event_info",S="base_property",b="extra_properties";let w=function(e,t){return n=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.track=this.track.bind(this),this.distinct_id="",this.trackParams={$screen_height:Number(screen.height)||0,$screen_width:Number(screen.width)||0,$referrer:document.referrer,$referrer_host:document.referrer?document.referrer.split("/")[2]:"",$title:document.title,$url:()=>location.href,$url_path:location.pathname},this.eventInfo={},this.tempTrackParams={}},(r=[{key:e,value:function(e,t){return navigator.sendBeacon(this.getServerUrlWithEvent_(t),this.get
1709SendData_(e))}},{key:t,value:function(e,t){const n=document.createElement("img");return n.width=1,n.height=1,n.src=this.getSendUrl_(this.getServerUrlWithEvent_(t),e),!0}},{key:"getSendUrl_",value:function(e,t){const n=this.base64Encode_(t),r="crc="+this.hashCode_(n);return-1!==e.indexOf("?")?e+"&data="+encodeURIComponent(n)+"&ext="+encodeURIComponent(r):e+"?data="+encodeURIComponent(n)+"&ext="+encodeURIComponent(r)}},{key:"getSendData_",value:function(e){const t=this.base64Encode_(e),n="crc="+this.hashCode_(t);return"data="+encodeURIComponent(t)+"&ext="+encodeURIComponent(n)}},{key:"base64Encode_",value:function(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode("0x"+t)})))}},{key:"hashCode_",value:function(e){if("string"!=typeof e)return 0;var t=0;if(0==e.length)return t;for(var n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t&=t;return t}},{key:"getProperties_",value:function(e,t){let n=Object.assign({},this.trackParams,this.getEventInfo(e),this.tempTrackParams,t);for(const e in n){let t=n[e];t instanceof Function&&(t=t()),n[e]=t}return n}},{key:"getDistinctId_",value:function(){return this.distinct_id||(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString()}},{key:"getTrackId_",value:function(){return Number(String(Math.random()).slice(2,5)+String(Math.random()).slice(2,4)+String((new Date).getTime()).slice(-4))}},{key:"clearTemp_",value:function(){this.tempTrackParams={}}},{key:"track",value:function(e,t){const n={distinct_id:this.getDistinctId_(),_track_id:this.getTrackId_(),type:"track",event:e,properties:this.getProperties_(e,t)};n.properties.client_id||(n.properties.client_id="2");const r=JSON.stringify(n);this[this.getSendType_()](r,e)||this[p](r,e),this.clearTemp_()}},{key:"getSendType_",value:function(){return this.sendType_||("object"==typeof navigator&&"function"==typeof navigator.sendBeacon?this.sendType_=h:this.sendType_=p),this.sendType_}},{key:"getServerUrl_",value:function(){if(!this.serverUrl_){let e=window.C_SETTINGS.sa_server_url;this.getSendType_()===h&&(e=e.replace("/sa?","/beacon/sa?")+"&gzip=0"),this.serverUrl_=e.replace(/\/sa$/,"/sa.gif").replace(/(\/sa)(\?[^\/]+)$/,"/sa.gif$2")}return this.serverUrl_}},{key:"getServerUrlWithEvent_",value:function(e){let t=this.getServerUrl_();if(e){const n=-1!==t.indexOf("?")?"&":"?";t=t+n+"event="+encodeURIComponent(e)}return t}},{key:"getEventInfo",value:function(e){const t=this.eventInfo[e];return t?0===Object.keys(t).length?{}:{[v]:JSON.stringify(t)}:{}}},{key:"registerPage",value:function(e,t=!1){t?this.tempTrackParams=e:this.trackParams=Object.assign({},this.trackParams,e||{})}},{key:"registerPageOnce",value:function(e){this.tempTrackParams={...this.tempTrackParams,...e}}},{key:"registerBaseInfo",value:function(e,t){if(!e||!t)return;let n=(this.eventInfo[e]||{})[S];this.eventInfo[e]={...this.eventInfo,[S]:Object.assign({},n||{},t||{})}}},{key:"registerExtraInfo",value:function(e,t,n){if(!e||null==t||!t.function_name)return;let r=(this.eventInfo[e]||{})[b]||[];r=r.filter(e=>e.function_name!==t.function_name),n||r.push({...t}),this.eventInfo[e]={...this.eventInfo[e]||{},[b]:r}}},{key:"identify",value:function(e){this.distinct_id=e}}])&&_(n.prototype,r),i&&_(n,i),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,i}(h,p);var y=n(2),T=n(3);const k=function(){var e;const t=((null===(e=C_SETTINGS.theme)||void 0===e?void 0:e.merchant_theme_name)||"").replace(/\s/g,"");return{Blackwind:"BlackWind",SnowinSummer:"SnowInSummer","Amazing-BuyonAmazon":"Amazing"}[t]||t},O=function(){let e="";try{e=window.ORDER&&window.ORDER.checkout_page_type||("string"==typeof(window.ORDER&&window.ORDER.config)?JSON.parse(window.ORDER.config).page_type:"")}catch(e){}return e},j=e=>{var t;window.sa=new w,window.sa.registerPage((({initCookieResult:e})=>{var t,n,o,a,c,s,_,g,p,h,v,S,b;return{platform:"shop",client:3==Object(r.c)()?"pc":"mobile",client_id:function(){return Object(y.a)()||"1"},session_id:Object(y.f)(),new_session:e.sessionId.isNew?1:0,store_id:(null===(t=C_SETTINGS.shop)||void 0===t?void 0:t.shop_id)||"",store_tz:(null===(n=C_SETTINGS.shop)||void 0===n?void 0:n.time_zone)||"",theme_name:k(),theme_version:(null===(o=C_SETTINGS.theme)||void 0===o?void 0:o.theme_version_id)||"",template_name:(null===(a=C_SETTINGS.meta)||void 0===a||null===(c=a.page)||void 0===c?void 0:c.template_name)||"",template_type:(null===(s=C_SETTINGS.meta)||void 0===s||null===(_=s.page)||void 0===_?void 0:_.template_type)||"",root_url:(null===(g=C_SETTINGS.routes)||void 0===g?void 0:g.root)||"",user_agent:navigator.userAgent,env_tag:[Object(y.b)("awesomeab")].filter(
1709Boolean).join(","),c_id:Object(y.b)("_c_id"),tracking_consent:function(){return Object(y.b)("_tracking_consent")},is_new_client:Object(y.e)(),event_id:m(),connection_type:navigator.connection&&navigator.connection.effectiveType,rtt:navigator.connection&&navigator.connection.rtt,downlink:navigator.connection&&navigator.connection.downlink,checkout_step:-1!=location.href.indexOf("/thank_you")?"checkout_result":window.ORDER&&window.ORDER.step,checkout_page_type:O(),AD_ttc:Object(y.g)(),AD_epik:function(){return Object(y.c)()},login_customer_id:(null===(p=C_SETTINGS.customer)||void 0===p?void 0:p.customer_id)||"",customer_email:(null===(h=C_SETTINGS.customer)||void 0===h?void 0:h.customer_email)||"",resource_id:(null===(v=C_SETTINGS.meta)||void 0===v||null===(S=v.page)||void 0===S?void 0:S.resource_id)||"",[atob("c2hvcGxhenphX2FfcA==")]:f()||Object(y.b)(i.a.UTM_PARAMS)||Object(y.b)(i.a.UTM)||"",market_id:(null===(b=C_SETTINGS.market)||void 0===b?void 0:b.market_id)||"",last_land_url:l.get(),last_template_name:u.get(),$latest_referrer:d.get(),event_time:function(){return Date.now()}}})({initCookieResult:e})),window.sa.identify((null===(t=C_SETTINGS.customer)||void 0===t?void 0:t.customer_id)||Object(y.a)())};var I;(()=>{const e=Object(y.h)();((e,t="v2")=>{l.set(e,t)})(e),j(e),Object(T.a)()})(),null===(I=window.sa)||void 0===I||I.track("$pageview")}]);/* golden-top-end */ 1710</script>
1710 1711 1712 1713<!-- meta_sdk start --->
1714<script> 1715try{(function(){!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version="2.0";n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,document,"script","https://connect.facebook.net/en_US/fbevents.js");var key1=atob("U0hPUF9QQVJBTVM=");var key2="C_SETTINGS";var id=new Date().getTime().toString()+(Math.random().toFixed(2)*400+100).toString();var addPvEId=function(key){var _window_key;return window[key]=Object.assign(window[key]||{},{fbq_pv_event_id:((_window_key=window[key])===null||_window_key===void 0?void 0:_window_key.fbq_pv_event_id)||id})};addPvEId(key1);addPvEId(key2)})()}catch(e){} 1716</script>
1716 1717<!-- meta_sdk end ---> 1718<!-- track_config start -->
1719<script> 1720try{(function(){var a="AD_TRACK_ASSETS";var c="track_config";var r={"meta":{"pixels":[{"pixel":"709442593435299","delay_second":0,"purchase_total_price":true,"exclude_freight_insurance":false}]}};var n=window;var t;Object.assign(n[a]||(n[a]={}),(t={},t[c]=n[a][c]?Object.assign(n[a][c],r):r,t))})()}catch(a){} 1721</script>
1721 1722<!-- track_config end --> 1723
1724<script type="text/javascript">Object.assign(window.AD_TRACK_ASSETS || (window.AD_TRACK_ASSETS={}),{"golden_world":"golden_world.PSV6FO2D.js"});</script>
1724 1725</head> 1726 <body class="nova template-cart m-0 type-text-font-family leading-1.3" id="nova-theme"> 1727 <style> 1728 .back-to-top { 1729 position: fixed; 1730 right: 16px; 1731 bottom: 34px; 1732 width: 50px; 1733 height: 50px; 1734 background-color: rgba(41,41,41,.4);; 1735 transition: transform 300ms cubic-bezier(0.455, 0.03, 0.515, 0.955); 1736 z-index: calc(var(--z-index-fixed) + 5); 1737 } 1738 .back-to-top[show] { transform: translateY(0); } 1739 @media (min-width: 960px) { 1740 .back-to-top { 1741 right: 32px; 1742 bottom: 24px; 1743 } 1744 } 1745 </style> 1746 <div class="hidden back-to-top flex items-center justify-center rounded-full cursor-pointer shadow" id="top-button" @tap="nova-theme.scrollTo(position='top');"> 1747 <svg class="" width="16" height="18" fill="#FFF" xmlns="http://www.w3.org/2000/svg"><g><path d="M7.58 4.333a.6.6 0 0 1 .848 0l7.283 7.283a.3.3 0 0 1 0 .425l-.764.763a.3.3 0 0 1-.424 0L8.85 7.131V17.7a.3.3 0 0 1-.3.3H7.47a.3.3 0 0 1-.3-.3V7.118l-5.686 5.686a.3.3 0 0 1-.424 0l-.764-.764a.3.3 0 0 1 0-.424l7.283-7.283ZM0 .3A.3.3 0 0 1 .3 0h15.4a.3.3 0 0 1 .3.3v1.06a.3.3 0 0 1-.3.3H.3a.3.3 0 0 1-.3-.3V.3Z"/></g></svg> 1748 </div> 1749 <spz-observer layout="logic" value="500" @scrollexceedboundary="top-button.toggleClass(class='hidden', force=false);" @scrollnotexceedboundary="top-button.toggleClass(class='hidden', force=true);" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer> 1750 <template id="product-snippet-template"> 1751 <div> 1752 ${(function(){ 1753 const get_random_six_digits = () => { 1754 return Math.random().toString().slice(-6) 1755 }; 1756 const wholesale_enabled = false; 1757 const setting_product_image_display = "100%"; 1758 const product_image = data.image; 1759 const secondary_image = data.secondImage; 1760 const image_width = product_image.width; 1761 let image_height = product_image.height; 1762 if(setting_product_image_display == '100%'){ 1763 image_height = image_width 1764 }else if(setting_product_image_display == '133.33%'){ 1765 image_height = image_width * 1.3333; 1766 }; 1767 const product_image_hover_on = true && !!secondary_image.src; 1768 const has_save_label = true && ((+data.compare_at_price) > (+data.price)); 1769 const is_single_variant = data.variants.length == 1; 1770 const min_price_variant_href = (data.min_price_variant && data.min_price_variant.available) ? data.min_price_variant.withinUrl : data.withinUrl; 1771 const retail_price_max = data.retail_price_max || data.compare_at_price_max; 1772 const THUMBNAILS_MAX_SIZE = 3; 1773 const thumbnails = data.thumbVariants.slice(0, THUMBNAILS_MAX_SIZE); 1774 const image_wrap_id = 'image_wrap_' + get_random_six_digits(); 1775 const image_carousel_id = 'image_carousel_' + get_random_six_digits(); 1776 const thumbnails_selector_id = 'thumbnails_selector_' + get_random_six_digits(); 1777 const form_id = 'form_' + get_random_six_digits(); 1778 const mixed_wholesale = data.mixed_wholesale; 1779 return ` 1780 <div class="product-snippet__img-wrapper relative" id="${image_wrap_id}"> 1781 <a 1782 class="product-snippet__img-link relative block overflow-hidden" 1783 spz-href="${data.withinUrl}" 1784 ${product_image_hover_on?"has-secondary-image":""} 1785 > 1786 <spz-img 1787 class="product-snippet__img product-snippet__img_main" 1788 layout="responsive" 1789 width="${image_width}" 1790 height="${image_height}" 1791 src="${product_image.src}" 1792 alt="${product_image.alt}" 1793 object-fit="cover" 1794 auto-fit 1795 ></spz-img> 1796 <spz-carousel 1797 class="product-snippet__img product-snippet__img_carousel" 1798 id="${image_carousel_id}" 1799 layout="responsive" 1800 width="${image_width}" 1801 height="${image_height}" 1802 initial-slide="0" 1803 slide 1804 effect="fade" 1805 spz-if="${thumbnails.length>0}" 1806 > 1807 <spz-img 1808 spz-if="!!item.image" 1809 layout="responsive" 1810 width="${image_width}" 1811 height="${image_height}" 1812 src="${item.image && item.image.src || ''}" 1813 alt="${item.image && item.image.alt || ''}" 1814 object-fit="cover" 1815 auto-fit 1816 spz-for="(item, index) in thumbnails" 1817 key="index" 1818 ></spz-img>
1819 </spz-carousel> 1820 <spz-img 1821 class="product-snippet__img-secondary absolute top-0" 1822 layout="responsive" 1823 width="${image_width}" 1824 height="${image_height}" 1825 src="${secondary_image.src || ''}" 1826 alt="${secondary_image.alt}" 1827 object-fit="cover" 1828 auto-fit 1829 ></spz-img> 1830 </a> 1831 <button 1832 type="button" 1833 class="product-snippet__quick-shop-icon" 1834 data-track-product-id="${data.id}" 1835 data-track-position="" 1836 data-track="quick_shop" 1837 @tap="quick-shop.open;quick-shop-render.render(src='/api/products/${data.id}');" 1838 spz-if="${data.available && !(!wholesale_enabled && is_single_variant)}" 1839 > 1840 <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg> 1841 </button> 1842 <spz-product-form 1843 product-id="${data.id}" 1844 layout="container" 1845 @atcSuccess="" 1846 @atcError="theme-toast.showToast(content=event.message);" 1847 spz-if="${data.available && !wholesale_enabled && is_single_variant}" 1848> 1849 <form> 1850 <input name="variant_id" type="hidden" value="${data.variants[0].id}"> 1851 <button 1852 type="button" 1853 class="product-snippet__quick-shop-icon" 1854 role="addToCart" 1855 data-quick-shop="${data.handle}" 1856 data-track-product-id="${data.id}" 1857 data-track="click" 1858 data-track-content="add_to_cart" 1859 data-track-source="quick_shop" 1860 > 1861 <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg> 1862 </button> 1863 </form> 1864</spz-product-form> 1865 <a 1866 class="product_snippet__label" 1867 label-type="${data.available?'save':'sold_out'}" 1868 spz-href="${min_price_variant_href}" 1869 spz-if="${!data.available||has_save_label}" 1870 > 1871 ${ 1872 data.available 1873 ? 1874 1875`${ 1876 (+data.compare_at_price > +data.price) 1877 ? `Save 1878 <spz-currency value="${ data.compare_at_price-data.price }" layout="container"></spz-currency> 1879 ` 1880 : '' 1881 }` 1882: "Sold out" 1883 } 1884 </a> 1885</div> 1886 <div spz-if="${mixed_wholesale}"> 1887 <style> 1888 .mixed_wholesale_label { 1889 padding: 2px 4px; 1890 } 1891 1892 .mixed_wholesale_tooltip .i-spzhtml-tooltip-arrow:before, 1893 .mixed_wholesale_tooltip .i-spzhtml-tooltip-inner { 1894 background: var(--color-body-bg); 1895 color: var(--color-body-text); 1896 } 1897 1898 .mixed_wholesale_tooltip { 1899 max-width: 100%; 1900 border-radius: 4px; 1901 box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1), 0px 2px 10px rgba(0, 0, 0, 0.1); 1902 } 1903 1904 @media (min-width: 960px) { 1905 .mixed_wholesale_tooltip { 1906 max-width: 450px; 1907 } 1908 } 1909</style> 1910<div class="mt-2 lg:mt-3 mixed_wholesale_label inline-flex color-custom-label-text bg-custom-label text-xs rounded" id="mixed-${image_wrap_id}"> 1911 Mixed Lot 1912</div> 1913<spz-tooltip layout="logic" content="You can enjoy the wholesale price when you add up to {{count}} pieces of current goods and any goods that support "Mixed Lot" in the store." interact="hover" for="mixed-${image_wrap_id}" placement="bottom" overlay-class="mixed_wholesale_tooltip"> 1914</spz-tooltip> 1915 </div> 1916 <h3 1917 class="product-snippet__title dj_skin_product_list_title m-0 mt-2 p-0 body-base leading-1.25 type-heading-font-family product-title-color "> 1918 <a class="text-inherit no-underline" spz-href="${data.withinUrl}"> 1919 ${data.title} 1920 </a> 1921 </h3> 1922 <a 1923 class="product-snippet__price-wrapper flex items-center flex-wrap mt-2 text-inherit no-underline" 1924 spz-href="${min_price_variant_href}" 1925 >
1926 <span class="product-snippet__price ${data.price_min != data.price_max ? 'product-snippet__from-price' : ''}"> 1927 ${ 1928 data.price_min != data.price_max 1929 ? `from 1930 <spz-currency value="${data.price}" layout="container"></spz-currency> 1931 ` 1932 : ` 1933 <spz-currency value="${data.price}" layout="container"></spz-currency> 1934 ` 1935 } 1936 </span> 1937 <spz-currency class="product-snippet__compare-at-price" value="${data.compare_at_price}" layout="container" spz-if="${+data.compare_at_price>+data.price}"></spz-currency> 1938 </a> 1939 <spz-selector 1940 id="${thumbnails_selector_id}" 1941 layout="container" 1942 class="product-snippet__thumbnails flex items-center flex-wrap mt-2" 1943 @mouseover="${thumbnails_selector_id}.toggle(option=event.targetOption,value=true);${image_carousel_id}.goToSlide(index=event.targetOption);${image_wrap_id}.toggleClass(class='show_carousel',force=true)" 1944 spz-if="${thumbnails.length>0}" 1945 > 1946 <a 1947 spz-if="!!item.image" 1948 class="product-snippet__thumbnails-item flex cursor-pointer" 1949 spz-href="${item.withinUrl}" 1950 spz-for="(item, index) in thumbnails" 1951 key="index" 1952 option="${index}" 1953 > 1954 <spz-img 1955 layout="fixed" 1956 width="28" 1957 height="28" 1958 src="${item.image && item.image.src || ''}" 1959 alt="${item.image && item.image.alt || ''}" 1960 object-fit="cover" 1961 auto-fit 1962 ></spz-img> 1963 </a> 1964 <a spz-href="${data.withinUrl}" class="product-snippet__thumbnails-item text-xs text-inherit no-underline" spz-if="${data.remainInvisibleThumbCount>0}"> 1965 +${data.remainInvisibleThumbCount} 1966 </a> 1967 </spz-selector> 1968 ` 1969 })()} 1970 </div> 1971</template> 1972<div class="page_container"> 1973 <style type="text/css"> 1974 [data-section-id=announcement] { 1975 position: relative; 1976 z-index: 1030; 1977 background: var(--color-announcement-bg); 1978 color: var(--color-announcement-text); 1979 } 1980 [data-section-id=announcement].header_mask_open{ 1981 z-index: unset; 1982 } 1983 1984 .announcement-content { 1985 cursor: pointer; 1986 } 1987 1988 .announcement-content[carousel_off] { 1989 pointer-events: none; 1990 } 1991</style><div id="shoplaza-section-announcement" class="shoplaza-section" data-section-id="announcement" data-section-type="announcement" data-section-style=""> 1992 1993<div class="page-container relative"> 1994 <spz-carousel ssr class="announcement-content md:hidden mx-auto text-center i-spzhtml-layout-container" layout="container" carousel_off advance-count="1" i-spzhtml-layout="container"> 1995 <div class="break-all py-2 mce-content"><p>âFree shipping on order over $50.00</p></div> 1996 </spz-carousel> 1997 <spz-carousel ssr class="announcement-content lg:hidden mx-auto text-center i-spzhtml-layout-container" layout="container" carousel_off i-spzhtml-layout="container"> 1998 <div class="break-all w-full py-2 flex-shrink-0 mce-content"><p>âFree shipping on order over $50.00</p></div> 1999 </spz-carousel> 2000 </div> 2001</div> 2002 <div id="shoplaza-section-header" class="shoplaza-section" data-section-id="header" data-section-type="header" data-section-style=""> 2003<style> 2004 .header__desktop, 2005 .header__mobile { 2006 color: var(--color-header-text); 2007 position: relative; 2008 z-index: 20; 2009 } 2010 2011 .header__layout { 2012 background: var(--color-header-bg); 2013 } 2014 2015 .header-shadow{ 2016 box-shadow: 0 6px 10px -3px rgba(41, 41, 41, 0.08); 2017 } 2018 2019 .header-bg { 2020 background: var(--color-header-bg); 2021 } 2022 2023 .header__menu-item-tag{ 2024 margin-top: -6px; 2025 margin-left: 2px; 2026 padding: 2px 4px; 2027 font-size: 12px; 2028 line-height: 1; 2029 border-radius: 2px; 2030 } 2031 [data-section-id="header"]{ 2032 pointer-events: none; 2033 } 2034</style> 2035 2036<style> 2037 2038 2039 @media (min-width: 960px) { 2040 2041 [data-section-id="header"]{ 2042 position: sticky; 2043 top: 0; 2044 z-index: 1021; 2045 } 2046 2047 } 2048 2049 2050 @media (max-width: 959.98px) { 2051 2052 [data-section-id="header"]{ 2053 position: sticky; 2054 top: 0; 2055 z-index: 1021; 2056 } 2057 2058 } 2059 2060</style> 2061 2062<style> 2063 /* layout left */ 2064 .header__desktop[data-layout="left"] .header__logo { 2065 flex: 1; 2066 order: 1; 2067 } 2068 2069 .header__desktop[data-layout="left"] .header__icons { 2070 order: 4; 2071 } 2072 2073 .header__desktop[data-layout="left"] .header__menu-sticky, 2074 .header__desktop[data-layout="center"] .header__menu-sticky { 2075 display: none; 2076 order: 2; 2077 } 2078 2079 /* layout center */ 2080 .header__desktop[data-layout="center"] .header__logo { 2081 order: 2; 2082 display: flex; 2083 justify-content: center; 2084 } 2085 2086 .header__desktop[data-layout="center"] .header__search { 2087 flex: 1; 2088 order: 1; 2089 } 2090 2091 /* layout menu_left_logo_center */ 2092 .header__desktop[data-layout="menu_left_logo_center"] .header__logo { 2093 order: 2; 2094 display: flex; 2095 justify-content: center; 2096 width: 200px; 2097 margin-left: 50px; 2098 margin-right: 50px; 2099 } 2100 2101 /* layout logo_left_menu_left */ 2102 .header__desktop[data-layout="logo_left_menu_left"] .header__logo { 2103 order: 0; 2104 display: flex; 2105 margin-right: 24px; 2106 } 2107 2108 .header__desktop[data-layout="logo_left_menu_left"] .header__icons { 2109 order: 4; 2110 justify-content: end; 2111 } 2112 2113 .header__desktop[data-layout="center"] .header__icons, 2114 .header__desktop[data-layout="menu_left_logo_center"] .header__icons { 2115 flex: 1; 2116 order: 4; 2117 justify-content: end; 2118 } 2119 2120 .header__desktop[data-layout="left"] .header__menu-sticky, 2121 .header__desktop[data-layout="center"] .header__menu-sticky, 2122 .header__desktop[data-layout="logo_left_menu_left"] .header__menu-sticky { 2123 padding-left: 28px; 2124 padding-right: 28px; 2125 } 2126 2127 .header__desktop[data-layout="logo_left_menu_left"] .header__menu-sticky .header__menu-item-sub, 2128 .header__desktop[data-layout="menu_left_logo_center"] .header__menu-sticky .header__menu-item-sub { 2129 max-width: 425px; 2130 } 2131 2132 .header__desktop[data-layout="left"] .header__menu-wrapper .header__menu, 2133 .header__desktop[data-layout="center"] .header__menu-wrapper .header__menu{ 2134 padding: 6px 0 0 0; 2135 } 2136 .header__desktop[data-layout="left"] .header__menu-wrapper .header__menu-item-sub, 2137 .header__desktop[data-layout="center"] .header__menu-wrapper .header__menu-item-sub{ 2138 padding-bottom: 17px; 2139 } 2140 2141 2142</style> 2143 2144<style> 2145 2146 @media (min-width: 960px) { 2147 .header__scroll_hide, 2148 .header__scroll_hide ~ *{ 2149 transition: transform 0.3s; 2150 } 2151 #shoplaza-section-header.show_shadow .header__desktop .header__menu-wrapper{ 2152 box-shadow: 0 6px 10px -3px rgba(41, 41, 41, 0.08); 2153 } 2154 body.header_scroll #shoplaza-section-header{ 2155 box-shadow: none; 2156 } 2157 .header_scroll .header__desktop[data-layout="center"] .header__search, 2158 .header_scroll .header__desktop[data-layout="center"] .header__icons, 2159 .header_scroll .header__desktop[data-layout="left"] .header__search, 2160 .header_scroll .header__desktop[data-layout="left"] .header__icons 2161 { 2162 flex-grow: unset; 2163 } 2164 .header_scroll .header__desktop[data-layout="center"] .header__logo, 2165 .header_scroll .header__desktop[data-layout="left"] .header__logo{ 2166 flex-grow: unset; 2167 order: 1; 2168 margin-right: 20px; 2169 } 2170 .header_scroll .header__desktop[data-layout="center"] .header__scroll_hide, 2171 .header_scroll .header__desktop[data-layout="left"] .header__scroll_hide{ 2172 transform: translateY(-100%); 2173 } 2174 .header_scroll .header__desktop[data-layout="center"] .header__scroll_hide ~ *, 2175 .header_scroll .header__desktop[data-layout="left"] .header__scroll_hide ~ *{ 2176 transform: translateY(calc(-1 * var(--header-scroll-hide-height-pc))); 2177 } 2178 .header_scroll .header__desktop[data-layout="center"] .header__menu-sticky, 2179 .header_scroll .header__desktop[data-layout="left"] .header__menu-sticky{ 2180 display: block; 2181 flex: 1; 2182 } 2183 .header_scroll .header__desktop[data-layout="center"] .header__menu-content, 2184 .header_scroll .header__desktop[data-layout="left"] .header__menu-content{ 2185 visibility: hidden; 2186 } 2187 } 2188 2189 2190 @media (max-width: 959.98px) { 2191 .header__scroll_hide { 2192 transition: transform .5s; 2193 } 2194 2195 #shoplaza-section-header.show_shadow .header__mobile .header__fixed-top { 2196 box-shadow: 0 6px 10px -3px rgba(41, 41, 41, 0.08); 2197 } 2198 2199 .header_scroll .header__scroll_hide.non-sticky { 2200 transform: translateY(-100%); 2201 } 2202 2203 .header__icons.show-menu-icon .header__account, 2204 .header__icons:not(.show-menu-icon) .header__icon-menu--force, 2205 #header-search-container-mobile:not(.show) { 2206 display: none; 2207 } 2208 } 2209 2210</style> 2211 2212<style> 2213 .header__logo{ 2214 margin: 0; 2215 font-size: 0; 2216 } 2217 .header__logo-title{ 2218 max-width: 185px; 2219 overflow-wrap: break-word; 2220 font-size: 24px; 2221 line-height: 38px; 2222 font-weight: 600; 2223 color: inherit; 2224 overflow: hidden; 2225 text-decoration-line: none; 2226 } 2227 [data-section-id="header"] .image_width { 2228 width: 140px; 2229 } 2230 @media (min-width: 960px) { 2231 .header__logo{ 2232 padding: 18px 0; 2233 } 2234 .header__logo-title{ 2235 max-width: 380px; 2236 font-size: 30px; 2237 line-height: 36px; 2238 font-weight: 500; 2239 } 2240 [data-section-id="header"] .image_width { 2241 width: 190px; 2242 } 2243 } 2244 @media (max-width: 959.98px) { 2245 .header__logo{ 2246 flex: 1; 2247 } 2248 } 2249</style> 2250 2251<style> 2252 .header__account, 2253 .header__cart, 2254 .header__drawer_icon{ 2255 2256 margin-left: 22px; 2257 2258 } 2259 .header__account_dropdown { 2260 margin: 6px; 2261 } 2262 2263 .header__account_dropdown .i-spzhtml-dropdown-container { 2264 background-color: transparent; 2265 } 2266 2267 .header__account_dropdown_content{ 2268 width: 146px; 2269 padding: 15px; 2270 font-size: 14px; 2271 line-height: 18px; 2272 color: var(--color-menu-item-text); 2273 background-color: var(--color-header-bg); 2274 z-index: var(--z-index-dropdown); 2275 transition: all 200ms; 2276 border-radius: 4px; 2277 } 2278 .header__account_dropdown_content > li{ 2279 cursor: pointer; 2280 } 2281 .header__account_dropdown_content > li:hover{ 2282 color: var(--color-menu-item-text-70); 2283 } 2284 .header__account_dropdown_content > li + li{ 2285 margin-top: 18px; 2286 } 2287 .header__account_dropdown_content a{ 2288 color: inherit; 2289 text-decoration: none; 2290 } 2291 .header__cart-count{ 2292 min-height: 18px; 2293 min-width: 18px; 2294 padding: 3px 4px; 2295 top: -18px; 2296 2297 right: -4px; 2298 2299 font-size: 12px; 2300 color: var(--color-cart-dot-text); 2301 background-color: var(--color-cart-dot-bg); 2302 } 2303 2304 .header-cart-back-btn { 2305 margin-right: 2px; 2306 } 2307 2308 html[dir="rtl"] .header-cart-back-btn { 2309 margin-left: 2px; 2310 margin-right: 0; 2311 transform: rotate(180deg); 2312 } 2313 2314 @media (min-width: 960px) { 2315 .header__account, 2316 .header__cart, 2317 .header__plugin-container > *{ 2318 margin-left: 30px; 2319 margin-right: unset; 2320 } 2321 .header__account_dropdown_content{ 2322 visibility: hidden; 2323 position: absolute; 2324 margin-top: 10px; 2325 2326 margin-left: -50px; 2327 2328 width: 160px; 2329 } 2330 .header__account:hover .header__account_dropdown_content{ 2331 visibility: visible; 2332 } 2333 } 2334</style> 2335<spz-observer layout="logic" value="1" @scrollexceedboundary="shoplaza-section-header.toggleClass(class='show_shadow', force=true);" @scrollnotexceedboundary="shoplaza-section-header.toggleClass(class='show_shadow', force=false);" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer> 2336 <spz-observer layout="logic" @scrolldown="nova-theme.toggleClass(class='header_scroll', force=true);header-menu-top.updateMoreLink" @scrollup="nova-theme.toggleClass(class='header_scroll', force=false);" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer> 2337<div class="header_container relative"> 2338 <style> 2339 .header__menu-sticky { 2340 padding-top: 28px; 2341 } 2342 .header__menu-sticky .header__menu-item-sub { 2343 padding-bottom: 28px; 2344 } 2345</style> 2346<div class="header__desktop md:hidden" data-layout="center"> 2347 <div class="header__layout relative z-50 pointer-events-auto"> 2348 <div class="header__layout-content page-container flex items-center direction_ltr_self"> 2349 <h2 class="header__logo flex-shrink-0 type-heading-font-family"> 2350 <a class="image_width block md:hidden" href="/"> 2351 <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img> 2352 </a> 2353 <a class="image_width block lg:hidden" href="/"> 2354 <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img> 2355 </a> 2356</h2> 2357<style> 2358 .header__search button, 2359 .header__search input{ 2360 border: none; 2361 outline: none; 2362 } 2363 .header__search-btn, 2364 .header__search-icon{ 2365 background: transparent; 2366 } 2367 .header__search { 2368 display: flex; 2369 align-items: center; 2370 flex-shrink: 0; 2371 } 2372 .header__search-btn { 2373 padding: 0; 2374 margin: 0; 2375 font-size: 0; 2376 color: inherit; 2377 cursor: pointer; 2378 } 2379 .header__search-form{ 2380 min-height: 40px; 2381 } 2382 .header__search-input{ 2383 font-size: 13px; 2384 line-height: 16px; 2385 color: var(--color-header-search-text); 2386 background-color: var(--color-header-search-bg); 2387 padding: 12px 16px 12px 36px; 2388 border-radius: 2px 0 0 2px; 2389 } 2390 .header__search-input:not(:placeholder-shown) ~ .header__search-icon-close{ 2391 display: flex; 2392 } 2393 .header__search-icon{ 2394 left: 10px; 2395 top: 50%; 2396 transform: translateY(-50%); 2397 color: var(--color-header-search-text-50); 2398 } 2399 .header__search-icon-close{ 2400 top: 50%; 2401 transform: translateY(-50%); 2402 height: 18px; 2403 width: 18px; 2404 color: #fff; 2405 background: #C0C0C0; 2406 right: 10px; 2407 } 2408 .header__search-icon:hover, 2409 .header__search-icon-close:hover{ 2410 color: var(--color-header-search-text); 2411 } 2412 .header__search-submit-btn{ 2413 padding: 11px 16px; 2414 font-size: 14px; 2415 line-height: 18px; 2416 color: var(--color-header-search-btn-text); 2417 background-color: var(--color-header-search-btn-bg); 2418 border-radius: 0 2px 2px 0; 2419 } 2420 @media (max-width: 959.98px) { 2421 .header__search-form{ 2422 width: 100% 2423 } 2424 } 2425 @media (min-width: 960px) { 2426 .header__search-form{ 2427 margin: 18px 0; 2428 } 2429 .header__search-input{ 2430 width: 232px; 2431 border-radius: 2px; 2432 } 2433 .header__desktop[data-layout="left"] .header__search-input{ 2434 width: 278px; 2435 } 2436 } 2437</style> 2438 2439<div class="header__search" id=""> 2440 <button 2441 type="button" 2442 class="header__search-btn" 2443 @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_search_sidebar.open()" 2444 > 2445 <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4
24450 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z" fill="currentColor"/></svg> 2446 </button> 2447 </div> 2448<spz-observer layout="logic" target="header__plugin-container" @childupdated="header-menu-top.updateMoreLink" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer> 2449<div class="header__icons flex-shrink-0 flex items-center" > 2450 <div class="header__plugin-container md:hidden flex items-center" id="header__plugin-container"> 2451 <div class="empty-hidden plugin__translate-header"></div> 2452 <div class="empty-hidden plugin__currency"></div> 2453 </div> 2454 2455 <div class="header__account relative text-0 md:hidden "> 2456 <i class="cursor-pointer" ><svg class=" " width="26" height="26" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h26v26H0z"/><g fill-rule="evenodd" clip-rule="evenodd" fill="currentColor"><path d="M13.11 1a6.11 6.11 0 1 1 0 12.22 6.11 6.11 0 0 1 0-12.22Zm0 1.6a4.51 4.51 0 1 0 0 9.02 4.51 4.51 0 0 0 0-9.02ZM17.333 15A6.667 6.667 0 0 1 24 21.667V24a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2.333A6.667 6.667 0 0 1 8.667 15h8.666Zm0 1.6H8.667a5.067 5.067 0 0 0-5.062 4.847l-.005.22V23.4h18.8v-1.733a5.067 5.067 0 0 0-4.847-5.062l-.22-.005Z"/></g></svg></i> 2457 <ul class="header__account_dropdown_content list-none header-shadow"> 2458 <li><a href="/account/login">Log in</a></li> 2459 <li><a href="/account/register">Create an account</a></li> 2460 </ul> 2461</div> 2462 <a class="header__cart relative flex justify-end items-center text-0 text-inherit cursor-pointer no-underline" > 2463 <i> 2464 <svg class="" width="28" height="28" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h28v28H0z"/><g fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.8 2.2a.8.8 0 1 0 0 1.6h2.803l1.542 14.541a1 1 0 0 0 .995.895h15.055a1 1 0 0 0 .982-.811l2.105-10.91a1 1 0 0 0-.982-1.189H6.48l-.432-4.081a.05.05 0 0 0-.05-.045H1.8Zm4.849 5.726h16.923l-1.873 9.709H7.679l-1.03-9.709Z"/><path d="M10.917 23.62a1.909 1.909 0 1 1-3.818 0 1.909 1.909 0 0 1 3.818 0ZM22.372 23.62a1.91 1.91 0 1 1-3.819 0 1.91 1.91 0 0 1 3.819 0Z"/></g></svg> 2465 </i> 2466 <!-- è´ç©è½¦æ°é --> 2467 <spz-event target-id="header_cart_count_render_pc" target-api="render" event-name="dj.addToCart;dj.cartChange;" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event> 2468 <spz-render id="header_cart_count_render_pc" layout="container" src="/api/cart/count" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 2469 <template> 2470 <div> 2471 <span class="header__cart-count absolute rounded-full leading-none text-center" spz-if="${data.data && data.data.count > 0}">${data.data && data.data.count}</span> 2472 </div> 2473 </template> 2474 </spz-render> 2475 </a> 2476 <i class="header__drawer_icon flex lg:hidden cursor-pointer" @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_drawer.open()"> 2477 <svg class="" width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"><g opacity=".01"><path opacity=".696" fill="currentColor" d="M0 0h28v28H0z"/></g><g fill="currentColor"><path d="M24.17 6.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 0 1 0-1.66h20.34ZM24.17 13.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34ZM24.17 20.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34Z"/></g></svg> 2478 </i> 2479 </div> 2480 <div class="header__menu-sticky flex-1 overflow-hidden"> 2481 <style> 2482 .header__desktop .header__menu{ 2483 background: inherit !important; 2484 } 2485 .header__desktop .header__menu-item{ 2486 padding: 0 18px; 2487 font-size: var(--type-nav-font-size); 2488 } 2489 .header__desktop .header__menu-item:first-child { 2490 margin-left: 0; 2491 } 2492 .header__second_menu-wrapper, 2493 .header__three_menu-wrapper, 2494 .header__more_menu-wrapper{ 2495 z-index: var(--z-index-sticky); 2496 visibility: hidden; 2497 } 2498 .header__menu-item-first:hover .header__second_menu-wrapper, 2499 .header__menu-item-first:hover .header__three_menu-wrapper, 2500 .header__menu-item-first:hover .header__more_menu-wrapper{ 2501 visibility: visible; 2502 } 2503 .header__second_menu-wrapper, 2504 .header__three_menu-wrapper, 2505 .header__more_menu_three{ 2506 overflow: hidden auto; 2507 max-height: calc(var(--window-height) - var(--header-height) - 200px); 2508 } 2509 .header__second_menu-wrapper{ 2510 min-width: 180px; 2511 max-width: 400px; 2512 margin: 0 0 -18px 0; 2513 padding: 25px 18px; 2514 } 2515 .header__second_menu-wrapper li + li{ 2516 margin-top: 18px; 2517 } 2518 .header__three_menu-content{ 2519 display: grid; 2520 grid-template-columns: repeat(4, minmax(0, 1fr)); 2521 margin: 0 -30px; 2522 } 2523 .header__desktop .header__menu-item[data-levels="2"] .header__three_menu-wrapper ul{ 2524 flex-wrap: wrap; 2525 margin-top: -50px; 2526 } 2527 .header__desktop .header__menu-item:not([data-levels="2"]) .header__three_menu-wrapper ul{ 2528 flex-direction: column; 2529 margin-top: -12px; 2530 } 2531 .header__desktop .header__menu-item[data-levels="2"][data-has-product] .header__three_menu-wrapper ul li{ 2532 width: 33.33%; 2533 } 2534 .header__desktop .header__menu-item[data-levels="2"]:not([data-has-product]) .header__three_menu-wrapper ul li{ 2535 width: 25%; 2536 } 2537 .header__desktop .header__menu-item[data-has-product] .header__three_menu-wrapper ul{ 2538 grid-column: span 3 / span 3; 2539 } 2540 .header__desktop .header__menu-item:not([data-has-product]) .header__three_menu-wrapper ul{ 2541 grid-column: span 4 / span 4; 2542 } 2543 .header__desktop .header__menu-item[data-levels="2"] .header__menu-item-second{ 2544 padding: 50px 30px 8px; 2545 font-size: var(--type-nav-font-size); 2546 color: var(--color-header-text); 2547 } 2548 .header__three_menu-wrapper .header__menu-item-last{ 2549 padding: 12px 30px 0; 2550 } 2551 .header__desktop .header__menu-item .header__menu-item-last{ 2552 color: var(--color-header-text-70); 2553 font-size: calc(var(--type-nav-font-size) - 2px); 2554 line-height: 1.4; 2555 } 2556 .header__desktop .header__menu-item .header__menu-item-last:hover { 2557 color: var(--color-header-text); 2558 } 2559 .header__menu_product{ 2560 grid-column: span 1 / span 1; 2561 padding-left: 30px; 2562 padding-right: 30px; 2563 } 2564 .header_menu_hover_animation{ 2565 opacity: 0; 2566 transform: translateY(-12px); 2567 transition: all 200ms; 2568 } 2569 .header__menu-item-first:hover .header_menu_hover_animation{ 2570 opacity: 1; 2571 transform: translateY(0); 2572 } 2573 .header__desktop .header__menu-item-first .header__menu-item-sub::after{ 2574 content: ""; 2575 position: absolute; 2576 left: 0; 2577 bottom: 0; 2578 display: block; 2579 width: 0; 2580 height: 3px; 2581 background-color: var(--color-header-text); 2582 transition: width .2s; 2583 } 2584 .header__desktop .header__menu-item-first:hover .header__menu-item-sub::after{ 2585 width: 100%; 2586 } 2587</style> 2588<style> 2589 .header-menu-container[finish] .header__more_menu-wrapper{ 2590 display: block !important; 2591 position: static !important; 2592 } 2593 .header__more_menu, 2594 .header__more_menu_right{ 2595 display: grid; 2596 } 2597 .header__more_menu{ 2598 grid-template-columns: repeat(4,minmax(0,1fr)); 2599 } 2600 .header__more_menu_right{ 2601 grid-template-columns: repeat(3,minmax(0,1fr)); 2602 } 2603 .header__more_menu [role="tabs"], 2604 .header__more_menu_right .header__menu_product{ 2605 grid-column: span 1/span 1; 2606 } 2607 .header__more_menu_right > ul[data-has-product]{ 2608 grid-column: span 2/span 2; 2609 } 2610 .header__more_menu [role="tabpanel"],
2611 .header__more_menu_right > ul:not([data-has-product]){ 2612 grid-column: span 3/span 3; 2613 } 2614 .header__more_menu{ 2615 line-height: 1.25; 2616 padding-top: 32px; 2617 padding-bottom: 36px; 2618 } 2619 .header__more_menu [role="tab"] + [role="tab"]{ 2620 padding-top: 20px; 2621 } 2622 .header__more_menu_icon{ 2623 transform: rotate(180deg); 2624 transition: all 200ms; 2625 } 2626 .header__more_menu [role="tab"][active] .header__more_menu_icon{ 2627 transform: rotate(0); 2628 } 2629 .header__more_menu_right li { 2630 padding-bottom: 20px; 2631 } 2632 .header__more_menu_right_item{ 2633 padding: 0 30px 8px; 2634 } 2635 .header__more_menu_right_item + .header__more_menu_right_item{ 2636 padding: 12px 30px 0; 2637 } 2638 .header__more_menu_right .header__menu_product{ 2639 padding: 0 30px; 2640 } 2641</style> 2642<spz-menu id="header-menu-top" layout="container" class="header-menu-container type-heading-font-family i-spzhtml-layout-container" i-spzhtml-layout="container"> 2643 <ul class="header__menu flex m-0 p-0 list-none"> 2644 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-1" data-id="80779717" data-levels="0"> 2645 <div class="flex items-start"> 2646 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 2647href="/" >Home</a> 2648 </div> 2649 2650 </li> 2651 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-2" data-id="83743781" data-levels="0"> 2652 <div class="flex items-start"> 2653 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 2654href="/collections/women-shoes" >Women shoes</a> 2655 </div> 2656 2657 </li> 2658 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-3" data-id="83007573" data-has-product data-levels="1"> 2659 <div class="flex items-start"> 2660 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 2661href="/collections/pop-up-bouquets" >Pop-Up Bouquets</a> 2662 </div> 2663 2664 <div class="header__three_menu-wrapper header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto" spz-menu-submenu> 2665 <div class="hide-scrollbar page-container lg:pt-8 lg:pb-9"> 2666 <div class="header__three_menu-content"> 2667 <ul class="header__waterfall-wrapper header_menu_hover_animation m-0 p-0 flex list-none" > 2668 2669 2670 <a class="header__menu-item-last w-full no-underline" 2671href="/collections/classic-pop-up-bouquets" > 2672 <span class="font-medium">classic pop up bouquets</span> 2673 2674 2675 2676 2677 </a> 2678 2679 2680 2681 <a class="header__menu-item-last w-full no-underline" 2682href="/collections/mini-bouquet-pop-up-cards" > 2683 <span class="font-medium">mini bouquet pop up cards</span> 2684 2685 2686 2687 2688 </a> 2689 2690 2691 2692 <a class="header__menu-item-last w-full no-underline" 2693href="/collections/grande-bouquets" > 2694 <span class="font-medium">grande bouquets</span> 2695 2696 2697 2698 2699 </a> 2700 2701 2702 2703 <a class="header__menu-item-last w-full no-underline" 2704href="/collections/rose-bouquet-building-block-set" > 2705 <span class="font-medium">Rose Bouquet Building Block Set</span> 2706 2707 2708 2709 2710 </a> 2711 2712 2713 </ul> 2714 <div class="header__menu_product header_menu_hover_animation"> 2715<div class="shoplazza-product-snippet" product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086"> 2716 2717 <div class="product-snippet__img-wrapper relative" id="product_snippet__image_wrap_header_4e6826d8-cb41-4614-b3f8-640fd7c86086_-3"> 2718 <a 2719 class="product-snippet__img-link relative block overflow-hidden" 2720 href="/products/blooming-roses" 2721has-secondary-image 2722 > 2723 <spz-img class="product-snippet__img product-snippet__img_main i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/bef081796bfae7cec58019f8c75bb0c4.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img> 2724 <spz-img class="product-snippet__img-secondary absolute top-0 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/ec4614786536f2eef96bd5bd7cc2fb39.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img> 2725 </a> 2726 <spz-product-form product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086" layout="container" @atcsuccess="" @atcerror="theme-toast.showToast(content=event.message);" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 2727 <form> 2728 <input name="variant_id" type="hidden" value="e334344d-a1e1-4af8-9110-3dda35b0cbf7"> 2729 <button 2730 type="button" 2731 class="product-snippet__quick-shop-icon" 2732 role="addToCart" 2733 data-quick-shop="blooming-roses" 2734 data-track-product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086" 2735 data-track="click" 2736 data-track-content="add_to_cart" 2737 data-track-source="quick_shop" 2738 > 2739 <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg> 2740 </button> 2741 </form> 2742</spz-product-form> 2743 <a 2744 class="product_snippet__label md:hidden" 2745 label-type="-3" 2746 href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7" 2747 > 2748 Save <span class='money'>$19.92</span> 2749 </a> 2750 <a 2751 class="product_snippet__label lg:hidden" 2752 label-type="-3" 2753 href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7" 2754 > 2755 Save <span class='money'>$19.92</span> 2756 </a> 2757 </div> 2758 2759 <h3 class="product-snippet__title dj_skin_product_list_title m-0 mt-2 p-0 body-base leading-1.25 type-heading-font-family product-title-color "> 2760 <a class="shoplazza-product-snippet-title text-inherit no-underline" 2761 href="/products/blooming-roses" 2762> 2763 Blooming Roses 2764 </a> 2765 </h3> 2766 2767 <a 2768 class="product-snippet__price-wrapper flex items-center flex-wrap mt-2 text-inherit no-underline" 2769 href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7" 2770 > 2771 <span class="product-snippet__price">
2772 <span class='money'>$19.98</span> 2773 </span> 2774 <span class="product-snippet__compare-at-price money"> 2775 $39.90 2776 </span> 2777 </a> 2778 2779 2780</div></div> 2781 </div> 2782 </div> 2783 </div> 2784 </li> 2785 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-4" data-id="82938779" data-levels="0"> 2786 <div class="flex items-start"> 2787 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 2788href="/collections/all-xhdb" >All Products</a> 2789 </div> 2790 2791 </li> 2792 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-5" data-id="82982825" data-levels="0"> 2793 <div class="flex items-start"> 2794 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 2795href="/pages/track-order" >Track Order</a> 2796 </div> 2797 2798 </li> 2799 <li spz-menu-more-link class="header__menu-item header__menu-item-first"> 2800 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap cursor-pointer" href="javascript:;" >More links</a> 2801 <div class="header__more_menu-wrapper" spz-menu-submenu> 2802 <template> 2803 ${(function(){ 2804 const formatLinks = (links) => { 2805 return links.map(link => { 2806 link.tag = tags[link.title.toUpperCase()] || {}; 2807 link.target_attr = link.target == '_blank' ? 'target="_blank"' : ''; 2808 link.href_attr = link.url ? `href="${link.url}"` : ''; 2809 if(link.children && link.children.length){ 2810 link.children = formatLinks(link.children); 2811 } 2812 return link; 2813 }) 2814 }; 2815 const tags = "{}"; 2816 let linkList = [ 2817 { 2818 id: 80779717, 2819 title: "Home", 2820 url: "\/", 2821 target: "", 2822 levels: 0, 2823 product0: { id: (null) }, 2824 children: [ 2825 2826 ] 2827 }, 2828 { 2829 id: 83743781, 2830 title: "Women shoes", 2831 url: "\/collections\/women-shoes", 2832 target: "", 2833 levels: 0, 2834 product0: { id: (null) }, 2835 children: [ 2836 2837 ] 2838 }, 2839 { 2840 id: 83007573, 2841 title: "Pop-Up Bouquets", 2842 url: "\/collections\/pop-up-bouquets", 2843 target: "", 2844 levels: 1, 2845 product0: { id: ("4e6826d8-cb41-4614-b3f8-640fd7c86086") }, 2846 children: [ 2847 2848 2849 { 2850 title: "classic pop up bouquets", 2851 url: "\/collections\/classic-pop-up-bouquets", 2852 target: "", 2853 levels: 0, 2854 children: [ 2855 2856 ] 2857 }, 2858 2859 2860 { 2861 title: "mini bouquet pop up cards", 2862 url: "\/collections\/mini-bouquet-pop-up-cards", 2863 target: "", 2864 levels: 0, 2865 children: [ 2866 2867 ] 2868 }, 2869 2870 2871 { 2872 title: "grande bouquets", 2873 url: "\/collections\/grande-bouquets", 2874 target: "", 2875 levels: 0, 2876 children: [ 2877 2878 ] 2879 }, 2880 2881 2882 { 2883 title: "Rose Bouquet Building Block Set", 2884 url: "\/collections\/rose-bouquet-building-block-set", 2885 target: "", 2886 levels: 0, 2887 children: [ 2888 2889 ] 2890 }, 2891 2892 ] 2893 }, 2894 { 2895 id: 82938779, 2896 title: "All Products", 2897 url: "\/collections\/all-xhdb", 2898 target: "", 2899 levels: 0, 2900 product0: { id: (null) }, 2901 children: [ 2902 2903 ] 2904 }, 2905 { 2906 id: 82982825, 2907 title: "Track Order", 2908 url: "\/pages\/track-order", 2909 target: "", 2910 levels: 0, 2911 product0: { id: (null) }, 2912 children: [ 2913 2914 ] 2915 }, 2916 ].slice(offset);
2917 linkList = formatLinks(linkList); 2918 const hasChild = linkList.some(link => !!(link.children && link.children.length || link.product0.id)); 2919 return ` 2920 <div> 2921 <div spz-if="${hasChild}" class="header__more_menu_three header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto"> 2922 <spz-tabs class="header__more_menu page-container" layout="container" interact="hover"> 2923 <ul class="header__more_menu_left header_menu_hover_animation list-none" role="tabs"> 2924 <li role="tab" data-panel="tab-${link.id}" spz-for="link in linkList" key="link.id"> 2925 <a class="flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}> 2926 <span class="flex-1 mr-4">${link.title}</span> 2927 <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span> 2928 <i spz-if="${!!(link.children && link.children.length)}" class="flex"> 2929 <svg class="header__more_menu_icon" width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="M4.698 8.574a.6.6 0 0 0 0 .848l6.718 6.718a.3.3 0 0 0 .424 0l.679-.679a.3.3 0 0 0 0-.424L6.48 8.998 12.52 2.96a.3.3 0 0 0 0-.425l-.679-.679a.3.3 0 0 0-.424 0L4.698 8.574z" fill="currentColor"/></svg> 2930 </i> 2931 </a> 2932 </li> 2933 </ul> 2934 <div class="header__more_menu_right header_menu_hover_animation flex" role="tabpanel" data-id="tab-${link.id}" spz-for="link in linkList" key="link.id"> 2935 <ul class="flex flex-wrap list-none" ${(!!link.product0.id)?"data-has-product":''} spz-if="${!!(link.children && link.children.length)}"> 2936 <li class="flex-1" spz-for="second_link in link.children"> 2937 <a class="header__more_menu_right_item flex items-start text-inherit no-underline" ${second_link.href_attr} ${second_link.target_attr}> 2938 <span>${second_link.title}</span> 2939 <span spz-if="${!!(second_link.tag.label)}" class="header__menu-item-tag" style="color:${second_link.tag.color}; background:${second_link.tag.bg};">${second_link.tag.label}</span> 2940 </a> 2941 <a class="header__more_menu_right_item header__menu-item-last flex items-start text-inherit no-underline" spz-for="third_links in second_link.children" ${third_links.href_attr} ${third_links.target_attr}> 2942 <span>${third_links.title}</span> 2943 <span spz-if="${!!(third_links.tag.label)}" class="header__menu-item-tag" style="color:${third_links.tag.color}; background:${third_links.tag.bg};">${third_links.tag.label}</span> 2944 </a> 2945 </li> 2946 </ul> 2947 <div class="header__menu_product" spz-if="${!!link.product0.id}"> 2948 2949 2950<spz-product-snippet 2951 product-id="${link.product0.id}" 2952 layout="container" 2953 template="product-snippet-template" 2954 variant-thumb-names="color" 2955 thumb-max-num="3" 2956 ></spz-product-snippet> 2957</div> 2958 </div> 2959 </spz-tabs> 2960 </div> 2961 <ul spz-else class="header__more_menu_second header__second_menu-wrapper header-shadow absolute header-bg list-none overflow-x-hidden overflow-y-auto"> 2962 <li class="header_menu_hover_animation" spz-for="link in linkList" key="link.id"> 2963 <a class="header__menu-item-last flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}> 2964 <span>${link.title}</span> 2965 <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span> 2966 </a> 2967 </li> 2968 </ul> 2969 </div> 2970 ` 2971 })()} 2972 </template> 2973 </div> 2974 </li> 2975 </ul> 2976</spz-menu> 2977 </div> 2978 </div> 2979 </div> 2980 2981 <div class="header__menu-wrapper header__scroll_hide header-bg overflow-hidden pointer-events-auto"> 2982 <div class="header__menu-content page-container"> 2983 <style> 2984 .header__desktop .header__menu{ 2985 background: inherit !important; 2986 } 2987 .header__desktop .header__menu-item{ 2988 padding: 0 18px; 2989 font-size: var(--type-nav-font-size); 2990 } 2991 .header__desktop .header__menu-item:first-child { 2992 margin-left: 0; 2993 } 2994 .header__second_menu-wrapper, 2995 .header__three_menu-wrapper, 2996 .header__more_menu-wrapper{ 2997 z-index: var(--z-index-sticky); 2998 visibility: hidden; 2999 } 3000 .header__menu-item-first:hover .header__second_menu-wrapper, 3001 .header__menu-item-first:hover .header__three_menu-wrapper, 3002 .header__menu-item-first:hover .header__more_menu-wrapper{ 3003 visibility: visible; 3004 } 3005 .header__second_menu-wrapper, 3006 .header__three_menu-wrapper, 3007 .header__more_menu_three{ 3008 overflow: hidden auto; 3009 max-height: calc(var(--window-height) - var(--header-height) - 200px); 3010 } 3011 .header__second_menu-wrapper{ 3012 min-width: 180px; 3013 max-width: 400px; 3014 margin: 0 0 -18px 0; 3015 padding: 25px 18px; 3016 } 3017 .header__second_menu-wrapper li + li{ 3018 margin-top: 18px; 3019 } 3020 .header__three_menu-content{ 3021 display: grid; 3022 grid-template-columns: repeat(4, minmax(0, 1fr)); 3023 margin: 0 -30px; 3024 } 3025 .header__desktop .header__menu-item[data-levels="2"] .header__three_menu-wrapper ul{ 3026 flex-wrap: wrap; 3027 margin-top: -50px; 3028 } 3029 .header__desktop .header__menu-item:not([data-levels="2"]) .header__three_menu-wrapper ul{ 3030 flex-direction: column; 3031 margin-top: -12px; 3032 } 3033 .header__desktop .header__menu-item[data-levels="2"][data-has-product] .header__three_menu-wrapper ul li{ 3034 width: 33.33%; 3035 } 3036 .header__desktop .header__menu-item[data-levels="2"]:not([data-has-product]) .header__three_menu-wrapper ul li{ 3037 width: 25%; 3038 } 3039 .header__desktop .header__menu-item[data-has-product] .header__three_menu-wrapper ul{ 3040 grid-column: span 3 / span 3; 3041 } 3042 .header__desktop .header__menu-item:not([data-has-product]) .header__three_menu-wrapper ul{ 3043 grid-column: span 4 / span 4; 3044 } 3045 .header__desktop .header__menu-item[data-levels="2"] .header__menu-item-second{ 3046 padding: 50px 30px 8px; 3047 font-size: var(--type-nav-font-size); 3048 color: var(--color-header-text); 3049 } 3050 .header__three_menu-wrapper .header__menu-item-last{ 3051 padding: 12px 30px 0; 3052 } 3053 .header__desktop .header__menu-item .header__menu-item-last{ 3054 color: var(--color-header-text-70); 3055 font-size: calc(var(--type-nav-font-size) - 2px); 3056 line-height: 1.4; 3057 } 3058 .header__desktop .header__menu-item .header__menu-item-last:hover { 3059 color: var(--color-header-text); 3060 } 3061 .header__menu_product{ 3062 grid-column: span 1 / span 1; 3063 padding-left: 30px; 3064 padding-right: 30px; 3065 } 3066 .header_menu_hover_animation{ 3067 opacity: 0; 3068 transform: translateY(-12px); 3069 transition: all 200ms; 3070 } 3071 .header__menu-item-first:hover .header_menu_hover_animation{ 3072 opacity: 1; 3073 transform: translateY(0); 3074 } 3075 .header__desktop .header__menu-item-first .header__menu-item-sub::after{ 3076 content: ""; 3077 position: absolute; 3078 left: 0; 3079 bottom: 0; 3080 display: block; 3081 width: 0; 3082 height: 3px; 3083 background-color: var(--color-header-text); 3084 transition: width .2s; 3085 } 3086 .header__desktop .header__menu-item-first:hover .header__menu-item-sub::after{ 3087 width: 100%; 3088 } 3089</style> 3090<style> 3091 .header-menu-container[finish] .header__more_menu-wrapper{ 3092 display: block !important; 3093 position: static !important; 3094 } 3095 .header__more_menu, 3096 .header__more_menu_right{ 3097 display: grid; 3098 } 3099 .header__more_menu{ 3100 grid-template-columns: repeat(4,minmax(0,1fr)); 3101 } 3102 .header__more_menu_right{ 3103 grid-template-columns: repeat(3,minmax(0,1fr)); 3104 } 3105 .header__more_menu [role="tabs"], 3106 .header__more_menu_right .header__menu_product{ 3107 grid-column: span 1/span 1; 3108 } 3109 .header__more_menu_right > ul[data-has-product]{ 3110 grid-column: span 2/span 2; 3111 } 3112 .header__more_menu [role="tabpanel"],
3113 .header__more_menu_right > ul:not([data-has-product]){ 3114 grid-column: span 3/span 3; 3115 } 3116 .header__more_menu{ 3117 line-height: 1.25; 3118 padding-top: 32px; 3119 padding-bottom: 36px; 3120 } 3121 .header__more_menu [role="tab"] + [role="tab"]{ 3122 padding-top: 20px; 3123 } 3124 .header__more_menu_icon{ 3125 transform: rotate(180deg); 3126 transition: all 200ms; 3127 } 3128 .header__more_menu [role="tab"][active] .header__more_menu_icon{ 3129 transform: rotate(0); 3130 } 3131 .header__more_menu_right li { 3132 padding-bottom: 20px; 3133 } 3134 .header__more_menu_right_item{ 3135 padding: 0 30px 8px; 3136 } 3137 .header__more_menu_right_item + .header__more_menu_right_item{ 3138 padding: 12px 30px 0; 3139 } 3140 .header__more_menu_right .header__menu_product{ 3141 padding: 0 30px; 3142 } 3143</style> 3144<spz-menu id="header-menu-bottom" layout="container" class="header-menu-container type-heading-font-family i-spzhtml-layout-container" i-spzhtml-layout="container"> 3145 <ul class="header__menu flex m-0 p-0 list-none"> 3146 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-1" data-id="80779717" data-levels="0"> 3147 <div class="flex items-start"> 3148 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 3149href="/" >Home</a> 3150 </div> 3151 3152 </li> 3153 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-2" data-id="83743781" data-levels="0"> 3154 <div class="flex items-start"> 3155 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 3156href="/collections/women-shoes" >Women shoes</a> 3157 </div> 3158 3159 </li> 3160 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-3" data-id="83007573" data-has-product data-levels="1"> 3161 <div class="flex items-start"> 3162 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 3163href="/collections/pop-up-bouquets" >Pop-Up Bouquets</a> 3164 </div> 3165 3166 <div class="header__three_menu-wrapper header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto" spz-menu-submenu> 3167 <div class="hide-scrollbar page-container lg:pt-8 lg:pb-9"> 3168 <div class="header__three_menu-content"> 3169 <ul class="header__waterfall-wrapper header_menu_hover_animation m-0 p-0 flex list-none" > 3170 3171 3172 <a class="header__menu-item-last w-full no-underline" 3173href="/collections/classic-pop-up-bouquets" > 3174 <span class="font-medium">classic pop up bouquets</span> 3175 3176 3177 3178 3179 </a> 3180 3181 3182 3183 <a class="header__menu-item-last w-full no-underline" 3184href="/collections/mini-bouquet-pop-up-cards" > 3185 <span class="font-medium">mini bouquet pop up cards</span> 3186 3187 3188 3189 3190 </a> 3191 3192 3193 3194 <a class="header__menu-item-last w-full no-underline" 3195href="/collections/grande-bouquets" > 3196 <span class="font-medium">grande bouquets</span> 3197 3198 3199 3200 3201 </a> 3202 3203 3204 3205 <a class="header__menu-item-last w-full no-underline" 3206href="/collections/rose-bouquet-building-block-set" > 3207 <span class="font-medium">Rose Bouquet Building Block Set</span> 3208 3209 3210 3211 3212 </a> 3213 3214 3215 </ul> 3216 <div class="header__menu_product header_menu_hover_animation"> 3217<div class="shoplazza-product-snippet" product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086"> 3218 3219 <div class="product-snippet__img-wrapper relative" id="product_snippet__image_wrap_header_4e6826d8-cb41-4614-b3f8-640fd7c86086_left_center-3"> 3220 <a 3221 class="product-snippet__img-link relative block overflow-hidden" 3222 href="/products/blooming-roses" 3223has-secondary-image 3224 > 3225 <spz-img class="product-snippet__img product-snippet__img_main i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/bef081796bfae7cec58019f8c75bb0c4.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img> 3226 <spz-img class="product-snippet__img-secondary absolute top-0 i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" layout="responsive" width="1500" height="1500" src="//img.staticdj.com/ec4614786536f2eef96bd5bd7cc2fb39.jpeg" alt="" object-fit="cover" auto-fit i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:100%;"></i-spzhtml-sizer></spz-img> 3227 </a> 3228 <spz-product-form product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086" layout="container" @atcsuccess="" @atcerror="theme-toast.showToast(content=event.message);" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 3229 <form> 3230 <input name="variant_id" type="hidden" value="e334344d-a1e1-4af8-9110-3dda35b0cbf7"> 3231 <button 3232 type="button" 3233 class="product-snippet__quick-shop-icon" 3234 role="addToCart" 3235 data-quick-shop="blooming-roses" 3236 data-track-product-id="4e6826d8-cb41-4614-b3f8-640fd7c86086" 3237 data-track="click" 3238 data-track-content="add_to_cart" 3239 data-track-source="quick_shop" 3240 > 3241 <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"/></svg> 3242 </button> 3243 </form> 3244</spz-product-form> 3245 <a 3246 class="product_snippet__label md:hidden" 3247 label-type="left_center-3" 3248 href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7" 3249 > 3250 Save <span class='money'>$19.92</span> 3251 </a> 3252 <a 3253 class="product_snippet__label lg:hidden" 3254 label-type="left_center-3" 3255 href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7" 3256 > 3257 Save <span class='money'>$19.92</span> 3258 </a> 3259 </div> 3260 3261 <h3 class="product-snippet__title dj_skin_product_list_title m-0 mt-2 p-0 body-base leading-1.25 type-heading-font-family product-title-color "> 3262 <a class="shoplazza-product-snippet-title text-inherit no-underline" 3263 href="/products/blooming-roses" 3264> 3265 Blooming Roses 3266 </a> 3267 </h3> 3268 3269 <a 3270 class="product-snippet__price-wrapper flex items-center flex-wrap mt-2 text-inherit no-underline" 3271 href="/products/blooming-roses?variant=e334344d-a1e1-4af8-9110-3dda35b0cbf7" 3272 > 3273 <span class="product-snippet__price">
3274 <span class='money'>$19.98</span> 3275 </span> 3276 <span class="product-snippet__compare-at-price money"> 3277 $39.90 3278 </span> 3279 </a> 3280 3281 3282</div></div> 3283 </div> 3284 </div> 3285 </div> 3286 </li> 3287 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-4" data-id="82938779" data-levels="0"> 3288 <div class="flex items-start"> 3289 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 3290href="/collections/all-xhdb" >All Products</a> 3291 </div> 3292 3293 </li> 3294 <li class="header__menu-item header__menu-item-first cursor-pointer header__menu-item-first-5" data-id="82982825" data-levels="0"> 3295 <div class="flex items-start"> 3296 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap" 3297href="/pages/track-order" >Track Order</a> 3298 </div> 3299 3300 </li> 3301 <li spz-menu-more-link class="header__menu-item header__menu-item-first"> 3302 <a class="header__menu-item-sub relative block text-inherit no-underline whitespace-nowrap cursor-pointer" href="javascript:;" >More links</a> 3303 <div class="header__more_menu-wrapper" spz-menu-submenu> 3304 <template> 3305 ${(function(){ 3306 const formatLinks = (links) => { 3307 return links.map(link => { 3308 link.tag = tags[link.title.toUpperCase()] || {}; 3309 link.target_attr = link.target == '_blank' ? 'target="_blank"' : ''; 3310 link.href_attr = link.url ? `href="${link.url}"` : ''; 3311 if(link.children && link.children.length){ 3312 link.children = formatLinks(link.children); 3313 } 3314 return link; 3315 }) 3316 }; 3317 const tags = "{}"; 3318 let linkList = [ 3319 { 3320 id: 80779717, 3321 title: "Home", 3322 url: "\/", 3323 target: "", 3324 levels: 0, 3325 product0: { id: (null) }, 3326 children: [ 3327 3328 ] 3329 }, 3330 { 3331 id: 83743781, 3332 title: "Women shoes", 3333 url: "\/collections\/women-shoes", 3334 target: "", 3335 levels: 0, 3336 product0: { id: (null) }, 3337 children: [ 3338 3339 ] 3340 }, 3341 { 3342 id: 83007573, 3343 title: "Pop-Up Bouquets", 3344 url: "\/collections\/pop-up-bouquets", 3345 target: "", 3346 levels: 1, 3347 product0: { id: ("4e6826d8-cb41-4614-b3f8-640fd7c86086") }, 3348 children: [ 3349 3350 3351 { 3352 title: "classic pop up bouquets", 3353 url: "\/collections\/classic-pop-up-bouquets", 3354 target: "", 3355 levels: 0, 3356 children: [ 3357 3358 ] 3359 }, 3360 3361 3362 { 3363 title: "mini bouquet pop up cards", 3364 url: "\/collections\/mini-bouquet-pop-up-cards", 3365 target: "", 3366 levels: 0, 3367 children: [ 3368 3369 ] 3370 }, 3371 3372 3373 { 3374 title: "grande bouquets", 3375 url: "\/collections\/grande-bouquets", 3376 target: "", 3377 levels: 0, 3378 children: [ 3379 3380 ] 3381 }, 3382 3383 3384 { 3385 title: "Rose Bouquet Building Block Set", 3386 url: "\/collections\/rose-bouquet-building-block-set", 3387 target: "", 3388 levels: 0, 3389 children: [ 3390 3391 ] 3392 }, 3393 3394 ] 3395 }, 3396 { 3397 id: 82938779, 3398 title: "All Products", 3399 url: "\/collections\/all-xhdb", 3400 target: "", 3401 levels: 0, 3402 product0: { id: (null) }, 3403 children: [ 3404 3405 ] 3406 }, 3407 { 3408 id: 82982825, 3409 title: "Track Order", 3410 url: "\/pages\/track-order", 3411 target: "", 3412 levels: 0, 3413 product0: { id: (null) }, 3414 children: [ 3415 3416 ] 3417 }, 3418 ].slice(offset);
3419 linkList = formatLinks(linkList); 3420 const hasChild = linkList.some(link => !!(link.children && link.children.length || link.product0.id)); 3421 return ` 3422 <div> 3423 <div spz-if="${hasChild}" class="header__more_menu_three header-shadow absolute left-0 right-0 header-bg overflow-x-hidden overflow-y-auto"> 3424 <spz-tabs class="header__more_menu page-container" layout="container" interact="hover"> 3425 <ul class="header__more_menu_left header_menu_hover_animation list-none" role="tabs"> 3426 <li role="tab" data-panel="tab-${link.id}" spz-for="link in linkList" key="link.id"> 3427 <a class="flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}> 3428 <span class="flex-1 mr-4">${link.title}</span> 3429 <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span> 3430 <i spz-if="${!!(link.children && link.children.length)}" class="flex"> 3431 <svg class="header__more_menu_icon" width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="M4.698 8.574a.6.6 0 0 0 0 .848l6.718 6.718a.3.3 0 0 0 .424 0l.679-.679a.3.3 0 0 0 0-.424L6.48 8.998 12.52 2.96a.3.3 0 0 0 0-.425l-.679-.679a.3.3 0 0 0-.424 0L4.698 8.574z" fill="currentColor"/></svg> 3432 </i> 3433 </a> 3434 </li> 3435 </ul> 3436 <div class="header__more_menu_right header_menu_hover_animation flex" role="tabpanel" data-id="tab-${link.id}" spz-for="link in linkList" key="link.id"> 3437 <ul class="flex flex-wrap list-none" ${(!!link.product0.id)?"data-has-product":''} spz-if="${!!(link.children && link.children.length)}"> 3438 <li class="flex-1" spz-for="second_link in link.children"> 3439 <a class="header__more_menu_right_item flex items-start text-inherit no-underline" ${second_link.href_attr} ${second_link.target_attr}> 3440 <span>${second_link.title}</span> 3441 <span spz-if="${!!(second_link.tag.label)}" class="header__menu-item-tag" style="color:${second_link.tag.color}; background:${second_link.tag.bg};">${second_link.tag.label}</span> 3442 </a> 3443 <a class="header__more_menu_right_item header__menu-item-last flex items-start text-inherit no-underline" spz-for="third_links in second_link.children" ${third_links.href_attr} ${third_links.target_attr}> 3444 <span>${third_links.title}</span> 3445 <span spz-if="${!!(third_links.tag.label)}" class="header__menu-item-tag" style="color:${third_links.tag.color}; background:${third_links.tag.bg};">${third_links.tag.label}</span> 3446 </a> 3447 </li> 3448 </ul> 3449 <div class="header__menu_product" spz-if="${!!link.product0.id}"> 3450 3451 3452<spz-product-snippet 3453 product-id="${link.product0.id}" 3454 layout="container" 3455 template="product-snippet-template" 3456 variant-thumb-names="color" 3457 thumb-max-num="3" 3458 ></spz-product-snippet> 3459</div> 3460 </div> 3461 </spz-tabs> 3462 </div> 3463 <ul spz-else class="header__more_menu_second header__second_menu-wrapper header-shadow absolute header-bg list-none overflow-x-hidden overflow-y-auto"> 3464 <li class="header_menu_hover_animation" spz-for="link in linkList" key="link.id"> 3465 <a class="header__menu-item-last flex items-start text-inherit no-underline" ${link.href_attr} ${link.target_attr}> 3466 <span>${link.title}</span> 3467 <span spz-if="${!!(link.tag.label)}" class="header__menu-item-tag" style="color:${link.tag.color}; background:${link.tag.bg};">${link.tag.label}</span> 3468 </a> 3469 </li> 3470 </ul> 3471 </div> 3472 ` 3473 })()} 3474 </template> 3475 </div> 3476 </li> 3477 </ul> 3478</spz-menu> 3479 </div> 3480 </div> 3481 <div class="plugin__fixed-div pointer-events-auto md:hidden"></div> 3482</div> 3483<style> 3484 .header__mobile .header{ 3485 padding-top: 18px; 3486 padding-bottom: 18px; 3487 } 3488 .header__mobile .header_apps_wrap > * { 3489 margin-bottom: 18px; 3490 flex: 1; 3491 } 3492 .header__mobile .header__search-wrapper{ 3493 padding-top: 4px; 3494 padding-bottom: 10px; 3495 } 3496 .header__mobile .header__menu-wrapper{ 3497 padding: 8px 0 8px 16px; 3498 background: var(--color-menu-bg); 3499 } 3500 .header__mobile__menu-item-first{ 3501 padding-right: 10px; 3502 } 3503 .header__mobile__menu-item-first a{ 3504 padding: 9px 12px; 3505 font-size: 12px; 3506 line-height: 1.3; 3507 color: var(--color-menu-item-text-90); 3508 background: var(--color-menu-item-bg); 3509 border-radius: 4px; 3510 } 3511 .header_menu_tooltip, 3512 .header_menu_tooltip .i-spzhtml-tooltip-inner{ 3513 padding: 0; 3514 background: transparent !important; 3515 } 3516 .header_menu_tooltip .header__menu_second { 3517 width: 150px; 3518 max-height: 236px; 3519 border-radius: 4px ; 3520 } 3521 .header_menu_tooltip .header__menu_second-item{ 3522 background: #fff; 3523 color: var(--color-menu-item-text-80); 3524 padding: 0 0 0 14px; 3525 font-size: 12px; 3526 line-height: 1.3 3527 } 3528 .header_menu_tooltip .header__menu_second-item a{ 3529 padding: 15px 14px 15px 0; 3530 } 3531 .header_menu_tooltip .header__menu_second-item a + a{ 3532 border: 1px solid #E6E6E6; 3533 } 3534 .header__mobile__menu-item-first a.header_menu_active { 3535 background-color: var(--color-actived-menu-item-bg) ; 3536 color: var(--color-actived-menu-item-text) ; 3537 } 3538</style> 3539<header class="header__mobile tw-text-header-text-color lg:hidden">
3540 <div class="header page-container z-20 relative header-bg pointer-events-auto"> 3541 <div class="flex items-center"> 3542 <button 3543 class="lg:hidden header-cart-back-btn clear flex text-inherit" 3544 type="button" 3545 @tap="SPZ.history(type='back', defaultUrl='/');" 3546 > 3547 <svg class="" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="currentColor" d="M6.828 11.526a.6.6 0 0 0 0 .849l7 7a.3.3 0 0 0 .425 0l.721-.721a.3.3 0 0 0 0-.424l-6.279-6.28 6.28-6.279a.3.3 0 0 0 0-.424l-.722-.721a.3.3 0 0 0-.424 0l-7 7Z"/></svg> 3548 </button> 3549 <h2 class="header__logo flex-shrink-0 type-heading-font-family"> 3550 <a class="image_width block md:hidden" href="/"> 3551 <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img> 3552 </a> 3553 <a class="image_width block lg:hidden" href="/"> 3554 <spz-img layout="responsive" width="300" height="100" src="//img.staticdj.com/da7b476af7322b6a98b73854e8df74b8_400x.JPG" alt="" class="i-spzhtml-layout-responsive i-spzhtml-layout-size-defined" i-spzhtml-layout="responsive"><i-spzhtml-sizer style="padding-top:33.33%;"></i-spzhtml-sizer></spz-img> 3555 </a> 3556</h2> 3557<style> 3558 .header__search button, 3559 .header__search input{ 3560 border: none; 3561 outline: none; 3562 } 3563 .header__search-btn, 3564 .header__search-icon{ 3565 background: transparent; 3566 } 3567 .header__search { 3568 display: flex; 3569 align-items: center; 3570 flex-shrink: 0; 3571 } 3572 .header__search-btn { 3573 padding: 0; 3574 margin: 0; 3575 font-size: 0; 3576 color: inherit; 3577 cursor: pointer; 3578 } 3579 .header__search-form{ 3580 min-height: 40px; 3581 } 3582 .header__search-input{ 3583 font-size: 13px; 3584 line-height: 16px; 3585 color: var(--color-header-search-text); 3586 background-color: var(--color-header-search-bg); 3587 padding: 12px 16px 12px 36px; 3588 border-radius: 2px 0 0 2px; 3589 } 3590 .header__search-input:not(:placeholder-shown) ~ .header__search-icon-close{ 3591 display: flex; 3592 } 3593 .header__search-icon{ 3594 left: 10px; 3595 top: 50%; 3596 transform: translateY(-50%); 3597 color: var(--color-header-search-text-50); 3598 } 3599 .header__search-icon-close{ 3600 top: 50%; 3601 transform: translateY(-50%); 3602 height: 18px; 3603 width: 18px; 3604 color: #fff; 3605 background: #C0C0C0; 3606 right: 10px; 3607 } 3608 .header__search-icon:hover, 3609 .header__search-icon-close:hover{ 3610 color: var(--color-header-search-text); 3611 } 3612 .header__search-submit-btn{ 3613 padding: 11px 16px; 3614 font-size: 14px; 3615 line-height: 18px; 3616 color: var(--color-header-search-btn-text); 3617 background-color: var(--color-header-search-btn-bg); 3618 border-radius: 0 2px 2px 0; 3619 } 3620 @media (max-width: 959.98px) { 3621 .header__search-form{ 3622 width: 100% 3623 } 3624 } 3625 @media (min-width: 960px) { 3626 .header__search-form{ 3627 margin: 18px 0; 3628 } 3629 .header__search-input{ 3630 width: 232px; 3631 border-radius: 2px; 3632 } 3633 .header__desktop[data-layout="left"] .header__search-input{ 3634 width: 278px; 3635 } 3636 } 3637</style> 3638 3639<div class="header__search" id=""> 3640 <button 3641 type="button" 3642 class="header__search-btn" 3643 @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_search_sidebar.open()" 3644 > 3645 <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4 0 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z" fill="currentColor"/></svg> 3646 </button> 3647 </div> 3648<spz-observer layout="logic" target="header__plugin-container" @childupdated="header-menu-top.updateMoreLink" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-observer> 3649<div class="header__icons flex-shrink-0 flex items-center" id="header-icons" > 3650 <div class="header__plugin-container md:hidden flex items-center" id="header__plugin-container"> 3651 <div class="empty-hidden plugin__translate-header"></div> 3652 <div class="empty-hidden plugin__currency"></div> 3653 </div> 3654 3655 <div class="header__account relative text-0 md:hidden "> 3656 <i class="cursor-pointer" @tap="header_account_dropdown_md.open"><svg class=" " width="26" height="26" fill="none" xmlns="http://www.w3.org/2000/svg">
3656<path opacity=".01" fill="currentColor" d="M0 0h26v26H0z"/><g fill-rule="evenodd" clip-rule="evenodd" fill="currentColor"><path d="M13.11 1a6.11 6.11 0 1 1 0 12.22 6.11 6.11 0 0 1 0-12.22Zm0 1.6a4.51 4.51 0 1 0 0 9.02 4.51 4.51 0 0 0 0-9.02ZM17.333 15A6.667 6.667 0 0 1 24 21.667V24a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-2.333A6.667 6.667 0 0 1 8.667 15h8.666Zm0 1.6H8.667a5.067 5.067 0 0 0-5.062 4.847l-.005.22V23.4h18.8v-1.733a5.067 5.067 0 0 0-4.847-5.062l-.22-.005Z"/></g></svg></i> 3657 <spz-dropdown class="header__account_dropdown i-spzhtml-layout-nodisplay" id="header_account_dropdown_md" layout="nodisplay" placement="bottom" hidden="" style="display: none" i-spzhtml-layout="nodisplay"> 3658 <ul class="header__account_dropdown_content list-none header-shadow"> 3659 <li><a href="/account/login">Log in</a></li> 3660 <li><a href="/account/register">Create an account</a></li> 3661 </ul> 3662</spz-dropdown> 3663 </div> 3664 <a class="header__cart relative flex justify-end items-center text-0 text-inherit cursor-pointer no-underline" > 3665 <i> 3666 <svg class="" width="28" height="28" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h28v28H0z"/><g fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.8 2.2a.8.8 0 1 0 0 1.6h2.803l1.542 14.541a1 1 0 0 0 .995.895h15.055a1 1 0 0 0 .982-.811l2.105-10.91a1 1 0 0 0-.982-1.189H6.48l-.432-4.081a.05.05 0 0 0-.05-.045H1.8Zm4.849 5.726h16.923l-1.873 9.709H7.679l-1.03-9.709Z"/><path d="M10.917 23.62a1.909 1.909 0 1 1-3.818 0 1.909 1.909 0 0 1 3.818 0ZM22.372 23.62a1.91 1.91 0 1 1-3.819 0 1.91 1.91 0 0 1 3.819 0Z"/></g></svg> 3667 </i> 3668 <!-- è´ç©è½¦æ°é --> 3669 <spz-event target-id="header_cart_count_render_md" target-api="render" event-name="dj.addToCart;dj.cartChange;" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event> 3670 <spz-render id="header_cart_count_render_md" layout="container" src="/api/cart/count" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 3671 <template> 3672 <div> 3673 <span class="header__cart-count absolute rounded-full leading-none text-center" spz-if="${data.data && data.data.count > 0}">${data.data && data.data.count}</span> 3674 </div> 3675 </template> 3676 </spz-render> 3677 </a> 3678 <i class="header__drawer_icon flex lg:hidden cursor-pointer" @tap="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=true);header_drawer.open()"> 3679 <svg class="" width="28" height="28" fill="none" xmlns="http://www.w3.org/2000/svg"><g opacity=".01"><path opacity=".696" fill="currentColor" d="M0 0h28v28H0z"/></g><g fill="currentColor"><path d="M24.17 6.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 0 1 0-1.66h20.34ZM24.17 13.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34ZM24.17 20.17a.83.83 0 1 1 0 1.66H3.83a.83.83 0 1 1 0-1.66h20.34Z"/></g></svg> 3680 </i> 3681 </div> 3682 </div> 3683 </div> 3684 3685 <div 3686 class="header__fixed-top header__scroll_hide pointer-events-auto" 3687 id="header-scrollable-container-mobile" 3688 > 3689 </div> 3690 <div class="plugin__fixed-div pointer-events-auto"></div> 3691</header> 3692<style> 3693 .header__search_sidebar{ 3694 height: 100vh; 3695 width: 100%; 3696 pointer-events: none; 3697 } 3698 .header__search_sidebar_content{ 3699 pointer-events: auto; 3700 overflow: hidden auto; 3701 max-height: 100%; 3702 background-color: var(--color-header-bg); 3703 } 3704 .header__search-modal-form{ 3705 position: sticky; 3706 top: 0; 3707 z-index: 10; 3708 background-color: var(--color-header-bg); 3709 } 3710 .header__search_sidebar-input{ 3711 padding: 46px 16px; 3712 color: var(--color-header-search-text); 3713 } 3714 .header__search_sidebar + .i-spzhtml-sidebar-mask{ 3715 pointer-events: auto; 3716 } 3717 </style> 3718 <spz-sidebar class="header__search_sidebar i-spzhtml-layout-nodisplay" id="header_search_sidebar" layout="nodisplay" side="top" @close="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=false);" hidden="" style="display: none" i-spzhtml-layout="nodisplay"> 3719 <div class="header__search_sidebar_content"> 3720 <div class="page-container header__search-modal-form"> 3721 <form class="flex items-center" action="/search" method="get"> 3722 <button type="submit" class="clear text-0 text-inherit cursor-pointer"> 3723 <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4
37230 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z" fill="currentColor"/></svg> 3724 </button> 3725 <input 3726 @input-debounced="header_search_predictive_render-sidebar.rerender(data=event.value, redo=true);" 3727 class="header__search_sidebar-input flex-1 text-base leading-none type-text-font-family clear" 3728 type="text" 3729 autocomplete="off" 3730 name="q" 3731 placeholder="Search products" 3732 /> 3733 <button type="reset" class="header__search-modal-close text-0 text-inherit clear cursor-pointer" @tap="header_search_sidebar.close()"> 3734 <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg"><path d="M21.502 5.732A.85.85 0 0 0 20.3 4.53l-7.32 7.32L5.734 4.6a.85.85 0 0 0-1.202 1.203l7.248 7.247L4.53 20.3A.85.85 0 0 0 5.733 21.5l7.248-7.248 7.319 7.319a.85.85 0 0 0 1.202-1.202l-7.319-7.319 7.319-7.319z" fill="currentColor"/></svg> 3735 </button> 3736 </form> 3737 </div> 3738 <style> 3739 .header__search_predictive_render{ 3740 background-color: var(--color-header-bg); 3741 } 3742 .header__search_product_list_wrap{ 3743 padding: 24px 0 70px; 3744 } 3745 .header__search_product_list{ 3746 display: grid; 3747 grid-template-columns: repeat(2, minmax(0, 1fr)); 3748 column-gap: 16px; 3749 row-gap: 24px; 3750 } 3751 .header__search_product_list[data-empty], 3752 .header__search_product__empty, 3753 .header__search_product__view_more_wrap{ 3754 display: none; 3755 } 3756 .header__search_product_list[hasmore] + .header__search_product__view_more_wrap, 3757 .header__search_product_list[data-empty] ~ .header__search_product__empty{ 3758 display: flex; 3759 justify-content: center; 3760 align-items: center; 3761 } 3762 .header__search_product_list[loading] ~ .loading{ 3763 display: var(--loading-show); 3764 } 3765 .header__search_product_list ~ .loading .loading-bounce{ 3766 border-bottom-color: var(--color-body-text); 3767 } 3768 .header__search_product__view_more{ 3769 margin: 24px auto 0; 3770 padding: 8px 24px; 3771 font-weight: 600; 3772 font-size: 16px; 3773 line-height: 24px; 3774 } 3775 @media (min-width: 960px) { 3776 .header__search_product_list{ 3777 grid-template-columns: repeat(4, minmax(0, 1fr)); 3778 column-gap: 24px; 3779 } 3780 .header__search_product_list_wrap{ 3781 padding: 24px 0 40px; 3782 } 3783 } 3784 </style> 3785 <template id="header_search_product_list_template-sidebar"> 3786 <spz-product-snippet 3787 data-source-id="header_search_product_list-sidebar" 3788 product-id="${data.id}" 3789 layout="container" 3790 template="product-snippet-template" 3791 variant-thumb-names="color" 3792 thumb-max-num="3" 3793 ></spz-product-snippet> 3794</template> 3795 <spz-render id="header_search_predictive_render-sidebar" class="header__search_predictive_render i-spzhtml-layout-container" layout="container" manual i-spzhtml-layout="container"> 3796 <template> 3797 <div class="page-container"> 3798 ${(function(){ 3799 if (data === undefined || typeof data !== 'string' || data == '') return '<spz-render @finish="header_search_lightbox.close();header_search_sidebar.close();" layout="container"></spz-render>'; 3800 const keyword = encodeURIComponent(data); 3801 return ` 3802 <div class="header__search_product_list_wrap"> 3803 <spz-list 3804 class="header__search_product_list" 3805 id="header_search_product_list-sidebar" 3806 layout="container" 3807 initial-page="0" 3808 size="limit" 3809 page-size="4" 3810 src="/api/search?keyword=${keyword}" 3811 list="data.products" 3812 total="data.total" 3813 template="header_search_product_list_template-sidebar" 3814 ></spz-list> 3815 <div class="header__search_product__view_more_wrap"> 3816 <a 3817 href="/search?q=${keyword}" 3818 class="header__search_product__view_more button-primary rounded-btn no-underline"> 3819 View more 3820 </a> 3821 </div> 3822 <div class="header__search_product__empty"> 3823 Your search for '${data}' did not yield any results. 3824 </div> 3825 <div class="loading items-center justify-center " role="loading" hide > 3826 <div class="loading-bounce"></div> 3827</div> 3828 </div> 3829 ` 3830 })()} 3831 </div> 3832 </template> 3833 </spz-render> 3834</div> 3835 </spz-sidebar> 3836<style> 3837 .header__drawer{ 3838 width: 330px; 3839 top: 0; 3840 bottom: 0; 3841 max-width: 100vw !important; 3842 line-height: 1.4; 3843 } 3844 .header__drawer, 3845 .header__drawer + .i-spzhtml-sidebar-mask{ 3846 pointer-events: auto; 3847 } 3848 .header__drawer a{ 3849 color: inherit; 3850 text-decoration: none; 3851 } 3852 .header__drawer_header{ 3853 position: sticky; 3854 top: 0; 3855 z-index: 10; 3856 height: 62px; 3857 border-bottom: 1px solid rgba(230,230,230,0.6); 3858 } 3859 .header__drawer_close{ 3860 width: 62px; 3861 position: absolute; 3862 top: 0; 3863 right: 0; 3864 bottom: 0; 3865 opacity: 0.7; 3866 } 3867 .header__drawer_footer{ 3868 position: sticky; 3869 bottom: 0; 3870 z-index: 10; 3871 border-top: 1px solid rgba(230,230,230,0.6); 3872 padding: 16px 20px; 3873 } 3874 .header__drawer_prev{ 3875 position: sticky; 3876 top: 0; 3877 z-index: 10; 3878 display: flex; 3879 align-items: center; 3880 border-bottom: 1px solid rgba(230,230,230,0.6); 3881 padding: 16px 20px; 3882 background-color: var(--color-body-bg); 3883 } 3884 .header__drawer [spz-nested-submenu]:not([child-open]){ 3885 overflow: hidden auto; 3886 max-height: 100%; 3887 } 3888 .header__drawer_menu_item{
3889 display: flex; 3890 align-items: center; 3891 justify-content: space-between; 3892 min-height: 22px; 3893 margin-left: 20px; 3894 padding: 16px 20px 16px 0; 3895 border-bottom: 1px solid rgba(230,230,230,0.6); 3896 cursor: pointer; 3897 } 3898 .header__drawer_menu_item a:not([spz-nested-submenu-open]){ 3899 flex: 1 3900 } 3901 .header_drawer_menu .header_drawer_menu_first{ 3902 overflow: hidden auto; 3903 } 3904 .header_drawer_menu[child-open] .header_drawer_menu_first{ 3905 overflow: unset !important; 3906 } 3907 </style> 3908<spz-sidebar id="header_drawer" class="header__drawer flex flex-col bg-color-body i-spzhtml-layout-nodisplay" side="right" layout="nodisplay" @close="shoplaza-section-announcement.toggleClass(class='header_mask_open', force=false);" hidden="" style="display: none" i-spzhtml-layout="nodisplay"> 3909 <div class="header__drawer_header flex-shrink-0 relative flex bg-color-body"> 3910 <i class="header__drawer_close flex-center cursor-pointer" @tap="header_drawer.close()"> 3911 <svg class="" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M5.034 3.652a.367.367 0 0 0-.518 0l-.864.864a.367.367 0 0 0 0 .519l5.963 5.963-5.963 5.963a.367.367 0 0 0 0 .519l.864.864a.367.367 0 0 0 .518 0l5.964-5.963 5.963 5.963a.367.367 0 0 0 .519 0l.864-.864a.367.367 0 0 0 0-.519l-5.964-5.963 5.964-5.963a.367.367 0 0 0 0-.519l-.864-.864a.367.367 0 0 0-.519 0l-5.963 5.963-5.964-5.963z" fill="currentColor"/></svg> 3912 </i> 3913 </div> 3914 <div class="flex-1 relative overflow-hidden"> 3915 <spz-nested-menu class="header_drawer_menu flex flex-col i-spzhtml-layout-fill i-spzhtml-layout-size-defined" layout="fill" side="right" id="menu-drawer" i-spzhtml-layout="fill"> 3916 <ul class="header_drawer_menu_first flex-1 hide-scrollbar"> 3917 <li> 3918 <div class="header__drawer_menu_item"> 3919 <a class="flex items-start " 3920href="/" > 3921 <span>Home</span> 3922 </a> 3923 </div> 3924 </li> 3925 <li> 3926 <div class="header__drawer_menu_item"> 3927 <a class="flex items-start " 3928href="/collections/women-shoes" > 3929 <span>Women shoes</span> 3930 </a> 3931 </div> 3932 </li> 3933 <li> 3934 <div spz-nested-submenu-open class="header__drawer_menu_item"> 3935 <a class="flex items-start " 3936href="/collections/pop-up-bouquets" > 3937 <span>Pop-Up Bouquets</span> 3938 </a> 3939 <svg class="header__drawer_next_icon ml-3 flex-shrink-0" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 0l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"/></svg> 3940</div> 3941 <ul class="clear" spz-nested-submenu> 3942 <li class="header__drawer_prev" spz-nested-submenu-close> 3943 3944 <svg class="mr-3" width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M4.06 7.573a.6.6 0 0 0 0 .848l6.152 6.152a.3.3 0 0 0 .424 0l.594-.594a.3.3 0 0 0 0-.424L5.672 7.997 11.23 2.44a.3.3 0 0 0 0-.424l-.594-.594a.3.3 0 0 0-.424 0L4.06 7.573z" fill="currentColor"/></svg> 3945<span class="flex-1 underline">Pop-Up Bouquets</span> 3946 </li> 3947 3948 3949 3950 <li> 3951 <div class="header__drawer_menu_item"> 3952 <a class="flex items-start " 3953href="/collections/classic-pop-up-bouquets" > 3954 <span>classic pop up bouquets</span> 3955 </a> 3956 3957 </div> 3958 3959 </li> 3960 3961 3962 3963 <li> 3964 <div class="header__drawer_menu_item"> 3965 <a class="flex items-start " 3966href="/collections/mini-bouquet-pop-up-cards" > 3967 <span>mini bouquet pop up cards</span> 3968 </a> 3969 3970 </div> 3971 3972 </li> 3973 3974 3975 3976 <li> 3977 <div class="header__drawer_menu_item"> 3978 <a class="flex items-start " 3979href="/collections/grande-bouquets" > 3980 <span>grande bouquets</span> 3981 </a> 3982 3983 </div> 3984 3985 </li> 3986 3987 3988 3989 <li> 3990 <div class="header__drawer_menu_item"> 3991 <a class="flex items-start " 3992href="/collections/rose-bouquet-building-block-set" > 3993 <span>Rose Bouquet Building Block Set</span> 3994 </a> 3995 3996 </div> 3997 3998 </li> 3999 4000 </ul> 4001 </li> 4002 <li> 4003 <div class="header__drawer_menu_item"> 4004 <a class="flex items-start " 4005href="/collections/all-xhdb" > 4006 <span>All Products</span> 4007 </a> 4008 </div> 4009 </li> 4010 <li> 4011 <div class="header__drawer_menu_item"> 4012 <a class="flex items-start " 4013href="/pages/track-order" > 4014 <span>Track Order</span> 4015 </a> 4016 </div> 4017 </li> 4018 <div class="header__drawer_plugins"> 4019 <div class="empty-hidden plugin__translate-header px-5 my-10"></div> 4020 <div class="empty-hidden plugin__currency px-5 my-10"></div> 4021 </div> 4022 </ul> 4023 4024 <li class="header__drawer_menu_item"><a href="/account/login">Log in</a></li> 4025 <li class="header__drawer_menu_item"><a href="/account/register">Create an account</a></li> 4026 </spz-nested-menu> 4027 </div> 4028</spz-sidebar> 4029</div> 4030<spz-script layout="logic" type="application/javascript"> 4031 (function(){ 4032 let w = window.innerWidth; 4033 function setHeaderCssVar() { 4034 const headerEle = document.getElementById('shoplaza-section-header'); 4035 if(!headerEle){ return }; 4036 document.body.style.setProperty('--window-height', `${window.innerHeight}px`); 4037 document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`); 4038 4039 const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide'); 4040 if (mdScorllHideEle) { 4041 document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`); 4042 } 4043 4044 const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide'); 4045 if (pcScorllHideEle) { 4046 document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`); 4047 } 4048 4049 } 4050 function handlResize() { 4051 if(w == window.innerWidth){return}; 4052 w = window.innerWidth; 4053 setHeaderCssVar(); 4054 };
4055 function init(){ 4056 setHeaderCssVar(); 4057 window.removeEventListener('resize', window._theme_header_listener) 4058 window._theme_header_listener = handlResize; 4059 window.addEventListener('resize', window._theme_header_listener); 4060 } 4061 init(); 4062 })(); 4063</spz-script> 4064 4065</div> 4066 <div class="plugin__static-div"></div> 4067 <div class="main-content" id="main-content"> 4068 <style type="text/css"> 4069 .apps-add-cart-toast-wrap { 4070 position: fixed; 4071 z-index: var(--z-index-tooltip, 1070); 4072 top: 64px; 4073 right: 0; 4074 left: 0; 4075 pointer-events: none; 4076 display: flex; 4077 justify-content: end; 4078 } 4079 .apps-add_cart-toast { 4080 width: 100%; 4081 background: rgba(41, 41, 41, 0.95); 4082 color: #fff; 4083 pointer-events: auto; 4084 border-radius: 0px; 4085 position: unset !important; 4086 transform: unset !important; 4087 text-align: left !important; 4088 display: flex; 4089 align-items: center; 4090 } 4091 .apps-add_cart-toast-span { 4092 width: 100%; 4093 justify-content: flex-start; 4094 align-items: center; 4095 display: flex; 4096 } 4097 4098 /* å ¨å±toast */ 4099 .discount-toast-wrap{ 4100 position: fixed; 4101 z-index: var(--z-index-tooltip, 1070); 4102 top: 64px; 4103 right: 0; 4104 left: 0; 4105 pointer-events: none; 4106 display: flex; 4107 justify-content: end; 4108 } 4109 .discount-toast{ 4110 width: 100%; 4111 background: rgba(41, 41, 41, 0.95); 4112 color: #fff; 4113 pointer-events: auto; 4114 border-radius: 0px; 4115 position: unset !important; 4116 transform: unset !important; 4117 text-align: left !important; 4118 } 4119 4120 @media (min-width: 960px) { 4121 .lg\:page-container { 4122 max-width: var(--general-layout-width, var(--layout-width, var(--page-width, 1140px))); 4123 padding: 0 var(--general-layout-spacing, var(--page-spacing, 40px)); 4124 margin: 0 auto; 4125 } 4126 .apps-add-cart-toast-wrap { 4127 top: 60px; 4128 } 4129 .apps-add_cart-toast{ 4130 width: 400px; 4131 border-radius: 2px; 4132 } 4133 .discount-toast-wrap { 4134 top: 60px; 4135 } 4136 .discount-toast{ 4137 width: 400px; 4138 border-radius: 2px; 4139 } 4140 } 4141</style><div id="shoplaza-section-1717490469203" class="shoplaza-section" data-section-id="1717490469203" data-section-type="cart_shopping" data-section-style=""><style> 4142 .main-content { 4143 padding-bottom: 32px; 4144 } 4145 4146 @media (min-width: 960px) { 4147 .main-content { 4148 padding-bottom: 66px; 4149 } 4150 } 4151 4152 #cart-render { 4153 width: 0; 4154 height: 0; 4155 } 4156 4157 #cart-render[loading] ~ *, 4158 #cart-render:not([finish]) ~ * { 4159 display: none; 4160 } 4161 4162 #cart-render[loading] ~ .cart-loading, 4163 #cart-render[interact-loading] ~ .cart-loading { 4164 display: var(--loading-show); 4165 } 4166 4167 #cart-render:not([finish]) ~ .cart-content > header, 4168 #cart-render:not([finish]) ~ .cart-content .cart-items-top-container,
4169 #cart-render[finish][data-empty] ~ .cart-content .cart-items-top-container, 4170 #cart-render[finish][data-empty] ~ .cart-content .cart-subtotal-outer-container, 4171 #cart-render[finish][data-empty] ~ .cart-content .cart-summary-sticky-container { 4172 display: none; 4173 } 4174 4175 .cart-content .cart-empty { 4176 padding: 80px 0; 4177 } 4178 4179 .cart-content spz-render { 4180 min-width: unset !important; 4181 } 4182 4183 .cart-continue-shopping { 4184 width: 100%; 4185 height: 46px; 4186 } 4187 4188 .cart-item-image { 4189 flex-shrink: 0; 4190 width: 19.55%; 4191 } 4192 4193 .cart-qty spz-quantity { 4194 width: 81px; 4195 } 4196 4197 .cart-qty spz-quantity .i-spzhtml-quantity-number-decrease[disabled] { 4198 cursor: pointer; 4199 } 4200 4201 .cart-qty spz-quantity input[type="number"] { 4202 width: 25px; 4203 } 4204 4205 .cart-qty spz-quantity span[role="button"] { 4206 padding: 6px; 4207 border-radius: var(--global-border-radius); 4208 } 4209 4210 .cart-qty-minimum-tip { 4211 color: #FF3F02; 4212 } 4213 4214 .cart-subtotal-free-shipping + .cart-subtotal-content { 4215 margin-top: 10px; 4216 } 4217 4218 .cart-subtotal-content { 4219 padding: 12px; 4220 border-radius: 2px; 4221 background-color: #F6F6F6; 4222 } 4223 4224 .cart-invalid-msg { 4225 color: #FF3F02; 4226 } 4227 4228 .cart-checkout-btn, 4229 .cart-summary-checkout-btn { 4230 width: 100%; 4231 height: 46px; 4232 } 4233 4234 .cart-subtotal-render { 4235 min-height: 1px; 4236 } 4237 4238 @media (max-width: 959.98px) { 4239 .cart-item { 4240 padding: 16px 0; 4241 } 4242 4243 .cart-qty-minimum-tip { 4244 margin-bottom: -8px; 4245 } 4246 4247 .cart-summary-sticky-container { 4248 z-index: var(--z-index-sticky); 4249 position: fixed; 4250 left: 0; 4251 bottom: 0; 4252 width: 100%; 4253 background-color: #fff; 4254 box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08); 4255 opacity: 0; 4256 transform: translateY(140%); 4257 } 4258 4259 .cart-summary-sticky-container .ios_safari_bottom_bar { 4260 display: none; 4261 } 4262 4263 .cart-summary-sticky-container[hidden] { 4264 display: block !important; 4265 pointer-events: none; 4266 } 4267 4268 .cart-summary-sticky-container[show] { 4269 animation: sticky-bottom-show .7s cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards; 4270 } 4271 4272 @keyframes sticky-bottom-show { 4273 0% { opacity: 1;} 4274 100% { transform: translateY(0); opacity: 1; } 4275 } 4276 4277 .cart-summary-sticky-checkout-btn { 4278 width: 33.51%; 4279 height: 46px; 4280 margin-top: 0; 4281 } 4282 4283 .cart-summary-discount-btn { 4284 display: flex; 4285 align-items: center; 4286 margin-top: 4px; 4287 padding: 4px 8px; 4288 color: #F16515; 4289 background-color: #fff; 4290 border-radius: 100px; 4291 } 4292 4293 .cart-summary-discount-btn > span { 4294 margin-right: 2px; 4295 } 4296 4297 html[dir="rtl"] .cart-summary-discount-btn > span { 4298 margin-left: 2px; 4299 margin-right: 0; 4300 } 4301 4302 .cart-summary-discount-btn svg { 4303 transition: transform .2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 4304 } 4305 4306 .cart-summary-discount-list.open .cart-summary-discount-btn svg { 4307 transform: rotate(-180deg); 4308 } 4309 4310 .cart-summary-discount-list ul { 4311 display: none; 4312 } 4313 4314 .cart-summary-discount-list.open ul { 4315 display: block; 4316 } 4317 4318 .cart-summary-sticky-render .cart-summary-discount-btn { 4319 background-color: #F6F6F6; 4320 } 4321 4322 .cart-summary-sticky-modal { 4323 z-index: calc(var(--z-index-modal) + 1); 4324 width: 100% !important; 4325 max-height: 85vh !important; 4326 display: flex; 4327 align-items: flex-end; 4328 justify-content: flex-end; 4329 pointer-events: none; 4330 } 4331 4332 .cart-summary-sticky-modal .ios_safari_bottom_bar { 4333 display: none; 4334 } 4335 4336 .cart-summary-sticky-modal-inner { 4337 width: 100%; 4338 padding: 8px 16px 16px; 4339 border-radius: 2px; 4340 background-color: #fff; 4341 box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08); 4342 pointer-events: auto; 4343 } 4344 4345 .cart-summary-sticky-modal-close { 4346 margin-right: -8px; 4347 } 4348 4349 html[dir="rtl"] .cart-summary-sticky-modal-close { 4350 margin-left: -8px; 4351 margin-right: 0; 4352 } 4353 4354 .cart-summary-sticky-modal ~ .i-spzhtml-sidebar-mask { 4355 top: unset; 4356 bottom: 0; 4357 } 4358 4359 .cart-checkout-btn-mobile { 4360 flex-shrink: 0; 4361 width: 40.268%; 4362 margin-top: 0; 4363 } 4364 4365 .cart-summary-sticky-render .cart-summary-discount-btn svg { 4366 transform: rotate(0) !important; 4367 } 4368 4369 .cart-item-delete-btn { 4370 position: relative; 4371 } 4372 4373 .cart-item-delete-btn::before { 4374 content: ''; 4375 position: absolute; 4376 top: -8px; 4377 left: -8px; 4378 right: -8px; 4379 bottom: -8px; 4380 } 4381 } 4382 4383 @media (min-width: 960px) { 4384 .cart-title { 4385 line-height: 1.1667; 4386 font-size: calc(var(--type-heading-font-size) * .8); 4387 } 4388
4389 .cart-content .cart-empty { 4390 padding: 60px 0 120px; 4391 } 4392 4393 .cart-continue-shopping { 4394 width: 420px; 4395 } 4396 4397 .cart-header-continue-shopping-btn { 4398 border-bottom: 1px solid var(--color-body-text); 4399 } 4400 4401 #cart-render[data-empty] ~ .cart-content .cart-header-continue-shopping-btn { 4402 display: none; 4403 } 4404 4405 .cart-items-header, 4406 .cart-item { 4407 display: grid; 4408 grid-template-columns: 50% 16.13% 24.2%; 4409 gap: 4.8387%; 4410 } 4411 4412 .cart-items-header { 4413 line-height: 1.14; 4414 border-bottom: 1px solid #E6E6E6; 4415 } 4416 4417 .cart-items-header li { 4418 padding: 16px 0; 4419 } 4420 4421 .cart-item-image { 4422 width: 19.35%; 4423 } 4424 4425 .cart-qty spz-quantity { 4426 width: 93px; 4427 } 4428 4429 .cart-qty spz-quantity input[type="number"] { 4430 width: 37px; 4431 } 4432 4433 .cart-subtotal-outer-container { 4434 width: 37.74%; 4435 } 4436 } 4437</style> 4438<spz-event target-id="cart-render" target-api="render" event-name="dj.addToCart" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event> 4439 4440<div id="cart"> 4441 <spz-cart id="cart-render" layout="container" empty-item="cart.line_items" @mounted="cart-items-render.rerender(data=event.cart);cart-subtotal-render.rerender(data=event.cart);cart-subtotal-free-shipping.rerender(data=event.cart);cart-summary-sticky-render.rerender(data=event.cart);" @cartincrease="theme-toast-success.showToast(content='Increased successfully')" @cartdecrease="theme-toast-success.showToast(content='Decreased successfully')" @cartchange="cart-items-render.rerender(data=event.cart);cart-subtotal-render.rerender(data=event.cart);cart-subtotal-free-shipping.rerender(data=event.cart);cart-summary-sticky-render.rerender(data=event.cart);" @cartempty="cart-payment-breakdown.toggleClass(class='hidden', force=true);" @cartitemexists="cart-payment-breakdown.toggleClass(class='hidden', force=false);" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 4442 <template><div></div></template> 4443 </spz-cart> 4444 4445 <div class="loading items-center justify-center cart-loading" role="loading" has-full-mask hide > 4446 <div class="loading-bounce"></div> 4447</div> 4448 4449 <article class="cart-content" id="cart-content"> 4450 4451 <header class="md:hidden page-container flex items-start justify-between" > 4452 <h4 class="cart-title m-0 type-heading-font-family title-color">Cart</h4> 4453 <button class="cart-header-continue-shopping-btn clear" type="button" @tap="SPZ.history(type='back', defaultUrl='/');"> 4454 Continue shopping 4455 </button> 4456</header> 4457 <div class="page-container cart-items-top-container w-full mt-4"> 4458 <div class="cart__discount-container mt-2 empty-hidden"></div> 4459</div> 4460 4461<spz-render class="page-container cart-items-render i-spzhtml-layout-container" id="cart-items-render" layout="container" manual i-spzhtml-layout="container"> 4462 <template> 4463 <div> 4464 <section spz-if="${!!(data.line_items && data.line_items.length > 0)}"> 4465 <ul class="md:hidden cart-items-header clear mt-4 color-text-default"> 4466 <li>Product</li> 4467 <li>Quantity</li> 4468 <li class="text-right">Price</li> 4469 </ul> 4470 4471 <ul class="clear cart-items"> 4472 <li class="cart-item lg:mt-7" spz-for="item in data.line_items" key="item.id"> 4473 <div class="flex items-start"> 4474 <a 4475 class="cart-item-image" 4476 spz-href="${item.product_url}?variant=${item.variant_id}" 4477 data-track-type="image" 4478 data-track-product_id="${item.variant_id}" 4479 data-track="click" 4480 data-track-content="product_link" 4481 data-track-product-id="${item.product_id}" 4482 data-track-position="cart" 4483 > 4484 <spz-img class="rounded-global-fixed overflow-hidden" width="${item.image.width}" height="${item.image.height}" layout="responsive" src="${item.image.src}" alt="${item.image.alt}" object-fit="cover" auto-fit></spz-img> 4485 </a> 4486 4487 <div class="flex-1 ml-4"> 4488 <div class="md:flex md:items-start md:justify-between"> 4489 <div class=""> 4490 <a 4491 class="product-title-color no-underline leading-1.25 line-clamp-2 lg:line-clamp-3" 4492 spz-href="${item.product_url}" 4493 data-track="click" 4494 data-track-content="product_link" 4495 data-track-product-id="${item.product_id}" 4496 data-track-position="cart" 4497 > 4498 ${item.product_title} 4499 </a> 4500 <ul class="clear break-words color-body-70 leading-1.25 mt-1 lg:mt-2"> 4501 <li>${item.options.map(option => option.value).join('/')}</li> 4502 <li class="mt-1" spz-for="propertie in item.parsedProperties"> 4503 ${propertie.name}/${propertie.isImage ? `<a class="no-underline text-inherit" spz-href="${propertie.value}" target="_blank" >View image</a>` : propertie.value} 4504 </li> 4505 </ul> 4506 <div class="discount_gift_content mt-1 lg:mt-2" spz-if="${!!item.is_free_gift}"> 4507 <svg class="" width="12" height="12" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.236 2.684c0-.407.381-.829.978-.829.58 0 1.232.481 1.232 1.29v.368H4.98c-.445 0-.915-.006-1.275-.138a.74.74 0 0 1-.343-.228c-.063-.083-.125-.22-.125-.463Zm3.783.83h-.467v-.37c0-.808.652-1.289 1.232-1.289.597 0 .978.422.978.83 0 .242-.062.378-.125.462a.74.74 0 0 1-.344.227c-.359.133-.828.14-1.274.14Zm2.848-.83c0 .309-.057.586-.169.83h.998a.829.829 0 0 1 .83.828v1.382H.472V4.342a.829.829 0 0 1 .829-.829H2.3a1.96 1.96 0 0 1-.17-.829C2.13 1.562 3.117.75 4.215.75c.644 0 1.325.302 1.785.845A2.387 2.387 0 0 1 7.784.75c1.099 0 2.083.812 2.083 1.934Zm-4.42 8.566V6.829H1.024v3.592c0 .459.37.829.83.829h3.591Zm1.105 0V6.829h4.42v3.592c0 .459-.37.829-.828.829H6.552Z" fill="#EB391B"/></svg> 4508 <div class="discount__gift_lan">Free gift</div> 4509</div> 4510 4511 <div spz-if="${item.mixed_wholesale && false}"> 4512 <style> 4513 .mixed_wholesale_label { 4514 padding: 2px 4px; 4515 } 4516 4517 .mixed_wholesale_tooltip .i-spzhtml-tooltip-arrow:before, 4518 .mixed_wholesale_tooltip .i-spzhtml-tooltip-inner { 4519 background: var(--color-body-bg); 4520 color: var(--color-body-text); 4521 } 4522 4523 .mixed_wholesale_tooltip { 4524 max-width: 100%; 4525 border-radius: 4px; 4526 box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1), 0px 2px 10px rgba(0, 0, 0, 0.1); 4527 } 4528 4529 @media (min-width: 960px) { 4530 .mixed_wholesale_tooltip { 4531 max-width: 450px; 4532 } 4533 } 4534</style> 4535<div class="mt-1 mixed_wholesale_label inline-flex color-custom-label-text bg-custom-label text-xs rounded" id="mixed-${item.id}"> 4536 Mixed Lot 4537</div> 4538<spz-tooltip layout="logic" content="You can enjoy the wholesale price when you add up to {{count}} pieces of current goods and any goods that support "Mixed Lot" in the store." interact="hover" for="mixed-${item.id}" placement="bottom" overlay-class="mixed_wholesale_tooltip"> 4539</spz-tooltip> 4540 </div> 4541</div> 4542 <button class="clear flex color-body-70 lg:hidden cart-item-delete-btn flex-shrink-0 ml-4" type="button" @tap="cart-render.delete(id=${item.id})"> 4543 <svg 4544 class="icon-delete " 4545 xmlns="http://www.w3.org/2000/svg" 4546 width="16" 4547 height="17" 4548 viewBox="0 0 16 17" 4549 fill="none" 4550> 4551 <path d="M6.375 2.65625C6.375 2.4822 6.44414 2.31528 6.56721 2.19221C6.69028 2.06914 6.8572 2 7.03125 2H9.21875C9.3928 2 9.55972 2.06914 9.68279 2.19221C9.80586 2.31528 9.875 2.4822 9.875 2.65625C9.875 2.8303 9.80586 2.99722 9.68279 3.12029C9.55972 3.24336 9.3928 3.3125 9.21875 3.3125H7.03125C6.8572 3.3125 6.69028 3.24336 6.56721 3.12029C6.44414 2.99722 6.375 2.8303 6.375 2.65625ZM2 5.28125C2 5.1072 2.06914 4.94028 2.19221 4.81721C2.31528 4.69414 2.4822 4.625 2.65625 4.625H13.5938C13.7678 4.625 13.9347 4.69414 14.0578 4.81721C14.1809 4.94028 14.25 5.1072 14.25 5.28125C14.25 5.4553 14.1809 5.62222 14.0578 5.74529C13.9347 5.86836 13.7678 5.9375 13.5938 5.9375H2.65625C2.4822 5.9375 2.31528 5.86836 2.19221 5.74529C2.06914 5.62222 2 5.4553 2 5.28125ZM7.03125 8.125C6.8572 8.125 6.69028 8.19414 6.56721 8.31721C6.44414 8.44028 6.375 8.6072 6.375 8.78125V10.9688C6.375 11.1428 6.44414 11.3097 6.56721 11.4328C6.69028 11.5559 6.8572 11.625 7.03125 11.625C7.2053 11.625 7.37222 11.5559 7.49529 11.4328C7.61836 11.3097 7.687
45515 11.1428 7.6875 10.9688V8.78125C7.6875 8.6072 7.61836 8.44028 7.49529 8.31721C7.37222 8.19414 7.2053 8.125 7.03125 8.125ZM8.5625 8.78125C8.5625 8.6072 8.63164 8.44028 8.75471 8.31721C8.87778 8.19414 9.0447 8.125 9.21875 8.125C9.3928 8.125 9.55972 8.19414 9.68279 8.31721C9.80586 8.44028 9.875 8.6072 9.875 8.78125V10.9688C9.875 11.1428 9.80586 11.3097 9.68279 11.4328C9.55972 11.5559 9.3928 11.625 9.21875 11.625C9.0447 11.625 8.87778 11.5559 8.75471 11.4328C8.63164 11.3097 8.5625 11.1428 8.5625 10.9688V8.78125ZM4.1875 7.03125C4.1875 6.8572 4.11836 6.69028 3.99529 6.56721C3.87222 6.44414 3.7053 6.375 3.53125 6.375C3.3572 6.375 3.19028 6.44414 3.06721 6.56721C2.94414 6.69028 2.875 6.8572 2.875 7.03125V13.5938C2.875 14.2319 3.12852 14.844 3.57977 15.2952C4.03103 15.7465 4.64307 16 5.28125 16H10.9688C11.2847 16 11.5976 15.9378 11.8896 15.8168C12.1815 15.6959 12.4468 15.5187 12.6702 15.2952C12.8937 15.0718 13.0709 14.8065 13.1918 14.5146C13.3128 14.2226 13.375 13.9097 13.375 13.5938V7.03125C13.375 6.8572 13.3059 6.69028 13.1828 6.56721C13.0597 6.44414 12.8928 6.375 12.7188 6.375C12.5447 6.375 12.3778 6.44414 12.2547 6.56721C12.1316 6.69028 12.0625 6.8572 12.0625 7.03125V13.5938C12.0625 14.1975 11.5725 14.6875 10.9688 14.6875H5.28125C4.6775 14.6875 4.1875 14.1975 4.1875 13.5938V7.03125Z" fill="currentColor" fill-opacity="0.6"/> 4552</svg> 4553</button> 4554 </div> 4555 4556 <div class="lg:hidden mt-2 cart-qty-minimum-tip" spz-if="${!!item.item_text}">${item.item_text}</div> 4557 4558 <div class="lg:hidden mt-2"> 4559 <div class="flex items-center justify-between"> 4560 <div class="flex flex-wrap items-center mr-1 leading-1.25"> 4561 <spz-currency class="${!!item.final_line_price && (+item.final_line_price < +item.line_price) ? 'color-compare-price line-through md:order-1 ml-1 body-minus-2' : 'color-price font-medium font-medium body-plus-2'}" layout="container" value="${item.line_price}"></spz-currency> 4562 <spz-currency class="color-price font-medium font-medium body-plus-2 " spz-if="${!!item.final_line_price && (+item.final_line_price < +item.line_price)}" layout="container" value="${item.final_line_price}"></spz-currency> 4563</div> 4564 <div class="flex-shrink-0 flex flex-col cart-qty"> 4565 <div class="break-words" spz-if="${!!item.disabled}"> 4566 *${item.quantity} 4567 </div> 4568 <spz-quantity 4569 spz-else 4570 icon-class="clear flex items-center justify-center flex-shrink-0 h-full w-7" 4571 input-class="clear flex-1 h-full text-center body-base color-body-text" 4572 name="quantity" 4573 value="${item.quantity}" 4574 min="1" 4575 max="${item.available_quantity}" 4576 height="28" 4577 layout="flex-item" 4578 @quantityChange="cart-render.update(value=event.value,id='${item.id}');" 4579 @quantityChangeUnderflow="cart-render.delete(id='${item.id}');" 4580 > 4581 <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="decrease"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg> 4582 <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="increase"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg> 4583 </spz-quantity> 4584 4585 <div class="hidden mt-1" spz-if="${!!item.item_text}">${item.item_text}</div> 4586</div> 4587 </div> 4588 <div class="flex items-start flex-wrap mt-1 body-minus-2 leading-1.25 color-body-60" spz-for="discount_item in item.discount_applications"> 4589 <div class="flex"> 4590 <spz-img spz-if="${!!discount_item.icon}" class="flex-shrink-0 mr-1 mt-0.5" src="${discount_item.icon}" layout="fixed" width="12" height="12" alt="item.image.alt || item.product_title" object-fit="contain"></spz-img> 4591 <span>${discount_item.title}</span> 4592 </div> 4593 <span spz-if="${discount_item.discount_amount > 0 || discount_item.amount > 0}" class="flex-shrink-0">(-<spz-currency style="display: inline-block;" layout="container" value="${discount_item.discount_amount || discount_item.amount}"></spz-currency>)</span> 4594</div> 4595 </div> 4596 </div> 4597 </div> 4598 <div class="md:hidden"> 4599 <div class="flex items-center"> 4600 <div class="flex-shrink-0 flex flex-col cart-qty">
4601 <div class="break-words" spz-if="${!!item.disabled}"> 4602 *${item.quantity} 4603 </div> 4604 <spz-quantity 4605 spz-else 4606 icon-class="clear flex items-center justify-center flex-shrink-0 h-full w-7" 4607 input-class="clear flex-1 h-full text-center body-base color-body-text" 4608 name="quantity" 4609 value="${item.quantity}" 4610 min="1" 4611 max="${item.available_quantity}" 4612 height="28" 4613 layout="flex-item" 4614 @quantityChange="cart-render.update(value=event.value,id='${item.id}');" 4615 @quantityChangeUnderflow="cart-render.delete(id='${item.id}');" 4616 > 4617 <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="decrease"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg> 4618 <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="increase"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg> 4619 </spz-quantity> 4620 4621 <div class="hidden mt-1" spz-if="${!!item.item_text}">${item.item_text}</div> 4622</div> 4623 <button class="clear flex color-body-70 ml-6" type="button" @tap="cart-render.delete(id=${item.id})"> 4624 <svg 4625 class="icon-delete " 4626 xmlns="http://www.w3.org/2000/svg" 4627 width="16" 4628 height="17" 4629 viewBox="0 0 16 17" 4630 fill="none" 4631> 4632 <path d="M6.375 2.65625C6.375 2.4822 6.44414 2.31528 6.56721 2.19221C6.69028 2.06914 6.8572 2 7.03125 2H9.21875C9.3928 2 9.55972 2.06914 9.68279 2.19221C9.80586 2.31528 9.875 2.4822 9.875 2.65625C9.875 2.8303 9.80586 2.99722 9.68279 3.12029C9.55972 3.24336 9.3928 3.3125 9.21875 3.3125H7.03125C6.8572 3.3125 6.69028 3.24336 6.56721 3.12029C6.44414 2.99722 6.375 2.8303 6.375 2.65625ZM2 5.28125C2 5.1072 2.06914 4.94028 2.19221 4.81721C2.31528 4.69414 2.4822 4.625 2.65625 4.625H13.5938C13.7678 4.625 13.9347 4.69414 14.0578 4.81721C14.1809 4.94028 14.25 5.1072 14.25 5.28125C14.25 5.4553 14.1809 5.62222 14.0578 5.74529C13.9347 5.86836 13.7678 5.9375 13.5938 5.9375H2.65625C2.4822 5.9375 2.31528 5.86836 2.19221 5.74529C2.06914 5.62222 2 5.4553 2 5.28125ZM7.03125 8.125C6.8572 8.125 6.69028 8.19414 6.56721 8.31721C6.44414 8.44028 6.375 8.6072 6.375 8.78125V10.9688C6.375 11.1428 6.44414 11.3097 6.56721 11.4328C6.69028 11.5559 6.8572 11.625 7.03125 11.625C7.2053 11.625 7.37222 11.5559 7.49529 11.4328C7.61836 11.3097 7.6875 11.1428 7.6875 10.9688V8.78125C7.6875 8.6072 7.61836 8.44028 7.49529 8.31721C7.37222 8.19414 7.2053 8.125 7.03125 8.125ZM8.5625 8.78125C8.5625 8.6072 8.63164 8.44028 8.75471 8.31721C8.87778 8.19414 9.0447 8.125 9.21875 8.125C9.3928 8.125 9.55972 8.19414 9.68279 8.31721C9.80586 8.44028 9.875 8.6072 9.875 8.78125V10.9688C9.875 11.1428 9.80586 11.3097 9.68279 11.4328C9.55972 11.5559 9.3928 11.625 9.21875 11.625C9.0447 11.625 8.87778 11.5559 8.75471 11.4328C8.63164 11.3097 8.5625 11.1428 8.5625 10.9688V8.78125ZM4.1875 7.03125C4.1875 6.8572 4.11836 6.69028 3.99529 6.56721C3.87222 6.44414 3.7053 6.375 3.53125 6.375C3.3572 6.375 3.19028 6.44414 3.06721 6.56721C2.94414 6.69028 2.875 6.8572 2.875 7.03125V13.5938C2.875 14.2319 3.12852 14.844 3.57977 15.2952C4.03103 15.7465 4.64307 16 5.28125 16H10.9688C11.2847 16 11.5976 15.9378 11.8896 15.8168C12.1815 15.6959 12.4468 15.5187 12.6702 15.2952C12.8937 15.0718 13.0709 14.8065 13.1918 14.5146C13.3128 14.2226 13.375 13.9097 13.375 13.5938V7.03125C13.375 6.8572 13.3059 6.69028 13.1828 6.56721C13.0597 6.44414 12.8928 6.375 12.7188 6.375C12.5447 6.375 12.3778 6.44414 12.2547 6.56721C12.1316 6.69028 12.0625 6.8572 12.0625 7.03125V13.5938C12.0625 14.1975 11.5725 14.6875 10.9688 14.6875H5.28125C4.6775 14.6875 4.1875 14.1975 4.1875 13.5938V7.03125Z" fill="currentColor" fill-opacity="0.6"/> 4633</svg> 4634</button> 4635 </div> 4636 <div class="mt-1 cart-qty-minimum-tip" spz-if="${!!item.item_text}">${item.item_text}</div> 4637 </div> 4638 <div class="md:hidden text-right"> 4639 <div class=" leading-1.25"> 4640 <spz-currency class="${!!item.final_line_price && (+item.final_line_price < +item.line_price) ? 'color-compare-price line-through ' : 'color-price font-medium font-medium body-plus-2'}" layout="container" value="${item.line_price}"></spz-currency> 4641 <spz-currency class="color-price font-medium font-medium body-plus-2 mt-1" spz-if="${!!item.final_line_price && (+item.final_line_price < +item.line_price)}" layout="container" value="${item.final_line_price}"></spz-currency> 4642</div> 4643 <div class="flex items-start flex-wrap justify-end mt-1 body-minus-2 leading-1.25 color-body-60 text-right" spz-for="discount_item in item.discount_applications"> 4644 <div class="flex"> 4645 <spz-img spz-if="${!!discount_item.icon}" class="flex-shrink-0 mr-1 mt-0.5" src="${discount_item.icon}" layout="fixed" width="12" height="12" alt="item.image.alt || item.product_title" object-fit="contain"></spz-img> 4646 <span>${discount_item.title}</span> 4647 </div> 4648 <span spz-if="${discount_item.discount_amount > 0 || discount_item.amount > 0}" class="flex-shrink-0">(-<spz-currency style="display: inline-block;" layout="container" value="${discount_item.discount_amount || discount_item.amount}"></spz-currency>)</span> 4649</div> 4650 </div> 4651 </li> 4652 </ul> 4653 </section> 4654 <div class="cart-empty flex flex-col items-center text-center " spz-else> 4655 <svg class="color-body-70" xmlns="http://www.w3.org/2000/svg" width="80" height="70" fill="none">
4655<path fill="currentColor" fill-opacity=".7" d="M41.867 16.76c.64 0 1.168.486 1.231 1.11l.007.127v17.334a1.238 1.238 0 0 1-2.47.126l-.006-.126V17.997c0-.683.554-1.238 1.238-1.238ZM55.183 17.87a1.238 1.238 0 0 0-2.47.127v17.334l.007.126a1.238 1.238 0 0 0 2.47-.126V17.997l-.007-.126ZM29.081 16.782c.63-.122 1.24.255 1.422.856l.03.123 3.37 17.333a1.238 1.238 0 0 1-2.4.596l-.03-.123-3.37-17.333a1.238 1.238 0 0 1 .978-1.452ZM65.503 17.638a1.238 1.238 0 0 1 2.4.596l-3.37 17.333-.03.123a1.238 1.238 0 0 1-2.4-.596l3.37-17.333.03-.123Z"/><path fill="currentColor" fill-opacity=".7" fill-rule="evenodd" d="M17.622 3.07A3.601 3.601 0 0 0 14.13.355H1.865l-.68.006C.56.425.627.951.627 1.593c0 .684 0 1.238.684 1.238H14.13l.123.007c.484.052.885.413.981.9l7.424 37.368a6.136 6.136 0 0 0-3.525 5.555 6.135 6.135 0 0 0 6.136 6.136h46.229l.126-.007a1.238 1.238 0 0 0-.126-2.47h-46.23l-.194-.005a3.659 3.659 0 0 1-3.465-3.654 3.659 3.659 0 0 1 3.66-3.66h45.533a3.097 3.097 0 0 0 3.041-2.51l5.475-28.477a3.095 3.095 0 0 0-3.038-3.68H18.672l-1.009-5.078-.041-.186Zm1.736 7.74 5.715 29.714h45.73a.62.62 0 0 0 .608-.502l5.475-28.476a.619.619 0 0 0-.606-.736H19.358ZM20.643 62.074a7.57 7.57 0 0 1 7.571-7.57 7.57 7.57 0 1 1-7.57 7.57Zm12.666 0a5.094 5.094 0 1 0-10.189.002 5.094 5.094 0 0 0 10.189-.002ZM62.028 54.504a7.57 7.57 0 1 0 0 15.142 7.57 7.57 0 0 0 0-15.142Zm0 2.477a5.094 5.094 0 1 1 0 10.188 5.094 5.094 0 0 1 0-10.188Z" clip-rule="evenodd"/></svg> 4656 <div class="mt-5 color-body-70 font-medium body-plus-4 leading-1.2">Your shopping bag is empty</div> 4657 <button class="cart-empty-btn button-primary clear flex items-center justify-center text-center mt-5 cart-continue-shopping body-plus-2" data-track="cart-continue-shopping" @tap="SPZ.history(type='back', defaultUrl='/');" type="button"> 4658 Continue shopping 4659 </button> 4660</div> 4661 </div> 4662 </template> 4663</spz-render> 4664 <div class="page-container" > 4665
4665<script async crossorigin="anonymous" src="//static.staticdj.com/cuttlefish/v1/spz.min.js"></script>
4665 4666<style> 4667 [data-section-id="1717490469203"] .discount-cart-banner-list { 4668 margin-top: 8px; 4669 } 4670 [data-section-id="1717490469203"] .discount-cart-banner-list .discount-cart-banner-list-inner { 4671 font-size: 16px; 4672 font-style: normal; 4673 font-weight: 400; 4674 line-height: 20px; 4675 padding: 16px 12px; 4676 background: #F6F6F6; 4677 margin-bottom: 8px; 4678 display: flex; 4679 justify-content: space-between; 4680 cursor: pointer; 4681 align-items: center; 4682 border-radius: 2px; 4683 } 4684 [data-section-id="1717490469203"] .discount-banner-inner-left { 4685 display: flex; 4686 align-items: center; 4687 gap: 6px; 4688 } 4689 4690 [data-section-id="1717490469203"] .discount-banner-icon { 4691 width: 16px; 4692 height: 16px; 4693 flex-shrink: 0; 4694 } 4695 [data-section-id="1717490469203"] .discount-banner-text span { 4696 color: #EB391B; 4697 } 4698 4699 #app-discount-cart-banner-block { 4700 box-sizing: border-box; 4701 width: 100%; 4702 max-width: var(--general-layout-spacing, var(--layout-width, var(--page-width, 1140px))); 4703 margin: 0 auto; 4704 word-break: break-word; 4705 } 4706 [data-section-type=""] #app-discount-cart-banner-block { 4707 padding: 0 var(--general-layout-spacing, var(--page-spacing, 40px)); 4708 } 4709 4710 @media (max-width: 959.98px) { 4711 [data-section-type=""] #app-discount-cart-banner-block { 4712 padding: 0 var(--general-layout-spacing, var(--page-spacing, 16px)); 4713 } 4714 } 4715</style> 4716<style> 4717 /* éå®å¼¹çªèªèº« classï¼é¿å 误伤é¦é¡µéæ¶ä¿éå¤ç¨åå id çååå®¹å¨ */ 4718 #discount-match-drawer.app_discount_basic_style { 4719 display: none; 4720 } 4721 #appBundlBottomContainer { 4722 padding: 16px 20px; 4723 background: #FFF; 4724 box-shadow: 0px -8px 20px 0px rgba(0, 0, 0, 0.08); 4725 } 4726 #appDiscountBundleBottom .app-bundle-discount_bottom_button { 4727 max-width: 600px !important; 4728 margin: 12px auto 0 !important; 4729 } 4730 #discount-match-drawer .discount-match-drawer { 4731 height: 90vh; 4732 position: fixed; 4733 bottom: 0; 4734 left: 0; 4735 right: 0; 4736 width: 100%; 4737 background-color: #fff; 4738 z-index: 1049; 4739 display: flex; 4740 flex-direction: column; 4741 border-radius: 10px 10px 0 0; 4742 } 4743 #discount-match-drawer .discount-match-mask { 4744 position: fixed; 4745 top: 0; 4746 bottom: 0; 4747 left: 0; 4748 right: 0; 4749 background: rgba(0, 0, 0, 0.3); 4750 z-index: 1038; 4751 } 4752 /* è´ç©è½¦æ½å±ä»æå¼æ¶ï¼ååå¼¹çªå¹é æ½å±å®½åº¦(JS 设 width)ãé å³ãæå±çº§ç卿½å±ä¹ä¸ */ 4753 #discount-match-drawer.in-cart-drawer .discount-match-drawer { 4754 right: 0 !important; 4755 left: auto !important; 4756 z-index: 1050 !important; 4757 } 4758 #discount-match-drawer.in-cart-drawer .discount-match-mask { 4759 z-index: 1050 !important; 4760 } 4761 #discount-match-drawer .discount-match-drawer-content { 4762 overflow: hidden; 4763 overflow-y: scroll; 4764 position: relative; 4765 } 4766 4767 #discount-match-drawer .drawer-translateContent { 4768 animation-duration: 0.4s; 4769 animation-fill-mode: both; 4770 -webkit-animation-name: discountfadeInBottom; 4771 -moz-animation-name: discountfadeInBottom; 4772 -o-animation-name: discountfadeInBottom; 4773 animation-name: discountfadeInBottom; 4774 -webkit-transition-timing-function: ease-in; 4775 -moz-transition-timing-function: ease-in; 4776 -o-transition-timing-function: ease-in; 4777 transition-timing-function: ease-in; 4778 } 4779 4780 @keyframes discountfadeInBottom { 4781 0% { 4782 opacity: 0; 4783 transform: translate3d(0%, 100%, 0); 4784 } 4785 40% { 4786 opacity: 0.2; 4787 transform: translate3d(0%, 10%, 0); 4788 } 4789 100% { 4790 opacity: 1; 4791 transform: none; 4792 } 4793 } 4794 #discount-match-drawer .discount-match-drawer .discount-match-drawer-header { 4795 padding: 20px 24px; 4796 display: flex; 4797 justify-content: flex-end; 4798 border-bottom: 1px solid #E6E6E6; 4799 } 4800 .header-close-icon { 4801 display: flex; 4802 justify-content: center; 4803 align-items: center;
4804 width: 20px; 4805 height: 20px; 4806 } 4807 @media (max-width: 959.98px) { 4808 #discount-match-drawer .discount-match-drawer .discount-match-drawer-header { 4809 padding: 12px 20px; 4810 } 4811 } 4812 /* input, button, ul clear */ 4813 #discount-match-drawer .clear { 4814 margin: 0; 4815 padding: 0; 4816 outline: none; 4817 border: none; 4818 background-color: transparent; 4819 list-style: none; 4820 } 4821 4822 .discount-selector { 4823 display: flex; 4824 align-items: center; 4825 overflow-x: auto; 4826 -webkit-overflow-scrolling: touch; /* å ¼å®¹ iOS */ 4827 scrollbar-width: none; /* å ¼å®¹ Firefox */ 4828 } 4829 /* éèæ»å¨æ¡ - éç¨äº Webkit æµè§å¨ï¼ChromeãSafariï¼ */ 4830 .discount-selector::-webkit-scrollbar { 4831 display: none; 4832 } 4833 .discount-selector__option { 4834 position: relative; 4835 cursor: pointer; 4836 padding: 12px; 4837 font-size: 20px; 4838 font-weight: 600; 4839 color: #202020; 4840 flex-shrink: 0; 4841 } 4842 .discount-selector__option span { 4843 white-space: nowrap; 4844 } 4845 4846 .discount-selector__option[selected] { 4847 color: #FC5161; 4848 } 4849 .discount-selector__option::after { 4850 position: absolute; 4851 bottom: 0; 4852 left: 0; 4853 content: ''; 4854 display: block; 4855 height: 2px; 4856 background-color: #FC5161; 4857 width: 0; 4858 transition: width 0.25s cubic-bezier(0.18, 0.77, 0.58, 1); 4859 } 4860 .discount-selector__option[selected]::after { 4861 width: 100%; 4862 } 4863 .discount-match-text { 4864 padding: 10px; 4865 background-color: #FFEAD4; 4866 display: flex; 4867 align-items: center; 4868 justify-content: center; 4869 gap: 4px; 4870 } 4871 .discount-match-text__icon { 4872 width: 16px; 4873 height: 16px; 4874 flex-shrink: 0; 4875 } 4876 .discount-match-text__text span { 4877 color: #EB391B; 4878 } 4879 @media (max-width: 767.98px) { 4880 .discount-selector__option { 4881 max-width: 160px; 4882 } 4883 .discount-selector__option span { 4884 font-size: 14px; 4885 display: -webkit-box; 4886 -webkit-box-orient: vertical; 4887 -webkit-line-clamp: 1; 4888 overflow: hidden; 4889 text-overflow: ellipsis; 4890 white-space: normal; 4891 } 4892 .discount-match-text__text span { 4893 font-size: 14px; 4894 } 4895 } 4896</style> 4897<style> 4898 .app_discount_basic_style .block { display: block; } 4899 .app_discount_basic_style .inline-block { display: inline-block; } 4900 4901 .app_discount_basic_style .flex { display: flex; } 4902 .app_discount_basic_style .flex-wrap { flex-wrap: wrap; } 4903 .app_discount_basic_style .flex-nowrap { flex-wrap: nowrap; } 4904 .app_discount_basic_style .flex-col { flex-direction: column; } 4905 .app_discount_basic_style .flex-col-reverse { flex-direction: column-reverse; } 4906 .app_discount_basic_style .items-start { align-items: flex-start; } 4907 .app_discount_basic_style .items-center { align-items: center; } 4908 .app_discount_basic_style .items-stretch { align-items: stretch; } 4909 .app_discount_basic_style .items-end { align-items: flex-end; } 4910 .app_discount_basic_style .justify-between { justify-content: space-between; } 4911 .app_discount_basic_style .justify-center { justify-content: center; } 4912 .app_discount_basic_style .justify-end { justify-content: flex-end; } 4913 4914 .app_discount_basic_style .hidden { display: none; } 4915 4916 .app_discount_basic_style .flex-1 { flex: 1; } 4917 .app_discount_basic_style .flex-shrink-0 { flex-shrink: 0; } 4918 4919 .app_discount_basic_style .order-1 { order:1 } 4920 .app_discount_basic_style .order-10 { order: 10; } 4921 .app_discount_basic_style .order--10 { order: -10; } 4922 .app_discount_basic_style .order--20 { order: -20; } 4923 4924 .app_discount_basic_style .relative { position: relative; } 4925 .app_discount_basic_style .absolute { position: absolute; } 4926 .app_discount_basic_style .sticky { position: sticky; } 4927 .app_discount_basic_style .fixed { position: fixed;} 4928 .app_discount_basic_style .top-0 { top: 0; } 4929 .app_discount_basic_style .left-0 { left: 0; } 4930 .app_discount_basic_style .right-0 { right: 0; } 4931 .app_discount_basic_style .right-1\/2 { right: 50%; } 4932 .app_discount_basic_style .bottom-0 { bottom: 0; } 4933 .app_discount_basic_style .inset-0 { top: 0; left: 0; right: 0; bottom: 0; } 4934 4935 /* z-index */ 4936 .app_discount_basic_style .z-10 { z-index: 10; } 4937 .app_discount_basic_style .z-30 { z-index: 30; } 4938 .app_discount_basic_style .z-100 { z-index: 100; } 4939 .app_discount_basic_style .z-1081 { z-index: 1081; } 4940 4941 .app_discount_basic_style .w-1\/2 { width: 50%; } 4942 .app_discount_basic_style .w-1\/3 { width: calc(1 / 3 * 100%); } 4943 .app_discount_basic_style .w-auto { width: auto; } 4944 .app_discount_basic_style .w-full { width: 100%; } 4945 .app_discount_basic_style .h-full { height: 100%; } 4946 .app_discount_basic_style .\!h-auto { height: auto !important; } 4947 4948 /* text font size */ 4949 .app_discount_basic_style .body-text-xs { font-size: calc(var(--type-body-font-size) * 0.85); } 4950 .app_discount_basic_style .body-text-base { font-size: var(--type-body-font-size); } 4951 .app_discount_basic_style .body-text-lg { font-size: calc(var(--type-body-font-size) * 1.08); } 4952 .app_discount_basic_style .body-text-xl { font-size: calc(var(--type-body-font-size) * 1.15); } 4953 4954 .app_discount_basic_style .body-plus-1 { font-size: calc(var(--type-body-font-size) + 1px); } 4955 .app_discount_basic_style .body-plus-2 { font-size: calc(var(--type-body-font-size) + 2px); } 4956 .app_discount_basic_style .body-plus-3 { font-size: calc(var(--type-body-font-size) + 3px); } 4957 .app_discount_basic_style .body-plus-4 { font-size: calc(var(--type-body-font-size) + 4px); } 4958 .app_discount_basic_style .body-plus-6 { font-size: calc(var(--type-body-font-size) + 6px); } 4959 .app_discount_basic_style .body-minus-1 { font-size: calc(var(--type-body-font-size) - 1px); } 4960 .app_discount_basic_style .body-minus-2 { font-size: calc(var(--type-body-font-size) - 2px); } 4961 .app_discount_basic_style .body-minus-3 { font-size: calc(var(--type-body-font-size) - 3px); } 4962 4963 .app_discount_basic_style .heading-4xs, 4964 .app_discount_basic_style .heading-3xs, 4965 .app_discount_basic_style .heading-2xs, 4966 .app_discount_basic_style .heading-xs, 4967 .app_discount_basic_style .heading-base, 4968 .app_discount_basic_style .heading-style { 4969 line-height: var(--type-title-line-height); 4970 letter-spacing: var(--type-title-spacing); 4971 text-transform: var(--type-title-capitalize); 4972 } 4973 4974 /* heading font size */ 4975 .app_discount_basic_style .heading-4xs { font-size: calc(var(--type-title-font-size) * 0.57) } 4976 .app_discount_basic_style .heading-3xs { font-size: calc(var(--type-title-font-size) * 0.63) } 4977 .app_discount_basic_style .heading-2xs { font-size: calc(var(--type-title-font-size) * 0.75) } 4978 .app_discount_basic_style .heading-xs { font-size: calc(var(--type-title-font-size) * 0.85); } 4979 .app_discount_basic_style .heading-base { font-size: var(--type-title-font-size) } 4980 4981 /* section font size */ 4982 .app_discount_basic_style .section-heading-base { font-size: var(--font-section-heading-size); } 4983 4984 /* fixed font size */ 4985 .app_discount_basic_style .text-0 { font-size: 0; } 4986 .app_discount_basic_style .text-sm { font-size: 12px; line-height: 14px; } 4987 .app_discount_basic_style .text-base { font-size: 14px; line-height: 18px; } 4988 .app_discount_basic_style .text-lg { font-size: 16px; line-height: 20px; } 4989 4990 /* font size */ 4991 .app_discount_basic_style .text-3xl { font-size: 1.875rem; } 4992 4993 /* font weight */ 4994 .app_discount_basic_style .font-normal { font-weight: normal; } 4995 .app_discount_basic_style .font-medium { font-weight: 500; } 4996 .app_discount_basic_style .font-semibold { font-weight: 600; } 4997 .app_discount_basic_style .font-bold { font-weight: 700; } 4998 4999 /* line height */ 5000 .app_discount_basic_style .leading-body { line-height: var(--type-body-line-height); } 5001 .app_discount_basic_style .leading-title { line-height: var(--type-title-line-height); } 5002 .app_discount_basic_style .leading-1 { line-height: 1; } 5003 .app_discount_basic_style .leading-1\.1 { line-height: 1.1; } 5004 .app_discount_basic_style .leading-1\.2 { line-height: 1.2; } 5005 .app_discount_basic_style .leading-1\.3 { line-height: 1.3; } 5006 .app_discount_basic_style .leading-1\.4 { line-height: 1.4; } 5007 .app_discount_basic_style .leading-1\.5 { line-height: 1.5; } 5008 .app_discount_basic_style .leading-1\.6 { line-height: 1.6; } 5009 5010 /* letter spacing */ 5011 .app_discount_basic_style .tracking-nav { letter-spacing:var(--type-nav-spacing); } 5012 .app_discount_basic_style .tracking-title { letter-spacing: var(--type-title-spacing); } 5013 .app_discount_basic_style .tracking-body { letter-spacing: var(--type-body-spacing); } 5014 5015 /* text transform */ 5016 .app_discount_basic_style .text-uppercase { text-transform: uppercase; } 5017 .app_discount_basic_style .title-transform { text-transform : var(--global-title-transform); } 5018 .app_discount_basic_style .product-title-transform { text-transform : var(--global-product-title-transform); } 5019 5020 /* white space */ 5021 .app_discount_basic_style .whitespace-nowrap { white-space: nowrap; } 5022 5023 /* break-wrods */ 5024 .app_discount_basic_style .break-words { overflow-wrap: break-word; word-break: break-word; } 5025 5026 /* color */ 5027 .app_discount_basic_style .text-current { color: currentColor } 5028 .app_discount_basic_style .color-white { color: var(--color-white, #fff); } 5029 .app_discount_basic_style .color-body { color: var(--color-body-text); } 5030 .app_discount_basic_style .color-body-40 { color: var(--color-body-text-40); } 5031 .app_discount_basic_style .color-body-60 { color: var(--color-body-text-60); } 5032 .app_discount_basic_style .color-body-70 { color: var(--color-body-text-70); } 5033 .app_discount_basic_style .color-body-80 { color: var(--color-body-text-80); }
5034 .app_discount_basic_style .color-body-default { color: var(--color-body-text-default); } 5035 .app_discount_basic_style .color-primary-btn-bg { color: var(--color-primary-btn-bg); } 5036 .app_discount_basic_style .color-save-text { color: var(--color-save-text); } 5037 .app_discount_basic_style .color-compare-price { color: var(--color-compare-at-price-text); } 5038 .app_discount_basic_style .color-header-color { color: var(--color-header-text) ;} 5039 .app_discount_basic_style .color-countdown-time-text { color: var(--color-countdown-time-text); } 5040 .app_discount_basic_style .color-footer { color: var(--color-footer-text); } 5041 5042 /* background */ 5043 .app_discount_basic_style .bg-transparent { background-color: transparent; } 5044 .app_discount_basic_style .bg-white { background-color: var(--color-white, #fff); } 5045 .app_discount_basic_style .bg-body { background-color: var(--color-body-bg); } 5046 .app_discount_basic_style .bg-body-text { background-color: var(--color-body-text); } 5047 .app_discount_basic_style .bg-primary-btn { background-color: var(--color-primary-btn-bg); } 5048 .app_discount_basic_style .bg-primary-btn-10 { background-color: var(--color-primary-btn-bg-10); } 5049 .app_discount_basic_style .bg-header { background-color: var(--color-header-bg) } 5050 .app_discount_basic_style .bg-countdown { background-color: var(--color-countdown-bg); } 5051 .app_discount_basic_style .bg-footer { background-color: var(--color-footer-bg); } 5052 5053 /* schema style */ 5054 .app_discount_basic_style .scheme-1 { 5055 color: var(--color-scheme-1-text); 5056 background-color: var(--color-scheme-1-bg); 5057 background-image: var(--color-scheme-1-image); 5058 background-repeat: var(--color-scheme-1-repeat); 5059 background-size: var(--color-scheme-1-size); 5060 } 5061 5062 .app_discount_basic_style .scheme-2 { 5063 color: var(--color-scheme-2-text); 5064 background-color: var(--color-scheme-2-bg); 5065 background-image: var(--color-scheme-2-image); 5066 background-repeat: var(--color-scheme-2-repeat); 5067 background-size: var(--color-scheme-2-size); 5068 } 5069 5070 .app_discount_basic_style .scheme-3 { 5071 color: var(--color-scheme-3-text); 5072 background-color: var(--color-scheme-3-bg); 5073 background-image: var(--color-scheme-3-image); 5074 background-repeat: var(--color-scheme-3-repeat); 5075 background-size: var(--color-scheme-3-size); 5076 } 5077 5078 /* shadow */ 5079 .app_discount_basic_style .shadow { box-shadow: 0 10px 40px var(--color-shadow); } 5080 5081 /* text align */ 5082 .app_discount_basic_style .text-left { text-align: left; } 5083 .app_discount_basic_style .text-center { text-align: center; } 5084 .app_discount_basic_style .text-right { text-align: right; } 5085 5086 /* text decoration */ 5087 .app_discount_basic_style .line-through { text-decoration: line-through; } 5088 .app_discount_basic_style .underline { text-decoration-line: underline; } 5089 .app_discount_basic_style .no-underline { text-decoration-line: none; } 5090 5091 /* border radius */ 5092 .app_discount_basic_style .rounded { border-radius: 4px; } 5093 .app_discount_basic_style .rounded-md { border-radius: 6px; } 5094 .app_discount_basic_style .rounded-lg { border-radius: 8px; } 5095 .app_discount_basic_style .rounded-xl { border-radius: 12px; } 5096 .app_discount_basic_style .rounded-2xl { border-radius: 16px; } 5097 .app_discount_basic_style .rounded-full { border-radius: 9999px; } 5098 .app_discount_basic_style .rounded-btn { border-radius: var(--global-border-radius-btn); } 5099 .app_discount_basic_style .rounded-global { border-radius: var(--global-border-radius); } 5100 .app_discount_basic_style .rounded-r-none { border-top-right-radius: 0; border-bottom-right-radius: 0; } 5101 .app_discount_basic_style .rounded-r-btn { border-top-right-radius: var(--global-border-radius-btn); border-bottom-right-radius: var(--global-border-radius-btn); } 5102 5103 /* border */ 5104 .app_discount_basic_style .border { border: 1px solid var(--color-borders); } 5105 .app_discount_basic_style .border-top { border-top: 1px solid var(--color-borders); } 5106 .app_discount_basic_style .border-bottom { border-bottom: 1px solid var(--color-borders); } 5107 .app_discount_basic_style .border-none { border: none } 5108 .app_discount_basic_style .border-header { border: 1px solid var( --color-header-border); } 5109 .app_discount_basic_style .border-b-header { border-bottom: 1px solid var( --color-header-border); } 5110 5111 /* transform */ 5112 .app_discount_basic_style .rotate-90 { transform: rotate(90deg); } 5113 .app_discount_basic_style .rotate--90 { transform: rotate(-90deg); } 5114 .app_discount_basic_style .rotate-180 { transform: rotate(180deg); } 5115 .app_discount_basic_style .transform { transform: translateX(0) translateY(0) rotate(0) skewX(0) skewY(0) scaleX(1) scaleY(1);} 5116 5117 .app_discount_basic_style .cursor-pointer { cursor: pointer; } 5118 .app_discount_basic_style .pointer-events-none { pointer-events: none; } 5119 .app_discount_basic_style .pointer-events-auto { pointer-events: auto; } 5120 5121 .app_discount_basic_style .invisible { visibility: hidden } 5122 5123 /* overflow */ 5124 .app_discount_basic_style .overflow-auto { overflow: auto; } 5125 .app_discount_basic_style .overflow-hidden { overflow: hidden; } 5126 .app_discount_basic_style .overflow-y-scroll { overflow-x: hidden;
5126 overflow-y: scroll; } 5127 .app_discount_basic_style .overflow-x-scroll { overflow-x: scroll; overflow-y: hidden; } 5128 .app_discount_basic_style .overflow-x-auto { overflow-x: auto; } 5129 5130 /* opacity */ 5131 .app_discount_basic_style .opacity-0 { opacity: 0; } 5132 .app_discount_basic_style .opacity-100 { opacity: 100 } 5133 5134 /* placeholder svg */ 5135 .app_discount_basic_style .placeholder-svg { 5136 position: relative; 5137 padding-bottom: 100%; 5138 } 5139 5140 .app_discount_basic_style .placeholder-svg > svg { 5141 position: absolute; 5142 top: 0; 5143 right: 0; 5144 bottom: 0; 5145 left: 0; 5146 width: 100%; 5147 height: 100%; 5148 fill: #c0c0c0; 5149 background-color: #eee; 5150 } 5151 5152 /* margin */ 5153 .app_discount_basic_style .m-0 { margin: 0; } 5154 5155 .app_discount_basic_style .mt-0 { margin-top: 0; } 5156 .app_discount_basic_style .mt-1 { margin-top: 4px; } 5157 .app_discount_basic_style .mt-2 { margin-top: 8px; } 5158 .app_discount_basic_style .mt-3 { margin-top: 12px; } 5159 .app_discount_basic_style .mt-4 { margin-top: 16px; } 5160 .app_discount_basic_style .mt-5 { margin-top: 20px; } 5161 .app_discount_basic_style .mt-6 { margin-top: 24px; } 5162 .app_discount_basic_style .mt-7 { margin-top: 28px; } 5163 .app_discount_basic_style .mt-8 { margin-top: 32px; } 5164 .app_discount_basic_style .mt-9 { margin-top: 36px; } 5165 .app_discount_basic_style .mt-10 { margin-top: 40px; } 5166 .app_discount_basic_style .mt-12 { margin-top: 48px; } 5167 .app_discount_basic_style .mt-15 { margin-top: 60px; } 5168 5169 .app_discount_basic_style .mt--2 { margin-top: -8px; } 5170 .app_discount_basic_style .mt--3 { margin-top: -12px; } 5171 5172 .app_discount_basic_style .mb-2 { margin-bottom: 8px; } 5173 .app_discount_basic_style .mb-3 { margin-bottom: 12px; } 5174 .app_discount_basic_style .mb-5 { margin-bottom: 20px; } 5175 .app_discount_basic_style .mb-6 { margin-bottom: 24px; } 5176 .app_discount_basic_style .mb-7\.5 { margin-bottom: 30px; } 5177 .app_discount_basic_style .mb-10 { margin-bottom: 40px; } 5178 .app_discount_basic_style .mb-20 { margin-bottom: 80px; } 5179 5180 .app_discount_basic_style .mr-1 { margin-right: 4px; } 5181 .app_discount_basic_style .mr-1\.5 { margin-right: 6px; } 5182 .app_discount_basic_style .mr-2 { margin-right: 8px; } 5183 .app_discount_basic_style .mr-3 { margin-right: 12px; } 5184 .app_discount_basic_style .mr-5 { margin-right: 20px; } 5185 .app_discount_basic_style .mr-6 { margin-right: 24px; } 5186 .app_discount_basic_style .mr-10 { margin-right: 40px; } 5187 .app_discount_basic_style .mr-11 { margin-right: 44px; } 5188 .app_discount_basic_style .mr-15 { margin-right: 60px; } 5189 5190 .app_discount_basic_style .ml-1 { margin-left: 4px; } 5191 .app_discount_basic_style .ml-5 { margin-left: 20px; } 5192 .app_discount_basic_style .ml-6 { margin-left: 24px; } 5193 .app_discount_basic_style .ml-12 { margin-left: 48px; } 5194 5195 .app_discount_basic_style .mx-4 { margin-left: 16px; margin-right: 16px; } 5196 .app_discount_basic_style .mx-auto { margin-left: auto; margin-right: auto; } 5197 5198 .app_discount_basic_style .my-2 { margin-top: 0.5rem; margin-bottom: 0.5rem; } 5199 .app_discount_basic_style .my-6 { margin-top: 1.5rem; margin-bottom: 1.5rem; } 5200 5201 /* padding */ 5202 .app_discount_basic_style .p-0 { padding: 0; } 5203 .app_discount_basic_style .p-2 { padding: 8px; } 5204 .app_discount_basic_style .p-3 { padding: 12px; } 5205 .app_discount_basic_style .p-5 { padding: 20px; } 5206 .app_discount_basic_style .py-0 { padding-top: 0px; padding-bottom: 0px; } 5207 .app_discount_basic_style .py-1\.5 { padding-top: 6px; padding-bottom: 6px; } 5208 .app_discount_basic_style .py-2 { padding-top: 8px; padding-bottom: 8px; } 5209 .app_discount_basic_style .py-3 { padding-top: 12px; padding-bottom: 12px; } 5210 .app_discount_basic_style .py-3\.5 { padding-top: 14px; padding-bottom: 14px; } 5211 .app_discount_basic_style .py-4 { padding-top: 16px; padding-bottom: 16px; } 5212 .app_discount_basic_style .py-6 { padding-top: 24px; padding-bottom: 24px; } 5213 .app_discount_basic_style .py-10 { padding-top: 40px; padding-bottom: 40px; } 5214 .app_discount_basic_style .px-1 { padding-left: 4px; padding-right: 4px; } 5215 .app_discount_basic_style .px-2 { padding-left: 8px; padding-right: 8px; } 5216 .app_discount_basic_style .px-2\.5 { padding-left: 10px; padding-right: 10px; } 5217 .app_discount_basic_style .px-3 { padding-left: 12px; padding-right: 12px; } 5218 .app_discount_basic_style .px-3\.5 { padding-left: 14px; padding-right: 14px; } 5219 .app_discount_basic_style .px-5 { padding-left: 20px; padding-right: 20px; } 5220 5221 .app_discount_basic_style .pl-1 { padding-left: 4px; } 5222 .app_discount_basic_style .pl-2 { padding-left: 8px; } 5223 .app_discount_basic_style .pl-3 { padding-left: 12px; } 5224 .app_discount_basic_style .pl-3\.5 { padding-left: 14px; } 5225 .app_discount_basic_style .pl-4 { padding-left: 16px; } 5226 .app_discount_basic_style .pl-5 { padding-left: 20px; } 5227 .app_discount_basic_style .pb-3 { padding-bottom: 12px } 5228 .app_discount_basic_style .pb-5 { padding-bottom: 20px; } 5229 .app_discount_basic_style .pb-8 { padding-bottom: 32px; } 5230 .app_discount_basic_style .pb-15 { padding-bottom: 60px; } 5231 .app_discount_basic_style .pt-5 { padding-top: 20px; } 5232 .app_discount_basic_style .pt-8 { padding-top: 32px; } 5233 .app_discount_basic_style .pt-15 { padding-top: 60px; } 5234 .app_discount_basic_style .pt-24 { padding-top: 96px; } 5235 .app_discount_basic_style .pt-27 { padding-top: 108px; } 5236 5237 /** grid **/ 5238 .app_discount_basic_style .grid { 5239 display: grid; 5240 } 5241 .app_discount_basic_style .grid-cols-1 { 5242 grid-template-columns:repeat(1,minmax(0,1fr)); 5243 } 5244 .app_discount_basic_style .grid-cols-2 { 5245 grid-template-columns:repeat(2,minmax(0,1fr)); 5246 } 5247 .app_discount_basic_style .grid-cols-3 { 5248 grid-template-columns:repeat(3,minmax(0,1fr)); 5249 } 5250 .app_discount_basic_style .grid-cols-4 { 5251 grid-template-columns:repeat(4,minmax(0,1fr)); 5252 } 5253 .app_discount_basic_style .grid-cols-5 { 5254 grid-template-columns:repeat(5,minmax(0,1fr)); 5255 } 5256 .app_discount_basic_style .grid-cols-6 { 5257 grid-template-columns:repeat(6,minmax(0,1fr)); 5258 } 5259 .app_discount_basic_style .gap-2 { 5260 gap: .5rem; 5261 } 5262 .app_discount_basic_style .col-span-1 { 5263 grid-column: span 1/span 1; 5264 } 5265 .app_discount_basic_style .\!hidden, 5266 .app_discount_basic_style .\!empty-hidden:empty { display: none !important; } 5267 5268 @media (max-width: 959.98px) { 5269 .app_discount_basic_style .md\:block { display: block; } 5270 .app_discount_basic_style .md\:inline-block { display: inline-block; } 5271 .app_discount_basic_style .md\:hidden { display: none !important; } 5272 5273 .app_discount_basic_style .md\:flex { display: flex; } 5274 .app_discount_basic_style .md\:flex-wrap { flex-wrap: wrap; } 5275 .app_discount_basic_style .md\:flex-nowrap { flex-wrap: nowrap; } 5276 .app_discount_basic_style .md\:flex-col { flex-direction: column; } 5277 .app_discount_basic_style .md\:items-center { align-items: center; } 5278 .app_discount_basic_style .md\:justify-between { display: flex; justify-content: space-between; } 5279 .app_discount_basic_style .md\:justify-center { display: flex; justify-content: center; } 5280 .app_discount_basic_style .md\:justify-start { display: flex; justify-content: flex-start; } 5281 5282 .app_discount_basic_style .md\:flex-1 { flex: 1; } 5283 .app_discount_basic_style .md\:flex-shrink-0 { flex-shrink: 0; } 5284 5285 .app_discount_basic_style .md\:order-1 { order:1 } 5286 .app_discount_basic_style .md\:order-10 { order: 10; } 5287 5288 .app_discount_basic_style .md\:relative { position: relative; } 5289 .app_discount_basic_style .md\:absolute { position: absolute; } 5290 .app_discount_basic_style .md\:sticky { position: sticky; } 5291 .app_discount_basic_style .md\:fixed { position: fixed;} 5292 .app_discount_basic_style .md\:top-0 { top: 0; } 5293 5294 /* z-index */ 5295 .app_discount_basic_style .md\:z-10 { z-index: 10; } 5296 5297 .app_discount_basic_style .md\:w-1\/2 { width: 50%; } 5298 .app_discount_basic_style .md\:w-full { width: 100%; } 5299 .app_discount_basic_style .md\:w-auto { width: auto; } 5300 .app_discount_basic_style .md\:h-full { height: 100%; } 5301 5302 /* text font size */ 5303 .app_discount_basic_style .md\:body-text-xs { font-size: calc(var(--type-body-font-size) * 0.84); } 5304 .app_discount_basic_style .md\:body-text-xl { font-size: calc(var(--type-body-font-size) * 1.15); } 5305 5306 .app_discount_basic_style .md\:body-plus-2 { font-size: calc(var(--type-body-font-size) + 2px); } 5307 .app_discount_basic_style .md\:body-plus-4 { font-size: calc(var(--type-body-font-size) + 4px); } 5308 .app_discount_basic_style .md\:body-minus-1 { font-size: calc(var(--type-body-font-size) - 1px); } 5309 5310 /* heading font size */ 5311 .app_discount_basic_style .md\:heading-4xs { font-size: calc(var(--type-title-font-size) * 0.57) } 5312 .app_discount_basic_style .md\:heading-3xs { font-size: calc(var(--type-title-font-size) * 0.63) } 5313 .app_discount_basic_style .md\:heading-2xs { font-size: calc(var(--type-title-font-size) * 0.75) } 5314 .app_discount_basic_style .md\:heading-xs { font-size: calc(var(--type-title-font-size) * 0.85) } 5315 5316 /* line height */ 5317 .app_discount_basic_style .md\:leading-1\.1 { line-height: 1.1; } 5318 .app_discount_basic_style .md\:leading-1\.4 { line-height: 1.4; } 5319 .app_discount_basic_style .md\:leading-1\.5 { line-height: 1.5; } 5320 5321 /* border radius */ 5322 .app_discount_basic_style .md\:rounded-2xl { border-radius: 16px; } 5323 5324 /* padding */ 5325 .app_discount_basic_style .md\:pt-4 { padding-top: 16px; } 5326 .app_discount_basic_style .md\:pt-7 { padding-top: 28px; } 5327 .app_discount_basic_style .md\:pt-9 { padding-top: 36px; } 5328 .app_discount_basic_style .md\:pb-10 { padding-bottom: 40px; } 5329 .app_discount_basic_style .md\:px-2\.5 { padding-left: 10px; padding-right: 10px; } 5330 .app_discount_basic_style .md\:px-8 { padding-left: 32px; padding-right: 32px;} 5331 5332 /* margin */ 5333 .app_discount_basic_style .md\:mx-2\.5 { margin-left: 10px; margin-right: 10px; } 5334 .app_discount_basic_style .md\:my-2 { margin-top: 8px; margin-bottom: 8px; } 5335 .app_discount_basic_style .md\:mt-2 { margin-top: 8px; } 5336 .app_discount_basic_style .md\:mt-3 { margin-top: 12px; } 5337 .app_discount_basic_style .md\:mt-3\.5 { margin-top: 14px; } 5338 .app_discount_basic_style .md\:mt-4 { margin-top: 16px; } 5339 .app_discount_basic_style .md\:mt-5 { margin-top: 20px; } 5340 .app_discount_basic_style .md\:mt-6 { margin-top: 24px; } 5341 .app_discount_basic_style .md\:mt-8 { margin-top: 32px; } 5342 .app_discount_basic_style .md\:mt-10 { margin-top: 40px; } 5343 5344 .app_discount_basic_style .md\:mb-4 { margin-bottom: 16px; } 5345 .app_discount_basic_style .md\:mb-5 { margin-bottom: 20px; } 5346 .app_discount_basic_style .md\:mb-15 { margin-bottom: 60px; } 5347 5348 .app_discount_basic_style .md\:mr-1 { margin-right: 4px; } 5349 .app_discount_basic_style .md\:mr-15 { margin-right: 60px; } 5350 5351 .app_discount_basic_style .md\:ml-5 { margin-left: 20px; } 5352 5353 /* padding */ 5354 .app_discount_basic_style .md\:px-4 { padding-left: 16px; padding-right: 16px;} 5355 5356 /* overflow */ 5357 .app_discount_basic_style .md\:overflow-auto { overflow: auto; } 5358 .app_discount_basic_style .md\:overflow-y-scroll { overflow-y:
5358scroll; } 5359 .app_discount_basic_style .md\:overflow-x-auto { overflow-x: auto; } 5360 5361 /* background */ 5362 .app_discount_basic_style .md\:bg-white { background-color: var(--color-white, #fff); } 5363 5364 /* shadow */ 5365 .app_discount_basic_style .md\:shadow { box-shadow: 0 10px 40px var(--color-shadow); } 5366 5367 .app_discount_basic_style .md\:text-center { text-align: center; } 5368 } 5369 5370 @media (min-width: 960px) { 5371 .app_discount_basic_style .lg\:block { display: block; } 5372 .app_discount_basic_style .lg\:inline-block { display: inline-block; } 5373 .app_discount_basic_style .lg\:hidden { display: none !important;} 5374 .app_discount_basic_style .lg\:flex { display: flex; } 5375 .app_discount_basic_style .lg\:flex-wrap { flex-wrap: wrap; } 5376 .app_discount_basic_style .lg\:flex-nowrap { flex-wrap: nowrap; } 5377 .app_discount_basic_style .lg\:flex-col { flex-direction: column; } 5378 .app_discount_basic_style .lg\:flex-row-reverse { flex-direction: row-reverse; } 5379 .app_discount_basic_style .lg\:items-start { display: flex; align-items: flex-start; } 5380 .app_discount_basic_style .lg\:items-center { display: flex; align-items: center; } 5381 .app_discount_basic_style .lg\:justify-between { display: flex; justify-content: space-between; } 5382 .app_discount_basic_style .lg\:justify-center { display: flex; justify-content: center; } 5383 5384 .app_discount_basic_style .lg\:flex-1 { flex: 1; } 5385 .app_discount_basic_style .lg\:flex-shrink-0 { flex-shrink: 0; } 5386 5387 .app_discount_basic_style .lg\:order-1 { order:1 } 5388 .app_discount_basic_style .lg\:order-10 { order: 10; } 5389 .app_discount_basic_style .lg\:order--10 { order: -10; } 5390 5391 .app_discount_basic_style .lg\:relative { position: relative; } 5392 .app_discount_basic_style .lg\:absolute { position: absolute; } 5393 .app_discount_basic_style .lg\:sticky { position: sticky; } 5394 .app_discount_basic_style .lg\:fixed { position: fixed;} 5395 .app_discount_basic_style .lg\:top-0 { top: 0; } 5396 .app_discount_basic_style .lg\:left-0 { left: 0; } 5397 .app_discount_basic_style .lg\:right-0 { right: 0; } 5398 .app_discount_basic_style .lg\:bottom-0 { bottom: 0; } 5399 5400 .app_discount_basic_style .lg\:w-1\/5 { width: 20%; } 5401 .app_discount_basic_style .lg\:w-auto { width: auto; } 5402 .app_discount_basic_style .lg\:w-full { width: 100%; } 5403 .app_discount_basic_style .lg\:h-full { height: 100%; } 5404 5405 /* text font size */ 5406 .app_discount_basic_style .lg\:body-text-xs { font-size: calc(var(--type-body-font-size) * 0.84); } 5407 .app_discount_basic_style .lg\:body-text-lg { font-size: calc(var(--type-body-font-size) * 1.08); } 5408 .app_discount_basic_style .lg\:body-text-xl { font-size: calc(var(--type-body-font-size) * 1.15); } 5409 .app_discount_basic_style .lg\:body-text-2xl { font-size: calc(var(--type-body-font-size) * 1.3); } 5410 .app_discount_basic_style .lg\:body-text-3xl { font-size: calc(var(--type-body-font-size) * 1.42); } 5411 5412 .app_discount_basic_style .lg\:body-plus-1 { font-size: calc(var(--type-body-font-size) + 1px); } 5413 .app_discount_basic_style .lg\:body-minus-2 { font-size: calc(var(--type-body-font-size) - 2px); } 5414 .app_discount_basic_style .lg\:body-minus-1 { font-size: calc(var(--type-body-font-size) - 1px); } 5415 5416 /* heading font size */ 5417 .app_discount_basic_style .lg\:heading-3xs { font-size: calc(var(--type-title-font-size) * 0.63) } 5418 .app_discount_basic_style .lg\:heading-2xs { font-size: calc(var(--type-title-font-size) * 0.75) } 5419 .app_discount_basic_style .lg\:heading-xs { font-size: calc(var(--type-title-font-size) * 0.85) } 5420 5421 /* fixed font size */ 5422 .app_discount_basic_style .lg\:text-base { font-size: 14px; line-height: 18px; } 5423 .app_discount_basic_style .lg\:text-lg { font-size: 16px; line-height: 20px; } 5424 .app_discount_basic_style .lg\:text-xl { font-size: 20px; line-height: 24px; } 5425 5426 /* line height */ 5427 .app_discount_basic_style .lg\:leading-none { line-height: normal; } 5428 .app_discount_basic_style .lg\:leading-1 { line-height: 1; } 5429 .app_discount_basic_style .lg\:leading-1\.1 { line-height: 1.1; } 5430 .app_discount_basic_style .lg\:leading-1\.4 { line-height: 1.4; } 5431 .app_discount_basic_style .lg\:leading-1\.5 { line-height: 1.5; } 5432 .app_discount_basic_style .lg\:leading-1\.6 { line-height: 1.6; } 5433 5434 /* border radius */ 5435 .app_discount_basic_style .lg\:rounded-xl { border-radius: 12px; } 5436 .app_discount_basic_style .lg\:rounded-2xl { border-radius: 16px; } 5437 5438 /* margin */ 5439 .app_discount_basic_style .lg\:mt-1 { margin-top: 4px; } 5440 .app_discount_basic_style .lg\:mt-2 { margin-top: 8px; } 5441 .app_discount_basic_style .lg\:mt-3 { margin-top: 12px; } 5442 .app_discount_basic_style .lg\:mt-4 { margin-top: 16px; } 5443 .app_discount_basic_style .lg\:mt-5 { margin-top: 20px; } 5444 .app_discount_basic_style .lg\:mt-6 { margin-top: 24px; } 5445 .app_discount_basic_style .lg\:mt-7 { margin-top: 28px; } 5446 .app_discount_basic_style .lg\:mt-8 { margin-top: 32px; } 5447 .app_discount_basic_style .lg\:mt-9 { margin-top: 36px; } 5448 .app_discount_basic_style .lg\:mt-10 { margin-top: 40px; } 5449 .app_discount_basic_style .lg\:mt-12 { margin-top: 48px; } 5450 .app_discount_basic_style .lg\:mt-13 { margin-top: 52px; } 5451 .app_discount_basic_style .lg\:mt-15 { margin-top: 60px; } 5452 .app_discount_basic_style .lg\:mt-17 { margin-top: 68px; } 5453 .app_discount_basic_style .lg\:mt-20 { margin-top: 80px; } 5454 .app_discount_basic_style .lg\:mt-22 { margin-top: 88px; } 5455 5456 .app_discount_basic_style .lg\:mb-2 { margin-bottom: 8px; } 5457 .app_discount_basic_style .lg\:mb-3 { margin-bottom: 12px; } 5458 .app_discount_basic_style .lg\:mb-5 { margin-bottom: 20px; } 5459 .app_discount_basic_style .lg\:mb-20 { margin-bottom: 80px; } 5460 .app_discount_basic_style .lg\:mb-40 { margin-bottom: 160px; } 5461 5462 .app_discount_basic_style .lg\:ml-4 { margin-left: 16px; } 5463 .app_discount_basic_style .lg\:ml-5 { margin-left: 20px; } 5464 .app_discount_basic_style .lg\:ml-6 { margin-left: 24px; } 5465 .app_discount_basic_style .lg\:ml-11 { margin-left: 44px; } 5466 .app_discount_basic_style .lg\:ml-12 { margin-left: 48px; } 5467 5468 .app_discount_basic_style .lg\:mr-2 { margin-right: 8px; } 5469 .app_discount_basic_style .lg\:mr-4 { margin-right: 16px; } 5470 .app_discount_basic_style .lg\:mr-6 { margin-right: 24px; } 5471 .app_discount_basic_style .lg\:mr-15 { margin-right: 60px; } 5472 5473 .app_discount_basic_style .lg\:px-2\.5 { padding-left: 10px; padding-right: 10px;} 5474 .app_discount_basic_style .lg\:pt-6 { padding-top: 24px; } 5475 .app_discount_basic_style .lg\:pt-8 { padding-top: 32px; } 5476 .app_discount_basic_style .lg\:pt-15 { padding-top: 60px; } 5477 .app_discount_basic_style .lg\:pb-8 { padding-bottom: 32px; } 5478 .app_discount_basic_style .lg\:pb-15 { padding-bottom: 60px; } 5479 .app_discount_basic_style .lg\:pl-20 { padding-left: 80px; } 5480 5481 .app_discount_basic_style .lg\:mx-auto { margin-left: auto; margin-right: auto; } 5482 5483 /* overflow */ 5484 .app_discount_basic_style .lg\:overflow-auto { overflow: auto; } 5485 .app_discount_basic_style .lg\:overflow-y-scroll { overflow-y:
5485scroll; } 5486 5487 /* background */ 5488 .app_discount_basic_style .lg\:bg-white { background-color: var(--color-white, #fff); } 5489 5490 /* shadow */ 5491 .app_discount_basic_style .lg\:shadow { box-shadow: 0 10px 40px var(--color-shadow); } 5492 5493 /* grid */ 5494 .app_discount_basic_style .lg\:grid-cols-1 { 5495 grid-template-columns:repeat(1,minmax(0,1fr)); 5496 } 5497 .app_discount_basic_style .lg\:grid-cols-2 { 5498 grid-template-columns:repeat(2,minmax(0,1fr)); 5499 } 5500 .app_discount_basic_style .lg\:grid-cols-3 { 5501 grid-template-columns:repeat(3,minmax(0,1fr)); 5502 } 5503 .app_discount_basic_style .lg\:grid-cols-4 { 5504 grid-template-columns:repeat(4,minmax(0,1fr)); 5505 } 5506 .app_discount_basic_style .lg\:grid-cols-5 { 5507 grid-template-columns:repeat(5,minmax(0,1fr)); 5508 } 5509 .app_discount_basic_style .lg\:grid-cols-6 { 5510 grid-template-columns:repeat(6,minmax(0,1fr)); 5511 } 5512 .app_discount_basic_style .lg\:gap-5 { 5513 gap: 1.25rem; 5514 } 5515 5516 } 5517</style> 5518<div class="apps-add-cart-toast-wrap lg:page-container" id="apps_add_cart_toast_wrap"> 5519 <ljs-toast class="apps-add_cart-toast p-4 lg:py-8 lg:px-5 leading-1.2 i-spzhtml-layout-nodisplay" id="apps-match-drawer-add_to_cart_toast" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"> 5520 <span class="apps-add_cart-toast-span"> 5521 <span role="content"></span> 5522 </span> 5523 </ljs-toast> 5524</div> 5525<div class="discount-toast-wrap lg:page-container flex justify-end" id="cart_match_discount_toast_wrap"> 5526 <ljs-toast class="discount-toast p-4 lg:py-8 lg:px-5 leading-1.2 i-spzhtml-layout-nodisplay" id="cart_match_discount_toast" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"></ljs-toast> 5527</div> 5528 5529 5530 5531<spz-custom-discount-toast id="appsAddCartToastFunc" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-toast> 5532<ljs-script layout="logic" type="application/javascript" id="DiscountBundleScript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"> 5533 class SpzCustomDiscountBundle extends SPZ.BaseElement { 5534 constructor(element) { 5535 super(element); 5536 } 5537 isLayoutSupported(layout) { 5538 return layout == SPZCore.Layout.LOGIC; 5539 } 5540 mountCallback() { 5541 // åä¸é¡µå¯è½æå¤ä¸ª block åèªæ¸²ææ¬ snippetï¼å¯¼è´é»è¾å ç´ spz-custom-discount-toast(#appsAddCartToastFunc) éå¤ã 5542 // ä» ä¿ç DOM ä¸ç¬¬ä¸ä¸ªå®ä¾ï¼å ¶ä½éå¤å®ä¾ç§»é¤èªèº«ï¼ä¿è¯é»è¾å ç´ åå ¶ action å¼ç¨(appsAddCartToastFunc)å¯ä¸ã 5543 const funcs = document.querySelectorAll('#appsAddCartToastFunc'); 5544 if (funcs.length > 1 && this.element !== funcs[0]) { 5545 this.element.remove(); 5546 return; 5547 } 5548 // å ¨å±ææ£ toast çå¼¹åºç¹åæ£å¨å¤ä¸ªæ¨¡æ¿/ç»ä»¶éï¼å«å£°æå¼ @atcErrorï¼ï¼æ æ³éä¸å¨å¼¹åºååç½®ï¼ 5549 // æ æè½½æ¶å¹çå°å»éå¹¶æå° bodyï¼å è´ toast æ¹ä¸ºå¼¹åºåæéå»éï¼è§ showAddToCartToastï¼ 5550 this.ensureSingleToastInBody_('cart_match_discount_toast_wrap'); 5551 } 5552 unmountCallback() {} 5553 5554 // åä¸é¡µé¢å¯è½æå¤ä¸ª block åèªæ¸²ææ¬ toast snippetï¼å¦å详ç discount_automatic + è´ç©è½¦æ½å±éçææ£æ¨ªå¹ ï¼ï¼ 5555 // å¯¼è´ toast å¤å±åºç°éå¤ idãéå¤ id ä¸ getElementById/querySelector å SPZ å¨ä½å¼ç¨é½åªå½ä¸ç¬¬ä¸ä¸ªï¼ 5556 // ä¸è¢«å ³è¿æ½å±çé£ä»½ä¼è¢«æ½å±ç transform/overflow è£åª/éä½ãè¿éå¨æè½½æ¶å¹çå»éï¼ 5557 // åªä¿çä¸ä»½ãç§»é¤å¤ä½çï¼å¹¶æä¿ççæå° bodyï¼body æ¯ position:fixed æå®å ¨çè½ç¹ï¼é¿å 被任ä½ç¥å è£åªï¼ãå¯åå¤è°ç¨ã 5558 ensureSingleToastInBody_(id) { 5559 const els = Array.from(document.querySelectorAll('#' + id)); 5560 if (!els.length) return; 5561 els.slice(1).forEach((el) => el.remove()); 5562 const keep = els[0]; 5563 if (keep.parentNode !== document.body) { 5564 document.body.appendChild(keep); 5565 } 5566 } 5567 5568 // 主é¢è´ç©è½¦æ½å±æ¯å¦æå¼ 5569 isInCartDrawer_() { 5570 return !!document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); 5571 } 5572 5573 setupAction_() { 5574 this.registerAction('showAddToCartToast', () => { 5575 // æ½å±å å è´ï¼ä¸»é¢æ¬å°±ä¸ä¼æå è´ææï¼ç»ä¸å¼¹æä»¶èªå·±ç toast 5576 // éæ½å±ï¼ä¸»é¢æå è´ä»£çåæ²¿ç¨ä¸»é¢å è´ææï¼å¦åæä»¶å åº 5577 const proxyEl = document.getElementById('add-cart-event-proxy'); 5578 const inDrawer = this.isInCartDrawer_(); 5579 if (!inDrawer && proxyEl) { 5580 return; 5581 } 5582 5583 // å¼¹åºåæéå»éå¹¶æå° bodyï¼å¹çï¼ï¼é¿å éå¤ id å½ä¸é对象æè¢«æ½å±è£åª/éä½ 5584 this.ensureSingleToastInBody_('apps_add_cart_toast_wrap');
5585 const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') 5586 SPZ.whenApiDefined(toastEl).then((apis) => { 5587 apis.showToast("Added successfully"); 5588 }); 5589 }); 5590 } 5591 buildCallback() { 5592 this.setupAction_(); 5593 }; 5594 } 5595 SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle); 5596</ljs-script> 5597 <div id="discount-match-drawer" class="app_discount_basic_style js-discount-match-popup" data-discount-type=""> 5598 <div class="discount-match-mask" id="discount-match-mask"></div> 5599 <div class="discount-match-drawer drawer-translateContent"> 5600 <div class="discount-match-drawer-header" > 5601 <div class="header-close-icon" @tap="cart_discount_default_actions.removeDiscountElement();"> 5602 <svg class="cart-discount-close-icon" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 5603<g id="20px/delete"> 5604<path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M1.93015 17.1473C1.813 17.2644 1.813 17.4544 1.93015 17.5715L2.83453 18.4759C2.95168 18.5931 3.14163 18.5931 3.25879 18.4759L9.91128 11.8234L16.6149 18.527C16.732 18.6442 16.922 18.6442 17.0391 18.527L17.9435 17.6226C18.0607 17.5055 18.0607 17.3155 17.9435 17.1984
5604L11.2399 10.4948L17.8924 3.84229C18.0096 3.72513 18.0096 3.53518 17.8924 3.41802L16.9881 2.51365C16.8709 2.39649 16.6809 2.39649 16.5638 2.51365L9.91128 9.16616L3.30986 2.56474C3.19271 2.44758 3.00276 2.44758 2.8856 2.56474L1.98123 3.46911C1.86407 3.58627 1.86407 3.77622 1.98123 3.89337L8.58264 10.4948L1.93015 17.1473Z" fill="#707070"/> 5605</g> 5606</svg> 5607 </div> 5608 </div> 5609 <div class="tw-container w-full mt-3 mb-3"> 5610 <ljs-render manual layout="container" id="app-discount-selectors-render" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 5611 <template> 5612 ${function() { 5613 const firstDiscount = data[0] || {}; 5614 const anotherData = data.slice(1) || []; 5615 return ` 5616 <ljs-selector layout="container" class="discount-selector" @select="discount-cart-banner-func.discountSelectorChange(data=event);cart_discount_default_actions.discountSelectorChange(data=event);"> 5617 <div option="${firstDiscount.discount_id}" selected class="discount-selector__option"> 5618 <span>${firstDiscount.display_name}</span> 5619 </div> 5620 ${anotherData.map((item, index) => { 5621 return ` 5622 <div option="${item.discount_id}" class="discount-selector__option"> 5623 <span>${item.display_name}</span> 5624 </div>`; 5625 }).join('')} 5626 </ljs-selector> 5627 `; 5628 }()} 5629 </template> 5630 </ljs-render> 5631 </div> 5632 5633 <div class="discount-match-drawer-content"> 5634 <ljs-render manual layout="container" id="app-discount-text-render" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 5635 <template> 5636 ${function() { 5637 if (!originData.discount_text) { 5638 return `<div></div>`; 5639 } 5640 return ` 5641 <div class="discount-match-text"> 5642 <div class="discount-match-text__icon"> 5643 <ljs-img src="${originData.discount_icon}" alt="discount icon" object-fit="cover" layout="responsive" width="16" height="16" auto-fit></ljs-img> 5644 </div> 5645 <div class="discount-match-text__text">${originData.discount_text}</div> 5646 </div> 5647 `; 5648 }()} 5649 </template> 5650 </ljs-render> 5651 <div class="discount-match-drawer-container"> 5652 <style> 5653 #discount-match-drawer .discount-default { 5654 width: 100%; 5655 background-color: #ffffff; 5656 } 5657 5658 #discount-match-drawer #discount-match-drawer-products_loading { 5659 position: absolute !important; 5660 height: 100px; 5661 background: none; 5662 top: auto; 5663 bottom: 0; 5664 } 5665 #discount-match-drawer #discount-match-drawer-products_loading .loading .loading-inner { 5666 border: 3px solid var(--color-primary-btn-bg); 5667 border-right-color: var(--color-white, #ffffff) !important; 5668 } 5669 #discount-match-drawer .tw-container { 5670 box-sizing: border-box; 5671 margin-left: auto; 5672 margin-right: auto; 5673 max-width: var(--general-layout-width, var(--layout-width, 1350px)); 5674 padding-left: 1rem; 5675 padding-right: 1rem; 5676 } 5677 @media screen and (min-width: 960px) { 5678 #discount-match-drawer:not(.in-cart-drawer) .tw-container { 5679 padding-left: var(--general-layout-spacing, 55px) !important; 5680 padding-right: var(--general-layout-spacing, 55px) !important; 5681 } 5682 } 5683 #discount-match-drawer.in-cart-drawer .tw-container { 5684 padding-left: 1rem !important; 5685 padding-right: 1rem !important; 5686 } 5687 #discount-match-drawer .discount-default .w-100 { 5688 width: 100% !important; 5689 } 5690 #discount-match-drawer .discount-default .container { 5691 width: 100%; 5692 padding-right: 15px; 5693 padding-left: 15px; 5694 margin-right: auto; 5695 margin-left: auto; 5696 max-width: 540px; 5697 max-width: 960px; 5698 } 5699 #discount-match-drawer .discount-default__snippet { 5700 display: flex; 5701 align-items: center; 5702 } 5703 @media (max-width: 767.98px) { 5704 #discount-match-drawer .discount-default__snippet { 5705 flex-direction: column; 5706 align-items: flex-start; 5707 } 5708 } 5709 #discount-match-drawer .discount-default .common_app__product { 5710 flex: 0 0 calc(25% - 30px); 5711 max-width: calc(25% - 30px); 5712 margin: 0 30px 20px 0; 5713 } 5714 #discount-match-drawer [data-discount-type="DT_CLASSIC_BUNDLE"] .discount-default .common_app__product { 5715 margin: 0 0 20px 0; 5716 } 5717 @media (max-width: 767.98px) { 5718 #discount-match-drawer .discount-default .common_app__product { 5719 flex: 0 0 calc(50% - 8px); 5720 max-width: calc(50% - 8px); 5721 margin: 0 8px 20px 0; 5722 } 5723 #discount-match-drawer [data-discount-type="DT_CLASSIC_BUNDLE"] .discount-default .common_app__product { 5724 flex: 0 0 calc(50% - 26px); 5725 max-width: calc(50% - 26px); 5726 margin: 0 0 20px 0; 5727 } 5728 } 5729 5730 /* è´ç©è½¦æ½å±ä»æå¼æ¶ï¼å¼¹çªè¢«åå°æ½å±å®½åº¦ï¼ååæ¹ 2 å */ 5731 #discount-match-drawer.in-cart-drawer .discount-default .common_app__product { 5732 flex: 0 0 calc(50% - 8px) !important; 5733 max-width: calc(50% - 8px) !important; 5734 margin: 0 8px 20px 0 !important; 5735 } 5736 #discount-match-drawer.in-cart-drawer [data-discount-type="DT_CLASSIC_BUNDLE"] .discount-default .common_app__product { 5737 flex: 0 0 calc(50% - 26px) !important; 5738 max-width: calc(50% - 26px) !important; 5739 margin: 0 0 20px 0 !important; 5740 } 5741 #discount-match-drawer.in-cart-drawer .discount-default__productlist-wrap { 5742 margin-right: 0 !important; 5743 } 5744 5745 #discount-match-drawer .discount-default__snippet { 5746 position: relative; 5747 width: 100%; 5748 } 5749 5750 @media (max-width: 360px) { 5751 #discount-match-drawer .discount-default .common__select select { 5752 width: 120px; 5753 } 5754 } 5755 @media (max-width: 767.98px) { 5756 #discount-match-drawer .discount-default { 5757 padding: 0; 5758 } 5759 } 5760 5761 #discount-match-drawer .no_del_p { 5762 color: #292929 !important; 5763 } 5764 #discount-match-drawer .app-bundle-discount_bottom_container { 5765 position: fixed; 5766 bottom: 0; 5767 left: 0; 5768 right: 0; 5769 z-index: 100; 5770 } 5771</style> 5772<style> 5773 .app_discount_bundle_add { 5774 position: relative; 5775 width: 100%; 5776 height: 36px; 5777 border: 1px solid #000 !important; 5778 z-index: 99; 5779 padding: 8px 10px; 5780 margin-top: 16px; 5781 border-radius: 2px; 5782 font-size: 16px; 5783 font-weight: 500; 5784 line-height: 20px; 5785 background: #fff; 5786 color: #202020; 5787 } 5788 5789 @media (max-width: 959.98px) { 5790 .promotion_product_option { 5791 top: 4px; 5792 right: 4px; 5793 width: 18px; 5794 height: 18px; 5795 } 5796 .promotion_product_option::before { 5797 content: ''; 5798 position: absolute; 5799 top:-8px; 5800 right:-8px; 5801 left:-8px; 5802 bottom:-8px; 5803 z-index: -1; 5804 } 5805 } 5806 5807 /* ååå¾é */ 5808 .promotion_product_option { 5809 position: absolute; 5810 top: 6px; 5811 right: 6px; 5812 width: 24px; 5813 height: 24px; 5814 border: 2px solid #000; 5815 border-radius: 2px; 5816 outline: none !important; 5817 z-index: -1; 5818 opacity: 0; 5819 } 5820 5821 .promotion_product_option svg { 5822 opacity: 0; 5823 position: absolute; 5824 top: 0; 5825 right: 0; 5826 bottom: 0; 5827 left: 0; 5828 width: 100%; 5829 height: 100%; 5830 } 5831 5832 .promotion_product_option[selected] { 5833 border: none; 5834 } 5835 5836 .promotion_product_option[show] { 5837 z-index: 99; 5838 opacity:1; 5839 } 5840 .promotion_product_option[selected], 5841 .promotion_product_option[selected] svg { 5842 opacity: 1; 5843 } 5844 5845 /* åååä½tags */ 5846 .promotion_variant_tag_list { 5847 margin-top: 12px; 5848 } 5849 .promotion_variant_tag_item { 5850 background-color: #f6f6f6; 5851 border-radius: 2px; 5852 padding: 4px; 5853 max-width: 100%; 5854 margin: 0px 8px 8px 0; 5855 } 5856 5857 .promotion_variant_tag_item_quantity { 5858 background-color: #F64943; 5859 color: #fff; 5860 border-radius: 2px; 5861 padding: 2px; 5862 } 5863 5864 .promotion_variant_tag_item_text { 5865 overflow: hidden; 5866 white-space: nowrap; 5867 white-space: normal; 5868 overflow: hidden; 5869 text-overflow: ellipsis; 5870 display: -webkit-box; 5871 -webkit-line-clamp: 1; 5872 -webkit-box-orient: vertical; 5873 } 5874 5875 .promotion_variant_tag_item_close svg { 5876 width: 12px; 5877 height: 12px; 5878 } 5879 #discount-match-drawer .app_discount_product_list { 5880 padding: 20px 0; 5881 } 5882 5883 #discount-match-drawer .app_discount_product_list { 5884 padding-bottom: 120px; 5885 } 5886 5887 #discount-match-drawer .discount-default__productlist-wrap { 5888 min-height: 300px; 5889 margin-right: -25px; 5890 /* ä¸»é¢ discount_products éæä¸æ¡è£¸ç±»åè§å @media(min-width:960px){.discount-default__productlist-wrap{column-gap:40px;row-gap:46px}} 5891 伿è§å£å®½åº¦æ¼è¿å¼¹çªï¼ä¸æ¬ç»ä»¶ç margin å¸å±å å 导è´ä¸¤å塿ä¸åï¼è¿éæ¾å¼å½é¶é离 */ 5892 column-gap: 0 !important; 5893 row-gap: 0 !important; 5894 } 5895 @media (max-width: 767.98px) { 5896 #discount-match-drawer .app_discount_product_list { 5897 width: 100%; 5898 } 5899 #discount-match-drawer .discount-default__productlist-wrap { 5900 margin-right: 0; 5901 } 5902 } 5903 #discount-match-drawer .product-snippet { 5904 position: relative; 5905 padding: 0 0 20px 0; 5906 background: transparent; 5907 } 5908 5909 #discount-match-drawer .dj_skin_product_price { 5910 color: #eb391b; 5911 } 5912 5913 #discount-match-drawer .text-truncate { 5914 max-width: 100%; 5915 overflow: hidden; 5916 text-overflow: ellipsis; 5917 white-space: nowrap; 5918 } 5919 5920 #discount-match-drawer .max-w-full { 5921 max-width: 100%; 5922 } 5923 5924 #discount-match-drawer .product-snippet__title-normal { 5925 display: block; 5926 color: #202020; 5927 font-size: 14px; 5928 font-style: normal; 5929 line-height: 18px; 5930 margin-top: 10px; 5931 margin-bottom: 10px; 5932 text-decoration: none; 5933 overflow: hidden; 5934 text-overflow: ellipsis; 5935 white-space: nowrap; 5936 } 5937 #discount-match-drawer .product-snippet__title-normal.text-center { 5938 text-align: left !important; 5939 } 5940 #discount-match-drawer .product-snippet__price-wrapper { 5941 display: flex; 5942 align-items: baseline; 5943 font-weight: 600; 5944 color: #292929; 5945 text-align: left !important; 5946 flex-wrap: wrap; 5947 } 5948 #discount-match-drawer .product-snippet__price-wrapper.text-center { 5949 text-align: left !important; 5950 } 5951 #discount-match-drawer .product-snippet__price-wrapper span { 5952 font-size: 18px; 5953 color: #EB391B; 5954 font-weight: bold; 5955 margin-right: 6px; 5956 line-height: 20px; 5957 } 5958 #discount-match-drawer .product-snippet__price-wrapper del { 5959 font-size: 14px; 5960 font-weight: 400; 5961 line-height: 16px; 5962 color: rgba(32, 32, 32, 0.6); 5963 } 5964 #discount-match-drawer .product-snippet__link { 5965 width: 100%; 5966 height: 80%; 5967 position: absolute; 5968 cursor: pointer; 5969 z-index: 1; 5970 } 5971 #discount-match-drawer .product-snippet__img-wrapper { 5972 border-radius: 4px; 5973 } 5974 #discount-match-drawer .product-snippet__img_box { 5975 position: relative; 5976 height:0; 5977 width:100%; 5978 padding-bottom: 100%; 5979 } 5980 #discount-match-drawer .product-snippet__img_box .product-image { 5981 position: absolute; 5982 top: 0; 5983 bottom: 0; 5984 left: 0; 5985 right: 0; 5986 margin: 0; 5987 width: 100%; 5988 background-color: #fff 5989 } 5990 5991 .discount_product_atc_icon { 5992 display: flex; 5993 justify-content: space-between; 5994 align-items: center; 5995 } 5996 5997 #discount-match-drawer .product-snippet__quick-shop-button { 5998 opacity: 1; 5999 display: flex; 6000 justify-content: center;
6001 align-items: center; 6002 width: 44px; 6003 height: 44px; 6004 cursor: pointer; 6005 border: 1px solid transparent; 6006 text-align: center; 6007 color: rgba(32, 32, 32, 1); 6008 transition: all cubic-bezier(0.4, 0, 0.2, 1) 0.3s; 6009 white-space:nowrap; 6010 padding:0; 6011 border-radius: 22px; 6012 background-color: rgba(255, 255, 255, 1); 6013 } 6014 #discount-match-drawer.in-cart-drawer .product-snippet__quick-shop-button { 6015 width: 32px; 6016 height: 32px; 6017 } 6018 .product-snippet__quick-shop-button .product_atc_icon { 6019 width: 22px; 6020 height: 22px; 6021 } 6022 #discount-match-drawer.in-cart-drawer .product-snippet__quick-shop-button .product_atc_icon { 6023 width: 18px; 6024 height: 18px; 6025 } 6026 6027 @media (max-width: 959.98px) { 6028 #discount-match-drawer .product-snippet__quick-shop-button { 6029 width: 32px; 6030 height: 32px; 6031 } 6032 6033 .product-snippet__quick-shop-button .product_atc_icon { 6034 width: 15px; 6035 height: 15px; 6036 } 6037 } 6038 6039 #discount-match-drawer .product-snippet__quick-shop-button:focus { 6040 outline: none !important; 6041 } 6042 6043 6044 #discount-match-drawer .product-snippet .product-snippet__sold-out-tag { 6045 position: absolute; 6046 top: 10px; 6047 left: 10px; 6048 display: flex; 6049 justify-content: center; 6050 align-items: center; 6051 padding: 2px 8px; 6052 border-radius: 2px; 6053 background: #FFF; 6054 font-size: 12px; 6055 color: #292929; 6056 border: 1px solid #E6E6E6; 6057 box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.10); 6058 } 6059 #discount-match-drawer .product-snippet .product-wholesale-price { 6060 display: flex; 6061 align-items: center; 6062 flex-wrap: wrap; 6063 } 6064 #discount-match-drawer .product-snippet .product-wholesale-price .wholesale-price { 6065 display: flex; 6066 align-items: center; 6067 margin-right: 4px; 6068 } 6069 #discount-match-drawer .product-snippet .product-wholesale-price .wholesale-price-item { 6070 font-weight: 500; 6071 font-size: 16px; 6072 line-height: 18px; 6073 color: #292929; 6074 } 6075 #discount-match-drawer .product-snippet .product-retail-price { 6076 font-weight: 400; 6077 font-size: 12px; 6078 color: rgba(41, 41, 41, 0.75); 6079 } 6080 #discount-match-drawer .product-snippet__price-wrapper span, 6081 #discount-match-drawer .product-snippet__price-wrapper del { 6082 display: inline-block; 6083 padding: 0; 6084 } 6085 6086 @media (max-width: 767.98px) { 6087 #discount-match-drawer .product-snippet__price-wrapper span { 6088 font-size: 18px; 6089 } 6090 #discount-match-drawer .product-snippet__price-wrapper del { 6091 font-size: 14px; 6092 } 6093 #discount-match-drawer .product-snippet__quick-shop-button { 6094 opacity: 1; 6095 bottom: 4px; 6096 right: 4px; 6097 } 6098 } 6099 /* ç»å ¸æç» */ 6100 .promotion_classic_variant_container { 6101 margin-top: 20px; 6102 border: 1px solid #E6E6E6; 6103 border-radius: 2px; 6104 padding: 10px 8px; 6105 cursor: pointer; 6106 } 6107 .promotion_classic_variant_container span { 6108 text-overflow: ellipsis; 6109 display: -webkit-box; 6110 -webkit-line-clamp: 1; 6111 overflow: hidden; 6112 -webkit-box-orient: vertical; 6113 word-break: break-all 6114 } 6115 .promotion_classic_variant_container svg { 6116 flex-shrink: 0; 6117 } 6118 .promotion_classic_bundle_min_purchase_qty { 6119 position: absolute; 6120 right: 0; 6121 bottom: 0; 6122 border-radius: 4px 0px; 6123 background: #F64943; 6124 color: #fff; 6125 box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.10); 6126 padding: 4px 12px; 6127 } 6128 6129 .promotion_separator { 6130 display: flex; 6131 flex-direction: column; 6132 justify-content: center; 6133 align-items: center; 6134 margin: 0 12px; 6135 } 6136 .promotion_separator .promotion_dotted_line { 6137 display: inline-block; 6138 width: 1px; 6139 background-image: linear-gradient(to bottom, #ddd 50%, transparent 50%); 6140 background-repeat: repeat-y; 6141 background-size: 100% 6px; 6142 flex: 1; 6143 } 6144 .promotion_separator:last-child { 6145 display: none; 6146 } 6147 6148</style> 6149<style> 6150 /* å è´å¼¹çªï¼è®© lightbox æ¬ä½æä¸ºå ¨å±èå±å¹¶å卿½å±è´ç©è½¦ä¹ä¸ï¼ä½¿èå±ç使½å±å 容 */ 6151 .apps-discount-quick-view { 6152 z-index: 1051 !important; 6153 background: rgba(0, 0, 0, 0.5); 6154 } 6155 6156 .apps-discount-quick-view .text_ellipsis_line_2 { 6157 text-overflow: ellipsis; 6158 display: -webkit-box; 6159 -webkit-line-clamp: 2; 6160 overflow: hidden; 6161 /*! autoprefixer: off */ 6162 -webkit-box-orient: vertical; 6163 } 6164 6165 .apps-discount-quick-view .pointer-events-none { 6166 pointer-events: none; 6167 } 6168 .apps-discount-quick-view .w-full { 6169 width: 100%; 6170 } 6171 6172 .apps-discount-quick-view .rounded-btn-fixed { 6173 border-radius: 4px; 6174 } 6175 .apps-discount-quick-view .quick-shop .i-spzhtml-fill-content, 6176 .apps-discount-quick-view .i-spzhtml-fill-content { 6177 display: flex; 6178 align-items: center; 6179 justify-content: flex-start; 6180 } 6181 6182 .apps-discount-quick-view .quick-view-content { 6183 max-height: 80vh; 6184 padding: 68px 44px 54px 44px; 6185 overflow-x: hidden; 6186 overflow-y: auto; 6187 box-shadow: 0 0 30px 0 rgba(0, 0, 0, .2); 6188 } 6189 6190 .apps-discount-quick-view .quick-shop-close-btn { 6191 position: absolute; 6192 top: -10px; 6193 right: -10px; 6194 width: 40px; 6195 height: 40px;
6196 transition: transform .3s cubic-bezier(0.455, 0.03, 0.515, 0.955); 6197 } 6198 6199 .apps-discount-quick-view .apps_discount_quick_view_close_btn { 6200 position: absolute; 6201 top: 24px; 6202 right: 24px; 6203 width: 24px; 6204 height: 24px; 6205 transition: transform .3s cubic-bezier(0.455, 0.03, 0.515, 0.955); 6206 } 6207 .apps-discount-quick-view .quick-view-render[loading] .quick-view-content { 6208 opacity: 0; 6209 } 6210 6211 6212 /* variants */ 6213 .apps-discount-quick-view .quick-shop__variants_content { 6214 padding: 0; 6215 border: none; 6216 } 6217 6218 .apps-discount-quick-view .quick-shop__variants_content input[type=radio] { 6219 position: absolute; 6220 left: 0; 6221 right: 0; 6222 opacity: 0; 6223 width: 100%; 6224 height: 100%; 6225 z-index: 10; 6226 border: 0; 6227 margin: 0; 6228 cursor: pointer; 6229 } 6230 6231 .apps-discount-quick-view .quick-shop__variants_content input[type=radio]:checked + .quickly-shop-variant-option, 6232 .apps-discount-quick-view .quick-shop__variants_content input[type=radio]:checked + .quickly-shop-variant-option 6233 { 6234 color: var(--color-body-text,rgba(41, 41, 41, 1)); 6235 outline: none; 6236 border-color: var(--color-body-text,rgba(41, 41, 41, 1)); 6237 } 6238 6239 .apps-discount-quick-view .quickly-shop-variant-option { 6240 position: relative; 6241 border: 1px solid #E6E6E6; 6242 border-radius: 2px; 6243 color: var(--color-body-text-75,rgba(41, 41, 41, 0.75)); 6244 } 6245 6246 /* å®ç½åæ¬¾å¼ ç½®ç° */ 6247 .apps-discount-quick-view .quick-shop__variants_content input[type=radio][soldout] + .quickly-shop-variant-option { 6248 color: #888A8B; 6249 opacity: 0.6; 6250 } 6251 6252 .apps-discount-quick-view .quickly-shop-variant-option[data-type="text"] { 6253 display: flex; 6254 align-items: center; 6255 justify-content: center; 6256 min-width: 44px; 6257 } 6258 6259 .apps-discount-quick-view .quickly-shop-variant-option[data-type="image-with-text"] { 6260 min-height: 52px; 6261 } 6262 6263 .apps-discount-quick-view .quickly-shop-variant-option:not([data-type="image"]) { 6264 border: 1px solid #E6E6E6; 6265 } 6266 6267 .apps-discount-quick-view .quickly-shop-variant-option[data-type="image-with-text"] > ljs-img { 6268 width: 42px; 6269 height: 42px; 6270 border-radius: 1px; 6271 } 6272 6273 .apps-discount-quick-view .quickly-shop-variant-option[data-type="image"] > ljs-img { 6274 width: 52px; 6275 height: 52px; 6276 border-radius: 1px; 6277 } 6278 6279 .apps-discount-quick-view .quick-shop__variant__select { 6280 min-height: 46px; 6281 line-height: 46px; 6282 padding-right: 46px; 6283 padding-left: 12px; 6284 } 6285 6286 /* Select */ 6287 .apps-discount-quick-view .secondary-select { 6288 cursor: pointer; 6289 -webkit-appearance: none; 6290 -moz-appearance: none; 6291 appearance: none; 6292 border-width: 1px; 6293 border-style: solid; 6294 border-color: rgba(230, 230, 230, 1); 6295 background-color: transparent; 6296 color: var(--color-body-text,rgba(41, 41, 41, 1)); 6297 } 6298 6299 6300 /* variant options */ 6301 .apps-discount-quick-view .variants-options-container ljs-render { 6302 height: auto !important; 6303 } 6304 6305 .apps-discount-quick-view .variants-options { 6306 margin-top: 10px; 6307 } 6308 6309 .apps-discount-quick-view .variants-select-icon { 6310 position: absolute; 6311 top: 50%; 6312 right: 12px; 6313 transform: translateY(-50%); 6314 } 6315 6316 .apps-discount-quick-view .variants-select-container { 6317 margin-top: 10px; 6318 margin-bottom: 16px; 6319 border-radius: 2px; 6320 border: 1px solid var(--color-borders,#E6E6E6); 6321 } 6322 6323 .apps-discount-quick-view .variants-select-container select { 6324 appearance: none; 6325 min-height: 40px; 6326 padding: 8px 32px 8px 12px; 6327 background-color: transparent; 6328 border: none; 6329 } 6330 6331 /* quantity */ 6332 .apps-discount-quick-view .quick-shop-quantity button, 6333 .apps-discount-quick-view .quick-shop-quantity input { 6334 width: 38px; 6335 height: 38px; 6336 line-height: 38px; 6337 } 6338 6339 .apps-discount-quick-view .quick-shop-quantity button { 6340 color: #888888; 6341 transition: background-color 200ms cubic-bezier(0.455, 0.03, 0.515, 0.955); 6342 border-radius: 2px; 6343 border: 1px solid var(--Line, #E6E6E6); 6344 background-color: #fff; 6345 } 6346 6347 .apps-discount-quick-view .quick-shop-quantity button:hover { 6348 background-color: #f2f2f2; 6349 } 6350 6351 .apps-discount-quick-view .quick-shop-quantity button[disabled] { 6352 cursor: default; 6353 background-color: #f9f9f9; 6354 border: none; 6355 } 6356 6357 .apps-discount-quick-view .quick-shop-quantity { 6358 border: none; 6359 } 6360 6361 .apps-discount-quick-view .quick-shop-quantity button[name="decrease"] { 6362 border-top-right-radius: 0; 6363 border-bottom-right-radius: 0; 6364 } 6365 6366 .apps-discount-quick-view .quick-shop-quantity button[name="increase"] { 6367 border-top-left-radius: 0; 6368 border-bottom-left-radius: 0; 6369 border: 1px solid var(--color-borders, #E6E6E6) 6370 } 6371 6372 #apps-discount-quick-shop-quantity span[role=button][disabled] { 6373 cursor: default; 6374 border: none;
6375 cursor: not-allowed; 6376 background: #F6F6F6; 6377 border: 1px solid transparent; 6378 } 6379 6380 /* atc */ 6381 /* 忬¾å¼æªå䏿´»å¨ */ 6382 .apps-discount-quick-view #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] button[role="addToCart"], 6383 .apps-discount-quick-view #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] [role="unavailable"], 6384 .apps-discount-quick-view #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] [role="soldout"], 6385 .apps-discount-quick-view #apps-discount-quick-shop-body[variantstatus="notHitDiscount"] [role="confirm"] 6386 { 6387 cursor: default; 6388 pointer-events: none; 6389 background-color: #f6f6f6; 6390 color: #9F9F9F; 6391 border-color: transparent; 6392 } 6393 6394 .apps-discount-quick-view .apps_discount_limit_purchase_tip[selectedvariantstatus="notHitDiscount"] { 6395 display: none; 6396 } 6397 6398 /* 忬¾å¼ä¸å¯ç¨ æè å®ç©º */ 6399 #apps-discount-quick-shop-body[status="product_unavailable"] button[role="addToCart"], 6400 #apps-discount-quick-shop-body[status="product_unavailable"] button[role="confirm"], 6401 #apps-discount-quick-shop-body[status="soldout"] button[role="addToCart"], 6402 #apps-discount-quick-shop-body[status="soldout"] button[role="confirm"] { 6403 cursor: default; 6404 pointer-events: none; 6405 background-color: #f6f6f6; 6406 color: #9F9F9F; 6407 border-color: transparent; 6408 } 6409 6410 .apps-discount-quick-view .shop-btn { 6411 display: flex; 6412 justify-content: center; 6413 align-items: center; 6414 height: 52px; 6415 padding: 10px; 6416 border-radius: 1px; 6417 background: #202020; 6418 color: #FFF; 6419 text-align: center; 6420 font-size: 16px; 6421 font-weight: bold; 6422 line-height: 20px; 6423 border: none; 6424 } 6425 .apps-discount-quick-view .app-discount-quick-shop-atc ljs-render, 6426 .apps-discount-quick-view .quick-view-thumbs-container ljs-render { 6427 height: auto !important; 6428 } 6429 6430 .apps-discount-quick-view .app-discount-quick-shop-atc button { 6431 height: 54px; 6432 } 6433 6434 .apps-discount-quick-view .app-discount-quick-shop-atc button[role="buyNow"] { 6435 margin-top: 10px; 6436 } 6437 6438 .apps-discount-quick-view .app-discount-quick-shop-atc button[loading] [role="content"], 6439 .apps-discount-quick-view .app-discount-quick-shop-atc button[loading] ljs-render { 6440 opacity: 0; 6441 } 6442 6443 .app-discount-quick-shop-atc button:not([loading]) .loading { 6444 display: none; 6445 } 6446 6447 .apps-discount-quick-view .app-discount-quick-shop-atc button[loading] { 6448 pointer-events: none; 6449 } 6450 6451 .apps-loading-bounce { 6452 width: 26px; 6453 height: 26px; 6454 border-radius: 50%; 6455 border: 3px solid transparent; 6456 border-bottom-color: #fff; 6457 animation: spinning .8s ease infinite; 6458 -webkit-animation: spinning .8s ease infinite; 6459 } 6460 6461 /* quick view */ 6462 .apps-discount-quick-view .quick-view-render { 6463 height: auto !important; 6464 max-width: 1136px; 6465 margin: 0 20px; 6466 border-radius: 10px; 6467 overflow: hidden; 6468 background: #ffffff; 6469 } 6470 6471 .apps-discount-quick-view .quick-view-images ljs-carousel ljs-img { 6472 cursor: zoom-in; 6473 } 6474 .apps-discount-quick-view .quick-view-images ljs-carousel:not([zoom-in]) ljs-img { 6475 cursor: auto; 6476 } 6477 6478 .apps-discount-quick-view .quick-view-images:not([zoom-in]) .ljs-carousel-button, 6479 .apps-discount-quick-view .quick-view-images[data-size="1"] .ljs-carousel-button, 6480 .apps-discount-quick-view .quick-view-images[zoom-in] .zoom-out-image, 6481 .apps-discount-quick-view .quick-view-images:not([zoom-in]) .zoom-in-image { 6482 display: none; 6483 } 6484 6485 .apps-discount-quick-view .quick-view-images[zoom-in] .ljs-carousel-button { 6486 opacity: 1 !important; 6487 } 6488 6489 .apps-discount-quick-view .quick-view-images[zoom-in] .ljs-carousel-button { 6490 top: unset !important; 6491 bottom: 44px; 6492 box-shadow: 0 3px 6px var(--color-shadow, rgba(0, 0, 0, 15%)); 6493 } 6494 6495 .apps-discount-quick-view .quick-view-images[data-size="1"] .ljs-carousel-button { 6496 display: none; 6497 } 6498 6499 .apps-discount-quick-view .quick-view-images[zoom-in] .ljs-carousel-button-prev { 6500 left: calc(50% - 82px); 6501 transform: translateX(-50%) rotate(-90deg); 6502 } 6503
6504 .apps-discount-quick-view .quick-view-images[zoom-in] .ljs-carousel-button-next { 6505 right: calc(50% - 126px); 6506 transform: translateX(-50%) rotate(-90deg); 6507 } 6508 6509 .apps-discount-quick-view .quick-view-images[zoom-in] .close { 6510 top: unset !important; 6511 left: 50%; 6512 bottom: 36px; 6513 display: flex; 6514 align-items: center; 6515 justify-content: center; 6516 width: 60px; 6517 height: 60px; 6518 cursor: pointer; 6519 border-radius: 100%; 6520 transform: translateX(-50%); 6521 background-color: #ffffff; 6522 box-shadow: 0 3px 6px var(--color-shadow, rgba(0, 0, 0, 15%)); 6523 } 6524 6525 .apps-discount-quick-view .quick-view-images[zoom-in] .zoom-in-image[zoom-in] > ljs-img:first-child { 6526 opacity: 0; 6527 } 6528 6529 .apps-discount-quick-view .quick-view-images[zoom-in] .zoom-in-image[zoom-in] { 6530 cursor: zoom-out; 6531 } 6532 6533 #discount-match-drawer .heading { 6534 font-size: 24px ; 6535 } 6536 6537 .apps-discount-quick-view .color-price { 6538 font-size: 24px; 6539 font-weight: bold; 6540 line-height: 28px; 6541 color: red; 6542 } 6543 6544 .apps-discount-quick-view .color-compare-price { 6545 color: var(--text-disable, rgba(32, 32, 32, 0.60)); 6546 font-size: 16px; 6547 } 6548 6549 6550 .apps-discount-quick-view .quick-view-info .variant-image { 6551 width: 120px !important; 6552 height: 120px; 6553 margin-right: 12px; 6554 } 6555 html[dir='rtl'] .apps-discount-quick-view .quick-view-info .variant-image { 6556 margin-right: 0px; 6557 margin-left: 12px; 6558 } 6559 6560 .apps-discount-quick-view .quick-shop-variants-container .option-name { 6561 font-size: 16px; 6562 } 6563 .apps-discount-quick-view .quick-shop-variants-container .selected-option-name { 6564 font-size: 12px; 6565 color: rgba(32, 32, 32, 0.70); 6566 text-overflow: ellipsis; 6567 display: -webkit-box; 6568 -webkit-line-clamp: 1; 6569 overflow: hidden; 6570 -webkit-box-orient: vertical; 6571 } 6572 #apps-discount-quick-shop-variants .mr-3 { 6573 margin-right: 12px; 6574 } 6575 #apps-discount-quick-shop-variants .px-3 { 6576 padding-left: 12px; padding-right: 12px; 6577 } 6578 6579 .promotion_modal_discount_tip { 6580 margin-top: 20px; 6581 padding: 6px 12px; 6582 border-radius: 2px; 6583 background: #FFF2D8; 6584 color: #EA9E0C; 6585 } 6586 .cart-discount-close-icon { 6587 width: 100%; 6588 height: 100%; 6589 } 6590 @media (max-width: 676.98px) { 6591 .apps-discount-quick-view .quick-view-content { 6592 max-height: 85vh; 6593 height: auto; 6594 padding: 60px 16px 16px 16px; 6595 overflow-y: hidden; 6596 } 6597 6598 .apps-discount-quick-view #apps-discount-quick-shop-body { 6599 max-height: calc(85vh - 266px); 6600 height: fit-content; 6601 overflow-y: auto; 6602 padding-bottom: 60px; 6603 } 6604 .apps-discount-quick-view .quick-view-render { 6605 height: auto !important; 6606 max-width: 100%; 6607 margin: 0; 6608 border-radius: 10px 10px 0 0; 6609 position: fixed; 6610 bottom: 0; 6611 right: 0; 6612 } 6613 6614 .apps-discount-quick-view .quick-view-info { 6615 padding-bottom: 76px; 6616 } 6617 .apps-discount-quick-view .app-discount-quick-shop-atc { 6618 position: fixed; 6619 padding: 16px; 6620 bottom: 0; 6621 width: 100%; 6622 right: 0; 6623 } 6624 6625 .apps-discount-quick-view .shop-btn { 6626 height: 43px; 6627 padding: 12px 16px; 6628 border-radius: 2px; 6629 } 6630 6631 .apps-discount-quick-view .apps_discount_quick_view_close_btn { 6632 position: absolute; 6633 top: 20px; 6634 right: 20px; 6635 width: 20px; 6636 height: 20px; 6637 transition: transform .3s cubic-bezier(0.455, 0.03, 0.515, 0.955); 6638 } 6639 6640 #discount-match-drawer .heading { 6641 font-size: 16px; 6642 } 6643 6644 .apps-discount-quick-view .quick-shop-variants-container .option-name { 6645 font-size: 16px; 6646 } 6647 .apps-discount-quick-view .quick-shop-variants-container .selected-option-name { 6648 font-size: 14px; 6649 } 6650 } 6651 @media (min-width: 960px) { 6652 .apps-discount-quick-view .quick-shop-content { 6653 padding: 44px; 6654 } 6655 6656 /* quick view */ 6657 .apps-discount-quick-view .quick-view-render { 6658 margin: 0 40px; 6659 } 6660 6661 .apps-discount-quick-view .app_discount_quick_view_inner_content { 6662 display: grid; 6663 grid-template-columns: repeat(10, minmax(0, 1fr)); 6664 } 6665 6666 .apps-discount-quick-view .quick-view-gallery { 6667 grid-column-end: span 6; 6668 } 6669 6670 .apps-discount-quick-view .quick-view-info { 6671 grid-column-end: span 4; 6672 padding-left: 64px; 6673 } 6674 html[dir='rtl'] .apps-discount-quick-view .quick-view-info { 6675 padding-left: 0px; 6676 padding-right: 64px; 6677 } 6678 6679 .apps-discount-quick-view .quick-view-thumbs-container { 6680 width: 76px; 6681 margin-right: 20px; 6682 } 6683 6684 .apps-discount-quick-view .quick-view-thumb-images[scroll] { 6685 position: absolute; 6686 padding-bottom: 0; 6687 overflow: hidden; 6688 overflow-y: auto; 6689 } 6690 6691 .apps-discount-quick-view .quick-view-thumb-images[scroll] [scroll-container] { 6692 padding: 0; 6693 } 6694 6695 .apps-discount-quick-view .quick-view-thumb-images ljs-img + ljs-img { 6696 margin-top: 20px; 6697 } 6698 6699 .apps-discount-quick-view .quick-view-thumb-images ljs-img[selected] { 6700 outline: none; 6701 } 6702 6703 .apps-discount-quick-view .quick-view-thumb-images ljs-img::after { 6704 content: ''; 6705 position: absolute; 6706 top: 0; 6707 left: 0; 6708 right: 0; 6709 bottom: 0; 6710 opacity: 0; 6711 margin: 2px;
6712 transition: opacity .2s cubic-bezier(0.455, 0.03, 0.515, 0.955); 6713 border: 1px solid #ffffff; 6714 outline: 2px solid var(--color-body-text,#202020); 6715 } 6716 6717 .apps-discount-quick-view .quick-view-thumb-images ljs-img[selected]::after { 6718 opacity: 1; 6719 } 6720 6721 .apps-discount-quick-view .quick-view-thumb-btn-prev, .quick-view-thumb-btn-next { 6722 height: 32px; 6723 background: white; 6724 } 6725 6726 .apps-discount-quick-view .quick-view-thumb-btn-next { 6727 bottom: -33px; 6728 } 6729 .apps-discount-quick-view .quick-view-thumb-btn-prev { 6730 top: -33px; 6731 } 6732 6733 .apps-discount-quick-view .quick-view-images[zoom-in] .i-spzhtml-slide-item > ljs-img, 6734 .apps-discount-quick-view .quick-view-images[zoom-in] ljs-zoom > ljs-img:first-child { 6735 max-width: 50%; 6736 } 6737 } 6738</style> 6739<template id="spz_custom_discount_default_template"> 6740 ${function() { 6741 return ` 6742 <div></div> 6743 `; 6744 }()} 6745</template> 6746<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"> 6747 const TAG = 'spz-custom-discount-default'; 6748 const API = { 6749 CAMPAIGN: "\/api\/storefront\/promotion\/landing_page\/campaign?discount_id=", 6750 PRODUCT_LIST: "\/api\/storefront\/promotion\/landing_page\/product\/list", 6751 DISCOUNT_I18N: "\/api\/discount-i18n" 6752 }; 6753 const SHOP_ID = "2189163"; 6754 const E_TAB_MAP = { 6755 scenario_buy: { value: "1", domId: "cart_product_list_buy_products" }, 6756 scenario_obtain: { value: "2", domId: "cart_product_list_obtain_products" } 6757 }; 6758 const SORT_DICT = { 6759 recommend_asc: { by: 'recommend', direction: 'asc' }, 6760 title_asc: { by: 'title', direction: 'asc' }, 6761 title_desc: { by: 'title', direction: 'desc' }, 6762 price_asc: { by: 'price', direction: 'asc' }, 6763 price_desc: { by: 'price', direction: 'desc' }, 6764 created_at_desc: { by: 'created_at', direction: 'desc' }, 6765 sales_desc: { by: 'sales', direction: 'desc' }, 6766 add_to_cart_count_desc: { by: 'add_to_cart_count', direction: 'desc' }, 6767 views_desc: { by: 'views', direction: 'desc' } 6768 }; 6769 const SORT_OPTIONS = [ 6770 { value: 'recommend_asc', text: "Recommend" }, 6771 { value: 'price_asc', text: "Price, low to high" }, 6772 { value: 'price_desc', text: "Price, high to low" }, 6773 { value: 'title_asc', text: "Name, A to Z" }, 6774 { value: 'title_desc', text: "Name, Z to A" }, 6775 { value: 'created_at_desc', text: "Newest in" }, 6776 { value: 'sales_desc', text: "Total sales, high to low" }, 6777 { value: 'add_to_cart_count_desc', text: "Purchases, high to low" }, 6778 { value: 'views_desc', text: "Page views, high to low" } 6779 ]; 6780 6781 // ååå¼¹çªä¸é¦é¡µéæ¶ä¿éå¡ç(flashsale_collection)å ±ç¨æ ·å¼ id "discount-match-drawer"ï¼ä¼äº§çéå¤ idã 6782 // æ JS 䏿 id å®ä½å¼¹çªï¼æ¹ç¨å¼¹çªæ ¹èç¹ä¸ä¸ç¨ç js- åç¼é©åç±»å¯ä¸å®ä½ââ䏿 ·å¼è§£è¦ï¼ 6783 // 天ç¶é¿å å½ä¸é¦é¡µå¡çï¼ä¹ä¸åå¼å¼¹çªæ¶ appendChild éæ DOM 顺åºçå½±åï¼æ¤åæ£æ¯å®å¯¼è´å è´åç¬¬ä¸æ¬¡å ³ä¸æï¼ã 6784 const getDiscountMatchPopupEl = () => document.querySelector('.js-discount-match-popup'); 6785 6786 class SpzCustomDiscountDefault extends SPZ.BaseElement { 6787 constructor(element) { 6788 super(element); 6789 this.templates_ = null; 6790 6791 this.discountId = ''; // æ´»å¨ id 6792 this.discountType = ""; 6793 this.discountI18n = {}; 6794 this.bundleProducts = []; 6795 this.tabContentIdMap = {}; 6796 this.currentTab = E_TAB_MAP.scenario_buy.value; 6797 this.modelMap = { 6798 [E_TAB_MAP.scenario_buy.value]: {}, 6799 [E_TAB_MAP.scenario_obtain.value]: {} 6800 } 6801 } 6802 6803 static deferredMount() { 6804 return false; 6805 } 6806 6807 buildCallback() { 6808 this.action_ = SPZServices.actionServiceForDoc(this.element); 6809 this.templates_ = SPZServices.templatesForDoc(this.element); 6810 this.xhr_ = SPZServices.xhrFor(this.win); 6811 6812 this.setupAction_(); 6813 this.initTabContentMap_(); 6814 6815 SPZUtils.Event.listen(document.getElementById('discount-match-mask'), 'click', (e) => { 6816 e.stopPropagation(); 6817 this.handleCloseDiscountDrawer_(); 6818 }); 6819 } 6820 6821 initTabContentMap_() { 6822 Object.entries(E_TAB_MAP).forEach(([key, valueObj]) => { 6823 this.tabContentIdMap[valueObj.value] = valueObj.domId; 6824 }); 6825 } 6826 6827 // åå§å 6828 initData_(data) { 6829 this.discountId = data.discount_info.id; 6830 this.discountType = data.discount_info.discount_type; 6831 const model_buy_map = { 6832 discount_id: this.discountId, //æ´»å¨id 6833 scenario: 1, // æä¸¾å¼ï¼1ï¼è´ä¹°ååï¼2ï¼è·å¾åå 6834 sort: { by :"recommend", direction :"asc"}, 6835 page: 2, //å页ç 6836 limit: 20, // æ¯é¡µæ°é 6837 loading: false, // è¯·æ±æ°æ®æ 示 6838 has_more: true // æ¯å¦è¿ææ°æ® 6839 }; 6840 const model_get_map = { 6841 discount_id: this.discountId, 6842 scenario: 2, 6843 sort: { by :"recommend", direction :"asc"}, 6844 page: 2, 6845 limit: 20, 6846 loading: false, 6847 has_more: true 6848 }; 6849 this.modelMap = { 6850 [E_TAB_MAP.scenario_buy.value]: model_buy_map, 6851 [E_TAB_MAP.scenario_obtain.value]: model_get_map 6852 } 6853 6854 this.renderSort_(); 6855 } 6856 6857 getDiscountI18n_() { 6858 this.xhr_.fetchJson(API.DISCOUNT_I18N, { 6859 method: "GET", 6860 }).then((res)=>{ 6861 this.discountI18n = res; 6862 this.bindEvent(); 6863 }); 6864 } 6865 6866 renderSort_() { 6867 const renderSort = (sortId, model) => { 6868 const $sortElement = document.getElementById(sortId); 6869 if ($sortElement) { 6870 SPZ.whenApiDefined($sortElement).then((api) => { 6871 const defaultValue = `${model.sort.by}_${model.sort.direction}` || "title_asc"; 6872 api.doRender_({ options: SORT_OPTIONS, defaultValue, id: sortId }); 6873 }); 6874 } 6875 }; 6876 6877 renderSort('spz_custom_sort_products_x', this.modelMap[E_TAB_MAP.scenario_buy.value]); 6878 renderSort('spz_custom_sort_products_y', this.modelMap[E_TAB_MAP.scenario_obtain.value]); 6879 } 6880 6881 // è·åæ°æ®ï¼æ¼æ¥htmlæ¨¡æ¿ 6882 async getData(cb) { 6883 // è¯·æ±æ°æ® 6884 const model = this.modelMap[this.currentTab]; 6885 if (!model.has_more || model.loading) return; 6886 6887 model.loading = true; 6888 this.handleLoading_({type: 'product', action: 'show'}); 6889 6890 const $root = getDiscountMatchPopupEl() || document; 6891 const $content = $root.querySelector(`#${this.tabContentIdMap[this.currentTab]} .discount-default__productlist-wrap`) || $root.querySelector(`.discount-default__productlist-wrap`); 6892 //æ¥è¯¢æ´»å¨ååæ¥å£ 6893 const reqBody = { 6894 discount_id: model.discount_id, 6895 page: model.page, 6896 limit: model.limit, 6897 apply_scenario: model.scenario, 6898 sort: model.sort, 6899 sales_channel: { sale_channel_type: "online", sale_channel_id: SHOP_ID } 6900 } 6901 this.xhr_.fetchJson(API.PRODUCT_LIST, { 6902 method: "POST", 6903 body: reqBody 6904 }).then(async(res)=>{ 6905 this.handleLoading_({type: 'product', action: 'close'}); 6906 const count = res.count; 6907 model.has_more = res.has_more; 6908 if (count > 0) { 6909 model.page++; 6910 if (res.products && res.products.length > 0) { 6911 const products = res.products.map((product) => { 6912 return { 6913 ...product, 6914 discount_id: model.discount_id, 6915 apply_scenario: model.scenario, 6916 url: appDiscountUtils.globalizePath(product.url), 6917 image_padding_bottom: appDiscountUtils.image_padding_bottom(product.image.width, product.image.height,'no-limit'), 6918 discount_type: this.discountType 6919 } 6920 }); 6921 // è·ååååè¡¨æ¸²ææ¨¡æ¿, domæè½½ 6922 const renderApi = await SPZ.whenApiDefined(document.querySelector('#a
6922pp-discount_match_drawer_products_render')); 6923 const el = await renderApi.getRenderTemplate({ products: products, discountI18n: this.discountI18n }); 6924 const childNodes = el.querySelectorAll('.as-render-product-item'); 6925 if (childNodes && childNodes.length > 0) { 6926 $content.append(...el.childNodes); 6927 } 6928 6929 this.bundleProducts = [...this.bundleProducts, ...res.products]; 6930 SPZ.whenApiDefined(document.getElementById("appDiscountBundleProductsFunc")).then((api) => { 6931 api.setBundleData(this.bundleProducts); 6932 }) 6933 if(this.discountType === 'DT_MIX_MATCH_BUNDLE') { 6934 const productSelector = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, `#promotionProductSelector`); 6935 productSelector && SPZ.whenApiDefined(productSelector).then((api) => { 6936 api.init(); 6937 }); 6938 } 6939 6940 // çå¬load廿ç°è²èæ¯ 6941 document.dispatchEvent(new CustomEvent('fire.load.img')); 6942 // 触åæå è½½ 6943 cb && cb(products); 6944 window.lazyLoadInstance && window.lazyLoadInstance.update(); 6945 } else { 6946 } 6947 } 6948 model.loading = false; 6949 }).catch((err)=>{ 6950 console.error(err); 6951 model.loading = false; 6952 this.handleLoading_({type: 'product', action: 'close'}); 6953 }).finally(() => { 6954 if(this.discountType === 'DT_MIX_MATCH_BUNDLE') { 6955 SPZ.whenApiDefined(document.getElementById("appDiscountBundleProductsFunc")).then((api) => { 6956 api.handleChangeSort(); 6957 }) 6958 } 6959 }) 6960 } 6961 6962 bindEvent() { 6963 // ç嬿»å¨ï¼è¯·æ±æ°æ® 6964 const $el = document.querySelector(".discount-match-drawer-content"); 6965 if ($el) { 6966 $el.addEventListener("scroll", this.win.SPZCore.Types.debounce(this.win, () => { 6967 const model = this.modelMap[this.currentTab]; 6968 if (!model.loading && model.has_more && appDiscountUtils.isToPageEnd(`[data-drawer-id='${this.discountId}']`)) { 6969 this.getData(); 6970 } 6971 }, 50)); 6972 } 6973 window.addEventListener("resize", this.setMatchDrawerHeight_); 6974 } 6975 6976 // ååæåº 6977 handleSort_(data) { 6978 const sortKey = data.value; 6979 this.modelMap[this.currentTab].sort = SORT_DICT[sortKey || 'title_asc']; 6980 this.modelMap[this.currentTab].page = 1; 6981 this.modelMap[this.currentTab].has_more = true; 6982 this.clearProductListDom_(); 6983 6984 this.getData((products) => {}); 6985 } 6986 6987 // tab 忢 6988 tabChange_(value) { 6989 this.currentTab = value || E_TAB_MAP.scenario_buy.value; 6990 } 6991 6992 setMatchDrawerHeight_() { 6993 //设置ååå¼¹çªé«åº¦,ä¸äºç§»å¨ç«¯æµè§å¨ä¸æ¹å¸®å©æ ä¼å½±åè§å£å¤§å°ï¼å æ¤ä½¿ç¨window.innerHeight
6994 //注æï¼resize ç嬿ª bind thisï¼æ¤å½æ°ä¸è½ä¾èµ this 6995 const modalContent = document.querySelector(".discount-match-drawer"); 6996 if (!modalContent) return; 6997 const wrapper = getDiscountMatchPopupEl(); 6998 const windowHeight = window.innerHeight; 6999 //è¿è¡æ¶æ£æµè´ç©è½¦æ½å±æ¯å¦ä»æå¼ 7000 //ä¸è½åæ» side="right"ï¼ä¸å䏻颿½å±å¼¹åºæ¹åä¸åï¼å³ä¾§ / åºé¨çï¼ï¼åªæ cart_drawer 7001 //section 䏿¯å¦æ open ç sidebar å¤å®ï¼å®½åº¦/å®ä½åç»ç»ä¸ç¨ getBoundingClientRect() 忥 7002 const $drawer = document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); 7003 if (!$drawer) { 7004 //è´ç©è½¦é¡µåºæ¯ï¼å ¨å±åºé¨å¼¹å±ï¼é»è®¤ 90vh å ¨å®½ 7005 modalContent.style.maxHeight = windowHeight * 0.9 + "px"; 7006 modalContent.style.removeProperty("height"); 7007 modalContent.style.removeProperty("width"); 7008 wrapper && wrapper.classList.remove("in-cart-drawer"); 7009 return; 7010 } 7011 //æ½å±åºæ¯ï¼è·é¡¶ 40pxï¼å¹¶å¹é æ½å±å®½åº¦ï¼é å³/æå±çº§/2åç± in-cart-drawer ç CSS å¤çï¼ 7012 const h = (windowHeight - 40) + "px"; 7013 modalContent.style.maxHeight = h; 7014 modalContent.style.height = h; 7015 //class ç»å®æ½å±å卿§ï¼ä¿è¯é å³/æå±çº§/2åçæï¼ï¼width ä» å¨å¯æµéæ¶åè®¾ï¼ 7016 //é¿å drawer å¼å¯å¨ç»æé´ rect.width æä¸º 0 æ¶å¼¹çªä»¥å ¨å®½æµ®å¨é误ä½ç½® 7017 wrapper && wrapper.classList.add("in-cart-drawer"); 7018 const rect = $drawer.getBoundingClientRect(); 7019 if (rect.width > 0) { 7020 modalContent.style.setProperty("width", rect.width + "px", "important"); 7021 } 7022 } 7023 7024 showDiscountToast(message) { 7025 SPZ.whenApiDefined(document.getElementById("cart_match_discount_toast")).then((apis) => { 7026 apis.showToast(message); 7027 }); 7028 } 7029 7030 handleLoading_(event) { 7031 const { type, action } = event; 7032 const loadingElementId = type === 'product' ? '#discount-match-drawer-products_loading' : '#apps-discount-whole-loading'; 7033 const loadingElement = document.querySelector(loadingElementId); 7034 7035 if (loadingElement) { 7036 SPZ.whenApiDefined(loadingElement).then((api) => { 7037 if (action === 'show') { 7038 api.show_(); 7039 } else { 7040 api.close_(); 7041 } 7042 }); 7043 } 7044 } 7045 7046 setupAction_() { 7047 // Buy X Get Y Tab 忢 7048 this.registerAction('handleBuyXGetYTabChange', (invocation) => { 7049 const { panelId } = invocation.args.data; 7050 this.tabChange_(panelId); 7051 }); 7052 // ç嬿åºç»ä»¶ éä¸é项 7053 this.registerAction('handleSort', (invocation) => { 7054 const data = invocation.args.data; 7055 if (this.discountType === "DT_MIX_MATCH_BUNDLE") { 7056 const bundleFun = document.getElementById("appDiscountBundleProductsFunc"); 7057 SPZ.whenApiDefined(bundleFun).then((api) => { 7058 const oldProductInfo = api.productStyleInfo; 7059 const newData = oldProductInfo.filter(item => { 7060 const currentProductOption = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSelectOption-${item.product_id}`); 7061 return currentProductOption && currentProductOption.hasAttribute('selected') 7062 }) 7063 api.init(newData); 7064 }) 7065 .then(() => { 7066 this.handleSort_(data); 7067 }) 7068 } else { 7069 this.handleSort_(data); 7070 } 7071 }); 7072 //åå§åå¼¹çªæ°æ® 7073 this.registerAction('showDiscountDrawer', async (data) => { 7074 const discountId = data.args.discountId || ''; 7075 const activeTab = data.args.activeTab || E_TAB_MAP.scenario_buy.value; 7076 this.tabChange_(activeTab); 7077 this.triggerEvent_('setTab', { activeTab }); 7078 7079 this.getDiscountI18n_(); 7080 this.getCampaignDetail_(discountId).then(() => { 7081 this.handleShowDiscountDrawer_(); 7082 }); 7083 }); 7084 // å ³éå¼¹çª 7085 this.registerAction('removeDiscountElement', () => { 7086 this.handleCloseDiscountDrawer_(); 7087 }); 7088 // 忢å¤ä¸ªæ´»å¨ 7089 this.registerAction('discountSelectorChange', (invocation) => { 7090 const { targetOption } = invocation.args.data; 7091 this.handleDiscountSelectorChange_(targetOption); 7092 }); 7093 } 7094 7095 handleDiscountSelectorChange_(targetOption) { 7096 this.modelMap[this.currentTab].sort = SORT_DICT['title_asc']; 7097 this.modelMap[this.currentTab].page = 1; 7098 this.modelMap[this.currentTab].has_more = true; 7099 this.clearProductListDom_(); 7100 7101 this.handleLoading_({ type: 'product', action: 'show' }); 7102 this.getCampaignDetail_(targetOption).finally(() => { 7103 this.handleLoading_({ type: 'product', action: 'close' }); 7104 }); 7105 } 7106 7107 // æ¸ ç©ºååå表dom, éæ°è¯·æ±æåºæ°æ®æ¸²æ 7108 clearProductListDom_() { 7109 const $root = getDiscountMatchPopupEl() || document; 7110 const $productList = $root.querySelector(`#${this.tabContentIdMap[this.currentTab]} .discount-default__productlist-wrap`) || $root.querySelector(`.discount-default__productlist-wrap`); 7111 if ($productList) $productList.innerHTML = ''; 7112 } 7113 7114 handleShowDiscountDrawer_() {
7115 this.setMatchDrawerHeight_(); 7116 const $el = getDiscountMatchPopupEl(); 7117 if (!$el) return; 7118 document.body.appendChild($el); 7119 $el.style.display="block"; 7120 document.documentElement.classList.add("i-spzhtml-scroll-disabled"); 7121 } 7122 7123 handleCloseDiscountDrawer_() { 7124 const $drawer = getDiscountMatchPopupEl(); 7125 if ($drawer) $drawer.style.display = "none"; 7126 document.documentElement.classList.remove("i-spzhtml-scroll-disabled"); 7127 this.clearProductListDom_(); 7128 7129 const bannerEL = document.querySelector(".discount_match_drawer_banner_inner"); 7130 const productEL = ($drawer || document).querySelector(".discount-default"); 7131 bannerEL && SPZCore.Dom.removeChildren(bannerEL); 7132 productEL && SPZCore.Dom.removeChildren(productEL); 7133 const bundleFun = document.getElementById("appDiscountBundleProductsFunc"); 7134 SPZ.whenApiDefined(bundleFun).then((api) => { 7135 api.init(); 7136 }) 7137 const bundleButtonEL = document.querySelector(".app-bundle-discount_bottom_container"); 7138 bundleButtonEL && SPZCore.Dom.removeChildren(bundleButtonEL); 7139 } 7140 7141 getCampaignDetail_(discount_id) { 7142 return this.xhr_.fetchJson(API.CAMPAIGN + discount_id, { method: "GET" }).then((data) => { 7143 this.bundleProducts = data.buy_product_info.product; 7144 if(data.discount_info.progress == "PROGRESS_FINISHED") { 7145 this.showDiscountToast("The discount has finished"); 7146 return Promise.reject({}); 7147 } else { 7148 SPZ.whenApiDefined(document.getElementById("discount-match-drawer-container")).then(apis => { 7149 apis.render(data, true).then(() => { 7150 this.initData_(data); 7151 const type = data.discount_info.discount_type; 7152 document.querySelector(".discount-match-drawer").dataset.discountType = type; 7153 //ç»æç»ç»ä»¶ä¼ å¼ 7154 if(type === "DT_MIX_MATCH_BUNDLE" || type === "DT_CLASSIC_BUNDLE") { 7155 // éç½® 7156 const bundleButtonEL = document.querySelector(".app-bundle-discount_bottom_container"); 7157 bundleButtonEL && SPZCore.Dom.removeChildren(bundleButtonEL); 7158 7159 //è´ç©è½¦é»è®¤å è´ 7160 data.landing_page_info.button.redirect_page = "cart"; 7161 SPZ.whenApiDefined(document.getElementById("appDiscountBundleProductsFunc")).then((api) => { 7162 api.init(); // 忢 Tab éç½®æ°æ® 7163 api.setBundleData(data.buy_product_info.product, data.landing_page_info, data.discount_info.id, data.discount_info.discount_type, data.discount_info); 7164 }); 7165 if(type === "DT_CLASSIC_BUNDLE") { 7166 SPZ.whenApiDefined((getDiscountMatchPopupEl() || document).querySelector("#promotionBottomContainer")).then((api) => { 7167 const buttonData = { 7168 setting: data.landing_page_info, 7169 ...data.buy_product_info.total_price 7170 } 7171 api.render(buttonData, true); 7172 }) 7173 } 7174 } 7175 }); 7176 }); 7177 } 7178 }).catch(e => { 7179 e.then((data) => { 7180 if(data.code == 10003001) { 7181 this.showDiscountToast("The discount has finished"); 7182 } 7183 }); 7184 }); 7185 } 7186 7187 triggerEvent_(name, data) { 7188 const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); 7189 this.action_.trigger(this.element, name, event); 7190 } 7191 7192 isLayoutSupported(layout) { 7193 return layout == SPZCore.Layout.CONTAINER; 7194 } 7195 } 7196 SPZ.defineElement(TAG, SpzCustomDiscountDefault) 7197</ljs-script> 7198<spz-custom-render-products layout="container" id="app-discount_match_drawer_products_render" class="i-spzhtml-layout-container" i-spzhtml-layout="container">
7199<script id="apps-discounts_product_list_template" type="text/template"> 7200 <div class="render-products-wrapper app_discount_products_list_wrapper"> 7201 ${(function() { 7202 const productsInfo = data.products || data.product; 7203 const product_display = originData?.product_display; 7204 const show_atc = product_display ? !!product_display?.show_add_to_cart : true; 7205 const show_discount_label = !!product_display?.show_discount_label; 7206 const show_sales_progress = !!product_display?.sales_progress?.enabled; 7207 const sales_progress_format = product_display?.sales_progress?.format || ''; 7208 const limit_purchase = originData.limit_purchase; 7209 7210 const productConfig = product_display ? JSON.parse(product_display?.config).color : ''; 7211 const sale_progress_bg = productConfig?.sale_bar_background_color || '#F2F2F2'; 7212 const sale_progress_bg_start = productConfig?.progress_sale_bar_background_color_start || '#FF9C57'; 7213 const sale_progress_bg_end = productConfig?.progress_sale_bar_background_color_end || '#FF4559'; 7214 const sale_count_text = productConfig?.sale_bar_atc_color || '#FC5161'; 7215 const discount_label_start = productConfig?.discount_sign_background_color_start || '#FF9C57'; 7216 const discount_label_end = productConfig?.discount_sign_background_color_end || '#FF4559'; 7217 const discount_label_text = productConfig?.discount_sign_color || '#FFFFFF'; 7218 7219 //éæ¶ä¿éé¦é¡µå¡ç尺寸 7220 const discount_image_size = data.discount_image_size || '100%'; 7221 //ç¹å»å è´æé®éè¦çåæ° 7222 let discount_id = data.discount_id; 7223 let apply_scenario = data.apply_scenario; 7224 7225 7226 if(!productsInfo.length) return ''; 7227 return productsInfo.map(product => { 7228 let price = product.price || 0; 7229 let priceMin = product.price_min || 0; 7230 let priceMax = product.price_max || 0; 7231 let compareAtPriceMax = product.compare_at_price_max || 0; 7232 let compareAtPrice = product.compare_at_price || 0; 7233 let title = product.title || ''; 7234 let id = product.id || ''; 7235 let url = product.url || ''; 7236 let type = product.type || ''; 7237 7238 let is_sold_out = false; 7239 if (product.available == false && product.inventory_policy != 'continue') { 7240 is_sold_out = true; 7241 } 7242 const soldOutLang1 = "Sold out"; 7243 const soldOutLang2 = "Sold out"; 7244 const discountType = product.discount_type; 7245 const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE"; 7246 const defaultVariantTitle = product.variants[0]?.title.replace('-', '/'); 7247 7248 7249 const flash_sale_info = product?.flash_sale_info; 7250 const is_flashsale_sold_out = flash_sale_info?.discount_sales_rate == "100"; 7251 const show_product_sold_progress = flash_sale_info?.discount_sales_rate > 0; 7252 const off_ratio = flash_sale_info?.off_ratio; 7253 price = flash_sale_info?.discount_price || price; 7254 7255 discount_id = discount_id || product.discount_id; 7256 apply_scenario = apply_scenario || product.apply_scenario; 7257 7258 let imageWidth; 7259 if (product.image.width) { 7260 imageWidth = product.image.width; 7261 } else { 7262 imageWidth = 300; 7263 } 7264 let imageHeight; 7265 if (product.image.height) { 7266 imageHeight= product.image.height; 7267 } else { 7268 imageHeight = 300; 7269 } 7270 7271 if (discount_image_size !== 'natural') { 7272 imageHeight = (imageWidth * parseFloat(discount_image_size)) / 100; 7273 } 7274 7275 if (product.published) { 7276 return ` 7277 <div class="common_app__product as-render-product-item"> 7278 <div class="product-snippet"> 7279 <div style="position: relative;"> 7280 <a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link"> 7281 </a> 7282 <ljs-img class="product-image" layout='responsive' width='${imageWidth}' height='${imageHeight}' src="${product.image.src}" alt="${product.image.alt}" object-fit='cover' auto-fit></ljs-img> 7283 <div spz-if="${is_sold_out != true && show_discount_label && off_ratio > 0}" class="product_flashsale_tag" style="color: ${discount_label_text};background: linear-gradient(167deg, ${discount_label_start} 10.84%, ${discount_label_end} 103.76%);"> 7284 7285 <svg width="20" height="20" viewBox="0 0 16 16" focusable="false" data-icon="flashlight" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M6.18 9.16H3.5a.5.5 0 01-.47-.67l2.67-7a.5.5 0 01.47-.32h4.5a.5.5 0 01.46.69l-1.55 3.8h2.92a.5.5 0 01.38.84L5.7 14.66c-.35.4-1 .06-.86-.46l1.33-5.03z"></path></svg> 7286 <div class="product_flashsale_tag_discount" style="color: ${discount_label_text};">-${off_ratio}%</div> 7287 </div> 7288 <div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'> 7289 ${function(){ 7290 if (soldOutLang1){ 7291 return ` 7292 <span>${soldOutLang1}</span> 7293 ` 7294 }else{ 7295 return ` 7296 <span>${soldOutLang2}</span> 7297 ` 7298 } 7299 }()} 7300 </div> 7301 7302 <a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a> 7303 <div spz-if="${!is_sold_out && show_sales_progress && show_product_sold_progress}"> 7304 7305<style> 7306 .discount_product_flashsale_progress { 7307 display: flex; 7308 margin: 10px 0 12px; 7309 align-items: center; 7310 position: relative; 7311 } 7312.discount_product_flashsale_sold_progress { 7313 display: flex; 7314 flex-direction: column; 7315 height: 10px; 7316 position: relative; 7317 overflow-x: hidden; 7318 flex-grow: 1; 7319 border-radius: 24px; 7320 background: #F2F2F2; 7321} 7322 .discount_flashsale__progress, .discount_flashsale__progress_sold { 7323 height: 100%; 7324 } 7325 .discount_flashsale__progress_sold{ 7326 border-radius: 24px; 7327 } 7328 .discount_product_flashsale_sold{ 7329 color: ${sale_count_text}; 7330 font-size: 14px; 7331 font-weight: 600; 7332 line-height: normal; 7333 margin-left: 20px; 7334 } 7335 .falshsale_sold_hot { 7336 position: absolute; 7337 left: -1px; 7338 top: -8px; 7339 } 7340 .sold_hot {
7341 width: 20px; 7342 height: 24px; 7343 } 7344 .discount_flashsale__progress { 7345 background: ${sale_progress_bg} 7346 } 7347 .discount_flashsale__progress_sold { 7348 background: linear-gradient(90deg, ${sale_progress_bg_start} -6%, ${sale_progress_bg_end} 100%); 7349 } 7350 @media (max-width: 959.98px) { 7351 .discount_product_flashsale_sold_progress { 7352 height: 8px !important; 7353 } 7354 .falshsale_sold_hot { 7355 top: -6px !important; 7356 } 7357 .discount_product_flashsale_sold { 7358 margin-left: 8px; 7359 font-size: 11px !important; 7360 } 7361 .sold_hot { 7362 width: 16px; 7363 height: 20px; 7364 } 7365 } 7366</style> 7367<div class="discount_product_flashsale_progress"> 7368 <div class="discount_product_flashsale_sold_progress"> 7369 <div class="discount_flashsale__progress"> 7370 <div class="discount_flashsale__progress_sold" style="width: ${flash_sale_info?.discount_sales_rate}%"></div> 7371 </div> 7372 </div> 7373 <div class="discount_product_flashsale_sold"> 7374 <span spz-if="${flash_sale_info?.discount_sales_rate >= 80}"> 7375 Almost sold out 7376 <div class="falshsale_sold_hot"> 7377 <svg xmlns="http://www.w3.org/2000/svg" class="sold_hot" viewBox="0 0 20 24" fill="currentColor"> 7378 <path d="M7.33701 23.8467C7.33701 23.8467 -2.33876 21.5206 1.98573 9.97516C1.98573 9.97516 3.02282 12.4645 3.02282 13.7222C3.02282 13.7222 2.97147 10.8172 5.33272 8.08606C6.89272 6.07591 8.60011 2.80024 6.80238 0C6.80238 0 12.7782 0.888129 13.9897 10.552C13.9897 10.552 15.0067 6.6989 16.7455 6.45937C16.7455 6.45937 16.2108 7.7901 16.7455 9.7862C16.7455 9.7862 22.2292 20.0461 12.7782 23.514C11.1355 24.0085 9.14088 24.1373 7.33701 23.8467Z" fill="url(#paint0_linear_7027_3661)"/> 7379 <defs> 7380 <linearGradient id="paint0_linear_7027_3661" x1="9.28375" y1="24" x2="9.28375" y2="10.0418" gradientUnits="userSpaceOnUse"> 7381 <stop stop-color="#FF9C57"/> 7382 <stop offset="1" stop-color="#FF4559"/> 7383 </linearGradient> 7384 </defs> 7385 </svg> 7386</div> 7387 </span> 7388 <span spz-else> 7389 <span spz-if="${sales_progress_format == 'FORMAT_NUMBER'}">${flash_sale_info?.discount_sales}</span> 7390 <span spz-if="${sales_progress_format == 'FORMAT_PERCENT'}">${flash_sale_info?.discount_sales_rate}%</span> 7391 sold 7392 </span> 7393 </div> 7394</div> 7395 </div> 7396 <div class="discount_product_atc_icon"> 7397 <ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual> 7398 <div class="product-snippet__price-wrapper max-w-full" > 7399 7400 <span class="text-truncate dj_skin_product_price"> 7401 <ljs-currency layout="container" value="${price}"></ljs-currency> 7402 </span> 7403 <del spz-if="${compareAtPrice * 1 > price * 1}" class="text-truncate dj_skin_product_compare_at_price"> 7404 <ljs-currency layout="container" value="${compareAtPrice}"></ljs-currency> 7405 </del> 7406 7407 </div> 7408 </ljs-render> 7409 <div spz-if="${noNeedBtn && show_atc}" class="shop-btn-wrap"> 7410 <div spz-if="${is_flashsale_sold_out && is_sold_out != true}"> 7411 <button 7412 class="product-snippet__quick-shop-button" 7413 type="button" 7414 @tap="appDiscountRenderQuickShopFunc.getProductTitle(product_title='${ product.url }');discount_sold_out_modal.open" 7415 > 7416 7417 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: ${sale_count_text};"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 7418 </button> 7419 </div> 7420 <div spz-if="${!is_flashsale_sold_out}"> 7421 <ljs-product-form 7422 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }" 7423 product-id="${product.id}" 7424 layout="container" 7425 id="apps-discount-product-form-${product.id}" 7426 @atcSuccess="apps-discount-whole-loading.close;appDiscountRenderQuickShopFunc.getCartCount;appsAddCartToastFunc.showAddToCartToast();" 7427 @atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);" 7428 > 7429 <form> 7430 <input name="variant_id" type="hidden" value=""> 7431 <button 7432 type="button" 7433 class="product-snippet__quick-shop-button" 7434 data-track-product-id="${product.id}" 7435 data-track="click" 7436 data-track-content="add_to_cart" 7437 data-track-source="quick_shop" 7438 @tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});" 7439 > 7440
7441 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: ${sale_count_text };"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 7442 </button> 7443 </form> 7444 </ljs-product-form> 7445 <button 7446 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }" 7447 class="product-snippet__quick-shop-button" 7448 role="addToCart" 7449 data-track="click" 7450 data-track-content="add_to_cart" 7451 data-track-source="quick_shop" 7452 type="button" 7453 @tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase=${limit_purchase});" 7454 > 7455 7456 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: ${sale_count_text };"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 7457 </button> 7458 </div> 7459 </div> 7460 </div> 7461 7462 <div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}"> 7463 <button 7464 spz-if="${is_sold_out != true}" 7465 class="app_discount_bundle_add" 7466 type="button" 7467 @tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}"> 7468 Add 7469 </button> 7470 <ljs-render layout="container" id="promotionSpz
7470VariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render> 7471 <div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}"> 7472 7473 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> 7474 <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/> 7475 </svg> 7476 </div> 7477 </div> 7478 7479 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}"> 7480 <ljs-render spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}" layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});"> 7481 <div class="promotion_classic_variant_container flex justify-between items-center"> 7482 <span>${defaultVariantTitle}</span> 7483 7484 <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg> 7485 </div> 7486 </ljs-render> 7487 </div> 7488 </div> 7489 </div> 7490 </div> 7491 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator "> 7492 <span class="promotion_dotted_line"></span> 7493 <div class="promotion_plus_bundle"> 7494 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"> 7495 <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/> 7496 </svg> 7497 </div> 7498 <span class="promotion_dotted_line"></span> 7499 </div> 7500 ` 7501 } else { 7502 return ``; 7503 } 7504 }).join(''); 7505 })()} 7506 </div> 7507</script>
7507 7508</spz-custom-render-products> 7509 7510<ljs-script layout="logic" type="application/javascript" id="discounts-products-render-script" scope="discounts-products-render-script" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"> 7511 (function () { 7512 const TAG = "spz-custom-render-products"; 7513 class SpzCustomProducts extends SPZ.BaseElement { 7514 constructor(element) { 7515 super(element); 7516 } 7517 7518 buildCallback() { 7519 this.action_ = SPZServices.actionServiceForDoc(this.element); 7520 this.templates_ = SPZServices.templatesForDoc(this.element); 7521 this.xhr_ = SPZServices.xhrFor(this.win); 7522 } 7523 7524 doRender_(data) { 7525 return this.templates_ 7526 .findAndRenderTemplate(this.element, data) 7527 .then((el) => { 7528 const children = this.element.querySelector('*:not(template)'); 7529 children && SPZCore.Dom.removeElement(children); 7530 this.element.appendChild(el); 7531 }); 7532 } 7533 7534 getRenderTemplate(data) { 7535 const renderData = data || {}; 7536 return this.templates_ 7537 .findAndRenderTemplate(this.element, renderData) 7538 .then((el) => { 7539 const children = this.element.querySelector('*:not(template)'); 7540 children && SPZCore.Dom.removeElement(children); 7541 return el; 7542 }); 7543 } 7544 7545 triggerEvent_(name, data) { 7546 const event = SPZUtils.Event.create(this.win, '${ TAG }.${ name }', data || {}); 7547 this.action_.trigger(this.element, name, event); 7548 } 7549 7550 isLayoutSupported(layout) { 7551 return layout == SPZCore.Layout.CONTAINER; 7552 } 7553 } 7554 SPZ.defineElement(TAG, SpzCustomProducts) 7555 7556 })() 7557 7558</ljs-script> 7559 7560<style> 7561 #discount-match-drawer .font-bold { 7562 font-weight: bold; 7563 } 7564 #discount-match-drawer .sort_custom_link { 7565 text-decoration: none; 7566 } 7567 #discount-match-drawer .w-100 { 7568 width:100%; 7569 } 7570 #discount-match-drawer .h-100 { 7571 height:100%; 7572 } 7573 #discount-match-drawer .sort-custom-sel .form-control { 7574 position: relative; 7575 display: flex; 7576 align-items:center; 7577 padding: 12px 36px 12px 12px; 7578 min-width: 160px; 7579 white-space: nowrap; 7580 text-overflow: ellipsis; 7581 overflow: hidden; 7582 height: auto; 7583 font-size: 1rem; 7584 color: #000000; 7585 background-color: #fff; 7586 background-clip: padding-box; 7587 border: 1px solid #ced4da; 7588 border-radius: 0; 7589 transition: border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out; 7590 } 7591 html[dir="rtl"] #discount-match-drawer .sort-custom-sel .form-control { 7592 padding: 12px 12px 12px 36px; 7593 } 7594 #discount-match-drawer .sort_custom_panel { 7595 background: white; 7596 padding:0; 7597 border-radius:4px; 7598 box-shadow: 0px 2px 10px 1px rgba(0, 0, 0, 0.1); 7599 } 7600 #discount-match-drawer .open_active{ 7601 display:block; 7602 } 7603 #discount-match-drawer .sort_custom_content{ 7604 list-style:none; 7605 padding:0; 7606 margin-bottom:0!important; 7607 margin-top:0!important; 7608 } 7609 #discount-match-drawer .sort_custom_content li{ 7610 height:40px; 7611 line-height:40px; 7612 padding:0 28px 0 10px; 7613 font-size:1rem; 7614 color: #30354D; 7615 border-bottom:1px solid #F0F0F0; 7616 cursor:pointer; 7617 white-space: nowrap; 7618 overflow:hidden; 7619 text-overflow: ellipsis; 7620 position:relative; 7621 } 7622 html[dir="rtl"] #discount-match-drawer .sort_custom_content li{ 7623 padding: 0 10px 0 28px; 7624 } 7625 #discount-match-drawer .sort_custom_content li img{ 7626 display:none; 7627 position:absolute; 7628 right:10px; 7629 top:12px; 7630 width:16px; 7631 height:16px; 7632 } 7633 html[dir="rtl"] #discount-match-drawer .sort_custom_content li img{ 7634 right:auto; 7635 left:10px; 7636 } 7637 #discount-match-drawer .sort_custom_content li:hover img{ 7638 display:block; 7639 } 7640 #discount-match-drawer .sort_custom_content li.active img{ 7641 display:block; 7642 } 7643 #discount-match-drawer .sort_custom_select_mobile { 7644 height: auto; 7645 border-radius: 4px 4px 4px 4px; 7646 border: 1px solid #E6E6E6; 7647 color: #292929; 7648 font-weight: bold; 7649 padding: 8px 12px; 7650 } 7651 #discount-match-drawer .sort_custom_close{ 7652 height:64px; 7653 line-height:24px; 7654 text-align:center; 7655 font-size:1rem; 7656 border-bottom:1px solid #E6E6E6; 7657 color: #30354D; 7658 padding-top:20px; 7659 } 7660 #discount-match-drawer .sort_custom_close .close{ 7661 position:absolute; 7662 right:1rem; 7663 top:1rem; 7664 font-size:28px; 7665 width:32px; 7666 height:32px; 7667 line-height:32px; 7668 text-align:center; 7669 } 7670 #discount-match-drawer .common__select::after{ 7671 content: ''; 7672 display: none; 7673 } 7674 #discount-match-drawer .select_drop_down { 7675 position: absolute; 7676 right: 12px; 7677 top: 50%; 7678 transform: translateY(-50%); 7679 height: 24px; 7680 } 7681 html[dir="rtl"] #discount-match-drawer .select_drop_down { 7682 right: auto; 7683 left: 12px; 7684 } 7685 #discount-match-drawer .select_drop_down_rotate { 7686 transform: translateY(-50%) rotate(180deg) !important; 7687 } 7688 #discount-match-drawer .sort_custom_select { 7689 font-weight: bold; 7690 } 7691 #discount-match-drawer.in-cart-drawer .sort_custom_select { 7692 font-weight: 400; 7693 } 7694 7695 @media (max-width: 767.98px){ 7696 #discount-match-drawer .md-hidden { 7697 display:none; 7698 } 7699 7700 #discount-match-drawer .sort_custom_content li:hover img { 7701 display:none; 7702 } 7703 7704 #discount-match-drawer .common__select::after { 7705 display:none 7706 } 7707 7708 #discount-match-drawer .sort_custom_panel{ 7709 width:100%; 7710 background: rgba(41, 41, 41, 0.4); 7711 } 7712 #discount-match-drawer .open_active{ 7713 display:block; 7714 } 7715 #discount-match-drawer .open_active .sort_custom_content{ 7716 animation: slideLeft 0.3s ease-in forwards; 7717 } 7718 #discount-match-drawer .sort_custom_content{ 7719 background:#fff; 7720 } 7721 #discount-match-drawer .sort_custom_content li{ 7722 height:64px; 7723 line-height:64px; 7724 border-bottom:1px solid #E6E6E6; 7725 padding-left:40px; 7726 font-size:14px; 7727 color:#000; 7728 } 7729 #discount-match-drawer .sort_custom_content li img{ 7730 display: none; 7731 left: 16px; 7732 width: 16px; 7733 top: 24px; 7734 height: 16px; 7735 } 7736 #discount-match-drawer .sort_custom_content li.active{ 7737 background: rgba(230, 230, 230, 0.6); 7738 } 7739 #discount-match-drawer .sort_custom_content li.active img{ 7740 display: block; 7741 } 7742 #discount-match-drawer .sort-scroll-panel{ 7743 height:calc(100% - 64px); 7744 overflow:scroll; 7745 } 7746 } 7747 @media (min-width: 768px){ 7748 #discount-match-drawer .lg-hidden { 7749 display:none; 7750 } 7751 } 7752 @keyframes slideLeft { 7753 from{ 7754 left:100% 7755 } 7756 to{ 7757 left:45px 7758 } 7759 } 7760 #discount-match-drawer .ios_safari_bottom_bar {
7761 height:0 !important; 7762 } 7763</style> 7764<template id="spz_custom_sort_template"> 7765 ${function() { 7766 const options = data.options; 7767 const defaultValue = data.defaultValue || options[0].value; 7768 let defaultText = options[0].text; 7769 const hasOption = Array.apply(null, options).find((option) => { 7770 return option.value === defaultValue; 7771 }); 7772 if(hasOption){ 7773 defaultText = hasOption.text; 7774 } 7775 return ` 7776 <div> 7777 <div class="common__select sort-custom-sel md-hidden" @tap="sort-dropdown-${data.id}.open"> 7778 <a href="javascript:void(0)" class="sort_custom_link sort_custom_select form-control">${defaultText}</a> 7779 <span class="select_drop_down" style="pointer-events:none"> 7780 <svg width="24" height="24" viewBox="0 0 16 16" style="vertical-align:top" fill="none" xmlns="http://www.w3.org/2000/svg"> 7781 <g id="编组 17"> 7782 <path id="形状结合" fill-rule="evenodd" clip-rule="evenodd" d="M4.32114 5.52632C4.08682 5.29201 3.70693 5.29201 3.47261 5.52632C3.2383 5.76064 3.2383 6.14054 3.47261 6.37485L7.57383 10.4761C7.69159 10.5938 7.84612 10.6524 8.00047 10.6518C8.15481 10.6524 8.30934 10.5938 8.42711 10.4761L12.5283 6.37485C12.7626 6.14054 12.7626 5.76064 12.5283 5.52632C12.294 5.29201 11.9141 5.29201 11.6798 5.52632L8.00047 9.20565L4.32114 5.52632Z" fill="black"/> 7783 </g> 7784 </svg> 7785 </span> 7786 <ljs-dropdown
7787 id="sort-dropdown-${data.id}" 7788 layout="nodisplay" 7789 placement="bottomRight" 7790 overlay-style="top: 8px;" 7791 @dropdownOpen="${data.id}.handleDropdownOpen" 7792 @dropdownClose="${data.id}.handleDropdownClose" 7793 > 7794 <div class="sort_custom_panel"> 7795 <ul class="sort_custom_content"> 7796 <div class="sort-scroll-panel"> 7797 ${options.map((item) => { 7798 return ` 7799 <li 7800 value="${item.value}" 7801 text="${item.text}" 7802 class="${item.value == defaultValue ? 'active' : ''}" 7803 @tap="sort-dropdown-${data.id}.close;"> 7804 <span class>${item.text}</span> 7805 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAATlJREFUWEftldFNAzEQRF86oATSAXQQOiAdQAdQAaQCoIKECqADSoAS6ICUgB6yJctwjn3icj/en9PpzjuzszvrBTPHYmZ8OoGuQFdgagXOgDfgFbj+y/JTEjgN4D4/geUxCZwA74Dgxjqo8IvDVAq8AJcBbQPcD23cKQjcJYBPwE1p3f83AcEeAqB9Pwf2xyJgv+27/Rf8IjyL911JAStZBft8HLg104n3Vys/dOYnZYnAV6hGCa2mlNDK9bxxCzzWXvMlAlfANiSShIvEhZKHSsVBK078mD0gCQHsq+H7c5IonXjJ6femqHFBXKc5CX2u343qocvZ1RDwTE7CHqtG08SPaUF6RhJWHNdr/Da4Zmt6UatAzJXbrXnoxrYgPSeJXXBEtd2G1GhVoEbVpn86ga5AV2B2Bb4BWcYxIXBRl2MAAAAASUVORK5CYII=" /> 7806 </li>` 7807 }).join('') 7808 } 7809 </div> 7810 </ul> 7811 </div> 7812 </ljs-dropdown> 7813 </div> 7814<div class="common__select sort-custom-sel lg-hidden" @tap="sort-sidebar-${data.id}.open"> 7815 <a href="javascript:void(0)" class="sort_custom_link sort_custom_select_mobile"> 7816 <svg width="14" height="14" viewBox="0 0 14 14" fill="none" style="margin-right:8px;vertical-align:-2px" xmlns="http://www.w3.org/2000/svg"> 7817 <g id="编组 5"> 7818 <rect id="矩形" opacity="0.01" width="14" height="14" fill="#D8D8D8"/> 7819 <path id="形状结合" fill-rule="evenodd" clip-rule="evenodd" d="M0.5 2.9999C0.5 2.66853 0.768629 2.3999 1.1 2.3999H5.9C6.23137 2.3999 6.5 2.66853 6.5 2.9999C6.5 3.33127 6.23137 3.5999 5.9 3.5999H1.1C0.768629 3.5999 0.5 3.33127 0.5 2.9999ZM0.5 6.9999C0.5 6.66853 0.768629 6.3999 1.1 6.3999H12.9C13.2314 6.3999 13.5 6.66853 13.5 6.9999C13.5 7.33127 13.2314 7.5999 12.9 7.5999H1.1C0.76863 7.5999 0.5 7.33127 0.5 6.9999ZM1 10.3999C0.723858 10.3999 0.5 10.6238 0.5 10.8999V11.0999C0.5 11.376 0.723858 11.5999 1 11.5999H10C10.2761 11.5999 10.5 11.376 10.5 11.0999V10.8999C10.5 10.6238 10.2761 10.3999 10 10.3999H1Z" fill="#292929"/> 7820 </g> 7821 </svg> 7822 Sort by 7823 </a> 7824 <ljs-sidebar layout="nodisplay" side="right" id="sort-sidebar-${data.id}" class="w-100 h-100"> 7825 <div class="sort_custom_panel w-100 h-100"> 7826 <ul class="sort_custom_content w-100 h-100"> 7827 <div class="sort_custom_close"> 7828 Sort by 7829 <span @tap="sort-sidebar-${data.id}.close" class="close notranslate"><svg width="32" height="32" viewBox="0 0 32 32" style="vertical-align:revert;" fill="none" xmlns="http://www.w3.org/2000/svg"> 7830 <g id="编组 14"> 7831 <rect id="矩形" opacity="0.01" width="32" height="32" fill="#E6E6E6"/> 7832 <path id="形状结合" fill-rule="evenodd" clip-rule="evenodd" d="M22.6002 10.5751C22.9247 10.2505 22.9247 9.72429 22.6002 9.39972C22.2756 9.07515 21.7494 9.07515 21.4248 9.39972L16 14.8246L10.5752 9.39977C10.2506 9.0752 9.72436 9.0752 9.39979 9.39977C9.07522 9.72434 9.07522 10.2506 9.39979 10.5751L14.8246 15.9999L9.40083 21.4237C9.07626 21.7482 9.07626 22.2745 9.40083 22.599C9.7254 22.9236 10.2516 22.9236 10.5762 22.599L16 17.1753L21.4238 22.5991C21.7483 22.9237 22.2746 22.9237 22.5991 22.5991C22.9237 22.2745 22.9237 21.7483 22.5991 21.4237L17.1753 15.9999L22.6002 10.5751Z" fill="#292929" fill-opacity="0.7"/> 7833 </g> 7834 </svg> 7835 </span> 7836 </div> 7837 <div class="sort-scroll-panel"> 7838 ${options.map((item) => { 7839 return `<li 7840 value="${item.value}" 7841 text="${item.text}" 7842 class="${item.value == defaultValue ? 'active' : ''}"
7843 @tap="sort-sidebar-${data.id}.close"> 7844 <span class>${item.text}</span> 7845 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAATlJREFUWEftldFNAzEQRF86oATSAXQQOiAdQAdQAaQCoIKECqADSoAS6ICUgB6yJctwjn3icj/en9PpzjuzszvrBTPHYmZ8OoGuQFdgagXOgDfgFbj+y/JTEjgN4D4/geUxCZwA74Dgxjqo8IvDVAq8AJcBbQPcD23cKQjcJYBPwE1p3f83AcEeAqB9Pwf2xyJgv+27/Rf8IjyL911JAStZBft8HLg104n3Vys/dOYnZYnAV6hGCa2mlNDK9bxxCzzWXvMlAlfANiSShIvEhZKHSsVBK078mD0gCQHsq+H7c5IonXjJ6femqHFBXKc5CX2u343qocvZ1RDwTE7CHqtG08SPaUF6RhJWHNdr/Da4Zmt6UatAzJXbrXnoxrYgPSeJXXBEtd2G1GhVoEbVpn86ga5AV2B2Bb4BWcYxIXBRl2MAAAAASUVORK5CYII=" /> 7846 </li>` 7847 }).join('') 7848 } 7849 </div> 7850 </ul> 7851 </div> 7852 </ljs-sidebar> 7853 </div> 7854</div> 7855 ` 7856 }()} 7857</template> 7858<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"> 7859 const TAG = 'spz-custom-sort'; 7860 class SpzCustomSort extends SPZ.BaseElement { 7861 constructor(element) { 7862 super(element); 7863 this.spz_custom_id = ''; 7864 } 7865 static deferredMount() { 7866 return false; 7867 } 7868 7869 buildCallback() { 7870 this.action_ = SPZServices.actionServiceForDoc(this.element); 7871 this.templates_ = SPZServices.templatesForDoc(this.element); 7872 this.xhr_ = SPZServices.xhrFor(this.win); 7873 this.setupAction_(); 7874 } 7875 7876 init() { 7877 this.bindEvent(); 7878 } 7879 7880 bindEvent() { 7881 const $selectList = SPZCore.Dom.scopedQuerySelectorAll( 7882 this.element, 7883 ".sort_custom_content li" 7884 ); 7885 const $customerSelect = SPZCore.Dom.scopedQuerySelector( 7886 this.element, 7887 ".sort_custom_select" 7888 ); 7889 7890 // 鿩䏿é项 7891 Array.from($selectList).forEach((node) => { 7892 SPZUtils.Event.listen(node, 'click', ()=> { 7893 let value = node.getAttribute('value'); 7894 let text = node.getAttribute('text'); 7895 // 触åselectChange äºä»¶ 7896 this.triggerEvent_('selectChange', { 7897 value: value, 7898 name: value 7899 }) 7900 $customerSelect.innerHTML = text; 7901 const panelChilds = this.element.querySelectorAll(".sort_custom_panel li"); 7902 // æ¸ ç©ºå ¶ä»é项çå¾éç¶æ 7903 Array.from(panelChilds).forEach((el) => { 7904 if(el.getAttribute('value') == value) { 7905 el.classList.add("active") 7906 } else { 7907 el.classList.remove('active'); 7908 } 7909 }) 7910 }); 7911 }) 7912 7913 } 7914 7915 // 渲æçé¢ 7916 async doRender_(data) { 7917 // æä½è¯¥ç»ä»¶çdom id 7918 this.spz_custom_id = data.id; 7919 7920 return this.templates_ 7921 .findAndRenderTemplate(this.element, data) 7922 .then((el) => { 7923 const children = this.element.querySelector('*:not(template)'); 7924 children && SPZCore.Dom.removeElement(children); 7925 this.element.appendChild(el); 7926 }).then(() => { 7927 this.init(); 7928 }); 7929 } 7930 7931 setupAction_() { 7932 this.registerAction('render', async(invocation) => { 7933 const data = invocation.args.data; 7934 this.doRender_(data) 7935 }); 7936 this.registerAction('handleSelect', async(invocation) => { 7937 const data = invocation.args.data; 7938 7939 }); 7940 this.registerAction('handleDropdownOpen', async(invocation) => { 7941 const $selectDropDown = SPZCore.Dom.scopedQuerySelector( 7942 this.element, 7943 ".select_drop_down" 7944 ); 7945 $selectDropDown.classList.add('select_drop_down_rotate'); 7946 }); 7947 this.registerAction('handleDropdownClose', async(invocation) => { 7948 const $selectDropDown = SPZCore.Dom.scopedQuerySelector( 7949 this.element, 7950 ".select_drop_down" 7951 ); 7952 $selectDropDown.classList.remove('select_drop_down_rotate'); 7953 }); 7954 } 7955 7956 triggerEvent_(name, data) { 7957 const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); 7958 this.action_.trigger(this.element, name, event); 7959 } 7960 7961 isLayoutSupported(layout) { 7962 return layout == SPZCore.Layout.CONTAINER; 7963 } 7964 } 7965 SPZ.defineElement(TAG, SpzCustomSort) 7966</ljs-script> 7967 7968<ljs-lightbox class="apps-discount-quick-view pointer-events-none i-spzhtml-layout-nodisplay" unclose-in-focus id="apps-discount-quick-view" layout="nodisplay" @close="appDiscountBundleProductsFunc.resetModalVariantInfo;" target="body" hidden="" style="display: none" i-spzhtml-layout="nodisplay"> 7969 <ljs-render class="quick-view-render pointer-events-auto w-full i-spzhtml-layout-container" layout="container" id="apps-discount-quick-view-render" items="data" has-loading manual @finish="apps-discount-quick-shop-variants.variantsRender(product=event.data);apps-discount-quick-shop-body.setProduct(data=event.data.product);apps-discount-quick-shop-quantity.update(value=event.data.product.quantity,max=event.data.selectedVariant.available_quantity,min=1);apps-discount-quick-shop-prices.rerender(data=event.data.product);" i-spzhtml-layout="container"> 7970 <template> 7971 <div class="app_discount_basic_style"> 7972 <div class="quick-view-content hide-scrollbar"> 7973 <div class="apps_discount_quick_view_close_btn flex items-center justify-center cursor-pointer z-10" @tap="apps-discount-quick-view.close;">
7973<svg class="cart-discount-close-icon" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 7974<g id="20px/delete"> 7975<path id="Union" fill-rule="evenodd" clip-rule="evenodd" d="M1.93015 17.1473C1.813 17.2644 1.813 17.4544 1.93015 17.5715L2.83453 18.4759C2.95168 18.5931 3.14163 18.5931 3.25879 18.4759L9.91128 11.8234L16.6149 18.527C16.732 18.6442 16.922 18.6442 17.0391 18.527L17.9435 17.6226C18.0607 17.5055 18.0607 17.3155 17.9435 17.1984L11.2399 10.4948L17.8924 3.84229C18.0096 3.72513 18.0096 3.53518 17.8924 3.41802L16.9881 2.51365C16.8709 2.39649 16.6809 2.39649 16.5638 2.51365L9.91128 9.16616L3.30986 2.56474C3.19271 2.44758 3.00276 2.44758 2.8856 2.56474L1.98123 3.46911C1.86407 3.58627 1.86407 3.77622 1.98123 3.89337L8.58264 10.4948L1.93015 17.1473Z" fill="#707070"/> 7976</g> 7977</svg></div> 7978 <div class="app_discount_quick_view_inner_content"> 7979 <div class="quick-view-gallery md:hidden"> 7980 <div class="sticky top-0 flex z-10"> 7981 ${function() { 7982 const images = data.images || []; 7983 const selectedVariant = data.variants.find(v => (v.available && v.is_hit_discount == true)) || data.variants[0]; 7984 const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0; 7985 const initialSlide = selectedIndex === -1 ? 0 : selectedIndex; 7986 7987 return ` 7988 <div class="quick-view-thumbs-container relative flex-shrink-0 pointer-events-auto"> 7989 <ljs-render class="absolute inset-0" id="apps-discount-quick-view-thumb-controls" layout="container" spz-if="${images.length > 0}" template="apps-discount-quick-view-thumb-controls-template" manual></ljs-render> 7990 <ljs-selector class="quick-view-thumb-images inset-0" scroll id="apps-discount-quick-view-thumb-images" layout="container" @select="quick-view-images.goToSlide(index=event.targetOption);"> 7991 <div scroll-container class="flex flex-col"> 7992 ${images.map((image, index) => ` 7993 <ljs-img width="76" height="76" layout="fixed" src="${image.src}" alt="${image.alt}" object-fit="cover" option="${index}" @tap="quick-view-images.goToSlide(index=index)"></ljs-img> 7994 `).join('')} 7995 </div> 7996 </ljs-selector> 7997 </div> 7998 <ljs-carousel class="quick-view-images flex-1" id="quick-view-images" layout="container" zoom controls loop initial-slide="${initialSlide}" @mounted="apps-discount-quick-view-thumb-controls.rerender(data=event);apps-discount-quick-view-thumb-images.toggle(option=event.index, value=true,isScrollIntoView=true);" @slidechange="apps-discount-quick-view-thumb-controls.rerender(data=event);apps-discount-quick-view-thumb-images.toggle(option=event.index, value=true,isScrollIntoView=true);" data-size="${images.length}"> ${images.map(image => { const imageWidth = image.width || 450; const imageHeight = image.height || 450; return ` <ljs-img layout="responsive" width="${imageWidth}" height="${imageHeight}" src="${image.src}" alt="${image.alt}" object-fit="cover"></ljs-img> ` }).join('')} <svg class="rotate-180" pre hidden width="8" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M.47.47A.867.867 0 0 1 1.6.388l.097.084 5.417 5.416c.308.308.335.79.084 1.129l-.084.097-5.417 5.416a.867.867 0 0 1-1.31-1.128l.085-.097L5.275 6.5.47 1.696A.867.867 0 0 1 .387.568L.47.47z" fill="currentColor" /></svg><svg class="" next hidden width="8" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M.47.47A.867.867 0 0 1 1.6.388l.097.084 5.417 5.416c.308.308.335.79.084 1.129l-.084.097-5.417 5.416a.867.867 0 0 1-1.31-1.128l.085-.097L5.275 6.5.47 1.696A.867.867 0 0 1 .387.568L.47.47z" fill="currentColor" /></svg><svg class="" close hidden width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="m14.445 2 1.131 1.131L9.92 8.788l5.657 5.657-1.13 1.131L8.787 9.92l-5.657 5.657L2 14.446l5.657-5.658L2 3.131 3.131 2l5.657 5.657L14.445 2z" fill="currentColor" /></svg></ljs-carousel> 7999 `; 8000 }()} 8001 </div> 8002 </div> 8003 ${function() { 8004 const productData = data; 8005 const limit_purchase = data.limit_purchase || 0; 8006 let product_change_event = ''; 8007 let mouse_over_event = ''; 8008 let mouse_out_event = ''; 8009 const product_options = productData.options.filter(
8009Boolean) || []; 8010 for (let opt of product_options) { 8011 const nameEscape = opt.name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, ''); 8012 product_change_event = product_change_event + `apps-discount-quick-shop-selected-variant-${opt.id}.rerender(data=event.selectedValues.${opt.name});`; 8013 mouse_over_event = mouse_over_event + `@${nameEscape}Mouseover="apps-discount-quick-shop-selected-variant-${opt.id}.rerender(data=event);"`; 8014 mouse_out_event = mouse_out_event + `@${nameEscape}Mouseout="apps-discount-quick-shop-selected-variant-${opt.id}.rerender(data=event.selectData.${opt.name});"`; 8015 } 8016 const selectedVariant = productData.variants.find(v => (v.available && v.is_hit_discount == true)) || productData.variants[0]; 8017 const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ? 8018 "Sold out" : 8019 "Add to cart"; 8020 const status = ( 8021 (selectedVariant && !selectedVariant.available) || 8022 (!selectedVariant && !data.available)) ? 'soldout' : 'available'; 8023 8024 return ` 8025 <div class="quick-view-info"> 8026 <div class="sticky top-0"> 8027 <div class="inline-block flex"> 8028 <div class="variant-image lg:hidden"> 8029 <ljs-render id="apps-discount-quick-shop-variant-image" layout="container" template="apps-discount-quick-shop-variant-image-template" manual></ljs-render> 8030 </div> 8031 <div> 8032 <h3 class="heading break-words text_ellipsis_line_2" style="margin-top: 0;"> 8033 ${data.title || data.brief} 8034 </h3> 8035 <div class="mt-2"> 8036 <ljs-render id="apps-discount-quick-shop-prices" layout="container" template="apps-discount-quick-shop-prices-template" manual></ljs-render> 8037 </div> 8038 <ljs-render id="quick-shop-flashsale-tip" layout="container" template="quick-shop-flashsale-tip-template" manual></ljs-render> 8039 </div> 8040 </div> 8041 8042 <div spz-if="${data.show_classic_bundle_spu_style === true}" class="promotion_modal_discount_tip"> 8043 Add ${productData.discount_min_purchase_qty} items for discount 8044 </div> 8045 <ljs-product-form 8046 id="apps-discount-quick-shop-body" 8047 product-unavailable-status 8048 product-id="${productData.id}" 8049 variant-id="${selectedVariant.id}" 8050 layout="container" 8051 @atcSuccess="apps-discount-quick-view.close;appDiscountRenderQuickShopFunc.getCartCount;appsAddCartToastFunc.showAddToCartToast();" 8052 @atcError="cart_match_discount_toast.showToast(content=event.message);" 8053 @productChange="apps-discount-quick-shop-variant-image.rerender(data=event);apps-discount-quick-shop-prices.rerender(data=event);apps-discount-quick-shop-quantity.update(value=event.quantity,max=event.max);${product_change_event};appDiscountRenderQuickShopFunc.handleNotHitDiscount(data=event);appDiscountBundleProductsFunc.handleNotHitDiscount(data=event);appDiscountBundleProductsFunc.handleModalInventoryCheck(data=event);appDiscountFlashsaleFunc.changeFlashSaleLimitPurchase(data=event);" 8054 > 8055 <ljs-render spz-if="${data.show_classic_bundle_spu_style === true}" layout="container" id="promotionModalVariantTagRender" template="promotionSelectedVariantTemplate" manual></ljs-render> 8056 <form> 8057 <ljs-variants 8058 manual 8059 disabled-dj-event 8060 name="apps-discount-quick-view-variant" 8061 id="apps-discount-quick-shop-variants" 8062 layout="container" 8063 spz-if="${data.options?.length > 0}" 8064 slide="quick-view-images" 8065 switch-slide="[]" 8066 template="apps-discount-quick-shop-variant-template" 8067 interact="hover" 8068 interference 8069 ${mouse_over_event} 8070 ${mouse_out_event} 8071 ></ljs-variants> 8072 <div spz-if="${data.discountType !== 'DT_CLASSIC_BUNDLE'}"> 8073 8074<div class="mt-5"> 8075 <div class="font-semibold">Quantity</div> 8076 <ljs-quantity 8077 disabled-dj-event 8078 class="quick-shop-quantity mt-2 flex items-center" 8079 id="apps-discount-quick-shop-quantity" 8080 name="quantity" 8081 layout="fixed" 8082 width="116" 8083 height="40" 8084 value="1" 8085 min="1" 8086 max="${(data.variants?.find(v => (v.available && v.is_hit_discount == true)) || data.variants[0]).available_quantity || data.available_quantity}" 8087 icon-class="" 8088 number-class="" 8089 > 8090 <svg class="" role="decrease" width="13" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg> 8091 <svg class="" role="increase" width="13" height="13" xmlns="http://www.w3.org/2000/svg"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg> 8092 </ljs-quantity> 8093</div> 8094 </div> 8095 8096${function() { 8097 const selectedVariant = data.variants.find(v => v.available && v.is_hit_discount == true) || data.variants[0]; 8098 const statusLan = ( 8099 (selectedVariant && !selectedVariant.available) || 8100 (!selectedVariant && !data.available)) ? 8101 "Sold out" : 8102 "Add to cart"; 8103 return `
8104 <div class="app-discount-quick-shop-atc mt-4 lg:mt-7 flex flex-col"> 8105 <button spz-if="${data.need_atc == true}" class="relative flex items-center justify-center font-semibold shop-btn" 8106 type="button" 8107 role="addToCart" 8108 data-track="click" 8109 data-track-content="add_to_cart" 8110 data-track-source="add_to_cart" 8111 data-type=""> 8112 <span role="content">${statusLan}</span> 8113 <div class="loading flex items-center justify-center absolute inset-0" role="loading"> 8114 <div class="apps-loading-bounce"></div> 8115 </div> 8116 </button> 8117 <button spz-else class="relative flex items-center justify-center font-semibold shop-btn" 8118 type="button" 8119 role="confirm" 8120 @tap="appDiscountBundleProductsFunc.getVariantInfo;"> 8121 <span>Add</span> 8122 </button> 8123 </div> 8124 `; 8125}()} 8126 </ljs-render> 8127 </form> 8128 </ljs-product-form> 8129 </div> 8130 </div> 8131 `; 8132 }()} 8133 </div> 8134 </div> 8135 </div> 8136 </template> 8137 </ljs-render> 8138 </ljs-lightbox> 8139 8140 <template id="apps-discount-quick-view-thumb-controls-template"> 8141 <div class="absolute inset-0"> 8142 <div spz-if="${data.index > 0}" class="quick-view-thumb-btn-prev absolute left-0 right-0 top-0 flex items-center justify-center pointer-events-auto cursor-pointer z-10" @tap="quick-view-images.goPrev();"><svg class="rotate--90" width="8" height="12" xmlns="http://www.w3.org/2000/svg"><path d="M1.505.606a.7.7 0 0 1 .903-.074l.087.074 4.95 4.95c.11.109.175.245.197.387l.008.107a.698.698 0 0 1-.131.408l-.074.087-4.95 4.95a.7.7 0 0 1-1.064-.903l.074-.087 4.454-4.454-4.454-4.456a.7.7 0 0 1 0-.99z" fill="currentColor"/></svg></div> 8143 <div spz-if="${data.index + 1 != data.total}" class="quick-view-thumb-btn-next absolute left-0 right-0 bottom-0 flex items-center justify-center pointer-events-auto cursor-pointer z-10" @tap="quick-view-images.goNext();"><svg class="rotate-90" width="8" height="12" xmlns="http://www.w3.org/2000/svg"><path d="M1.505.606a.7.7 0 0 1 .903-.074l.087.074 4.95 4.95c.11.109.175.245.197.387l.008.107a.698.698 0 0 1-.131.408l-.074.087-4.95 4.95a.7.7 0 0 1-1.064-.903l.074-.087 4.454-4.454-4.454-4.456a.7.7 0 0 1 0-.99z" fill="currentColor"/></svg></div> 8144 </div> 8145 </template> 8146 8147 <template id="apps-discount-quick-shop-variant-image-template"> 8148 ${function() { 8149 const selectedVariant = data.variant || data.variants[0]; 8150 const image = selectedVariant.image || data.product.image; 8151 const imageWidth = image?.width || 120; 8152 const imageHeight = image?.height || 120; 8153 return ` 8154 <ljs-img class="variant-image" layout="responsive" width="${imageWidth}" height="${imageHeight}" src="${image.src}" alt="${image.alt}" object-fit="cover" auto-fit></ljs-img> 8155 ` 8156 }()} 8157 </template> 8158 8159 <template id="apps-discount-quick-shop-prices-template"> 8160 ${function() { 8161 const defaultVariant = data.variants?.find(v => (v.available && v.is_hit_discount == true)) || data.variants?.[0]; 8162 const selectedVariant = data.variant || defaultVariant; 8163 const isHasRrice = (selectedVariant.price || selectedVariant.price == 0) ? true : false; 8164 8165 if(selectedVariant.flash_sale_info && selectedVariant.flash_sale_info.discount_price) { 8166 selectedVariant.price = selectedVariant.flash_sale_info.discount_price; 8167 } 8168 if(data.flash_sale_info && data.flash_sale_info.discount_price) { 8169 data.price = data.flash_sale_info.discount_price; 8170 } 8171 8172 return !!selectedVariant ? ` 8173 <div class="flex items-center flex-wrap break-words" style="min-height: 28px"> 8174 <ljs-currency spz-if="${isHasRrice}" class="inline-block mr-3 color-price" value="${selectedVariant.price}" layout="container"></ljs-currency> 8175 <ljs-currency spz-if="${+selectedVariant.price < +selectedVariant.compare_at_price}" class="inline-block mr-3 line-through color-compare-price" value="${selectedVariant.compare_at_price}" layout="container"></ljs-currency> 8176 </div> 8177 ` : ` 8178 <div class="flex items-center color-price break-words" style="min-height: 28px"> 8179 <ljs-currency layout="container" value=${data.price}></ljs-currency>
8180 <span spz-if="${+data.price_min < +data.price_max}">-</span> 8181 <ljs-currency layout="container" value="${data.price_max}" spz-if="${+data.price_min < +data.price_max}"></ljs-currency> 8182 </div> 8183 `; 8184 }()} 8185 </template> 8186 8187 <template id="quick-shop-flashsale-tip-template"> 8188 ${function(){ 8189 const defaultVariant = data.variants?.find(v => (v.available && v.is_hit_discount == true)) || data.variants?.[0]; 8190 const selectedVariant = data.variant || defaultVariant; 8191 8192 let show_flashsale_limit_tip = false; 8193 let limit_user_product_discount; 8194 8195 8196 if(selectedVariant.flash_sale_info && selectedVariant.flash_sale_info?.limit_user_product_type != "LUPT_NO_LIMIT" && selectedVariant.flash_sale_info?.limit_user_product_discount > 0) { 8197 show_flashsale_limit_tip = true; 8198 limit_user_product_discount = selectedVariant.flash_sale_info?.limit_user_product_discount; 8199 8200 } 8201 if(data.flash_sale_info && data.flash_sale_info?.limit_user_product_type != "LUPT_NO_LIMIT" && data.flash_sale_info?.limit_user_product_discount > 0) { 8202 show_flashsale_limit_tip = true; 8203 limit_user_product_discount = data.flash_sale_info?.limit_user_product_discount; 8204 } 8205 return ` 8206 <div> 8207 <div spz-if="${show_flashsale_limit_tip}" style="color: #fa4f6cd9" class="apps_discount_limit_purchase_tip"> 8208 Promo products limited to ${limit_user_product_discount} item per person 8209 </div> 8210 </div> 8211 ` 8212 }()} 8213</template> 8214 <template id="apps-discount-quick-shop-variant-template"> 8215 <div class="quick-shop-variants-container mt-5"> 8216 ${function() { 8217 const currentProduct = data.product; 8218 return (currentProduct.options || []).map((option, index) => { 8219 const optionName = option.name || ''; 8220 const optionId = option.id || ''; 8221 const position = `option${index + 1}`; 8222 8223 return ` 8224 <div class="variants-options-container ${index !==0 ? 'mt-5' : ''}"> 8225 <fieldset class="quick-shop__variants_content mt-6 mx-0" name="${optionName}"> 8226 <div class="quick-shop__variants_title flex flex-row flex-wrap break-words"> 8227 <span class="option-name font-semibold">${optionName}: </span> 8228 <ljs-render class="flex items-center" id="apps-discount-quick-shop-selected-variant-${optionId}" layout="container" template="apps-discount-quick-shop-selected-variant-template"></ljs-render> 8229 </div> 8230 <div class="flex flex-wrap"> 8231 ${option.values.map((value,idx) => { 8232 const selected = data.product.defaultSelectValues?.[optionName] == value ? 'checked' : ''; 8233 8234 return ` 8235 <div class="relative mt-3 mr-3" option="${value}"> 8236 <input 8237 type="radio" 8238 class="pointer-events-auto" 8239 option="${value}" 8240 id="apps-discount-quick-shop-variant-${value}-${idx}" 8241 name="apps-discount-quick-shop-variant-${optionName}" 8242 value="${value}" 8243 form="apps-discount-quick-shop-body" 8244 @input-debounced="apps-discount-quick-shop-selected-variant-${optionId}.rerender(data=event);" 8245 ${selected} 8246 > 8247 <label 8248 class="quickly-shop-variant-option relative flex items-center break-words flex-shrink-0 " 8249 data-type="text" 8250 for="apps-discount-quick-shop-variant-${value}-${idx}"> 8251 <span class="break-words py-2 px-3">${value}</span> 8252 </label> 8253 </div> 8254 `; 8255 }).join('')} 8256 </div> 8257 </fieldset> 8258 </div> 8259 `; 8260 }).join('') 8261 }()} 8262 </div> 8263</template> 8264 8265<template id="apps-discount-quick-shop-selected-variant-template"> 8266 ${function() { 8267 const value = (data.originData && data.originData.value) || data.value; 8268 const isHasValue = value ? true : false; 8269 return `
8270 <span spz-if="${isHasValue}" class="selected-option-name break-words"> 8271 ${value} 8272 </span> 8273 ` 8274 }()} 8275</template> 8276<style> 8277 ljs-carousel .i-spzhtml-slide-item { 8278 display: flex; 8279 justify-content: center; 8280 } 8281</style> 8282<template id="appDiscountProductPriceTemplate"> 8283 ${function(){ 8284 return ` 8285 <div class="product-snippet__price-wrapper max-w-full"> 8286 <span><ljs-currency layout="container" value="${data.total_received_discounts}" class="text-truncate dj_skin_product_price money ${+data.total_price > +data.total_received_discounts ? '' : 'promotion_no_del_p'}"></ljs-currency></span> 8287 <del><ljs-currency layout="container" value="${data.total_price}" spz-if="${+data.total_price > +data.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price money"></ljs-currency></del> 8288 </div> 8289 ` 8290 } ()} 8291</template> 8292 8293<template id="promotionSelectedVariantTemplate"> 8294 <div class="promotion_variant_tag_list flex flex-wrap"> 8295 ${data.map((variant) => { 8296 return ` 8297 <div class="promotion_variant_tag_item flex items-center"> 8298 <span class="promotion_variant_tag_item_quantity mr-1" spz-if="${variant.quantity > 1}">x${variant.quantity}</span> 8299 <span class="promotion_variant_tag_item_text mr-2">${variant.variant_title || variant.title}</span> 8300 <span class="promotion_variant_tag_item_close cursor-pointer" @tap="appDiscountBundleProductsFunc.deleteVariantTag(product_id=${variant.product_id}, variant_id=${variant.variant_id});" spz-if="${!variant.is_classic_bundle_product_list_variant_tag}"> 8301 <svg class=" " 8302 xmlns="http://www.w3.org/2000/svg" 8303 width="16px" 8304 height="16px"
8305 viewBox="0 0 16 16" 8306 > 8307 <path d="M9.08373973,8 L14.7840494,2.29705621 C15.0719835,2.00668579 15.0719835,1.53834033 14.7840494,1.24796991 L14.7500176,1.21817841 C14.4595331,0.928700933 13.9897734,0.928700933 13.6992889,1.21817841 L8.00110629,6.92750609 L2.30505063,1.21605044 C2.01481433,0.927983186 1.54668519,0.927983186 1.25644889,1.21605044 L1.2224172,1.24584194 C1.08024702,1.38371894 1,1.57335537 1,1.77144907 C1,1.96954277 1.08024702,2.15917921 1.2224172,2.29705621 L6.92272682,8 L1.2224172,13.7029438 C0.934483002,13.9933142 0.934483002,14.4616597 1.2224172,14.7520301 L1.25432191,14.7839496 C1.54455821,15.0720168 2.01268734,15.0720168 2.30292364,14.7839496 L8.00323328,9.08100577 L13.7035429,14.7839496 C13.9937792,15.0720168 14.4619083,15.0720168 14.7521446,14.7839496 L14.7819224,14.7520301 C15.0698566,14.4616597 15.0698566,13.9933142 14.7819224,13.7029438 L9.08161274,8 L9.08373973,8 Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path> 8308 </svg> 8309 </span> 8310 </div> 8311 `; 8312 }).join('')} 8313 </div> 8314</template> 8315 8316<template id="appDiscountBundleButton"> 8317 ${function(){ 8318 const { original_price, received_discounts, picked_qty } = data; 8319 const button_text = originData.setting.button.text; 8320 const button_config = JSON.parse(originData.setting.button.config); 8321 const button_action = originData.setting.button.redirect_page; 8322 const text = originData.setting.price_text_config.text; 8323 const price_config = JSON.parse(originData.setting.price_text_config.config); 8324 const price_text = text.replace(/\{picked_qty\}/g, `<span>${picked_qty}</span>`).replace(/\{original_price\}/g, `<ljs-currency layout="container" spz-if="${+original_price > +received_discounts}" class="money app_discount_button_original_price" style="color: ${price_config.color.total_price}" value="${original_price}"></ljs-currency>`).replace(/\{received_discounts\}/g, `<ljs-currency layout="container" class="money app_discount_button_discounted_price" style="color: ${+original_price <= +received_discounts ? price_config.color.total_price : price_config.color.discount_price}" value="${received_discounts}"></ljs-currency>`); 8325 return ` 8326 <div class="app-bundle-discount_bottom_container"> 8327 <div id="appBundlBottomContainer"> 8328 <div class="app-bundle-discount_info">${price_text}</div> 8329 <div 8330 class="app-bundle-discount_bottom_button" 8331 style="color: ${button_config.color.button_text}; background-color: ${button_config.color.button_bg} " 8332 @tap="appDiscountBundleProductsFunc.handleClick(action=${button_action})" 8333 >${button_text}</div> 8334 </div> 8335 </div> 8336 ` 8337 }()} 8338</template> 8339 8340<template id="promotionClassicSelectedVariantTemplate"> 8341 ${function(){ 8342 return ` 8343 <div class="promotion_classic_variant_container flex justify-between items-center"> 8344 <span>${data[0].variant_title}</span> 8345 <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg> 8346 </div> 8347 ` 8348 } ()} 8349</template> 8350 8351<template id="promotionMinPurchaseQtyTemplate"> 8352 <div spz-if="${data.discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${data.discount_min_purchase_qty}</div> 8353</template>
8354<script id="appDiscountUtils"> 8355 appDiscountUtils = { 8356 image_padding_bottom: (width, height, origin) => { 8357 origin = origin || 'limit'; 8358 if (width && height) { 8359 const hw_ratio = height / width; 8360 if (origin == 'limit') { 8361 if (hw_ratio < 0.62) { 8362 return '62%'; 8363 } else if (hw_ratio > 1.6) { 8364 return '160%'; 8365 } 8366 } 8367 return parseInt(hw_ratio * 100) + '%'; 8368 } 8369 return '100%'; 8370 }, 8371 globalizePath: (urlPath) => { 8372 if(typeof urlPath !== 'string') return ; 8373 if(urlPath.indexOf('/') !== 0){ 8374 urlPath = '/'+urlPath; 8375 } 8376 let prefix = ((SHOPLAZZA && SHOPLAZZA.routes && SHOPLAZZA.routes.root) || ''); 8377 8378 if(prefix.length>0){ 8379 if(prefix.indexOf('/') !== 0){ 8380 prefix = '/'+prefix; 8381 } 8382 const prefixionPath = (prefix,urlPath) => { 8383 if(typeof prefix !== 'string') return ; 8384 if(typeof urlPath !== 'string') return ; 8385 if(urlPath.indexOf('/') !== 0){ 8386 throw new Error('prefixPath: urlPath must be start with /'); 8387 } 8388 if(prefix.indexOf('/') !== 0){ 8389 throw new Error('prefixPath: prefix must be start with /'); 8390 } 8391 return prefix+urlPath; 8392 } 8393 return prefixionPath(prefix,urlPath); 8394 }else{ 8395 return urlPath; 8396 } 8397 }, 8398 //æ»å¨å è½½æ¹æ³ 8399 isToPageEnd: (el) => { 8400 const $el = document.querySelector(el); 8401 if($el) { 8402 const scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop; //æ»å¨æ¡è·ç¦»é¡¶é¨çé«åº¦ 8403 const clientHeight = window.innerHeight; //å½åå¯è§ç页é¢é«åº¦ 8404 const scrollHeight = document.body.scrollHeight; //å½å页é¢çæ»é«åº¦ 8405 const elOffsetTop = $el.getBoundingClientRect().top + window.pageYOffset - document.documentElement.clientTop; // å ç´ è·ç¦»ææ¡£é¡¶é¨è·ç¦» 8406 // 妿æ¹å¡çä¸é¢è¿æå¡çæè dom,è®¡ç®æ»å¨å è½½éè¦èèè¿ä¸ªé«åº¦ 8407 const toBottom = scrollHeight - ($el.offsetHeight + elOffsetTop); //å ç´ å°æµè§å¨åºé¨çé«åº¦ 8408 if (scrollTop + clientHeight + toBottom + 100 >= scrollHeight) { 8409 return true; 8410 } 8411 } 8412 return false; 8413 }, 8414 judgeMobile: () => { 8415 return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent) || window.document.body.offsetWidth <= 960; 8416 }, 8417 judgeRTL: () => { 8418 return window.document.dir === 'rtl'; 8419 }, 8420 inProductBody: (element) => { 8421 const document = window.document; 8422 const productInfo = document.querySelector(".product-info"); 8423 const productInfoBody = document.querySelector(".product-info-body"); 8424 const productInfoBody2 = document.querySelector(".product-info__body"); 8425 const productInSection = document.querySelector('div[data-section-type*="product"]'); 8426 const curProductInfo = productInfo || productInfoBody || productInfoBody2 || productInSection; 8427 8428 return curProductInfo ? curProductInfo.contains(element) : false; 8429 }, 8430 convertTimestampToFormat(timestamp, timeZone) { 8431 const sign = timeZone[0] === '+' ? 1 : -1; // æ£æ¥æ¶åºåç§»éçç¬¦å· 8432 const offset = parseInt(timeZone.slice(1, 3)); // æåæ¶åºåç§»é 8433 const date = new Date((timestamp + sign * offset * 3600) * 1000); // æ·»å æ¶åºåç§»é 8434 const year = date.getUTCFullYear();
8435 const month = ("0" + (date.getUTCMonth() + 1)).slice(-2); 8436 const day = ("0" + date.getUTCDate()).slice(-2); 8437 const hours = ("0" + date.getUTCHours()).slice(-2); 8438 const minutes = ("0" + date.getUTCMinutes()).slice(-2); 8439 return year + "/" + month + "/" + day; 8440 }, 8441 // 跳转å³ç: is_redirection + link(å¯éè¦ç) 8442 // è¿åæç»è·³è½¬ URL,null 表示ä¸è·³ 8443 resolveDiscountHref: (setting, landingUrl) => { 8444 if (!setting || !setting.is_redirection) return null; 8445 const link = typeof setting.link === 'string' ? setting.link.trim() : ''; 8446 if (link && /^https?:\/\//i.test(link)) return link; 8447 return landingUrl || null; 8448 }, 8449 // ä¸éè¦ landing URL ççº¯æ ·å¼èå¨åºæ¯ä½¿ç¨(å æ /ç®å¤´) 8450 canRedirect: function(setting) { 8451 return !!this.resolveDiscountHref(setting, '_'); 8452 } 8453 } 8454</script>
8454 8455<spz-custom-discount-bundle-products id="appDiscountBundleProductsFunc" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-bundle-products> 8456<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"> 8457 // ååå¼¹çªä¸é¦é¡µéæ¶ä¿éå¡çå ±ç¨æ ·å¼ id "discount-match-drawer"ï¼ä¼äº§çéå¤ idã 8458 // ç¨å¼¹çªæ ¹èç¹ä¸ä¸ç¨ç js- åç¼é©åç±»å¯ä¸å®ä½ä½ç¨åæ ¹ï¼é¿å å½ä¸é¦é¡µå¡ç导è´å¼¹çªå å ç´ æ¥è¯¢å¤±è´¥ã 8459 const getDiscountMatchPopupEl = () => document.querySelector('.js-discount-match-popup'); 8460 8461 class SpzCustomDiscountBundleProducts extends SPZ.BaseElement { 8462 constructor(element) { 8463 super(element); 8464 this.xhr_ = SPZServices.xhrFor(this.win); 8465 this.getDiscountPriceApi = "\/api\/storefront\/promotion\/calculate\/discounted_price"; 8466 this.buyNowApi = "\/api\/checkout\/order"; 8467 this.batchAtcApi = "\/api\/cart\/batch"; 8468 // 款å¼ä¿¡æ¯éå 8469 this.productStyleInfo = []; 8470 // å¼¹çªå éæ©æ¬¾å¼éå 8471 this.modalVariantInfo = []; 8472 this.show_classic_bundle_spu_style = false; 8473 this.bundleProducts = []; //æç»åå 8474 this.bundleConfig = {}; //䏿¹æé®é ç½® 8475 this.discountId = ""; 8476 this.discountType = ""; 8477 this.discountInfo = ""; 8478 this.lineItems = []; 8479 this.tempCss = {}; 8480 this.renderQuickShop_ = this.win.SPZCore.Types.debounce(this.win, this.renderQuickShopModal.bind(this), 500); 8481 } 8482 8483 isLayoutSupported(layout) { 8484 return layout == SPZCore.Layout.LOGIC; 8485 } 8486 8487 buildCallback() { 8488 this.setupAction_(); 8489 }; 8490 8491 init(data = []) { 8492 this.productStyleInfo = data; 8493 } 8494 8495 handleRequestError_(data) { 8496 this.showToast(data?.message || data?.errors?.[0] || 'Unknown error'); 8497 }; 8498 8499 showToast(message) { 8500 SPZ.whenApiDefined(document.getElementById("cart_match_discount_toast")).then((apis) => { 8501 apis.showToast(message); 8502 }); 8503 } 8504 8505 //å¤é¨ç»ä»¶è°ç¨ä¼ å¼ 8506 setBundleData(products, config = "", id = "", type = "", info = {}) { 8507 this.bundleProducts = products; 8508 if(config) { 8509 this.bundleConfig = config; 8510 this.discountId = id; 8511 this.discountType = type; 8512 this.discountInfo = info; 8513 this.show_classic_bundle_spu_style = type === 'DT_CLASSIC_BUNDLE' && info.enable_min_purchase_qty && info.min_purchase_qty_type == 'spu'; 8514 8515 // ç»å ¸æç»åå§åååæ°æ® 8516 if(type == 'DT_CLASSIC_BUNDLE') { 8517 this.productStyleInfo = products.map((item) => { 8518 return this.getFilteredVariants_(item, 'single'); 8519 }); 8520 } 8521 } 8522 } 8523 8524 handleChangeSort() { 8525 const result = this.productStyleInfo.reduce((map, item) => { 8526 if (!map[item.product_id]) { 8527 map[item.product_id] = []; 8528 } 8529 map[item.product_id].push(item); 8530 return map; 8531 }, {}); 8532 8533 Object.values(result).forEach((item) => { 8534 this.handleSpzVariantRender_(item, item[0].product_id); 8535 this.handleProductOption_(item[0].product_id, true); 8536 }); 8537 } 8538 8539 // è°ç¨spz-tagç»ä»¶çdoRenderæ¹æ³ 8540 handleSpzVariantRender_(data, id) { 8541 const spzVariantTag = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSpzVariantTags-${id}`); 8542 spzVariantTag && SPZ.whenApiDefined(spzVariantTag).then((api) => { 8543 api.render(data, true); 8544 }); 8545 } 8546 8547 // æ§è¡ç»å ¸æç»æä½è´ä¹°æ°éæ´æ° 8548 handleMinPurchaseQtyUpdate_(data, id) { 8549 const minPruchaseQty = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionMinPurchaseQty-${id}`); 8550 minPruchaseQty && SPZ.whenApiDefined(minPruchaseQty).then((api) => { 8551 api.render(data, true); 8552 }); 8553 } 8554 8555 // æ´æ°ä»·æ ¼ 8556 updateProductPrice_(data) { 8557 const bottomBtnContainer = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, `#promotionBottomContainer`); 8558 if (data.length == 0) { 8559 bottomBtnContainer && SPZ.whenApiDefined(bottomBtnContainer).then((api) => { 8560 const renderInfo = { 8561 setting: this.bundleConfig, 8562 ...{ 8563 original_price: 0, 8564 received_discounts: 0, 8565 picked_qty: 0 8566 } 8567 } 8568 api.render({original_price: 0, received_discounts: 0}, true); 8569 }); 8570 return; 8571 } 8572 const reqBody = { 8573 discount_id: this.discountId, 8574 customer: { 8575 customer_id: '', 8576 email: '', 8577 }, 8578 sales_channel: { 8579 sale_channel_type: "online", 8580 sale_channel_id: '2189163' 8581 }, 8582 line_items: data 8583 } 8584 // å¦æå·²ç»æä¸ä¸ªè¯·æ±å¨çå¾ ï¼é£ä¹åæ¶è¿ä¸ªè¯·æ± 8585 if (this.debounceTimer) { 8586 clearTimeout(this.debounceTimer); 8587 } 8588 this.debounceTimer = setTimeout(() => { 8589 this.xhr_.fetchJson(this.getDiscountPriceApi, { 8590 method: "post", 8591 body: reqBody 8592 }).then((res)=>{ 8593 // æ´æ°åååè¡¨ä»·æ ¼
8594 Object.keys(res.line_items).forEach((key) => { 8595 const currentProductPrice = SPZCore.Dom.scopedQuerySelector(document.body, `#appDiscountProductPrice-${key}`); 8596 currentProductPrice && SPZ.whenApiDefined(currentProductPrice).then((api) => { 8597 api.render(res.line_items[key], true); 8598 }); 8599 }); 8600 // æ´æ°åºé¨æé®æ»ä»·/æ»ææ£ä»· 8601 const picked_qty = data.reduce((acc, item) => { 8602 return acc + item.quantity; 8603 }, 0); 8604 bottomBtnContainer && SPZ.whenApiDefined(bottomBtnContainer).then((api) => { 8605 const data = { 8606 setting: this.bundleConfig, 8607 ...{ 8608 ...res.total_price, 8609 picked_qty 8610 } 8611 } 8612 api.render(data, true); 8613 }); 8614 }).catch((err)=>{ 8615 this.handleRequestError_(err); 8616 }).finally(()=>{ 8617 }) 8618 }, 100); 8619 } 8620 8621 // è¿åååä»·æ ¼ 8622 resetProductPrice_(data) { 8623 const {price, compare_at_price, id} = data; 8624 const currentProductPrice = SPZCore.Dom.scopedQuerySelector(document.body, `#appDiscountProductPrice-${id}`); 8625 currentProductPrice && SPZ.whenApiDefined(currentProductPrice).then((api) => { 8626 api.render({total_received_discounts: price, total_price: compare_at_price}, true); 8627 }); 8628 } 8629 8630 //å¤çä¸selectorç»ä»¶çäº¤äº 8631 handleProductOption_(productId, show) { 8632 const currentProductOption = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSelectOption-${productId}`); 8633 if (!currentProductOption) { 8634 return; 8635 }; 8636 currentProductOption.toggleAttribute('show', show); 8637 const isSelected = currentProductOption.hasAttribute('selected'); 8638 8639 // !show åæ¶éä¸ 8640 // !isSelected éä¸åå 8641 if (!show || !isSelected) { 8642 const productSelector = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, `#promotionProductSelector`); 8643 productSelector && SPZ.whenApiDefined(productSelector).then((api) => { 8644 api.toggle_({ option: productId, value: show }); 8645 }); 8646 } 8647 } 8648 8649 // æ··æå¼¹çªå çå端åºåæ ¡éª 8650 handleModalInventoryCheck_(data) { 8651 if(this.discountType == 'DT_MIX_MATCH_BUNDLE' || this.discountType == 'DT_CLASSIC_BUNDLE') { 8652 const currentVariantAddNum = this.modalVariantInfo.find((item) => item.variant_id == data.variant_id)?.quantity || 0; 8653 const quickShopBody = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-shop-body'); 8654 if(!!data.variant && currentVariantAddNum == Number(data.variant.available_quantity)) { 8655 quickShopBody && quickShopBody.setAttribute('status', 'soldout'); 8656 } else { 8657 quickShopBody && quickShopBody.setAttribute('status', 'available'); 8658 } 8659 } else { 8660 return; 8661 } 8662 } 8663 8664 // æ·»å åå忬¾å¼ 8665 renderVariantTag() { 8666 let variantInfo; 8667 const quickShopBody = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-shop-body'); 8668 quickShopBody && SPZ.whenApiDefined(quickShopBody).then((api) => { 8669 variantInfo = api.getVariantsData(); 8670 8671 const productId = variantInfo.product_id; 8672 const variantId = variantInfo.variant_id; 8673 const minPruchaseQtyRender = variantInfo.product.discount_min_purchase_qty || variantInfo.variant.discount_info.discount_min_purchase_qty; 8674 if(this.discountType === 'DT_MIX_MATCH_BUNDLE') { 8675 const index = this.productStyleInfo.findIndex((item) => item.variant_id == variantInfo.variant_id); 8676 if (index != -1) { 8677 this.productStyleInfo[index].quantity = Number(this.productStyleInfo[index].quantity) + Number(variantInfo.quantity); 8678 this.updateProductPrice_(this.productStyleInfo); 8679 } else { 8680 this.productStyleInfo.push(this.getFilteredVariants_(variantInfo)); 8681 // è¥å½åååå·²éä¸ï¼æ´æ°ååä»·æ ¼ 8682 const currentProductOption = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionSelectOption-${productId}`); 8683 const isSelected = currentProductOption && currentProductOption.hasAttribute('selected'); 8684 isSelected && this.updateProductPrice_(this.productStyleInfo); 8685 } 8686 8687 const selectedVariantsFilter = this.productStyleInfo.filter((item) => item.product_id == productId); 8688 this.handleSpzVariantRender_(selectedVariantsFilter, productId); 8689 this.handleProductOption_(productId, true); 8690 } else { 8691 if(this.discountInfo.enable_min_purchase_qty == true && this.discountInfo.min_purchase_qty_type == 'spu' && minPruchaseQtyRender > 1) { 8692 const index = this.modalVariantInfo.findIndex((item) => item.variant_id == variantId); 8693 if (index != -1) { 8694 this.modalVariantInfo[index].quantity = Number(this.modalVariantInfo[index].quantity) + 1; 8695 } else { 8696 this.modalVariantInfo.push(this.getFilteredVariants_(variantInfo, 'classic_spu')); 8697 } 8698
8699 const modalVariantTag = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, '#promotionModalVariantTagRender'); 8700 modalVariantTag && SPZ.whenApiDefined(modalVariantTag).then((api) => { 8701 api.render(this.modalVariantInfo, true); 8702 }); 8703 8704 this.handleModalInventoryCheck_(variantInfo); 8705 8706 const selectedVariantsNum = this.modalVariantInfo.reduce((acc, item) => { 8707 return acc + item.quantity; 8708 }, 0); 8709 if(selectedVariantsNum == minPruchaseQtyRender) { 8710 this.handleSpzVariantRender_([this.getFilteredVariants_(variantInfo)], productId); 8711 this.productStyleInfo = this.productStyleInfo.filter((item) => item.product_id != productId).concat(this.modalVariantInfo); 8712 const renderData = this.productStyleInfo.filter((item) => item.product_id == productId).map((item) => { 8713 return { 8714 ...item, 8715 is_classic_bundle_product_list_variant_tag: true 8716 } 8717 }); 8718 const classicSpuTag = SPZCore.Dom.scopedQuerySelector(document.body, `#promotionClassicSpuTags-${productId}`); 8719 classicSpuTag && SPZ.whenApiDefined(classicSpuTag).then((api) => { 8720 api.render(renderData, true); 8721 }); 8722 this.updateProductPrice_(this.productStyleInfo); 8723 const quickView = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-view'); 8724 quickView && SPZ.whenApiDefined(quickView).then((api)=>{ 8725 api.close(); 8726 }); 8727 this.modalVariantInfo = []; 8728 } else { 8729 return; 8730 } 8731 } 8732 // this.productStyleInfo ä¸å·²åå¨ä¸productId, variantIdé½ç¸åçåå åç´æ¥return å ³éå¼¹çª 8733 const isExist = this.productStyleInfo.some((item) => item.product_id == productId && item.variant_id == variantId); 8734 if (isExist) { 8735 const quickView = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-view'); 8736 quickView && SPZ.whenApiDefined(quickView).then((api)=>{ 8737 api.close(); 8738 }); 8739 return; 8740 } 8741 8742 // è¥ this.productStyleInfo ä¸å·²åå¨ä¸productIdç¸åçååï¼åä¸åæ·»å å¦åæ¿æ¢ 8743 const index = this.productStyleInfo.findIndex((item) => item.product_id == productId); 8744 if (index != -1) { 8745 this.productStyleInfo[index] = this.getFilteredVariants_(variantInfo); 8746 } else { 8747 this.productStyleInfo.push(this.getFilteredVariants_(variantInfo)); 8748 } 8749 const selectedVariantsFilter = this.productStyleInfo.filter((item) => item.product_id == productId); 8750 this.handleSpzVariantRender_(selectedVariantsFilter, productId); 8751 this.handleMinPurchaseQtyUpdate_({discount_min_purchase_qty: minPruchaseQtyRender}, productId); 8752 this.updateProductPrice_(this.productStyleInfo); 8753 } 8754 8755 const quickView = SPZCore.Dom.scopedQuerySelector(document.body, '#apps-discount-quick-view'); 8756 quickView && SPZ.whenApiDefined(quickView).then((api)=>{ 8757 api.close(); 8758 }); 8759 }); 8760 } 8761 8762 // ååä½ç¹å»æ·»å æé® 8763 renderSingleVariant(data) { 8764 const { product_id } = data; 8765 const currentProduct = this.bundleProducts.find((product) => product.id == product_id); 8766 // è¥å½åååå·²åå¨ï¼åä¸åæ·»å èæ¯æ´æ°æ°é 8767 const index = this.productStyleInfo.findIndex((item) => item.product_id == product_id); 8768 if (index != -1) { 8769 this.productStyleInfo[index].quantity = Number(this.productStyleInfo[index].quantity) + 1; 8770 this.updateProductPrice_(this.productStyleInfo); 8771 } else { 8772 this.productStyleInfo.push(this.getFilteredVariants_(currentProduct, 'single')); 8773 } 8774 const renderProductArr = this.productStyleInfo.filter((item) => item.product_id == product_id); 8775 this.handleSpzVariantRender_(renderProductArr, product_id); 8776 this.handleProductOption_(product_id, true); 8777 } 8778 8779 // è¿æ»¤éä¸ååç忬¾å¼ è·åæç¨çä¿¡æ¯ product_id,variant_id,price,compare_at_price,quantity,title,variant_title 8780 getFilteredVariants_(data, type = '') { 8781 const { id, title, variants, inventory_tracking, inventory_policy, inventory_quantity, product_type }
8781 = data; 8782 const { product_id, variant_id, variant, quantity, product, discount_min_purchase_qty } = data; 8783 const isSingle = type == 'single'; 8784 const variantData = isSingle ? (variants[0] || data) : variant; 8785 const productData = isSingle ? data : product; 8786 8787 8788 let item_quantity = 0; 8789 if (this.discountType === 'DT_MIX_MATCH_BUNDLE') { 8790 item_quantity = isSingle ? 1 : Number(quantity); 8791 } else if (type === 'classic_spu') { 8792 item_quantity = 1; 8793 } else { 8794 item_quantity = discount_min_purchase_qty || productData.discount_min_purchase_qty || variantData.discount_info.discount_min_purchase_qty || 1; 8795 } 8796 8797 return { 8798 product_id: isSingle ? id : product_id, 8799 variant_id: variantData?.id || '', 8800 price: variantData?.price || '0.00', 8801 compare_at_price: variantData?.compare_at_price || '0.00', 8802 quantity: item_quantity, 8803 inventory_tracking: productData.inventory_tracking, 8804 inventory_policy: productData.inventory_policy, 8805 inventory_quantity: productData.inventory_quantity, 8806 product_type: productData.product_type || this.bundleProducts.find((item) => item.id == product_id)?.product_type || this.bundleProducts.find((item) => item.id == id)?.product_type || '', 8807 title: productData.title, 8808 variant_title: variantData?.options.map((option) => option.value).join('/') || '', 8809 is_multi_style: productData.variants.length > 1, 8810 } 8811 } 8812 8813 handleLoading_ (event) { 8814 const { type, action } = event; 8815 const loadingElementId = type === 'product' ? '#discount-match-drawer-products_loading' : '#apps-discount-whole-loading'; 8816 const loadingElement = document.querySelector(loadingElementId); 8817 8818 if (loadingElement) { 8819 SPZ.whenApiDefined(loadingElement).then((api) => { 8820 if (action === 'show') { 8821 api.show_(); 8822 } else { 8823 api.close_(); 8824 } 8825 }); 8826 } 8827 } 8828 8829 handleSelectProduct(productArr) { 8830 // ä»this.productStyleInfo è¿æ»¤åºéä¸çåå 8831 const selectedProducts = this.productStyleInfo.filter((item) => productArr.includes(item.product_id)); 8832 this.updateProductPrice_(selectedProducts); 8833 } 8834 8835 // 渲æå è´å¼¹çªå 容 8836 async renderQuickShopModal(data){ 8837 this.handleLoading_({type: 'whole', action: 'show'}); 8838 this.xhr_.fetchJson(`/api/storefront/promotion/landing_page/product?product_id=${data.product_id}&discount_id=${this.discountId}&apply_scenario=1`, { 8839 method: "get", 8840 }).then(async(res)=>{ 8841 //flash䏻颿¾blockæå±çº§é®é¢ 8842 if(/Flash/.test(window.C_SETTINGS.theme.merchant_theme_name) && document.querySelector(".productInfoSection")) { 8843 this.tempCss.zIndex = document.querySelector(".product-info-body").style.zIndex; 8844 document.querySelector('.product-info-body').style.zIndex="1048"; 8845 } 8846 this.handleLoading_({type: 'whole', action: 'close'}); 8847 const $quickShop = await SPZ.whenApiDefined(document.querySelector('#apps-discount-quick-view-render')); 8848 // å®ä¹é»è®¤æ¸²æç忬¾å¼ 8849 const selectedVariant = res.product.variants.find((v)=> (v.available && v.is_hit_discount)) || res.product.variants[0]; 8850 let selectedValues = {}; 8851 selectedVariant.options.length && selectedVariant.options.forEach(item => { 8852 selectedValues[item.name] = item.value; 8853 }) 8854 // é»è®¤éä¸ç 忬¾å¼ã options 8855 res.product.defaultSelectValues = selectedValues; 8856 let data = {...res.product, product:res.product, selectedVariant, show_classic_bundle_spu_style: this.show_classic_bundle_spu_style, discountType: this.discountType}; 8857 $quickShop.render(data); 8858 // æå¼å è´å¼¹çª 8859 SPZ.whenApiDefined(document.querySelector(`#apps-discount-quick-view`)).then((api)=>{ 8860 api.open(); 8861 }); 8862 }).catch((err)=>{ 8863 this.handleLoading_({type: 'whole', action: 'close'}); 8864 }) 8865 } 8866 8867 // è·åéä¸çååids 8868 getDefaultSelectorOptions_() {
8869 try { 8870 const selectedOptions = SPZCore.Dom.scopedQuerySelectorAll(document.body, '[id^="promotionSelectOption-"][selected]'); 8871 return SPZCore.Types.toArray(selectedOptions).map((item) => item.getAttribute('option')); 8872 } catch (error) { 8873 return []; 8874 } 8875 } 8876 8877 // å é¤åå忬¾å¼ 8878 deleteVariantTag(data) { 8879 const { product_id, variant_id } = data; 8880 if(this.discountInfo.enable_min_purchase_qty == true && this.discountInfo.min_purchase_qty_type == 'spu') { 8881 const modalProductVariants = this.modalVariantInfo.filter((item) => item.product_id == product_id && item.variant_id != variant_id); 8882 const modalVariantTag = SPZCore.Dom.scopedQuerySelector(getDiscountMatchPopupEl() || document.body, '#promotionModalVariantTagRender'); 8883 modalVariantTag && SPZ.whenApiDefined(modalVariantTag).then((api) => { 8884 api.render(modalProductVariants, true); 8885 }); 8886 this.handleModalInventoryCheck_(data); 8887 this.modalVariantInfo = modalProductVariants; 8888 return; 8889 } 8890 const currentProductVariants = this.productStyleInfo.filter((item) => item.product_id == product_id && item.variant_id != variant_id); 8891 this.handleSpzVariantRender_(currentProductVariants, product_id); 8892 // æ´æ°selectedVariants 8893 this.productStyleInfo = this.productStyleInfo.filter((item) => item.variant_id != variant_id); 8894 if(currentProductVariants.length > 0) { 8895 // currentProductVariants ä¸åªè¦æä¸é¡¹æ¯å¤æ¬¾å¼ååï¼å°±æ´æ°ä»·æ ¼ 8896 const isMultiStyle = currentProductVariants.some((item) => item.is_multi_style); 8897 if (!isMultiStyle) return; 8898 8899 this.handleProductOption_(product_id, true); 8900 const selected = this.getDefaultSelectorOptions_(); 8901 this.updateProductPrice_(this.productStyleInfo.filter((item) => selected.includes(item.product_id))); 8902 } else { 8903 this.handleProductOption_(product_id, false); 8904 this.resetProductPrice_(this.bundleProducts.find((item) => item.id == product_id)); 8905 } 8906 } 8907 8908 // å è´å¼¹çªæªå䏿´»å¨ å è´æé®ä¸å¯ç¹å» TODO æåºæ¥ 8909 handleNotHitDiscount_(data) { 8910 const $quickShopBody = document.querySelector('#apps-discount-quick-shop-body'); 8911 //å½å忡弿ªå½ä¸æ´»å¨ 8912 if(data.variant.is_hit_discount == false) { 8913 $quickShopBody.setAttribute('variantstatus', 'notHitDiscount') 8914 } else { 8915 $quickShopBody.setAttribute('variantstatus', '') 8916 } 8917 } 8918 8919 setupAction_() { 8920 // 忬¾å¼ æªå䏿´»å¨ 8921 this.registerAction('handleNotHitDiscount', (invocation) => { 8922 const data = invocation.args.data; 8923 this.handleNotHitDiscount_(data); 8924 }); 8925 // 渲æå è´å¼¹çª 8926 this.registerAction('renderQuickShop', (invocation) => { 8927 const data = invocation.args; 8928 this.renderQuickShop_(data); 8929 }); 8930 8931 this.registerAction('renderSingleVariant', (invocation) => { 8932 const data = invocation.args; 8933 this.renderSingleVariant(data); 8934 }); 8935 8936 this.registerAction('getVariantInfo', (invocation) => { 8937 this.renderVariantTag(); 8938 }); 8939 8940 this.registerAction('deleteVariantTag', (invocation) => { 8941 const data = invocation.args; 8942 this.deleteVariantTag(data); 8943 }); 8944 8945 this.registerAction('getSelectedProduct', (invocation) => { 8946 const data = invocation.args.data; 8947 this.handleSelectProduct(data); 8948 }); 8949 8950 //TODO å è´ä¸åé»è¾åç¬æç»ä»¶ 8951 this.registerAction('handleClick', (data) => { 8952 if(this.discountType == 'DT_CLASSIC_BUNDLE') { 8953 this.lineItems = this.productStyleInfo; 8954 } else { 8955 const selectedOptions = SPZCore.Dom.scopedQuerySelectorAll(document.body, '[id^="promotionSelectOption-"]'); 8956 const idArr = [...selectedOptions].reduce((acc, item) => { 8957 if (item.hasAttribute('selected')) { 8958 const optionValue = item.getAttribute('option'); 8959 if (optionValue) { 8960 acc.push(optionValue); 8961 } 8962 } 8963 return acc; 8964 }, []); 8965 this.lineItems = this.productStyleInfo.filter((item) => idArr.includes(item.product_id)); 8966 } 8967 const action = data.args.action === "cart"; 8968 if(action) { 8969 //add to cart 8970 this.xhr_ 8971 .fetchJson(this.batchAtcApi, { 8972 method: 'POST', 8973 body: { 8974 line_items: this.lineItems.map((item) => { 8975 return { 8976 product_id: item.product_id, 8977 variant_id: item.variant_id, 8978 quantity: Number(item.quantity) 8979 } 8980 }) 8981 } 8982 }) 8983 .then((data) => { 8984 setTimeout(() => { 8985 window.location.href = '/cart'; 8986 }); 8987 }) 8988 .catch(async (error) => { 8989 await error.then((data) => { 8990 this.handleRequestError_(data); 8991 }); 8992 }); 8993 } else { 8994 //checkout 8995 this.xhr_ 8996 .fetchJson(this.buyNowApi, {
8997 method: 'POST', 8998 body: { 8999 line_items: (this.lineItems || []).map((product) => { 9000 return { 9001 quantity: Number(product.quantity), 9002 variant_id: product.variant_id, 9003 note: product.note || '', 9004 properties: product.properties || {} 9005 } 9006 }), 9007 refer_info: { source: 'buy_now' } 9008 } 9009 }) 9010 .then(async (data) => { 9011 if (data.state === 'success') { 9012 window.location.href = data.data?.checkout_url; 9013 } 9014 this.handleRequestError_(data); 9015 }) 9016 .catch(async (error) => { 9017 await error.then((data) => { 9018 this.handleRequestError_(data); 9019 }); 9020 }); 9021 } 9022 }); 9023 9024 this.registerAction('resetModalVariantInfo', () => { 9025 //flash䏻颿¾blockæå±çº§é®é¢ 9026 if(/Flash/.test(window.C_SETTINGS.theme.merchant_theme_name) && document.querySelector(".productInfoSection")) { 9027 document.querySelector('.product-info-body').style.zIndex = this.tempCss.zIndex; 9028 } 9029 this.modalVariantInfo = []; 9030 }); 9031 9032 this.registerAction('handleModalInventoryCheck', (invocation) => { 9033 const data = invocation.args.data; 9034 this.handleModalInventoryCheck_(data); 9035 }); 9036 }; 9037 9038 }; 9039 9040 SPZ.defineElement('spz-custom-discount-bundle-products', SpzCustomDiscountBundleProducts); 9041</ljs-script> 9042<spz-custom-discount-atc-action id="appDiscountRenderQuickShopFunc" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-atc-action> 9043<ljs-script layout="logic" type="application/javascript" id="DiscountFlashsaleScript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"> 9044 class SpzCustomDiscountAtcAction extends SPZ.BaseElement { 9045 constructor(element) { 9046 super(element); 9047 this.xhr_ = SPZServices.xhrFor(this.win); 9048 this.product_title = ""; 9049 } 9050 9051 isLayoutSupported(layout) { 9052 return layout == SPZCore.Layout.LOGIC; 9053 } 9054 async getProductTitle_ (data){ 9055 this.product_title = data.product_title; 9056 } 9057 9058 handleLoading_ (event) { 9059 const { type, action } = event; 9060 const loadingElementId = '#apps-discount-whole-loading'; 9061 const loadingElement = document.querySelector(loadingElementId); 9062 9063 if (loadingElement) { 9064 SPZ.whenApiDefined(loadingElement).then((api) => { 9065 if (action === 'show') { 9066 api.show_(); 9067 } else { 9068 api.close_(); 9069 } 9070 }); 9071 } 9072 } 9073 9074 // 渲æå è´å¼¹çªå 容 9075 async renderQuickShop_ (data) { 9076 this.handleLoading_({type: 'whole', action: 'show'}); 9077 const apply_scenario = data.apply_scenario; 9078 const discount_id = data.discount_id; 9079 const product_id = data.product_id; 9080 const limit_purchase = data.limit_purchase; 9081 this.xhr_.fetchJson(`/api/storefront/promotion/landing_page/product?product_id=${product_id}&discount_id=${discount_id}&apply_scenario=${apply_scenario}`, { 9082 method: "get", 9083 }).then(async(res)=>{ 9084 this.handleLoading_({type: 'whole', action: 'close'}); 9085 const $quickShop = await SPZ.whenApiDefined(document.querySelector('#apps-discount-quick-view-render')); 9086 // å®ä¹é»è®¤æ¸²æç忬¾å¼ 9087 const selectedVariant = res.product.variants.find((v)=> (v.available && v.is_hit_discount)) || res.product.variants[0]; 9088 let selectedValues = {}; 9089 selectedVariant.options.length && selectedVariant.options.forEach(item => { 9090 selectedValues[item.name] = item.value; 9091 }) 9092 // é»è®¤éä¸ç 忬¾å¼ã options 9093 res.product.defaultSelectValues = selectedValues; 9094 let data = {...res.product, product:res.product, selectedVariant}; 9095 data.need_atc = true; 9096 data.limit_purchase = limit_purchase; 9097 $quickShop.render(data); 9098 // æå¼å è´å¼¹çª 9099 SPZ.whenApiDefined(document.querySelector(`#apps-discount-quick-view`)).then((api)=>{ 9100 api.open(); 9101 }); 9102 }).catch((err)=>{ 9103 this.handleLoading_({type: 'whole', action: 'close'}); 9104 }) 9105 } 9106 9107 // å å ¥è´ç©è½¦ 9108 addToCart_(data) { 9109 const apply_scenario = data.apply_scenario; 9110 const discount_id = data.discount_id; 9111 const product_id = data.product_id; 9112 this.xhr_.fetchJson(`/api/storefront/promotion/landing_page/product?product_id=${data.product_id}&discount_id=${discount_id}&apply_scenario=${apply_scenario}`, { 9113 method: "get", 9114 }).then(async(res)=>{ 9115 // 忬¾å¼å è´ 9116 const variant_id = res.product.variants[0]?.id; 9117 const $productFormInput = document.querySelector(`#apps-discount-product-form-${data.product_id} input[name='variant_id'`); 9118 $productFormInput.value = variant_id; 9119 SPZ.whenApiDefined(document.querySelector(`#apps-discount-product-form-${data.product_id}`)).then((api)=>{ 9120 api.handleAddToCart_(); 9121 }); 9122 }).catch((err)=> { 9123 this.handleLoading_({type: 'whole', action: 'close'}); 9124 }) 9125 } 9126 9127 9128 // å è´å¼¹çªæªå䏿´»å¨ å è´æé®ä¸å¯ç¹å» 9129 handleNotHitDiscount_(data) {
9130 const $quickShopBody = document.querySelector('#apps-discount-quick-shop-body'); 9131 const $limitTip = document.querySelector('.apps_discount_limit_purchase_tip'); 9132 //å½å忡弿ªå½ä¸æ´»å¨ 9133 if(data.variant.is_hit_discount == false) { 9134 $quickShopBody.setAttribute('variantstatus', 'notHitDiscount'); 9135 $limitTip && $limitTip.setAttribute('selectedvariantstatus', 'notHitDiscount'); 9136 } else { 9137 $quickShopBody.setAttribute('variantstatus', ''); 9138 $limitTip && $limitTip.setAttribute('selectedvariantstatus', '') 9139 9140 } 9141 } 9142 9143 9144 setupAction_() { 9145 this.registerAction('renderQuickShop', (invocation) => { 9146 const data = invocation.args; 9147 this.renderQuickShop_(data); 9148 }); 9149 // å è´ 9150 this.registerAction('addToCart', (invocation) => { 9151 const data = invocation.args; 9152 this.addToCart_(data); 9153 }); 9154 // 忬¾å¼ æªå䏿´»å¨ 9155 this.registerAction('handleNotHitDiscount', (invocation) => { 9156 const data = invocation.args.data; 9157 this.handleNotHitDiscount_(data); 9158 }); 9159 this.registerAction('getCartCount', (invocation) => { 9160 //ä¸äºè主é¢è¿æªç¨spzéæ,éè¦æå¨è§¦å䏿¬¡èæ¹æ³ä»¥æ´æ°è´ç©è½¦å¾æ çæ°é 9161 window.$ && $(document).trigger('dj.common.cart.change'); 9162 }); 9163 this.registerAction('getProductTitle', (invocation) => { 9164 const data = invocation.args; 9165 this.getProductTitle_(data); 9166 }); 9167 this.registerAction('handleButton', (invocation) => { 9168 const data = invocation.args; 9169 window.location.href = this.product_title; 9170 9171 }); 9172 }; 9173 9174 buildCallback() { 9175 this.setupAction_(); 9176 }; 9177 9178 // åä¸é¡µé flashsale_collection(é¦é¡µéæ¶ä¿éå¡ç) ä¸ååå¼¹çªå®¹å¨é½æ¸²æäºæ¬å¿«éå è´æ ï¼ 9179 // ä¼äº§çéå¤ fixed idââå°¤å ¶å è´å¼¹çª #apps-discount-quick-viewãå®âæå¼âèµ° querySelectorï¼ 9180 // âå ³éâ走声æå¼å¨ä½ apps-discount-quick-view.close(æ id è§£æ)ï¼é夿¶äºè å¯è½å½ä¸ä¸å坿¬ï¼ 9181 // 导è´å è´æååå¼¹çªç¬¬ä¸æ¬¡å ³ä¸æãç¬¬äºæ¬¡æå ³ãåè toast çå¤çï¼è¿è¡æ¶ä¿è¯è¿äºåä¾åªä¿çä¸ä»½ã 9182 mountCallback() { 9183 const funcs = document.querySelectorAll('#appDiscountRenderQuickShopFunc'); 9184 // é»è¾å ä»¶éå¤ï¼ä» ä¿ç第ä¸ä¸ªï¼å ¶ä½ç§»é¤èªèº«ï¼ä¿è¯æ id è§£æå°çå¨ä½å®ä¾å¯ä¸ã 9185 if (funcs.length > 1 && this.element !== funcs[0]) { 9186 this.element.remove(); 9187 return; 9188 } 9189 // å è´å¼¹çªéå¤ï¼ä¿ç第ä¸ä¸ªï¼ç§»é¤å¤ä½ï¼ç§»é¤å¼¹çªå³è¿å¸¦ç§»é¤å ¶å é¨ render/表åçåèç¹ï¼ã 9190 const modals = document.querySelectorAll('#apps-discount-quick-view'); 9191 Array.from(modals).slice(1).forEach((el) => el.remove()); 9192 } 9193 } 9194 9195 SPZ.defineElement('spz-custom-discount-atc-action', SpzCustomDiscountAtcAction); 9196</ljs-script> 9197<ljs-loading layout='container' id='apps-discount-whole-loading' hidden class="i-spzhtml-layout-container" i-spzhtml-layout="container"></ljs-loading> 9198 9199<spz-custom-discount-default id='cart_discount_default_actions' template='spz_custom_discount_default_template' layout='container' @settab='match_drawer_product_list_tabs.tabChange(dataId=event.value)' class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 9200</spz-custom-discount-default> 9201<ljs-render manual layout="container" id="discount-match-drawer-container" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 9202 <template> 9203 ${function(){ 9204 const discount_info = originData.discount_info; 9205 const landing_page_info = originData.landing_page_info; 9206 const buy_product_info = originData.buy_product_info; 9207 9208 const dom = originData.discount_info.discount_type === 'DT_BUY_X_GET_Y' ? 9209 ` 9210 <div> 9211 <div class='discount-default relative' data-drawer-id="${discount_info.id}"> 9212 <style> 9213 #discount-match-drawer .discount-default__tabs .tabs_wrap { 9214 display: flex; 9215 flex-direction: row; 9216 margin: 12px 0 0 0; 9217 padding: 0; 9218 list-style: none; 9219 position: sticky; 9220 top: 0; 9221 z-index: 100; 9222 } 9223 #discount-match-drawer .discount-default__tabs .tabs_wrap .tab-item { 9224 font-size: 20px; 9225 font-weight: 600; 9226 width: 50%; 9227 text-align: center; 9228 min-height: 46px; 9229 padding: 10px; 9230 gap: 10px; 9231 background: rgb(238, 238, 238); 9232 word-break: break-word; 9233 display: flex; 9234 justify-content: center;
9235 align-items: center; 9236 } 9237 #discount-match-drawer .discount-default__tabs .tabs_wrap .tab-item[active] { 9238 background: rgb(32, 32, 32); 9239 cursor: pointer; 9240 color: #fff; 9241 } 9242 #discount-match-drawer .text_red { 9243 color: rgb(244, 62, 74); 9244 } 9245 @media (max-width: 767.98px) { 9246 #discount-match-drawer .discount-default__tabs .tabs_wrap .tab-item { 9247 font-size: 14px; 9248 } 9249 } 9250</style> 9251<ljs-tabs layout='container' class='discount-default__tabs' id='match_drawer_product_list_tabs' @tabChange='cart_discount_default_actions.handleBuyXGetYTabChange(data=event)'> 9252 <ul role='tabs' class='tabs_wrap'> 9253 <li role='tab' data-panel='1' class='tab-item'><span>${landing_page_info.product.buy_product.text}</span></li> 9254 <li role='tab' data-panel='2' class='text_red tab-item'><span>${landing_page_info.product.obtain_product.text}</span></li> 9255 </ul> 9256 <div class='tw-container'> 9257 <div role='tabpanel' data-id='1' id='cart_product_list_buy_products'> 9258 <div class='app_discount_product_list'> 9259 <style> 9260 #discount-match-drawer .discount_default_sort_wrap { 9261 display: flex; 9262 justify-content: space-between; 9263 margin-bottom: 20px; 9264 } 9265 #discount-match-drawer .discount_default_sort_wrap .discount_default_count { 9266 font-size: 16px; 9267 font-style: normal; 9268 font-weight: 600; 9269 align-items: center; 9270 display: flex; 9271 } 9272 #discount-match-drawer.in-cart-drawer .discount_default_sort_wrap .discount_default_count { 9273 font-weight: 400; 9274 } 9275 #discount-match-drawer .discount_default_sort { 9276 display: flex; 9277 align-items: center; 9278 font-size: 16px; 9279 min-height: 50px; 9280 min-width: 160px; 9281 gap: 2.25rem; 9282 } 9283 body.eva #discount-match-drawer .discount_default_sort { 9284 gap: 0.5rem; 9285 } 9286 #discount-match-drawer .discount_default_sort_text { 9287 font-weight: 600; 9288 } 9289 #discount-match-drawer.in-cart-drawer .discount_default_sort_text { 9290 font-weight: 400; 9291 } 9292 @media (max-width: 767.98px) { 9293 #discount-match-drawer .discount_default_sort_wrap { 9294 flex-direction: row-reverse !important; 9295 } 9296 #discount-match-drawer .discount_default_sort_text { 9297 display: none; 9298 } 9299 #discount-match-drawer .discount_default_sort { 9300 min-height: 40px; 9301 } 9302 } 9303</style> 9304 9305<div class='discount_default_sort_wrap'> 9306 <div class="discount_default_count">${originData.buy_product_info.count} Products</div> 9307 <div class='discount_default_sort'> 9308 <span class='discount_default_sort_text'>Sort by</span> 9309 <div> 9310 <spz-custom-sort 9311 @selectChange='cart_discount_default_actions.handleSort(data=event)' 9312 template='spz_custom_sort_template' 9313 layout='container' 9314 id='spz_custom_sort_products_x' 9315 ></spz-custom-sort> 9316 </div> 9317 </div> 9318</div> 9319<ljs-selector layout="container" id="promotionProductSelector" multiple @select="appDiscountBundleProductsFunc.getSelectedProduct(data=event.selectedOptions);"> 9320 <div class="render-products-wrapper flex flex-wrap discount-default__productlist-wrap"> 9321 ${(function() { 9322 const productsInfo = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? data.buy_product_info.product : data.obtain_product_info.product; 9323 //ç¹å»å è´æé®éè¦çåæ° 9324 const discount_id = data.discount_info.id; 9325 const apply_scenario = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? 1 : 2 ; 9326 9327 return productsInfo.map((product, index) => { 9328 let price = product.price || 0; 9329 let priceMin = product.price_min || 0; 9330 let priceMax = product.price_max || 0; 9331 let compareAtPriceMax = product.compare_at_price_max || 0; 9332 let compareAtPrice = product.compare_at_price || 0; 9333 let title = product.title || ''; 9334 let id = product.id || ''; 9335 let url = product.url || ''; 9336 let type = product.type || ''; 9337 9338 let is_sold_out = false; 9339 if (product.available == false && product.inventory_policy != 'continue') { 9340 is_sold_out = true; 9341 } 9342 const soldOutLang1 = "Sold out"; 9343 const soldOutLang2 = "Sold out"; 9344 const discountType = originData.discount_info.discount_type; 9345 const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE"; 9346 const defaultVariantTitle = product.variants[0]?.title.replace('-', '/'); 9347 const variantDiscountInfo = product.variants[0]?.discount_info || {}; 9348 let discount_min_purchase_qty = 0; 9349 if(discountType === "DT_CLASSIC_BUNDLE" && data.discount_info.enable_min_purchase_qty) { 9350 discount_min_purchase_qty = data.discount_info.min_purchase_qty_type === "spu" ? product.discount_min_purchase_qty : product.variants[0].discount_info.discount_min_purchase_qty; 9351 } 9352 9353 let imageWidth; 9354 if (product.image.width) { 9355 imageWidth = product.image.width; 9356 } else { 9357 imageWidth = "300px"; 9358 } 9359 let imageHeight; 9360 if (product.image.height) { 9361 imageHeight= product.image.height; 9362 } else { 9363 imageHeight = "300px"; 9364 } 9365 if (product.published) { 9366 return ` 9367 <div class="common_app__product as-render-product-item"> 9368 <div class="product-snippet"> 9369 <div style="position: relative;"> 9370 <div style="position: relative;"> 9371 <a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link"> 9372 </a> 9373 <div class="product-snippet__img_box"> 9374 <ljs-img 9375 class="product-image" 9376 layout='responsive' 9377 width='${imageWidth}'
9378 height='${imageHeight}' 9379 src="${product.image.src}" 9380 alt="${product.image.alt}" 9381 object-fit='cover' 9382 auto-fit 9383 ></ljs-img> 9384 <div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'> 9385 ${function(){ 9386 if (soldOutLang1){ 9387 return ` 9388 <span>${soldOutLang1}</span> 9389 ` 9390 }else{ 9391 return ` 9392 <span>${soldOutLang2}</span> 9393 ` 9394 } 9395 }()} 9396 </div> 9397 </div> 9398 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}"> 9399 <ljs-render layout="container" id="promotionMinPurchaseQty-${id}" manual template="promotionMinPurchaseQtyTemplate"> 9400 <div spz-if="${discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${discount_min_purchase_qty}</div> 9401 </ljs-render> 9402 </div> 9403 </div> 9404 9405 <a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a> 9406 <div spz-if="${discountType !== 'DT_CLASSIC_BUNDLE'}" class="discount_product_atc_icon"> 9407 <ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual> 9408 <div class="product-snippet__price-wrapper max-w-full text-center" > 9409 <span class="max-w-full dj_skin_product_price"> 9410 <ljs-currency container-class="text-truncate" layout="container" value="${price}"></ljs-currency> 9411 </span> 9412 <del spz-if="${compareAtPrice * 1 > price * 1}" class="max-w-full dj_skin_product_compare_at_price"> 9413 <ljs-currency container-class="text-truncate" layout="container" value="${compareAtPrice}"></ljs-currency> 9414 </del> 9415 </div> 9416 </ljs-render> 9417 <div spz-if="${noNeedBtn}" class="shop-btn-wrap"> 9418 <ljs-product-form 9419 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }" 9420 product-id="${product.id}" 9421 layout="container" 9422 id="apps-discount-product-form-${product.id}" 9423 @atcSuccess="apps-discount-whole-loading.close;appsAddCartToastFunc.showAddToCartToast();" 9424 @atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);" 9425 > 9426 <form> 9427 <input name="variant_id" type="hidden" value=""> 9428 <button 9429 type="button" 9430 class="product-snippet__quick-shop-button" 9431 data-track-product-id="${product.id}" 9432 data-track="click" 9433 data-track-content="add_to_cart" 9434 data-track-source="quick_shop" 9435 @tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});" 9436 > 9437 9438 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 9439 </button> 9440 </form> 9441 </ljs-product-form> 9442 <button 9443 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }" 9444 class="product-snippet__quick-shop-button" 9445 role="addToCart" 9446 data-track="click" 9447 data-track-content="add_to_cart" 9448 data-track-source="quick_shop" 9449 type="button" 9450 @tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase='');" 9451 > 9452
9453 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 9454 </button> 9455 </div> 9456 </div> 9457 9458 9459 <div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}"> 9460 <button 9461 spz-if="${is_sold_out != true}" 9462 class="app_discount_bundle_add" 9463 type="button" 9464 @tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}"> 9465 Add 9466 </button> 9467 <ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render> 9468 <div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}"> 9469 9470 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> 9471 <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/> 9472 </svg> 9473 </div> 9474 </div> 9475 9476 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}"> 9477 <ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual> 9478 <div class="product-snippet__price-wrapper max-w-full"> 9479 <span class="text-truncate dj_skin_product_price money ${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts ? '' : 'promotion_no_del_p'}"><ljs-currency layout="container" value="${variantDiscountInfo.total_received_discounts}"></ljs-currency></span> 9480 <del spz-if="${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price dj_skin_product_compare_at_price money"><ljs-currency layout="container" value="${variantDiscountInfo.total_price}"></ljs-currency></del> 9481 </div> 9482 </ljs-render> 9483 <div spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}">
9484 <ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});"> 9485 <div class="promotion_classic_variant_container flex justify-between items-center"> 9486 <span>${defaultVariantTitle}</span> 9487 9488 <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg> 9489 </div> 9490 </ljs-render> 9491 <ljs-render layout="container" id="promotionClassicSpuTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render> 9492 </div> 9493 9494 </div> 9495 </div> 9496 </div> 9497 </div> 9498 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator ${(index + 1) % 2 == 0 ? 'md:hidden' : ''}"> 9499 <span class="promotion_dotted_line"></span> 9500 <div class="promotion_plus_bundle"> 9501 9502 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"> 9503 <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/> 9504 </svg> 9505 </div> 9506 <span class="promotion_dotted_line"></span> 9507 </div> 9508 ` 9509 } else { 9510 return ``; 9511 } 9512 }).join(''); 9513 })()} 9514 </div> 9515</ljs-selector> 9516</div> 9517 </div> 9518 <div role='tabpanel' data-id='2' id='cart_product_list_obtain_products'> 9519 <div class='app_discount_product_list'> 9520 <style> 9521 #discount-match-drawer .discount_default_sort_wrap { 9522 display: flex; 9523 justify-content: space-between; 9524 margin-bottom: 20px; 9525 } 9526 #discount-match-drawer .discount_default_sort_wrap .discount_default_count { 9527 font-size: 16px; 9528 font-style: normal; 9529 font-weight: 600; 9530 align-items: center; 9531 display: flex; 9532 } 9533 #discount-match-drawer.in-cart-drawer .discount_default_sort_wrap .discount_default_count { 9534 font-weight: 400; 9535 } 9536 #discount-match-drawer .discount_default_sort { 9537 display: flex; 9538 align-items: center; 9539 font-size: 16px; 9540 min-height: 50px; 9541 min-width: 160px; 9542 gap: 2.25rem; 9543 } 9544 body.eva #discount-match-drawer .discount_default_sort { 9545 gap: 0.5rem; 9546 } 9547 #discount-match-drawer .discount_default_sort_text { 9548 font-weight: 600; 9549 } 9550 #discount-match-drawer.in-cart-drawer .discount_default_sort_text { 9551 font-weight: 400; 9552 } 9553 @media (max-width: 767.98px) { 9554 #discount-match-drawer .discount_default_sort_wrap { 9555 flex-direction: row-reverse !important; 9556 } 9557 #discount-match-drawer .discount_default_sort_text { 9558 display: none; 9559 } 9560 #discount-match-drawer .discount_default_sort { 9561 min-height: 40px; 9562 } 9563 } 9564</style> 9565 9566<div class='discount_default_sort_wrap'> 9567 <div class="discount_default_count">${originData.obtain_product_info.count} Products</div> 9568 <div class='discount_default_sort'> 9569 <span class='discount_default_sort_text'>Sort by</span> 9570 <div> 9571 <spz-custom-sort 9572 @selectChange='cart_discount_default_actions.handleSort(data=event)' 9573 template='spz_custom_sort_template' 9574 layout='container' 9575 id='spz_custom_sort_products_y' 9576 ></spz-custom-sort> 9577 </div> 9578 </div> 9579</div> 9580<ljs-selector layout="container" id="promotionProductSelector" multiple @select="appDiscountBundleProductsFunc.getSelectedProduct(data=event.selectedOptions);"> 9581 <div class="render-products-wrapper flex flex-wrap discount-default__productlist-wrap"> 9582 ${(function() { 9583 const productsInfo = "spz_custom_sort_products_y" === "spz_custom_sort_products_x" ? data.buy_product_info.product : data.obtain_product_info.product; 9584 //ç¹å»å è´æé®éè¦çåæ° 9585 const discount_id = data.discount_info.id; 9586 const apply_scenario = "spz_custom_sort_products_y" === "spz_custom_sort_products_x" ? 1 : 2 ; 9587 9588 return productsInfo.map((product, index) => { 9589 let price = product.price || 0; 9590 let priceMin = product.price_min || 0; 9591 let priceMax = product.price_max || 0; 9592 let compareAtPriceMax = product.compare_at_price_max || 0; 9593 let compareAtPrice = product.compare_at_price || 0; 9594 let title = product.title || ''; 9595 let id = product.id || ''; 9596 let url = product.url || ''; 9597 let type = product.type || ''; 9598 9599 let is_sold_out = false;
9600 if (product.available == false && product.inventory_policy != 'continue') { 9601 is_sold_out = true; 9602 } 9603 const soldOutLang1 = "Sold out"; 9604 const soldOutLang2 = "Sold out"; 9605 const discountType = originData.discount_info.discount_type; 9606 const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE"; 9607 const defaultVariantTitle = product.variants[0]?.title.replace('-', '/'); 9608 const variantDiscountInfo = product.variants[0]?.discount_info || {}; 9609 let discount_min_purchase_qty = 0; 9610 if(discountType === "DT_CLASSIC_BUNDLE" && data.discount_info.enable_min_purchase_qty) { 9611 discount_min_purchase_qty = data.discount_info.min_purchase_qty_type === "spu" ? product.discount_min_purchase_qty : product.variants[0].discount_info.discount_min_purchase_qty; 9612 } 9613 9614 let imageWidth; 9615 if (product.image.width) { 9616 imageWidth = product.image.width; 9617 } else { 9618 imageWidth = "300px"; 9619 } 9620 let imageHeight; 9621 if (product.image.height) { 9622 imageHeight= product.image.height; 9623 } else { 9624 imageHeight = "300px"; 9625 } 9626 if (product.published) { 9627 return ` 9628 <div class="common_app__product as-render-product-item"> 9629 <div class="product-snippet"> 9630 <div style="position: relative;"> 9631 <div style="position: relative;"> 9632 <a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link"> 9633 </a> 9634 <div class="product-snippet__img_box"> 9635 <ljs-img 9636 class="product-image" 9637 layout='responsive' 9638 width='${imageWidth}' 9639 height='${imageHeight}' 9640 src="${product.image.src}" 9641 alt="${product.image.alt}" 9642 object-fit='cover' 9643 auto-fit 9644 ></ljs-img> 9645 <div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'> 9646 ${function(){ 9647 if (soldOutLang1){ 9648 return ` 9649 <span>${soldOutLang1}</span> 9650 ` 9651 }else{ 9652 return ` 9653 <span>${soldOutLang2}</span> 9654 ` 9655 } 9656 }()} 9657 </div> 9658 </div> 9659 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}"> 9660 <ljs-render layout="container" id="promotionMinPurchaseQty-${id}" manual template="promotionMinPurchaseQtyTemplate"> 9661 <div spz-if="${discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${discount_min_purchase_qty}</div> 9662 </ljs-render> 9663 </div> 9664 </div> 9665 9666 <a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a> 9667 <div spz-if="${discountType !== 'DT_CLASSIC_BUNDLE'}" class="discount_product_atc_icon"> 9668 <ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual> 9669 <div class="product-snippet__price-wrapper max-w-full text-center" > 9670 <span class="max-w-full dj_skin_product_price"> 9671 <ljs-currency container-class="text-truncate" layout="container" value="${price}"></ljs-currency> 9672 </span> 9673 <del spz-if="${compareAtPrice * 1 > price * 1}" class="max-w-full dj_skin_product_compare_at_price"> 9674 <ljs-currency container-class="text-truncate" layout="container" value="${compareAtPrice}"></ljs-currency> 9675 </del> 9676 </div> 9677 </ljs-render> 9678 <div spz-if="${noNeedBtn}" class="shop-btn-wrap"> 9679 <ljs-product-form 9680 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }" 9681 product-id="${product.id}" 9682 layout="container" 9683 id="apps-discount-product-form-${product.id}" 9684 @atcSuccess="apps-discount-whole-loading.close;appsAddCartToastFunc.showAddToCartToast();" 9685 @atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);" 9686 > 9687 <form> 9688 <input name="variant_id" type="hidden" value=""> 9689 <button 9690 type="button" 9691 class="product-snippet__quick-shop-button" 9692 data-track-product-id="${product.id}" 9693 data-track="click" 9694 data-track-content="add_to_cart" 9695 data-track-source="quick_shop" 9696 @tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});" 9697 > 9698
9699 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 9700 </button> 9701 </form> 9702 </ljs-product-form> 9703 <button 9704 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }" 9705 class="product-snippet__quick-shop-button" 9706 role="addToCart" 9707 data-track="click" 9708 data-track-content="add_to_cart" 9709 data-track-source="quick_shop" 9710 type="button" 9711 @tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase='');" 9712 > 9713 9714 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 9715 </button> 9716 </div> 9717 </div> 9718 9719 9720 <div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}"> 9721 <button 9722 spz-if="${is_sold_out != true}" 9723 class="app_discount_bundle_add" 9724 type="button" 9725 @tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}"> 9726 Add 9727 </button>
9728 <ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render> 9729 <div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}"> 9730 9731 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> 9732 <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/> 9733 </svg> 9734 </div> 9735 </div> 9736 9737 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}"> 9738 <ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual> 9739 <div class="product-snippet__price-wrapper max-w-full"> 9740 <span class="text-truncate dj_skin_product_price money ${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts ? '' : 'promotion_no_del_p'}"><ljs-currency layout="container" value="${variantDiscountInfo.total_received_discounts}"></ljs-currency></span> 9741 <del spz-if="${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price dj_skin_product_compare_at_price money"><ljs-currency layout="container" value="${variantDiscountInfo.total_price}"></ljs-currency></del> 9742 </div> 9743 </ljs-render> 9744 <div spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}"> 9745 <ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});"> 9746 <div class="promotion_classic_variant_container flex justify-between items-center"> 9747 <span>${defaultVariantTitle}</span> 9748 9749 <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg> 9750 </div> 9751 </ljs-render> 9752 <ljs-render layout="container" id="promotionClassicSpuTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render> 9753 </div> 9754 9755 </div> 9756 </div> 9757 </div> 9758 </div> 9759 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator ${(index + 1) % 2 == 0 ? 'md:hidden' : ''}"> 9760 <span class="promotion_dotted_line"></span> 9761 <div class="promotion_plus_bundle"> 9762 9763 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"> 9764 <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/> 9765 </svg> 9766 </div> 9767 <span class="promotion_dotted_line"></span> 9768 </div> 9769 ` 9770 } else { 9771 return ``; 9772 } 9773 }).join(''); 9774 })()} 9775 </div> 9776</ljs-selector> 9777</div> 9778 </div> 9779 </div> 9780</ljs-tabs> 9781<ljs-loading layout='nodisplay' id='discount-match-drawer-products_loading' class='loading'></ljs-loading> 9782 </div> 9783 </div> 9784 ` : 9785 ` 9786 <div> 9787 <div class='discount-default relative' data-drawer-id="${discount_info.id}"> 9788 <div class='tw-container'> 9789 <div class='app_discount_product_list'> 9790 <style> 9791 #discount-match-drawer .discount_default_sort_wrap { 9792 display: flex; 9793 justify-content: space-between; 9794 margin-bottom: 20px; 9795 } 9796 #discount-match-drawer .discount_default_sort_wrap .discount_default_count { 9797 font-size: 16px; 9798 font-style: normal; 9799 font-weight: 600; 9800 align-items: center; 9801 display: flex; 9802 } 9803 #discount-match-drawer.in-cart-drawer .discount_default_sort_wrap .discount_default_count { 9804 font-weight: 400; 9805 } 9806 #discount-match-drawer .discount_default_sort { 9807 display: flex; 9808 align-items: center; 9809 font-size: 16px; 9810 min-height: 50px; 9811 min-width: 160px; 9812 gap: 2.25rem; 9813 } 9814 body.eva #discount-match-drawer .discount_default_sort { 9815 gap: 0.5rem; 9816 } 9817 #discount-match-drawer .discount_default_sort_text { 9818 font-weight: 600; 9819 } 9820 #discount-match-drawer.in-cart-drawer .discount_default_sort_text { 9821 font-weight: 400; 9822 } 9823 @media (max-width: 767.98px) { 9824 #discount-match-drawer .discount_default_sort_wrap { 9825 flex-direction: row-reverse !important; 9826 } 9827 #discount-match-drawer .discount_default_sort_text { 9828 display: none; 9829 } 9830 #discount-match-drawer .discount_default_sort { 9831 min-height: 40px; 9832 } 9833 } 9834</style> 9835 9836<div class='discount_default_sort_wrap'> 9837 <div class="discount_default_count">${originData.buy_product_info.count} Products</div> 9838 <div class='discount_default_sort'> 9839 <span class='discount_default_sort_text'>Sort by</span> 9840 <div> 9841 <spz-custom-sort 9842 @selectChange='cart_discount_default_actions.handleSort(data=event)' 9843 template='spz_custom_sort_template' 9844 layout='container' 9845 id='spz_custom_sort_products_x' 9846 ></spz-custom-sort> 9847 </div> 9848 </div> 9849</div> 9850<ljs-selector layout="container" id="promotionProductSelector" multiple @select="appDiscountBundleProductsFunc.getSelectedProduct(data=event.selectedOptions);"> 9851 <div class="render-products-wrapper flex flex-wrap discount-default__productlist-wrap"> 9852 ${(function() { 9853 const productsInfo = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? data.buy_product_info.product : data.obtain_product_info.product; 9854 //ç¹å»å è´æé®éè¦çåæ°
9855 const discount_id = data.discount_info.id; 9856 const apply_scenario = "spz_custom_sort_products_x" === "spz_custom_sort_products_x" ? 1 : 2 ; 9857 9858 return productsInfo.map((product, index) => { 9859 let price = product.price || 0; 9860 let priceMin = product.price_min || 0; 9861 let priceMax = product.price_max || 0; 9862 let compareAtPriceMax = product.compare_at_price_max || 0; 9863 let compareAtPrice = product.compare_at_price || 0; 9864 let title = product.title || ''; 9865 let id = product.id || ''; 9866 let url = product.url || ''; 9867 let type = product.type || ''; 9868 9869 let is_sold_out = false; 9870 if (product.available == false && product.inventory_policy != 'continue') { 9871 is_sold_out = true; 9872 } 9873 const soldOutLang1 = "Sold out"; 9874 const soldOutLang2 = "Sold out"; 9875 const discountType = originData.discount_info.discount_type; 9876 const noNeedBtn = discountType !== "DT_MIX_MATCH_BUNDLE" && discountType !== "DT_CLASSIC_BUNDLE"; 9877 const defaultVariantTitle = product.variants[0]?.title.replace('-', '/'); 9878 const variantDiscountInfo = product.variants[0]?.discount_info || {}; 9879 let discount_min_purchase_qty = 0; 9880 if(discountType === "DT_CLASSIC_BUNDLE" && data.discount_info.enable_min_purchase_qty) { 9881 discount_min_purchase_qty = data.discount_info.min_purchase_qty_type === "spu" ? product.discount_min_purchase_qty : product.variants[0].discount_info.discount_min_purchase_qty; 9882 } 9883 9884 let imageWidth; 9885 if (product.image.width) { 9886 imageWidth = product.image.width; 9887 } else { 9888 imageWidth = "300px"; 9889 } 9890 let imageHeight; 9891 if (product.image.height) { 9892 imageHeight= product.image.height; 9893 } else { 9894 imageHeight = "300px"; 9895 } 9896 if (product.published) { 9897 return ` 9898 <div class="common_app__product as-render-product-item"> 9899 <div class="product-snippet"> 9900 <div style="position: relative;"> 9901 <div style="position: relative;"> 9902 <a href="${product.url}" class="product-snippet__img-wrapper product-snippet__link"> 9903 </a> 9904 <div class="product-snippet__img_box"> 9905 <ljs-img 9906 class="product-image" 9907 layout='responsive' 9908 width='${imageWidth}' 9909 height='${imageHeight}' 9910 src="${product.image.src}" 9911 alt="${product.image.alt}" 9912 object-fit='cover' 9913 auto-fit 9914 ></ljs-img> 9915 <div spz-if="${is_sold_out == true}" class='product-snippet__sold-out-tag'> 9916 ${function(){ 9917 if (soldOutLang1){ 9918 return ` 9919 <span>${soldOutLang1}</span> 9920 ` 9921 }else{ 9922 return ` 9923 <span>${soldOutLang2}</span> 9924 ` 9925 } 9926 }()} 9927 </div> 9928 </div> 9929 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}"> 9930 <ljs-render layout="container" id="promotionMinPurchaseQty-${id}" manual template="promotionMinPurchaseQtyTemplate"> 9931 <div spz-if="${discount_min_purchase_qty > 1}" class="promotion_classic_bundle_min_purchase_qty">x ${discount_min_purchase_qty}</div> 9932 </ljs-render> 9933 </div> 9934 </div> 9935 9936 <a href="${product.url}" class="product-snippet__title-normal two_line_text_truncate dj_skin_product_list_title text-center" style="color: inherit;">${product.title}</a> 9937 <div spz-if="${discountType !== 'DT_CLASSIC_BUNDLE'}" class="discount_product_atc_icon"> 9938 <ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual> 9939 <div class="product-snippet__price-wrapper max-w-full text-center" > 9940 <span class="max-w-full dj_skin_product_price"> 9941 <ljs-currency container-class="text-truncate" layout="container" value="${price}"></ljs-currency> 9942 </span> 9943 <del spz-if="${compareAtPrice * 1 > price * 1}" class="max-w-full dj_skin_product_compare_at_price"> 9944 <ljs-currency container-class="text-truncate" layout="container" value="${compareAtPrice}"></ljs-currency> 9945 </del> 9946 </div> 9947 </ljs-render> 9948 <div spz-if="${noNeedBtn}" class="shop-btn-wrap"> 9949 <ljs-product-form 9950 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant == true) }" 9951 product-id="${product.id}" 9952 layout="container" 9953 id="apps-discount-product-form-${product.id}" 9954 @atcSuccess="apps-discount-whole-loading.close;appsAddCartToastFunc.showAddToCartToast();" 9955 @atcError="apps-discount-whole-loading.close;cart_match_discount_toast.showToast(content=event.message);" 9956 > 9957 <form> 9958 <input name="variant_id" type="hidden" value=""> 9959 <button 9960 type="button" 9961 class="product-snippet__quick-shop-button" 9962 data-track-product-id="${product.id}" 9963 data-track="click" 9964 data-track-content="add_to_cart" 9965 data-track-source="quick_shop" 9966 @tap="apps-discount-whole-loading.showLoading;appDiscountRenderQuickShopFunc.addToCart(product_id=${product.id},discount_id='${discount_id}',apply_scenario=${apply_scenario});" 9967 > 9968
9969 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 9970 </button> 9971 </form> 9972 </ljs-product-form> 9973 <button 9974 spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true) }" 9975 class="product-snippet__quick-shop-button" 9976 role="addToCart" 9977 data-track="click" 9978 data-track-content="add_to_cart" 9979 data-track-source="quick_shop" 9980 type="button" 9981 @tap="appDiscountRenderQuickShopFunc.renderQuickShop(product_id=${ product.id },discount_id='${discount_id}',apply_scenario=${apply_scenario},limit_purchase='');" 9982 > 9983 9984 <svg class="product_atc_icon" width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-base leading-none" style="color: #FC5161;"><path id="Icon" d="M1.2998 0.0350488C0.877307 0.0350488 0.534805 0.377551 0.534805 0.800049C0.534805 1.22255 0.877307 1.56505 1.2998 1.56505V0.0350488ZM3.01921 0.800049L3.75811 0.601938C3.66846 0.267549 3.36541 0.0350488 3.01921 0.0350488V0.800049ZM5.81324 11.2211L5.07433 11.4192C5.17334 11.7885 5.52977 12.0279 5.90907 11.98L5.81324 11.2211ZM14.4102 10.1356L14.5061 10.8945C14.8311 10.8535 15.094 10.61 15.1597 10.2891L14.4102 10.1356ZM15.6998 3.83951L16.4492 3.99302C16.4954 3.76788 16.4378 3.53394 16.2925 3.35588C16.1472 3.17783 15.9296 3.07451 15.6998 3.07451V3.83951ZM3.83413 3.83951L3.09523 4.03763L3.83413 3.83951ZM1.2998 1.56505H3.01921V0.0350488H1.2998V1.56505ZM5.90907 11.98L14.5061 10.8945L14.3144 9.37658L5.7174 10.4621L5.90907 11.98ZM15.1597 10.2891L16.4492 3.99302L14.9504 3.68601L13.6608 9.98205L15.1597 10.2891ZM2.2803 0.998159L3.09523 4.03763L4.57304 3.6414L3.75811 0.601938L2.2803 0.998159ZM3.09523 4.03763L5.07433 11.4192L6.55214 11.023L4.57304 3.6414L3.09523 4.03763ZM15.6998 3.07451H3.83413V4.60451H15.6998V3.07451ZM7.73481 14.0636C7.73481 14.2761 7.56637 14.435 7.3748 14.435V15.965C8.42588 15.965 9.2648 15.1065 9.2648 14.0636H7.73481ZM7.3748 14.435C7.18324 14.435 7.0148 14.2761 7.0148 14.0636H5.48481C5.48481 15.1065 6.32373 15.965 7.3748 15.965V14.435ZM7.0148 14.0636C7.0148 13.8512 7.18324 13.6922 7.3748 13.6922V12.1622C6.32373 12.1622 5.48481 13.0208 5.48481 14.0636H7.0148ZM7.3748 13.6922C7.56637 13.6922 7.73481 13.8512 7.73481 14.0636H9.2648C9.2648 13.0208 8.42588 12.1622 7.3748 12.1622V13.6922ZM13.7348 14.0636C13.7348 14.2761 13.5664 14.435 13.3748 14.435V15.965C14.4259 15.965 15.2648 15.1065 15.2648 14.0636H13.7348ZM13.3748 14.435C13.1832 14.435 13.0148 14.2761 13.0148 14.0636H11.4848C11.4848 15.1065 12.3237 15.965 13.3748 15.965V14.435ZM13.0148 14.0636C13.0148 13.8512 13.1832 13.6922 13.3748 13.6922V12.1622C12.3237 12.1622 11.4848 13.0208 11.4848 14.0636H13.0148ZM13.3748 13.6922C13.5664 13.6922 13.7348 13.8512 13.7348 14.0636H15.2648C15.2648 13.0208 14.4259 12.1622 13.3748 12.1622V13.6922Z" fill="currentColor"></path></svg> 9985 </button> 9986 </div> 9987 </div> 9988 9989 9990 <div spz-if="${discountType == 'DT_MIX_MATCH_BUNDLE'}"> 9991 <button 9992 spz-if="${is_sold_out != true}" 9993 class="app_discount_bundle_add" 9994 type="button" 9995 @tap="${(product.available == true && product.has_only_default_variant == true) ? `appDiscountBundleProductsFunc.renderSingleVariant(product_id=${product.id});` : `appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});`}"> 9996 Add 9997 </button>
9998 <ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render> 9999 <div id="promotionSelectOption-${id}" class="promotion_product_option" option="${id}" name="${id}"> 10000 10001 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> 10002 <path d="M3.1033 1.5H20.8967C21.3219 1.5 21.7297 1.66892 22.0304 1.9696C22.3311 2.27027 22.5 2.67808 22.5 3.1033V20.8967C22.5 21.3219 22.3311 21.7297 22.0304 22.0304C21.7297 22.3311 21.3219 22.5 20.8967 22.5H3.1033C2.67808 22.5 2.27027 22.3311 1.9696 22.0304C1.66892 21.7297 1.5 21.3219 1.5 20.8967V3.1033C1.5 2.67808 1.66892 2.27027 1.9696 1.9696C2.27027 1.66892 2.67808 1.5 3.1033 1.5ZM10.4969 16.094C10.723 16.094 10.9482 16.0074 11.1278 15.8415L17.3727 9.5702C17.5389 9.40083 17.632 9.173 17.632 8.9357C17.632 8.69839 17.5389 8.47056 17.3727 8.30119C17.2902 8.21757 17.192 8.15117 17.0837 8.10584C16.9754 8.06052 16.8592 8.03718 16.7418 8.03718C16.6243 8.03718 16.5081 8.06052 16.3998 8.10584C16.2915 8.15117 16.1933 8.21757 16.1109 8.30119L10.4969 13.9352L7.56047 10.9851C7.47805 10.9015 7.37983 10.8351 7.27153 10.7898C7.16322 10.7444 7.04698 10.7211 6.92957 10.7211C6.81216 10.7211 6.69592 10.7444 6.58761 10.7898C6.47931 10.8351 6.38109 10.9015 6.29867 10.9851C6.13245 11.1545 6.03933 11.3823 6.03933 11.6196C6.03933 11.8569 6.13245 12.0848 6.29867 12.2541L9.86601 15.8351C10.0384 16.0074 10.2708 16.094 10.4969 16.094Z" fill="#202020"/> 10003 </svg> 10004 </div> 10005 </div> 10006 10007 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}"> 10008 <ljs-render layout="container" id="appDiscountProductPrice-${id}" template="appDiscountProductPriceTemplate" manual> 10009 <div class="product-snippet__price-wrapper max-w-full"> 10010 <span class="text-truncate dj_skin_product_price money ${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts ? '' : 'promotion_no_del_p'}"><ljs-currency layout="container" value="${variantDiscountInfo.total_received_discounts}"></ljs-currency></span> 10011 <del spz-if="${+variantDiscountInfo.total_price > +variantDiscountInfo.total_received_discounts}" class="text-truncate dj_skin_product_compare_at_price dj_skin_product_compare_at_price money"><ljs-currency layout="container" value="${variantDiscountInfo.total_price}"></ljs-currency></del> 10012 </div> 10013 </ljs-render> 10014 <div spz-if="${is_sold_out != true && (product.available == true && product.has_only_default_variant != true)}"> 10015 <ljs-render layout="container" id="promotionSpzVariantTags-${id}" class="z-10" template="promotionClassicSelectedVariantTemplate" manual @tap="appDiscountBundleProductsFunc.renderQuickShop(product_id=${product.id});"> 10016 <div class="promotion_classic_variant_container flex justify-between items-center"> 10017 <span>${defaultVariantTitle}</span> 10018 10019 <svg class="" width="12" height="10" xmlns="http://www.w3.org/2000/svg"><path d="M10.945 2.54a.65.65 0 0 1 .068.84l-.068.08-4.243 4.242a.647.647 0 0 1-.36.183l-.1.008a.648.648 0 0 1-.378-.122l-.081-.069L1.54 3.46a.65.65 0 0 1 .84-.988l.08.068 3.782 3.783 3.784-3.783a.65.65 0 0 1 .919 0z" fill="currentColor" fill-rule="nonzero"/></svg> 10020 </div> 10021 </ljs-render> 10022 <ljs-render layout="container" id="promotionClassicSpuTags-${id}" class="z-10" template="promotionSelectedVariantTemplate" manual></ljs-render> 10023 </div> 10024 10025 </div> 10026 </div> 10027 </div> 10028 </div> 10029 <div spz-if="${discountType === 'DT_CLASSIC_BUNDLE'}" class="promotion_separator ${(index + 1) % 2 == 0 ? 'md:hidden' : ''}"> 10030 <span class="promotion_dotted_line"></span> 10031 <div class="promotion_plus_bundle"> 10032 10033 <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"> 10034 <path d="M1 6H11M6 1L6 11" stroke="black" stroke-width="1.6" stroke-linecap="round"/> 10035 </svg> 10036 </div> 10037 <span class="promotion_dotted_line"></span> 10038 </div> 10039 ` 10040 } else { 10041 return ``; 10042 } 10043 }).join(''); 10044 })()} 10045 </div> 10046</ljs-selector> 10047</div> 10048 </div> 10049 <ljs-loading layout='nodisplay' id='discount-match-drawer-products_loading' class='loading'></ljs-loading> 10050 </div> 10051 </div> 10052 `; 10053 return dom; 10054 }()} 10055 </template> 10056</ljs-render> 10057 10058</div> 10059 </div> 10060 <div id="appDiscountBundleBottom"> 10061 <style> 10062 .app-bundle-discount_info { 10063 line-height: normal; 10064 text-align: center; 10065 } 10066 .app-bundle-discount_info ljs-currency { 10067 display: inline-block; 10068 } 10069 .app-bundle-discount_bottom_button { 10070 display: flex; 10071 justify-content: center;
10072 align-items: center; 10073 line-height: normal; 10074 margin-top: 12px; 10075 padding: 10px 16px; 10076 border-radius: 2px; 10077 cursor: pointer; 10078 height: 52px; 10079 } 10080 .app_discount_button_original_price { 10081 text-decoration: line-through; 10082 font-size: 16px; 10083 } 10084 .app_discount_button_discounted_price { 10085 font-size: 20px; 10086 font-weight: 600; 10087 } 10088</style> 10089<ljs-render layout="container" id="promotionBottomContainer" template="appDiscountBundleButton" manual class="i-spzhtml-layout-container" i-spzhtml-layout="container"></ljs-render> 10090 </div> 10091 </div> 10092</div> 10093<div id="app-discount-cart-banner-block" data-version="2025-03"> 10094 <ljs-render manual layout="container" id="app-discount-cart-banner" template-src="script:app-discount-cart-banner-tpl" class="i-spzhtml-layout-container" i-spzhtml-layout="container"></ljs-render> 10095
10095<script id="app-discount-cart-banner-tpl" type="text/template"> 10096 ${function(){ 10097 const groups = originData.groups || []; 10098 return ` 10099 <div class="discount-cart-banner-list"> 10100 ${groups.map(group => { 10101 const discounts = group.discounts || []; 10102 const firstDiscount = discounts[0] || {}; 10103 const isBuyXGetY = firstDiscount.discount_type == 'DT_BUY_X_GET_Y'; 10104 const isSatisfyBuysThreshold = firstDiscount.is_satisfy_buys_threshold; 10105 const activeTab = isBuyXGetY && isSatisfyBuysThreshold ? '2' : '1'; 10106 10107 return ` 10108 <div key="${group.category}" @tap="cart_discount_default_actions.showDiscountDrawer(discountId='${firstDiscount.discount_id}',activeTab='${activeTab}');discount-cart-banner-func.renderDiscountSelectors(data='${group.category}');"> 10109 <div class="discount-cart-banner-list-inner"> 10110 <div class="discount-banner-inner-left"> 10111 <div class="discount-banner-icon"> 10112 <ljs-img src="${firstDiscount.discount_icon}" alt="discount icon" object-fit="cover" layout="responsive" width="16" height="16" auto-fit></ljs-img> 10113 </div> 10114 <div class="discount-banner-text">${firstDiscount.discount_text}</div> 10115 </div> 10116 <div class="discount-banner-inner-right flex"> 10117 <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg"> 10118 <path d="M5.00126 2.50003C5.1326 2.49989 5.26267 2.52571 5.384 2.57599C5.50533 2.62627 5.61552 2.70003 5.70826 2.79303L10.7083 7.79303C10.8012 7.88582 10.8749 7.99602 10.9253 8.11734C10.9756 8.23865 11.0015 8.3687 11.0015 8.50003C11.0015 8.63136 10.9756 8.76141 10.9253 8.88272C10.8749 9.00404 10.8012 9.11424 10.7083 9.20703L5.70826 14.207C5.61542 14.2999 5.5052 14.3735 5.38389 14.4238C5.26258 14.474 5.13257 14.4999 5.00126 14.4999C4.86996 14.4999 4.73995 14.474 4.61864 14.4238C4.49733 14.3735 4.38711 14.2999 4.29426 14.207C4.20142 14.1142 4.12777 14.004 4.07752 13.8827C4.02728 13.7613 4.00141 13.6313 4.00141 13.5C4.00141 13.3687 4.02728 13.2387 4.07752 13.1174C4.12777 12.9961 4.20142 12.8859 4.29426 12.793L8.58726 8.50003L4.29426 4.20703C4.15396 4.06737 4.05832 3.88917 4.01948 3.69505C3.98063 3.50093 4.00034 3.29965 4.07609 3.11675C4.15184 2.93386 4.28023 2.77759 4.44495 2.66778C4.60967 2.55798 4.8033 2.49959 5.00126 2.50003Z" fill="#6D7175"/> 10119</svg> 10120 </div> 10121</div> 10122</div> 10123 ` 10124 }).join('')} 10125 </div> 10126 `; 10127 }()} 10128 </script>
10128 10129</div> 10130 10131<spz-custom-discount-cart-banner-info id="discount-cart-banner-func" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-custom-discount-cart-banner-info> 10132 10133<ljs-script layout="logic" type="application/javascript" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"> 10134 const TAG = 'spz-custom-discount-cart-banner-info'; 10135 const API = { 10136 DISPLAY_TEXT: "\/api\/storefront\/promotion\/cart_page\/display_text", 10137 CART_SELECT: "\/api\/cart\/cart-select?r=", 10138 } 10139 10140 class SpzCustomDiscountCartBannerInfo extends SPZ.BaseElement { 10141 constructor(element) { 10142 super(element); 10143 this.xhr_ = SPZServices.xhrFor(this.win); 10144 10145 this.displayTextData = {}; // æ´»å¨æ°æ®ææ¡æ°æ® 10146 this.selectedCategory = ''; // å½åéä¸çåç±» 10147 this.selectedDiscountId = ''; // å½åéä¸çææ£ id 10148 this.codes = []; // 伿 ç æ°ç» 10149 } 10150 10151 isLayoutSupported(layout) { 10152 return layout == SPZCore.Layout.LOGIC; 10153 } 10154 10155 mountCallback() { 10156 this.getDisplayText_(); 10157 SPZUtils.Event.listen(document, 'dj.cartChange', (e) => { 10158 this.getDisplayText_(); 10159 }); 10160 //该äºä»¶åè´ç©è½¦ä¼æ ç ç»ä»¶è§¦åï¼ä¼ å为å½ååºç¨ç伿 ç æ°ç» 10161 SPZUtils.Event.listen(document, 'dj.applyDiscountCode', (e) => { 10162 this.codes = e.detail.codes; 10163 this.getDisplayText_(); 10164 }); 10165 this.registerAction('renderDiscountSelectors', (invocation) => { 10166 const selected = invocation.args?.data; 10167 const groups = this.displayTextData.groups || []; 10168 const discounts = groups.find(v => v.category == selected)?.discounts || []; // å½ååç±»ä¸çææ£ 10169 const defaultDiscountId = discounts[0]?.discount_id; // é»è®¤éä¸ç¬¬ä¸ä¸ªææ£ 10170 this.selectedCategory = selected; 10171 this.selectedDiscountId = defaultDiscountId; 10172 10173 this.renderDiscountSelectors_(); // 渲æ Tab 10174 this.renderDiscountText_(); // æ¸²ææ´»å¨è¿åº¦ææ¡ 10175 }); 10176 this.registerAction('discountSelectorChange', (invocation) => { 10177 const { targetOption } = invocation?.args?.data || {}; 10178 this.selectedDiscountId = targetOption; 10179 this.renderDiscountText_(); // åæ¢æ´»å¨æ´æ°æ´»å¨è¿åº¦ææ¡ 10180 }); 10181 } 10182 10183 getLineItems_(line_items) { 10184 return line_items.map((item) => { 10185 return { 10186 id: item.id, 10187 product_id: item.product_id, 10188 variant_id: item.variant_id, 10189 quantity: item.quantity, 10190 price: item.price, 10191 origin_price: item.origin_price, 10192 compare_at_price: item.compare_at_price, 10193 trunk_price: item.trunk_price, 10194 total_price: item.total_price, 10195 inventory_tracking: item.inventory_tracking, 10196 inventory_policy: item.inventory_policy, 10197 inventory_quantity: item.inventory_quantity, 10198 custom: item.custom, 10199 product_type: item.product_type, 10200 properties: item.properties 10201 }; 10202 }); 10203 } 10204 10205 getDisplayText_(redo = true) { 10206 this.xhr_.fetchJson(API.CART_SELECT + Math.random().toString(36).slice(-4), 10207 { method: "GET" } 10208 ).then(async (cartData) => { 10209 const cartObj = cartData.cart || {}; 10210 if(!cartObj || cartObj.line_items?.length <= 0) { 10211 // æ¸ ç©ºè´ç©è½¦æ¶ï¼æ¸ ç©ºæ´»å¨æ°æ® 10212 this.displayTextData = {}; 10213 this.selectedCategory = ''; 10214 this.selectedDiscountId = ''; 10215 this.renderDiscountBanner_(); 10216 return; 10217 } 10218 10219 this.xhr_.fetchJson(API.DISPLAY_TEXT, { 10220 method: "POST", 10221 body: { 10222 line_items: this.getLineItems_(cartObj.line_items), 10223 sales_channel: { 10224 sale_channel_type: "online", 10225 sale_channel_id: window.C_SETTINGS.shop.shop_id 10226 }, 10227 codes: this.codes || [] 10228 } 10229 }).then(data => { 10230 this.displayTextData = data; 10231 this.renderDiscountBanner_(redo); 10232 // ååå¼¹çªå è´åååï¼éæ°è·åæ´»å¨è¿åº¦ææ¡ 10233 this.renderDiscountText_(redo); 10234 }).catch(err => { 10235 }); 10236 }); 10237 } 10238 10239 renderDiscountBanner_(redo = true) { 10240 const bannerEl = document.getElementById("app-discount-cart-banner"); 10241 if (bannerEl) { 10242 SPZ.whenApiDefined(bannerEl).then(apis => { 10243 apis.render(this.displayTextData, redo); 10244 }); 10245 } 10246 } 10247 10248 renderDiscountSelectors_(redo = true) { 10249 const groups = this.displayTextData.groups || []; 10250 const discounts = groups.find(v => v.category == this.selectedCategory)?.discounts || []; 10251 10252 if (discounts.length <= 0) { 10253 return; 10254 } 10255 const selectorsEl = document.getElementById("app-discount-selectors-render"); 10256 if (selectorsEl) { 10257 SPZ.whenApiDefined(selectorsEl).then(apis => { 10258 apis.render(discounts, redo); 10259 }); 10260 } 10261 } 10262 10263 renderDiscountText_(redo = true) { 10264 if (!this.selectedCategory || !this.selectedDiscountId) { 10265 return; 10266 } 10267 const groups = this.displayTextData.groups || []; 10268 const discounts = groups.find(v => v.category == this.selectedCategory)?.discounts || []; 10269 const discount = discounts.find(v => v.discount_id == this.selectedDiscountId) || {}; 10270 10271 const textEl = document.getElementById("app-discount-text-render"); 10272 if (textEl) { 10273 SPZ.whenApiDefined(textEl).then(apis => { 10274 apis.render(discount, redo); 10275 }); 10276 } 10277 } 10278 } 10279 10280 SPZ.defineElement(TAG, SpzCustomDiscountCartBannerInfo); 10281</ljs-script> 10282 10283</div> 10284 </article> 10285</div> 10286</div>
10286<script>try { if (window.performance || window.webkitPerformance) { var perf = window.performance || window.webkitPerformance;var timing = perf.timing;window.firstTiming = Date.now() - timing.navigationStart;}}catch(e){}</script>
10286<div id="shoplaza-section-1717490478703" class="shoplaza-section" data-section-id="1717490478703" data-section-type="cart_payment_breakdown" data-section-style=""><style> 10287 .main-content { 10288 padding-bottom: 32px; 10289 } 10290 10291 @media (min-width: 960px) { 10292 .main-content { 10293 padding-bottom: 66px; 10294 } 10295 } 10296 10297 #cart-render { 10298 width: 0; 10299 height: 0; 10300 } 10301 10302 #cart-render[loading] ~ *, 10303 #cart-render:not([finish]) ~ * { 10304 display: none; 10305 } 10306 10307 #cart-render[loading] ~ .cart-loading, 10308 #cart-render[interact-loading] ~ .cart-loading { 10309 display: var(--loading-show); 10310 } 10311 10312 #cart-render:not([finish]) ~ .cart-content > header, 10313 #cart-render:not([finish]) ~ .cart-content .cart-items-top-container, 10314 #cart-render[finish][data-empty] ~ .cart-content .cart-items-top-container, 10315 #cart-render[finish][data-empty] ~ .cart-content .cart-subtotal-outer-container, 10316 #cart-render[finish][data-empty] ~ .cart-content .cart-summary-sticky-container { 10317 display: none; 10318 } 10319 10320 .cart-content .cart-empty { 10321 padding: 80px 0; 10322 } 10323 10324 .cart-content spz-render { 10325 min-width: unset !important; 10326 } 10327 10328 .cart-continue-shopping { 10329 width: 100%; 10330 height: 46px; 10331 } 10332 10333 .cart-item-image { 10334 flex-shrink: 0; 10335 width: 19.55%; 10336 } 10337 10338 .cart-qty spz-quantity { 10339 width: 81px; 10340 } 10341 10342 .cart-qty spz-quantity .i-spzhtml-quantity-number-decrease[disabled] { 10343 cursor: pointer; 10344 } 10345 10346 .cart-qty spz-quantity input[type="number"] { 10347 width: 25px; 10348 } 10349 10350 .cart-qty spz-quantity span[role="button"] { 10351 padding: 6px; 10352 border-radius: var(--global-border-radius); 10353 } 10354 10355 .cart-qty-minimum-tip { 10356 color: #FF3F02; 10357 } 10358 10359 .cart-subtotal-free-shipping + .cart-subtotal-content { 10360 margin-top: 10px; 10361 } 10362 10363 .cart-subtotal-content { 10364 padding: 12px; 10365 border-radius: 2px; 10366 background-color: #F6F6F6; 10367 } 10368 10369 .cart-invalid-msg { 10370 color: #FF3F02; 10371 } 10372 10373 .cart-checkout-btn, 10374 .cart-summary-checkout-btn { 10375 width: 100%; 10376 height: 46px; 10377 } 10378 10379 .cart-subtotal-render { 10380 min-height: 1px; 10381 } 10382 10383 @media (max-width: 959.98px) { 10384 .cart-item { 10385 padding: 16px 0; 10386 } 10387 10388 .cart-qty-minimum-tip { 10389 margin-bottom: -8px; 10390 } 10391 10392 .cart-summary-sticky-container { 10393 z-index: var(--z-index-sticky); 10394 position: fixed; 10395 left: 0; 10396 bottom: 0; 10397 width: 100%; 10398 background-color: #fff; 10399 box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08); 10400 opacity: 0; 10401 transform: translateY(140%); 10402 } 10403 10404 .cart-summary-sticky-container .ios_safari_bottom_bar { 10405 display: none; 10406 } 10407 10408 .cart-summary-sticky-container[hidden] { 10409 display: block !important; 10410 pointer-events: none; 10411 } 10412 10413 .cart-summary-sticky-container[show] { 10414 animation: sticky-bottom-show .7s cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards; 10415 } 10416 10417 @keyframes sticky-bottom-show { 10418 0% { opacity: 1;} 10419 100% { transform: translateY(0); opacity: 1; } 10420 } 10421 10422 .cart-summary-sticky-checkout-btn { 10423 width: 33.51%; 10424 height: 46px; 10425 margin-top: 0; 10426 } 10427 10428 .cart-summary-discount-btn { 10429 display: flex; 10430 align-items: center; 10431 margin-top: 4px; 10432 padding: 4px 8px; 10433 color: #F16515; 10434 background-color: #fff; 10435 border-radius: 100px; 10436 } 10437 10438 .cart-summary-discount-btn > span { 10439 margin-right: 2px; 10440 } 10441 10442 html[dir="rtl"] .cart-summary-discount-btn > span { 10443 margin-left: 2px; 10444 margin-right: 0; 10445 } 10446 10447 .cart-summary-discount-btn svg { 10448 transition: transform .2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 10449 } 10450 10451 .cart-summary-discount-list.open .cart-summary-discount-btn svg { 10452 transform: rotate(-180deg); 10453 } 10454 10455 .cart-summary-discount-list ul { 10456 display: none; 10457 } 10458 10459 .cart-summary-discount-list.open ul { 10460 display: block; 10461 } 10462 10463 .cart-summary-sticky-render .cart-summary-discount-btn { 10464 background-color: #F6F6F6; 10465 } 10466 10467 .cart-summary-sticky-modal { 10468 z-index: calc(var(--z-index-modal) + 1); 10469 width: 100% !important; 10470 max-height: 85vh !important; 10471 display: flex; 10472 align-items: flex-end; 10473 justify-content: flex-end; 10474 pointer-events: none; 10475 } 10476 10477 .cart-summary-sticky-modal .ios_safari_bottom_bar {
10478 display: none; 10479 } 10480 10481 .cart-summary-sticky-modal-inner { 10482 width: 100%; 10483 padding: 8px 16px 16px; 10484 border-radius: 2px; 10485 background-color: #fff; 10486 box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08); 10487 pointer-events: auto; 10488 } 10489 10490 .cart-summary-sticky-modal-close { 10491 margin-right: -8px; 10492 } 10493 10494 html[dir="rtl"] .cart-summary-sticky-modal-close { 10495 margin-left: -8px; 10496 margin-right: 0; 10497 } 10498 10499 .cart-summary-sticky-modal ~ .i-spzhtml-sidebar-mask { 10500 top: unset; 10501 bottom: 0; 10502 } 10503 10504 .cart-checkout-btn-mobile { 10505 flex-shrink: 0; 10506 width: 40.268%; 10507 margin-top: 0; 10508 } 10509 10510 .cart-summary-sticky-render .cart-summary-discount-btn svg { 10511 transform: rotate(0) !important; 10512 } 10513 10514 .cart-item-delete-btn { 10515 position: relative; 10516 } 10517 10518 .cart-item-delete-btn::before { 10519 content: ''; 10520 position: absolute; 10521 top: -8px; 10522 left: -8px; 10523 right: -8px; 10524 bottom: -8px; 10525 } 10526 } 10527 10528 @media (min-width: 960px) { 10529 .cart-title { 10530 line-height: 1.1667; 10531 font-size: calc(var(--type-heading-font-size) * .8); 10532 } 10533 10534 .cart-content .cart-empty { 10535 padding: 60px 0 120px; 10536 } 10537 10538 .cart-continue-shopping { 10539 width: 420px; 10540 } 10541 10542 .cart-header-continue-shopping-btn { 10543 border-bottom: 1px solid var(--color-body-text); 10544 } 10545 10546 #cart-render[data-empty] ~ .cart-content .cart-header-continue-shopping-btn { 10547 display: none; 10548 } 10549 10550 .cart-items-header, 10551 .cart-item { 10552 display: grid; 10553 grid-template-columns: 50% 16.13% 24.2%; 10554 gap: 4.8387%; 10555 } 10556 10557 .cart-items-header { 10558 line-height: 1.14; 10559 border-bottom: 1px solid #E6E6E6; 10560 } 10561 10562 .cart-items-header li { 10563 padding: 16px 0; 10564 } 10565 10566 .cart-item-image { 10567 width: 19.35%; 10568 } 10569 10570 .cart-qty spz-quantity { 10571 width: 93px; 10572 } 10573 10574 .cart-qty spz-quantity input[type="number"] { 10575 width: 37px; 10576 } 10577 10578 .cart-subtotal-outer-container { 10579 width: 37.74%; 10580 } 10581 } 10582</style> 10583<div id="cart-payment-breakdown" class="hidden"> 10584 <section class="page-container lg:flex lg:justify-end" > 10585 <div class="cart-subtotal-outer-container md:w-full mt-4" id="cart-subtotal-outer-container"> 10586 <div class="cart-subtotal-content"> 10587 <div class="cart-summary-checkout mb-1"></div> 10588 <div class="cart-summary" id="cart-summary"> 10589 <div > 10590 <spz-render class="cart-subtotal-render i-spzhtml-layout-container" id="cart-subtotal-render" layout="container" manual i-spzhtml-layout="container"> 10591 <template> 10592 <div> 10593 <div class="flex justify-between font-medium body-plus-2 leading-1.25"> 10594 <span>Total:</span> 10595 <div class="flex items-center"> 10596 <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency> 10597 </div> 10598</div> 10599 10600<div class="cart-summary-discount-list flex flex-col items-end" id="cart-summary-discount-list" spz-if="${data.total_discount > 0}"> 10601 <div class="cart-summary-discount-btn lg:hidden" spz-if="${data.discount_applications && data.discount_applications.length <= 0}"> 10602 <span class="leading-1.2 body-minus-2"> 10603 ${function() { 10604 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 10605 if (textArray.length > 0 && textArray.length < 2) { 10606 textArray.push(''); 10607 } 10608 return textArray.map((text, index) => { 10609 if (index == 0) { 10610 return `<span>${text}</span>`; 10611 } 10612 10613 return ` 10614 <span class="notranslate whitespace-nowrap"> 10615 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 10616 </span> 10617 <span>${text}</span> 10618 `; 10619 }).join(''); 10620}()} 10621 </span> 10622 </div> 10623 <div class="cart-summary-discount-btn lg:hidden" @tap="cart-summary-discount-list.toggleClass(class='open')" spz-else> 10624 <span class="leading-1.2 body-minus-2"> 10625 ${function() { 10626 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 10627 if (textArray.length > 0 && textArray.length < 2) { 10628 textArray.push(''); 10629 } 10630 return textArray.map((text, index) => { 10631 if (index == 0) { 10632 return `<span>${text}</span>`;
10633 } 10634 10635 return ` 10636 <span class="notranslate whitespace-nowrap"> 10637 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 10638 </span> 10639 <span>${text}</span> 10640 `; 10641 }).join(''); 10642}()} 10643 </span> 10644 <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg> 10645 </div> 10646 10647 <ul class="clear w-full mt-1 leading-1.25 color-body-70" spz-if="${data.discount_applications && data.discount_applications.length > 0}"> 10648 <li class="plugin__bundle__cart__save md:hidden empty-hidden flex items-center justify-between mb-2"></li> 10649 <li class="flex items-center justify-between ${index > 0 ? 'mt-2' : ''}" spz-for="(discount_application,index) in data.discount_applications"> 10650 <span>${discount_application.title}:</span> 10651 <span class="notranslate ml-2 whitespace-nowrap"> 10652 <span>-</span><spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency> 10653 </span> 10654 </li> 10655 </ul> 10656</div> 10657<div class="plugin__bundle__cart__save md:hidden empty-hidden flex items-center justify-between mb-2" spz-else></div> 10658 10659<div class="cart-invalid-msg mt-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div> 10660<spz-observer 10661 id="cart-summary-sticky-observer" 10662 layout="logic" 10663 target="cart-subtotal-outer-container" 10664 @visible="cart-summary-sticky-container.hideSticky;" 10665 @invisible="cart-summary-sticky-container.showSticky;" 10666 ></spz-observer> 10667 <spz-observer 10668 layout="logic" 10669 target="cart-content" 10670 @childUpdated="cart-summary-sticky-observer.restart" 10671 ></spz-observer> 10672 </div> 10673 </template> 10674 </spz-render> 10675 </div> 10676 <div > 10677 <button 10678 type="button" 10679 class="cart-summary-checkout-btn button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2" 10680 data-track="checkout-submit,click" 10681 data-track-content="checkout" 10682 data-track-source="checkout" 10683 @tap="cart-render.checkout;" 10684> 10685 <span>Check out</span> 10686 <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show > 10687 <div class="loading-bounce"></div> 10688</div> 10689</button> 10690<div class="mt-2 body-minus-2 color-body-70 text-center">Taxes and shipping calculated at checkout</div> 10691 </div> 10692 </div> 10693 </div> 10694 </div> 10695</section> 10696 <spz-sticky class="lg:hidden cart-summary-sticky-container i-spzhtml-layout-container" id="cart-summary-sticky-container" layout="container" position="bottom" bottom-compensation-container-class="lg:hidden" hidden i-spzhtml-layout="container"> 10697 <spz-render class=" cart-summary-sticky-render p-4 i-spzhtml-layout-container" id="cart-summary-sticky-render" layout="container" manual i-spzhtml-layout="container"> 10698 <template> 10699 <div> 10700 <div class="cart-invalid-msg mb-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div> 10701 10702 <div class="flex items-center justify-between"> 10703 <div class="flex flex-col items-start"> 10704 <div class="flex flex-wrap items-center"> 10705 <div class="flex font-medium body-plus-2 leading-1.25 lg:items-center lg:justify-between"> 10706 <span class="color-body-70">Total: </span> 10707 <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency> 10708 </div> 10709 </div> 10710 10711 <div spz-if="${data.total_discount > 0}"> 10712 <div class="cart-summary-discount-btn" spz-if="${!!(data.discount_applications && data.discount_applications.length <= 0)}">
10713 <span class="leading-1.2 body-minus-2"> 10714 ${function() { 10715 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 10716 if (textArray.length > 0 && textArray.length < 2) { 10717 textArray.push(''); 10718 } 10719 return textArray.map((text, index) => { 10720 if (index == 0) { 10721 return `<span>${text}</span>`; 10722 } 10723 10724 return ` 10725 <span class="notranslate whitespace-nowrap"> 10726 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 10727 </span> 10728 <span>${text}</span> 10729 `; 10730 }).join(''); 10731}()} 10732 </span> 10733 </div> 10734 <div class="cart-summary-discount-btn" @tap="cart-summary-sticky-modal.open;" spz-else> 10735 <span class="leading-1.2 body-minus-2"> 10736 ${function() { 10737 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 10738 if (textArray.length > 0 && textArray.length < 2) { 10739 textArray.push(''); 10740 } 10741 return textArray.map((text, index) => { 10742 if (index == 0) { 10743 return `<span>${text}</span>`; 10744 } 10745 10746 return ` 10747 <span class="notranslate whitespace-nowrap"> 10748 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 10749 </span> 10750 <span>${text}</span> 10751 `; 10752 }).join(''); 10753}()} 10754 </span> 10755 <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg> 10756 </div> 10757 10758 <spz-sidebar class="cart-summary-sticky-modal " id="cart-summary-sticky-modal" layout="nodisplay" side="bottom" hidden @open="top-button.toggleClass(class='hidden', force=true);" @close="top-button.toggleClass(class='hidden', force=false);" > 10759 <div class="cart-summary-sticky-modal-inner relative"> 10760 <div class="flex justify-end"> 10761 <button class="cart-summary-sticky-modal-close clear flex p-2 cursor-pointer" @tap="cart-summary-sticky-modal.close();" type="button"> 10762 <svg class="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M1.93 17.147a.3.3 0 0 0 0 .425l.905.904a.3.3 0 0 0 .424 0l6.652-6.653 6.704 6.704a.3.3 0 0 0 .424 0l.904-.904a.3.3 0 0 0 0-.425l-6.703-6.703 6.652-6.653a.3.3 0 0 0 0-.424l-.904-.904a.3.3 0 0 0-.424 0L9.91 9.166 3.31 2.565a.3.3 0 0 0-.424 0l-.905.904a.3.3 0 0 0 0 .424l6.602 6.602-6.653 6.652Z" clip-rule="evenodd"/></svg> 10763 </button> 10764 </div> 10765 10766 <ul class="clear w-full mt-3 leading-1.25 color-body-70" spz-if="${!!(data.discount_applications && data.discount_applications.length > 0)}"> 10767 <li class="flex items-center justify-between"> 10768 <span>Subtotal:</span> 10769 <span class="notranslate ml-2 whitespace-nowrap"> 10770 <spz-currency class="inline-block" layout="container" value="${data.line_price}"></spz-currency> 10771 </span> 10772 </li> 10773 <li class="flex items-center justify-between mt-2" spz-for="(discount_application,index) in data.discount_applications"> 10774 <span>${discount_application.title}:</span> 10775 <span class="notranslate ml-2 whitespace-nowrap"> 10776 <span>-</span><spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency> 10777 </span> 10778 </li> 10779 </ul> 10780 10781 <div class="flex items-start justify-between mt-2 font-medium body-plus-2 leading-1.25"> 10782 <span>Total:</span> 10783 <div class="flex items-center"> 10784 <spz-currency class="color-price" container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency> 10785 </div> 10786 </div> 10787 <button 10788 type="button" 10789 class="cart-checkout-btn mt-4 button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2" 10790 data-track="checkout-submit,click" 10791 data-track-content="checkout" 10792 data-track-source="checkout" 10793 @tap="cart-render.checkout;" 10794> 10795 <span>Check out</span> 10796 <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show > 10797 <div class="loading-bounce"></div> 10798</div> 10799</button> 10800 <div class="mt-2 body-minus-2 color-body-70 text-center">Taxes and shipping calculated at checkout</div> 10801 </div> 10802</spz-sidebar> 10803 </div> 10804 </div> 10805 10806 <button 10807 type="button" 10808 class="cart-summary-sticky-checkout-btn button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2" 10809 data-track="checkout-submit,click" 10810 data-track-content="checkout" 10811 data-track-source="checkout" 10812 @tap="cart-render.checkout;" 10813> 10814 <span>Check out</span> 10815 <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show > 10816 <div class="loading-bounce"></div> 10817</div> 10818</button> 10819 </div> 10820 10821 <div class="mt-2 body-minus-2 color-body-70 text-right">Taxes and shipping calculated at checkout</div> 10822 </div> 10823 </template> 10824 </spz-render> 10825</spz-sticky> 10826 </div> 10827</div><div id="shoplaza-section-1634017942336" class="shoplaza-section" data-section-id="1634017942336" data-section-type="cart_recommendations" data-section-style=""><style> 10828 .cart_recommend_container { 10829 padding-top: 96px; 10830 } 10831 .cart_recommend_title { 10832 margin-bottom: 32px; 10833 font-size: 24px; 10834 } 10835 .recommend_list_carousel .i-spzhtml-slide-item { 10836 width: 25%; 10837 padding-left: 40px; 10838 } 10839 .recommend_list_carousel { 10840 margin-left: -40px; 10841 }
10842 .recommend_list_carousel .spz-carousel-button-prev { 10843 left: 56px; 10844 } 10845 @media (max-width: 960px) { 10846 .cart_recommend_container { 10847 padding-top: 68px; 10848 } 10849 .cart_recommend_title { 10850 margin-bottom: 24px; 10851 font-size: 18px; 10852 } 10853 .recommend_list_item:last-child { 10854 padding-right: 0; 10855 } 10856 } 10857</style> 10858<spz-render layout="container" src="/api/cart" items="cart.line_items" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 10859 <template> 10860 <spz-render spz-if="${!!data.length}" layout="container" src="/api/product/similar-products?product_id=${data[0] && data[0].product_id}&page=1&per_page=8" @finish="cart-recommendations-render.rerender(data=event.data.data.products);"></spz-render> 10861 </template> 10862 </spz-render> 10863</div> 10864 </div> 10865 <div id="shoplaza-section-footer" class="shoplaza-section" data-section-id="footer" data-section-type="footer" data-section-style="expand"><style> 10866 [data-section-id="footer"] { 10867 color: var(--color-footer-text); 10868 background-color: var(--color-footer-bg); 10869 } 10870 .footer__newsletter, 10871 .footer_blocks, 10872 .footer__additional { 10873 border-top: 1px solid var(--color-footer-border); 10874 } 10875</style> 10876<style> 10877 .footer__newsletter{ 10878 color: var(--color-newsletter-text); 10879 background-color: var(--color-body-bg); 10880 } 10881 .footer__newsletter__desc{ 10882 margin: 0 0 20px 0; 10883 } 10884 .footer__newsletter__input{ 10885 width: 100%; 10886 height: 42px; 10887 background-color: var(--color-newsletter-bg); 10888 border: 1px solid var(--color-newsletter-border); 10889 border-right-width: 0px; 10890 border-radius: 0 ; 10891 } 10892 .footer__newsletter__input:focus{ 10893 border-color: var(--color-newsletter-text); 10894 } 10895 .footer__newsletter__input::-webkit-input-placeholder { 10896 color: var(--color-newsletter-text); 10897 } 10898 .footer__newsletter__btn{ 10899 height: 42px; 10900 padding: 0 18px; 10901 color: var(--color-newsletter-btn-text); 10902 background-color: var(--color-newsletter-btn-bg); 10903 border-radius: 0 ; 10904 } 10905 @keyframes footer_newsletter_tip_hide { 10906 from { 10907 visibility: visible; 10908 } 10909 to { 10910 visibility: hidden; 10911 } 10912 } 10913 .footer__newsletter__error-tip{ 10914 height: auto !important; 10915 width: 100%; 10916 position: absolute; 10917 bottom: calc(100% + 6px); 10918 left: 0; 10919 padding: 16px 20px; 10920 background-color: white; 10921 border-radius: 4px; 10922 box-shadow: 0 0 8px rgba(195,195,195,0.50); 10923 font-size: var(--type-text-font-size); 10924 line-height: 1.3; 10925 color: var(--color-newsletter-text); 10926 } 10927 .footer__newsletter__error-tip:after{ 10928 content: ''; 10929 position: absolute; 10930 left: 20px; 10931 bottom: -12px; 10932 width: 0; 10933 height: 0; 10934 border: 6px solid transparent; 10935 border-top-color: white; 10936 } 10937 .footer__newsletter__error-tip:not(.hidden), .footer__newsletter__error-tip:not([hidden]){ 10938 visibility: hidden; 10939 animation: footer_newsletter_tip_hide 5000ms; 10940 } 10941 .footer__newsletter__success-tip{ 10942 display: none; 10943 align-items: center; 10944 min-height: 50px; 10945 padding: 6px 12px; 10946 color: #56AD6A; 10947 background: #ECFEF0; 10948 border: 1px solid #56AD6A; 10949 } 10950 .footer__newsletter__form.spz-form-submit-success .footer__newsletter__success-tip{ 10951 display: flex; 10952 } 10953 .footer__newsletter__form.spz-form-submit-success .footer__newsletter__input, 10954 .footer__newsletter__form.spz-form-submit-success .footer__newsletter__btn{ 10955 display: none; 10956 } 10957 @media (min-width: 960px) { 10958 .footer__newsletter__desc{ 10959 margin: 0 40px 0 0; 10960 } 10961 .footer__newsletter__input{ 10962 width: 200px; 10963 height: 50px; 10964 } 10965 .footer__newsletter__btn{ 10966 height: 50px; 10967 } 10968 .footer__newsletter__success-tip{ 10969 max-width: 568px; 10970 } 10971 } 10972 </style> 10973 <div class="footer__newsletter"> 10974 <div class="page-container lg:flex lg:items-center lg:justify-center py-8 md:px-8"> 10975 <p class="footer__newsletter__desc text-center body-plus-2 lg:body-plus-4">Subscribe today to hear first about our sales</p> 10976 <form 10977 id="footer__newsletter__form" 10978 class="footer__newsletter__form type-text-font-family relative flex items-center md:w-full text-base" 10979 action-xhr="/api/customers/newsletters" 10980 method="POST" 10981 custom-validation="show-first-on-submit" 10982 @submitError="footer__newsletter__error-ajax.rerender(data=event);footer__newsletter__error-ajax.toggleClass(class='hidden', force=false);" 10983 > 10984 <input 10985 class="footer__newsletter__input clear flex-1 block lg:w-full px-4 lg:px-3" 10986 id="footer__newsletter__input" 10987 type="text" 10988 name="email" 10989 placeholder="Enter your email" 10990 required 10991 pattern="([A-Za-z0-9_\-.])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,4})" 10992 @input-debounced="footer__newsletter__error-ajax.toggleClass(class='hidden', force=true);" 10993 > 10994 <button
10995 class="footer__newsletter__btn type-text-font-family m-0 flex items-center border-none leading-none" 10996 type="submit" 10997 > 10998 <span class="md:hidden">Subscribe</span> 10999 <svg class="lg:hidden" width="20" height="6" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path opacity=".01" fill="currentColor" d="M0 0h20v6H0z"/><path fill="currentColor" d="M0 2h14v2H0z"/><path fill-rule="evenodd" clip-rule="evenodd" d="m20 3-6 3V0l6 3Z" fill="currentColor"/></svg> 11000 </button> 11001 <div class="footer__newsletter__error-tip" validation-for="footer__newsletter__input" visible-when-invalid="patternMismatch" hidden> 11002 Please enter a valid email address. 11003 </div> 11004 <div class="footer__newsletter__error-tip" validation-for="footer__newsletter__input" visible-when-invalid="valueMissing" hidden> 11005 Please enter your email address. 11006 </div> 11007 <spz-render id="footer__newsletter__error-ajax" class="footer__newsletter__error-tip hidden i-spzhtml-layout-container" layout="container" manual i-spzhtml-layout="container"> 11008 <template> 11009 <div spz-if="${data.errors && data.errors.length > 0}"> 11010 ${data.errors && data.errors[0]} 11011 </div> 11012 </template> 11013 </spz-render> 11014 <div class="footer__newsletter__success-tip flex-shrink-0 body-plus-2"> 11015 Thanks for subscribing 11016 </div> 11017 </form> 11018 </div> 11019 </div> 11020<style> 11021 .footer__additional__item{ 11022 padding-top: 12px 11023 } 11024 .footer__additional__item + .footer__additional__item{ 11025 padding-left: 20px; 11026 } 11027 .footer__copyright a[href] { 11028 color: inherit; 11029 text-decoration: none; 11030 } 11031 </style> 11032 11033 <div class="footer__additional pt-5 pb-8 lg:pt-6 lg:pb-8"> 11034 <div class="page-container body-minus-1 flex flex-wrap justify-center"> 11035 <span class="footer__additional__item">© <time datetime="2026">2026</time> nisartmacka</span> 11036 <div style="display:flex;justify-content: center;"> 11037<img width="300px;" src="https://img-va.myshopline.com/image/store/1701329317116/ocean-Logo.png?w=1377&h=127"> </div> 11038 </div> 11039 </div> 11040</div> 11041 <div id="shoplaza-section-cart_drawer" class="shoplaza-section" data-section-id="cart_drawer" data-section-type="cart_drawer" data-section-style=""> 11042 <style> 11043 #cart-drawer { 11044 width: 0; 11045 height: 0; 11046 } 11047 11048 #cart-drawer[loading] ~ *, 11049 #cart-drawer[data-empty][finish] ~ *, 11050 #cart-drawer:not([data-empty])[finish] ~ .cart-empty { 11051 display: none; 11052 } 11053 11054 #cart-drawer[loading] ~ .cart-drawer-loading { 11055 display: var(--loading-show); 11056 } 11057 11058 #cart-drawer:not([loading]) ~ .cart-drawer-loading { 11059 display: none !important; 11060 } 11061 11062 #cart-drawer[data-empty][finish] ~ .cart-empty { 11063 display: block; 11064 } 11065 11066 .cart-drawer-loading { 11067 padding-top: 50%; 11068 } 11069 11070 .cart-drawer-loading .loading-bounce { 11071 border-bottom-color: var(--color-body-text); 11072 } 11073 11074 #cart-drawer-modal { 11075 height: 100vh; 11076 } 11077 11078 #cart-drawer-modal, 11079 .cart-drawer-summary-sticky-render { 11080 width: 84.62%; 11081 max-width: 84.62%; 11082 } 11083 11084 .cart-drawer-header { 11085 padding: 12px 16px; 11086 border-bottom: 1px solid #E6E6E6; 11087 } 11088 11089 .cart-drawer-title { 11090 line-height: 1.1667; 11091 font-size: calc(var(--type-heading-font-size) * .8); 11092 } 11093 11094 .cart-drawer-item-image { 11095 flex-shrink: 0; 11096 width: 23.49%; 11097 } 11098 11099 .cart-drawer-item-delete-btn::before { 11100 content: ''; 11101 position: absolute; 11102 top: -8px; 11103 left: -8px; 11104 right: -8px; 11105 bottom: -8px; 11106 } 11107 11108 .cart-drawer-item-qty-container spz-quantity { 11109 width: 81px; 11110 } 11111 11112 .cart-drawer-item-qty-container spz-quantity .i-spzhtml-quantity-number-decrease[disabled] { 11113 cursor: pointer; 11114 } 11115 11116 .cart-drawer-item-qty-container spz-quantity span[role="button"] { 11117 padding: 6px; 11118 } 11119 11120 .cart-drawer-item-qty-container spz-quantity input[type="number"] { 11121 width: 25px; 11122 } 11123 11124 .cart-drawer-item-text { 11125 color: #FF3F02; 11126 } 11127 11128 .cart-drawer-countdown-wrapper { 11129 margin: 0 -16px; 11130 } 11131 11132 .cart_free_shipping ~ .cart-drawer-summary { 11133 margin-top: 10px; 11134 } 11135 11136 .cart-drawer-summary { 11137 padding: 8px; 11138 border-radius: 2px; 11139 background-color: #F6F6F6; 11140 } 11141 11142 .cart-drawer-summary-discount-btn { 11143 display: flex; 11144 align-items: center; 11145 padding: 4px 8px; 11146 margin-top: 4px; 11147 color: #F16515; 11148 border-radius: 100px; 11149 background-color: #fff; 11150 cursor: pointer; 11151 } 11152 11153 .cart-drawer-summary-discount-btn span { 11154 margin-right: 2px; 11155 } 11156 11157 html[dir="rtl"] .cart-drawer-summary-discount-btn span { 11158 margin-left: 2px; 11159 margin-right: 0; 11160 } 11161 11162 .cart-drawer-summary-discount-btn svg { 11163 transition: transform .2s cubic-bezier(0.445, 0.05, 0.55, 0.95); 11164 } 11165 11166 .cart-drawer-summary-discount-list.open .cart-drawer-summary-discount-btn svg { 11167 transform: rotate(-180deg); 11168 } 11169 11170 .cart-drawer-summary-discount-list ul { 11171 display: none; 11172 } 11173 11174 .cart-drawer-summary-discount-list.open ul { 11175 display: block; 11176 } 11177 11178 .cart-drawer-invalid-msg { 11179 color: #FF3F02; 11180 } 11181 11182 .cart-drawer-checkout-btn { 11183 height: 46px; 11184 padding: 12px 0; 11185 } 11186 11187 .cart-drawer-checkout-btn > *, 11188 .cart-drawer-checkout-btn[loading] { 11189 pointer-events: none; 11190 } 11191 11192 .cart-drawer-checkout-btn[loading] > span, 11193 .cart-drawer-checkout-btn:not([loading]) > .loading { 11194 display: none; 11195 } 11196 11197 .cart-drawer-checkout-btn[loading] > .loading { 11198 opacity: 1; 11199 } 11200 11201 .cart-drawer-summary-sticky-render { 11202 z-index: calc(var(--z-index-modal) + 1); 11203 position: fixed; 11204 right: 0; 11205 bottom: 0; 11206 width: 100%; 11207 background-color: #fff; 11208 box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08); 11209 opacity: 0; 11210 transform: translateY(100%); 11211 } 11212 11213 .cart-drawer-summary-sticky { 11214 padding: 16px; 11215 } 11216 11217 .cart-drawer-summary-sticky-render { 11218 pointer-events: none; 11219 } 11220 11221 .cart-drawer-summary-sticky-render:not(.open), 11222 .cart-drawer-summary-sticky-render:not(.visible) { 11223 display: none; 11224 } 11225
11226 .cart-drawer-summary-sticky-render.visible.open { 11227 pointer-events: auto; 11228 animation: sticky-bottom-show .4s cubic-bezier(0.445, 0.05, 0.55, 0.95) forwards; 11229 } 11230 11231 @keyframes sticky-bottom-show { 11232 0% { opacity: 1;} 11233 100% { transform: translateY(0); opacity: 1; } 11234 } 11235 11236 .cart-drawer-summary-sticky-compensation-container.visible { 11237 height: var(--cart-drawer-summary-sticky-height); 11238 } 11239 11240 .cart-drawer-summary-sticky .cart-drawer-summary-discount-btn { 11241 background-color: #F6F6F6; 11242 } 11243 11244 .cart-drawer-empty-container { 11245 padding: 80px 16px; 11246 } 11247 11248 .cart-drawer-empty-btn { 11249 height: 46px; 11250 } 11251 11252 @media (max-width: 959.98px) { 11253 #cart-drawer-modal .ios_safari_bottom_bar { 11254 display: none; 11255 } 11256 11257 #cart-drawer-modal.deepen ~ .i-spzhtml-sidebar-mask { 11258 background-color: var(--color-body-text-70); 11259 } 11260 11261 .cart-drawer-summary-sticky-modal { 11262 z-index: calc(var(--z-index-modal) + 1); 11263 width: 100% !important; 11264 max-height: 85vh !important; 11265 display: flex; 11266 align-items: flex-end; 11267 justify-content: flex-end; 11268 pointer-events: none; 11269 } 11270 11271 .cart-drawer-summary-sticky-modal .ios_safari_bottom_bar { 11272 display: none; 11273 } 11274 11275 .cart-drawer-summary-sticky-modal-inner { 11276 width: 100%; 11277 padding: 8px 16px 16px; 11278 border-radius: 2px; 11279 background-color: #fff; 11280 box-shadow: 0 -8px 20px 0 rgba(34, 34, 34, .08); 11281 pointer-events: auto; 11282 } 11283 11284 .cart-drawer-summary-sticky-modal-close { 11285 margin-right: -8px; 11286 } 11287 11288 html[dir="rtl"] .cart-drawer-summary-sticky-modal-close { 11289 margin-left: -8px; 11290 margin-right: 0; 11291 } 11292 11293 .cart-drawer-checkout-btn-mobile { 11294 flex-shrink: 0; 11295 width: 40.268%; 11296 margin-top: 0; 11297 } 11298 11299 .cart-drawer-summary-sticky .cart-drawer-summary-discount-btn svg { 11300 transform: rotate(0) !important; 11301 } 11302 11303 .cart-drawer-summary-sticky-modal ~ .i-spzhtml-sidebar-mask { 11304 top: unset !important; 11305 bottom: 0; 11306 } 11307 } 11308 11309 @media (min-width: 960px) { 11310 #cart-drawer-modal, 11311 .cart-drawer-summary-sticky-render { 11312 width: 468px; 11313 max-width: 468px; 11314 } 11315 11316 .cart-drawer-header { 11317 padding: 22px 16px; 11318 } 11319 11320 .cart-drawer-item-image { 11321 width: 32.11%; 11322 } 11323 11324 .cart-drawer-item-qty-container spz-quantity { 11325 width: 93px; 11326 } 11327 11328 .cart-drawer-item-qty-container spz-quantity input[type="number"] { 11329 width: 37px; 11330 } 11331 } 11332</style> 11333 <spz-sidebar class="flex flex-col bg-white i-spzhtml-layout-nodisplay" id="cart-drawer-modal" layout="nodisplay" side="right" hidden="" @open="cart-drawer-summary-sticky-render.toggleClass(class='open', force=true);cart-drawer-summary-sticky-observer.restart()" @beforeclose="cart-drawer-summary-sticky-render.toggleClass(class='open', force=false);cart-drawer-summary-sticky-modal.close();" disable-unmount style="display: none" i-spzhtml-layout="nodisplay"> 11334 <header class="cart-drawer-header flex-shrink-0 flex items-center justify-between"> 11335 <h4 class="cart-drawer-title m-0 type-heading-font-family color-heading"> 11336 Cart 11337 </h4> 11338 <button class="clear flex p-2 cursor-pointer" @tap="cart-drawer-modal.close();" type="button"> 11339 <svg class="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M1.93 17.147a.3.3 0 0 0 0 .425l.905.904a.3.3 0 0 0 .424 0l6.652-6.653 6.704 6.704a.3.3 0 0 0 .424 0l.904-.904a.3.3 0 0 0 0-.425l-6.703-6.703 6.652-6.653a.3.3 0 0 0 0-.424l-.904-.904a.3.3 0 0 0-.424 0L9.91 9.166 3.31 2.565a.3.3 0 0 0-.424 0l-.905.904a.3.3 0 0 0 0 .424l6.602 6.602-6.653 6.652Z" clip-rule="evenodd"/></svg> 11340 </button> 11341 </header> 11342 11343 <spz-cart id="cart-drawer" layout="container" empty-item="cart.line_items" @mounted="cart-drawer-subtotal-render.rerender(data=event.cart);cart-drawer-summary-sticky-render.rerender(data=event.cart);cart-drawer-items-render.rerender(data=event.cart);" @cartchange="cart-drawer-items-render.rerender(data=event.cart);cart-drawer-subtotal-render.rerender(data=event.cart);cart-drawer-summary-sticky-render.rerender(data=event.cart);" class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 11344 <template><div></div></template> 11345 </spz-cart> 11346 <spz-event target-id="cart-drawer" target-api="render" event-name="dj.addToCart" layout="logic" class="i-spzhtml-layout-logic" i-spzhtml-layout="logic"></spz-event> 11347 11348 <div class="loading items-center justify-center cart-drawer-loading" role="loading" show > 11349 <div class="loading-bounce"></div> 11350</div> 11351 <div class="cart-empty flex flex-col items-center text-center cart-drawer-empty-container" > 11352 <svg class="color-body-70" xmlns="http://www.w3.org/2000/svg" width="80" height="70" fill="none">
11352<path fill="currentColor" fill-opacity=".7" d="M41.867 16.76c.64 0 1.168.486 1.231 1.11l.007.127v17.334a1.238 1.238 0 0 1-2.47.126l-.006-.126V17.997c0-.683.554-1.238 1.238-1.238ZM55.183 17.87a1.238 1.238 0 0 0-2.47.127v17.334l.007.126a1.238 1.238 0 0 0 2.47-.126V17.997l-.007-.126ZM29.081 16.782c.63-.122 1.24.255 1.422.856l.03.123 3.37 17.333a1.238 1.238 0 0 1-2.4.596l-.03-.123-3.37-17.333a1.238 1.238 0 0 1 .978-1.452ZM65.503 17.638a1.238 1.238 0 0 1 2.4.596l-3.37 17.333-.03.123a1.238 1.238 0 0 1-2.4-.596l3.37-17.333.03-.123Z"/><path fill="currentColor" fill-opacity=".7" fill-rule="evenodd" d="M17.622 3.07A3.601 3.601 0 0 0 14.13.355H1.865l-.68.006C.56.425.627.951.627 1.593c0 .684 0 1.238.684 1.238H14.13l.123.007c.484.052.885.413.981.9l7.424 37.368a6.136 6.136 0 0 0-3.525 5.555 6.135 6.135 0 0 0 6.136 6.136h46.229l.126-.007a1.238 1.238 0 0 0-.126-2.47h-46.23l-.194-.005a3.659 3.659 0 0 1-3.465-3.654 3.659 3.659 0 0 1 3.66-3.66h45.533a3.097 3.097 0 0 0 3.041-2.51l5.475-28.477a3.095 3.095 0 0 0-3.038-3.68H18.672l-1.009-5.078-.041-.186Zm1.736 7.74 5.715 29.714h45.73a.62.62 0 0 0 .608-.502l5.475-28.476a.619.619 0 0 0-.606-.736H19.358ZM20.643 62.074a7.57 7.57 0 0 1 7.571-7.57 7.57 7.57 0 1 1-7.57 7.57Zm12.666 0a5.094 5.094 0 1 0-10.189.002 5.094 5.094 0 0 0 10.189-.002ZM62.028 54.504a7.57 7.57 0 1 0 0 15.142 7.57 7.57 0 0 0 0-15.142Zm0 2.477a5.094 5.094 0 1 1 0 10.188 5.094 5.094 0 0 1 0-10.188Z" clip-rule="evenodd"/></svg> 11353 <div class="mt-5 color-body-70 font-medium body-plus-4 leading-1.2">Your shopping bag is empty</div> 11354 <button class="cart-empty-btn button-primary clear flex items-center justify-center text-center mt-5 cart-drawer-empty-btn w-full" data-track="cart-continue-shopping" @tap="cart-drawer-modal.close();" type="button"> 11355 Continue shopping 11356 </button> 11357</div> 11358 11359 <div class="cart-drawer-content flex-1 overflow-y-auto px-4" id="cart-drawer-content"> 11360 <spz-render id="cart-drawer-items-render" layout="container" manual class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 11361 <template> 11362 <div> 11363 <ul class="clear overflow-hidden" spz-if="${!!(data.line_items && data.line_items.length > 0)}"> 11364 <li class="flex items-start py-4" spz-for="item in data.line_items" key="item.id"> 11365 <a 11366 class="cart-drawer-item-image" 11367 spz-href="${item.product_url}?variant=${item.variant_id}" 11368 data-track-type="image" 11369 data-track-product_id="${item.variant_id}" 11370 data-track="click" 11371 data-track-content="product_link" 11372 data-track-product-id="${item.product_id}" 11373 data-track-position="cart" 11374 > 11375 <spz-img 11376 class="rounded-global-fixed overflow-hidden" 11377 width="${item.image.width}" 11378 height="${item.image.height}" 11379 layout="responsive" 11380 src="${item.image.src}" 11381 alt="${item.image.alt}" 11382 object-fit="cover" 11383 auto-fit 11384 ></spz-img> 11385 </a> 11386 11387 <div class="flex-1 px-4"> 11388 <div class=""> 11389 <a 11390 class="product-title-color no-underline leading-1.25 line-clamp-2" 11391 spz-href="${item.product_url}" 11392 data-track="click" 11393 data-track-content="product_link" 11394 data-track-product-id="${item.product_id}" 11395 data-track-position="cart" 11396 > 11397 ${item.product_title} 11398 </a> 11399 <ul class="clear break-words color-body-70 leading-1.25 mt-1"> 11400 <li>${item.options.map(option => option.value).join('/')}</li> 11401 <li class="mt-0.5" spz-for="propertie in item.parsedProperties"> 11402 ${propertie.name}/${propertie.isImage ? `<a class="no-underline text-inherit" spz-href="${propertie.value}" target="_blank" >View image</a>` : propertie.value} 11403 </li> 11404 </ul> 11405 <div class="discount_gift_content mt-1 lg:mt-2" spz-if="${!!item.is_free_gift}"> 11406 <svg class="" width="12" height="12" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.236 2.684c0-.407.381-.829.978-.829.58 0 1.232.481 1.232 1.29v.368H4.98c-.445 0-.915-.006-1.275-.138a.74.74 0 0 1-.343-.228c-.063-.083-.125-.22-.125-.463Zm3.783.83h-.467v-.37c0-.808.652-1.289 1.232-1.289.597 0 .978.422.978.83 0 .242-.062.378-.125.462a.74.74 0 0 1-.344.227c-.359.133-.828.14-1.274.14Zm2.848-.83c0 .309-.057.586-.169.83h.998a.829.829 0 0 1 .83.828v1.382H.472V4.342a.829.829 0 0 1 .829-.829H2.3a1.96 1.96 0 0 1-.17-.829C2.13 1.562 3.117.75 4.215.75c.644 0 1.325.302 1.785.845A2.387 2.387 0 0 1 7.784.75c1.099 0 2.083.812 2.083 1.934Zm-4.42 8.566V6.829H1.024v3.592c0 .459.37.829.83.829h3.591Zm1.105 0V6.829h4.42v3.592c0 .459-.37.829-.828.829H6.552Z" fill="#EB391B"/></svg> 11407 <div class="discount__gift_lan">Free gift</div> 11408</div> 11409 11410 <div spz-if="${item.mixed_wholesale && false}"> 11411 <style> 11412 .mixed_wholesale_label { 11413 padding: 2px 4px; 11414 } 11415 11416 .mixed_wholesale_tooltip .i-spzhtml-tooltip-arrow:before, 11417 .mixed_wholesale_tooltip .i-spzhtml-tooltip-inner { 11418 background: var(--color-body-bg); 11419 color: var(--color-body-text); 11420 } 11421 11422 .mixed_wholesale_tooltip { 11423 max-width: 100%; 11424 border-radius: 4px; 11425 box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.1), 0px 2px 10px rgba(0, 0, 0, 0.1); 11426 } 11427 11428 @media (min-width: 960px) { 11429 .mixed_wholesale_tooltip { 11430 max-width: 450px; 11431 } 11432 } 11433</style> 11434<div class="mt-1 mixed_wholesale_label inline-flex color-custom-label-text bg-custom-label text-xs rounded" id="mixed-${item.id}"> 11435 Mixed Lot 11436</div> 11437<spz-tooltip layout="logic" content="You can enjoy the wholesale price when you add up to {{count}} pieces of current goods and any goods that support "Mixed Lot" in the store." interact="hover" for="mixed-${item.id}" placement="bottom" overlay-class="mixed_wholesale_tooltip"> 11438</spz-tooltip> 11439 </div> 11440</div> 11441 <div class="flex-shrink-0 flex flex-col cart-drawer-item-qty-container mt-3"> 11442 <div class="break-words" spz-if="${!!item.disabled}"> 11443 *${item.quantity} 11444 </div> 11445 <spz-quantity 11446 spz-else 11447 icon-class="clear flex items-center justify-center flex-shrink-0 h-full w-7" 11448 input-class="clear flex-1 h-full text-center body-base color-body-text" 11449 name="quantity" 11450 value="${item.quantity}" 11451 min="1" 11452 max="${item.available_quantity}" 11453 height="28" 11454 layout="flex-item" 11455 @quantityChange="cart-drawer.update(value=event.value,id='${item.id}');" 11456 @quantityChangeUnderflow="cart-drawer.delete(id='${item.id}');" 11457 > 11458 <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="decrease"><path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"/></svg> 11459 <svg class="" width="13" height="13" xmlns="http://www.w3.org/2000/svg" role="increase"><path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"/></svg> 11460 </spz-quantity> 11461
11462 <div class="cart-drawer-item-text mt-1" spz-if="${!!item.item_text}">${item.item_text}</div> 11463</div> 11464 <div class="flex items-center justify-end flex-row-reverse mt-3 leading-1.25"> 11465 <spz-currency class="${!!item.final_line_price && (+item.final_line_price < +item.line_price) ? 'color-compare-price line-through ml-1 body-minus-2' : 'color-price font-medium '}" layout="container" value="${item.line_price}"></spz-currency> 11466 <spz-currency class="color-price font-medium " spz-if="${!!item.final_line_price && (+item.final_line_price < +item.line_price)}" layout="container" value="${item.final_line_price}"></spz-currency> 11467</div> 11468 <div class="flex items-start flex-wrap mt-1 body-minus-2 leading-1.25 color-body-60" spz-for="discount_item in item.discount_applications"> 11469 <div class="flex"> 11470 <spz-img 11471 spz-if="${!!discount_item.icon}" 11472 class="flex-shrink-0 mr-1 mt-0.5" 11473 src="${discount_item.icon}" 11474 layout="fixed" 11475 width="12" 11476 height="12" 11477 alt="item.image.alt || item.product_title" 11478 object-fit="contain" 11479 ></spz-img> 11480 <span>${discount_item.title}</span> 11481 </div> 11482 <span spz-if="${discount_item.discount_amount > 0 || discount_item.amount > 0}" class="flex-shrink-0">(-<spz-currency style="display: inline-block;" layout="container" value="${discount_item.discount_amount || discount_item.amount}"></spz-currency>)</span> 11483</div> 11484 </div> 11485 11486 <button class="clear flex color-body-70 flex-shrink-0 cart-drawer-item-delete-btn relative" type="button" @tap="cart-drawer.delete(id=${item.id})"> 11487 <svg 11488 class="icon-delete " 11489 xmlns="http://www.w3.org/2000/svg" 11490 width="16" 11491 height="17" 11492 viewBox="0 0 16 17" 11493 fill="none" 11494> 11495 <path d="M6.375 2.65625C6.375 2.4822 6.44414 2.31528 6.56721 2.19221C6.69028 2.06914 6.8572 2 7.03125 2H9.21875C9.3928 2 9.55972 2.06914 9.68279 2.19221C9.80586 2.31528 9.875 2.4822 9.875 2.65625C9.875 2.8303 9.80586 2.99722 9.68279 3.12029C9.55972 3.24336 9.3928 3.3125 9.21875 3.3125H7.03125C6.8572 3.3125 6.69028 3.24336 6.56721 3.12029C6.44414 2.99722 6.375 2.8303 6.375 2.65625ZM2 5.28125C2 5.1072 2.06914 4.94028 2.19221 4.81721C2.31528 4.69414 2.4822 4.625 2.65625 4.625H13.5938C13.7678 4.625 13.9347 4.69414 14.0578 4.81721C14.1809 4.94028 14.25 5.1072 14.25 5.28125C14.25 5.4553 14.1809 5.62222 14.0578 5.74529C13.9347 5.86836 13.7678 5.9375 13.5938 5.9375H2.65625C2.4822 5.9375 2.31528 5.86836 2.19221 5.74529C2.06914 5.62222 2 5.4553 2 5.28125ZM7.03125 8.125C6.8572 8.125 6.69028 8.19414 6.56721 8.31721C6.44414 8.44028 6.375 8.6072 6.375 8.78125V10.9688C6.375 11.1428 6.44414 11.3097 6.56721 11.4328C6.69028 11.5559 6.8572 11.625 7.03125 11.625C7.2053 11.625 7.37222 11.5559 7.49529 11.4328C7.61836 11.3097 7.6875 11.1428 7.6875 10.9688V8.78125C7.6875 8.6072 7.61836 8.44028 7.49529 8.31721C7.37222 8.19414 7.2053 8.125 7.03125 8.125ZM8.5625 8.78125C8.5625 8.6072 8.63164 8.44028 8.75471 8.31721C8.87778 8.19414 9.0447 8.125 9.21875 8.125C9.3928 8.125 9.55972 8.19414 9.68279 8.31721C9.80586 8.44028 9.875 8.6072 9.875 8.78125V10.9688C9.875 11.1428 9.80586 11.3097 9.68279 11.4328C9.55972 11.5559 9.3928 11.625 9.21875 11.625C9.0447 11.625 8.87778 11.5559 8.75471 11.4328C8.63164 11.3097 8.5625 11.1428 8.5625 10.9688V8.78125ZM4.1875 7.03125C4.1875 6.8572 4.11836 6.69028 3.99529 6.56721C3.87222 6.44414 3.7053 6.375 3.53125 6.375C3.3572 6.375 3.19028 6.44414 3.06721 6.56721C2.94414 6.69028 2.875 6.8572 2.875 7.03125V13.5938C2.875 14.2319 3.12852 14.844 3.57977 15.2952C4.03103 15.7465 4.64307 16 5.28125 16H10.9688C11.2847 16 11.5976 15.9378 11.8896 15.8168C12.1815 15.6959 12.4468 15.5187 12.6702 15.2952C12.8937 15.0718 13.0709 14.8065 13.1918 14.5146C13.3128 14.2226 13.375 13.9097 13.375 13.5938V7.03125C13.375 6.8572 13.3059 6.69028 13.1828 6.56721C13.0597 6.44414 12.8928 6.375 12.7188 6.375C12.5447 6.375 12.3778 6.44414 12.2547 6.56721C12.1316 6.69028 12.0625 6.8572 12.0625 7.03125V13.5938C12.0625 14.1975 11.5725 14.6875 10.9688 14.6875H5.28125C4.6775 14.6875 4.1875 14.1975 4.1875 13.5938V7.03125Z" fill="currentColor" fill-opacity="0.6"/> 11496</svg> 11497</button> 11498 </li> 11499 </ul> 11500 </div> 11501 </template> 11502</spz-render> 11503 <spz-render id="cart-drawer-subtotal-render" layout="container" manual class="i-spzhtml-layout-container" i-spzhtml-layout="container"> 11504 <template> 11505 <section class="py-4"> 11506 <div class="cart-drawer-summary" id="cart-drawer-summary"> 11507 <div class="flex justify-between font-medium body-plus-2 leading-1.25"> 11508 <span>Total:</span> 11509 <div class="flex items-center"> 11510 <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency> 11511 </div> 11512 </div> 11513 11514 <div class="cart-drawer-summary-discount-list flex flex-col items-end" id="cart-drawer-summary-discount-list" spz-if="${data.total_discount > 0}"> 11515 <div class="cart-drawer-summary-discount-btn" spz-if="${data.discount_applications && data.discount_applications.length <= 0}">
11516 <span class="leading-1.2 body-minus-2"> 11517 ${function() { 11518 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 11519 if (textArray.length > 0 && textArray.length < 2) { 11520 textArray.push(''); 11521 } 11522 return textArray.map((text, index) => { 11523 if (index == 0) { 11524 return `<span>${text}</span>`; 11525 } 11526 11527 return ` 11528 <span class="notranslate whitespace-nowrap"> 11529 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 11530 </span> 11531 <span>${text}</span> 11532 `; 11533 }).join(''); 11534}()} 11535 </span> 11536 </div> 11537 <div class="cart-drawer-summary-discount-btn" @tap="cart-drawer-summary-discount-list.toggleClass(class='open');cart-drawer-summary-sticky-discount-list.toggleClass(class='open');" spz-else> 11538 <span class="leading-1.2 body-minus-2"> 11539 ${function() { 11540 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 11541 if (textArray.length > 0 && textArray.length < 2) { 11542 textArray.push(''); 11543 } 11544 return textArray.map((text, index) => { 11545 if (index == 0) { 11546 return `<span>${text}</span>`; 11547 } 11548 11549 return ` 11550 <span class="notranslate whitespace-nowrap"> 11551 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 11552 </span> 11553 <span>${text}</span> 11554 `; 11555 }).join(''); 11556}()} 11557 </span> 11558 <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg> 11559 </div> 11560 11561 <ul class="clear w-full mt-1 leading-1.25 color-body-70" spz-if="${data.discount_applications && data.discount_applications.length > 0}"> 11562 <li class="flex items-center justify-between ${index > 0 ? 'mt-2' : ''}" spz-for="(discount_application,index) in data.discount_applications"> 11563 <span>${discount_application.title}:</span> 11564 <span class="notranslate ml-2 whitespace-nowrap"> 11565 -<spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency> 11566 </span> 11567 </li> 11568 </ul> 11569 </div> 11570 11571 <div class="cart-drawer-invalid-msg mt-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div> 11572 11573 <button 11574 type="button" 11575 class="cart-drawer-checkout-btn button-primary relative flex-shrink-0 w-full mt-5 body-plus-2 leading-1.2" 11576 data-track="checkout-submit,click" 11577 data-track-content="checkout" 11578 data-track-source="checkout" 11579 @tap="cart-drawer.checkout;" 11580 > 11581 <span>Check out</span> 11582 <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show > 11583 <div class="loading-bounce"></div> 11584</div> 11585 </button> 11586 11587 <div class="mt-2 color-body-70 body-minus-2 text-center">Taxes and shipping calculated at checkout</div> 11588</div> 11589 11590 <spz-observer 11591 layout="logic" 11592 id="cart-drawer-summary-sticky-observer" 11593 target="cart-drawer-subtotal-render" 11594 root-container="cart-drawer-content" 11595 @visible="cart-drawer-summary-sticky-render.toggleClass(class='visible', force=false);cart-drawer-summary-sticky-compensation-container.toggleClass(class='visible', force=false)" 11596 @invisible="cart-drawer-summary-sticky-render.toggleClass(class='visible', force=true);cart-drawer-summary-sticky-compensation-container.toggleClass(class='visible', force=true)" 11597 ></spz-observer> 11598 <spz-observer 11599 layout="logic" 11600 target="cart-drawer-content" 11601 @childUpdated="cart-drawer-summary-sticky-observer.restart" 11602 ></spz-observer> 11603 </section> 11604 </template> 11605</spz-render> 11606 </div> 11607 11608 <div class="cart-drawer-summary-sticky-compensation-container" id="cart-drawer-summary-sticky-compensation-container"></div> 11609 </spz-sidebar> 11610 11611 <spz-render class="cart-drawer-summary-sticky-render i-spzhtml-layout-container" id="cart-drawer-summary-sticky-render" layout="container" manual i-spzhtml-layout="container"> 11612 <template> 11613 <div class="cart-drawer-summary-sticky ${(data.line_items && data.line_items.length) == 0 ? 'hidden' : ''}"> 11614 <div class="cart-drawer-invalid-msg lg:hidden mb-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div> 11615 11616 <div> 11617 <div class="md:flex md:items-center md:justify-between"> 11618 <div class="md:flex md:flex-col md:items-start"> 11619 <div class="md:flex md:items-center md:flex-wrap"> 11620 <div class="flex font-medium body-plus-2 leading-1.25 lg:items-center lg:justify-between">
11621 <span class="md:color-body-70">Total: </span> 11622 <div class="flex items-center"> 11623 <spz-currency container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency> 11624 </div> 11625 </div> 11626 </div> 11627 11628 <div class="cart-drawer-summary-discount-list flex flex-col items-end" id="cart-drawer-summary-sticky-discount-list" spz-if="${data.total_discount > 0}"> 11629 <div class="cart-drawer-summary-discount-btn" spz-if="${!!(data.discount_applications && data.discount_applications.length <= 0)}"> 11630 <span class="leading-1.2 body-minus-2"> 11631 ${function() { 11632 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 11633 if (textArray.length > 0 && textArray.length < 2) { 11634 textArray.push(''); 11635 } 11636 return textArray.map((text, index) => { 11637 if (index == 0) { 11638 return `<span>${text}</span>`; 11639 } 11640 11641 return ` 11642 <span class="notranslate whitespace-nowrap"> 11643 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 11644 </span> 11645 <span>${text}</span> 11646 `; 11647 }).join(''); 11648}()} 11649 </span> 11650 </div> 11651 <div spz-else> 11652 <div class="cart-drawer-summary-discount-btn md:hidden" @tap="cart-drawer-summary-sticky-discount-list.toggleClass(class='open');cart-drawer-summary-discount-list.toggleClass(class='open');" > 11653 <span class="leading-1.2 body-minus-2"> 11654 ${function() { 11655 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 11656 if (textArray.length > 0 && textArray.length < 2) { 11657 textArray.push(''); 11658 } 11659 return textArray.map((text, index) => { 11660 if (index == 0) { 11661 return `<span>${text}</span>`; 11662 } 11663 11664 return ` 11665 <span class="notranslate whitespace-nowrap"> 11666 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 11667 </span> 11668 <span>${text}</span> 11669 `; 11670 }).join(''); 11671}()} 11672 </span> 11673 <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg> 11674 </div> 11675 <div class="cart-drawer-summary-discount-btn lg:hidden" @tap="cart-drawer-summary-sticky-modal.open;"> 11676 <span class="leading-1.2 body-minus-2"> 11677 ${function() { 11678 const textArray = ("Save {{save_amount}}").split(/\{\{\s*save_amount\}\}/); 11679 if (textArray.length > 0 && textArray.length < 2) { 11680 textArray.push(''); 11681 } 11682 return textArray.map((text, index) => { 11683 if (index == 0) { 11684 return `<span>${text}</span>`; 11685 } 11686 11687 return ` 11688 <span class="notranslate whitespace-nowrap"> 11689 <spz-currency class="inline-block" layout="container" value="${data.total_discount}"></spz-currency> 11690 </span> 11691 <span>${text}</span> 11692 `; 11693 }).join(''); 11694}()} 11695 </span> 11696 <svg class="flex-shrink-0" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none"><path fill="currentColor" d="M7.543 11.306a.6.6 0 0 0 .848 0l4.455-4.454a.3.3 0 0 0 0-.425l-.34-.339a.3.3 0 0 0-.424 0l-4.115 4.115-4.115-4.115a.3.3 0 0 0-.425 0l-.34.34a.3.3 0 0 0 0 .424l4.456 4.454Z"/></svg> 11697 </div> 11698 </div> 11699 11700 <ul class="md:hidden clear w-full mt-1 leading-1.25 color-body-70" spz-if="${!!(data.discount_applications && data.discount_applications.length > 0)}"> 11701 <li class="flex items-center justify-between ${index > 0 ? 'mt-2' : ''}" spz-for="(discount_application,index) in data.discount_applications"> 11702 <span>${discount_application.title}:</span> 11703 <span class="notranslate ml-2 whitespace-nowrap"> 11704 -<spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency> 11705 </span> 11706 </li> 11707 </ul> 11708 </div> 11709 </div> 11710 <button 11711 type="button" 11712 class="cart-drawer-checkout-btn cart-drawer-checkout-btn-mobile ml-2 lg:hidden button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2" 11713 data-track="checkout-submit,click" 11714 data-track-content="checkout" 11715 data-track-source="checkout" 11716 @tap="cart-drawer.checkout;" 11717> 11718 <span>Check out</span> 11719 <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show > 11720 <div class="loading-bounce"></div> 11721</div> 11722</button> 11723 </div> 11724 11725 <div class="cart-drawer-invalid-msg md:hidden mt-4" spz-if="${!!data.invalid_msg}">${data.invalid_msg}</div> 11726 11727 <button 11728 type="button" 11729 class="cart-drawer-checkout-btn md:hidden button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2" 11730 data-track="checkout-submit,click" 11731 data-track-content="checkout" 11732 data-track-source="checkout" 11733 @tap="cart-drawer.checkout;" 11734> 11735 <span>Check out</span> 11736 <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show > 11737 <div class="loading-bounce"></div> 11738</div> 11739</button> 11740 11741 <div class="mt-2 color-body-70 text-right lg:text-center">Taxes and shipping calculated at checkout</div> 11742 </div> 11743 11744 <spz-sidebar class="cart-drawer-summary-sticky-modal lg:hidden" id="cart-drawer-summary-sticky-modal" layout="nodisplay" side="bottom" hidden @open="cart-drawer-modal.toggleClass(class='deepen', force=true);" @beforeClose="cart-drawer-modal.toggleClass(class='deepen', force=false);" >
11745 <div class="cart-drawer-summary-sticky-modal-inner relative"> 11746 <div class="flex justify-end"> 11747 <button class="cart-drawer-summary-sticky-modal-close clear flex p-2 cursor-pointer" @tap="cart-drawer-summary-sticky-modal.close();" type="button"> 11748 <svg class="" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="currentColor" fill-rule="evenodd" d="M1.93 17.147a.3.3 0 0 0 0 .425l.905.904a.3.3 0 0 0 .424 0l6.652-6.653 6.704 6.704a.3.3 0 0 0 .424 0l.904-.904a.3.3 0 0 0 0-.425l-6.703-6.703 6.652-6.653a.3.3 0 0 0 0-.424l-.904-.904a.3.3 0 0 0-.424 0L9.91 9.166 3.31 2.565a.3.3 0 0 0-.424 0l-.905.904a.3.3 0 0 0 0 .424l6.602 6.602-6.653 6.652Z" clip-rule="evenodd"/></svg> 11749 </button> 11750 </div> 11751 11752 <ul class="clear w-full mt-3 leading-1.25 color-body-70" spz-if="${!!(data.discount_applications && data.discount_applications.length > 0)}"> 11753 <li class="flex items-center justify-between"> 11754 <span>Subtotal:</span> 11755 <span class="notranslate ml-2 whitespace-nowrap"> 11756 <spz-currency class="inline-block" layout="container" value="${data.line_price}"></spz-currency> 11757 </span> 11758 </li> 11759 <li class="flex items-center justify-between mt-2" spz-for="(discount_application,index) in data.discount_applications"> 11760 <span>${discount_application.title}:</span> 11761 <span class="notranslate ml-2 whitespace-nowrap"> 11762 <span>-</span><spz-currency class="inline-block" layout="container" value="${discount_application.discount_amount}"></spz-currency> 11763 </span> 11764 </li> 11765 </ul> 11766 11767 <div class="flex items-start justify-between mt-2 font-medium body-plus-2 leading-1.25"> 11768 <span>Total:</span> 11769 <div class="flex items-center"> 11770 <spz-currency class="color-price" container-class="plugin__bundle__cart__total-price" layout="container" value="${data.total_price}"></spz-currency> 11771 </div> 11772 </div> 11773 <button 11774 type="button" 11775 class="cart-drawer-checkout-btn mt-4 button-primary relative flex-shrink-0 w-full mt-4 body-plus-2 leading-1.2" 11776 data-track="checkout-submit,click" 11777 data-track-content="checkout" 11778 data-track-source="checkout" 11779 @tap="cart-drawer.checkout;" 11780> 11781 <span>Check out</span> 11782 <div class="loading items-center justify-center absolute inset-0 flex" role="loading" show > 11783 <div class="loading-bounce"></div> 11784</div> 11785</button> 11786 <div class="mt-2 body-minus-2 color-body-70 text-center">Taxes and shipping calculated at checkout</div> 11787 </div> 11788</spz-sidebar> 11789 11790 <spz-script layout="logic" scope="cart-drawer-modal" type="application/javascript" hidden> 11791 const summaryStickyRender = document.querySelector('#cart-drawer-summary-sticky-render'); 11792 if (summaryStickyRender) { 11793 document.body.style.setProperty('--cart-drawer-summary-sticky-height', summaryStickyRender.clientHeight + 'px'); 11794 } 11795 </spz-script> 11796 </div> 11797 </template> 11798</spz-render> 11799</div> 11800 </div> 11801
11801<script type="application/ld+json"> 11802 { 11803 "@context": "http://schema.org", 11804 "@type": "WebSite", 11805 "name": "nisartmacka", 11806 "url": "https://www.nisartmacka.com" 11807 } 11808</script>
11808 11809<div class="theme-toast-wrap lg:page-container flex justify-end"> 11810 <spz-toast class="theme-toast p-4 lg:py-8 lg:px-5 leading-1.2 i-spzhtml-layout-nodisplay" id="theme-toast" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"></spz-toast> 11811 <spz-toast class="theme-toast p-4 lg:py-8 lg:px-5 leading-1.2 flex items-center i-spzhtml-layout-nodisplay" id="theme-toast-success" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"> 11812 <svg class="flex-shrink-0 mr-3" width="18" height="18" xmlns="http://www.w3.org/2000/svg"><path d="M3.088 8.895a.3.3 0 0 0 0 .424l3.608 3.608a.6.6 0 0 0 .848 0l7.85-7.85a.3.3 0 0 0 0-.423l-.567-.566a.3.3 0 0 0-.424 0L7.12 11.37 4.078 8.33a.3.3 0 0 0-.424 0l-.566.566z" fill="currentColor"/></svg> 11813 <span role="content"></span> 11814 </spz-toast> 11815</div> 11816 <div class="add_cart-toast-wrap lg:page-container flex justify-end"> 11817 <spz-toast class="add_cart-toast p-4 lg:py-8 lg:px-5 leading-1.2 flex items-center i-spzhtml-layout-nodisplay" id="add-card-toast-success" layout="nodisplay" hidden="" style="display: none" i-spzhtml-layout="nodisplay"> 11818 <span class="flex justify-between items-center w-full"> 11819 <span role="content"></span> 11820 <a class="toast_view_cart inline-block font-bold text-base leading-1.1 cursor-pointer no-underline" href="/cart">View Cart</a> 11821 </span> 11822 </spz-toast> 11823</div> 11824 <style> 11825 .quick-shop .i-spzhtml-fill-content { 11826 display: flex; 11827 align-items: center; 11828 justify-content: center; 11829 } 11830 11831 .quick-shop-render { 11832 height: auto !important; 11833 width: 100%; 11834 } 11835 11836 .quick-shop-render[loading], 11837 .quick-shop-render[loading] ~ .quick-shop-close-btn { 11838 display: none; 11839 } 11840 11841 .quick-shop-content { 11842 position: relative; 11843 max-height: 86vh; 11844 overflow-y: auto; 11845 box-sizing: border-box; 11846 padding: 28px 24px 36px; 11847 max-width: 86vw; 11848 width: 100%; 11849 background-color: var(--color-body-bg); 11850 overflow-y: auto; 11851 transition: all .2s ease-in-out 11852 } 11853 11854 /* variants */ 11855 .quick-shop__variants_content { 11856 padding: 0; 11857 border: none; 11858 } 11859 11860 .quick-shop__variants_content input[type=radio] { 11861 position: absolute; 11862 left: 0; 11863 right: 0; 11864 opacity: 0; 11865 width: 100%; 11866 height: 100%; 11867 z-index: 10; 11868 border: 0; 11869 margin: 0; 11870 cursor: pointer; 11871 } 11872 11873 .quick-shop-variant-option { 11874 position: relative; 11875 border: 2px solid #E6E6E6; 11876 color: var(--color-body-text-75); 11877 } 11878 11879 .quick-shop-variant-option[data-type="text"] { 11880 display: flex; 11881 align-items: center; 11882 justify-content: center; 11883 min-width: 44px; 11884 } 11885 11886 .quick-shop-variant-option[data-type="image-with-text"] { 11887 min-height: 52px; 11888 } 11889 11890 .quick-shop-variant-option:not([data-type="image"]) { 11891 border: 2px solid #E6E6E6; 11892 } 11893 11894 .quick-shop-variant-option[data-type="image-with-text"] > spz-img { 11895 width: 42px; 11896 height: 42px; 11897 border-radius: 1px; 11898 } 11899 11900 .quick-shop-variant-option[data-type="image"] > spz-img { 11901 width: 52px; 11902 height: 52px; 11903 border-radius: 1px; 11904 } 11905 11906 .quick-shop__variants_content input[type=radio]:checked + .quick-shop-variant-option { 11907 color: var(--color-body-text); 11908 outline: none; 11909 border-color: var(--color-body-text); 11910 } 11911 11912 .quick-shop__variant__select { 11913 min-height: 46px; 11914 line-height: 46px; 11915 padding-right: 46px; 11916 padding-left: 12px; 11917 } 11918 11919 .quick-shop__variant__select-icon { 11920 position: absolute; 11921 display: flex; 11922 top: 50%; 11923 right: 12px; 11924 transform: translateY(-50%) rotate(90deg); 11925 pointer-events: none; 11926 } 11927 11928 .quick-shop-close-btn { 11929 height: 66px; 11930 width: 66px; 11931 cursor: pointer; 11932 opacity: .7; 11933 z-index: 10; 11934 } 11935 11936 #quick-shop-render[loading] ~ .quick-shop-loading { 11937 display: block !important; 11938 } 11939 11940 /* qty */ 11941 .quick-shop-qty { 11942 width: 116px; 11943 } 11944 11945 .quick-shop-qty > .i-spzhtml-fill-content { 11946 display: flex; 11947 align-items: center; 11948 } 11949 11950 .quick-shop-qty-btn { 11951 width: 40px; 11952 height: 100%; 11953 border: 1px solid rgba(230, 230, 230, 1); 11954 } 11955 11956 .quick-shop-qty-btn[disabled] { 11957 background-color: rgba(230, 230, 230, 1); 11958 } 11959 11960 .quick-shop-qty-input { 11961 width: 36px; 11962 } 11963 11964 /* buy button */ 11965 .quick-shop_atc_btn { 11966 height: 52px; 11967 width: 100%; 11968 padding: 0; 11969 font-weight: 600; 11970 outline: 2px solid transparent; 11971 outline-offset: 2px; 11972 } 11973 11974 #quick-shop-body[status="product_unavailable"] [role="addToCart"], 11975 #quick-shop-body[status="soldout"] [role="addToCart"] { 11976 cursor: default; 11977 pointer-events: none; 11978 background-color: rgb(230, 230, 230, 0.5); 11979 color: #9F9F9F; 11980 } 11981 11982 #quick-shop-body[status="product_unavailable"] #quick-shop-btn-price, 11983 #quick-shop-body[status="soldout"] #quick-shop-btn-price, 11984 .quick-shop_atc_btn[loading] [role="content"],
11985 .quick-shop_atc_btn:not([loading]) .loading, 11986 .quick-shop_atc_btn[role="addToCart"][loading] #quick-shop-btn-price { 11987 display: none; 11988 } 11989 11990 .quick-shop_buy_now_btn { 11991 border: 1px solid var(--color-primary-btn-bg); 11992 } 11993 11994 /* wholesale */ 11995 .quick-shop-wholesale { 11996 overflow-y: hidden; 11997 overflow-x: auto; 11998 background: #F9F9FA; 11999 } 12000 12001 .quick-shop-wholesale-item:nth-child(n + 2) { 12002 margin-left: 8px; 12003 } 12004 12005 .quick-shop-wholesale-item .money { 12006 color: var(--color-price-text); 12007 } 12008 12009 .quick-shop-wholesale-item.highlight .money { 12010 color: var(--color-save-price-text) 12011 } 12012 12013 @media (max-width: 959.98px) { 12014 #quick-shop { 12015 padding: 0 18px; 12016 } 12017 12018 #quick-shop > .quick-shop-container{ 12019 width: 100%; 12020 } 12021 } 12022 12023 @media (min-width: 960px) { 12024 .quick-shop-render { 12025 width: 495px; 12026 } 12027 .quick-shop-content { 12028 padding: 32px 24px; 12029 } 12030 } 12031</style> 12032<spz-lightbox class="quick-shop i-spzhtml-layout-nodisplay" id="quick-shop" layout="nodisplay" hidden="" unclose-in-focus style="display: none" i-spzhtml-layout="nodisplay"> 12033 <div class="quick-shop-container"> 12034 <div class="relative"> 12035 <spz-render class="quick-shop-render pointer-events-auto w-full i-spzhtml-layout-container" id="quick-shop-render" items="data" layout="container" @finish="quick-shop-variants.variantsRender(product=event.data.product);quick-shop-body.setProduct(data=event.data.product);quick-shop-btn-price.rerender(data=event.data);" manual i-spzhtml-layout="container"> 12036 <template> 12037 ${function(){ 12038 const productData = data.product; 12039 let product_change_event = '', 12040 mouse_over_event = ' '; 12041 mouse_out_event = ''; 12042 const product_options = productData.options.filter(Boolean) || []; 12043 for (let opt of product_options) { 12044 const nameEscape = opt.name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, '') 12045 product_change_event = product_change_event + `quick-shop-selected-variant-${opt.id}.rerender(data=event.selectedValues.${opt.name});`; 12046 mouse_out_event = mouse_out_event + `@${nameEscape}Mouseout="quick-shop-selected-variant-${opt.id}.rerender(data=event.selectData.${opt.name}, redo=true);"`; 12047 mouse_over_event = mouse_over_event + `@${nameEscape}Mouseover="quick-shop-selected-variant-${opt.id}.rerender(data=event, redo=true);"`; 12048 } 12049 const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; 12050 const statusLan = ((selectedVariant && !selectedVariant.available) || (!selectedVariant && !productData.available)) ? 12051 "Sold out" : 12052 "Add to cart"; 12053 12054 return ` 12055 <div> 12056 <spz-product-form 12057 id="quick-shop-body" 12058 product-unavailable-status 12059 product-id="${productData.id}" 12060 variant-id="${selectedVariant.id}" 12061 layout="container" 12062 @atcSuccess="quick-shop.close;" 12063 @atcError="theme-toast.showToast(content=event.message);" 12064 @productChange="quick-shop-btn-price.rerender(data=event);${product_change_event}" 12065 > 12066 <form> 12067 <div class="quick-shop-content rounded-global-small"> 12068 <div class="quick-shop-inner-content"> 12069 <spz-variants 12070 name="quick-shop-variant" 12071 id="quick-shop-variants" 12072 class="pointer-events-none" 12073 layout="container" 12074 template="quick-shop-variant-template" 12075 spz-if="${product_options && product_options.length > 0}" 12076 interact="hover" 12077 interference 12078 ${mouse_out_event} 12079 ${mouse_over_event} 12080 ></spz-variants> 12081 12082 <button 12083 class="relative mt-5 lg:mt-6 button-primary flex items-center justify-center body-plus-2 type-text-font-family rounded-btn quick-shop_atc_btn" 12084 type="button" 12085 role="addToCart" 12086 data-track="click" 12087 data-track-content="add_to_cart" 12088 data-track-source="add_to_cart" 12089 >
12090 <span role="content">${statusLan}</span> 12091 12092 <spz-render id="quick-shop-btn-price" layout="container" template="quick-shop-button-price-template" manual></spz-render> 12093 12094 12095 12096<div class="loading items-center justify-center absolute inset-0" role="loading" show > 12097 <div class="loading-bounce"></div> 12098</div> 12099 </button> 12100 </div> 12101 </div> 12102 </form> 12103 </spz-product-form> 12104 </div> 12105 ` 12106 }()} 12107 </template> 12108 </spz-render> 12109 <spz-loading class="quick-shop-loading i-spzhtml-layout-container" layout="container" role="mask" hidden i-spzhtml-layout="container"></spz-loading> 12110 <div class="quick-shop-close-btn absolute right-0 top-0 text-current flex items-center justify-center no-underline text-2xl" @tap="quick-shop.close;"><svg class="" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M5.034 3.652a.367.367 0 0 0-.518 0l-.864.864a.367.367 0 0 0 0 .519l5.963 5.963-5.963 5.963a.367.367 0 0 0 0 .519l.864.864a.367.367 0 0 0 .518 0l5.964-5.963 5.963 5.963a.367.367 0 0 0 .519 0l.864-.864a.367.367 0 0 0 0-.519l-5.964-5.963 5.964-5.963a.367.367 0 0 0 0-.519l-.864-.864a.367.367 0 0 0-.519 0l-5.963 5.963-5.964-5.963z" fill="currentColor"/></svg></div> 12111 </div> 12112 12113 <template id="quick-shop-retail-price-template"> 12114 ${function(){ 12115 const currentSelectVariant = data.variant; 12116 const defaultVariant = (data.product && data.product.variants && data.product.variants[0]); 12117 12118 const variantData = currentSelectVariant || defaultVariant || data; 12119 const retail_price = variantData.retail_price || 0; 12120 return ` 12121 <div> 12122 <div class="flex color-compare-price mt-3" spz-if="${retail_price>0}"> 12123 <span class="mr-1">Retail</span> <spz-currency value="${retail_price}" layout="container"></spz-currency> 12124 </div> 12125 </div> 12126 ` 12127 }()} 12128 </template> 12129 <style> 12130 .product_price_before::before { 12131 content: ' - '; 12132 display: block; 12133 width: 20px; 12134 } 12135</style> 12136<template id="quick-shop-button-price-template"> 12137 ${function(){ 12138 const wholesale_enabled = false; 12139 const qty = data.quantity || 1; 12140 const currentSelectVariant = data.variant; 12141 const defaultVariant = (data.product && data.product.variants && data.product.variants[0]); 12142 const productVariant = null; 12143 12144 const variantData = currentSelectVariant || defaultVariant || productVariant; 12145 const wholesale_price = variantData.wholesale_price || []; 12146 12147 if(wholesale_enabled && wholesale_price.length > 0) { 12148 let wholesaleIndex = wholesale_price.findIndex(item => { 12149 return item.min_quantity > qty; 12150 }); 12151 if(wholesaleIndex < 0){ 12152 wholesaleIndex = wholesale_price.length - 1; 12153 }else if(wholesaleIndex > 0){ 12154 wholesaleIndex = wholesaleIndex - 1; 12155 } 12156 const wholesalePrice = wholesale_price[wholesaleIndex] || ''; 12157 return ` 12158 <div class="flex"> 12159 <span class="product_price_before"></span><spz-currency value="${wholesalePrice.price}" layout="container"></spz-currency> 12160 </div> 12161 ` 12162 }else { 12163 const price = variantData && variantData.price; 12164 return price != undefined ? `<div class="flex"><span class="product_price_before"></span><spz-currency value="${price}" layout="container"></spz-currency></div>` : '<span></span>'; 12165 } 12166 }()} 12167</template> 12168 </div> 12169 </spz-lightbox> 12170 <template id="quick-shop-variant-template"> 12171 <div class="quick-shop-variants-container"> 12172 ${function() { 12173 let variantImageShowed = false; 12174 const currentProduct = data.product; 12175 12176 return (currentProduct.options || []).map((option, index) => { 12177 const optionName = option.name || ''; 12178 const optionId = option.id || ''; 12179 const position = `option${index + 1}`; 12180 12181 let isThumbImage = false;
12182 if (currentProduct.need_variant_image && !variantImageShowed) { 12183 const variantNames = ["color"] || []; 12184 for (let i = 0, len = variantNames.length; i < len; i++) { 12185 const name = variantNames[i].toLowerCase(); 12186 if (name === optionName.toLowerCase()) { 12187 isThumbImage = true; 12188 variantImageShowed = true; 12189 } 12190 } 12191 } 12192 const variantType = "button"; 12193 const thumbStyle = "image_with_text"; 12194 12195 return ` 12196 <fieldset spz-if="${variantType=='button' || isThumbImage}" class="quick-shop__variants_content mt-6 mx-0 min-w-[0px]" name="${optionName}"> 12197 <legend class="quick-shop__variants_title flex items-center max-w-full"> 12198 <span class="lg:body-plus-2 leading-1.3 flex-shrink-0 inline-block">${optionName}: </span> 12199 <spz-render spz-if="${isThumbImage}" class="flex items-center opacity-60 inline-block flex-grow min-w-[0px]" id="quick-shop-selected-variant-${optionId}" layout="container" template="quick-shop-selected-variant-template" manual></spz-render> 12200 </legend> 12201 <div class="flex flex-wrap ${isThumbImage ? 'mt-1' : 'quick-shop-variant-container'}"> 12202 ${option.values.map((value, idx) => { 12203 const selected = data.selectedValues[optionName] == value ? 'checked' : ''; 12204 12205 let thumbImage = null; 12206 if (isThumbImage) { 12207 const variants = currentProduct.variants; 12208 for (let i = 0, len = variants.length; i < len; i++) { 12209 const variant = variants[i]; 12210 if (variant[position] == value && thumbImage == null) { 12211 thumbImage = variant.image; 12212 break; 12213 } 12214 } 12215 } 12216 12217 return ` 12218 <div class="relative mt-3 mr-3" option="${value}"> 12219 <input 12220 type="radio" 12221 class="pointer-events-auto" 12222 option="${value}" 12223 id="quick-shop-variant-${value}-${idx}" 12224 name="quick-shop-variant-${optionName}" 12225 value="${value}" 12226 form="quick-shop-body" 12227 @input-debounced="quick-shop-selected-variant-${optionId}.rerender(data=event, redo=true);" 12228 ${selected} 12229 > 12230 <label 12231 class="quick-shop-variant-option relative flex items-center break-words flex-shrink-0 12232 rounded-[1px] 12233" 12234 data-type="${isThumbImage ? (thumbStyle == 'image_with_text' ? 'image-with-text' : 'image') : 'text'}" 12235 for="quick-shop-variant-${value}-${idx}"> 12236 <spz-img spz-if="${isThumbImage}" class="${thumbStyle == 'image_with_text' ? 'ml-1' : ''}" src="${thumbImage && thumbImage.src}" layout="responsive" width="42" height="42" alt="${thumbImage && thumbImage.alt}" object-fit="cover" auto-fit></spz-img> 12237 <span spz-if="${thumbStyle == 'image_with_text' || !isThumbImage}" class="break-words py-2 px-3">${value}</span> 12238 </label> 12239 </div> 12240 ` 12241 }).join('')} 12242 </div> 12243 </fieldset> 12244 <div spz-else class="mt-6"> 12245 <div class="lg:body-plus-2 leading-1.3">${optionName}</div> 12246 <div class="relative mt-3"> 12247 <select class="quick-shop__variant__select pointer-events-auto w-full text-text-font-size type-text-font-family 12248 rounded-[1px] 12249secondary-select" role="variant" name="${optionName}"> 12250 ${option.values.map(value => { 12251 const selected = data.selectedValues[optionName] == value ? 'selected' : ''; 12252 return `<option class="quick-shop__variants_value" value="${value}" option="${value}" ${selected}>${value}</option>` 12253 }).join('')} 12254 </select> 12255 <svg class="quick-shop__variant__select-icon" width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424
122550l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"/></svg> 12256</div> 12257 </div> 12258 ` 12259 }).join(''); 12260 }()} 12261 </div> 12262</template> 12263<template id="quick-shop-selected-variant-template"> 12264 <span class="inline-block truncate max-w-full" title="${data.originData && data.originData.value || data.value}"> 12265 ${data.originData && data.originData.value || data.value} 12266 </span> 12267</template> 12268
12269<script type="text/javascript" async src="https://static.staticdj.com/seahorse/bottom_v2.335e01c1.js"></script>
vendor: 1 bytes, line 12269
12269
12270<script type="text/javascript" async src="https://static.staticdj.com/golden/bottom_v2.157d17d3.js"></script>
vendor: 1 bytes, line 12270
12270
12271<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"basic":"basic.c50df513.js"});</script>
vendor: 1 bytes, line 12271
12271
12272<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"cart_pop":"cart_pop.c733db0f.js"});</script>
vendor: 1 bytes, line 12272
12272
12273<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"couponcode":"couponcode.0cd81091.js"});</script>
vendor: 1 bytes, line 12273
12273
12274<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"bear":"bear.4241d627.js"});</script>
vendor: 1 bytes, line 12274
12274
12275<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"bundle":"bundle.a029e922.js"});</script>
vendor: 1 bytes, line 12275
12275
12276<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"filly":"filly.b9085eb2.js"});</script>
vendor: 1 bytes, line 12276
12276
12277<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"discount_gifts":"discount_gifts.87837098.js"});</script>
vendor: 1 bytes, line 12277
12277
12278<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"blog_products":"blog_products.b67b5c27.js"});</script>
vendor: 1 bytes, line 12278
12278
12279<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"google_form":"google_form.025d905a.js"});</script>
vendor: 1 bytes, line 12279
12279
12280<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"zebu":"zebu.e8dece57.js"});</script>
vendor: 1 bytes, line 12280
12280
12281<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"buy_on_others":"buy_on_others.d678fa5c.js"});</script>
vendor: 1 bytes, line 12281
12281
12282<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"variants_combination":"variants_combination.17e6b308.js"});</script>
vendor: 1 bytes, line 12282
12282
12283<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"translate":"translate.5c34eee2.js"});</script>
vendor: 1 bytes, line 12283
12283
12284<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"discount_gifts_v2":"discount_gifts_v2.a34137af.js"});</script>
vendor: 1 bytes, line 12284
12284
12285<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"image_video":"image_video.b713d119.js"});</script>
vendor: 1 bytes, line 12285
12285
12286<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"reviews":"reviews.77c0cadd.js"});</script>
vendor: 1 bytes, line 12286
12286
12287<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"privacy_app":"privacy_app.ade927e4.js"});</script>
vendor: 1 bytes, line 12287
12287
12288<script type="text/javascript"> 12289 (function () { 12290 if (!C_SETTINGS.payment_settings.paypal_express_enabled) return; 12291 if ((window.disabled_exts || []).indexOf("*") != -1 || (window.disabled_exts || []).indexOf("paypal_express") != -1) return; 12292 function getCookie(name) { 12293 var match = document.cookie.match(new RegExp(name + '=([^;]+)')); 12294 return (match && match[1]) || ''; 12295 } 12296 var ppStamp = (getCookie('awesomeab').match(/paypal-express-([vs0-9]+)/) || ['', ''])[1]; 12297 var entry = ppStamp ? 'paypal_express.' + ppStamp + '.js' : 'paypal_express.70c809e1.js'; 12298 var s = document.createElement('script'); 12299 s.crossOrigin = "anonymous"; 12300 s.async = !0; 12301 s.src = SHOP_PARAMS.cdn_domain + entry; 12302 document.body.appendChild(s); 12303 12304 })(); 12305</script>
vendor: 1 bytes, line 12305
12305
12306<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"fb_messenger":"fb_messenger.1de139d2.js"});</script>
vendor: 1 bytes, line 12306
12306
12307<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"common":"common.e560ab2c.js"});</script>
vendor: 1 bytes, line 12307
12307
12308<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"installment":"installment.e24868df.js"});</script>
vendor: 1 bytes, line 12308
12308
12309<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"stamped_frontend":"stamped_frontend.f67dcbe7.js"});</script>
vendor: 1 bytes, line 12309
12309
12310<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"multi_market":"multi_market.85145627.js"});</script>
vendor: 1 bytes, line 12310
12310
12311<script type='text/javascript'>(window._ext || (window._ext =[])).push('currency');</script>
vendor: 1 bytes, line 12311
12311
12312<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"product_detail_rebate":"product_detail_rebate.cbca7ec3.js"});</script>
vendor: 1 bytes, line 12312
12312
12313<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"buffalo":"buffalo.e0f4e5cf.js"});</script>
vendor: 1 bytes, line 12313
12313
12314<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"jellyfish":"jellyfish.f9cc89bb.js"});</script>
vendor: 1 bytes, line 12314
12314
12315<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"currency":"currency.ca2b3757.js"});</script>
vendor: 1 bytes, line 12315
12315
12316<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"vole":"vole.de34b0f2.js"});</script>
vendor: 1 bytes, line 12316
12316
12317<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"wishlist":"wishlist.0fc03a14.js"});</script>
vendor: 1 bytes, line 12317
12317
12318<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"social_login":"social_login.537a8e8f.js"});</script>
vendor: 1 bytes, line 12318
12318
12319<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"numbat":"numbat.14e8199b.js"});</script>
vendor: 1 bytes, line 12319
12319
12320<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"subscription_popups":"subscription_popups.9a18a460.js"});</script>
vendor: 1 bytes, line 12320
12320
12321<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"coupon":"coupon.07fd62a8.js"});</script>
vendor: 1 bytes, line 12321
12321
12322<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"top_products":"top_products.4da4f6f3.js"});</script>
vendor: 1 bytes, line 12322
12322
12323<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"appparakeet":"appparakeet.537f9b5b.js"});</script>
vendor: 1 bytes, line 12323
12323
12324<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"recommended_product":"recommended_product.b4592e0a.js"});</script>
vendor: 1 bytes, line 12324
12324
12325<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"boowc":"boowc.15caf0e7.js"});</script>
vendor: 1 bytes, line 12325
12325
12326<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"add_to_cart":"add_to_cart.6cde2531.js"});</script>
vendor: 1 bytes, line 12326
12326
12327<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"apptrustpilot-plugin":"apptrustpilot-plugin.7edc2607.js"});</script>
vendor: 1 bytes, line 12327
12327
12328<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"sales_pop":"sales_pop.0410e3b6.js"});</script>
vendor: 1 bytes, line 12328
12328
12329<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"sloth":"sloth.cc72648e.js"});</script>
vendor: 1 bytes, line 12329
12329
12330<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"size_guide":"size_guide.ac4ad793.js"});</script>
12330 12331
12332<script> 12333~(function() { 12334 // checkout page 12335 if (window.SHOP_PARAMS.template_type === '14') { 12336 return; 12337 } 12338 function track(event, params) { 12339 if (window.sa && window.sa.track && typeof window.sa.track === 'function') { 12340 window.sa.track(event, params); 12341 }; 12342 } 12343 function preload() { 12344 var script = document.createElement('script'); 12345 script.async = true; 12346 script.src = '/api/preload-checkout?t=' + Date.now(); 12347 var loadStart = Date.now(); 12348 track('preload_checkout_start'); 12349 script.addEventListener('load', function() { 12350 track('preload_checkout_loaded', { load_duration: Date.now() - loadStart }); 12351 }); 12352 script.addEventListener('error', function(e) { 12353 track('preload_checkout_error', { load_duration: Date.now() - loadStart }); 12354 }); 12355 document.body.appendChild(script); 12356 } 12357 12358 try { 12359 var ab = document.cookie.split(';').find(function (i) { return /awesomeab=/.test(i); }); 12360 var version = 'default'; 12361 if (ab) { 12362 var chickNext = decodeURIComponent(ab).split('=')[1].split(',').find(function (i) { return /chick-next/.test(i); }); 12363 if (chickNext) version = chickNext; 12364 } 12365 12366 var loadedObj = JSON.parse(sessionStorage.getItem('preload_checkout_loaded_v1') || '{}'); 12367 12368 if (loadedObj[version] && loadedObj[version]['allLoaded']) return; 12369 } catch (e) {} 12370 12371 window.addEventListener('load', preload); 12372})(); 12373</script>
12373 12374
12375<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"flashsale":"flashsale.d2ddc7ab.js"});</script>
vendor: 1 bytes, line 12375
12375
12376<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"plugin_parakeet":"plugin_parakeet.6893a874.js"});</script>
vendor: 1 bytes, line 12376
12376
12377<script type="text/javascript">Object.assign(window.exts || (window.exts={}),{"trout":"trout.47f21cf1.js"});</script>
12377 12378</body> 12379</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.