Midnight Mirage

$51.00
$80.00
Save 36%
1 sold
class SpzCustomDiscountFlashsale extends SPZ.BaseElement { constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); this.getFlashSaleApi = "\/api\/storefront\/promotion\/flashsale\/display_setting\/product_setting"; this.timer = null; this.variantId = "f2c0c378-1a6a-4aa8-812a-7546483b1964"; // 促销活动数据 this.flashsaleData = {} } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(); this.viewport_ = this.getViewport(); // 挂载bind函数 解决this指向问题 this.render = this.render.bind(this); this.resize = this.resize.bind(this); this.switchVariant = this.switchVariant.bind(this); } mountCallback() { // 获取数据 this.getData(); this.element.onclick = (e) => { const cur = this.win.document.querySelector(".app_discount_flashsale_desc"); if (this.flashsaleData.product_setting.is_redirection && appDiscountUtils.inProductBody(this.element) && e.target !== cur) { this.win.open(`/promotions/discount-default/${this.flashsaleData.discount_info.id}`); } } // 绑定 this.viewport_.onResize(this.resize); // 监听子款式切换,重新渲染 this.win.document.addEventListener('dj.variantChange', this.switchVariant); } unmountCallback() { // 解绑 this.viewport_.removeResize(this.resize); this.win.document.removeEventListener('dj.variantChange', this.switchVariant); // 清除定时器 if (this.timer) { clearTimeout(this.timer); this.timer = null; } } resize() { if (this.timer) { clearTimeout(this.timer) this.timer = null; } this.timer = setTimeout(() => { this.render(); }, 200) } switchVariant(event) { const variant = event.detail.selected; if (variant.product_id == 'ec4fdd9c-d880-430a-9a75-1048724d5c30' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "ec4fdd9c-d880-430a-9a75-1048724d5c30", product_type: "default", variant_id: this.variantId } this.flashsaleData = {}; this.win.fetch(this.getFlashSaleApi, { method: "POST", body: JSON.stringify(reqBody), headers: { "Content-Type": "application/json" } }).then(async (response) => { if (response.ok) { this.flashsaleData = await response.json(); this.render(); } else { this.clearDom(); } }).catch(err => { this.clearDom(); }); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } render() { this.templates_ .findAndRenderTemplate(this.element, { isMobile: appDiscountUtils.judgeMobile(), isRTL: appDiscountUtils.judgeRTL(), inProductDetail: appDiscountUtils.inProductBody(this.element), flashsaleData: this.flashsaleData, image_domain: this.win.SHOPLAZZA.image_domain, }) .then((el) => { this.clearDom(); this.element.appendChild(el); }) } } SPZ.defineElement('spz-custom-discount-flashsale', SpzCustomDiscountFlashsale);
Frame Color : Shiny Green & Marron Mix
Free Premium Packaging (Including Outer Box, Sunglasses Case And Microfiber Cloth)
(function(){ const TAG = 'spz-custom-lamb-add-btn'; class SpzCustomLambAddBtn extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.action_ = null; this.selected_variant = '{"id":"f2c0c378-1a6a-4aa8-812a-7546483b1964","product_id":"ec4fdd9c-d880-430a-9a75-1048724d5c30","title":"Shiny Green & Marron Mix","weight_unit":"g","inventory_quantity":6,"sku":"ZSA2090-V1","barcode":"","position":1,"option1":"Shiny Green & Marron Mix","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/3e776d5bbef524f763433e72fe0d6b0f.jpg","path":"3e776d5bbef524f763433e72fe0d6b0f.jpg","width":5000,"height":5000,"alt":"Midnight Mirage Zealous","aspect_ratio":1},"wholesale_price":[{"price":51,"min_quantity":1}],"weight":"28","compare_at_price":"80","price":"51","retail_price":"80","available":true,"url":"\/products\/midnight-mirage?variant=f2c0c378-1a6a-4aa8-812a-7546483b1964","available_quantity":999999999,"options":[{"name":"Frame Color","value":"Shiny Green & Marron Mix"}],"off_ratio":36,"flashsale_info":[],"sales":1}'; this.lens_process_id = ""; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.getLambLensSteps_(true); this.setupAction_(); } mountCallback() { document.addEventListener('dj.variantChange', (event) => { const variant = event.detail.selected; if (variant.product_id == 'ec4fdd9c-d880-430a-9a75-1048724d5c30') { this.selected_variant = JSON.stringify(variant); } }); } fetchLambLensSteps() { const lens_process_id = location.search.replace('?', '').split('&').find(v => v.includes('lens_process_id')); const template_id = location.search.replace('?', '').split('&').find(v => v.includes('template_id')); const stepsUrl = '/api/fireant/product/ec4fdd9c-d880-430a-9a75-1048724d5c30/steps' + ((lens_process_id ? `?${lens_process_id}` : '') || (template_id ? `?${template_id}` : '')); return fetch(stepsUrl).then((res)=>{ return res.json(); }).then((data)=>{ return data; }) } showProductBtn() { var addToCart = document.getElementById('add_to_cart_normal'); var productQuantityBtn = document.getElementById('product_info_quantity_normal'); addToCart && addToCart.classList.remove('hidden'); productQuantityBtn && productQuantityBtn.classList.remove('hidden'); } getLambLensSteps_(isInit) { try{ this.fetchLambLensSteps().then((data)=>{ if(data.errors) { if(isInit){ this.renderBtn(false); this.showProductBtn(); } }else{ if(isInit){ this.lens_process_id = data?.lens_process_id; let frameOnlyArr = data?.prescription_types?.options.filter((option)=>{ return option.prescription_type === 'Frame Only' }); let frameOnlyObj = frameOnlyArr.length > 0 ? frameOnlyArr[0] : {}; let available = true; if(available && (frameOnlyObj?.frame_only_display_at == 'product_detail' || frameOnlyObj?.frame_only_display_at == 'all')){ this.renderBtn({ ...frameOnlyObj, process_type: data.process_type }); }else{ this.renderBtn({ process_type: data.process_type }); } } } }); }catch(e){ this.renderBtn(false); this.showProductBtn(); } } renderBtn = (isRenderProcessBtn) => { return this.templates_ .findAndRenderTemplate(this.element, isRenderProcessBtn) .then((el) => { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); this.element.appendChild(el); }); } handleClickFrameOnlyBtn_ = async () => { try { const reqBody = { product_id: "ec4fdd9c-d880-430a-9a75-1048724d5c30", variant_id: JSON.parse(this.selected_variant)?.id, quantity: 1, properties: { lens_processing_id: this.lens_process_id, prescription_type: "Frame Only" } } const data = await this.xhr_.fetchJson('/api/fireant/v2/customize_cart', { method: "post", body: reqBody }); if(data.state === 'success') { this.atc_loading_ = false; this.element.removeAttribute('atc-loading'); this.triggerEvent_("dj.addToCart", data); window.location.href = "/cart"; } else { this.atc_loading_ = false; this.element.removeAttribute('atc-loading'); } } catch (e) { this.atc_loading_ = false; this.element.removeAttribute('atc-loading'); const toast = SPZCore.Dom.scopedQuerySelector(document, `#error-toast`); toast && SPZ.whenApiDefined(toast).then((api) => { e.then((result)=>{ api.showToast(result?.errors[0] || 'Unknown error'); }) }); } } trackAddToCart = () => { const params = { business_type: "product_plugin", function_name: "prescription_lens", plugin_name: "prescription_lens", module: "apps", tab_name: "process_btn", event_type: "click", event_developer: "jozy", event_info: JSON.stringify({ action_type: "frame_only_add_to_cart", product_id: '"ec4fdd9c-d880-430a-9a75-1048724d5c30"', process_id: this.lens_process_id, process_type: "glasses", element_type: "button", element_name: "frame_only_btn" }) } window.spzutm && window.spzutm.registerParams('add_to_cart', params ); } setupAction_ = () => { this.registerAction('handleClickBtn', (invocation) => { this.saveAllFormProperties_(); const glassesInfo = { product:{ title: "Midnight Mirage", id: "ec4fdd9c-d880-430a-9a75-1048724d5c30", image: {"src":"\/\/img.staticdj.com\/3e776d5bbef524f763433e72fe0d6b0f.jpg","path":"3e776d5bbef524f763433e72fe0d6b0f.jpg","width":5000,"height":5000,"alt":"Midnight Mirage Zealous","aspect_ratio":1}, selected_variant: JSON.parse(this.selected_variant) }, atcType: 'add_lens' }; const tempElement = document.getElementById('process-request-script'); tempElement && SPZ.whenApiDefined(tempElement).then(async (api) => { await api.requestLensProcess(glassesInfo, invocation.args.process_type); }); setTimeout(() => { const proceeBtn = document.getElementById('lens_add_to_cart'); proceeBtn && proceeBtn.classList.remove('pointer-events-none'); }, 3000); }); this.registerAction('handleClickFrameOnlyBtn', (invocation) => { this.trackAddToCart(); this.atc_loading_ = true; this.element.setAttribute('atc-loading',""); this.handleClickFrameOnlyBtn_(); }); } saveAllFormProperties_(){ const formEntries = this.getFormData_(); const properties = this.getFormAllProperties_(formEntries); // 获取的form所有properties存全局 window.app_lamb_form_properties = properties; } getFormData_() { const form = this.element.closest("form"); const formData = new FormData(form); const formEntries = Object.fromEntries(formData.entries()); return formEntries; } getFormAllProperties_(obj){ const result = {}; Object.entries(obj).forEach(([key, value]) => { if (key.startsWith("properties")) { result[key.substring(11, key.length - 1)] = value; } }); return result; } triggerEvent_(name, params) { const event = SPZUtils.Event.create( this.win, name, params, {bubbles: true} ); this.element.dispatchEvent(event); } isLayoutSupported = (layout) => { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomLambAddBtn) })()
Description

Zealous Midnight Mirage Sunglasses – Chic Cat-Eye Frame with Gradient Lenses


Product Description:

Embrace elegance and mystery with the Zealous Midnight Mirage Sunglasses. Designed for those who want to make a statement, these chic cat-eye frames combine contemporary aesthetics with superior functionality. Crafted from premium acetate and metal with gradient nylon lenses, the Midnight Mirage sunglasses are perfect for enhancing any outfit with a modern edge.

The gradient lenses not only add a stylish touch but also provide UV400 protection, shielding your eyes from harmful UV rays. The lightweight frame and built-in nose pads ensure all-day comfort, making these sunglasses a must-have accessory for any fashion-forward individual.


Key Features:

Sophisticated Cat-Eye Frame:
A bold, trendy frame that adds an air of sophistication to any look.

🛡️ UV400 Protection:
Offers complete protection from harmful UVA and UVB rays for your peace of mind outdoors.

🎨 Gradient Lenses:
Stylish and functional, these lenses reduce glare and enhance comfort in different lighting conditions.

🔧 Premium Acetate & Metal Frame:
Combining strength and style, the frame is crafted from high-quality acetate with sleek metal temples.

👓 Built-In Nose Pads:
Comfortable and secure fit for prolonged wear, without any slipping.


Why Choose Zealous Midnight Mirage Sunglasses?

✔️ Chic Design: A modern take on the timeless cat-eye shape, perfect for elevating your style.
✔️ Gradient Lenses: Enhances your visual experience while protecting your eyes.
✔️ Comfortable Fit: Lightweight and durable frame with built-in nose pads for a secure fit.
✔️ Perfect Gift Option: Comes in luxurious packaging, making it an ideal gift for any occasion.


What’s Included in the Package:

🎁 Luxurious Packaging:

  • Magnetic hard case for secure storage.
  • Microfiber cleaning cloth to keep your lenses spotless.
  • Stylish outer cardboard box for gifting.

About Zealous:

At Zealous, we are dedicated to offering affordable luxury to eyewear enthusiasts. Our goal is to redefine fashion with high-quality, stylish designs that are both functional and accessible.

Elevate your look and express your style confidently with the Zealous Midnight Mirage Sunglasses. Perfect for any occasion and outfit, because luxury is for everyone.

Details
window.__bright__ = { getMetaData_: () => { const metaData = [ {"value": "Regular", "title": "Size", "owner_resource": "product", "key": "size"}, {"value": "28", "title": "Weight", "owner_resource": "product", "key": "weight"}, {"value": "", "title": "Rim", "owner_resource": "product", "key": "rim"}, {"value": "", "title": "RXable", "owner_resource": "product", "key": "rxable"}, {"value": "Shiny Green & Marron Mix, Black", "title": "Frame Color", "owner_resource": "product", "key": "frame_color"}, {"value": "Gun Metal", "title": "Temple Color", "owner_resource": "product", "key": "temple_color"}, {"value": "Acetate", "title": "Frame Material", "owner_resource": "product", "key": "material"}, {"value": "Metal", "title": "Temple Material", "owner_resource": "product", "key": "temple_material"}, {"value": "Pink, Black", "title": "Lens Color", "owner_resource": "product", "key": "color"}, {"value": "Cat eyed", "title": "Shape", "owner_resource": "product", "key": "shape"}, {"value": "Nylon", "title": "Lens Type", "owner_resource": "product", "key": "_LensType"}, {"value": "Built in", "title": "Nose Pad", "owner_resource": "product", "key": "nose_pad"}, {"value": "Anti scratch", "title": "Coating", "owner_resource": "product", "key": "Coating"}, {"value": "No", "title": "Polarized", "owner_resource": "product", "key": "Polarized"}, ]; return metaData; }, getBlockData_: () => { const blockSettingData = { "frameWidth": { "value": "145", }, "lensWidth": { "value": "55", }, "bridgeWidth": { "value": "18", }, "lensHeight": { "value": "", }, "templeLength": { "value": "", } }; return blockSettingData; } }; (function(){ const TAG = 'spz-custom-structured-logic'; class SpzCustomStructuredLogic extends SPZ.BaseElement { constructor(element) { super(element); this.xhr_ = SPZServices.xhrFor(this.win); } buildCallback = () => { this.setupAction_(); this.unit = 'mm'; this.variantChange_(); this.selectedData = this.getProductData_(); this.init_(); } static deferredMount() { return false; } isLayoutSupported = (layout) => { return layout == SPZCore.Layout.CONTAINER; } setupAction_ = () => { this.registerAction('changeUnit', (invocation) => { const changeUnit = invocation.args.data; this.unit = changeUnit; this.init_(); }); } init_ = () => { this.meteData_ = window.__bright__.getMetaData_(); this.blockData_ = window.__bright__.getBlockData_(); this.renderParameter_(); this.renderStructuredImg_(); this.renderTempleLength_(); this.renderBtn_(); } getProductData_ = () => { let pJson = document.getElementById('product-json'); if (pJson) { return JSON.parse(pJson.innerHTML); } if (typeof $ === 'function') { return $(document).data('djproduct'); } return undefined; } renderParameter_ = () => { const structuredParameterContainerRender = document.getElementById('structured-parameter-container-render'); SPZ.whenApiDefined(structuredParameterContainerRender).then(async (api) => { const parameter = []; this.meteData_.forEach(meta => { if (meta.owner_resource === 'product') { parameter.push({ title: meta.title, value: meta.value }); } else { parameter.push({ title: meta.title, value: meta.value[this.selectedData.selected.id] }); } }); api.render(parameter); }); } renderStructuredImg_ = () => { const glassesImgRender = document.getElementById('glasses-img-render'); SPZ.whenApiDefined(glassesImgRender).then(async (api) => { const parameter = {}; parameter.unit = this.unit; Object.keys(this.blockData_).forEach(key => { if (typeof this.blockData_[key].value === 'string') { parameter[key] = this.blockData_[key].value; } else { parameter[key] = this.blockData_[key].value[this.selectedData.selected.id]; } }); api.render(parameter); }); } renderTempleLength_ = () => { const lensImgRender = document.getElementById('lens-img-render'); SPZ.whenApiDefined(lensImgRender).then(async (api) => { let parameter = {}; parameter.unit = this.unit; if (this.blockData_.templeLength.value) { if (typeof this.blockData_.templeLength.value === 'string') { parameter.value = this.blockData_.templeLength.value; } else { parameter.value = this.blockData_.templeLength.value[this.selectedData.selected.id]; } } api.render(parameter); }); } renderBtn_ = () => { const conversionBtnRender = document.getElementById('conversion-btn-render'); conversionBtnRender && SPZ.whenApiDefined(conversionBtnRender).then(async (api) => { const parameter = {}; Object.keys(this.blockData_).forEach(key => { if (typeof this.blockData_[key].value === 'string') { parameter[key] = this.blockData_[key].value; } else { parameter[key] = this.blockData_[key].value[this.selectedData.selected.id]; } }); parameter.unit = this.unit; api.render(parameter); }) } variantChange_ = () => { document.addEventListener('dj.variantChange', (e) => { this.init_(); this.selectedData = e.detail; }); document.addEventListener('dj.editor.update', (e) => { this.init_(); }); } } SPZ.defineElement(TAG, SpzCustomStructuredLogic) })();