www.okaywear.com
Open in
urlscan Pro
104.18.233.42
Public Scan
Submitted URL: http://www.okaywear.com/products/crew-neck-stripe-trim-t-shirt-pants-2pcs-set
Effective URL: https://www.okaywear.com/products/crew-neck-stripe-trim-t-shirt-pants-2pcs-set
Submission: On May 11 via api from US — Scanned from DE
Effective URL: https://www.okaywear.com/products/crew-neck-stripe-trim-t-shirt-pants-2pcs-set
Submission: On May 11 via api from US — Scanned from DE
Form analysis
6 forms found in the DOMGET /search
<form action="/search" method="get" class="">
<div tabindex="-1" class="tw-flex tw-relative header__search">
<input autocomplete="off" name="q" type="text"
class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global tw-border tw-border-solid tw-border-header tw-placeholder-current header__search-input"
placeholder="Search...">
<button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg></button>
<button type="button" class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close "><svg class="" width="14" height="14"
xmlns="http://www.w3.org/2000/svg">
<path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
</svg></button>
</div>
</form>
<form class="product-info product-info-47391f18-0147-448a-b0ba-5e5f13cf71e2">
<style>
.product-info__body>.product-info__block:first-child {
margin-top: 0;
}
.product-info__body>.product-info__block:last-child {
margin-bottom: 0;
}
@media (max-width: 959.98px) {
[data-section-id="1539149753700"].card-spacing {
padding-top: 0px;
}
}
</style>
<input type="hidden" name="product_id" value="47391f18-0147-448a-b0ba-5e5f13cf71e2">
<input type="hidden" name="variant_id" id="selected_variant_id_47391f18-0147-448a-b0ba-5e5f13cf71e2" class="selected_variant_id_47391f18-0147-448a-b0ba-5e5f13cf71e2" value="0d2a8b5c-ac72-42d8-be81-a9e7af25b4df">
<div class="tw-relative product-info__body" data-sold-out="Sorry, the goods have been sold out." data-unavailable="This combination does not exist, please try other.">
<div class="product-info__header product-info__block tw-my-3">
<h1 class="tw-mt-0 tw-mb-0 tw-title-sm type-title-font-family tw-break-words product-title-transform product-info__header_title">Crew Neck Stripe Trim T-Shirt & Pants 2Pcs Set</h1>
<div class="shoplazza-reviews-rating-wrap d-inline-flex align-items-center notranslate">
<span data-grade="5" class="shoplazza-reviews-rating" data-comment_avg_star="5">
<span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(250, 210, 12, 1);">
<svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
fill="rgba(250, 210, 12, 1)" id="star"></path>
</svg>
</span>
<span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(250, 210, 12, 1);">
<svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
fill="rgba(250, 210, 12, 1)" id="star"></path>
</svg>
</span>
<span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(250, 210, 12, 1);">
<svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
fill="rgba(250, 210, 12, 1)" id="star"></path>
</svg>
</span>
<span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(250, 210, 12, 1);">
<svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
fill="rgba(250, 210, 12, 1)" id="star"></path>
</svg>
</span>
<span class="shoplazza-reviews__rating-active _click_area" style=" color:rgba(250, 210, 12, 1);">
<svg xmlns="http://www.w3.org/2000/svg" width="14px" height="13px" viewBox="0 0 14 13" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M7 10.024L3.54178 12.2422C3.30844 12.3918 3.01281 12.1771 3.08305 11.9089L4.12399 7.93447L0.94575 5.33096C0.731302 5.15529 0.844223 4.80775 1.12097 4.79168L5.22253 4.55352L6.71649 0.726304C6.81729 0.468066 7.18271 0.468067 7.28351 0.726305L8.77747 4.55352L12.879 4.79168C13.1558 4.80775 13.2687 5.15529 13.0542 5.33096L9.87601 7.93447L10.917 11.9089C10.9872 12.1771 10.6916 12.3918 10.4582 12.2422L7 10.024Z"
fill="rgba(250, 210, 12, 1)" id="star"></path>
</svg>
</span>
</span>
<span class="shoplazza-reviews__rating-view notranslate">(3)<span style="color: rgba(32, 32, 32, 0.7);font-family: Montserrat;font-size: 14px;line-height: 16px;margin-left: 8px;">View</span></span>
</div>
</div>
<div class="product-info__block tw-my-2 lg:tw-my-3 tw-opacity-70 tw-body-minus-3 product-info__header-sku">SKU: <span>K624081459961581568</span></div>
<div class="product-info__header_price-wrapper product-info__block tw-my-6">
<div class="tw-body-plus-1 tw-leading-none tw-font-semibold">Price</div>
<div class="tw-flex tw-justify-between tw-items-start tw-mt-3 lg:tw-mt-[10px]">
<div class="tw-flex tw-flex-wrap">
<del class="tw-text-compare-at-price-color tw-mr-3 tw-hidden product-info__header_compare-at-price money notranslate">$52.79</del>
<div class="tw-text-price-color tw-mr-3 product-info__header_price money notranslate">$52.79</div>
<div class="tw-flex !tw-hidden tw-items-center tw-text-save-color product-info__save"> Save <span class="product-info__header_save-amount money notranslate">$0.00</span>
</div>
</div>
</div>
</div>
<div class="bootstrap">
<div class="plugin__wrappers d-flex flex-column">
<div class="app-coupon-label">
<div class="app-coupon-label-title">
<svg class="app-coupon-label-title-icon" xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 5.5A1.5 1.5 0 0 0 17.5 4h3A1.5 1.5 0 0 1 22 5.5v12a1.5 1.5 0 0 1-1.5 1.5h-3a1.5 1.5 0 0 0-3 0h-13A1.5 1.5 0 0 1 0 17.5v-12A1.5 1.5 0 0 1 1.5 4h13A1.5 1.5 0 0 0 16 5.5z"
fill="url(#paint0_linear_112_2448)"></path>
<rect x="5" y="10.5" width="1.5" height="6" rx=".75" transform="rotate(-90 5 10.5)" fill="#FFF9F1"></rect>
<rect x="5" y="14.5" width="1.5" height="6" rx=".75" transform="rotate(-90 5 14.5)" fill="#FFF9F1"></rect>
<rect x="15" y="8.5" width="2" height="2" rx="1" fill="#FFF9F1"></rect>
<rect x="15" y="12.5" width="2" height="2" rx="1" fill="#FFF9F1"></rect>
<defs>
<linearGradient id="paint0_linear_112_2448" y1="12.897" x2="22" y2="12.897" gradientUnits="userSpaceOnUse">
<stop stop-color="#F89F56"></stop>
<stop offset="1" stop-color="#F94138"></stop>
</linearGradient>
</defs>
</svg>
<div class="app-coupon-label-title-text">COUPON</div>
</div>
<div class="rightWrap">
<div class="app-coupon-label-items">
<div class="app-coupon-label-item" style="border-image: url(//img.fantaskycdn.com/oss/operation/28f67e75f0dd78f6e658aeaa4d41cc05_330x.svg) 6/6px/0 stretch"> 80% off </div>
<div class="app-coupon-label-item" style="border-image: url(//img.fantaskycdn.com/oss/operation/28f67e75f0dd78f6e658aeaa4d41cc05_330x.svg) 6/6px/0 stretch"> 50% off </div>
<div class="app-coupon-label-item" style="border-image: url(//img.fantaskycdn.com/oss/operation/28f67e75f0dd78f6e658aeaa4d41cc05_330x.svg) 6/6px/0 stretch"> 20% off </div>
</div>
<svg class="app-coupon-label-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
<path d="M13.212 9.574a.6.6 0 0 1 0 .848l-5.02 5.02a.3.3 0 0 1-.425 0l-.424-.423a.3.3 0 0 1 0-.425l4.596-4.596-4.596-4.596a.3.3 0 0 1 0-.424l.424-.425a.3.3 0 0 1 .424 0l5.021 5.02z" fill="#F97449"></path>
</svg>
<div class="app-coupon-modal" style="background: linear-gradient(90deg, #FFF8E7 0%, #FFE4A7 100%);">
<div class="app-coupon-modal-body">
<div class="app-coupon-modal-title" style="color: #f94539"> COUPON <div class="coupon_modal_close_icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M24 12c0 6.627-5.373 12-12 12S0 18.627 0 12 5.373 0 12 0s12 5.373 12 12zM7.415 7.354c.221-.221.58-.221.8 0l3.847 3.846 3.784-3.784a.566.566 0 1 1 .8.8L12.862 12l3.784 3.784a.566.566 0 0 1-.8.8L12.062 12.8l-3.847 3.847a.566.566 0 0 1-.8-.8L11.261 12 7.415 8.154a.566.566 0 0 1 0-.8z"
fill="#F97148"></path>
</svg>
</div>
</div>
<div class="app-coupon-modal-coupons">
<div class="coupon_plugin__coupon">
<div class="rules__line" style="background: linear-gradient(90deg, #F8A056, #F93E37)">
<div class="rules__first-line" style="color: #ffffff">
<span class="condition">Buy 4+ items</span> <span class="off">Get 1 at 80% off</span>
<div class="coupon_plugin__coupon-divider"></div>
</div>
<div class="rules__second-line align-items-center justify-content-center">
<button data-code="OKB80" data-id="1ef22d98-62d3-4819-b27a-e3a4e36e139f" class="code_btn " type="button" data-activetype="buy_x_get_y" style="background: #FEE7CD; color: #F94339">
<span>Go for it</span>
<span class="notranslate"> OKB80 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 2v.5H4.5v-1a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1V11h.5V2H6zM3 14V5h7v9H3zM1.5 4.5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1v-10z"
fill="currentColor"></path>
</svg>
</span>
<textarea class="coupon_code_value notranslate" style="position:absolute;left:-99999px;">OKB80</textarea>
</button>
<div class="coupon__copied notranslate" style="color: #ffffff">Copy code</div>
</div>
</div>
<svg class="app-coupon-triangle app-coupon-triangle-0" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
<svg class="app-coupon-triangle app-coupon-triangle-1" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
<svg class="app-coupon-triangle app-coupon-triangle-2" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
</div>
<div class="coupon_plugin__coupon">
<div class="rules__line" style="background: linear-gradient(90deg, #F8A056, #F93E37)">
<div class="rules__first-line" style="color: #ffffff">
<span class="condition">Buy 3+ items</span> <span class="off">Get 1 at 50% off</span>
<div class="coupon_plugin__coupon-divider"></div>
</div>
<div class="rules__second-line align-items-center justify-content-center">
<button data-code="OKB50" data-id="9c59bf06-a377-42b8-a35d-68c9bd0e9cc7" class="code_btn " type="button" data-activetype="buy_x_get_y" style="background: #FEE7CD; color: #F94339">
<span>Go for it</span>
<span class="notranslate"> OKB50 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 2v.5H4.5v-1a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1V11h.5V2H6zM3 14V5h7v9H3zM1.5 4.5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1v-10z"
fill="currentColor"></path>
</svg>
</span>
<textarea class="coupon_code_value notranslate" style="position:absolute;left:-99999px;">OKB50</textarea>
</button>
<div class="coupon__copied notranslate" style="color: #ffffff">Copy code</div>
</div>
</div>
<svg class="app-coupon-triangle app-coupon-triangle-0" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
<svg class="app-coupon-triangle app-coupon-triangle-1" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
<svg class="app-coupon-triangle app-coupon-triangle-2" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
</div>
<div class="coupon_plugin__coupon">
<div class="rules__line" style="background: linear-gradient(90deg, #F8A056, #F93E37)">
<div class="rules__first-line" style="color: #ffffff">
<span class="condition">Buy 2+ items</span> <span class="off">Get 1 at 20% off</span>
<div class="coupon_plugin__coupon-divider"></div>
</div>
<div class="rules__second-line align-items-center justify-content-center">
<button data-code="OKB20" data-id="17e02696-a433-4392-9190-cf0bd4dcde3d" class="code_btn " type="button" data-activetype="buy_x_get_y" style="background: #FEE7CD; color: #F94339">
<span>Go for it</span>
<span class="notranslate"> OKB20 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 2v.5H4.5v-1a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-1V11h.5V2H6zM3 14V5h7v9H3zM1.5 4.5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-8a1 1 0 0 1-1-1v-10z"
fill="currentColor"></path>
</svg>
</span>
<textarea class="coupon_code_value notranslate" style="position:absolute;left:-99999px;">OKB20</textarea>
</button>
<div class="coupon__copied notranslate" style="color: #ffffff">Copy code</div>
</div>
</div>
<svg class="app-coupon-triangle app-coupon-triangle-0" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
<svg class="app-coupon-triangle app-coupon-triangle-1" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
<svg class="app-coupon-triangle app-coupon-triangle-2" xmlns="http://www.w3.org/2000/svg" width="106" height="96" viewBox="0 0 106 96" fill="none">
<path d="M102.929 68.555c6.833 12.054-1.946 26.985-15.802 26.875l-68.312-.542C4.959 94.778-3.582 79.71 3.441 67.766l34.625-58.89C45.09-3.067 62.41-2.93 69.242 9.125l33.687 59.43z" fill="#fff" fill-opacity=".11"></path>
</svg>
</div>
</div>
<div class="app-coupon-modal-close-md">
<div class="coupon_modal_close_icon"> Close </div>
</div>
</div>
<div class="app-coupon-modal-mask"></div>
</div>
</div>
</div>
<div class="plugin_modals position-relative plugin_modals-discount_gifts" id="Modal265115" style="order: 9">
<style>
#Modal265115 {
--modal_background: linear-gradient(135deg, #ff4848, #ff0d7d);
--modal_caret_background: #ff0d7d;
--modal_title_color: #fff;
--modal_close_color: #D30808;
--modal_close_background_color: #FFE6D0;
--list_border_color: #ddd;
}
@media (max-width: 767.98px) {
#Modal265115 .coupon_plugin__coupon:last-child {
padding-bottom: 0;
}
}
#Modal265115 .modal-footer {
position: relative;
margin-top: -30px;
}
#Modal265115 .modal-footer::before {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 150%;
background-image: url(//img.fantaskycdn.com/oss/operation/1eb91360306015b21548cd2f1747bc0e.svg);
background-repeat: no-repeat;
background-size: 100%;
pointer-events: none;
}
@media (max-width: 767.98px) {
#Modal265115 .discount-present-item:last-child {
padding-bottom: 40px;
}
#Modal265115 .plugin_modals__wrapper-list>a:last-child {
padding-bottom: 14px;
}
}
</style>
<!-- 弹窗 -->
<div class="fade plugin_modals__modal" data-backdrop="false" role="dialog" id="target_Modal265115">
<div class="plugin_modals__modal-mask" data-dismiss="modal" aria-label="Close"></div>
<div class="modal-dialog m-0" role="document">
<div class="modal-content">
<div class="modal-header justify-content-center p-1">
<h5 class="modal-title p-1">GIFT OFFER</h5>
<i type="button" class="modal_close" data-dismiss="modal" aria-label="Close"><svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="20" height="20"><defs><style></style></defs><path d="M512 1024C229.805 1024 0 794.195 0 512S229.805 0 512 0s512 229.805 512 512-229.805 512-512 512zm0-47.628C768 976.372 976.372 768 976.372 512S768 47.628 512 47.628 47.628 256 47.628 512 256 976.372 512 976.372z" fill="currentColor"></path><path d="M540.577 507.237l167.888 167.889c9.526 9.525 9.526 23.814 0 33.34s-23.814 9.525-33.34 0l-167.888-167.89-169.079 167.89c-9.525 9.525-23.814 9.525-33.34 0-9.525-9.526-9.525-23.815 0-33.34l167.889-167.889-167.888-169.079c-9.526-9.525-9.526-23.814 0-33.34 9.525-9.525 23.814-9.525 33.34 0l167.888 167.889 167.888-167.888c9.525-9.526 23.814-9.526 33.34 0 9.525 9.525 9.525 23.814 0 33.34L540.576 507.236z" fill="currentColor"></path></svg></i>
</div>
<div class="modal-body">
<div class="discount-present">
<div class="gift-offer-entry position-relative d-flex flex-row discount-present-item" data-id="17974ac2-89a8-4dd2-8de2-d2896aca2855">
<div class="activity-rules d-flex align-items-center" data-toggle="modal" data-target="#gift-offer-modal">
<!-- view the gift svg图标 -->
<img alt="plugin discount gift" class="lazyload" loading="lazy" src="//img.fantaskycdn.com/oss/operation/287876a2c3f514fadb32ecfa592ce1f7.png">
<div class="activity-rules-contennt"> View the <span class="gift_offer">GIFT OFFER</span>
</div>
</div>
</div>
<div class="discount-present-item position-relative d-flex flex-row">
<a href="/promotions/discount/17974ac2-89a8-4dd2-8de2-d2896aca2855" class="rules w-100">
<div class="activity-rules-contennt">
<li>Spend <span class="money notranslate">$199</span> to get <span>1</span> free gift(s)</li>
</div>
</a>
</div>
</div>
</div>
<div class="modal-footer d-md-none">
<a type="button" class="footer_close" style="border-radius: 21px;" data-dismiss="modal">CLOSE</a>
</div>
</div>
</div>
</div>
<!-- 入口 -->
<div class="plugin_modals__list" data-toggle="modal" data-target="#target_Modal265115" impr="1" imprevt="1" imprsd="true">
<div class="plugin_modals__list-name"><a href="/promotions/discount/17974ac2-89a8-4dd2-8de2-d2896aca2855" class="rules w-100">
<i>
<svg width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.31421 2.57895C4.31421 2.03589 4.82263 1.47368 5.61842 1.47368C6.39063 1.47368 7.26158 2.11474 7.26158 3.19274V3.68421H6.63821C6.04505 3.68421 5.418 3.6761 4.93905 3.5C4.71653 3.41747 4.57211 3.31358 4.48148 3.19568C4.39674 3.08516 4.31421 2.90316 4.31421 2.57895ZM9.35863 3.68421H8.73526V3.19274C8.73526 2.11474 9.60547 1.47368 10.3784 1.47368C11.1742 1.47368 11.6826 2.03589 11.6826 2.57895C11.6826 2.90316 11.6001 3.08442 11.5154 3.19568C11.4247 3.31358 11.2803 3.41674 11.0578 3.49926C10.5788 3.6761 9.95252 3.68421 9.35863 3.68421ZM13.1563 2.57895C13.1563 2.9901 13.0804 3.36 12.9308 3.68421H14.2616C14.5547 3.68421 14.8358 3.80066 15.0431 4.00793C15.2504 4.21521 15.3668 4.49634 15.3668 4.78947V6.63158H0.630005V4.78947C0.630005 4.49634 0.746452 4.21521 0.953729 4.00793C1.16101 3.80066 1.44213 3.68421 1.73527 3.68421H3.066C2.91128 3.3366 2.83434 2.95939 2.84053 2.57895C2.84053 1.08316 4.15432 0 5.61842 0C6.47684 0 7.38537 0.402317 7.99842 1.12663C8.61147 0.402317 9.52 0 10.3784 0C11.8433 0 13.1563 1.08316 13.1563 2.57895ZM7.26158 14V8.10526H1.36685V12.8947C1.36685 13.5063 1.86053 14 2.47211 14H7.26158ZM8.73526 14V8.10526H14.63V12.8947C14.63 13.5063 14.1363 14 13.5247 14H8.73526Z" fill="#EB391B"></path>
</svg>
</i>
<div class="activity-rules-contennt">
<li>Spend <span class="money notranslate">$199</span> to get <span>1</span> free gift(s)</li>
</div>
</a></div>
<div class="plugin_modals__list-labels text-right"></div>
<i class="plugin_modals__list-icon">
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="18" height="18"><defs><style></style></defs><path d="M636.48 512.32l-366.4 366.4a48 48 0 0067.84 67.872l384.672-384.64a48 48 0 0011.456-49.6 48 48 0 00-11.456-49.6L337.952 78.016a48 48 0 00-67.904 67.904l366.4 366.4z"></path></svg>
</i>
</div>
</div>
</div>
</div>
<div class="product-info__block tw-my-6 tw-relative tw-block tw-w-full tw-rounded-global" style="padding-bottom:24.414%;">
<img class="tw-absolute tw-inset-0 tw-m-auto tw-w-full tw-h-full tw-object-cover tw-rounded-global lazyautosizes lazyloaded"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-sizes="auto" alt=" "
data-srcset="//img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 48w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 180w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 540w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 720w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 900w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1024w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1280w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1366w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1440w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1536w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1600w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1920w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2056w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2560w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2732w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2880w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 3072w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 3200w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 3840w"
sizes="616px"
srcset="//img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 48w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 180w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 540w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 720w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 900w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1024w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1280w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1366w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1440w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1536w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1600w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 1920w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2056w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2560w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2732w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 2880w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 3072w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 3200w, //img.fantaskycdn.com/b77c9b970f93616ce5784cf0a69fd77b_720x.jpg 3840w">
</div>
<div class="tw-space-y-6 product-info__variants product-info__block tw-my-6" data-soldout="Sold out">
<div class="product-info__variants-wrapper product-info__variants_thumbnail slider-switch product-info__variants_items !tw--mb-4" data-selected-variant="false">
<div class="tw-body-plus-1 tw-font-semibold tw-capitalize product-info__variants_title" data-keyword="color — red"> Color<span class="variant_color-label-wrapper "> — <span
class="tw-font-normal variant_color-label">Red</span></span>
</div>
<div class="tw-mt-[10px] tw-flex tw-flex-wrap product-info__variants_value-wrapper">
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-3 tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option1-0-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="Red" checked="">
<label optvalue="Black" data-bgset="//img.fantaskycdn.com/af864812a3e9a5f7926d251b75d695f1_180.jpeg"
style="width: 40px; height: 40px; background-image: url("https://img.fantaskycdn.com/af864812a3e9a5f7926d251b75d695f1_180.jpeg");" for="option1-0-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" data-variants-value="Red"
class="tw-inset-0 tw-bg-no-repeat tw-bg-cover tw-bg-center tw-cursor-pointer tw-rounded-[1px] product-info__thumbnail lazyloaded" data-options-order="0" data-click="select" data-track="switch_variants" data-type="image">
<picture style="display: none;">
<source data-srcset="//img.fantaskycdn.com/af864812a3e9a5f7926d251b75d695f1_180.jpeg" sizes="40px" srcset="//img.fantaskycdn.com/af864812a3e9a5f7926d251b75d695f1_180.jpeg"><img alt="" class="lazyautosizes lazyloaded" data-sizes="auto"
data-parent-fit="cover" sizes="40px">
</picture>
</label>
</div>
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-3 tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option1-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option1-1-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="Black">
<label optvalue="Black" data-bgset="//img.fantaskycdn.com/9ff6d20194b81ee6c18ffd1ea0e03b7f_180.jpeg"
style="width: 40px; height: 40px; background-image: url("https://img.fantaskycdn.com/9ff6d20194b81ee6c18ffd1ea0e03b7f_180.jpeg");" for="option1-1-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" data-variants-value="Black"
class="tw-inset-0 tw-bg-no-repeat tw-bg-cover tw-bg-center tw-cursor-pointer tw-rounded-[1px] product-info__thumbnail lazyloaded" data-options-order="1" data-click="select" data-track="switch_variants" data-type="image">
<picture style="display: none;">
<source data-srcset="//img.fantaskycdn.com/9ff6d20194b81ee6c18ffd1ea0e03b7f_180.jpeg" sizes="40px" srcset="//img.fantaskycdn.com/9ff6d20194b81ee6c18ffd1ea0e03b7f_180.jpeg"><img alt="" class="lazyautosizes lazyloaded" data-sizes="auto"
data-parent-fit="cover" sizes="40px">
</picture>
</label>
</div>
</div>
<div class="product-info__variant-tips tw-mt-[-6px] tw-pb-[15px] tw-text-[15px] tw-leading-none tw-text-[#F0672C] tw-font-bold tw-hidden">Please select a color</div>
</div>
<div class="product-info__variants-wrapper slider-switch product-info__variants_items !tw--mb-4" data-selected-variant="false">
<div class="tw-body-plus-1 tw-font-semibold tw-capitalize product-info__variants_title" data-keyword="size" style="overflow: hidden;">
<a onclick="openSizeModal()" class="size_guide_btn " data-toggle="modal" data-target="#size_guide_modal" data-product_id="47391f18-0147-448a-b0ba-5e5f13cf71e2" href="javascript:void"><img src="https://static.staticdj.com/oss/operation/ab4f520a75bf23c2b60ce852095f3308.png" alt="size guide"> Size Guide </a>
<script>
function openSizeModal() {
document.documentElement.style.overflow = 'hidden'
}
</script> Size
</div>
<div class="tw-mt-[10px] tw-flex tw-flex-wrap product-info__variants_value-wrapper">
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-[14px] tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option2-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option2-0-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="S" checked="">
<label for="option2-0-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" class="tw-flex tw-items-center tw-justify-center tw-min-w-[42px] tw-h-[42px] lg:tw-h-10 tw-px-4 tw-cursor-pointer tw-rounded-[1px] product-info__label"
data-variants-value="S" data-options-order="0" data-click="select" data-track="switch_variants"> S </label>
</div>
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-[14px] tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option2-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option2-1-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="M">
<label for="option2-1-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" class="tw-flex tw-items-center tw-justify-center tw-min-w-[42px] tw-h-[42px] lg:tw-h-10 tw-px-4 tw-cursor-pointer tw-rounded-[1px] product-info__label"
data-variants-value="M" data-options-order="1" data-click="select" data-track="switch_variants"> M </label>
</div>
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-[14px] tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option2-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option2-2-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="L">
<label for="option2-2-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" class="tw-flex tw-items-center tw-justify-center tw-min-w-[42px] tw-h-[42px] lg:tw-h-10 tw-px-4 tw-cursor-pointer tw-rounded-[1px] product-info__label"
data-variants-value="L" data-options-order="2" data-click="select" data-track="switch_variants"> L </label>
</div>
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-[14px] tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option2-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option2-3-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="XL">
<label for="option2-3-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" class="tw-flex tw-items-center tw-justify-center tw-min-w-[42px] tw-h-[42px] lg:tw-h-10 tw-px-4 tw-cursor-pointer tw-rounded-[1px] product-info__label"
data-variants-value="XL" data-options-order="3" data-click="select" data-track="switch_variants"> XL </label>
</div>
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-[14px] tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option2-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option2-4-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="2XL">
<label for="option2-4-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" class="tw-flex tw-items-center tw-justify-center tw-min-w-[42px] tw-h-[42px] lg:tw-h-10 tw-px-4 tw-cursor-pointer tw-rounded-[1px] product-info__label"
data-variants-value="2XL" data-options-order="4" data-click="select" data-track="switch_variants"> 2XL </label>
</div>
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-[14px] tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option2-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option2-5-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="3XL">
<label for="option2-5-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" class="tw-flex tw-items-center tw-justify-center tw-min-w-[42px] tw-h-[42px] lg:tw-h-10 tw-px-4 tw-cursor-pointer tw-rounded-[1px] product-info__label"
data-variants-value="3XL" data-options-order="5" data-click="select" data-track="switch_variants"> 3XL </label>
</div>
<div class="product-info__variants_value product-info__variants-btn-wrapper tw-relative tw-flex tw-items-center tw-mb-[14px] tw-pr-3 tw-break-words notranslate">
<input type="radio" class="tw-hidden product-info__variants_radio" name="option2-47391f18-0147-448a-b0ba-5e5f13cf71e2" id="option2-6-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" value="4XL">
<label for="option2-6-47391f18-0147-448a-b0ba-5e5f13cf71e2-1539149753700" class="tw-flex tw-items-center tw-justify-center tw-min-w-[42px] tw-h-[42px] lg:tw-h-10 tw-px-4 tw-cursor-pointer tw-rounded-[1px] product-info__label"
data-variants-value="4XL" data-options-order="6" data-click="select" data-track="switch_variants"> 4XL </label>
</div>
</div>
<div class="product-info__variant-tips tw-mt-[-6px] tw-pb-[15px] tw-text-[15px] tw-leading-none tw-text-[#F0672C] tw-font-bold tw-hidden">Please select a size</div>
</div>
</div>
<div class="product-info__block tw-my-6 product-info__qty_container">
<div class="tw-body-plus-1 tw-font-semibold">Quantity</div>
<div class="product-info__qty tw-flex tw-w-[114px] tw-mt-2 tw-relative tw-justify-between tw-border-solid tw-border tw-border-line tw-rounded-global notranslate">
<button type="button" data-click="decrease" disabled="disabled"
class="tw-relative tw-bg-transparent tw-border-none tw-z-10 tw-box-border tw-no-underline tw-flex tw-flex-shrink-0 tw-text-body-color tw-items-center tw-justify-center tw-w-[38px] tw-h-[38px] tw-text-center tw-text-[#d8d8d8] lg:hover:tw-bg-[#f2f2f2] tw-rounded-global tw-rounded-r-none disabled:tw-cursor-default disabled:tw-bg-[#f9f9f9]"><svg
class="tw-text-[#888888]" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M1 6h11v1H1z" fill-rule="evenodd" fill="currentColor"></path>
</svg></button>
<input class="product-info__qty_num tw-absolute tw-box-border tw-px-9 tw-h-[38px] tw-w-full tw-text-base tw-flex-grow tw-bg-transparent tw-text-body-color tw-border-none tw-text-center tw-outline-none tw-p-0 tw-appearance-none"
id="product_quantity_47391f18-0147-448a-b0ba-5e5f13cf71e2" name="quantity" type="text" value="1">
<button type="button" data-click="increase"
class="tw-relative tw-bg-transparent tw-border-none tw-z-10 tw-box-border tw-no-underline tw-flex-shrink-0 tw-text-body-color tw-flex tw-items-center tw-justify-center tw-w-[38px] tw-h-[38px] tw-text-center tw-text-[#d8d8d8] lg:hover:tw-bg-[#f2f2f2] tw-rounded-global tw-rounded-l-none disabled:tw-cursor-default disabled:tw-bg-[#f9f9f9]"><svg
class="tw-text-[#888888]" width="13" height="13" xmlns="http://www.w3.org/2000/svg">
<path d="M7 1v5h5v1H7v5H6V7H1V6h5V1h1z" fill="currentColor"></path>
</svg></button>
</div>
</div>
<div class="product-info__btn product-info__block tw-flex tw-flex-col tw-mt-6 tw-space-y-[10px]">
<div data-wishlist="product-cart-love" class="p-flex p-justify-content p-items-center product-detail-love-cart"><button type="button"
class="tw-relative tw-mx-0 tw-h-[54px] tw-body-plus-2 tw-font-semibold tw-cursor-pointer tw-rounded-btn tw-secondary-btn product-info__add-to-cart p-flex-1" data-click="addToCart" data-on-sale="Add to cart" data-adding="Adding"
data-added="Added" data-unavailable="Unavailable" data-sold-out="Sold out" data-btn-class=" tw-secondary-btn " data-track="click" data-track-content="add_to_cart" data-track-source="add_to_cart"> Add to cart - <span
class="money notranslate">$52.79</span>
</button>
<div class="wishlist-add-to-cart-love-icon p-flex p-cursor-pointer p-justify-center p-items-center p-rounded-full p-ml-[16px] p-min-w-[52px] p-w-[52px] p-h-[52px]" data-wishlist="product-love" style="background: rgb(245, 245, 245);">
<span class=" p-w-[26px] p-h-[26px] p-flex p-justify-center p-items-center detail-love-icon">
<svg width="24" height="23" fill="transparent" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path
d="M21.3965 12.7653L12 22L2.60345 12.7653C1.51072 11.517 0.939777 9.91013 1.00504 8.26674C1.07029 6.62334 1.76693 5.06481 2.95535 3.90346C4.14377 2.74211 5.73618 2.06373 7.41347 2.00427C9.09077 1.9448 10.729 2.50864 12 3.5828C13.271 2.50864 14.9092 1.9448 16.5865 2.00427C18.2638 2.06373 19.8562 2.74211 21.0446 3.90346C22.2331 5.06481 22.9297 6.62334 22.995 8.26674C23.0602 9.91013 22.4893 11.517 21.3965 12.7653Z"
stroke="currentColor" stroke-width="1.7"></path>
</svg>
</span>
</div>
</div><button type="button" class="tw-h-[54px] tw-mx-0 tw-primary-btn tw-border-none tw-body-plus-2 tw-font-semibold tw-rounded-btn product-info__buy-now" data-click="submit" data-track="click" data-track-content="checkout"
data-track-source="buy_now"> Buy it now </button>
<div class="product-info__tips empty:tw-hidden tw-mt-3 tw-text-center tw-font-medium tw-text-sm tw-opacity-70 lg:tw-text-[17px] lg:tw-leading-6" data-unavailable="Product is unavailable." data-out-of-stock="Product was out of stock."></div>
</div>
<style>
@keyframes free__shipping-progress-bar-stripes {
0% {
background-position-x: -16px;
}
}
@keyframes free__shipping-progress-bar-stripes-rtl {
0% {
background-position-x: 16px;
}
}
[data-section-id="1539149753700"] .free__shipping-progress-bar {
background: linear-gradient(to right, rgba(0, 0, 0, 1), rgba(77, 123, 234, 1));
transition: width 1.2s ease;
}
[data-section-id="1539149753700"] .free__shipping-progress-bar-striped::before {
content: "";
display: block;
width: 100%;
height: 100%;
background-image: linear-gradient(135deg,
rgba(255, 255, 255, .1) 25%,
transparent 25%,
transparent 50%,
rgba(255, 255, 255, .1) 50%,
rgba(255, 255, 255, .1) 75%,
transparent 75%,
transparent);
background-size: 16px 16px;
animation: 1s linear infinite free__shipping-progress-bar-stripes;
}
[data-section-id="1539149753700"] .free__shipping-text {
text-shadow: 0 1px 1px rgba(46, 22, 4, 0.25);
}
html[dir="rtl"] [data-section-id="1539149753700"] .free__shipping-progress-bar {
left: initial;
right: 0;
background: linear-gradient(to left, rgba(0, 0, 0, 1), rgba(77, 123, 234, 1));
}
html[dir="rtl"] [data-section-id="1539149753700"] .free__shipping-progress-bar-striped::before {
background-image: linear-gradient(45deg,
rgba(255, 255, 255, .1) 25%,
transparent 25%,
transparent 50%,
rgba(255, 255, 255, .1) 50%,
rgba(255, 255, 255, .1) 75%,
transparent 75%,
transparent);
animation-name: free__shipping-progress-bar-stripes-rtl;
}
</style>
<div class="product-info__free-shipping tw-relative tw-min-h-[30px] tw-mt-6 tw-text-white tw-bg-[#403934] tw-bg-opacity-[96] tw-rounded-sm tw-overflow-hidden">
<div class="free__shipping-progress-bar free__shipping-progress-bar-striped tw-absolute tw-top-0 tw-left-0 tw-h-full tw-w-0" style="width: 0%;"></div>
<div class="tw-box-border tw-flex tw-items-center tw-justify-center tw-px-6 tw-py-1 tw-relative tw-z-10">
<svg class="tw-flex-shrink-0" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M14.698 7.522V5.631A.633.633 0 0 0 14.063 5H2.635A.633.633 0 0 0 2 5.63v10.721c0 .349.284.63.635.63H4.59A2.536 2.536 0 0 0 7.08 19a2.536 2.536 0 0 0 2.488-2.018h5.816A2.536 2.536 0 0 0 17.873 19a2.536 2.536 0 0 0 2.489-2.018h1.003c.35 0 .635-.282.635-.63v-3.62a.628.628 0 0 0-.081-.308l-2.594-4.58a.636.636 0 0 0-.553-.322h-4.074zm-.952-1.26a.316.316 0 0 0-.317-.316H3.269a.316.316 0 0 0-.317.315v9.46c0 .174.143.315.318.315h1.308a2.536 2.536 0 0 1 2.501-2.081c1.251 0 2.291.898 2.501 2.08h4.166V6.262zm.952 2.206v7.568h.674l-.004.026a2.535 2.535 0 0 1 2.505-2.107c1.251 0 2.29.898 2.5 2.081h.357a.316.316 0 0 0 .318-.315v-2.744h-3.27a.316.316 0 0 1-.318-.315V9.95c0-.174.142-.315.318-.315h1.469l-.661-1.167h-3.888zm-6.031 8.01c0 .87-.711 1.576-1.588 1.576a1.582 1.582 0 0 1-1.587-1.576c0-.871.71-1.577 1.587-1.577s1.588.706 1.588 1.576zm9.206 1.576c.877 0 1.587-.706 1.587-1.576 0-.871-.71-1.577-1.587-1.577s-1.587.706-1.587 1.576c0 .871.71 1.577 1.587 1.577zm.413-7.399c0-.11.09-.2.2-.2h1.225l.964 1.703h-2.19a.2.2 0 0 1-.2-.2v-1.303z"
fill="currentColor"></path>
</svg>
<span class="free__shipping-text tw-ml-2 tw-text-xs tw-leading-5 tw-font-bold">Buy <span class="money notranslate">$89.00</span> more to enjoy FREE Shipping</span>
</div>
</div>
<div class="bundle-combination-container">
<div class="common__product-row">
<bundle-product-list data-version="0112 15:08" class="bundle-main" style-type="fashionHorizontal" is-quick-shop="true" pid="47391f18-0147-448a-b0ba-5e5f13cf71e2" title-text="Frequently Bought Together " title-color="#000000"
btn-bg-color="#EE7C30" btn-text-color="#ffffff" impr="1" imprevt="1" imprsd="true" style="cursor: wait; pointer-events: none;"></bundle-product-list>
</div>
</div>
<style>
.bundle-combination-container {
--color_price: #CD201A;
--color_title: #000000;
--color_btn_bg: #EE7C30;
--color_btn_color: #ffffff;
--color_origin_price: #BEBEBE;
}
.app-container {
padding: var(--general-layout-spacing, var(--page-spacing, 40px));
max-width: var(--general-layout-width, var(--layout-width, var(--page-width, 1140px)));
margin: 0 auto;
}
</style>
<script id="apps_bundle-1539149753700">
try {
(() => {
const productInfo = document.querySelector('.product-info');
const productInfoBody = document.querySelector('.product-info-body');
const curProductInfo = productInfo || productInfoBody;
const productInfoIn = !document.querySelector('div[data-section-type*="//apps/appbundle/blocks/bundle-combination/"] bundle-product-list');
// 仅针对 Hero 做处理 ,debug APPS-2880
if (window.C_SETTINGS.theme.merchant_theme_name === 'Hero' && productInfoIn) {
const $target = curProductInfo?.parentElement;
if ($target) {
const $targetZIndex = window.getComputedStyle($target)['zIndex'];
let newIndex = $targetZIndex === ' auto' ? 1 : parseInt($targetZIndex) + 1;
$target.style.zIndex = newIndex;
}
}
// Flash主题的遮挡问题,低于20,被兄弟节点图片覆盖,超过100,盖住了底部满减优惠,超过1000盖住了顶部吸附,只能取20-100之间
if (curProductInfo && window?.C_SETTINGS?.theme.merchant_theme_name === "Flash") {
curProductInfo.style.zIndex = 20;
}
try {
! function(t) {
"function" == typeof define && define.amd ? define(t) : t()
}((function() {
"use strict";
function t(t, e, i, o) {
var n, s = arguments.length,
r = s < 3 ? e : null === o ? o = Object.getOwnPropertyDescriptor(e, i) : o;
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(t, e, i, o);
else
for (var l = t.length - 1; l >= 0; l--)(n = t[l]) && (r = (s < 3 ? n(r) : s > 3 ? n(e, i, r) : n(e, i)) || r);
return s > 3 && r && Object.defineProperty(e, i, r), r
}
function e(t, e, i, o) {
return new(i || (i = Promise))((function(n, s) {
function r(t) {
try {
a(o.next(t))
} catch (t) {
s(t)
}
}
function l(t) {
try {
a(o.throw(t))
} catch (t) {
s(t)
}
}
function a(t) {
var e;
t.done ? n(t.value) : (e = t.value, e instanceof i ? e : new i((function(t) {
t(e)
}))).then(r, l)
}
a((o = o.apply(t, e || [])).next())
}))
}
"function" == typeof SuppressedError && SuppressedError;
const i = window,
o = i.ShadowRoot && (void 0 === i.ShadyCSS || i.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype,
n = Symbol(),
s = new WeakMap;
class r {
constructor(t, e, i) {
if (this._$cssResult$ = !0, i !== n) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
this.cssText = t, this.t = e
}
get styleSheet() {
let t = this.o;
const e = this.t;
if (o && void 0 === t) {
const i = void 0 !== e && 1 === e.length;
i && (t = s.get(e)), void 0 === t && ((this.o = t = new CSSStyleSheet).replaceSync(this.cssText), i && s.set(e, t))
}
return t
}
toString() {
return this.cssText
}
}
const l = (t, ...e) => {
const i = 1 === t.length ? t[0] : e.reduce(((e, i, o) => e + (t => {
if (!0 === t._$cssResult$) return t.cssText;
if ("number" == typeof t) return t;
throw Error("Value passed to 'css' function must be a 'css' function result: " + t + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")
})(i) + t[o + 1]), t[0]);
return new r(i, t, n)
},
a = o ? t => t : t => t instanceof CSSStyleSheet ? (t => {
let e = "";
for (const i of t.cssRules) e += i.cssText;
return (t => new r("string" == typeof t ? t : t + "", void 0, n))(e)
})(t) : t;
var d;
const c = window,
p = c.trustedTypes,
h = p ? p.emptyScript : "",
u = c.reactiveElementPolyfillSupport,
f = {
toAttribute(t, e) {
switch (e) {
case Boolean:
t = t ? h : null;
break;
case Object:
case Array:
t = null == t ? t : JSON.stringify(t)
}
return t
},
fromAttribute(t, e) {
let i = t;
switch (e) {
case Boolean:
i = null !== t;
break;
case Number:
i = null === t ? null : Number(t);
break;
case Object:
case Array:
try {
i = JSON.parse(t)
} catch (t) {
i = null
}
}
return i
}
},
v = (t, e) => e !== t && (e == e || t == t),
m = {
attribute: !0,
type: String,
converter: f,
reflect: !1,
hasChanged: v
},
g = "finalized";
class y extends HTMLElement {
constructor() {
super(), this._$Ei = new Map, this.isUpdatePending = !1, this.hasUpdated = !1, this._$El = null, this._$Eu()
}
static addInitializer(t) {
var e;
this.finalize(), (null !== (e = this.h) && void 0 !== e ? e : this.h = []).push(t)
}
static get observedAttributes() {
this.finalize();
const t = [];
return this.elementProperties.forEach(((e, i) => {
const o = this._$Ep(i, e);
void 0 !== o && (this._$Ev.set(o, i), t.push(o))
})), t
}
static createProperty(t, e = m) {
if (e.state && (e.attribute = !1), this.finalize(), this.elementProperties.set(t, e), !e.noAccessor && !this.prototype.hasOwnProperty(t)) {
const i = "symbol" == typeof t ? Symbol() : "__" + t,
o = this.getPropertyDescriptor(t, i, e);
void 0 !== o && Object.defineProperty(this.prototype, t, o)
}
}
static getPropertyDescriptor(t, e, i) {
return {
get() {
return this[e]
},
set(o) {
const n = this[t];
this[e] = o, this.requestUpdate(t, n, i)
},
configurable: !0,
enumerable: !0
}
}
static getPropertyOptions(t) {
return this.elementProperties.get(t) || m
}
static finalize() {
if (this.hasOwnProperty(g)) return !1;
this[g] = !0;
const t = Object.getPrototypeOf(this);
if (t.finalize(), void 0 !== t.h && (this.h = [...t.h]), this.elementProperties = new Map(t.elementProperties), this._$Ev = new Map, this.hasOwnProperty("properties")) {
const t = this.properties,
e = [...Object.getOwnPropertyNames(t), ...Object.getOwnPropertySymbols(t)];
for (const i of e) this.createProperty(i, t[i])
}
return this.elementStyles = this.finalizeStyles(this.styles), !0
}
static finalizeStyles(t) {
const e = [];
if (Array.isArray(t)) {
const i = new Set(t.flat(1 / 0).reverse());
for (const t of i) e.unshift(a(t))
} else void 0 !== t && e.push(a(t));
return e
}
static _$Ep(t, e) {
const i = e.attribute;
return !1 === i ? void 0 : "string" == typeof i ? i : "string" == typeof t ? t.toLowerCase() : void 0
}
_$Eu() {
var t;
this._$E_ = new Promise((t => this.enableUpdating = t)), this._$AL = new Map, this._$Eg(), this.requestUpdate(), null === (t = this.constructor.h) || void 0 === t || t.forEach((t => t(this)))
}
addController(t) {
var e, i;
(null !== (e = this._$ES) && void 0 !== e ? e : this._$ES = []).push(t), void 0 !== this.renderRoot && this.isConnected && (null === (i = t.hostConnected) || void 0 === i || i.call(t))
}
removeController(t) {
var e;
null === (e = this._$ES) || void 0 === e || e.splice(this._$ES.indexOf(t) >>> 0, 1)
}
_$Eg() {
this.constructor.elementProperties.forEach(((t, e) => {
this.hasOwnProperty(e) && (this._$Ei.set(e, this[e]), delete this[e])
}))
}
createRenderRoot() {
var t;
const e = null !== (t = this.shadowRoot) && void 0 !== t ? t : this.attachShadow(this.constructor.shadowRootOptions);
return ((t, e) => {
o ? t.adoptedStyleSheets = e.map((t => t instanceof CSSStyleSheet ? t : t.styleSheet)) : e.forEach((e => {
const o = document.createElement("style"),
n = i.litNonce;
void 0 !== n && o.setAttribute("nonce", n), o.textContent = e.cssText, t.appendChild(o)
}))
})(e, this.constructor.elementStyles), e
}
connectedCallback() {
var t;
void 0 === this.renderRoot && (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), null === (t = this._$ES) || void 0 === t || t.forEach((t => {
var e;
return null === (e = t.hostConnected) || void 0 === e ? void 0 : e.call(t)
}))
}
enableUpdating(t) {}
disconnectedCallback() {
var t;
null === (t = this._$ES) || void 0 === t || t.forEach((t => {
var e;
return null === (e = t.hostDisconnected) || void 0 === e ? void 0 : e.call(t)
}))
}
attributeChangedCallback(t, e, i) {
this._$AK(t, i)
}
_$EO(t, e, i = m) {
var o;
const n = this.constructor._$Ep(t, i);
if (void 0 !== n && !0 === i.reflect) {
const s = (void 0 !== (null === (o = i.converter) || void 0 === o ? void 0 : o.toAttribute) ? i.converter : f).toAttribute(e, i.type);
this._$El = t, null == s ? this.removeAttribute(n) : this.setAttribute(n, s), this._$El = null
}
}
_$AK(t, e) {
var i;
const o = this.constructor,
n = o._$Ev.get(t);
if (void 0 !== n && this._$El !== n) {
const t = o.getPropertyOptions(n),
s = "function" == typeof t.converter ? {
fromAttribute: t.converter
} : void 0 !== (null === (i = t.converter) || void 0 === i ? void 0 : i.fromAttribute) ? t.converter : f;
this._$El = n, this[n] = s.fromAttribute(e, t.type), this._$El = null
}
}
requestUpdate(t, e, i) {
let o = !0;
void 0 !== t && (((i = i || this.constructor.getPropertyOptions(t)).hasChanged || v)(this[t], e) ? (this._$AL.has(t) || this._$AL.set(t, e), !0 === i.reflect && this._$El !== t && (void 0 === this._$EC && (this._$EC =
new Map), this._$EC.set(t, i))) : o = !1), !this.isUpdatePending && o && (this._$E_ = this._$Ej())
}
async _$Ej() {
this.isUpdatePending = !0;
try {
await this._$E_
} catch (t) {
Promise.reject(t)
}
const t = this.scheduleUpdate();
return null != t && await t, !this.isUpdatePending
}
scheduleUpdate() {
return this.performUpdate()
}
performUpdate() {
var t;
if (!this.isUpdatePending) return;
this.hasUpdated, this._$Ei && (this._$Ei.forEach(((t, e) => this[e] = t)), this._$Ei = void 0);
let e = !1;
const i = this._$AL;
try {
e = this.shouldUpdate(i), e ? (this.willUpdate(i), null === (t = this._$ES) || void 0 === t || t.forEach((t => {
var e;
return null === (e = t.hostUpdate) || void 0 === e ? void 0 : e.call(t)
})), this.update(i)) : this._$Ek()
} catch (t) {
throw e = !1, this._$Ek(), t
}
e && this._$AE(i)
}
willUpdate(t) {}
_$AE(t) {
var e;
null === (e = this._$ES) || void 0 === e || e.forEach((t => {
var e;
return null === (e = t.hostUpdated) || void 0 === e ? void 0 : e.call(t)
})), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t)
}
_$Ek() {
this._$AL = new Map, this.isUpdatePending = !1
}
get updateComplete() {
return this.getUpdateComplete()
}
getUpdateComplete() {
return this._$E_
}
shouldUpdate(t) {
return !0
}
update(t) {
void 0 !== this._$EC && (this._$EC.forEach(((t, e) => this._$EO(e, this[e], t))), this._$EC = void 0), this._$Ek()
}
updated(t) {}
firstUpdated(t) {}
}
var b;
y[g] = !0, y.elementProperties = new Map, y.elementStyles = [], y.shadowRootOptions = {
mode: "open"
}, null == u || u({
ReactiveElement: y
}), (null !== (d = c.reactiveElementVersions) && void 0 !== d ? d : c.reactiveElementVersions = []).push("1.6.3");
const x = window,
w = x.trustedTypes,
_ = w ? w.createPolicy("lit-html", {
createHTML: t => t
}) : void 0,
$ = "$lit$",
S = `lit$${(Math.random()+"").slice(9)}$`,
C = "?" + S,
k = `<${C}>`,
E = document,
T = () => E.createComment(""),
P = t => null === t || "object" != typeof t && "function" != typeof t,
A = Array.isArray,
I = "[ \t\n\f\r]",
z = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,
O = /-->/g,
H = />/g,
L = RegExp(`>|${I}(?:([^\\s"'>=/]+)(${I}*=${I}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`, "g"),
B = /'/g,
j = /"/g,
N = /^(?:script|style|textarea|title)$/i,
R = (t => (e, ...i) => ({
_$litType$: t,
strings: e,
values: i
}))(1),
q = Symbol.for("lit-noChange"),
V = Symbol.for("lit-nothing"),
M = new WeakMap,
U = E.createTreeWalker(E, 129, null, !1);
function D(t, e) {
if (!Array.isArray(t) || !t.hasOwnProperty("raw")) throw Error("invalid template strings array");
return void 0 !== _ ? _.createHTML(e) : e
}
const W = (t, e) => {
const i = t.length - 1,
o = [];
let n, s = 2 === e ? "<svg>" : "",
r = z;
for (let e = 0; e < i; e++) {
const i = t[e];
let l, a, d = -1,
c = 0;
for (; c < i.length && (r.lastIndex = c, a = r.exec(i), null !== a);) c = r.lastIndex, r === z ? "!--" === a[1] ? r = O : void 0 !== a[1] ? r = H : void 0 !== a[2] ? (N.test(a[2]) && (n = RegExp("</" + a[2], "g")), r = L) :
void 0 !== a[3] && (r = L) : r === L ? ">" === a[0] ? (r = null != n ? n : z, d = -1) : void 0 === a[1] ? d = -2 : (d = r.lastIndex - a[2].length, l = a[1], r = void 0 === a[3] ? L : '"' === a[3] ? j : B) : r === j ||
r === B ? r = L : r === O || r === H ? r = z : (r = L, n = void 0);
const p = r === L && t[e + 1].startsWith("/>") ? " " : "";
s += r === z ? i + k : d >= 0 ? (o.push(l), i.slice(0, d) + $ + i.slice(d) + S + p) : i + S + (-2 === d ? (o.push(void 0), e) : p)
}
return [D(t, s + (t[i] || "<?>") + (2 === e ? "</svg>" : "")), o]
};
class F {
constructor({
strings: t,
_$litType$: e
}, i) {
let o;
this.parts = [];
let n = 0,
s = 0;
const r = t.length - 1,
l = this.parts,
[a, d] = W(t, e);
if (this.el = F.createElement(a, i), U.currentNode = this.el.content, 2 === e) {
const t = this.el.content,
e = t.firstChild;
e.remove(), t.append(...e.childNodes)
}
for (; null !== (o = U.nextNode()) && l.length < r;) {
if (1 === o.nodeType) {
if (o.hasAttributes()) {
const t = [];
for (const e of o.getAttributeNames())
if (e.endsWith($) || e.startsWith(S)) {
const i = d[s++];
if (t.push(e), void 0 !== i) {
const t = o.getAttribute(i.toLowerCase() + $).split(S),
e = /([.?@])?(.*)/.exec(i);
l.push({
type: 1,
index: n,
name: e[2],
strings: t,
ctor: "." === e[1] ? Z : "?" === e[1] ? X : "@" === e[1] ? tt : Y
})
} else l.push({
type: 6,
index: n
})
} for (const e of t) o.removeAttribute(e)
}
if (N.test(o.tagName)) {
const t = o.textContent.split(S),
e = t.length - 1;
if (e > 0) {
o.textContent = w ? w.emptyScript : "";
for (let i = 0; i < e; i++) o.append(t[i], T()), U.nextNode(), l.push({
type: 2,
index: ++n
});
o.append(t[e], T())
}
}
} else if (8 === o.nodeType)
if (o.data === C) l.push({
type: 2,
index: n
});
else {
let t = -1;
for (; - 1 !== (t = o.data.indexOf(S, t + 1));) l.push({
type: 7,
index: n
}), t += S.length - 1
} n++
}
}
static createElement(t, e) {
const i = E.createElement("template");
return i.innerHTML = t, i
}
}
function G(t, e, i = t, o) {
var n, s, r, l;
if (e === q) return e;
let a = void 0 !== o ? null === (n = i._$Co) || void 0 === n ? void 0 : n[o] : i._$Cl;
const d = P(e) ? void 0 : e._$litDirective$;
return (null == a ? void 0 : a.constructor) !== d && (null === (s = null == a ? void 0 : a._$AO) || void 0 === s || s.call(a, !1), void 0 === d ? a = void 0 : (a = new d(t), a._$AT(t, i, o)), void 0 !== o ? (null !== (r = (l =
i)._$Co) && void 0 !== r ? r : l._$Co = [])[o] = a : i._$Cl = a), void 0 !== a && (e = G(t, a._$AS(t, e.values), a, o)), e
}
class Q {
constructor(t, e) {
this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e
}
get parentNode() {
return this._$AM.parentNode
}
get _$AU() {
return this._$AM._$AU
}
u(t) {
var e;
const {
el: {
content: i
},
parts: o
} = this._$AD, n = (null !== (e = null == t ? void 0 : t.creationScope) && void 0 !== e ? e : E).importNode(i, !0);
U.currentNode = n;
let s = U.nextNode(),
r = 0,
l = 0,
a = o[0];
for (; void 0 !== a;) {
if (r === a.index) {
let e;
2 === a.type ? e = new J(s, s.nextSibling, this, t) : 1 === a.type ? e = new a.ctor(s, a.name, a.strings, this, t) : 6 === a.type && (e = new et(s, this, t)), this._$AV.push(e), a = o[++l]
}
r !== (null == a ? void 0 : a.index) && (s = U.nextNode(), r++)
}
return U.currentNode = E, n
}
v(t) {
let e = 0;
for (const i of this._$AV) void 0 !== i && (void 0 !== i.strings ? (i._$AI(t, i, e), e += i.strings.length - 2) : i._$AI(t[e])), e++
}
}
class J {
constructor(t, e, i, o) {
var n;
this.type = 2, this._$AH = V, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = i, this.options = o, this._$Cp = null === (n = null == o ? void 0 : o.isConnected) || void 0 === n || n
}
get _$AU() {
var t, e;
return null !== (e = null === (t = this._$AM) || void 0 === t ? void 0 : t._$AU) && void 0 !== e ? e : this._$Cp
}
get parentNode() {
let t = this._$AA.parentNode;
const e = this._$AM;
return void 0 !== e && 11 === (null == t ? void 0 : t.nodeType) && (t = e.parentNode), t
}
get startNode() {
return this._$AA
}
get endNode() {
return this._$AB
}
_$AI(t, e = this) {
t = G(this, t, e), P(t) ? t === V || null == t || "" === t ? (this._$AH !== V && this._$AR(), this._$AH = V) : t !== this._$AH && t !== q && this._(t) : void 0 !== t._$litType$ ? this.g(t) : void 0 !== t.nodeType ? this.$(
t) : (t => A(t) || "function" == typeof(null == t ? void 0 : t[Symbol.iterator]))(t) ? this.T(t) : this._(t)
}
k(t) {
return this._$AA.parentNode.insertBefore(t, this._$AB)
}
$(t) {
this._$AH !== t && (this._$AR(), this._$AH = this.k(t))
}
_(t) {
this._$AH !== V && P(this._$AH) ? this._$AA.nextSibling.data = t : this.$(E.createTextNode(t)), this._$AH = t
}
g(t) {
var e;
const {
values: i,
_$litType$: o
} = t, n = "number" == typeof o ? this._$AC(t) : (void 0 === o.el && (o.el = F.createElement(D(o.h, o.h[0]), this.options)), o);
if ((null === (e = this._$AH) || void 0 === e ? void 0 : e._$AD) === n) this._$AH.v(i);
else {
const t = new Q(n, this),
e = t.u(this.options);
t.v(i), this.$(e), this._$AH = t
}
}
_$AC(t) {
let e = M.get(t.strings);
return void 0 === e && M.set(t.strings, e = new F(t)), e
}
T(t) {
A(this._$AH) || (this._$AH = [], this._$AR());
const e = this._$AH;
let i, o = 0;
for (const n of t) o === e.length ? e.push(i = new J(this.k(T()), this.k(T()), this, this.options)) : i = e[o], i._$AI(n), o++;
o < e.length && (this._$AR(i && i._$AB.nextSibling, o), e.length = o)
}
_$AR(t = this._$AA.nextSibling, e) {
var i;
for (null === (i = this._$AP) || void 0 === i || i.call(this, !1, !0, e); t && t !== this._$AB;) {
const e = t.nextSibling;
t.remove(), t = e
}
}
setConnected(t) {
var e;
void 0 === this._$AM && (this._$Cp = t, null === (e = this._$AP) || void 0 === e || e.call(this, t))
}
}
class Y {
constructor(t, e, i, o, n) {
this.type = 1, this._$AH = V, this._$AN = void 0, this.element = t, this.name = e, this._$AM = o, this.options = n, i.length > 2 || "" !== i[0] || "" !== i[1] ? (this._$AH = Array(i.length - 1).fill(new String), this
.strings = i) : this._$AH = V
}
get tagName() {
return this.element.tagName
}
get _$AU() {
return this._$AM._$AU
}
_$AI(t, e = this, i, o) {
const n = this.strings;
let s = !1;
if (void 0 === n) t = G(this, t, e, 0), s = !P(t) || t !== this._$AH && t !== q, s && (this._$AH = t);
else {
const o = t;
let r, l;
for (t = n[0], r = 0; r < n.length - 1; r++) l = G(this, o[i + r], e, r), l === q && (l = this._$AH[r]), s || (s = !P(l) || l !== this._$AH[r]), l === V ? t = V : t !== V && (t += (null != l ? l : "") + n[r + 1]), this
._$AH[r] = l
}
s && !o && this.j(t)
}
j(t) {
t === V ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, null != t ? t : "")
}
}
class Z extends Y {
constructor() {
super(...arguments), this.type = 3
}
j(t) {
this.element[this.name] = t === V ? void 0 : t
}
}
const K = w ? w.emptyScript : "";
class X extends Y {
constructor() {
super(...arguments), this.type = 4
}
j(t) {
t && t !== V ? this.element.setAttribute(this.name, K) : this.element.removeAttribute(this.name)
}
}
class tt extends Y {
constructor(t, e, i, o, n) {
super(t, e, i, o, n), this.type = 5
}
_$AI(t, e = this) {
var i;
if ((t = null !== (i = G(this, t, e, 0)) && void 0 !== i ? i : V) === q) return;
const o = this._$AH,
n = t === V && o !== V || t.capture !== o.capture || t.once !== o.once || t.passive !== o.passive,
s = t !== V && (o === V || n);
n && this.element.removeEventListener(this.name, this, o), s && this.element.addEventListener(this.name, this, t), this._$AH = t
}
handleEvent(t) {
var e, i;
"function" == typeof this._$AH ? this._$AH.call(null !== (i = null === (e = this.options) || void 0 === e ? void 0 : e.host) && void 0 !== i ? i : this.element, t) : this._$AH.handleEvent(t)
}
}
class et {
constructor(t, e, i) {
this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = i
}
get _$AU() {
return this._$AM._$AU
}
_$AI(t) {
G(this, t)
}
}
const it = x.litHtmlPolyfillSupport;
null == it || it(F, J), (null !== (b = x.litHtmlVersions) && void 0 !== b ? b : x.litHtmlVersions = []).push("2.8.0");
var ot, nt;
class st extends y {
constructor() {
super(...arguments), this.renderOptions = {
host: this
}, this._$Do = void 0
}
createRenderRoot() {
var t, e;
const i = super.createRenderRoot();
return null !== (t = (e = this.renderOptions).renderBefore) && void 0 !== t || (e.renderBefore = i.firstChild), i
}
update(t) {
const e = this.render();
this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = ((t, e, i) => {
var o, n;
const s = null !== (o = null == i ? void 0 : i.renderBefore) && void 0 !== o ? o : e;
let r = s._$litPart$;
if (void 0 === r) {
const t = null !== (n = null == i ? void 0 : i.renderBefore) && void 0 !== n ? n : null;
s._$litPart$ = r = new J(e.insertBefore(T(), t), t, void 0, null != i ? i : {})
}
return r._$AI(t), r
})(e, this.renderRoot, this.renderOptions)
}
connectedCallback() {
var t;
super.connectedCallback(), null === (t = this._$Do) || void 0 === t || t.setConnected(!0)
}
disconnectedCallback() {
var t;
super.disconnectedCallback(), null === (t = this._$Do) || void 0 === t || t.setConnected(!1)
}
render() {
return q
}
}
st.finalized = !0, st._$litElement$ = !0, null === (ot = globalThis.litElementHydrateSupport) || void 0 === ot || ot.call(globalThis, {
LitElement: st
});
const rt = globalThis.litElementPolyfillSupport;
null == rt || rt({
LitElement: st
}), (null !== (nt = globalThis.litElementVersions) && void 0 !== nt ? nt : globalThis.litElementVersions = []).push("3.3.3");
const lt = (t, e) => "method" === e.kind && e.descriptor && !("value" in e.descriptor) ? {
...e,
finisher(i) {
i.createProperty(e.key, t)
}
} : {
kind: "field",
key: Symbol(),
placement: "own",
descriptor: {},
originalKey: e.key,
initializer() {
"function" == typeof e.initializer && (this[e.key] = e.initializer.call(this))
},
finisher(i) {
i.createProperty(e.key, t)
}
},
at = (t, e, i) => {
e.constructor.createProperty(i, t)
};
function dt(t) {
return (e, i) => void 0 !== i ? at(t, e, i) : lt(t, e)
}
function ct(t) {
return dt({
...t,
state: !0
})
}
const pt = ({
finisher: t,
descriptor: e
}) => (i, o) => {
var n;
if (void 0 === o) {
const o = null !== (n = i.originalKey) && void 0 !== n ? n : i.key,
s = null != e ? {
kind: "method",
placement: "prototype",
key: o,
descriptor: e(i.key)
} : {
...i,
key: o
};
return null != t && (s.finisher = function(e) {
t(e, o)
}), s
} {
const n = i.constructor;
void 0 !== e && Object.defineProperty(i, o, e(o)), null == t || t(n, o)
}
};
function ht(t, e) {
return pt({
descriptor: i => {
const o = {
get() {
var e, i;
return null !== (i = null === (e = this.renderRoot) || void 0 === e ? void 0 : e.querySelector(t)) && void 0 !== i ? i : null
},
enumerable: !0,
configurable: !0
};
if (e) {
const e = "symbol" == typeof i ? Symbol() : "__" + i;
o.get = function() {
var i, o;
return void 0 === this[e] && (this[e] = null !== (o = null === (i = this.renderRoot) || void 0 === i ? void 0 : i.querySelector(t)) && void 0 !== o ? o : null), this[e]
}
}
return o
}
})
}
var ut;
function ft(t) {
return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t
}
null === (ut = window.HTMLSlotElement) || void 0 === ut || ut.prototype.assignedElements;
var vt = {
exports: {}
};
! function(t) {
function e(i) {
return t.exports = e = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
return typeof t
} : function(t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
}, t.exports.__esModule = !0, t.exports.default = t.exports, e(i)
}
t.exports = e, t.exports.__esModule = !0, t.exports.default = t.exports
}(vt);
var mt, gt, yt = ft(vt.exports),
bt = {
exports: {}
},
xt = {
exports: {}
},
wt = {
exports: {}
};
! function(t) {
var e = vt.exports.default;
t.exports = function(t, i) {
if ("object" !== e(t) || null === t) return t;
var o = t[Symbol.toPrimitive];
if (void 0 !== o) {
var n = o.call(t, i || "default");
if ("object" !== e(n)) return n;
throw new TypeError("@@toPrimitive must return a primitive value.")
}
return ("string" === i ? String : Number)(t)
}, t.exports.__esModule = !0, t.exports.default = t.exports
}(wt),
function(t) {
var e = vt.exports.default,
i = wt.exports;
t.exports = function(t) {
var o = i(t, "string");
return "symbol" === e(o) ? o : String(o)
}, t.exports.__esModule = !0, t.exports.default = t.exports
}(xt), gt = xt.exports, (mt = bt).exports = function(t, e, i) {
return (e = gt(e)) in t ? Object.defineProperty(t, e, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
}) : t[e] = i, t
}, mt.exports.__esModule = !0, mt.exports.default = mt.exports;
var _t = ft(bt.exports),
$t = {
exports: {}
};
! function(t) {
function e(t, e, i, o, n, s, r) {
try {
var l = t[s](r),
a = l.value
} catch (t) {
return void i(t)
}
l.done ? e(a) : Promise.resolve(a).then(o, n)
}
t.exports = function(t) {
return function() {
var i = this,
o = arguments;
return new Promise((function(n, s) {
var r = t.apply(i, o);
function l(t) {
e(r, n, s, l, a, "next", t)
}
function a(t) {
e(r, n, s, l, a, "throw", t)
}
l(void 0)
}))
}
}, t.exports.__esModule = !0, t.exports.default = t.exports
}($t);
var St = ft($t.exports),
Ct = {
exports: {}
};
! function(t) {
var e = vt.exports.default;
function i() {
t.exports = i = function() {
return n
}, t.exports.__esModule = !0, t.exports.default = t.exports;
var o, n = {},
s = Object.prototype,
r = s.hasOwnProperty,
l = Object.defineProperty || function(t, e, i) {
t[e] = i.value
},
a = "function" == typeof Symbol ? Symbol : {},
d = a.iterator || "@@iterator",
c = a.asyncIterator || "@@asyncIterator",
p = a.toStringTag || "@@toStringTag";
function h(t, e, i) {
return Object.defineProperty(t, e, {
value: i,
enumerable: !0,
configurable: !0,
writable: !0
}), t[e]
}
try {
h({}, "")
} catch (o) {
h = function(t, e, i) {
return t[e] = i
}
}
function u(t, e, i, o) {
var n = e && e.prototype instanceof x ? e : x,
s = Object.create(n.prototype),
r = new O(o || []);
return l(s, "_invoke", {
value: P(t, i, r)
}), s
}
function f(t, e, i) {
try {
return {
type: "normal",
arg: t.call(e, i)
}
} catch (t) {
return {
type: "throw",
arg: t
}
}
}
n.wrap = u;
var v = "suspendedStart",
m = "suspendedYield",
g = "executing",
y = "completed",
b = {};
function x() {}
function w() {}
function _() {}
var $ = {};
h($, d, (function() {
return this
}));
var S = Object.getPrototypeOf,
C = S && S(S(H([])));
C && C !== s && r.call(C, d) && ($ = C);
var k = _.prototype = x.prototype = Object.create($);
function E(t) {
["next", "throw", "return"].forEach((function(e) {
h(t, e, (function(t) {
return this._invoke(e, t)
}))
}))
}
function T(t, i) {
function o(n, s, l, a) {
var d = f(t[n], t, s);
if ("throw" !== d.type) {
var c = d.arg,
p = c.value;
return p && "object" == e(p) && r.call(p, "__await") ? i.resolve(p.__await).then((function(t) {
o("next", t, l, a)
}), (function(t) {
o("throw", t, l, a)
})) : i.resolve(p).then((function(t) {
c.value = t, l(c)
}), (function(t) {
return o("throw", t, l, a)
}))
}
a(d.arg)
}
var n;
l(this, "_invoke", {
value: function(t, e) {
function s() {
return new i((function(i, n) {
o(t, e, i, n)
}))
}
return n = n ? n.then(s, s) : s()
}
})
}
function P(t, e, i) {
var n = v;
return function(s, r) {
if (n === g) throw new Error("Generator is already running");
if (n === y) {
if ("throw" === s) throw r;
return {
value: o,
done: !0
}
}
for (i.method = s, i.arg = r;;) {
var l = i.delegate;
if (l) {
var a = A(l, i);
if (a) {
if (a === b) continue;
return a
}
}
if ("next" === i.method) i.sent = i._sent = i.arg;
else if ("throw" === i.method) {
if (n === v) throw n = y, i.arg;
i.dispatchException(i.arg)
} else "return" === i.method && i.abrupt("return", i.arg);
n = g;
var d = f(t, e, i);
if ("normal" === d.type) {
if (n = i.done ? y : m, d.arg === b) continue;
return {
value: d.arg,
done: i.done
}
}
"throw" === d.type && (n = y, i.method = "throw", i.arg = d.arg)
}
}
}
function A(t, e) {
var i = e.method,
n = t.iterator[i];
if (n === o) return e.delegate = null, "throw" === i && t.iterator.return && (e.method = "return", e.arg = o, A(t, e), "throw" === e.method) || "return" !== i && (e.method = "throw", e.arg = new TypeError(
"The iterator does not provide a '" + i + "' method")), b;
var s = f(n, t.iterator, e.arg);
if ("throw" === s.type) return e.method = "throw", e.arg = s.arg, e.delegate = null, b;
var r = s.arg;
return r ? r.done ? (e[t.resultName] = r.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = o), e.delegate = null, b) : r : (e.method = "throw", e.arg = new TypeError(
"iterator result is not an object"), e.delegate = null, b)
}
function I(t) {
var e = {
tryLoc: t[0]
};
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e)
}
function z(t) {
var e = t.completion || {};
e.type = "normal", delete e.arg, t.completion = e
}
function O(t) {
this.tryEntries = [{
tryLoc: "root"
}], t.forEach(I, this), this.reset(!0)
}
function H(t) {
if (t || "" === t) {
var i = t[d];
if (i) return i.call(t);
if ("function" == typeof t.next) return t;
if (!isNaN(t.length)) {
var n = -1,
s = function e() {
for (; ++n < t.length;)
if (r.call(t, n)) return e.value = t[n], e.done = !1, e;
return e.value = o, e.done = !0, e
};
return s.next = s
}
}
throw new TypeError(e(t) + " is not iterable")
}
return w.prototype = _, l(k, "constructor", {
value: _,
configurable: !0
}), l(_, "constructor", {
value: w,
configurable: !0
}), w.displayName = h(_, p, "GeneratorFunction"), n.isGeneratorFunction = function(t) {
var e = "function" == typeof t && t.constructor;
return !!e && (e === w || "GeneratorFunction" === (e.displayName || e.name))
}, n.mark = function(t) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t, _) : (t.__proto__ = _, h(t, p, "GeneratorFunction")), t.prototype = Object.create(k), t
}, n.awrap = function(t) {
return {
__await: t
}
}, E(T.prototype), h(T.prototype, c, (function() {
return this
})), n.AsyncIterator = T, n.async = function(t, e, i, o, s) {
void 0 === s && (s = Promise);
var r = new T(u(t, e, i, o), s);
return n.isGeneratorFunction(e) ? r : r.next().then((function(t) {
return t.done ? t.value : r.next()
}))
}, E(k), h(k, p, "Generator"), h(k, d, (function() {
return this
})), h(k, "toString", (function() {
return "[object Generator]"
})), n.keys = function(t) {
var e = Object(t),
i = [];
for (var o in e) i.push(o);
return i.reverse(),
function t() {
for (; i.length;) {
var o = i.pop();
if (o in e) return t.value = o, t.done = !1, t
}
return t.done = !0, t
}
}, n.values = H, O.prototype = {
constructor: O,
reset: function(t) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = o, this.done = !1, this.delegate = null, this.method = "next", this.arg = o, this.tryEntries.forEach(z), !t)
for (var e in this) "t" === e.charAt(0) && r.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = o)
},
stop: function() {
this.done = !0;
var t = this.tryEntries[0].completion;
if ("throw" === t.type) throw t.arg;
return this.rval
},
dispatchException: function(t) {
if (this.done) throw t;
var e = this;
function i(i, n) {
return l.type = "throw", l.arg = t, e.next = i, n && (e.method = "next", e.arg = o), !!n
}
for (var n = this.tryEntries.length - 1; n >= 0; --n) {
var s = this.tryEntries[n],
l = s.completion;
if ("root" === s.tryLoc) return i("end");
if (s.tryLoc <= this.prev) {
var a = r.call(s, "catchLoc"),
d = r.call(s, "finallyLoc");
if (a && d) {
if (this.prev < s.catchLoc) return i(s.catchLoc, !0);
if (this.prev < s.finallyLoc) return i(s.finallyLoc)
} else if (a) {
if (this.prev < s.catchLoc) return i(s.catchLoc, !0)
} else {
if (!d) throw new Error("try statement without catch or finally");
if (this.prev < s.finallyLoc) return i(s.finallyLoc)
}
}
}
},
abrupt: function(t, e) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var o = this.tryEntries[i];
if (o.tryLoc <= this.prev && r.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
var n = o;
break
}
}
n && ("break" === t || "continue" === t) && n.tryLoc <= e && e <= n.finallyLoc && (n = null);
var s = n ? n.completion : {};
return s.type = t, s.arg = e, n ? (this.method = "next", this.next = n.finallyLoc, b) : this.complete(s)
},
complete: function(t, e) {
if ("throw" === t.type) throw t.arg;
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), b
},
finish: function(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var i = this.tryEntries[e];
if (i.finallyLoc === t) return this.complete(i.completion, i.afterLoc), z(i), b
}
},
catch: function(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var i = this.tryEntries[e];
if (i.tryLoc === t) {
var o = i.completion;
if ("throw" === o.type) {
var n = o.arg;
z(i)
}
return n
}
}
throw new Error("illegal catch attempt")
},
delegateYield: function(t, e, i) {
return this.delegate = {
iterator: H(t),
resultName: e,
nextLoc: i
}, "next" === this.method && (this.arg = o), b
}
}, n
}
t.exports = i, t.exports.__esModule = !0, t.exports.default = t.exports
}(Ct);
var kt = Ct.exports(),
Et = kt;
try {
regeneratorRuntime = kt
} catch (t) {
"object" == typeof globalThis ? globalThis.regeneratorRuntime = kt : Function("r", "regeneratorRuntime = r")(kt)
}
var Tt, Pt;
function At(t, e) {
if ("string" == typeof t && "string" == typeof e) {
if (!e.startsWith("/")) throw new Error("prefixionPath: urlPath must be start with /");
if (!t.startsWith("/")) throw new Error("prefixionPath: prefix must be start with /");
return t + e
}
}
function It(t) {
if ("string" != typeof t) throw new Error("globalizePath: urlPath must be string");
if (t.startsWith("http")) throw new Error("globalizePath: urlPath can't be http url");
t.startsWith("/") || (t = "/" + t);
var e = function() {
var t = window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root || "";
return t.length > 0 && (t.startsWith("/") || (t = "/" + t)), t
}();
return e.length > 0 && !t.startsWith(e) || "/ca" === e && t.startsWith("/cart") ? At(e, t) : t
}
function zt(t, e) {
var i = Object.keys(t);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(t);
e && (o = o.filter((function(e) {
return Object.getOwnPropertyDescriptor(t, e).enumerable
}))), i.push.apply(i, o)
}
return i
}
function Ot(t) {
for (var e = 1; e < arguments.length; e++) {
var i = null != arguments[e] ? arguments[e] : {};
e % 2 ? zt(Object(i), !0).forEach((function(e) {
_t(t, e, i[e])
})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(i)) : zt(Object(i)).forEach((function(e) {
Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(i, e))
}))
}
return t
}
var Ht = function(t) {
var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 50,
i = null;
return function() {
for (var o = arguments.length, n = new Array(o), s = 0; s < o; s++) n[s] = arguments[s];
var r = this;
i && clearTimeout(i), i = setTimeout((function() {
t.apply(r, n)
}), e)
}
},
Lt = function(t, e) {
var i = null;
return function() {
var o = this,
n = arguments;
i || (i = setTimeout((function() {
t.apply(o, n), clearTimeout(i), i = null
}), e))
}
},
Bt = {
ROOT_URL: C_SETTINGS && C_SETTINGS.routes && C_SETTINGS.routes.root || "",
post: function(t) {
return (Tt = Tt || St(Et.mark((function t(e) {
var i, o, n, s = arguments;
return Et.wrap((function(t) {
for (;;) switch (t.prev = t.next) {
case 0:
return i = s.length > 1 && void 0 !== s[1] ? s[1] : {}, t.prev = 1, t.next = 4, fetch(Bt.ROOT_URL + e, Ot(Ot({
method: "POST",
headers: {
"Content-Type": "application/json"
}
}, i), {}, {
body: JSON.stringify(i.body)
}));
case 4:
return o = t.sent, t.next = 7, o.json();
case 7:
return n = t.sent, t.abrupt("return", n);
case 11:
throw t.prev = 11, t.t0 = t.catch(1), new Error("post request error" + t.t0);
case 14:
case "end":
return t.stop()
}
}), t, null, [
[1, 11]
])
})))).apply(this, arguments)
},
get: function(t) {
return (Pt = Pt || St(Et.mark((function t(e) {
var i, o;
return Et.wrap((function(t) {
for (;;) switch (t.prev = t.next) {
case 0:
return t.prev = 1, t.next = 4, fetch(Bt.ROOT_URL + e);
case 4:
return i = t.sent, t.next = 7, i.json();
case 7:
return o = t.sent, t.abrupt("return", o);
case 11:
throw t.prev = 11, t.t0 = t.catch(1), new Error("get request error" + t.t0);
case 14:
case "end":
return t.stop()
}
}), t, null, [
[1, 11]
])
})))).apply(this, arguments)
}
},
jt = function(t, e) {
var i, o = {
amount: {
n: 2,
x: 3,
s: ",",
c: "."
},
amount_no_decimals: {
n: 0,
x: 3,
s: ",",
c: ""
},
amount_with_comma_separator: {
n: 2,
x: 3,
s: ".",
c: ","
},
amount_no_decimals_with_comma_separator: {
n: 0,
x: 3,
s: ".",
c: ""
},
amount_with_apostrophe_separator: {
n: 2,
x: 3,
s: "'",
c: "."
}
} [e] || "amount",
n = "\\d(?=(\\d{" + (o.x || 3) + "})+" + (o.n > 0 ? "\\D" : "$") + ")";
return i = 0 === o.n ? t.toFixed(0) : parseFloat(t).toFixed(o.n + 1).slice(0, -1), (o.c ? i.replace(".", o.c) : i).replace(new RegExp(n, "g"), "$&" + (o.s || ","))
},
Nt = function(t) {
if (window.C_APPS_MULTI_CURRENCY && window.C_APPS_MULTI_CURRENCY.globalFinance) return window.C_APPS_MULTI_CURRENCY.globalFinance(Number(t));
var e = window.C_SETTINGS.currency_symbol,
i = window.C_SETTINGS ? window.C_SETTINGS.currency_symbol_pos : "left",
o = window.C_SETTINGS ? window.C_SETTINGS.money_format : "amount";
return "right" === i ? jt(1 * Number(t), o) + e : e + jt(1 * Number(t), o)
},
Rt = !!window.$;
function qt(t) {
var e = document.querySelector(".product-info"),
i = document.querySelector(".product-info-body"),
o = document.querySelector(".product-info__body"),
n = e || i || o,
s = document.querySelector("bundle-product-list"),
r = document.querySelector('div[data-section-type*="//apps/appbundle/blocks/bundle-combination/"]'),
l = r && r.contains(s),
a = {
isInProductInfo: n ? n.contains(s) : !l,
productInfo: n || null
};
if (t) {
var d = Number(window.getComputedStyle(n).paddingLeft.replace(/[^/.\d]/g, "")),
c = Number(n.offsetWidth) - d;
return Ot(Ot({}, a), {}, {
productInfoWidth: c
})
}
return a
}
const Vt = {
FASHION_HORIZONTAL: "fashionHorizontal",
FASHION_VERTICAL: "fashionVertical"
},
Mt = "fixed_price",
Ut = "fixed_amount",
Dt = "percentage",
Wt = "multi",
Ft = "single";
class Gt extends st {
constructor() {
super(...arguments), this.titleText = "", this.switchable = !1, this.titleColor = "", this.btnBgColor = "", this.btnTextColor = "", this.pid = "", this.discount_ids = "", this.styleType = "sutra", this.isQuickShop = "false",
this.atcBtnStyle = void 0, this.selected_all = !0, this.select_one = !1, this.selectedInfo = [], this.modalVisible = !1, this.loading = !1, this.success = !1, this.onResize = () => {}
}
requestUpdate() {
super.requestUpdate()
}
connectedCallback() {
this.onResize = Lt(this.computeWidth, 50), super.connectedCallback(), window.addEventListener("resize", this.onResize)
}
disconnectedCallback() {
super.disconnectedCallback(), window.removeEventListener("resize", this.onResize)
}
computeWidth() {
var t, e;
const {
isInProductInfo: i,
productInfo: o,
productInfoWidth: n
} = qt(!0), s = null === (t = this.shadowRoot) || void 0 === t ? void 0 : t.querySelector(".main");
if (s)
if (i) {
if (o) {
let t = n;
"Flash" === (null === (e = null === window || void 0 === window ? void 0 : window.SHOPLAZZA) || void 0 === e ? void 0 : e.theme.merchant_theme_name) && (null === window || void 0 === window ? void 0 : window
.innerWidth) < 960 && (t -= 32), s.style.maxWidth = `${t}px`, s.classList.add("main--in")
}
} else o && this.styleType === Vt.FASHION_VERTICAL && (s.style.maxWidth = `${n}px`), s.classList.remove("main--in")
}
showToast(t) {
const e = document.createElement("bundle-toast");
t && (e.text = t), document.body.appendChild(e)
}
buySelectedProduct() {
return e(this, void 0, void 0, (function*() {
if (this.selectedInfo.every((t => !t.is_selected))) return;
this.loading = !0;
const t = this.bundleInfo.entitled_products.filter((t => t.is_selected)),
i = t.map((t => ({
product_id: t.id,
variant_id: t.selected_id,
quantity: Number(t.count),
note: t.note || "",
price: t.variants.find((e => e.id === t.selected_id)).price,
available: "true",
selected: "true"
})));
let o = [];
o.push(this.bundleInfo.id), Bt.post("/api/bundle-sales/cart", {
body: {
cart: {
line_items: i
},
action_type: "buy_now",
bundle_sale_ids: o
}
}).then((t => {
const o = {
line_items: (i || []).map((t => ({
quantity: Number(t.quantity),
variant_id: t.variant_id,
note: t.note || "",
properties: t.properties || {}
}))),
refer_info: {
source: "buy_now"
}
};
fetch(It("/api/checkout/order"), {
method: "POST",
body: JSON.stringify(o),
headers: {
"Content-Type": "application/json;charset=utf-8"
}
}).then((t => e(this, void 0, void 0, (function*() {
if (t.redirected && t.url.includes("/account/login")) return window.location.href = It(`/account/login?_returnUrl=${encodeURIComponent(window.location.pathname)}`);
const e = yield t.json();
if ("success" !== e.state) this.showToast(e.message || e.errors[0] || "Unknown error"), location.reload();
else {
const t = e && e.data && e.data.order_token;
t && (window.safeHref ? window.safeHref = It(`/checkout/${t}?step=contact_information`) : window.location.href = It(`/checkout/${t}?step=contact_information`))
}
}))))
}))
}))
}
addSelectedToCart() {
var t;
return e(this, void 0, void 0, (function*() {
if (this.selectedInfo.every((t => !t.is_selected))) return;
this.loading = !0;
const e = this.bundleInfo.entitled_products.filter((t => t.is_selected)),
i = e.map((t => ({
product_id: t.id,
variant_id: t.selected_id,
quantity: t.count
})));
try {
const e = {
discount_id: this.bundleInfo.id,
value_type: this.bundleInfo.value_type,
popups_setting: this.bundleInfo.popups_setting,
global_show_text: this.bundleInfo.global_show_text,
target_selection: this.bundleInfo.target_selection,
page: null === (t = window.SHOP_PARAMS) || void 0 === t ? void 0 : t.template_type,
product_ids: this.bundleInfo.entitled_products.map((t => t.id)),
block: !0,
operation_type: this.bundleInfo.operation_type,
entitled_product_ids: this.bundleInfo.entitled_product_ids.join(",")
};
window.sa && window.sa.track("plugin_bundle_combination_click_atc", e)
} catch (t) {}
const o = yield Bt.post("/api/cart/batch", {
body: {
line_items: i
}
});
if (this.loading = !1, o.errors && o.errors[0]) this.showToast(o.errors[0]);
else {
this.success = !0;
try {
const t = sessionStorage.bundle_sale_ids && JSON.parse(sessionStorage.bundle_sale_ids) || [];
t.includes(this.bundleInfo.id) || (t.push(this.bundleInfo.id), sessionStorage.setItem("bundle_sale_ids", JSON.stringify(t)))
} catch (t) {}
e.forEach((t => {
var e;
const i = {
id: t.id,
product_id: t.id,
number: t.count || 1,
quantity: t.count || 1,
variant_id: t.selected_id,
childrenId: t.selected_id,
item_price: null === (e = t.variants.find((e => e.id === t.selected_id))) || void 0 === e ? void 0 : e.price,
name: t.title,
type: "",
source: "bundle"
};
Rt ? window.$(document.body).trigger("dj.addToCart", i) : document.dispatchEvent(new CustomEvent("dj.addToCart", {
detail: i
}))
})), setTimeout((() => {
window.safeHref ? window.safeHref = It("/cart") : window.location.href = It("/cart")
}))
}
}))
}
switch () {
this.dispatchEvent(new CustomEvent("bundle-combination-switch"))
}
clickSelect() {
var t, e;
this.select_one = this.selectedInfo.filter((t => t.is_selected)).length <= 1, this.selectedInfo.every((t => t.is_selected)) && (null === (e = null === (t = this.bundleInfo) || void 0 === t ? void 0 : t.entitled_products) ||
void 0 === e ? void 0 : e.length) === this.selectedInfo.length ? (this.selected_all = !0, this.requestUpdate()) : this.selected_all = !1
}
clickProduct(t) {
const e = t.detail;
"true" === this.isQuickShop && (this.modalProduct = e, this.modalVisible = !0);
const i = {
block: !0,
discount_ids: this.discount_ids,
product_id: this.pid,
discount_id: this.bundleInfo.id,
CurrProd_id: e.id,
operation_type: this.bundleInfo.operation_type,
entitled_product_ids: this.bundleInfo.entitled_product_ids.join(",")
};
window.sa && window.sa.track("plugin_bundle_combination_product_click", i)
}
renderImgs(t, e) {
var i;
const o = this.parentNode.offsetWidth > 960;
return null === (i = this.selectedInfo) || void 0 === i ? void 0 : i.slice(t, e).map(((e, i) => {
var n, s, r;
const l = null === (n = e.variants) || void 0 === n ? void 0 : n.find((t => t.id === e.selected_id)),
a = (null === (s = null == l ? void 0 : l.image) || void 0 === s ? void 0 : s.src) || (null === (r = e.image) || void 0 === r ? void 0 : r.src);
return R`<div class="img-item">${0!==i||3===t?R`<svg style="${o?"":"padding: 0 12px;"}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path d="M18.573 8.571h-7.145V1.428a1.427 1.427 0 1 0-2.856 0V8.57H1.428a1.428 1.428 0 0 0 0 2.856h7.144v7.144a1.428 1.428 0 0 0 2.856 0v-7.145h7.144a1.428 1.428 0 0 0 0-2.855z" fill="#C5C5C5"/></svg>`:""}<bundle-product-img class="${o?"":"main--in"}" ?is-select="${e.is_selected}" .isQuickShop="${"true"===this.isQuickShop}" .count="${e.count}" .href="${e.url}" .src="${a}" @click="${()=>this.clickProduct(e)}"></bundle-product-img></div>`
}))
}
getlowestPricedProduct(t, e) {
let i = [],
o = [],
n = e;
const s = [...t];
return s.sort(((t, e) => Number(t.price) - Number(e.price))), s.forEach((t => {
if (0 === n) o.push(t);
else {
const e = Number(t.count);
e <= n ? (i.push(t), n -= e) : (i.push(Object.assign(Object.assign({}, t), {
count: `${n}`
})), o.push(Object.assign(Object.assign({}, t), {
count: "" + (e - n)
})), n = 0)
}
})), [i, o]
}
getPrice(t, e = "price") {
let i = 0;
return t.filter((t => t.is_selected)).forEach((t => {
var o;
const n = null === (o = t.variants) || void 0 === o ? void 0 : o.find((e => e.id === t.selected_id)),
s = +(n && n[e] || 0);
i += +t.count * s
})), i
}
handlePriceValue() {
const t = this.getPrice(this.selectedInfo);
let e = t,
i = 0;
if (this.bundleInfo.layer_type === Wt) {
const t = this.selectedInfo.filter((t => t.is_selected));
if (!this.bundleInfo.target_product_id || this.bundleInfo.target_product_id && this.selectedInfo.filter((t => t.is_selected)).some((t => t.id === this.bundleInfo.target_product_id))) {
let o = 0,
n = 0;
const s = t.reduce(((t, e) => t + Number(e.count)), 0),
r = this.bundleInfo.prerequisite_quantity_range;
for (let t = r.length - 1; t >= 0; t--) {
const e = r[t],
{
value: i,
greater_than_or_equal_to: l
} = e;
if (s >= Number(l)) {
o = Number(i), n = Number(l);
break
}
}
if (this.bundleInfo.value_type === Ut) i = o, e -= o;
else if (this.bundleInfo.value_type === Dt) {
const [s, r] = this.getlowestPricedProduct(t, n), l = this.getPrice(s), a = this.getPrice(r);
i = Math.round(l * (o / 100) * 100) / 100, e = l - i + a
}
}
} else {
const o = Number(this.bundleInfo.value);
this.bundleInfo.value_type === Mt ? o < Number(e) && (e = o, i = t - o) : this.bundleInfo.value_type === Ut ? (i = o, e -= o) : this.bundleInfo.value_type === Dt && (i = Math.round(e * (o / 100) * 100) / 100, e -= i)
}
return e = e < 0 ? 0 : e, this.bundleInfo.totalPrice = e.toFixed(2), {
salePrice: t.toFixed(2),
savePrice: i.toFixed(2)
}
}
updated() {
var t;
if (this.computeWidth(), this.modalVisible) {
const e = document.createElement("bundle-product-modal");
e.data = this.modalProduct, e.setAttribute("btn-bg-color", this.btnBgColor), e.setAttribute("btn-text-color", this.btnTextColor), e.setAttribute("top", document.documentElement.scrollTop.toString()), e.close = () => {
this.modalVisible = !1, e.remove()
}, null === (t = document.querySelector(".bundle-combination-container")) || void 0 === t || t.appendChild(e)
}
}
changeCheckBox(t) {
const {
index: e
} = t.detail, i = this.selectedInfo[e].is_selected;
this.selectedInfo[e].is_selected = !i, this.requestUpdate(), window.sa && window.sa.track("plugin_bundle_combination_product_select", {
block: !0
})
}
render() {
var t, e;
if (!this.bundleInfo) return;
const i = this.parentNode.offsetWidth > 960;
i && (null === (e = null === (t = document.querySelector(".bundle-combination-container")) || void 0 === t ? void 0 : t.classList) || void 0 === e || e.add("app-container")), this.selectedInfo = this.bundleInfo ? this
.bundleInfo.entitled_products.filter((t => t.published)) : [], this.clickSelect();
const {
salePrice: o,
savePrice: n
} = this.handlePriceValue();
let s = "";
return [Vt.FASHION_HORIZONTAL, Vt.FASHION_VERTICAL].includes(this.styleType) && (s = this.styleType),
R`<div class="main ${s}"><div class="header" style="${s?"margin-bottom: 20px;":""}"><div class="title" style="${i?"":"font-size: 20px;"}"><span style="color:${this.titleColor}">${this.titleText}</span></div>${this.switchable?R`<div class="switch" @click="${this.switch}" style="${i?"":"font-size: 14px;"}">Related Items</div>`:""}</div>${s?R`<bundle-fashion .overWidth="${i}" title-text="${this.titleText}" switchable="${this.switchable}" title-color="${this.titleColor}" btn-bg-color="${this.btnBgColor}" btn-text-color="${this.btnTextColor}" styleTypeClass="${s}" .isQuickShop="${"true"===this.isQuickShop}" .atcBtnStyle="${this.atcBtnStyle}" .select_one="${this.select_one}" .loading="${this.loading}" .success="${this.success}" .selected_all="${this.selected_all}" .selectedInfo="${this.selectedInfo}" .bundleInfo="${this.bundleInfo}" .salePrice="${o}" .savePrice="${n}" @clickSelect="${this.clickSelect}" @clickProduct="${this.clickProduct}" @changeCheckBox="${this.changeCheckBox}" @addToCart="${this.addSelectedToCart}" @buySelectedProduct="${this.buySelectedProduct}"></bundle-fashion>`:R`<bundle-sutra .overWidth="${i}" title-text="${this.titleText}" switchable="${this.switchable}" title-color="${this.titleColor}" btn-bg-color="${this.btnBgColor}" btn-text-color="${this.btnTextColor}" styleTypeClass="${s}" .isQuickShop="${"true"===this.isQuickShop}" .atcBtnStyle="${this.atcBtnStyle}" .select_one="${this.select_one}" .loading="${this.loading}" .success="${this.success}" .selected_all="${this.selected_all}" .selectedInfo="${this.selectedInfo}" .bundleInfo="${this.bundleInfo}" .salePrice="${o}" .savePrice="${n}" @clickSelect="${this.clickSelect}" @clickProduct="${this.clickProduct}" @changeCheckBox="${this.changeCheckBox}" @addToCart="${this.addSelectedToCart}" @buySelectedProduct="${this.buySelectedProduct}"></bundle-sutra>`}</div>${""}`
}
}
Gt.styles = [
l`.main{padding:20px 0;margin-left:auto;margin-right:auto;max-width:var(--layout-width,1366px)}.header{display:flex;align-items:center}.title{font-size:24px;line-height:24px}.switch{cursor:pointer;text-decoration:underline;font-size:16px;white-space:nowrap;margin-left:10px}.main--in.main{padding:20px 0}.main--in .header{flex-direction:column;align-items:flex-start}.main--in .switch{font-size:14px;margin-top:4px;margin-left:0}@media (max-width:960px){.main{padding:20px 0;max-width:unset}.header{flex-direction:column;align-items:flex-start;margin-bottom:8px}.title{font-size:16px!important}.switch{font-size:14px;margin-top:4px;margin-left:0}}`,
l`.fashionHorizontal .title{font-size:22px;line-height:24px}.fashionHorizontal .switch{color:val(--color-body-text,#292929);font-weight:400}.fashionHorizontal .header{justify-content:space-between}.fashionVertical .header{flex-direction:column;align-items:flex-start}.fashionVertical .switch{margin-top:10px;margin-left:0}.fashionVertical.main{margin-right:initial}.main--in.fashionHorizontal .header{flex-direction:column;align-items:flex-start;justify-content:flex-start}.main--in.fashionHorizontal .switch{margin-top:4px;margin-left:0}.main--in.fashionHorizontal.main{padding:20px 0}.main--in.fashionVertical.main{padding:20px 0!important;margin-left:0}.main--in.fashionVertical.main{margin-right:auto}@media (max-width:960px){.fashionVertical.main{margin-right:auto}}`
], t([dt({
type: String,
attribute: "title-text"
})], Gt.prototype, "titleText", void 0), t([dt()], Gt.prototype, "switchable", void 0), t([dt({
type: String,
attribute: "title-color"
})], Gt.prototype, "titleColor", void 0), t([dt({
type: String,
attribute: "btn-bg-color"
})], Gt.prototype, "btnBgColor", void 0), t([dt({
type: String,
attribute: "btn-text-color"
})], Gt.prototype, "btnTextColor", void 0), t([dt({
type: String,
attribute: !1
})], Gt.prototype, "pid", void 0), t([dt({
type: String,
attribute: !1
})], Gt.prototype, "discount_ids", void 0), t([dt({
attribute: !1
})], Gt.prototype, "bundleInfo", void 0), t([dt({
type: String,
attribute: "style-type"
})], Gt.prototype, "styleType", void 0), t([dt({
attribute: "is-quick-shop"
})], Gt.prototype, "isQuickShop", void 0), t([dt({
attribute: !1
})], Gt.prototype, "atcBtnStyle", void 0), t([ct()], Gt.prototype, "selected_all", void 0), t([ct()], Gt.prototype, "select_one", void 0), t([ct()], Gt.prototype, "selectedInfo", void 0), t([ct()], Gt.prototype, "modalProduct",
void 0), t([ct()], Gt.prototype, "modalVisible", void 0), t([ct()], Gt.prototype, "loading", void 0), t([ct()], Gt.prototype, "success", void 0), t([ct()], Gt.prototype, "onResize", void 0), window.customElements.get(
"bundle-product-list") || window.customElements.define("bundle-product-list", Gt);
class Qt extends st {
constructor() {
super(...arguments), this.src = "", this.href = "", this.styleTypeClass = "", this.isFirst = !1, this.isSelect = !0, this.isQuickShop = !1, this.count = 1, this.icon = R`<div class="icon"></div>`
}
updated() {
if (window.innerWidth < 960) return;
const {
isInProductInfo: t,
productInfoWidth: e
} = qt(!0);
if (!t) return;
this.item.classList.add("product-img--in");
const i = e || 500;
if (this.styleTypeClass === Vt.FASHION_HORIZONTAL) {
const t = (i - 32) / 3;
this.item.style.width = `${t}px`, this.item.style.height = 4 * t / 3 + "px"
} else if (this.styleTypeClass === Vt.FASHION_VERTICAL);
else {
const t = (i - 88) / 3;
this.item.style.height = `${t}px`, this.item.style.width = `${t}px`
}
}
render() {
return R`<div class="product-img"><a .href="${this.isQuickShop?"javascript:void(0);":It(this.href)}"><img src="${this.src}" class="${this.isSelect?"select":""} lazyload" alt="appbundle"> </a>${this.count>1?R`<div class="count notranslate ${this.isSelect?"select":""}">x ${this.count}</div>`:""}</div>`
}
}
Qt.styles = [
l`:host{display:flex;align-items:center}:host(.sutra) .product-img{position:relative;max-width:160px;max-height:160px;width:9vw;height:9vw;border-radius:4px;overflow:hidden}a{position:relative;display:block;width:100%;height:100%}img{position:absolute;left:0;right:0;top:0;bottom:0;max-width:100%;max-height:100%;display:block;margin:auto;opacity:.2}.product-img .select{opacity:1}.icon{padding:0 16px}.count{position:absolute;top:0;right:0;background-color:#ec9154;color:#fff;font-size:12px;line-height:1;padding:4px 6px;font-weight:800;border-bottom-left-radius:4px;opacity:.2}@media (max-width:960px){:host(.sutra) .product-img{width:90px!important;height:90px!important}}`,
l`:host(.fashionHorizontal) .product-img{width:100%;height:260px;position:relative}:host(.fashionHorizontal) .count{top:initial;bottom:0;right:0;border-bottom-left-radius:0;padding:6px 10px;background:rgba(41,41,41,.4);font-family:Jost;font-size:14px;font-style:normal;font-weight:400;line-height:14px}:host(.fashionHorizontal) .product-img--in.product-img{height:200px}:host(.fashionHorizontal) .product-img--in .count{padding:2px 4px;font-size:12px}@media (max-width:960px){:host(.fashionHorizontal) .product-img{height:200px}:host(.fashionHorizontal) .count{padding:4px 8px;font-size:12px}}`,
l`:host(.fashionVertical){height:100%;margin:0 16px;position:relative}:host(.fashionVertical) .product-img{width:103px;height:138px}:host(.fashionVertical) .count{top:initial;bottom:0;right:0;border-bottom-left-radius:0;padding:6px 10px;background:rgba(41,41,41,.4);font-family:Jost;font-size:14px;font-style:normal;font-weight:400;line-height:14px}:host(.fashionVertical) .product-img--in.product-img{width:85px;height:113px}:host(.fashionVertical) .product-img--in.count{padding:2px 4px;font-size:12px}@media (max-width:960px){:host(.fashionVertical) .product-img{width:85px;height:113px}:host(.fashionVertical) .count{padding:4px 8px;font-size:12px}}`
], t([dt({
type: String
})], Qt.prototype, "src", void 0), t([dt({
type: String
})], Qt.prototype, "href", void 0), t([dt()], Qt.prototype, "styleTypeClass", void 0), t([dt({
type: Boolean,
attribute: "is-first"
})], Qt.prototype, "isFirst", void 0), t([dt({
type: Boolean,
attribute: "is-select"
})], Qt.prototype, "isSelect", void 0), t([dt({
type: Boolean
})], Qt.prototype, "isQuickShop", void 0), t([dt({
type: Number
})], Qt.prototype, "count", void 0), t([ht(".product-img")], Qt.prototype, "item", void 0), window.customElements.get("bundle-product-img") || window.customElements.define("bundle-product-img", Qt);
const Jt = R`<svg xmlns="http://www.w3.org/2000/svg" width="10" height="16" viewBox="0 0 10 16" fill="none"><path d="M8.5 0.928955L1.42893 8.00002L8.5 15.0711" stroke="#222222" stroke-width="2"/></svg>`,
Yt = R`<svg xmlns="http://www.w3.org/2000/svg" width="10" height="16" viewBox="0 0 10 16" fill="none"><path d="M1.5 0.928955L8.57107 8.00002L1.5 15.0711" stroke="#222222" stroke-width="2"/></svg>`,
Zt =
R`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><rect x="1" y="1" width="22" height="22" rx="1" fill="#292929"/><path d="M5.3938 12.4719L10.8058 17.0053L18.6062 6.99475" stroke="white" stroke-width="2.2"/><rect x="1" y="1" width="22" height="22" rx="1" stroke="#292929" stroke-width="2"/></svg>`,
Kt =
R`<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect width="16" height="16" rx="2" fill="#2C77F6"/><path d="M12.328 3.75l1.422 1.408-7.163 7.092L2.25 7.956l1.422-1.409 2.915 2.886 5.74-5.683z" fill="#fff"/></svg>`,
Xt =
R`<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="1" width="14" height="14" rx="1" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 1.994C16 .894 15.107 0 14.006 0H1.994C.894 0 0 .893 0 1.994v12.012C0 15.106.893 16 1.994 16h12.012c1.1 0 1.994-.893 1.994-1.994V1.994zM1.994 1h12.012l.116.007a.996.996 0 0 1 .878.987v12.012l-.007.116a.996.996 0 0 1-.987.878H1.994l-.116-.007A.995.995 0 0 1 1 14.006V1.994l.007-.116A.996.996 0 0 1 1.994 1z" fill="#D8DBE6"/></svg>`,
te =
R`<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path opacity=".01" fill="#fff" d="M0 0h16v16H0z"/><path d="M8 11.048a.748.748 0 0 0 .57-.26l4.555-4.556a.75.75 0 0 0-1.06-1.06L8 9.236 3.936 5.172a.75.75 0 0 0-1.061 1.06l4.555 4.556a.748.748 0 0 0 .57.26z" fill="#0A1533"/></svg>`,
ee =
R`<svg style="display:block;margin:auto" width="22" height="22" viewBox="0 0 50 50"><path fill="currentColor" fill-opacity=".6" d="M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z"><animateTransform attributeName="transform" attributeType="xml" dur="0.6s" from="0 25 25" repeatCount="indefinite" to="360 25 25" type="rotate"/></path></svg>`,
ie = document.querySelector("bundle-product-list");
class oe extends st {
constructor() {
super(...arguments), this.backgroundColor = (null == ie ? void 0 : ie.getAttribute("btn-bg-color")) || "#EE7C30", this.textColor = (null == ie ? void 0 : ie.getAttribute("btn-text-color")) || "#FFFFFF", this.disabled = !1,
this.loading = !1, this.success = !1, this.successHtml =
R`<svg width="16" height="17" viewBox="0 0 16 17"><path d="M8 16.5a8 8 0 1 1 .001-16A8 8 0 0 1 8 16.5zM8 2.043c-3.787 0-6.457 2.67-6.457 6.457S4.213 14.957 8 14.957s6.457-2.67 6.457-6.457S11.787 2.043 8 2.043zm-.74 9.148l-.138.137-.027-.027a.555.555 0 0 1-.238.056.559.559 0 0 1-.321-.111l-.014.013-.068-.068-.001-.002-2.355-2.354.808-.808 1.951 1.95 4.306-4.306.808.809-4.71 4.71z" fill="currentColor"/></svg> Added`
}
render() {
let t = null;
return this.loading && (t = ee), this.success && (t = this.successHtml),
R`<div class="button" style="${`background-color: ${this.backgroundColor};color: ${this.textColor};${this.disabled?"background-color: #D9DADB;":""}`}">${t||R`<slot></slot>`}</div>`
}
}
oe.styles = [
l`.button{font-size:14px;line-height:24px;font-weight:500;justify-content:center;align-items:center;padding:12px 20px;border-radius:4px 4px 4px 4px;cursor:pointer;white-space:initial;word-break:keep-all}@media (max-width:960px){.button{text-align:center}}`,
l`:host(.fashionHorizontal) .button{border-radius:0;text-align:center}`, l`:host(.fashionVertical) .button{border-radius:0}`
], t([dt({
type: String,
attribute: "bg-color"
})], oe.prototype, "backgroundColor", void 0), t([dt({
type: String,
attribute: "text-color"
})], oe.prototype, "textColor", void 0), t([dt({
type: Boolean
})], oe.prototype, "disabled", void 0), t([dt({
type: Boolean
})], oe.prototype, "loading", void 0), t([dt({
type: Boolean
})], oe.prototype, "success", void 0), window.customElements.get("bundle-button") || window.customElements.define("bundle-button", oe);
const ne = l`:host(fashion-horizontal) .content_flex{display:flex}`;
class se extends st {
constructor() {
super(...arguments), this.index = 0, this.isSelect = !1, this.selectedOptions = {}, this.thisOne = !1, this.styleTypeClass = "", this.price = "", this.compare_at_price = "", this.modalWidth = 260, this.modalLeft = 0, this
.modalTop = 0, this.showModal = t => {
if (window.innerWidth < 960 || /none/.test(t.target.classList)) return;
const e = t.clientX - t.offsetX;
e + 300 > window.innerWidth ? this.modalLeft = e - (this.modalWidth - t.target.offsetWidth) : this.modalLeft = e, this.modalTop = t.clientY - t.offsetY + t.target.offsetHeight, this.isSelect = !0, this.eva(this.isSelect)
}, this.hideModal = () => {
window.innerWidth < 960 || (this.isSelect = !1, this.eva(this.isSelect))
}
}
requestUpdate() {
super.requestUpdate()
}
willUpdate() {
if (this.data.variants) {
if (this.data.selected_options) this.selectedOptions = Object.assign({}, this.data.selected_options);
else
for (let t of this.data.variants)
if (t.available) {
this.selectedOptions.option1 = t.option1, this.selectedOptions.option2 = t.option2, this.selectedOptions.option3 = t.option3;
break
} this.data.selected_id ? this.data.variants.forEach((t => {
t.id === this.data.selected_id && (this.price = t.price, this.compare_at_price = t.compare_at_price)
})) : (this.price = this.data.variants[0].price, this.compare_at_price = this.data.variants[0].compare_at_price)
}
}
updated() {
const {
isInProductInfo: t
} = qt();
t && this.bundleProductSelect && (t ? this.bundleProductSelect.classList.add("bundle-product-select--in") : this.bundleProductSelect.classList.remove("bundle-product-select--in"))
}
eva(t) {
const e = !document.querySelector('div[data-section-type*="//apps/appbundle/blocks/bundle-combination/"] bundle-product-list');
if ("Eva" === window.C_SETTINGS.theme.merchant_theme_name && e) {
const e = document.querySelector(".product-info__body");
e && (t ? e.classList.remove("tw-overflow-hidden") : e.classList.add("tw-overflow-hidden"))
}
}
clickBundle() {
if (window.innerWidth > 960) return;
const t = this.data.options && 0 === this.data.options.length,
e = this.data.options && this.data.options.length > 0 && 1 === this.data.variants.length;
t || e || (this.isSelect = !this.isSelect, this.eva(this.isSelect))
}
variantClick(t) {
var e, i;
const o = this;
Object.assign(this.selectedOptions, t.detail), null === (i = null === (e = this.data) || void 0 === e ? void 0 : e.variants) || void 0 === i || i.forEach((function(t) {
t.option1 === o.selectedOptions.option1 && t.option2 === ((null == o ? void 0 : o.selectedOptions.option2) || "") && t.option3 === ((null == o ? void 0 : o.selectedOptions.option3) || "") && (o.data.selected_id = t
.id, o.price = t.price, o.compare_at_price = t.compare_at_price)
})), this.data.selected_options = Object.assign({}, this.selectedOptions)
}
onChange() {
this.dispatchEvent(new CustomEvent("changeCheckBox", {
detail: {
index: this.index
},
bubbles: !0,
composed: !0
}))
}
render() {
var t;
const e = this.data.options && 0 === this.data.options.length || !this.data.options,
i = this.data.options && this.data.options.length > 0 && 1 === this.data.variants.length,
o = R`<div class="price money notranslate">${Nt(Number(this.price).toFixed(2))}</div>`;
return R`<div class="bundle-product-select"><div class="title" @click="${this.onChange}">${this.thisOne?R`<span style="font-weight:800">This item: </span>`:""}${this.data.title}</div>${this.styleTypeClass?R`<div class="price-wrap">${o}</div>`:""}<div class="content_flex select notranslate ${e||i?"none":""}" @mouseenter="${this.showModal}" @mouseleave="${this.hideModal}">${e?"":R`<div class="label ${this.isSelect?" lable-select":""} ${i?"one-option":""}" @click="${this.clickBundle}"><div class="selected-variant ${i?"white-space: normal;":""}">${Object.values(this.selectedOptions).filter((t=>!!t)).join("/")}</div>${i?"":te}</div>`} ${this.styleTypeClass?"":o} ${this.isSelect?R`<bundle-select-modal @variantClick="${this.variantClick}" @closeModal="${()=>{setTimeout((()=>{this.isSelect=!1,this.eva(this.isSelect)}),200)}}" class="option_overlay ${this.isSelect?"":"hidden"}" style="${window.innerWidth>960?`left: ${this.modalLeft}px; top: ${this.modalTop}px;`:""}width:${this.modalWidth}" .selectedOptions="${this.data.selected_options||this.selectedOptions}" .options="${null===(t=this.data)||void 0===t?void 0:t.options}" .data="${this.data}" .isSelect="${this.isSelect}" top="${document.documentElement.scrollTop.toString()}"></bundle-select-modal>`:""}<div class="dropdown-overlay ${this.isSelect?"":"hidden"}" @click="${()=>this.isSelect=!1}"></div></div></div>`
}
}
se.styles = [ne, l`.content_flex{display:flex;align-items:center;position:relative;max-width:100%}.price{white-space:nowrap;color:var(--color_price)}.label{cursor:pointer}`,
l`:host(.sutra) .bundle-product-select{display:flex}:host(.sutra) .title{margin-left:16px;margin-right:16px;width:372px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;cursor:pointer;line-height:16px;color:#212b36;align-self:center}input{width:16px;height:16px;margin:0;padding:0;margin-right:12px;cursor:pointer}:host(.sutra) .label{display:flex;align-items:center;justify-content:space-between;width:260px;min-width:0;margin-right:16px;padding:6px 12px;border-radius:2px 2px 2px 2px;border:1px solid #d8dbe6;box-sizing:border-box}.one-option{padding-left:0;padding-right:0;border:none;width:auto!important}.label>svg{flex-shrink:0;margin-left:10px}.hidden{display:none!important}.lable-select{border:1px solid #30354d!important}.options{max-width:212px}:host(.sutra) .price{margin-right:auto;flex-shrink:0;font-size:16px}.selected-variant{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#212b36}.option_overlay{position:fixed;box-sizing:border-box;top:100%;left:0;max-height:300px;width:260px;overflow-y:scroll;background:#fff;box-shadow:0 2px 10px 1px rgba(0,0,0,.10000000149011612),0 0 4px 1px rgba(0,0,0,.03999999910593033);display:none;z-index:1100;padding:16px;padding-bottom:0;display:block;scrollbar-width:none;-ms-overflow-style:none}.option_overlay::-webkit-scrollbar{display:none}:host(.w-full) .bundle-product-select{flex-direction:column}:host(.w-full) .bundle-product-select .title{align-self:auto}:host(.w-full) .select{justify-content:space-between;margin-top:8px;margin-left:16px;box-sizing:border-box}:host(.w-full) .content,:host(.w-full) .content_flex,:host(.w-full) .title{width:auto}:host(.w-full) .label{flex:1}@media (max-width:960px){.bundle-product-select{flex-direction:column}.bundle-product-select .title{align-self:auto}.content,.content_flex,.title{width:auto}:host(.sutra) .label{flex:1}:host(.sutra) .bundle-product-select{flex-direction:column}.option_overlay{position:fixed;max-height:80vh;top:50%;left:50%!important;overflow-y:auto;transform:translate(-50%,-50%);z-index:1101;border-radius:4px;width:90%!important;padding:0}:host(.sutra) .title{width:auto}:host(.sutra) .price{font-size:14px}.dropdown-overlay{position:fixed;top:0;bottom:0;left:0;right:0;display:block;background-color:rgba(0,0,0,.5);z-index:1100}:host(.sutra) .select{justify-content:space-between;margin-top:8px;margin-left:16px;box-sizing:border-box}}`,
l`:host(.fashionHorizontal) .title,:host(.fashionVertical) .title{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:rgba(41,41,41,.75);font-family:Jost;font-size:14px;font-style:normal;font-weight:400;margin-bottom:10px}:host(.fashionHorizontal) .price-wrap{display:flex;flex-wrap:wrap;align-items:baseline;margin-bottom:20px}:host(.fashionHorizontal) .price,:host(.fashionVertical) .price{font-size:22px;margin-right:8px;line-height:18px;overflow:hidden;text-overflow:ellipsis}:host(.fashionHorizontal) .originPrice,:host(.fashionVertical) .originPrice{color:var(--color_price);color:#9f9f9f;font-family:Jost;font-size:16px;font-style:normal;font-weight:400;text-decoration:line-through;line-height:18px}:host(.fashionHorizontal) .label{display:flex;align-items:center;justify-content:center;width:100%;max-width:200px;border:1px solid #e6e6e6;box-sizing:border-box;padding:10px 20px}:host(.fashionHorizontal) .option_overlay{position:fixed}:host(.fashion-full.fashionHorizontal) .label{padding:4px 8px}:host(.fashion-full.fashionHorizontal) .price-wrap{display:block;margin-bottom:10px}:host(.fashion-full.fashionHorizontal) .price{margin-right:0;margin-bottom:8px;font-size:14px;white-space:initial}@media (max-width:960px){:host(.fashionHorizontal) .label{padding:4px 8px}:host(.fashionHorizontal) .price{font-size:14px}}`,
l`:host(.fashionVertical) .select{margin-right:auto}:host(.fashionVertical) .bundle-product-select{display:flex;flex-direction:column;min-height:128px;height:100%}:host(.fashionVertical) .price-wrap{display:flex;flex-wrap:wrap;align-items:baseline;margin-bottom:auto}:host(.fashionVertical) .label{display:flex;align-items:center;justify-content:center;width:auto;max-width:100%;border:1px solid #e6e6e6;box-sizing:border-box;padding:10px 20px;margin-top:10px}:host(.fashion-full.fashionVertical) .label{padding:4px 8px}:host(.fashionVertical) .bundle-product-select--in .price{font-size:14px}:host(.fashion-full.fashionVertical) .bundle-product-select{min-height:100px}:host(.fashion-full.fashionVertical) .select{width:auto}@media (min-width:960px){:host(.fashionVertical) .bundle-product-select--in .label>svg{margin-left:0}}@media (max-width:960px){:host(.fashionVertical) .label{padding:4px 8px}:host(.fashionVertical) .bundle-product-select{min-height:100px}:host(.fashionVertical) .select{margin-right:initial;width:auto}:host(.fashionVertical) .price{font-size:14px}}`
], t([dt()], se.prototype, "data", void 0), t([dt({
type: Number,
attribute: "index"
})], se.prototype, "index", void 0), t([dt({
type: Boolean
})], se.prototype, "isSelect", void 0), t([dt()], se.prototype, "selectedOptions", void 0), t([dt({
type: Boolean,
attribute: "this-one"
})], se.prototype, "thisOne", void 0), t([dt()], se.prototype, "styleTypeClass", void 0), t([ht(".option_overlay")], se.prototype, "modalEl", void 0), t([ht(".label")], se.prototype, "labelEl", void 0), t([ht(
".bundle-product-select")], se.prototype, "bundleProductSelect", void 0), t([ht(".dropdown-overlay")], se.prototype, "maskEl", void 0), t([ct()], se.prototype, "price", void 0), t([ct()], se.prototype, "compare_at_price",
void 0), t([ct()], se.prototype, "modalWidth", void 0), t([ct()], se.prototype, "modalLeft", void 0), t([ct()], se.prototype, "modalTop", void 0), window.customElements.get("bundle-product-select") || window.customElements
.define("bundle-product-select", se);
var re = !1;
if ("undefined" != typeof window) {
var le = {
get passive() {
re = !0
}
};
window.addEventListener("testPassive", null, le), window.removeEventListener("testPassive", null, le)
}
var ae = "undefined" != typeof window && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || "MacIntel" === window.navigator.platform && window.navigator.maxTouchPoints > 1),
de = [],
ce = !1,
pe = -1,
he = void 0,
ue = void 0,
fe = void 0,
ve = function(t) {
return de.some((function(e) {
return !(!e.options.allowTouchMove || !e.options.allowTouchMove(t))
}))
},
me = function(t) {
var e = t || window.event;
return !!ve(e.target) || (e.touches.length > 1 || (e.preventDefault && e.preventDefault(), !1))
},
ge = function(t, e) {
if (t) {
if (!de.some((function(e) {
return e.targetElement === t
}))) {
var i = {
targetElement: t,
options: e || {}
};
de = [].concat(function(t) {
if (Array.isArray(t)) {
for (var e = 0, i = Array(t.length); e < t.length; e++) i[e] = t[e];
return i
}
return Array.from(t)
}(de), [i]), ae ? window.requestAnimationFrame((function() {
if (void 0 === ue) {
ue = {
position: document.body.style.position,
top: document.body.style.top,
left: document.body.style.left
};
var t = window,
e = t.scrollY,
i = t.scrollX,
o = t.innerHeight;
document.body.style.position = "fixed", document.body.style.top = -e, document.body.style.left = -i, setTimeout((function() {
return window.requestAnimationFrame((function() {
var t = o - window.innerHeight;
t && e >= o && (document.body.style.top = -(e + t))
}))
}), 300)
}
})) : function(t) {
if (void 0 === fe) {
var e = !!t && !0 === t.reserveScrollBarGap,
i = window.innerWidth - document.documentElement.clientWidth;
if (e && i > 0) {
var o = parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"), 10);
fe = document.body.style.paddingRight, document.body.style.paddingRight = o + i + "px"
}
}
void 0 === he && (he = document.body.style.overflow, document.body.style.overflow = "hidden")
}(e), ae && (t.ontouchstart = function(t) {
1 === t.targetTouches.length && (pe = t.targetTouches[0].clientY)
}, t.ontouchmove = function(e) {
1 === e.targetTouches.length && function(t, e) {
var i = t.targetTouches[0].clientY - pe;
!ve(t.target) && (e && 0 === e.scrollTop && i > 0 || function(t) {
return !!t && t.scrollHeight - t.scrollTop <= t.clientHeight
}(e) && i < 0 ? me(t) : t.stopPropagation())
}(e, t)
}, ce || (document.addEventListener("touchmove", me, re ? {
passive: !1
} : void 0), ce = !0))
}
} else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")
},
ye = function(t) {
t ? (de = de.filter((function(e) {
return e.targetElement !== t
})), ae && (t.ontouchstart = null, t.ontouchmove = null, ce && 0 === de.length && (document.removeEventListener("touchmove", me, re ? {
passive: !1
} : void 0), ce = !1)), ae ? function() {
if (void 0 !== ue) {
var t = -parseInt(document.body.style.top, 10),
e = -parseInt(document.body.style.left, 10);
document.body.style.position = ue.position, document.body.style.top = ue.top, document.body.style.left = ue.left, window.scrollTo(e, t), ue = void 0
}
}() : (void 0 !== fe && (document.body.style.paddingRight = fe, fe = void 0), void 0 !== he && (document.body.style.overflow = he, he = void 0))) : console.error(
"enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")
};
let be;
class xe extends st {
constructor() {
super(...arguments), this.selectedOptions = {}, this.options = [], this.data = {}, this.top = "", this.price = "", this.compareAtPrice = "", this.image = {}, this.isSelect = !1, this.priceScope = "", this.backgroundColor =
"#EE7C30"
}
willUpdate() {
var t, e, i;
const o = this;
null === (e = null === (t = this.data) || void 0 === t ? void 0 : t.variants) || void 0 === e || e.forEach((function(t, e) {
t.option1 === o.selectedOptions.option1 && t.option2 === ((null == o ? void 0 : o.selectedOptions.option2) || "") && t.option3 === ((null == o ? void 0 : o.selectedOptions.option3) || "") && (o.image = (null == t ?
void 0 : t.image) || o.data.image, o.price = t.price, o.compareAtPrice = t.compare_at_price)
})), null === (i = this.modalInputEl) || void 0 === i || i.focus()
}
attributeChangedCallback(t, e, i) {
"top" === t && +i > 0 && (be = +i)
}
closeModal() {
var t;
window.innerWidth < 960 && ye(null === (t = this.shadowRoot) || void 0 === t ? void 0 : t.querySelector(".select")), document.documentElement.scrollTop = be, this.dispatchEvent(new CustomEvent("closeModal", {
bubbles: !0,
composed: !0,
cancelable: !0
}))
}
firstUpdated() {
window.innerWidth < 960 || (this.modalEl.addEventListener("mousedown", (t => {
this.closeIconEl.contains(t.target) || t.preventDefault()
})), this.modalInputEl.addEventListener("blur", (() => {
this.closeModal()
})))
}
variantChange(t) {
this.priceScope = t.detail
}
render() {
var t, e;
this.isSelect && window.innerWidth < 960 && ge(this.selectEl);
const i = (null === (t = this.selectEl) || void 0 === t ? void 0 : t.scrollHeight) > (null === (e = this.selectEl) || void 0 === e ? void 0 : e.clientHeight);
return R`<input id="modal" readonly="readonly"> <label class="modal notranslate" for="modal"><div class="modal_content"><div class="modal_header"><div class="modal_header_img"><img src="${this.image.src}" class="lazyload" alt="appbundle"></div><div class="modal_header_info"><div class="modal_header_title">${this.data.title}</div><div class="prices"><div class="modal_header_price money notranslate">${this.priceScope||Nt(this.price)}</div><div class="modal_compare_price money notranslate">${Nt(this.compareAtPrice)}</div></div></div><div class="modal_close_icon" @click="${this.closeModal}"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="none"><path fill="#000" d="m17.41 16.02 4.24 4.24a1.002 1.002 0 0 1-1.418 1.416l-4.241-4.24-4.269 4.269a1.009 1.009 0 0 1-1.427-1.427l4.27-4.27-4.24-4.24a1 1 0 0 1 1.414-1.416l4.241 4.241 4.298-4.298a1.009 1.009 0 0 1 1.427 1.427l-4.296 4.299Z"/></svg></div></div><div class="options"><bundle-product-option class="select" .isSelect="${this.isSelect}" .selectedOptions="${this.selectedOptions}" .options="${this.options}" .data="${this.data}" @variantClick="${()=>this.priceScope=""}" @variantChange="${this.variantChange}"></bundle-product-option></div></div></label><div class="btn" style="${i?"box-shadow: 0px 2px 10px 1px rgb(0 0 0 / 10%);":""}"><bundle-button @click="${this.closeModal}">confirm</bundle-button></div>`
}
}
xe.styles =
l`:host{position:relative}.modal_header{display:none}input#modal{height:0;opacity:0;border:0;position:absolute}.btn{display:none}@media(max-width:960px){.modal{display:flex;max-height:80vh;overflow:hidden}.modal_content{display:flex;flex-direction:column;overflow:hidden;width:100%}.modal_header{display:flex;position:relative;margin-bottom:16px;padding:16px;padding-bottom:0;flex-shrink:0}.modal_header .modal_close_icon{position:absolute;top:8px;right:6px}.modal_header_img img{margin-right:16px;flex-shrink:0}.modal_header_img{height:66px}.modal_header_img img{width:66px;height:66px;object-fit:cover;border-radius:4px 4px 4px 4px}.modal_header_info{margin-right:36px}.prices{display:flex;align-items:baseline}.modal_header_title{width:100%;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:16px}.modal_header_price{color:var(--color_price);font-size:16px;font-weight:500}.modal_compare_price{color:var(--color_origin_price);font-size:14px;margin-left:8px;text-decoration:line-through;font-weight:400}.options_wrap{padding:0 16px 78px 16px;flex:1;overflow:hidden}.options{flex:1;display:flex;overflow:hidden;padding-bottom:74px}.select{overflow:auto;padding:0 16px}.btn{display:block;position:fixed;bottom:0;left:0;width:100%;box-sizing:border-box;padding:16px;background-color:#fff;font-size:16px}}`,
t([dt({})], xe.prototype, "selectedOptions", void 0), t([dt({
type: Array
})], xe.prototype, "options", void 0), t([dt()], xe.prototype, "data", void 0), t([dt()], xe.prototype, "top", void 0), t([dt()], xe.prototype, "price", void 0), t([dt()], xe.prototype, "compareAtPrice", void 0), t([dt()], xe
.prototype, "image", void 0), t([dt({
type: Boolean
})], xe.prototype, "isSelect", void 0), t([ht("label.modal")], xe.prototype, "modalEl", void 0), t([ht("input#modal")], xe.prototype, "modalInputEl", void 0), t([ht(".modal_close_icon")], xe.prototype, "closeIconEl", void 0), t(
[ht(".select")], xe.prototype, "selectEl", void 0), t([ct()], xe.prototype, "priceScope", void 0), t([dt({
type: String,
attribute: "background-color"
})], xe.prototype, "backgroundColor", void 0), window.customElements.get("bundle-select-modal") || window.customElements.define("bundle-select-modal", xe);
class we extends st {
constructor() {
super(...arguments), this.options = [], this.selectedOptions = {}, this.overlay = !1, this.index = 0, this.isSelect = !1
}
variantsTypeChange(t) {
var e, i;
let o = t.currentTarget;
if (o.classList.contains("option_container_selected")) o.classList.remove("option_container_selected");
else {
null === (e = o.parentElement.querySelector(".option_container_selected")) || void 0 === e || e.classList.remove("option_container_selected"), o.classList.add("option_container_selected");
if (this.options.length === ((null === (i = this.shadowRoot.querySelectorAll(".option_container_selected")) || void 0 === i ? void 0 : i.length) || 0)) {
let t = {};
for (let e = 0; e < this.options.length; e++) t[`option${e+1}`] = this.contentEls[e].querySelector(".option_container_selected").getAttribute("val");
this.dispatchEvent(new CustomEvent("variantClick", {
detail: t,
bubbles: !0,
composed: !0,
cancelable: !0
}))
}
}
this.requestUpdate(), setTimeout((() => {
var t;
if (this.options.length === ((null === (t = this.shadowRoot.querySelectorAll(".option_container_selected")) || void 0 === t ? void 0 : t.length) || 0)) return;
let e = this.data.variants.slice();
const i = this.data.options;
this.shadowRoot.querySelectorAll(".option_container_selected").forEach((t => {
const o = t.id.split("-"),
n = parseInt(o[0].substring(6), 10) - 1,
s = parseInt(o[1], 10);
e = e.filter((t => t[o[0]] == i[n].values[s]))
}));
const o = e.reduce(((t, e) => parseFloat(t.price) > parseFloat(e.price) ? e : t), e[0]).price,
n = e.reduce(((t, e) => parseFloat(t.price) < parseFloat(e.price) ? e : t), e[0]).price,
s = o === n ? Nt(o) : `${Nt(o)} - ${Nt(n)}`;
this.dispatchEvent(new CustomEvent("variantChange", {
detail: s
}))
}), 50)
}
updated() {
var t = this.data.variants.slice();
const e = this.data.options;
let i = [];
this.shadowRoot.querySelectorAll(".option_container_selected").forEach((o => {
var n = o.id.split("-"),
s = parseInt(n[0].substring(6), 10) - 1,
r = parseInt(n[1], 10);
i.push(n[0]), t = t.filter((t => t[n[0]] == e[s].values[r]))
}));
this.shadowRoot.querySelectorAll(".option_container:not(.option_container_selected)").forEach((o => {
var n = o.id.split("-"),
s = parseInt(n[0].substring(6), 10) - 1,
r = parseInt(n[1], 10),
l = Object.assign({}, t[0]);
l[n[0]] = e[s].values[r];
var a = i.slice(); - 1 == a.indexOf(n[0]) && a.push(n[0]);
var d = 0 == this.data.variants.filter((t => (t.option1 == l.option1 || -1 === a.indexOf("option1")) && (t.option2 == l.option2 || -1 === a.indexOf("option2")) && (t.option3 == l.option3 || -1 === a.indexOf(
"option3")) && +t.available_quantity > 0)).length;
d ? o.classList.add("disabled") : o.classList.remove("disabled")
}))
}
render() {
var t;
return R`<div class="product_option notranslate">${null===(t=this.options)||void 0===t?void 0:t.map(((t,e)=>R`<div class="option_name">${t.name}</div><div class="option_content" index="${e}">${t.values.map(((t,i)=>R`<div val="${t}" option="${`option${e+1}`}" id="${`option${e+1}-${i}`}" class="option_container ${this.selectedOptions["option"+(+e+1)]===t?"option_container_selected":""}" @click="${this.variantsTypeChange}">${t}</div>`))}</div>`))}</div>`
}
}
we.styles =
l`@media(max-width:960px){:host(.select) .product_option{max-height:70vh}}.option_content{display:flex;flex-wrap:wrap;margin-bottom:8px;margin-top:8px}.option_name{font-size:12px;line-height:16px}.option_container{min-width:36px;min-height:36px;box-shadow:inset 0 0 0 1px rgba(33,43,54,.25),inset 0 0 0 3px transparent;padding:6px 12px;margin-right:8px;margin-bottom:8px;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border-radius:2px;font-size:14px;cursor:pointer;word-break:break-word}.option_container_selected{box-shadow:inset 0 0 0 2px var(--color-body-text,#212b36)}.disabled{background-color:#efefef;pointer-events:none}@media(max-width:960px){.option_name{font-size:14px}.option_content{font-size:16px}.option_container{min-width:42px;min-height:42px}.product_option{scrollbar-width:none;-ms-overflow-style:none}.product_option::-webkit-scrollbar{display:none}}`,
t([function(t) {
return pt({
descriptor: e => ({
get() {
var e, i;
return null !== (i = null === (e = this.renderRoot) || void 0 === e ? void 0 : e.querySelectorAll(t)) && void 0 !== i ? i : []
},
enumerable: !0,
configurable: !0
})
})
}(".option_content")], we.prototype, "contentEls", void 0), t([dt()], we.prototype, "options", void 0), t([dt()], we.prototype, "data", void 0), t([dt({})], we.prototype, "selectedOptions", void 0), t([dt({
type: Boolean
})], we.prototype, "overlay", void 0), t([dt({
type: Number
})], we.prototype, "index", void 0), t([dt({
type: Boolean
})], we.prototype, "isSelect", void 0), window.customElements.get("bundle-product-option") || window.customElements.define("bundle-product-option", we);
const _e = window.C_SETTINGS.shop.wholesale_enabled;
class $e extends st {
constructor() {
super(...arguments), this.data = {}, this.selectedOptions = {}, this.options = [], this.numDropDown = 1, this.imgList = [], this.currentImgIndex = 0, this.currentPosition = 1, this.loading = !1, this.priceScope = "", this
.icon =
R`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none"><path opacity=".01" fill="#fff" d="M0 0h16v16H0z"/><path d="M8 11.048a.748.748 0 0 0 .57-.26l4.555-4.556a.75.75 0 0 0-1.06-1.06L8 9.236 3.936 5.172a.75.75 0 0 0-1.061 1.06l4.555 4.556a.748.748 0 0 0 .57.26z" fill="#0A1533"/></svg>`,
this.closeIcon =
R`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M3.404 2.343l4.595 4.595 4.597-4.595a.75.75 0 1 1 1.06 1.06L9.06 8l4.597 4.597a.75.75 0 1 1-1.06 1.06L7.998 9.06l-4.595 4.597a.75.75 0 1 1-1.06-1.06l4.594-4.598-4.595-4.595a.75.75 0 1 1 1.06-1.06z" fill="currentColor"/></svg>`
}
firstUpdated() {
var t, e, i, o, n;
if (ge(null === (t = this.shadowRoot) || void 0 === t ? void 0 : t.querySelector(".content")), this.imgList = this.data.images.map((t => t.src)) || [], null === (e = this.data) || void 0 === e ? void 0 : e.variants) {
if (this.data.selected_options) this.selectedOptions = Object.assign({}, this.data.selected_options);
else
for (let t of this.data.variants)
if (t.available) {
this.selectedOptions.option1 = t.option1, this.selectedOptions.option2 = t.option2, this.selectedOptions.option3 = t.option3;
break
} this.data.selected_id && this.data.variants.forEach(((t, e) => {
if (t.id === this.data.selected_id) {
let e = this.imgList.findIndex((e => {
var i;
return (null === (i = t.image) || void 0 === i ? void 0 : i.src) === e
}));
e > -1 && (this.currentImgIndex = e), this.changeNextOrPrev(0, 1)
}
}))
}
this.listEl.addEventListener("scroll", Lt((t => {
const e = this.listEl.scrollLeft,
i = .75 * document.body.offsetWidth;
this.currentPosition = Math.round(e / i) + 1
}), 100)), this.shadowRoot.querySelector(".modal").addEventListener("touchstart", (t => {
t.stopPropagation()
}));
(null === (i = this.shadowRoot) || void 0 === i ? void 0 : i.querySelector(".num_input")).addEventListener("blur", (t => {
if (t.target.value = t.target.value.replace(/[^\d]/g, ""), "" === t.target.value.trim() || +t.target.value.trim() < 1) return t.target.value = 1, void(this.numDropDown = 1);
this.numDropDown = +t.target.value
}));
const s = null === (o = this.shadowRoot) || void 0 === o ? void 0 : o.querySelector(".num_item_sub"),
r = null === (n = this.shadowRoot) || void 0 === n ? void 0 : n.querySelector(".num_item_add");
1 === this.numDropDown && s.classList.add("num_item_not_allow"), s.addEventListener("click", (t => {
this.numDropDown > 1 && this.numDropDown--
})), r.addEventListener("click", (t => {
var e, i, o;
const n = this.data.variants.find((t => t.id === this.data.selected_id)); + n.available_quantity > +this.numDropDown && (this.numDropDown++, null === (o = null === (i = null === (e = this.shadowRoot) || void 0 ===
e ? void 0 : e.querySelector(".num_item_not_allow")) || void 0 === i ? void 0 : i.classList) || void 0 === o || o.remove("num_item_not_allow"))
}))
}
variantChange(t) {
this.priceScope = t.detail
}
getQualifiedWPriceClassName(t) {
let e = "";
return t.max_quantity ? this.numDropDown <= t.max_quantity && this.numDropDown >= t.min_quantity && (e = "w-price-qualified") : this.numDropDown >= t.min_quantity && (e = "w-price-qualified"), e
}
variantClick(t) {
var e, i;
Object.assign(this.selectedOptions, t.detail), null === (i = null === (e = this.data) || void 0 === e ? void 0 : e.variants) || void 0 === i || i.forEach(((t, e) => {
if (t.option1 === this.selectedOptions.option1 && t.option2 === ((null == this ? void 0 : this.selectedOptions.option2) || "") && t.option3 === ((null == this ? void 0 : this.selectedOptions.option3) || "")) {
const e = this.imgList.findIndex((e => {
var i;
return (null === (i = t.image) || void 0 === i ? void 0 : i.src) === e
}));
this.data.selected_id = t.id, -1 !== e && (this.currentImgIndex = e)
}
})), this.data.selected_options = Object.assign({}, this.selectedOptions), this.scrollList(), this.changeNextOrPrev(0);
const o = this.data.variants.find((t => t.id === this.data.selected_id)); + this.numDropDown > +o.available_quantity && (this.numDropDown = +o.available_quantity), this.priceScope = "", this.requestUpdate()
}
changeImage(t) {
this.currentImgIndex = t, this.scrollList(), this.changeNextOrPrev(0)
}
scrollList() {
setTimeout((() => {
try {
const t = this.shadowRoot.querySelector(".img-item-selected");
t.parentElement.scrollTo({
left: t.offsetLeft,
behavior: "smooth"
})
} catch (t) {
console.error(t)
}
}))
}
changeNextOrPrev(t, e) {
const i = this.currentImgIndex + t;
i < 0 || i > this.imgList.length - 1 || (this.currentImgIndex += t, e ? setTimeout((() => {
this.shadowRoot.querySelector(".img-item-selected").scrollIntoView({
inline: "start"
})
})) : this.scrollList())
}
closeModal() {
var t;
ye(null === (t = this.shadowRoot) || void 0 === t ? void 0 : t.querySelector(".content")), document.documentElement.scrollTop = this.currentScrollTop, this.close()
}
buyNowProcess(t) {
var i;
return e(this, void 0, void 0, (function*() {
let e = t.properties || {};
const o = yield Bt.post("/api/checkout/order", {
body: {
line_items: [{
quantity: +this.numDropDown || 1,
variant_id: t.selected_id,
note: "",
properties: e
}],
refer_info: {
source: "buy_now"
}
}
});
if ("success" === o.state) return window.safeHref = It(`/checkout/${null===(i=o.data)||void 0===i?void 0:i.order_token}?step=contact_information`)
}))
}
addToCart() {
var t, i;
return e(this, void 0, void 0, (function*() {
if ("" !== this.priceScope) return void this.showToast('Please select a variant at least');
this.loading = !0;
const e = {
product_id: this.data.id,
variant_id: this.data.selected_id,
quantity: +this.numDropDown || 1
},
o = yield Bt.post("/api/cart/batch", {
body: {
line_items: [e]
}
});
if (o.errors) return this.showToast(o.errors[0]), this.loading = !1, void this.closeModal();
this.loading = !1;
const n = ((null === (t = window.SHOP_PARAMS) || void 0 === t ? void 0 : t.product_settings) || {}).add_to_cart_process;
"to_cart" === n && "page" === n || (Rt ? window.$(document).trigger("dj.common.cart.change") : document.dispatchEvent(new CustomEvent("dj.cartChange")));
const s = {
id: this.data.id,
product_id: this.data.id,
number: this.data.count || 1,
quantity: this.numDropDown || 1,
variant_id: this.data.selected_id,
childrenId: this.data.selected_id,
item_price: this.data.variants.find((t => t.id === this.data.selected_id)).price,
name: this.data.title,
type: "",
source: "bundle",
process: ((null === (i = window.SHOP_PARAMS) || void 0 === i ? void 0 : i.product_settings) || {}).add_to_cart_process
};
Rt ? window.$(document.body).trigger("dj.addToCart", s) : document.dispatchEvent(new CustomEvent("dj.addToCart", {
detail: s
})), this.closeModal(), "to_cart" === n || "page" === n ? window.safeHref ? window.safeHref = It("/cart") : window.location.href = It("/cart") : "to_checkout" === n && this.buyNowProcess(this.data), this
.showToast()
}))
}
showToast(t) {
const e = document.createElement("bundle-toast");
t && (e.text = t), document.body.appendChild(e)
}
render() {
const t = this.data.variants.find((t => t.id === this.data.selected_id)),
e = null == t ? void 0 : t.price,
i = null == t ? void 0 : t.compare_at_price,
o = window.innerWidth < 960,
n = this.currentImgIndex > 0,
s = this.currentImgIndex < this.imgList.length - 1;
return R`<div class="modal"><div class="content"><div class="slider"><div class="image"><img src="${this.imgList[this.currentImgIndex]}" class="lazyload" alt="appbundle"> ${n?R`<div class="arrow arrow-l" @click="${()=>this.changeNextOrPrev(-1)}"><svg viewBox="0 0 100 100"><path d="M30 50l25 25 5-5-20-20 20-20-5-5z" fill="#fff"/></svg></div>`:""} ${s?R`<div class="arrow arrow-r" @click="${()=>this.changeNextOrPrev(1)}"><svg viewBox="0 0 100 100"><path d="M70 50L45 25l-5 5 20 20-20 20 5 5z" fill="#fff"/></svg></div>`:""}</div><div class="list" style="grid-template-columns:repeat(${this.imgList.length},${o?this.imgList.length>1?"75%":"100%":"68px"})">${this.imgList.map(((t,e)=>R`<img alt="appbundle" class="lazyload img-item ${e===this.currentImgIndex?"img-item-selected":""} ${1===this.imgList.length?"lonely":""}" src="${t}" @click="${()=>this.changeImage(e)}">`))} ${this.imgList.length>1?R`<div class="position notranslate">${this.currentPosition}/${this.imgList.length}</div>`:""}</div></div><div class="body"><div class="header"><div class="title">${this.data.title}</div>${_e?R`<div><a href="${It(this.data.url)}" class="see-detail see-detail-trial">See detail${this.icon}</a></div><div class="w-price-list notranslate">${((null==t?void 0:t.wholesale_price)||[]).map((t=>R`<div class="w-price-item"><div class="w-price ${this.getQualifiedWPriceClassName(t)}">${Nt(t.price)}</div><div class="w-item">${t.max_quantity?`${t.min_quantity} - ${t.max_quantity} Pieces`:`>= ${t.min_quantity} Pieces`}</div></div>`))}</div>`:R`<div class="sub"><div class="prices"><span class="price money notranslate">${this.priceScope||Nt(e)}</span> <span class="compare-price money notranslate">${Nt(i)}</span></div><a href="${It(this.data.url)}" class="see-detail">See detail${this.icon}</a></div>`}</div>${o?R`<div class="divider"></div>`:""}<div class="options"><bundle-product-option .selectedOptions="${this.selectedOptions}" .options="${this.data.options}" .data="${this.data}" @variantClick="${this.variantClick}" @variantChange="${this.variantChange}"></bundle-product-option></div><div class="quantity"><div class="quantity_title">Quantity</div><div class="num_select_mobile"><div class="num_item_sub ${1==+this.numDropDown?"num_item_not_allow":""}"><svg fill="currentColor" width="13" height="14" xmlns="http://www.w3.org/2000/svg"><rect y="6" width="13" height="1" rx=".5" transform="translate(0 .5)" fill-rule="evenodd"></rect></svg></div><input type="tel" class="num_input" .value="${this.numDropDown}"><div class="num_item_add ${+this.numDropDown>=t.available_quantity?"num_item_not_allow":""}"><svg width="13" height="14" xmlns="http://www.w3.org/2000/svg"><path d="M6.5 0a.5.5 0 0 1 .5.5V6h5.5a.5.5 0 1 1 0 1H7v5.5a.5.5 0 1 1-1 0V7H.5a.5.5 0 0 1 0-1H6V.5a.5.5 0 0 1 .5-.5z" fill="currentColor"></path></svg></div></div></div><div class="btn"><bundle-button text-color="${this.btnTextColor}" bg-color="${this.btnBgColor}" @click="${this.addToCart}" ?loading="${this.loading}">Add to Cart</bundle-button></div></div><div class="close-icon" @click="${this.closeModal}">${this.closeIcon}</div></div><div class="mask" @click="${this.closeModal}"></div></div>`
}
}
$e.styles =
l`.content{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1101;background-color:#fff;display:flex}@media (max-width:960px){.content{top:68px;left:0;right:0;bottom:0;transform:unset;flex-direction:column;overflow:scroll;padding-bottom:86px}}.slider{position:relative;flex-shrink:0;padding:24px;width:360px;user-select:none;padding-inline-end:0}@media (max-width:960px){.slider{width:100%;padding:0}}.title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#212b36;line-height:22px;font-size:16px}.price{font-size:22px;font-weight:500;color:var(--color_price);line-height:22px}.prices{display:flex;align-items:center}.compare-price{margin-left:8px;font-size:16px;font-weight:400;color:var(--color_origin_price);line-height:22px;text-decoration:line-through}@media (min-width:960px){.options{max-height:420px;overflow:scroll;scrollbar-width:none;-ms-overflow-style:none}.options::-webkit-scrollbar{display:none}}.image{position:relative;width:100%;height:480px}@media (max-width:960px){.image{display:none}}.image>img{width:100%;height:100%;object-fit:contain}.arrow{position:absolute;top:50%;width:40px;height:40px;background-color:rgba(0,0,0,.14);border-radius:50%;cursor:pointer;z-index:1}.arrow-not-allow{opacity:.7}.arrow-l{left:16px;transform:translate(0,-50%)}.arrow-r{right:16px;transform:translate(0,-50%)}.body{display:flex;flex-direction:column;width:350px;padding:24px 48px 24px 40px}.quantity{font-size:14px}.quantity_title{margin-bottom:8px}.num_select_mobile{display:none}.num_select_mobile{display:flex;align-items:center;justify-content:center;width:120px}.num_item_add,.num_item_sub{border:1px solid #ddd;cursor:pointer}.num_item_add,.num_item_sub,.num_item_val{display:flex;align-items:center;justify-content:center;width:38px;height:38px}.num_item_not_allow{background-color:#e6e6e6;color:rgba(16,16,16,.3)}.num_input{box-sizing:border-box;border:1px solid transparent;width:36px;height:40px;outline:0;font-size:16px;text-align:center}.quantity_select{display:flex}.select_icon{margin-top:10px;margin-left:-26px;pointer-events:none}@media (max-width:960px){.body{width:100%;padding:16px;box-sizing:border-box}}.header{display:flex;flex-direction:column}.sub{display:flex;align-items:center;padding:16px 0}.see-detail{display:flex;align-items:center;margin-left:auto;color:#30354d;font-size:14px;text-decoration:auto;cursor:pointer;white-space:nowrap;flex-shrink:0}.see-detail svg{margin-left:4px;transform:rotateZ(270deg)}.see-detail-trial{margin-top:8px}.w-price-list{display:flex;padding:12px 16px;background:#f9f9fa;border-radius:4px;overflow-x:scroll;margin-top:8px}.w-price-list::-webkit-scrollbar{height:4px}.w-price-list::-webkit-scrollbar-track{background:#f9f9fa}.w-price-list::-webkit-scrollbar-thumb{background:#cccbcb;border-radius:2px}.w-price-list::-webkit-scrollbar-thumb:hover{background:#888}.w-price-item{margin-right:32px;flex-shrink:0}.w-price-item:last-child{margin-right:0}.w-price{font-weight:500;font-size:16px;line-height:23px;color:val(--color-body-text,#292929)}.w-price-qualified{color:#ff3f02}.w-item{font-weight:400;font-size:12px;line-height:17px;color:rgba(41,41,41,.7);margin-top:4px}.list{display:grid;grid-column-gap:8px;overflow-x:scroll;width:100%;margin-top:8px;scrollbar-width:none;-ms-overflow-style:none}.list::-webkit-scrollbar{display:none}@media (max-width:960px){.list{scroll-snap-type:x mandatory;margin-top:0}.sub{padding:8px 0}.price{font-size:20px}.divider{border-bottom:1px solid #d8dbe6;margin:12px 0 20px 0}.see-detail{font-size:12px}}@media (min-width:960px){.position{display:none}}.position{position:absolute;right:12px;bottom:12px;z-index:1;background:rgba(0,0,0,.4);border-radius:17px 17px 17px 17px;padding:4px 8px;font-size:12px;color:#fff;line-height:14px}.img-item{width:68px;height:68px;object-fit:cover;border-radius:4px;box-sizing:border-box}@media (max-width:960px){.img-item{width:100%;height:75vw;scroll-snap-align:start;border-radius:0}.lonely{height:80vw;object-fit:contain;background-color:#f9f9f9}}@media (min-width:960px){.img-item-selected{padding:3px;border:1px solid #212b36}}.btn{margin-top:auto;text-align:center;padding-top:16px;margin-bottom:-8px}@media (max-width:960px){.btn{position:fixed;bottom:0;left:0;width:100%;box-sizing:border-box;padding:16px;box-shadow:0 2px 10px 1px rgb(0 0 0 / 10%);background-color:#fff;margin-bottom:0}.title{font-size:14px;line-height:16px}}.mask{position:fixed;top:0;left:0;bottom:0;right:0;z-index:1100;background-color:rgba(0,0,0,.7)}.close-icon{position:absolute;top:8px;right:8px;display:flex;justify-content:center;align-items:center;color:#0a1533;width:36px;height:36px;background-color:transparent;cursor:pointer;z-index:1}html[dir=rtl] .close-icon{left:8px;right:unset}@media (max-width:960px){.close-icon{position:fixed;top:80px;right:12px;color:#fff;border-radius:50%;background-color:rgba(0,0,0,.2)}}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}`,
t([ht(".list")], $e.prototype, "listEl", void 0), t([dt()], $e.prototype, "data", void 0), t([dt()], $e.prototype, "selectedOptions", void 0), t([dt({
type: Array
})], $e.prototype, "options", void 0), t([dt()], $e.prototype, "close", void 0), t([dt()], $e.prototype, "numDropDown", void 0), t([dt({
attribute: "btn-bg-color"
})], $e.prototype, "btnBgColor", void 0), t([dt({
attribute: "btn-text-color"
})], $e.prototype, "btnTextColor", void 0), t([dt({
attribute: "top"
})], $e.prototype, "currentScrollTop", void 0), t([ct()], $e.prototype, "imgList", void 0), t([ct()], $e.prototype, "currentImgIndex", void 0), t([ct()], $e.prototype, "currentPosition", void 0), t([ct()], $e.prototype,
"loading", void 0), t([ct()], $e.prototype, "priceScope", void 0), window.customElements.get("bundle-product-modal") || window.customElements.define("bundle-product-modal", $e);
class Se extends st {
updated() {
var t;
const e = window.innerWidth < 960,
i = !document.querySelector('div[data-section-type*="//apps/appbundle/blocks/bundle-combination/"] bundle-product-list'),
o = this.shadowRoot.querySelector(".wrap"),
n = this.shadowRoot.querySelector(".skeleton");
i && !e && (o.style.padding = "40px 0", n.style.padding = "40px 8px 12px", null === (t = this.shadowRoot.querySelector(".skeleton br")) || void 0 === t || t.remove()), i && e && (o.style.padding = "16px 0"), i || e || (o
.style.padding = "40px 0"), !i && e && (o.style.padding = "16px 0")
}
render() {
return R`<div class="wrap"><div class="skeleton">The current item does not participate in the bundling. Switch the participating items to check the design.<br>(This prompt will not be displayed on the client-side)</div></div>`
}
}
Se.styles =
l`.wrap{max-width:var(--layout-width,1000px);margin:0 auto}.skeleton{position:relative;border-radius:4px;border:2px dashed #000;color:#000;line-height:20px!important;text-align:center;font-size:14px;padding:24px 16px;font-weight:500}@media (max-width:960px){.skeleton{font-size:12px;padding:40px 8px 12px!important}.skeleton::before{font-size:12px}}.skeleton::before{content:"Bundle sales";position:absolute;top:-2px;left:-2px;padding:8px 12px;font-size:14px;background-color:#000;color:#fff;border-radius:4px 0 4px 0;text-align:center;font-weight:500}`,
window.customElements.get("bundle-skeleton") || window.customElements.define("bundle-skeleton", Se);
class Ce extends st {
constructor() {
super(...arguments), this.text = "", this.successHtml =
R`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M12 24C5.373 24 0 18.628 0 12S5.373 0 12 0s12 5.373 12 12-5.373 12-12 12zm0-21.685c-5.68 0-9.686 4.006-9.686 9.686S6.32 21.686 12 21.686s9.686-4.005 9.686-9.685c0-5.68-4.006-9.686-9.686-9.686zm-1.11 13.721l-.207.207-.04-.04a.833.833 0 0 1-.357.084.838.838 0 0 1-.482-.168l-.02.02-.103-.103-.002-.001-3.532-3.533 1.212-1.212 2.927 2.927 6.458-6.46 1.213 1.213-7.064 7.065-.002.001z" fill="#EE7C30"/></svg>`
}
firstUpdated() {
setTimeout((() => {
const t = document.querySelector("bundle-toast");
null == t || t.remove()
}), 3e3)
}
render() {
return R`<div class="toast">${this.text?"":R`<div class="icon">${this.successHtml}</div>`} ${this.text||'Added'}</div>`
}
}
Ce.styles =
l`.toast{position:fixed;z-index:1250;left:50%;transform:translateX(-50%);display:flex;justify-content:center;align-items:center;padding:12px 120px;background-color:rgba(0,0,0,.8);font-size:16px;color:#fff;animation:fade_pc 3s;animation-fill-mode:forwards;border-radius:4px;text-align:center}.icon{display:flex;align-items:center;margin-right:12px}@media (max-width:960px){.toast{padding:12px 28px;animation:fade_mobile 3s;animation-fill-mode:forwards}}@keyframes fade_pc{0%{opacity:.1;top:20px}20%{opacity:1;top:100px}80%{opacity:1;top:100px}100%{opacity:0;top:20px}}@keyframes fade_mobile{0%{opacity:.1;top:0}20%{opacity:1;top:50px}80%{opacity:1;top:50px}100%{opacity:0;top:0}}`,
t([dt()], Ce.prototype, "text", void 0), window.customElements.get("bundle-toast") || window.customElements.define("bundle-toast", Ce);
class ke extends st {
constructor() {
super(...arguments), this.overWidth = !1, this.titleText = "", this.savePrice = "", this.salePrice = "", this.switchable = !1, this.atcBtnStyle = 1, this.titleColor = "", this.btnBgColor = "", this.btnTextColor = "", this
.bundleInfo = {}, this.styleType = "sutra", this.isQuickShop = !1, this.selected_all = !1, this.select_one = !1, this.selectedInfo = [], this.loading = !1, this.success = !1, this.styleTypeClass = ""
}
renderImgs(t, e) {
var i;
const o = this.overWidth;
return null === (i = this.selectedInfo) || void 0 === i ? void 0 : i.slice(t, e).map(((e, i) => {
var n, s, r;
const l = null === (n = e.variants) || void 0 === n ? void 0 : n.find((t => t.id === e.selected_id)),
a = (null === (s = null == l ? void 0 : l.image) || void 0 === s ? void 0 : s.src) || (null === (r = e.image) || void 0 === r ? void 0 : r.src);
return R`<div class="img-item">${0!==i||3===t?R`<svg style="${o?"":"padding: 0 12px;"}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path d="M18.573 8.571h-7.145V1.428a1.427 1.427 0 1 0-2.856 0V8.57H1.428a1.428 1.428 0 0 0 0 2.856h7.144v7.144a1.428 1.428 0 0 0 2.856 0v-7.145h7.144a1.428 1.428 0 0 0 0-2.855z" fill="#C5C5C5"/></svg>`:""}<bundle-product-img class="sutra ${o?"":"w-full"}" ?is-select="${e.is_selected}" .isQuickShop="${this.isQuickShop}" .count="${e.count}" .href="${e.url}" .src="${a}" @click="${()=>this.clickProduct(e)}"></bundle-product-img></div>`
}))
}
clickProduct(t) {
this.dispatchEvent(new CustomEvent("clickProduct", {
detail: t
}))
}
clickSelect() {
this.dispatchEvent(new CustomEvent("clickSelect"))
}
render() {
const t = this.overWidth,
e =
R`<bundle-add-cart class="sutra ${t?"":"w-full"}" styleTypeClass="${this.styleTypeClass}" layer_type="${this.bundleInfo.layer_type}" total_price="${this.bundleInfo.totalPrice}" value="${this.bundleInfo.value}" value_type="${this.bundleInfo.value_type}" .atcBtnStyle="${this.atcBtnStyle}" .salePrice="${this.salePrice}" .savePrice="${this.savePrice}" .selectedInfo="${this.selectedInfo}" .selected_all="${this.selected_all}" .success="${this.success}" .loading="${this.loading}" .btnTextColor="${this.btnTextColor}" .btnBgColor="${this.btnBgColor}" .select_one="${this.select_one}"></bundle-add-cart>`;
return R`<div class="container"><div class="content-list"><div class="img-list" style="${t?"":"justify-content:center; flex-wrap: wrap"}"><div class="first-list">${this.renderImgs(0,3)}</div><div class="second-list">${this.renderImgs(3)}</div></div>${t?e:""}</div><div class="select-list">${this.selectedInfo.map(((e,i)=>R`<div class="content"><div class="checkbox-wrap ${t?"":"checkbox-top"}"><bundle-check-box class="${this.styleTypeClass}" styleTypeClass="${this.styleTypeClass}" .data="${e}" .index="${i}" ?this-one="${e.thisOne}"></bundle-check-box></div><div class="select-wrap"><bundle-product-select class="sutra ${t?"":"w-full"}" ?this-one="${e.thisOne}" .data="${e}" .index="${i}" @click="${this.clickSelect}"></bundle-product-select></div></div>`))}</div>${t?"":e}</div>`
}
}
ke.styles =
l`.select-list{width:100%}.container{display:flex;flex-wrap:wrap}.checkbox-wrap{flex-shrink:0}.select-wrap{flex:1;width:0}.content{position:relative;display:flex;flex-wrap:wrap;align-items:center;margin-bottom:16px;flex-wrap:wrap;font-size:14px}.content-list{display:flex;margin-bottom:24px}.content-list svg{width:20px;height:20px;padding:0 16px}.img-list{display:flex}.img-item{display:flex;align-items:center;margin-top:32px}.grow-1{flex-grow:1;text-align:center}.first-list,.second-list{display:flex}.checkbox-top{align-self:flex-start}@media (max-width:960px){.checkbox-wrap{align-self:flex-start}.content-list svg{width:12px;height:12px;padding:0 8px!important}.bundle_money{color:var(--color_price)}.origin_money{font-size:14px}.img-item{margin-top:16px}.first-list{width:100%;justify-content:center}.second-list{width:100%;margin-left:50px}}`,
t([dt({
type: Boolean
})], ke.prototype, "overWidth", void 0), t([dt({
type: String,
attribute: "title-text"
})], ke.prototype, "titleText", void 0), t([dt({
attribute: "savePrice"
})], ke.prototype, "savePrice", void 0), t([dt({
attribute: "salePrice"
})], ke.prototype, "salePrice", void 0), t([dt()], ke.prototype, "switchable", void 0), t([dt({
attribute: "atcBtnStyle"
})], ke.prototype, "atcBtnStyle", void 0), t([dt({
type: String,
attribute: "title-color"
})], ke.prototype, "titleColor", void 0), t([dt({
type: String,
attribute: "btn-bg-color"
})], ke.prototype, "btnBgColor", void 0), t([dt({
type: String,
attribute: "btn-text-color"
})], ke.prototype, "btnTextColor", void 0), t([dt({
type: Object,
attribute: "bundleInfo"
})], ke.prototype, "bundleInfo", void 0), t([dt({
type: String,
attribute: "style-type"
})], ke.prototype, "styleType", void 0), t([dt({
type: Boolean
})], ke.prototype, "isQuickShop", void 0), t([dt({
type: Boolean,
attribute: "selected_all"
})], ke.prototype, "selected_all", void 0), t([dt({
type: Boolean,
attribute: "select_one"
})], ke.prototype, "select_one", void 0), t([dt({
type: Object,
attribute: "selectedInfo",
reflect: !0
})], ke.prototype, "selectedInfo", void 0), t([dt({
type: Boolean,
attribute: "loading"
})], ke.prototype, "loading", void 0), t([dt({
type: Boolean,
attribute: "success"
})], ke.prototype, "success", void 0), t([dt()], ke.prototype, "styleTypeClass", void 0), window.customElements.get("bundle-sutra") || window.customElements.define("bundle-sutra", ke);
class Ee extends st {
constructor() {
super(...arguments), this.overWidth = !1, this.titleText = "", this.salePrice = "", this.savePrice = "", this.switchable = !1, this.atcBtnStyle = 1, this.titleColor = "", this.btnBgColor = "", this.btnTextColor = "", this
.bundleInfo = {}, this.styleType = "sutra", this.isQuickShop = !1, this.selected_all = !1, this.select_one = !1, this.selectedInfo = [], this.loading = !1, this.success = !1, this.styleTypeClass = "", this.vertical = !1,
this.scrollTimer = null, this.isShowArrow = !1, this.isArSa = "ar-SA" === document.documentElement.lang
}
clickProduct(t) {
this.dispatchEvent(new CustomEvent("clickProduct", {
detail: t
}))
}
clickSelect() {
this.dispatchEvent(new CustomEvent("clickSelect"))
}
shiftMove(t) {
if (this.scrollContainer) {
let e = this.scrollContainer.scrollLeft;
if (t) e -= 230, this.isArSa || (e = e < 0 ? 0 : e);
else {
const t = this.scrollContainer.offsetWidth,
i = this.scrollContainer.scrollWidth - t;
e += 230, e = e > i ? i : e
}
this.scrollContainer.scrollTo ? this.scrollContainer.scrollTo({
left: e,
behavior: "smooth"
}) : this.scrollContainer.scrollLeft = e
}
}
shiftLeft() {
this.shiftMove(!0)
}
shiftRight() {
this.shiftMove(!1)
}
showArrow() {
this.isShowArrow = !0
}
hideArrow() {
this.isShowArrow = !1
}
updated() {
if (window.innerWidth < 960) return;
const {
isInProductInfo: t
} = qt(!1);
t ? this.fashionContainer.classList.add("fashion--in") : this.fashionContainer.classList.remove("fashion--in")
}
render() {
var t;
const e = this.styleTypeClass === Vt.FASHION_VERTICAL;
let i = !1;
return this.scrollContainer && (i = this.scrollContainer.scrollWidth > this.scrollContainer.offsetWidth),
R`<div class="fashion-container ${this.styleTypeClass}"><div class="container" @mouseenter="${this.showArrow}" @mouseleave="${this.hideArrow}"><div class="container-scroll"><div class="container-scroll-inner">${null===(t=this.selectedInfo)||void 0===t?void 0:t.map(((t,e)=>{var i,o,n;const s=null===(i=t.variants)||void 0===i?void 0:i.find((e=>e.id===t.selected_id)),r=(null===(o=null==s?void 0:s.image)||void 0===o?void 0:o.src)||(null===(n=t.image)||void 0===n?void 0:n.src);return R`<div class="container-img"><div class="img-checkbox"><bundle-check-box class="${this.styleTypeClass} ${this.overWidth?"":"fashion-full"}" styleTypeClass="${this.styleTypeClass}" .data="${t}" .index="${e}" ?this-one="${t.thisOne}"></bundle-check-box></div><div class="img-wrap"><bundle-product-img class="${this.styleTypeClass} ${this.overWidth?"":"fashion-full"}" styleTypeClass="${this.styleTypeClass}" ?is-select="${t.is_selected}" .isQuickShop="${this.isQuickShop}" .count="${t.count}" .href="${t.url}" .src="${r}" @click="${()=>this.clickProduct(t)}"></bundle-product-img></div><div class="select-specification"><bundle-product-select class="${this.styleTypeClass} ${this.overWidth?"":"fashion-full"}" styleTypeClass="${this.styleTypeClass}" ?this-one="${t.thisOne}" .data="${t}" .index="${e}" @click="${this.clickSelect}"></bundle-product-select></div></div>`}))}</div></div>${e?"":R`<div class="container-arrow-left container-arrow flex-center ${this.isShowArrow&&i?"container-arrow--show":""}" @mouseup="${this.shiftLeft}">${Jt}</div>`} ${e?"":R`<div class="container-arrow-right container-arrow flex-center ${this.isShowArrow&&i?"container-arrow--show":""}" @mouseup="${this.shiftRight}">${Yt}</div>`}</div><div class="interval"></div><div class="totalinfo">${R`<bundle-add-cart class="${this.styleTypeClass} ${this.overWidth?"":"fashion-full"}" styleTypeClass="${this.styleTypeClass}" total_price="${this.bundleInfo.totalPrice}" layer_type="${this.bundleInfo.layer_type}" value="${this.bundleInfo.value}" value_type="${this.bundleInfo.value_type}" .atcBtnStyle="${this.atcBtnStyle}" .salePrice="${this.salePrice}" .savePrice="${this.savePrice}" .selectedInfo="${this.selectedInfo}" .selected_all="${this.selected_all}" .success="${this.success}" .loading="${this.loading}" .btnTextColor="${this.btnTextColor}" .btnBgColor="${this.btnBgColor}" .select_one="${this.select_one}"></bundle-add-cart>`}</div></div>`
}
}
Ee.styles = [l`.fashion-container{overflow:hidden;display:flex;border:1px solid #e6e6e6}.flex-center{display:flex;align-items:center;justify-content:center}`,
l`.fashionHorizontal.fashion-container{flex-direction:row;padding:20px;display:inline-flex;max-width:100%;box-sizing:border-box}.fashionHorizontal .container{flex:1;min-width:0;position:relative}.fashionHorizontal .container-scroll{overflow:overlay;width:100%;height:100%}.fashionHorizontal .container-scroll::-webkit-scrollbar{width:0;height:0}.fashionHorizontal .container-scroll-inner{display:flex;height:100%}.fashionHorizontal .container-img{position:relative;width:210px;display:flex;flex-direction:column;flex-shrink:0}.fashionHorizontal .container-img:not(:first-child){margin-left:20px}.fashionHorizontal .img-checkbox{position:absolute;top:10px;right:10px;z-index:10}.fashionHorizontal .container-arrow{position:absolute;width:40px;height:40px;top:50%;border-radius:50%;border:1px solid #e6e6e6;transform:translateY(-50%);background-color:#fff;cursor:pointer;opacity:0;transition:opacity .3s cubic-bezier(.455,.03,.515,.955)}.fashionHorizontal .container-arrow--show{opacity:1}.fashionHorizontal .container-arrow-left{left:10px}.fashionHorizontal .container-arrow-right{right:10px}.fashionHorizontal .interval{border-left:1px solid #e6e6e6;margin:0 20px;flex-shrink:0}.fashionHorizontal .select-specification{margin-top:12px}.fashionHorizontal .totalinfo{display:flex;align-items:center;padding:0 30px;width:220px;flex-shrink:0;box-sizing:border-box}.fashion--in.fashionHorizontal.fashion-container{flex-direction:column;padding:16px;display:flex}.fashion--in.fashionHorizontal .container{width:auto}.fashion--in.fashionHorizontal .interval{border-top:1px solid #e6e6e6;margin:20px 0;flex-shrink:0}.fashion--in.fashionHorizontal .container-img{width:calc((100% - 32px)/ 3)}.fashion--in.fashionHorizontal .container-img:not(:first-child){margin-left:16px}.fashion--in.fashionHorizontal .select-specification{margin-top:10px}.fashion--in.fashionHorizontal .totalinfo{width:auto;padding:0}@media (max-width:960px){.fashionHorizontal.fashion-container{flex-direction:column;padding:16px;display:flex}.fashionHorizontal .container{width:auto}.fashionHorizontal .interval{border-top:1px solid #e6e6e6;margin:20px 0;flex-shrink:0}.fashionHorizontal .container-img{width:120px}.fashion--in.fashionHorizontal .container-img{width:120px}.fashionHorizontal .container-img:not(:first-child){margin-left:16px}.fashionHorizontal .select-specification{margin-top:10px}.fashionHorizontal .totalinfo{width:auto;padding:0}}`,
l`.fashionVertical.fashion-container{flex-direction:column;padding:10px 0}.fashionVertical .container-img{display:flex;padding:20px}.fashionVertical .img-checkbox{flex-shrink:0;display:flex;align-items:center}.fashionVertical .select-specification{flex:1;width:0}.fashionVertical .interval{border-top:1px solid #e6e6e6;margin:10px 20px;flex-shrink:0}.fashionVertical .totalinfo{display:flex;flex-direction:column;padding:20px}.fashion--in.fashionVertical .container-img{padding:20px 16px}.fashion--in.fashionVertical .interval{margin:0 16px}.fashion--in.fashionVertical .totalinfo{padding:20px 16px}@media (max-width:960px){.fashionVertical .container-img{padding:20px 16px}.fashionVertical .interval{margin:0 16px}.fashionVertical .totalinfo{padding:20px 16px}}`
], t([dt({
type: Boolean
})], Ee.prototype, "overWidth", void 0), t([dt({
type: String,
attribute: "title-text"
})], Ee.prototype, "titleText", void 0), t([dt({
attribute: "salePrice"
})], Ee.prototype, "salePrice", void 0), t([dt({
attribute: "savePrice"
})], Ee.prototype, "savePrice", void 0), t([dt()], Ee.prototype, "switchable", void 0), t([dt({
attribute: "atcBtnStyle"
})], Ee.prototype, "atcBtnStyle", void 0), t([dt({
type: String,
attribute: "title-color"
})], Ee.prototype, "titleColor", void 0), t([dt({
type: String,
attribute: "btn-bg-color"
})], Ee.prototype, "btnBgColor", void 0), t([dt({
type: String,
attribute: "btn-text-color"
})], Ee.prototype, "btnTextColor", void 0), t([dt({
type: Object,
attribute: "bundleInfo"
})], Ee.prototype, "bundleInfo", void 0), t([dt({
type: String,
attribute: "style-type"
})], Ee.prototype, "styleType", void 0), t([dt({
type: Boolean
})], Ee.prototype, "isQuickShop", void 0), t([dt({
type: Boolean,
attribute: "selected_all"
})], Ee.prototype, "selected_all", void 0), t([dt({
type: Boolean,
attribute: "select_one"
})], Ee.prototype, "select_one", void 0), t([dt({
type: Object,
attribute: "selectedInfo",
reflect: !0
})], Ee.prototype, "selectedInfo", void 0), t([dt({
type: Boolean,
attribute: "loading"
})], Ee.prototype, "loading", void 0), t([dt({
type: Boolean,
attribute: "success"
})], Ee.prototype, "success", void 0), t([dt()], Ee.prototype, "styleTypeClass", void 0), t([ht(".fashion-container")], Ee.prototype, "fashionContainer", void 0), t([ht(".container-scroll")], Ee.prototype, "scrollContainer",
void 0), t([ct()], Ee.prototype, "vertical", void 0), t([ct()], Ee.prototype, "scrollTimer", void 0), t([ct()], Ee.prototype, "isShowArrow", void 0), t([ct()], Ee.prototype, "isArSa", void 0), window.customElements.get(
"bundle-fashion") || window.customElements.define("bundle-fashion", Ee);
class Te extends st {
constructor() {
super(...arguments), this.layer_type = Ft, this.value = "", this.value_type = "", this.total_price = "", this.atcBtnStyle = 1, this.selectedInfo = [], this.selected_all = !1, this.salePrice = "", this.savePrice = "", this
.loading = !1, this.success = !1, this.select_one = !1, this.btnTextColor = "", this.btnBgColor = "", this.styleTypeClass = ""
}
updated() {
if (window.innerWidth < 960) return;
const {
isInProductInfo: t
} = qt();
t && this.addCartPanel.classList.add("addCartPanel--in")
}
addToCart() {
this.dispatchEvent(new CustomEvent("addToCart", {
bubbles: !0,
composed: !0
}))
}
buySelectedProduct() {
this.dispatchEvent(new CustomEvent("buySelectedProduct", {
bubbles: !0,
composed: !0
}))
}
render() {
const t = this.layer_type === Wt && 0 !== Number(this.savePrice),
e = !t && this.selected_all,
i = t || e ? this.total_price : this.salePrice,
o = this.value_type === Mt && !t && Number(this.value) >= Number(this.salePrice),
n = !t && !this.selected_all || "none" === this.value_type || o ? "display: none" : "",
s = this.selectedInfo.every((t => !t.is_selected));
return R`<div class="addCartPanel ${this.styleTypeClass}">${this.styleTypeClass&&0!==Number(this.savePrice)&&(t||this.selected_all)?R`<div class="discountAmount"><span>save</span> <span class="money notranslate">${` ${Nt(this.savePrice)}`}</span></div>`:""}<div class="price"><span class="price-title">Total price:</span> <span class="bundle_money money notranslate">${Nt(i)}</span> <span class="origin_money money notranslate money_delete" style="${n}">${Nt(this.salePrice)}</span></div><div class="add-cart-btn"><bundle-button class="${this.styleTypeClass}" text-color="${this.btnTextColor}" bg-color="${this.btnBgColor}" ?disabled="${s}" ?loading="${this.loading}" ?success="${this.success}" @click="${2===this.atcBtnStyle?this.buySelectedProduct:this.addToCart}">${2===this.atcBtnStyle?'Buy Now':this.select_one?'Add to Cart':'Add selected to cart'}</bundle-button></div></div>`
}
}
Te.styles = [
l`.addCartPanel{flex-shrink:0}.discountAmount{display:inline-block;border:1px solid var(--color-text-critical,#db393a);color:var(--color-text-critical,#db393a);font-size:14px;font-weight:400;padding:4px 8px}.price-title{white-space:nowrap}.bundle_money{color:var(--color_price,#db393a);font-weight:500;white-space:nowrap}.origin_money{color:var(--color_price);font-weight:500;font-size:16px;white-space:nowrap}.money_delete{text-decoration:line-through;color:var(--color_origin_price)}`,
l`:host(.sutra){width:100%}:host(.sutra) .addCartPanel{margin-top:56px;text-align:center;margin-left:60px;white-space:nowrap}:host(.sutra) .price{display:flex;justify-content:center;align-items:center;margin-bottom:16px;line-height:20px;font-size:16px}:host(.sutra) .price-title{margin-right:8px}:host(.sutra) .bundle_money{margin-right:8px}:host(.sutra) .origin_money{margin-right:8px}:host(.w-full) .addCartPanel{width:100%;text-align:center;margin-top:8px;margin-left:0}@media (max-width:960px){:host(.sutra) .addCartPanel{width:100%;text-align:center;margin-top:8px;margin-left:0}}`,
l`:host(.fashionHorizontal){width:100%}.fashionHorizontal .discountAmount{margin-bottom:20px}.fashionHorizontal .price{margin-bottom:40px;display:flex;flex-wrap:wrap;align-items:baseline}.fashionHorizontal .price-title{width:100%;margin-bottom:8px;color:val(--color-body-text,#292929);font-family:Jost;font-size:18px;font-style:normal;font-weight:500;line-height:20px;text-transform:capitalize}.fashionHorizontal .bundle_money{margin-right:10px;font-size:24px}.fashionHorizontal .origin_money{font-weight:400}.addCartPanel--in.fashionHorizontal .price-title{width:auto}.addCartPanel--in.fashionHorizontal.addCartPanel{display:flex;flex-direction:column;align-items:flex-end}.addCartPanel--in.fashionHorizontal .price{text-align:right;margin-bottom:30px;justify-content:flex-end}.addCartPanel--in.fashionHorizontal .bundle_money{margin:0 10px}.addCartPanel--in.fashionHorizontal .add-cart-btn{width:auto}@media (max-width:960px){.addCartPanel--in.fashionHorizontal.addCartPanel,.fashionHorizontal.addCartPanel{display:flex;flex-direction:column;align-items:center}.fashionHorizontal .price-title{width:auto}.fashionHorizontal .price{margin-bottom:30px}.fashionHorizontal .bundle_money{margin:0 10px}.addCartPanel--in.fashionHorizontal .add-cart-btn,.fashionHorizontal .add-cart-btn{width:100%}}`,
l`.fashionVertical{text-align:right;white-space:nowrap}.fashionVertical .discountAmount{margin-bottom:10px}.fashionVertical .price{margin-bottom:30px;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:baseline}.fashionVertical .price-title{margin-bottom:8px;color:val(--color-body-text,#292929);font-family:Jost;font-size:18px;font-style:normal;font-weight:500;line-height:20px;text-transform:capitalize}.fashionVertical .bundle_money{margin:0 10px;font-size:22px}.fashionVertical .origin_money{font-weight:400}.fashionVertical .add-cart-btn{width:auto;display:inline-block;margin-left:auto}:host(.fashion-full) .fashionVertical .add-cart-btn{width:auto}@media (max-width:960px){.fashionVertical .add-cart-btn,:host(.fashion-full) .fashionVertical .add-cart-btn{width:100%}}`
], t([dt()], Te.prototype, "layer_type", void 0), t([dt()], Te.prototype, "value", void 0), t([dt()], Te.prototype, "value_type", void 0), t([dt()], Te.prototype, "total_price", void 0), t([dt({
attribute: "atcBtnStyle"
})], Te.prototype, "atcBtnStyle", void 0), t([dt({
type: Object,
attribute: "selectedInfo",
reflect: !0
})], Te.prototype, "selectedInfo", void 0), t([dt({
type: Boolean,
attribute: "selected_all"
})], Te.prototype, "selected_all", void 0), t([dt({
attribute: "salePrice"
})], Te.prototype, "salePrice", void 0), t([dt({
attribute: "savePrice"
})], Te.prototype, "savePrice", void 0), t([dt({
type: Boolean,
attribute: "loading"
})], Te.prototype, "loading", void 0), t([dt({
type: Boolean,
attribute: "success"
})], Te.prototype, "success", void 0), t([dt({
type: Boolean,
attribute: "select_one"
})], Te.prototype, "select_one", void 0), t([dt({
attribute: "btnTextColor"
})], Te.prototype, "btnTextColor", void 0), t([dt({
attribute: "btnBgColor"
})], Te.prototype, "btnBgColor", void 0), t([dt()], Te.prototype, "styleTypeClass", void 0), t([ht(".addCartPanel")], Te.prototype, "addCartPanel", void 0), window.customElements.get("bundle-add-cart") || window.customElements
.define("bundle-add-cart", Te);
class Pe extends st {
constructor() {
super(...arguments), this.data = {}, this.styleTypeClass = "", this.thisOne = !1, this.index = 0
}
onChange() {
this.dispatchEvent(new CustomEvent("changeCheckBox", {
detail: {
index: this.index
},
bubbles: !0,
composed: !0
}))
}
requestUpdate() {
super.requestUpdate()
}
render() {
return R`<div class="content_flex"><input style="display:none" type="checkbox" class="bundle-checked" id="bundle-checked" .checked="${this.data.is_selected}" @click="${this.onChange}"> <label for="bundle-checked" class="check-label"><div class="close-icon">${this.data.is_selected?this.styleTypeClass?Zt:Kt:Xt}</div></label></div>`
}
}
Pe.styles =
l`.content_flex{display:flex;align-items:center;position:relative}.check-label{display:flex;align-items:center}.close-icon{display:flex;cursor:pointer}:host(.fashionHorizontal) .close-icon svg,:host(.fashionVertical) .close-icon svg{width:24px;height:24px}:host(.fashion-full.fashionHorizontal) .close-icon svg,:host(.fashion-full.fashionVertical) .close-icon svg{width:16px;height:16px}@media (max-width:960px){:host(.fashionHorizontal) .close-icon svg,:host(.fashionVertical) .close-icon svg{width:16px;height:16px}}`,
t([dt()], Pe.prototype, "data", void 0), t([dt()], Pe.prototype, "styleTypeClass", void 0), t([dt({
type: Boolean,
attribute: "thisOne"
})], Pe.prototype, "thisOne", void 0), t([dt({
type: Number,
attribute: "index"
})], Pe.prototype, "index", void 0), window.customElements.get("bundle-check-box") || window.customElements.define("bundle-check-box", Pe), e(void 0, void 0, void 0, (function*() {
var t, i;
let o = [];
const n = t => e(void 0, void 0, void 0, (function*() {
if (!t) return [];
const {
data: e
} = yield Bt.get(
`/api/product/list?${function(t){var e=[],i=function(t,i){i=null==(i="function"==typeof i?i():i)?"":i,e[e.length]=encodeURIComponent(t)+"="+encodeURIComponent(i)};return function t(o,n){var s,r,l;if(o)if(Array.isArray(n))for(s=0,r=n.length;s<r;s++)t(o+"["+("object"==yt(n[s])&&n[s]?s:"")+"]",n[s]);else if("[object Object]"===Object.prototype.toString.call(n))for(l in n)t(o+"["+l+"]",n[l]);else i(o,n);else if(Array.isArray(n))for(s=0,r=n.length;s<r;s++)i(n[s].name,n[s].value);else for(l in n)t(l,n[l]);return e}("",t).join("&")}({ids:t,limit:t.length,page:1})}`
), i = e.list;
return i.forEach((t => {
window.C_SETTINGS.store_trial && (t.variant || []).forEach((t => {
(t.wholesale_price || []).forEach(((e, i) => {
const o = t.wholesale_price[i + 1];
o && (e.max_quantity = o.min_quantity - 1)
}))
}))
})), i
})),
s = t => e(void 0, void 0, void 0, (function*() {
if (d && (d.style.cursor = "wait", d.pid = t, d.style.pointerEvents = "none", d.switchable = p.bundle_sales.length > 1), 0 === p.bundle_sales.length) return void r(d);
const e = p.bundle_sales[a];
e.entitled_products.forEach((t => Object.assign(t, o.find((e => e.id === t.id)))));
const i = e.entitled_products.find((e => e.id === t)),
n = e.entitled_products.findIndex((e => e.id === t));
e.entitled_products.splice(n, 1), e.entitled_products.unshift(i), e.isRequested = !0, d && (d.bundleInfo = e, d.discount_ids = p.bundle_sales.map((t => t.id)).join(","), d.bundleInfo.entitled_products.filter((t =>
t.price)).forEach((e => {
e.is_selected = !0, e.selected_id = e.variants.filter((t => t.available))[0].id, e.id === t && (e.thisOne = !0)
})), d.style.cursor = "", d.style.pointerEvents = ""),
function(t, e) {
var i = document.querySelector(t),
o = function() {
e()
};
i && !i.getAttribute("imprsd") ? i.addEventListener("impress", o) : o()
}("bundle-product-list", (() => {
var e, i;
const o = p.bundle_sales[a],
n = {
discount_id: o.id,
value_type: o.value_type,
popups_setting: o.popups_setting,
global_show_text: o.global_show_text,
target_selection: o.target_selection,
page: null === (e = window.SHOP_PARAMS) || void 0 === e ? void 0 : e.template_type,
product_id: t,
plugin_timestamp: Date.now(),
show_related_items: p.bundle_sales.length > 1,
block: !0,
discount_ids: p.bundle_sales.map((t => t.id)).join(","),
operation_type: o.operation_type,
entitled_product_ids: o.entitled_product_ids
};
window.sa && (null === (i = window.sa) || void 0 === i || i.track("plugin_bundle_combination_pv", n))
}))
})),
r = t => {
var e;
if (!document.querySelector("bundle-skeleton") && window.self !== window.top) {
const i = document.createElement("bundle-skeleton");
null === (e = null == t ? void 0 : t.parentElement) || void 0 === e || e.insertBefore(i, t)
}
};
let l = window.innerWidth;
window.addEventListener("resize", Ht((() => {
window.innerWidth !== l && window.top !== window.self && window.location.reload()
}), 500));
let a = 0;
const d = document.querySelector('[data-section-id="1539149753700"] .bundle-main'),
c = d.getAttribute("pid") || "",
p = yield Bt.get(`/api/bundle-sales?product_id=${c}`);
yield e(void 0, void 0, void 0, (function*() {
const t = yield Bt.get("/api/bundle-sales/setting?type=discount_code");
d && (d.atcBtnStyle = t.style || 1)
})), yield e(void 0, void 0, void 0, (function*() {
const t = p.bundle_sales.map((t => t.entitled_product_ids)).flat();
o = yield n(t);
const e = [];
p.bundle_sales.forEach((t => {
t.entitled_product_ids.every((t => null == o ? void 0 : o.find((e => e.id === t && e.available)))) && e.push(t)
})), p.bundle_sales = e
})), yield s(c);
const {
isInProductInfo: h
} = qt();
h || null === (i = null === (t = document.querySelector(".bundle-combination-container")) || void 0 === t ? void 0 : t.classList) || void 0 === i || i.add("tw-container", "container", "container-gap", "page-width"),
null == d || d.addEventListener("bundle-combination-switch", Ht((() => e(void 0, void 0, void 0, (function*() {
var t;
if (a = a === p.bundle_sales.length - 1 ? 0 : a + 1, p.bundle_sales[a].isRequested) return void(d.bundleInfo = p.bundle_sales[a]);
yield s(c);
const e = p.bundle_sales[a];
window.sa && (null === (t = window.sa) || void 0 === t || t.track("plugin_bundle_combination_related_item_click", {
discount_ids: p.bundle_sales.map((t => t.id)),
product_id: c,
block: !0,
discount_id: e.id,
operation_type: e.operation_type,
entitled_product_ids: e.entitled_product_ids.join(",")
}))
}))), 300))
}))
}));
} catch (err) {
console.log('bundle sales error' + err)
}
})()
} catch (e) {
console.error(e)
}
</script>
<div class="tw-space-y-3 product-info__block tw-my-6">
<div class="tw-flex tw-items-center">
<svg class="tw-flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M17.14 13.65h-3.457c.327-1.022.517-2.081.568-3.164h3.751a7.954 7.954 0 0 1-.862 3.165zm-5.784 4.259a13.405 13.405 0 0 0 1.968-3.285h3.226a8.038 8.038 0 0 1-5.194 3.285zM3.45 14.624h3.227a13.407 13.407 0 0 0 1.968 3.285 8.039 8.039 0 0 1-5.195-3.285zm-1.451-4.138h3.751c.051 1.083.24 2.142.568 3.165H2.86a7.97 7.97 0 0 1-.862-3.165zM2.86 6.35h3.457a12.244 12.244 0 0 0-.568 3.164H1.998A7.97 7.97 0 0 1 2.86 6.35zm5.784-4.258a13.416 13.416 0 0 0-1.968 3.285H3.449a8.04 8.04 0 0 1 5.195-3.285zm7.906 3.285h-3.226a13.414 13.414 0 0 0-1.968-3.285 8.04 8.04 0 0 1 5.194 3.285zm-4.3 0h-4.5A12.805 12.805 0 0 1 10 2.007a12.807 12.807 0 0 1 2.25 3.37zM6.734 9.513C6.79 8.43 7 7.37 7.358 6.35h5.284c.359 1.02.568 2.08.624 3.164H6.734zm.624 4.138a11.26 11.26 0 0 1-.624-3.165h6.532a11.26 11.26 0 0 1-.624 3.165H7.358zm.392.973h4.5A12.799 12.799 0 0 1 10 17.992a12.797 12.797 0 0 1-2.25-3.368zm10.252-5.11h-3.75a12.265 12.265 0 0 0-.569-3.165h3.457c.493.96.794 2.03.862 3.164zM1 10c0 4.963 4.037 9 9 9s9-4.037 9-9-4.037-9-9-9-9 4.037-9 9z"
fill="currentColor"></path>
</svg>
<div class="product-info__sales_points-item tw-body-minus-1 tw-pl-3">Free Shipping for Orders Over $89</div>
</div>
<div class="tw-flex tw-items-center">
<svg class="tw-flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M18.41 14.672a1.811 1.811 0 0 0-1.743-1.359c-.834 0-1.538.578-1.743 1.359H13.81v-4.366h5.238v4.366h-.638zm-1.743 1.552a1.04 1.04 0 0 1-.929-.582 1.042 1.042 0 0 1 0-.97 1.04 1.04 0 0 1 .929-.582c.404 0 .757.237.928.582a1.042 1.042 0 0 1 0 .97 1.04 1.04 0 0 1-.928.582zm-3.81-1.552h-5.4a1.811 1.811 0 0 0-1.743-1.359c-.833 0-1.538.578-1.743 1.359H.952V4.97h11.905v9.702zm-7.143 1.552a1.04 1.04 0 0 1-.928-.582 1.042 1.042 0 0 1 0-.97 1.04 1.04 0 0 1 .928-.582c.405 0 .757.237.929.582a1.042 1.042 0 0 1 0 .97 1.04 1.04 0 0 1-.929.582zM16.9 6.91l1.699 2.426h-4.79V6.91H16.9zm.486-.97H13.81V4H0v11.642h3.971c.205.78.91 1.358 1.743 1.358.834 0 1.538-.577 1.743-1.358H14.924c.205.78.91 1.358 1.743 1.358.833 0 1.538-.577 1.743-1.358H20V9.666L17.386 5.94z"
fill="currentColor"></path>
</svg>
<div class="product-info__sales_points-item tw-body-minus-1 tw-pl-3">Easy Returns - 30 Days Warranty</div>
</div>
<div class="tw-flex tw-items-center">
<svg class="tw-flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M9 1c2.303 0 4.494.87 6.17 2.448l-.667.708A7.994 7.994 0 0 0 9 1.973C4.574 1.973.973 5.573.973 10c0 4.426 3.6 8.027 8.027 8.027 4.426 0 8.027-3.6 8.027-8.027a8.03 8.03 0 0 0-.36-2.387l.928-.29C17.864 8.188 18 9.089 18 10c0 4.963-4.037 9-9 9s-9-4.037-9-9 4.037-9 9-9zm9.58 1.256.687.688L8.711 13.5l-.688-.688-2.752-2.752.688-.688 2.752 2.752 9.868-9.868z"
fill="currentColor"></path>
</svg>
<div class="product-info__sales_points-item tw-body-minus-1 tw-pl-3">24 Hours Response</div>
</div>
<div class="tw-flex tw-items-center">
<svg class="tw-flex-shrink-0" width="20" height="20" xmlns="http://www.w3.org/2000/svg">
<path
d="M9.5 1c2.757 0 5 2.243 5 5v.813H18v12.34H1V6.814h3.5V6c0-2.757 2.243-5 5-5zM17 7.813H2v10.34h15V7.814zM9.5 10.5a1.25 1.25 0 0 1 .5 2.394v2.318H9v-2.318a1.25 1.25 0 0 1 .5-2.394zm0-8.5c-2.205 0-4 1.794-4 4v.813h8V6c0-2.206-1.794-4-4-4z"
fill="currentColor"></path>
</svg>
<div class="product-info__sales_points-item tw-body-minus-1 tw-pl-3">Secure Payments</div>
</div>
</div>
<div class="product-info__share-wrapper tw-flex tw-space-x-5 product-info__block tw-my-6">
<a target="_blank" data-track="social_share" href="//www.facebook.com/sharer.php?u=https://www.okaywear.com/products/crew-neck-stripe-trim-t-shirt-pants-2pcs-set" class="tw-flex tw-items-center tw-text-current tw-no-underline share-facebook dj_skin_text">
<svg class="" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M11.605 2c-.48 0-.932.057-1.464.283-1.092.48-1.624 1.555-1.624 3.279V7.23H7V10h1.517v8h3.088v-8h2.102L14 7.23h-2.395V5.986c0-.396.026-.679.133-.82.133-.254.399-.367.825-.367h1.41v-2.77h-2.368V2z" fill="currentColor"></path></svg>
<span class="product-info__share-item-label tw-pl-2 tw-body-sm">Share</span>
</a>
<a target="_blank" data-track="social_share" href="//twitter.com/share?text=&url=https://www.okaywear.com/products/crew-neck-stripe-trim-t-shirt-pants-2pcs-set" class="tw-flex tw-items-center tw-text-current tw-no-underline share-twitter dj_skin_text">
<svg class="" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M17.423 6.564c0 6.41-4.21 11.026-10.404 11.228C4.4 17.995 2.606 17.2 1 15.998c1.794.202 4.21-.39 5.397-1.606-1.794 0-2.807-1.013-3.4-2.388h1.606C2.997 11.397 1.78 10.196 1.78 8.2c.391.202.796.39 1.606.39-1.403-.795-2.199-3.4-1.2-5.006C3.98 5.58 6.18 7.39 9.811 7.577c-1.013-3.994 4.21-6.02 6.41-3.4 1.013-.203 1.606-.594 2.387-1.014-.202 1.013-.795 1.607-1.606 1.997.796 0 1.404-.202 1.997-.593-.188.796-.984 1.606-1.577 1.997z" fill="currentColor"></path></svg>
<span class="product-info__share-item-label tw-pl-2 tw-body-sm">Tweet</span>
</a>
<a target="_blank" data-track="social_share" href="//pinterest.com/pin/create/button/?url=https://www.okaywear.com/products/crew-neck-stripe-trim-t-shirt-pants-2pcs-set&media=&description=" class="tw-flex tw-items-center tw-text-current tw-no-underline share-pinterest dj_skin_text">
<svg class="" width="20" height="20" xmlns="http://www.w3.org/2000/svg"><path d="M11.719 13.817a2.784 2.784 0 0 1-2.34-1.132l-.636 2.338c-.304.912-.731 1.78-1.272 2.583-.045.132-.417.394-.417.394a1.716 1.716 0 0 1-.25-.653 9.155 9.155 0 0 1 .035-2.824c.185-.769 1.193-4.891 1.193-4.891a3.468 3.468 0 0 1-.304-1.462c0-1.367.82-2.391 1.84-2.391.705-.01 1.286.535 1.297 1.218.001.056-.002.112-.009.168a19.2 19.2 0 0 1-.842 3.278c-.2.765.28 1.542 1.07 1.735.14.035.287.05.432.042 1.807 0 3.199-1.844 3.199-4.506.067-2.144-1.676-3.934-3.892-4a3.83 3.83 0 0 0-.363.005c-2.43-.1-4.484 1.724-4.588 4.075a3.748 3.748 0 0 0 .747 2.445c.073.076.1.183.072.283-.076.308-.25.985-.284 1.12-.045.185-.145.223-.34.135-1.328-.837-2.11-2.282-2.065-3.814 0-3.102 2.333-5.956 6.723-5.956 3.295-.16 6.101 2.293 6.267 5.481.005.07.007.14.008.21.01 3.387-2.203 6.12-5.281 6.12" fill="currentColor"></path></svg>
<span class="product-info__share-item-label tw-pl-2 tw-body-sm">Pin it</span>
</a>
</div>
</div>
<div class="plugin__buy_on_others empty:tw-hidden"></div>
</form>
<form class="zb-flex zb-flex-col zb-relative zb-w-full">
<div class="zb-overflow-y-auto zb-pb-[100px]">
<div class="zb-flex zb-items-center zb-pb-4 zb-border-b zb-border-t-0 zb-border-l-0 zb-border-r-0 zb-border-solid zb-border-[#eee] md:zb-border-none">
<ljs-render layout="container" class="zb-flex-shrink-0 zb-w-[66px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0 zb-h-[70px] md:zb-hidden" id="smart_recommend_product_image" manual="" template="smart_recommend_product_image_template"></ljs-render>
<div class="zb-w-full">
<div class="zb-line-clamp-2 zb-mb-2 zb-text-sm md:zb-text-base">${product.title}</div>
<div class="zb-flex zb-justify-between zb-items-center">
<spz-render layout="container" template="smart_recommend_price_template" id="smart_recommend_modal_price" manual="">
<div class="zb-flex zb-items-center">
<ljs-currency class="zb-font-semibold zb-text-[22px] zb-text-[#CD201A] zb-mr-2" layout="container" value="${product.min_price_variant.price}"></ljs-currency>
<ljs-currency class="zb-text-[#93989D] zb-text-xs zb-line-through" layout="container" value="${product.min_price_variant.compare_at_price}"
spz-if="${product.min_price_variant.compare_at_price > product.min_price_variant.price ? true : false}"></ljs-currency>
</div>
</spz-render>
<a class="zb-flex zb-items-center zb-cursor-pointer zb-text-[#212B36] zb-no-underline" href="${product.url}?${toQuery({ aid: 'smart_recommend.' + data.show_type + '.' + data.rule_id, ifb: product.ifb || '', cfb: product.cfb || '', scm: data.scm || '', ssp: data.ssp || '' })}">
<span class="zb-text-[13px]">See detail</span>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path d="M13.1714 12.0007L8.22168 7.05093L9.63589 5.63672L15.9999 12.0007L9.63589 18.3646L8.22168 16.9504L13.1714 12.0007Z" fill="#93989D"></path></svg>
</a>
</div>
</div>
</div>
<ljs-variants id="smart_recommend_product_variants" layout="container" template="smart_recommend_product_variant_template" slide="smart_recommend_carousel" disabled-dj-event="" interference="">
</ljs-variants>
<div class="zb-text-sm zb-mb-2">Quantity</div>
<ljs-quantity disabled-dj-event="" layout="fixed" width="150" height="52" min="1" max="999999" value="1" input-class="!zb-text-base" icon-class="!zb-p-3"></ljs-quantity>
</div>
<div class="zb-absolute zb-bottom-0 zb-flex md:zb-flex-col zb-w-full zb-bg-white">
<button class="zb-flex zb-items-center zb-mr-2 rtl:zb-ml-2 rtl:zb-mr-0 md:zb-mb-2 zb-justify-center zb-cursor-pointer zb-w-full zb-border zb-border-solid zb-border-[#313131] zb-bg-white zb-rounded zb-h-[42px]" role="addToCart" type="button"
@tap="smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');">
<span>Add To Cart</span>
</button>
<button class="zb-flex zb-items-center zb-justify-center zb-cursor-pointer zb-w-full zb-bg-[#292929] zb-text-white zb-rounded zb-h-[42px] zb-border-none" type="button" role="buyNow"
@tap="smart_recommend_loading.showLoading;smart_recommend_func.addATCHook(rule_id='${data.rule_id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${data.scm}',ssp='${data.ssp}',spmIndex='${data.productIndex}');">
<span>Buy Now</span>
</button>
</div>
</form>
<form id="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-submit-form" class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-sections-container" style="" novalidate="">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-section-624ab2f927652f651edfd0ac {
position: relative;
display: flex;
flex-wrap: wrap;
padding-left: 20px;
padding-right: 20px;
padding-top: 0px;
padding-bottom: 0px;
;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-section-624ab2f927652f651edfd0ac-opacity-layer {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: #C7EFD5;
opacity: 0;
;
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-section-624ab2f927652f651edfd0ac">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-section-624ab2f927652f651edfd0ac-opacity-layer"></div>
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-column-624ab2f927652f651edfd0ae {
width: 100%;
display: flex;
flex-direction: column;
flex-grow: 1;
position: relative;
}
@media screen and (max-width: 600px) {
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-column-624ab2f927652f651edfd0ae {
width: 100%;
}
}
</style>
<div class="omnisend-mobile-container omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-column-624ab2f927652f651edfd0ae">
<!--Line/space content block starts -->
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-line-container-650a640796e18d75fcc99cae {
padding-top: 6px;
padding-bottom: 6px;
padding-left: 12px;
padding-right: 12px;
;
justify-content: center;
display: flex;
flex-direction: row;
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-line-container-650a640796e18d75fcc99cae">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-line-650a640796e18d75fcc99cae {
width: 1%;
border-top: 2px solid #DA946E
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-line-650a640796e18d75fcc99cae"></div>
</div>
<!--Text content block starts -->
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a5f7496e18d75fcc99ca9 {
padding-top: 0px;
padding-bottom: 0px;
padding-left: 0px;
padding-right: 0px;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a5f7496e18d75fcc99ca9 a {
color: #0094EB;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a5f7496e18d75fcc99ca9,
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a5f7496e18d75fcc99ca9 p,
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a5f7496e18d75fcc99ca9 li {
margin: 0px;
color: #FFFFFF !important;
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif !important;
font-size: 38px !important;
line-height: 150% !important;
word-break: break-word;
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a5f7496e18d75fcc99ca9">
<p style="text-align: center;"><strong style="background-color: transparent; color: unset; font-family: unset; font-size: unset; text-align: center;">Lucky Gift</strong></p>
</div>
<!--Text content block ends -->
<!--Text content block starts -->
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a601796e18d75fcc99cac {
padding-top: 12px;
padding-bottom: 12px;
padding-left: 12px;
padding-right: 12px;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a601796e18d75fcc99cac a {
color: #0094EB;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a601796e18d75fcc99cac,
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a601796e18d75fcc99cac p,
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a601796e18d75fcc99cac li {
margin: 0px;
color: #FFFFFF !important;
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif !important;
font-size: 14px !important;
line-height: 150% !important;
word-break: break-word;
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-text-650a601796e18d75fcc99cac">
<p style="text-align: center;">JOIN US NOW*</p>
</div>
<!--Text content block ends -->
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-block-container-650a5f5196e18d75fcc99ca3 {
padding-top: 0px;
padding-bottom: 0px;
padding-left: 0px;
padding-right: 0px;
;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-container-650a5f5196e18d75fcc99ca3 {
position: relative;
min-width: 200px;
height: 100%;
width: 100%
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer,
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer-shadow,
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor,
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-shadow {
transition: all 0.5s cubic-bezier(0.215, 0.61, 0.355, 1);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-shadow-container {
width: 100%;
height: 100%;
opacity: .3;
-webkit-transform: translate(3%, 3%);
-moz-transform: translate(3%, 3%);
-ms-transform: translate(3%, 3%);
-o-transform: translate(3%, 3%);
transform: translate(3%, 3%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor {
position: absolute;
top: 0;
left: 0;
right: 0;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label {
box-sizing: border-box;
position: absolute;
top: 50%;
left: 50%;
text-align: right;
padding-left: 15%;
width: 43%;
transform-origin: 0 0;
font-family: 'open sans', Arial, sans-serif;
font-weight: 700;
text-shadow: 0 0 5px rgb(0 0 0 / 10%);
overflow: hidden;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(1) {
transform: rotate(-72deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(2) {
transform: rotate(-36deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(3) {
transform: rotate(0deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(4) {
transform: rotate(-324deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(5) {
transform: rotate(-288deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(6) {
transform: rotate(-252deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(7) {
transform: rotate(-216deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(8) {
transform: rotate(-180deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(9) {
transform: rotate(-144deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label:nth-child(10) {
transform: rotate(-108deg) translate(0px, -50%);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer-shadow {
top: 14%;
right: -3%;
opacity: .3;
position: absolute;
width: 10%;
height: 16%;
transform-origin: 50% 28.44%;
transform: rotate(50deg);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer {
position: absolute;
top: 11%;
right: -1%;
width: 10%;
height: 16%;
transform-origin: 50% 28.44%;
transform: rotate(50deg);
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer-body {
fill: #383838;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof--rotor-shadow-inner {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: .3;
-webkit-transform: translate(3%, 3%);
-moz-transform: translate(3%, 3%);
-ms-transform: translate(3%, 3%);
-o-transform: translate(3%, 3%);
transform: translate(3%, 3%);
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-block-container-650a5f5196e18d75fcc99ca3">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-container-650a5f5196e18d75fcc99ca3">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-shadow-container">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-shadow">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-73.5 634 476 476" enable-background="new -73.5 634 476 476" xml:space="preserve">
<path fill="#000" d="M387.409,938.95c-0.268-0.089-0.524-0.177-0.787-0.177
c13.021-43.188,13.286-89.875,0.088-133.938c0.262,0,0.438-0.088,0.699-0.176c2.534-0.787,3.846-3.496,3.059-6.033
c-0.786-2.535-3.496-3.846-6.027-3.06c-0.266,0.086-0.438,0.175-0.61,0.263c-7.344-21.07-17.83-41.44-31.554-60.5
c-13.726-18.886-29.721-35.06-47.373-48.522c0.087-0.177,0.262-0.263,0.35-0.438c1.572-2.099,1.051-5.07-1.05-6.646
c-2.097-1.572-5.067-1.05-6.646,1.051c-0.087,0.177-0.175,0.351-0.264,0.438c-37.932-26.402-82.687-40.654-127.961-41.617
c0.088-0.262,0.088-0.609,0.088-0.873c0-2.623-2.099-4.721-4.72-4.721s-4.721,2.098-4.721,4.721c0,0.264,0,0.611,0.088,0.873
c-44.313,0.875-88.89,14.43-127.872,41.617c-0.088-0.262-0.263-0.521-0.438-0.787c-1.573-2.098-4.545-2.623-6.643-1.049
c-2.099,1.574-2.623,4.545-1.049,6.646c0.175,0.262,0.35,0.438,0.611,0.697c-37.844,28.68-64.501,66.885-79.012,108.764
c-0.087-0.086-0.262-0.086-0.35-0.176c-2.535-0.787-5.156,0.523-6.03,3.061c-0.787,2.535,0.524,5.158,3.06,6.033
c0.088,0,0.263,0.088,0.349,0.088c-13.372,43.625-13.722,90.486-0.261,134.727c-0.175,0-0.35,0.088-0.524,0.176
c-2.536,0.787-3.847,3.496-3.06,6.031c0.786,2.537,3.496,3.85,6.03,3.062c0.176-0.088,0.351-0.088,0.525-0.178
c7.342,20.982,17.743,41.18,31.465,60.062c13.637,18.799,29.631,34.973,47.199,48.35c-0.088,0.09-0.263,0.268-0.35,0.354
c-1.574,2.1-1.05,5.07,1.049,6.645s5.069,1.05,6.643-1.051c0.088-0.174,0.175-0.262,0.263-0.438
c37.846,26.403,82.423,40.653,127.698,41.704c0,0.087,0,0.264,0,0.352c0,2.621,2.098,4.721,4.72,4.721
c2.623,0,4.722-2.1,4.722-4.721c0-0.088,0-0.264,0-0.352c44.49-0.786,89.064-14.34,128.137-41.615
c0.087,0.262,0.262,0.523,0.438,0.787c1.572,2.098,4.546,2.622,6.646,1.049c2.099-1.574,2.622-4.547,1.05-6.646
c-0.175-0.264-0.35-0.438-0.611-0.698c37.936-28.765,64.682-67.06,79.104-109.11c0.264,0.088,0.521,0.264,0.787,0.353
c2.531,0.787,5.153-0.523,6.027-3.062C391.258,942.445,389.856,939.823,387.409,938.95z">
</path>
</svg>
</div>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor">
<div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca4">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> Free Shipping </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca4">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> Sorry... </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca5">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> 10% off </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca5">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> Sorry... </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca6">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> $89-$5 Off </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca6">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> Sorry... </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca7">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> $129-$15 </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca7">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> Sorry... </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca8">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> $500-$100 </div>
</foreignObject>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label" id="650a5f5196e18d75fcc99ca8">
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text {
font-size: 15px;
line-height: 1;
display: flex;
justify-content: flex-end;
align-items: center;
width: 100%;
height: 100%;
color: #383838;
}
</style>
<svg width="100%" height="100%" viewBox="0 0 100 60">
<foreignObject width="100" height="60" xmlns="http://www.w3.org/1999/xhtml">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slice-label-text"> Sorry... </div>
</foreignObject>
</svg>
</div>
</div>
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(5),
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(10) {
fill: #7FD299;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(4),
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(9) {
fill: #C549A2;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(3),
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(8) {
fill: #C2C1F3;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(2),
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(7) {
fill: #B8B8B8;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(1),
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices path:nth-child(6) {
fill: #BFDCFE;
}
</style>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-73.5 634 476 476" enable-background="new -73.5 634 476 476" xml:space="preserve">
<path fill="#fff" d="M387.409,938.95c-0.268-0.089-0.524-0.177-0.787-0.177
c13.021-43.188,13.286-89.875,0.088-133.938c0.262,0,0.438-0.088,0.699-0.176c2.534-0.787,3.846-3.496,3.059-6.033
c-0.786-2.535-3.496-3.846-6.027-3.06c-0.266,0.086-0.438,0.175-0.61,0.263c-7.344-21.07-17.83-41.44-31.554-60.5
c-13.726-18.886-29.721-35.06-47.373-48.522c0.087-0.177,0.262-0.263,0.35-0.438c1.572-2.099,1.051-5.07-1.05-6.646
c-2.097-1.572-5.067-1.05-6.646,1.051c-0.087,0.177-0.175,0.351-0.264,0.438c-37.932-26.402-82.687-40.654-127.961-41.617
c0.088-0.262,0.088-0.609,0.088-0.873c0-2.623-2.099-4.721-4.72-4.721s-4.721,2.098-4.721,4.721c0,0.264,0,0.611,0.088,0.873
c-44.313,0.875-88.89,14.43-127.872,41.617c-0.088-0.262-0.263-0.521-0.438-0.787c-1.573-2.098-4.545-2.623-6.643-1.049
c-2.099,1.574-2.623,4.545-1.049,6.646c0.175,0.262,0.35,0.438,0.611,0.697c-37.844,28.68-64.501,66.885-79.012,108.764
c-0.087-0.086-0.262-0.086-0.35-0.176c-2.535-0.787-5.156,0.523-6.03,3.061c-0.787,2.535,0.524,5.158,3.06,6.033
c0.088,0,0.263,0.088,0.349,0.088c-13.372,43.625-13.722,90.486-0.261,134.727c-0.175,0-0.35,0.088-0.524,0.176
c-2.536,0.787-3.847,3.496-3.06,6.031c0.786,2.537,3.496,3.85,6.03,3.062c0.176-0.088,0.351-0.088,0.525-0.178
c7.342,20.982,17.743,41.18,31.465,60.062c13.637,18.799,29.631,34.973,47.199,48.35c-0.088,0.09-0.263,0.268-0.35,0.354
c-1.574,2.1-1.05,5.07,1.049,6.645s5.069,1.05,6.643-1.051c0.088-0.174,0.175-0.262,0.263-0.438
c37.846,26.403,82.423,40.653,127.698,41.704c0,0.087,0,0.264,0,0.352c0,2.621,2.098,4.721,4.72,4.721
c2.623,0,4.722-2.1,4.722-4.721c0-0.088,0-0.264,0-0.352c44.49-0.786,89.064-14.34,128.137-41.615
c0.087,0.262,0.262,0.523,0.438,0.787c1.572,2.098,4.546,2.622,6.646,1.049c2.099-1.574,2.622-4.547,1.05-6.646
c-0.175-0.264-0.35-0.438-0.611-0.698c37.936-28.765,64.682-67.06,79.104-109.11c0.264,0.088,0.521,0.264,0.787,0.353
c2.531,0.787,5.153-0.523,6.027-3.062C391.258,942.445,389.856,939.823,387.409,938.95z"></path>
<g class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-rotor-slices">
<path d="M164.501,871.997L32.578,689.985C72.671,660.744,114.954,647,164.501,647V871.997z"></path>
<path d="M164.501,871.997l-213.509-69.512c15.319-47.276,41.407-83.26,81.586-112.5L164.501,871.997z"></path>
<path d="M164.501,871.997L-49.01,941.601c-15.319-47.274-15.319-91.751,0-139.115L164.501,871.997z"></path>
<path d="M164.501,871.997L32.578,1054.099c-40.093-29.24-66.18-65.226-81.586-112.502L164.501,871.997z"></path>
<path d="M164.501,871.997v224.999c-49.548,0-91.83-13.748-131.923-42.987L164.501,871.997z"></path>
<path d="M164.501,871.997l131.922,182.016C256.33,1083.252,214.047,1097,164.501,1097V871.997z"></path>
<path d="M164.501,871.997L378.01,941.51c-15.318,47.279-41.407,83.26-81.587,112.503L164.501,871.997z"></path>
<path d="M164.501,871.997l213.509-69.512c15.319,47.274,15.319,91.749,0,139.115L164.501,871.997z"></path>
<path d="M164.501,871.997l131.922-182.012c40.093,29.24,66.18,65.224,81.587,112.5L164.501,871.997z"></path>
<path d="M164.501,871.997V647.002c49.546,0,91.829,13.744,131.922,42.986L164.501,871.997z"></path>
</g>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer-shadow">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 66 116" enable-background="new 0 0 66 116" xml:space="preserve">
<path fill="#000000" d="M66,33C66,14.774,51.227,0,33,0C14.775,0,0,14.774,0,33c0,11.604,5.994,21.801,15.05,27.685h-0.015
L24.5,107.5c0,4.694,3.806,8.5,8.5,8.5s8.5-3.806,8.5-8.5l9.466-46.815h-0.015C60.007,54.801,66,44.604,66,33z"></path>
</svg>
</div>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 66 116" enable-background="new 0 0 66 116" xml:space="preserve">
<path fill="#FFFFFF" d="M66,33C66,14.774,51.227,0,33,0C14.775,0,0,14.774,0,33c0,11.604,5.994,21.801,15.05,27.685h-0.015
L24.5,107.5c0,4.694,3.806,8.5,8.5,8.5s8.5-3.806,8.5-8.5l9.466-46.815h-0.015C60.007,54.801,66,44.604,66,33z"></path>
<path class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-wof-650a5f5196e18d75fcc99ca3-pointer-body" fill="#C13A4A" d="M57.5,33C57.5,19.469,46.531,8.5,33,8.5S8.5,19.469,8.5,33c0,9.17,5.041,17.158,12.501,21.358H21l7,52.392
c0,2.762,2.238,5,5,5s5-2.238,5-5l7-52.391h-0.002C52.458,50.16,57.5,42.171,57.5,33z"></path>
</svg>
</div>
</div>
</div>
<style>
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa {
padding-left: 0px;
padding-right: 0px;
padding-top: 0px;
padding-bottom: 0px;
display: flex;
flex-direction: column;
}
</style>
<div id="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-650a5f7b96e18d75fcc99caa" class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa">
<style>
label[for^=omnisend].omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-label {
color: #21095D;
padding-left: 0px;
padding-right: 0px;
padding-top: 12px;
padding-bottom: 12px;
;
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 120%;
word-break: break-word;
}
label[for^=omnisend].omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-label.error {
color: #FF0000;
}
</style>
<style>
#omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-emailField-input.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-input {
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
-o-appearance: none;
appearance: none;
outline: none;
border: none;
background-color: transparent;
padding: 0;
margin: 0;
width: 100%;
height: auto;
flex-basis: 0;
flex-grow: 1;
box-sizing: border-box;
border-radius: 8px !important;
padding-left: 16px;
padding-right: 16px;
padding-top: 16px;
padding-bottom: 16px;
color: #161717;
background-color: #FFFFFF;
border-style: solid;
border-color: #21095D;
border-width: 2px;
;
}
#omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-emailField-input.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-input:focus {
outline: auto;
}
#omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-emailField-input.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-input::placeholder {
opacity: 1;
color: #21095D;
;
}
#omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-emailField-input.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-input {
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 120%;
}
#omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-emailField-input.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-input.error {
border-color: #FF0000;
}
</style>
<input id="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-emailField-input" class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-input" type="email"
placeholder="Please Enter Your Email" name="emailField" required="" aria-required="true" maxlength="" oninput="" aria-label="Email field" autocomplete="email">
<style>
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-required {
padding-top: 12px;
padding-bottom: 12px;
padding-left: 0px;
padding-right: 0px;
;
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 120%;
color: #FF0000;
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-required" style="display: none;">This field is required</div>
<style>
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-error {
padding-top: 12px;
padding-bottom: 12px;
padding-left: 0px;
padding-right: 0px;
;
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 120%;
color: #FF0000;
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-field-container-650a5f7b96e18d75fcc99caa-error" style="display: none;">The email address must contain @ and a valid domain</div>
</div>
<!--Button content block starts -->
<style type="text/css">
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-container-650a5f8696e18d75fcc99cab {
padding-top: 12px;
padding-bottom: 12px;
padding-left: 0px;
padding-right: 0px;
;
display: flex;
flex-direction: column;
word-break: break-word;
}
#omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-650a5f8696e18d75fcc99cab.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-650a5f8696e18d75fcc99cab {
align-self: center;
width: 100%;
box-sizing: border-box;
text-align: center;
cursor: pointer;
line-height: 120%;
margin: 0;
letter-spacing: normal;
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 16px;
font-weight: normal;
font-style: normal;
text-decoration: none;
color: #383838;
background-color: #C7EFD5;
border-radius: 8px;
border-width: 2px;
border-style: solid;
border-color: #21095D;
padding-bottom: 16px;
padding-top: 16px;
padding-left: 16px;
padding-right: 16px;
}
#omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-650a5f8696e18d75fcc99cab.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-650a5f8696e18d75fcc99cab:disabled {
cursor: default;
opacity: 0.6;
}
.omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-error {
padding-top: 12px;
padding-bottom: 12px;
padding-left: 0px;
padding-right: 0px;
;
font-family: Poppins, Helvetica Neue, Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 120%;
color: #FF0000;
}
</style>
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-container-650a5f8696e18d75fcc99cab">
<div class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-error" style="display: none;">Something went wrong!</div>
<button class="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-650a5f8696e18d75fcc99cab" id="omnisend-form-65d55bb2ce1b1bf0aa7ab0ba-action-650a5f8696e18d75fcc99cab" type="submit">Let's start spinning</button>
</div>
</div>
</div>
</form>
<form class="">
<div class="zb-flex">
<a href="${product.url}?${toQuery({ aid: 'smart_recommend.2.' + data.id, ifb: product.ifb || '', cfb: product.cfb || '', scm: product.scm || data.scm || '', ssp: data.ssp || '' })}" impr="1" imprevt="1" class="zb-w-[132px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0" data-prdct="${product.id}" data-ifb="${product.ifb || ''}" data-cfb="${product.cfb || ''}" data-scm="${product.scm || data.scm || ''}" data-spm="${productIndex}"> <ljs-render layout="container" id="smart_cart_pop_image_${product.id}" template="smart_cart_pop_image_template" manual=""></ljs-render> </a>
<div class="zb-flex zb-flex-col zb-flex-grow zb-justify-between">
<div>
<div class="zb-line-clamp-2 zb-text-sm zb-mb-2">${product.title}</div> <ljs-render layout="container" id="smart_cart_pop_price_${product.id}" template="smart_cart_pop_price_template" manual=""></ljs-render>
</div>
<div>
<div class="zb-relative zb-w-full zb-cursor-pointer">
<div class="zb-border zb-border-solid zb-border-[#eee] zb-px-3 zb-py-[10px] zb-flex zb-items-center zb-justify-between zb-font-semibold zb-text-sm zb-rounded-sm"
@tap="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);smart_cart_pop_variant_${product.id}_mobile.toggleClass(class=zb-hidden);smart_cart_pop_variant_${product.id}_pc.toggleClass(class=smart_cart_pop_variant_pc_show,force=true);smart_cart_pop_variant_modal_${product.id}.open"
spz-if="${!!(product.options && product.options.length && product.options.length > 0) && data.config.variant_select_visible}"> <ljs-render manual="" layout="container" id="smart_cart_pop_variant_text_${product.id}"
template="smart_cart_pop_variant_text_template"></ljs-render> <svg id="smart_pop_variant-select-${product.id}" width="12" height="8" class="zb-ml-2" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M6.00002 7.06738C6.19244 7.06775 6.38498 6.99453 6.5318 6.84772C6.54504 6.83447 6.55769 6.82086 6.56973 6.8069L11.1251 2.25152C11.418 1.95863 11.418 1.48375 11.1251 1.19086C10.8322 0.897968 10.3573 0.897968 10.0645 1.19086L6.00003 5.25529L1.9356 1.19086C1.64271 0.897968 1.16784 0.897968 0.874943 1.19086C0.58205 1.48375 0.58205 1.95863 0.874943 2.25152L5.43033 6.8069C5.44237 6.82086 5.45502 6.83447 5.46826 6.84772C5.61507 6.99453 5.8076 7.06775 6.00002 7.06738Z"
fill="#0A1533"></path>
</svg> </div> <ljs-lightbox layout="nodisplay" disable-unmount="" class="smart_cart_pop_lightbox_pc" id="smart_cart_pop_variant_modal_${product.id}" @close="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);">
<div id="smart_cart_pop_variant_${product.id}_pc" class="zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template"
onclick="event.stopPropagation()" disabled-dj-event="" interference=""> </ljs-variants></div>
</ljs-lightbox>
</div>
<div class="zb-mt-3"> <button product-id="${product.id}" id="smart_cart_pop_atc_btn_${product.id}"
class="zb-flex zb-items-center zb-justify-center zb-w-full zb-text-white zb-py-[10px] zb-h-9 zb-text-xs zb-font-normal zb-border-none zb-rounded-[4px] smart_cart_pop_atc_btn_bg" type="button" role="addToCart"
@tap="smart_cart_pop_loading_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_btn_${product.id}.toggleClass(class=zb-pointer-events-none);custom-func.addATCHook(activity_id='${data.id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${product.scm || data.scm}',ssp='${data.ssp}',spm='${data.spmBase}.${productIndex}')">
<ljs-render layout="container" id="smart_cart_pop_atc_${product.id}" template="smart_cart_pop_atc_template" mamual="" class="notranslate"> </ljs-render>
<div id="smart_cart_pop_added_${product.id}" class="zb-hidden"><span class="zb-flex zb-justify-center zb-gap-1"><svg width="14" height="15" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M8 16.5006C3.58171 16.5006 0 12.9183 0 8.5C0 4.08171 3.58171 0.5 8 0.5C12.4183 0.5 16 4.08171 16 8.5C16 12.9183 12.4183 16.5006 8 16.5006ZM8 2.04344C4.21314 2.04344 1.54287 4.71371 1.54287 8.50057C1.54287 12.2874 4.21314 14.9577 8 14.9577C11.7869 14.9577 14.4571 12.2874 14.4571 8.50057C14.4571 4.71371 11.7869 2.04344 8 2.04344ZM7.26057 11.1909L7.12229 11.3286L7.09543 11.3017C7.02286 11.336 6.94286 11.3577 6.85714 11.3577C6.73543 11.3577 6.62857 11.3109 6.536 11.2463L6.52229 11.2594L6.45371 11.1909C6.45314 11.1903 6.45314 11.1903 6.45257 11.1897L4.09771 8.83486L4.90629 8.02686L6.85714 9.97771L11.1629 5.67143L11.9714 6.48L7.26171 11.1897C7.26114 11.1903 7.26114 11.1903 7.26057 11.1909Z"
fill="white"></path>
</svg>Added</span></div>
<div id="smart_cart_pop_loading_${product.id}" class="zb-hidden">
<div class="smart_cart_pop_loading"></div>
</div>
</button> </div>
</div>
</div>
</div>
<div id="smart_cart_pop_variant_${product.id}_mobile" class="zb-hidden md:zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template" onclick="event.stopPropagation()"
disabled-dj-event="" interference=""> </ljs-variants></div>
</form>
POST //translate.googleapis.com/translate_voting?client=te
<form id="goog-gt-votingForm" action="//translate.googleapis.com/translate_voting?client=te" method="post" target="votingFrame" class="VIpgJd-yAWNEb-hvhgNd-aXYTce"><input type="text" name="sl" id="goog-gt-votingInputSrcLang"><input type="text"
name="tl" id="goog-gt-votingInputTrgLang"><input type="text" name="query" id="goog-gt-votingInputSrcText"><input type="text" name="gtrans" id="goog-gt-votingInputTrgText"><input type="text" name="vote" id="goog-gt-votingInputVote"></form>
Text Content
FREE SHPPING FOR ORDER OVER $89 Powered by Google Übersetzer English,日本語,Español,Français,Italiano,Deutsch Search OKAYWEAR English,日本語,Español,Français,Italiano,Deutsch Search Search Account * Log in * Create an account WISHLIST 0 Cart Close * NEW * NEW * New Trending * NEW IN TODAY * NEW IN TODAY * New In 7 Days * New In 15 Days * New In 30 Days * NEW IN CLOTHING * NEW IN CLOTHING * New In Blazers * New In Sets * New In Tops * New In Bottoms * New In Shoes & Acc * BEST SELLER * 2024S/S * TREND * TREND * SHOP BY STYLE * SHOP BY STYLE * Business Style Hot * Casual Style * Vacation Style * SHOP BY COLOR * SHOP BY COLOR * White * Purple * Green * Khaki * Black * Pink * Blue * SHOP BY FARBIC * SHOP BY FARBIC * Leather * Velvet * Denim * Knitted * Linen * CLOTHING * CLOTHING * TWO PIECE OUTFITS * TWO PIECE OUTFITS * Casual Sets * Blazer Sets * OUTERWEAR * OUTERWEAR * Blazers Hot * Men's VEST * Trench Coat * Coats & Jackets * Downs & Parkas * TOPS * TOPS * Shirts * T-shirts * Polo Shirts * Tees & Tanks * Sweaters * Hoodies & Sweatshirts * BOTTOMS * BOTTOMS * Suit Pants * Casual Pants * Shorts Pants * SHOES & ACC * SHOES & ACC * Shoes * Accessories * Swimwear * BLAZERS Hot * TWO PIECE OUTFITS * TWO PIECE OUTFITS * Blazer Sets * Casual Sets * TOPS * TOPS * Shirts * T-shirts * Polo Shirts * Tees & Tanks * Sweaters * Hoodies & Sweatshirts * SALE * SALE * Under $9.99 * Ships within 24Hrs Log in English,日本語,Español,Français,Italiano,Deutsch * NEW * New Trending * NEW IN TODAY New In 7 Days New In 15 Days New In 30 Days * NEW IN CLOTHING New In Blazers New In Sets New In Tops New In Bottoms New In Shoes & Acc * BEST SELLER * 2024S/S * TREND * SHOP BY STYLE Business Style Hot Casual Style Vacation Style * SHOP BY COLOR White Purple Green Khaki Black Pink Blue * SHOP BY FARBIC Leather Velvet Denim Knitted Linen * CLOTHING * TWO PIECE OUTFITS Casual Sets Blazer Sets * OUTERWEAR Blazers Hot Men's VEST Trench Coat Coats & Jackets Downs & Parkas * TOPS Shirts T-shirts Polo Shirts Tees & Tanks Sweaters Hoodies & Sweatshirts * BOTTOMS Suit Pants Casual Pants Shorts Pants * SHOES & ACC Shoes Accessories * Swimwear * BLAZERS Hot * TWO PIECE OUTFITS Blazer Sets Casual Sets * TOPS Shirts T-shirts Polo Shirts Tees & Tanks Sweaters Hoodies & Sweatshirts * SALE Under $9.99 Ships within 24Hrs * More links Top search terms Red Purple💜 Suits Shoes👞 Leopard Sets Plaid Houndstooth Dating💞 Top searched BUSINESS GRADIENT SINGLE BREASTED POCKETS LAPEL COLLAR BLAZER $52.79 +1 BUSINESS CASUAL HOUNDSTOOTH POCKET TURNDOWN COLLAR BLAZER $52.79 OKAYWEAR HOUNDSTOOTH CHEST POCKET DOUBLE BREASTED BLAZER $56.79 FORMAL VELVET PATCHWORK SHAWL NECK SINGLE BREASTED BLAZER $59.79 LAPEL COLLAR SINGLE BREASTED SHIRT & PANTS 2PCS SET $69.79 OKAYWEAR SINGLE BREASTED DENIM PATTERN BLAZER & PANTS 2PCS SET $85.79 CREW NECK STRIPE TRIM T-SHIRT & PANTS 2PCS SET (3)View SKU: K624081459961581568 Price $52.79 $52.79 Save $0.00 COUPON 80% off 50% off 20% off COUPON Buy 4+ items Get 1 at 80% off Go for it OKB80 OKB80 Copy code Buy 3+ items Get 1 at 50% off Go for it OKB50 OKB50 Copy code Buy 2+ items Get 1 at 20% off Go for it OKB20 OKB20 Copy code Close GIFT OFFER View the GIFT OFFER Spend $199 to get 1 free gift(s) CLOSE Spend $199 to get 1 free gift(s) Color — Red Please select a color Size Guide Size S M L XL 2XL 3XL 4XL Please select a size Quantity Add to cart - $52.79 Buy it now Buy $89.00 more to enjoy FREE Shipping Free Shipping for Orders Over $89 Easy Returns - 30 Days Warranty 24 Hours Response Secure Payments Share Tweet Pin it ${function(){ const rules = data.data.rules; return ` ` }()} You May Also Like * Casual Crew Neck Stripe Shirt & Pant 2Pcs Set $60.79 Quick Shop * Striped Trim Contrast Color Stand Collar Jacket & Pants 2Pcs Set $40.79 Quick Shop * Lapel Collar Pocket Pure Shirt & Pant 2Pcs Set $59.79 Quick Shop * Formal Notch Lapel Chain Blazer & Pant 2Pcs Set $179.79 Quick Shop * Business Casual Wedge Grid Woven Round Head Leather Shoes $66.79 Quick Shop * Casual Plain Round Neck Short Sleeve Slim Fit Tee & Drawstring Pants Set $33.79 Quick Shop * Crew Neck Gradient Short Sleeve T-Shirt & Pant 2Pcs Set Quick Shop * OK Fashion Pink Plaid Print Notch Lapel Two Button Blazer Quick Shop * Lapel Collar Single Breasted Shirt & Pants 2Pcs Set Quick Shop * Business Houndstooth Stitching Blazer Quick Shop * OK Elegant Allover Print Lapel Collar One Button Blazer Quick Shop * Casual Stand Collar Colorblock Pocket Shirt & Pant 2Pcs Set Quick Shop * Ethnic Casual Stripe Crew Neck Shirt & Pant 2Pcs Set Quick Shop * Fashion Colorblock Plaid Lapel Collar Button Blazer & Pants 2Pcs Set Quick Shop * Vintage Crocodile Embossed Point Toe Leather Dress Shoes Quick Shop * Daily Stand Collar Denim Pattern Shirt & Pants 2Pcs Set Quick Shop * Contrast Collar Random Striped Half Zipper Top & Pants Set Quick Shop * African Ethnic Casual Round Neck Shirt & Pant 2Pcs Set Quick Shop * OK Fashion Polka Dot Print Short Sleeve Shirt & Pants 2Pcs Set Quick Shop * African Ethnic Casual Long Sleeve Shirt & Pant 2Pcs Set Quick Shop * Formal Turndown Collar Pockets Blazer & Pant 2Pcs Set Quick Shop * Okaywear Letter Print Short Sleeve Shirt & Pant 2Pcs Set Quick Shop * PU Leather Notch Lapel Single Breasted Blazer & Pants 2Pcs Set Quick Shop * Patchwork Stand Collar Double Breasted Blazer & Pants 2Pcs Set Quick Shop * Casual Leopard Pattern Pocket Shirt & Pants 2Pcs Set Quick Shop * Okaywear Contrast Striped One Button Blazer & Pants 2Pcs Set Quick Shop * Casual Plain V Neck Half Sleeve Loose Shirt & Drawstring Pants 2Pcs Set Quick Shop * Formal Animal Pattern Shawl Neck Single Breasted Blazer Quick Shop * OK Casual Plain Short Sleeve Polo Shirt & Pants 2Pcs Set Quick Shop * Business Straight Leg Pockets Shirt Collar Velvet Jumpsuit Quick Shop * Vacation Allover Pattern Lapel Collar Shirt & Pants 2Pcs Set Quick Shop * OK Casual Plain Hollow Breathable Polo Shirt & Pants 2Pcs Set Quick Shop * Sporty Short Sleeve Multi-Pocket T-Shirt & Shorts 2Pcs Set Quick Shop * OK Casual Striped Print Notch Lapel Two Button Blazer Quick Shop * Business Pockets Striped Single Breasted Blazer & Pant 2Pcs Set Quick Shop * Okaywear Patchwork Waist Buckle Design Pocket Shirt & Pant 2Pcs Set Quick Shop * OK Casual Polka Dot Long Sleeve Shirt & Pants 2Pcs Set Quick Shop * Business Turndown Collar Long Sleeve Pure Blazer Quick Shop * OK Classic Blue Plaid Notch Lapel Two Button Slim Fit Blazer Quick Shop * Formal Notch Lapel Double Breasted Pockets Blzer & Pant 2Pcs Set Quick Shop * Fashion Hooded Sleeveless Zipper Mirror Leather Vest Quick Shop * Business Casual Houndstooth Pocket Turndown Collar Blazer Quick Shop * Casual Lapel Collar Two Button Chest Pocket Plain Blazer Quick Shop * Business Slim Slant Pocket Solid Color Waffle Suit Pants Quick Shop * Business Pointed Toe Patent Leather Colorblock Loafer Shoes Quick Shop * Okaywear Vacation Lapel Collar Pockets Straight Leg Jumpsuit Quick Shop * Business Striped Turndown Collar Double Breasted Blazer Quick Shop * Vacation Daily Long Sleeve Print Shirt & Short 2Pcs Set Quick Shop * Houndstooth Pattern Single Breasted Casual Blazer Quick Shop * Casual Floral Long Sleeve Button Shirt & Shorts 2Pcs Set Quick Shop * Single Breasted Lapel Collar Shirt & Pants 2Pcs Set Quick Shop * Retro Tribal Pattern Loose Crew Neck Short Sleeve T-Shirt Quick Shop * Basic Solid Velvet Lapel Collar Chest Pocket Blazer Quick Shop * Okaywear Houndstooth Chest Pocket Double Breasted Blazer Quick Shop * Ethnic Stripe Long Sleeve Shirt & Pant 2Pcs Set Quick Shop * Business Casual Stripe Stand Collar Long Sleeve Shirt Quick Shop * Daily Multi-Pocket Turndown Collar Buttons Plaid Jacket Quick Shop * PU Leather Notch Lapel Two Buttons Jacket & Pants 2Pcs Set Quick Shop * Plaid Notch Lapel Collar Buttons Design Utility Pockets Blazer Quick Shop * Daily Herringbone Single Breasted Pockets Notch Lapel Patchwork Blazer Quick Shop * OK Casual Leopard Print Notch Lapel Pocket Two Button Blazer Quick Shop * OK Elegant Vertical Stripe Lapel Collar Two Button Pocket Blazer Quick Shop * OK Casual Plaid Lapel Collar Slim Fit Blazer & Pants 2Pcs Set Quick Shop * Retro Floral Pattern Stand Collar Jacket & Pants 2Pcs Set Quick Shop * OK Fashion Color Block Plaid Print Slim Fit Pencil Pants Quick Shop * Single Breasted Pockets Safari Jacket & Pant 2Pcs Set Quick Shop * Men Luxury Lapel Fuzzy Overcoat Quick Shop * OK Casual Plain Lapel Collar Linen Blazer & Shorts 2Pcs Set Quick Shop ${function(){ const isCart = data.data.isCart; const isCollection = data.data.isCollection; const isProduct = data.data.isProduct; const isIndex = data.data.isIndex; return ` ${isCart ? 'The items in the shopping cart do not participate in any recommendation rule. Add the participating items to your shopping cart to check the design.' : ''} ${isProduct ? 'This product did not participated in any recommendation rule. Switch to another product to check the design.' : ''} ${isCollection ? 'The items in this collection do not participate in any recommendation rule. Switch the participating items to check the design.' : ''} ${isIndex ? 'The home page do not participate in any recommendation rule.' : ''} (This prompt would not display on client-side) Recommended Products ` }()} ${function(){ const rule = data.data; const getImageHeight = function(image){ const image_size = rule.config.image_size || 0; const imageWidth = image.width || 600; const imageHeight = image.height || 800; let ratio = 0; if(image_size == 0){ ratio = (imageHeight / imageWidth).toFixed(2); }else if(image_size == 1){ ratio = 1.5; }else if(image_size == 2){ ratio = 1; }else if(image_size == 3){ ratio = 0.75; } return imageWidth * ratio; }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); return ` ${rule.config.title} * ${product.title} ${rule.config.quick_shop_button_text} ` }()} class SpzSmartBlockComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this.i18n_ = {}; this.config_ = {}; this.show_type_ = 3; this.product_resource_id_ = ''; this.collection_resource_id_ = ''; this.cart_items_ = []; this.customer_id_ = ''; this.order_id_ = ''; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { const template_type = window.SHOPLAZZA.meta.page.template_type; if (template_type === 1) { this.show_type_ = 3; this.product_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 2) { this.show_type_ = 4; this.collection_resource_id_ = window.SHOPLAZZA.meta.page.resource_id; } else if (template_type === 15){ this.show_type_ = 5; } else if (template_type === 13){ this.show_type_ = 6; } else if (template_type === 20){ this.show_type_ = 7; this.customer_id_ = window.SHOPLAZZA.customer.customer_id; } else if (template_type === 35){ this.show_type_ = 8; this.order_id_ = window.location.pathname.split('/').pop(); } this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('smart mounted'); const that = this; const themeName = window.SHOPLAZZA.theme.merchant_theme_name; const isGeek = /Geek/.test(themeName); this.fetchRules().then((res) => { if (res && res.rules && res.rules.length) { const blockEl = document.getElementById('smart_recommend_block'); SPZ.whenApiDefined(blockEl).then((api) => { api.render({data: res}, true).then(() => { if (isGeek && that.show_type_ === 6) { blockEl.querySelector('.plugin_container_wrpper').style.padding = '30px 0'; } const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` .plugin__recommend_container,.app-recommend-card { display: none !important; } `; document.head.appendChild(recommendStyle); const fetchList = []; res.rules.forEach((rule) => { fetchList.push(this.fetchRuleProductList(rule.id)); }); const fetchAll = Promise.all(fetchList); fetchAll.then((p_res) => { res.rules.forEach((rule, index) => { rule.products = p_res[index] && p_res[index].products; const ruleEl = document.getElementById('smart_recommend_rule_' + rule.id); SPZ.whenApiDefined(ruleEl).then((api) => { api.render({data: rule}, true).then(() => { that.impressListen(`#smart_recommend_rule_ul_${rule.id}`, function(){ that.trackRuleImpress(rule); }); const btnElList = document.querySelectorAll(`#smart_recommend_rule_ul_${rule.id} button`); btnElList.forEach((btnEl) => { if (btnEl && rule.config && rule.config.quick_shop_button_bg_color && rule.config.quick_shop_button_text_color) { btnEl.style.backgroundColor = rule.config.quick_shop_button_bg_color; btnEl.style.color = rule.config.quick_shop_button_text_color; } }) }); }); }); }); }) }) } else { if (window.top !== window.self) { const template_type = window.SHOPLAZZA.meta.page.template_type; const holderEl = document.getElementById('smart_recommend_preview_no_data_placeholder'); SPZ.whenApiDefined(holderEl).then((api) => { api.render({data: { isCart: template_type === 13, isCollection: template_type === 2, isProduct: template_type === 1, isIndex: template_type === 15 }}, true); }); } } }); } setAction_() { this.registerAction('quickShop', (data) => { const that = this; const product_id = data.args.product_id; const productIndex = data.args.productIndex; const rule_id = data.args.rule_id; const ssp = data.args.ssp; const scm = data.args.scm; const cfb = data.args.cfb; const ifb = data.args.ifb; const modalRender = document.getElementById('smart_recommend_product_modal_render'); if (product_id) { this.fetchProductData(product_id).then((res) => { const product = res.products && res.products.length && res.products[0] || {}; product.cfb = cfb; product.ifb = ifb; SPZ.whenApiDefined(modalRender).then((api) => { api.render({product: product, productIndex: productIndex, rule_id: rule_id, ssp: ssp, scm: scm, show_type: that.show_type_}, true).then(() => { const modalEl = document.getElementById('smart_recommend_product_modal'); SPZ.whenApiDefined(modalEl).then((modal) => { that.impressListen('#smart_recommend_product_modal', function(){ that.trackQuickShop({ rule_id: rule_id, product_id: product_id }); }); modal.open(); }); const formEl = document.getElementById('smart_recommend_product_form'); SPZ.whenApiDefined(formEl).then((form) => { form.setProduct(product); }); const variantEl = document.getElementById('smart_recommend_product_variants'); SPZ.whenApiDefined(variantEl).then((variant) => { variant.handleRender(product); }); }); }) }); } }); this.registerAction('handleScroll', (data) => { this.directTo(data.args.rule_id, data.args.direction); }); this.registerAction('handleProductChange', (data) => { const variant = data.args.data.variant; const product = data.args.data.product; const imageRenderEl = document.getElementById('smart_recommend_product_image'); SPZ.whenApiDefined(imageRenderEl).then((api) => { api.render({ variant: variant, product: product }, true); }); }); this.registerAction('handleAtcSuccess', (detail) => { const data = detail.args; data.data.product = data.data.product || {}; data.data.variant = data.data.variant || {}; const product_id = data.data.product.id; const product_title = data.data.product.title; const variant_id = data.data.variant.id; const price = data.data.variant.price; const rule_id = data.rule_id; const aid = `smart_recommend.${this.show_type_}.${rule_id}`; const ifb = data.data.product.ifb; const cfb = data.data.product.cfb; const ssp = data.ssp; const scm = data.scm; const spm = `smart_recommend_${this.show_type_}.${data.spmIndex}`; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; this.tranckAddToCart(params); }); this.registerAction('addATCHook', (data) => { const params = data.args; const spm = `smart_recommend_${this.show_type_}.${params.spmIndex}`; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: `smart_recommend.${this.show_type_}.` + params.rule_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, }, once: true }); }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } fetchRules() { const payload = { show_type: this.show_type_, }; let that = this; if (this.show_type_ === 6) { let line_items = []; return this.fetchCart().then((res) => { if (res && res.cart && res.cart.line_items) { line_items = res.cart.line_items.map((item) => { return { product_id: item.product_id, variant_id: item.variant_id, quantity: item.quantity, price: item.price } }); } payload.line_items = line_items; that.cart_items_ = line_items; return that.fetchRulesRequest(payload); }); } else { if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return this.fetchRulesRequest(payload); } } fetchRulesRequest(payload) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_query", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }); } fetchCart() { return fetch(`/api/cart/cart-select?r=${Math.random().toString(36).slice(-4)}`) .then((res) => { if (res.ok) { return res.json(); } }); } fetchRuleProductList(rule_id) { const payload = { page: 1, limit: 100, fields: ["title", "url", "image", "min_price_variant.price", "min_price_variant.compare_at_price"], rule_id: rule_id, }; if (this.show_type_ === 3) { payload.line_items = [{ product_id: this.product_resource_id_ }]; } else if (this.show_type_ === 4) { payload.collection_id = this.collection_resource_id_; } else if (this.show_type_ === 6) { payload.line_items = this.cart_items_; } else if (this.show_type_ === 7) { payload.customer_id = this.customer_id_; } else if (this.show_type_ === 8) { payload.order_id = this.order_id_; } return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); }); } fetchProductData(product_id) { return fetch(window.SHOPLAZZA.routes.root + "/api/possum/products", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ product_ids: [product_id], fields: [ "images", "options", "min_price_variant", "variants"] }) }).then(function(res){ if(res.ok){ return res.json(); } }).catch(function(err){ console.log(err); const loadingEl = document.getElementById('smart_recommend_loading'); if (loadingEl) { loadingEl.style.display = 'none'; } }); } getStyle(ele, style) { if (!ele) return; if (window.getComputedStyle) { return window.getComputedStyle(ele)[style]; } return ele.currentStyle[style]; } directTo(id, direction) { const scrollElement = document.getElementById(`smart_recommend_rule_ul_${id}`); const blockWidth = parseInt(this.getStyle(scrollElement, 'width')); const scrollLength = (blockWidth * 0.19 - 12) * 5; const scrollPoint = scrollElement.scrollWidth - scrollElement.clientWidth; if (!scrollElement) return; if (direction === 'left') { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft - scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: Math.max(scrollElement.scrollLeft - scrollLength, 0), behavior: 'smooth' }); } else { if (document.dir === 'rtl') { scrollElement.scrollTo({ left: Math.abs(scrollElement.scrollLeft) >= scrollPoint + 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); return; } scrollElement.scrollTo({ left: scrollElement.scrollLeft >= scrollPoint - 100 ? 0 : scrollElement.scrollLeft + scrollLength, behavior: 'smooth' }); } } trackRuleImpress(rule) { if (window.sa && window.sa.track) { window.sa.track("plugin_common", { plugin_name: "upsell", event_type: "impressions", rule_id: rule.id, ssp: rule.ssp, scm: rule.scm, show_type: this.show_type_, support_app_block: window.SHOPLAZZA.theme.support_app_block }); window.sa.track("module_impressions", { aid: `smart_recommend.${this.show_type_}.${rule.id}`, support_app_block: window.SHOPLAZZA.theme.support_app_block }); } } trackQuickShop(data) { window.sa && sa.track && sa.track("plugin_common", { plugin_name: "upsell", event_type: "quick_shop", rule_id: data.rule_id, product_id: data.product_id, show_type: this.show_type_, }); } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart-block', SpzSmartBlockComponent); ${(function(){ const product = data.product; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); return ` ${product.images.map((image) => { return `` }).join('')} ${product.title} See detail Quantity Add To Cart Buy Now `; })()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} Description Style: Casual, Daily Color: As Picture Material: Cotton Blends Fit Type: Regular Fit Pattern Type: Stripe Trim Neckline: Crew Neck Details: Short Sleeve Product Type: Presell Item ID: YL04418 Shipping Policy We provide FREE STANDARD SHIPPING on orders over US$89 BELOW ARE OKAYWEAR STORE SHIPPING TIMES AND COST DETAILS: Delivery Time = Processing Time + Shipping Time Processing time: 3-8 Business Days Shipping Countries: Worldwide Shipping time: The waiting time frame will depend on where you're located and on the service type you're choosing. Shipping Methods Shipping Time Costs Standard Shipping 10-25 Business Day $9.99 (Free for US$89+) Note: “okaywear” will ship according to the shipping method you choose(Standard Shipping & Express Shipping) ABOUT SHIPPING COUNTRIES: Our logistics providers support shipping your order to USA, Canada, Australia, UK, and Europe. Non-shippable country/region: Shipping is not supported to countries/regions other than those listed above. DO I NEED TO PAY CUSTOMS DUTIES? Each country has its own customs rules and policies. Please contact local customs for more information. If, in rare cases, import duties or taxes are charged, the customer is responsible for paying them. HOW DO I TRACK MY ORDER? Once your order is shipped, we will send you an email with the corresponding information. After that you will be able to track your order at https://www.17track.net/en. Please allow 1-2 business days for tracking information to be available. UNCONTROLLABLE FACTORS IN SHIPPING FOR OKAYWEAR ORDERS: In most cases, packages will arrive within the estimated time of arrival. However, the actual delivery date may be affected by external factors such as flight arrangements and weather conditions. Please refer to the tracking information for the most accurate delivery date and be patient. WHAT IF THE PACKAGE DOESN’T ARRIVE? If you don’t get your package 60 days after it was shipped, please contact us at support@okaywear.com . We’ll either resent a new one to you or give you a full refund. Returns Policy & Refunds Your comfort, performance, and happiness is our top priority.If you have any questions and comments, If you do not satisfied with our goods and want to send them back to get a refund or an exchange, you can send a message to our after-sale Customer Service (email address: support@okaywear.com), they will reply you in 24 hours(except weekends) and give you further information and some useful advice.Any returns not authorized by Customer Service will not be entertained. 30 DAY RETURNS If you have any reason or suggestion that you are not satisfied with the order, please contact our customer service at support@okaywear.com within 30 days after receiving the product to request a return. Our customer service team will provide you with our return address. And all return shipping fees are at customers' own expense. Our customer service will always provide the best service for our customers.Return packages should be authorized. Any return request not authorized by the customer service will not be honored. Note: Due to external factors such as equipment and screen brightness, the product image will be different from the actual product. GET A SOLUTION STEPS TO CONTACT US: Please email us at support@okaywear.com describing the issue in detail, including the return reason, along with your order number and sku product number. for defective, incorrect or not as described items, please send us a clear picture or video of the problem. please keep the picture below 2 mb. - OUR SOLUTIONS: 1. Okaywear's responsibility · If our company is responsible for the issue, we will allow a return to our warehouse for a refund and/or an exchange. · Once we receive the item, we will offer compensation or resend for free a replacement at our expense. 2.Customer's responsibility · If the customer has ordered an incorrect size, product or simply wants to exchange the item, we can also allow a return. · The customer is responsible for the shipping fee for an exchange, and we will refund the original product cost upon receiving the returned item. all shipping fees are non-refundable. COMPENSATION TIME-FRAME For returned items or items for exchange, we will need 3-6 business days upon receiving your item(s) to process the solution. After this time, the refund time-frame is as below: Paypal account refunds: Up to 48 hours Credit card refunds: Between 7-14 business days Wallet refunds: Up to 24 hours. Please feel free to email us anytime, Okaywear is at your service! Email: support@okaywear.com Be sure to contact our customer service before returning the goods, do not return the goods privately! If the return is caused by the consumer, consumer should be responsible for the shipping fee. The specific fee should be based on the express company you choose. If due to our reasons, the goods received are damaged or not correct, and the consumer is not required to bear the shipping fee for this reason. No restocking fee to be charged to the consumers for the return of a product. Customer Reviews Here are what our customers say. Write a Review 5 Total reviews: 3 5 4 3 2 1 Write a Review Reviews(3) With Photos(0) Newest Newest Most liked Highest ratings Lowest ratings 1 Customer Reviews Reviews With Photos Wow you reached the bottom Newest Most liked Highest ratings Lowest ratings × ${function(){ const limit = typeof data === 'number' ? data : 0; return ` Pictures/Videos (${limit || 0}/5) ` }()} ${(function(){ const closeIcon = ' '; if (item.type === 'image') { return ` ${closeIcon} ` } return ` ${closeIcon} ` })()} Submit Comments Anonymously class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload); The review would not show in product details on storefront since it does not support to. NEW IN View all * VINTAGE FLORAL PRINT PATCHWORK SHAWL LAPEL & PANTS 2PCS SET $93.79 NEW * SOLID SINGLE BREASTED LAPEL SHIRT & PANTS 2PCS SET $69.79 NEW * DAILY LAPEL COLLAR BUTTON POCKETS STRIPE SHIRT $39.79 NEW * STAND COLLAR POCKETS SINGLE BREASTED SOLID SHIRT $37.79 NEW * OKAYWEAR LINEN OMBRE PRINT BLAZER & SHORTS 2PCS SET $79.79 NEW * OKAYWEAR SATIN GRADIENT FLORAL PRINT LAPEL COLLAR BLAZER $59.79 NEW BLAZERS View all * BUSINESS GRADIENT SINGLE BREASTED POCKETS LAPEL COLLAR BLAZER $52.79 * OKAYWEAR BUSINESS CHECKERBOARD JACQUARD CHEST POCKET BUTTON BLAZER $59.79 * OKAYWEAR SINGLE BREASTED LINEN GRADIENT NOTCH LAPEL BLAZER $59.79 * BUSINESS TRIBAL PATTERN NOTCH LAPEL LONG SLEEVE BLAZER $52.79 * OKAYWEAR HOUNDSTOOTH CHEST POCKET DOUBLE BREASTED BLAZER $56.79 * SEERSUCKER PEAK LAPEL DOUBLE BREASTED POCKET BLAZER $59.79 TOPS View all * +8 DAILY LINEN LOOSE SINGLE BREASTED LONG SLEEVE SHIRT $20.79 * DAILY LAPEL COLLAR PATCHWORK BUTTON SHIRT $26.79 * +4 DAILY LINEN POCKETS LAPEL COLLAR LACE UP SHORT SLEEVE SHIRT $29.79 * CASUAL KNITTED COLORBLOCK CREW NECK SLEEVELESS VEST $29.79 * SPORTY COLORBLOCK U NECK VERTICAL STRIPED KNITTED VEST $16.79 * VACATION ELASTIC LEATHER U NECK SLIM FIT VEST $18.79 Subscribe and Get 10%OFF || Code:OKAYWEAR10 Subscribe Thanks for subscribing OKAYWEAR INFO * About Us * Privacy Policy * Affiliate Program * Terms & Conditions * Intellectual Property Policy HELP & SUPPORT * Shipping Policy * Payment Policy * Refund & Returns * Bulk Purchaser Policy * How To Orders * Size Guide CUSTOMER SERVICE * Contact Us * FAQs Get in touch support@okaywear.com Follow us We accept PayPal Visa Discover Diners Club Maestro Mastercard © 2024 Okaywear © Copyright-Okaywear.com. All rights reserved. SIGN UP AND SAVE Entice customers to sign up for your mailing list with discounts or exclusive offers. Include an image for extra impact. Subscribe Thanks for subscribing Optional button const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation); Lucky Gift JOIN US NOW* Free Shipping Sorry... 10% off Sorry... $89-$5 Off Sorry... $129-$15 Sorry... $500-$100 Sorry... This field is required The email address must contain @ and a valid domain Something went wrong! Let's start spinning Welcome to OKAYWEAR! Congratulations on getting a coupon Please don’t forget to fill in the discount code when checking out! You are already subscribed Shop now 111 GIFTS POINTS Crew Neck Stripe Trim T-Shirt & Pants 2Pcs Set $52.79 $52.79 Red/S Add to Cart Crew Neck Stripe Trim T-Shirt & Pants 2Pcs Set $52.79 $52.79 Red/S Red Red Black S S M L XL 2XL 3XL 4XL Add to Cart 111 $0.00 1 Item has been added ${(function(){ const products = data.products; const getDefaultVariant = function(product){ if (product.min_price_variant.available){ return product.min_price_variant; }else { const avail_variants = product.variants.filter(function(variant){ return variant.available; }); if (avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams = function(product, index){ const variant = getDefaultVariant(product); const params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm || '', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams = Object.keys(params).map(function(key){ return params[key]; }).join('__'); return trackParams; }; const hasMore = (data.products.length - data.target_top_product_num - data.page * data.limit) === 0; return ` ${(function(){ return ` ${data.config.pop_title} ${data.rebate_tips || ''} `; })()} ${product.title} Added `; })()} class SpzCustomComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this._atcLineItem = {}; this.cart_ = {}; this.top_product_ids_ = []; this.products_ = []; this.activityId_ = null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {}; this.config_ = {}; this.page_ = 1; this.limit_ = 10; this.loading_ = false; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('pop mounted'); this.i18n_ = window.smartRecommendI18n && window.smartRecommendI18n[document.documentElement.lang || 'en-US'] || {}; const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const modalEl = document.getElementById("smart_cart_pop_modal"); const spmBase = `smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, }; const that = this; document.addEventListener('dj.addToCart', (event) => { try { const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block || this.rendered_) return; that.fetchActivityData({product_id: e.product_id, variant_id: e.variant_id}).then(data => { if (!data || !data.products || !data.products.length) return; that.config_ = data.config; const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` #plugin_recommend_atc_pop { display: none !important; } `; document.head.appendChild(recommendStyle); if (data.config.pop_frequency === 'once' && window.sessionStorage.getItem('smart_pop_times') > 0) return; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ api.render(Object.assign({}, data, extra), true).then(function() { that.rendered_ = true; if (data.products.length) { const headEl = document.getElementById("smart_cart_pop_head_render"); if (headEl) { SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); }); } SPZ.whenApiDefined(modalEl).then(function(api){ that.impressListen('#smart_cart_pop_activity', function(){ that.trackPluginImpression_(data); }); api.open(); const intersectionObserver = new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio > 0){ !that.loading_ && (that.products_.length - that.target_top_product_num_) === that.page_ * that.limit_ && that.viewMore(); } }, { threshold: [0.1] } ); intersectionObserver.observe( document.querySelector('#smart_cart_pop_view_more_text') ); }); } }) }); }) } catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const that = this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_ }).then(function(data) { data.products = that.products_; data.target_top_product_num = that.target_top_product_num_; data.i18n = that.i18n_; data.spmBase = `smart_recommend_2`; api.render(data); }) }) } fetchActivityData(data) { const that = this; if (data.product_id) { that._atcLineItem = data; } that.loading_ = true; return that.getCart().then(cart => { that.cart_ = cart.cart; return fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_activities", { method: "POST", headers: { "Content-Type": "application/json", "store-id": window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ "show_type": 2, "line_item": { "product_id": that._atcLineItem.product_id, "variant_id": that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page": data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){ return res.json(); } }).then(function(data){ data.cart = cart.cart; if (data.page === 1) { that.target_top_product_num_ = data.target_top_product_num || 0; } that.products_ = that.products_.concat(data.products || []); that.page_ = data.page || 1; that.limit_ = data.limit || 10; return data; }).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ = false; }) }); }; setAction_() { this.registerAction('changeBannerColor', (data) => { if (!data.args.data || !data.args.data.data || !data.args.data.data.data) return false; const config = data.args.data.data.data.config; const bannerBgEl = document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) { bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color = config.banner_text_color; } }); this.registerAction('handleProductChange', (data) => { const that = this; const imageEl = document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`); SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data: data.args.data, config: that.config_ }); }); const atcTextEl = document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`); SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data: data.args.data, defaultText: data.args.defaultText, soldOutText: that.i18n_.sold_out }); }); if (data.args.data.variant.available) { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none'); } else { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none'); } }); this.registerAction('handleProduct', (detail) => { const that = this; this.renderProductsForm_(detail.args.data.data); }); this.registerAction('addATCHook', (data) => { const params = data.args; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${params.spm}`, }, once: true }); }); this.registerAction('handleAtcSuccess', (detail) => { detail.args.data.product = detail.args.data.product || {}; detail.args.data.variant = detail.args.data.variant || {}; const defParams = detail.args.product.split('__'); const product_id = detail.args.data.product.id; const product_title = detail.args.data.product.title; const variant_id = detail.args.data.variant.id; const price = detail.args.data.variant.price; const aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb = detail.args.data.product.cfb; const scm = defParams[1]; const spm = defParams[2]; const ssp = defParams[3]; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; const activity_id = `${detail.args.activity_id}`; const target_drive_way = detail.args.target_drive_way; document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden'); setTimeout(() => { document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden'); document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none'); }, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') { const bannerEl = document.getElementById(`smart_cart_pop_banner`); this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) { bannerEl.innerHTML = res.rebate_tips; } }) } }); this.registerAction('handleCartSummary', (event) => { const that = this; const checkoutButtonEle = document.getElementById("smart_cart_pop_checkout_button"); if (checkoutButtonEle) { SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n: that.i18n_ }, false); }); } const tipEl = document.getElementById("smart_cart_pop_tip_info"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; let total_price = cart.total_price; if (!total_price) { SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); } else { this.getBindDiscount_(cart.line_items).then(res => { if (res && res.discount_code){ const total = cart.line_price - cart.total_discount - res.bundle_discount_value; if (total > 0) { total_price = total; } else { total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); }) } }); this.registerAction('open', () => { window.sessionStorage.setItem('smart_pop_times', Number(window.sessionStorage.getItem('smart_pop_times')) + 1); }); this.registerAction('close', () => { this.rendered_ = false; this.products_ = []; window.djInterceptors && window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/cart`, { method: 'GET', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res => res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart => { this.cart_ = cart.cart; return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2, rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item: this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data) { const products = data.products; const listPopRenderEl = document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return; listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){ el.style.background = data.config.add_to_cart_button_color; }); products.forEach(function(product){ const productId = product.id; const productFormEls = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`); let variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_mobile ljs-variants`); if (window.innerWidth > 768) { variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_pc ljs-variants`); } productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.setProduct(product); }); }); variantsEl.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } trackPluginImpression_(rule){ if (window.sa && window.sa.track) { window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` }); } } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids'] && JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) => arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); } if (!carts.length) { Promise.resolve(); } return fetch(`${window.SHOPLAZZA.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ cart: carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart', SpzCustomComponent); ${function(){ return ` ${data.data.rebate_tips || ''} `; }()} ${function(){ const getImageHeight = function(image){ const width = image.width || 500; const height = image.height || 500; const image_size = data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height / width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 * ratio; }; const image = data.data.variant.image || data.data.product.image; return ` `; }()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} ${(function(){ const variant = data.variant; return ` `; })()} ${(function(){ const variant = data.variant; return ` ${ variant.options.map(function(option){ return option.value; }).join("/") || 'Not exist' } `; })()} ${(function(){ const variant = data.data && data.data.variant; const defaultText = data.defaultText || 'Add To Cart'; const text = (!variant || variant.available) ? defaultText: data.soldOutText; return ` ${text} `; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; } return ` ${cart.item_count >=0 ? cart.item_count : '..'} `; })()} ${(function(){ return ` ${data.i18n.checkout} `; })()} Ends in: 0 0 : 0 0 : 0 $0.00 Buy now Buy now See detail $0.00 Quantity 1 We care about your privacy We use cookies to give you the best shopping experience. If you continue to use our services, we will assume that you agree to the use of such cookies. Click here for more information on our Privacy Policy. Privacy policy DECLINE ACCEPT Success Copy successfully, use at checkout Originaltext Diese Übersetzung bewerten Mit deinem Feedback können wir Google Übersetzer weiter verbessern