See all offers
Buy2 10% OFF, Buy4 20% OFF, Buy8 30% OFF
Buy2 10% OFF, Buy4 20% OFF, Buy8 30% OFF
Free Shipping On Orders $99+
Free Shipping On Orders $99+
Buy2 10% OFF, Buy4 20% OFF, Buy8 30% OFF
Free Shipping On Orders $99+
Buy2 10% OFF, Buy4 20% OFF, Buy8 30% OFF
Free Shipping On Orders $99+
New Arrivals
Best Seller
Patriotic
Hawaii Shirt
Corset
Home And Garden
More links
Log in
Create an account
${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)}
${(data.data && data.data.count) > 999 ? '999+' : (data.data && data.data.count)}
Search
New Arrivals
Best Seller
Patriotic
Hawaii Shirt
Corset
Home And Garden
Log in
Top search terms
${function() { if (data === undefined || typeof data !== 'string' || data == '') return ''; const searchEmpty = ("Your search for \"{test}\" did not yield any results.").replace('{test}', data); return `
View more
${searchEmpty}
`; }()}
Sorry, there are no products in this collection.
${function() { const freeAmount = 99; const totalPrice = data?.total_price || data?.cart?.total_price || 0; const amountDiff = freeAmount - totalPrice; const percentDiff = (amountDiff > 0 ? (totalPrice / freeAmount * 100) : 100) + '%'; let tipText = `
Your order is free delivery
`; if (amountDiff > 0) { tipText = `
Spend
more and get free shipping!
`; } return `
${tipText}
`; }()}
${item.product_title}
${item.options.map(option => option.value).join(' / ')}
${(item.parsedProperties || []).map((propertie)=>{ if (propertie.isImage){ return `
${propertie.name}:
View image
` }else{ return `
${propertie.name}: ${propertie.value}
` } }).join('')}
*${item.quantity}
Free gift
${ (item.discount_applications || []).map(discount_item => { const discount_item_amount = discount_item.discount_amount || discount_item.amount || ''; return `
${discount_item.title}
(-
)
` }).join('') }
Remove
Cart
${ data.originData.message }
${function () { if (!data.originData) return ""; let { apply_scenario, discount_info, landing_page_info, threshold_category } = data.originData; const progressDom = `
`; const { mobile_layout, show_add_to_cart, show_discount_label } = landing_page_info.product_display; const isBXGY = discount_info.discount_type === "DT_CODE_BXGY"; const buyProductsDom = `
`; const obtainProductsDom = `
`; const is_obtain = threshold_category === 'THRESHOLD_CATEGORY_OBTAIN_PRODUCT' ? 'active' : ''; const tabsDom = `
${function(){ let liDom = ''; const items = [ { text: landing_page_info.product.buy_product.text, class: "", value: 1 }, { text: landing_page_info.product.obtain_product.text, class: "cart-coupon-code-modal-tab__obtain", value: 2, is_obtain } ]; for (item of items) { liDom += `
${ item.text }
` } return liDom; }()}
${buyProductsDom}
${obtainProductsDom}
`; return `
${progressDom} ${isBXGY ? tabsDom : `
${buyProductsDom}
`}
` }()}
const TAG = 'spz-custom-cart-coupon-code-utils'; class SpzCustomCartCouponCodeUtils extends SPZ.BaseElement { constructor(element) { super(element); } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.keepOpenGuardBound_ = false; this.registerAction('setSideBarHeight', this.setSideBarHeight_.bind(this)); this.onResize_ = this.setSideBarHeight_.bind(this); window.addEventListener('resize', this.onResize_); } detachedCallback() { if (this.onResize_) { window.removeEventListener('resize', this.onResize_); this.onResize_ = null; } } ensureKeepOpenGuard_($sideBar) { if (this.keepOpenGuardBound_) return; this.keepOpenGuardBound_ = true; const observer = new MutationObserver(() => { if ($sideBar.hasAttribute('open') && $sideBar.hasAttribute('hidden')) { $sideBar.removeAttribute('hidden'); this.setSideBarHeight_(); } }); observer.observe($sideBar, { attributes: true, attributeFilter: ['hidden', 'open'] }); } getOpenDrawer_() { return document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setSideBarHeight_() { const $sideBar = document.querySelector('#cart-coupon-code-modal'); if (!$sideBar) return; this.ensureKeepOpenGuard_($sideBar); const windowHeight = window.innerHeight; const $drawer = this.getOpenDrawer_(); if (!$drawer) { $sideBar.style.setProperty('max-height', windowHeight * 0.9 + 'px', 'important'); $sideBar.style.removeProperty('height'); $sideBar.style.removeProperty('width'); $sideBar.classList.remove('cart-coupon-code-modal--in-drawer'); return; } const drawerHeight = (windowHeight - 40) + 'px'; $sideBar.style.setProperty('max-height', drawerHeight, 'important'); $sideBar.style.setProperty('height', drawerHeight, 'important'); $sideBar.classList.add('cart-coupon-code-modal--in-drawer'); const rect = $drawer.getBoundingClientRect(); if (rect.width > 0) { $sideBar.style.setProperty('width', rect.width + 'px', 'important'); } } } SPZ.defineElement(TAG, SpzCustomCartCouponCodeUtils);
${function(){ const settings_product_image_hover_on = true; const variantShowLimit = 4; const private_id = 'product-tmpl-' + Math.random().toFixed(6).slice(-6); const product_variants = data.variants || []; const product_id = data.id; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; const price = Number(data.price_min); let compareAtPrice = Number(data.compare_at_price); const type = data.type; const isMock = data.isMock; let product_image_hover_on = false; for (item of product_variants) { const vcap = Number(item.compare_at_price); if (item.price == price && vcap > compareAtPrice) { compareAtPrice = vcap; } } let second_image = null; if (settings_product_image_hover_on) { for (img of images.slice(1)) { if (img.src && img.src.indexOf('video=') === -1) { second_image = img; product_image_hover_on = true; break; } } } const sold_label_on = !data.available; let sale_label_on = false; if (compareAtPrice > price && data.available) { sale_label_on = true; } const diffPrice = compareAtPrice - price; return `
${function(){ return `
` }() }
SOLD OUT
SALE
${data.title}
-
${data.available ? `
` : ''}
`; }()}
const carousel = document.getElementById('marketing-quick-view-images'); const selector = document.getElementById('marketing-quick-view-thumb-images'); const resizeObserver = new ResizeObserver(entries => { for (let entry of entries) { const { height } = entry.contentRect; selector.style.height = height + 'px'; } }); resizeObserver.observe(carousel);
${function(){ const variantsNamesSet = new Set(data.options.map((opt) => opt.name.toLowerCase()) || []); const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, ''); const mouseoutevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseout="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const mouseoverevent = data.options.map((opt) => `@${handleName(opt.name)}Mouseover="qv-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const variants = data?.variants?.map((item) => item.image.path) || []; const productData = data; const images = data.images; const selectedVariant = data.variants.find(v => v.available) || data.variants[0]; const selectedIndex = !!selectedVariant ? images.findIndex(img => img.src === (selectedVariant.image && selectedVariant.image.src)) : 0; const initialSlide = selectedIndex === -1 ? 0 : selectedIndex; return `
${images.map((image, index) => `
`).join('')}
${images.map(image => `
`).join('')} ${images.length > 1 ? `
` : ''}
${data.title}
Price
${function() { const origin = "view"; const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? `
Save
` : `
-
`; }()}
Quantity
${selectedVariant.available ? "Add to cart" : "SOLD OUT"}
Buy it now
Product was out of stock.
Product is unavailable.
-
${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return `
Avaliability:
Product was out of stock.
in stock, ready to be shipped
Low stock
`; }()}
` }()}
${function(){ return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; return `
${optionName}:
${data.selectedValues[optionName]}
${option.values.map((value,idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; return `
${value}
` }).join('')}
` }).join('') }()}
${function(){ const { currentOptName, originData: { selectData, value } } = data; const optionValue = selectData ? selectData[currentOptName].value[0] : value; return `
${optionValue}
` }()}
Save
-
${function(){ const productData = data.product; const selectedVariant = productData.variants.find(v => v.available) || productData.variants[0]; const product_options = productData.options.filter(Boolean) || []; const handleName = (name) => name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, ''); const mouseoutevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseout="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); const mouseoverevent = productData.options.map((opt) => `@${handleName(opt.name)}Mouseover="qs-selected-render-${opt.id}.rerender(data=event,redo=true);"`).join(' '); return `
Price
${function() { const origin = "shop"; const product = (origin === 'shop' ? data.product : data) || {}; const selectedVariant = product.variants.find(v => v.available) || product.variants[0]; return !!selectedVariant ? `
Save
` : `
-
`; }()}
Quantity
${selectedVariant.available ? "Add to cart" : "SOLD OUT"}
Buy it now
Product was out of stock.
Product is unavailable.
-
${function() { const MAX_INVENTORY = 999999; const product0 = Object.prototype.toString.call(data) == '[object Array]' ? data[0] : (data.product || data); const inventoryQty = product0.inventory_quantity; const inventoryPolicy = product0.inventory_policy; const inventoryTracking = product0.inventory_tracking; const lowStock = 5; const selectedVariant = product0.variants.find(v => v.available) || product0?.variants[0]; const selectedVariantAvailableQuantity = selectedVariant && selectedVariant.available_quantity; let actualInventory = inventoryQty; if ((inventoryTracking && inventoryPolicy == 'continue') || !inventoryTracking) { actualInventory = MAX_INVENTORY; } return `
Avaliability:
Product was out of stock.
in stock, ready to be shipped
Low stock
`; }()}
` }()}
${function(){ return (data.product.options || []).map((option, index) => { const optionName = option.name || ''; const optionId = option.id || ''; return `
${optionName}:
${data.selectedValues[optionName]}
${option.values.map((value,idx) => { const selected = data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage = null; return `
${value}
` }).join('')}
` }).join('') }()}
${function(){ const { currentOptName, originData: { selectData, value } } = data; const optionValue = selectData ? selectData[currentOptName].value[0] : value; return `
${optionValue}
` }()}
Save
-
const TAG = 'spz-custom-marketing-utils'; class SpzCustomMarketingUtils extends SPZ.BaseElement { constructor(element) { super(element); } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() { this.ensureToastInBody_('coupon-code-toast-wrap'); } showCouponCodeToast_(message) { this.ensureToastInBody_('coupon-code-toast-wrap'); const toastEl = document.getElementById('coupon-code-toast'); if (!toastEl) return; SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } ensureToastInBody_(id) { const wrapEl = document.getElementById(id); if (!wrapEl) return; if (!wrapEl.closest('[data-section-type="cart_drawer"]')) return; if (wrapEl.parentNode !== document.body) { document.body.appendChild(wrapEl); } } buildCallback() { this.registerAction('addToCartTrigger', (invocation) => { window.$ && $(document).trigger('dj.common.cart.change'); window.$ && $(document).trigger('dj.addToCart', invocation.event.detail); }); this.registerAction('showAddToCartToast', () => { this.showCouponCodeToast_("Added successfully"); }); } } SPZ.defineElement(TAG, SpzCustomMarketingUtils);
Discount code
Apply
${function(){ if (data.status === 'APPLY_STATUS_SUCCESS' || !data.message) { return `
` } return `
${data.originData.message}
Add
` }()}
${data.map( item => { return `
${item}
` }).join('')}
Below discount codes are unavailable
${data.map( item => { return `
${item}
` }).join('')}
${function(){ const code_data = data.originData.list; if (!code_data || !code_data.length) return ''; const recommendDom = `
Recommend discount codes
`; const discountCodeListDom = code_data.map( item => { item.end_at = item.end_at == -1 ? item.end_at : item.end_at * 1000; item.start_at *= 1000; return `
${item.discount_text}
-
${item.code}
` }).join(''); return `
${recommendDom}
${discountCodeListDom}
${recommendDom}
${discountCodeListDom}
` }()}
Add note
Write something here to seller.
${(data.data && data.data.note) ? data.data.note : (data.note || data.value || '')}
Discount
${data.total_discount > 0 ? '-' : ''}
Subtotal
Taxes and shipping calculated at checkout
Check out
Your shopping cart is empty
Continue shopping
You may also like
${function() { const force_image_size = "natural"; const product_hover_on = true; const product_show_sale_label = false; const product_save_type = "amount"; const badge1 = ""; const badge2 = ""; const badge3 = ""; const product_title_mobile_hide = false; const product_title_style = "hide"; const enable_collection_thumb_image = true; const variantNames = ["color"]; const thumbMaxNum = 4; const suffix_id = Math.random().toFixed(6).slice(-6); const url = data.withinUrl; const productId = data.id; const price = data.price; const productAvailable = data.available; const productVariants = data.variants || []; const images = data.images || []; const image = data.image || {}; const imageWidth = image.width; let imageHeight = image.height; let image2 = data.secondImage; let imageHoverOn = !!image2.src; if (force_image_size !== 'natural') { imageHeight = imageWidth * force_image_size; } let compareAtPrice = data.compare_at_price; let offRatio = data.off_ratio; let discountMaxUrl = url; const showFrom = data.price_min != data.price_max ? true : false; for (let i = 0; i < productVariants.length; i++) { const variant = productVariants[i]; if (variant.price == price && compareAtPrice < variant.compare_at_price) { compareAtPrice = variant.compare_at_price; offRatio = variant.off_ratio; variant.available && (discountMaxUrl = variant.withinUrl); } } const soldOutText = "Sold out"; let soldOn = false; let saleOn = false; if (productAvailable) { if (product_show_sale_label && +price < +compareAtPrice) { saleOn = true; } } else { soldOn = true; } const diffPrice = compareAtPrice - price; const saveLabelContent = product_save_type == 'percent' ? (offRatio + '%') : `
`; let saveText = "Save {off_ratio}"; saveText = saveText.replace('{off_ratio}', saveLabelContent); const productTitle = data.title; const variantValues = []; const showVariants = []; if (data.need_variant_image && enable_collection_thumb_image && variantNames.length > 0) { for (let i = 0; i < (data.options || []).length; i++) { const option = data.options[i]; const optionName = option.name.toLowerCase(); if (variantNames.includes(optionName)) { for (let j = 0; j < productVariants.length; j++) { const variant = productVariants[j]; const value = variant.options[i].value; if (!variantValues.includes(value)) { variantValues.push(value); showVariants.push(variant); } } break; } } } return `
${saleOn ? saveText : soldOutText}
${badge1}
${badge2}
${badge3}
${ "title" === 'subtitle' ? data.brief : data.title }
From
${saveText}
${showVariants.map((item, idx) => { let showMoreHtml = ''; if (idx == thumbMaxNum) { showMoreHtml += `
+${showVariants.length - thumbMaxNum}
`; } return ` ${showMoreHtml}
`; }).join('') }
`; }()}