Éclat Royale

$51.00
$88.00
Save 42%
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 = "c2cf3bd9-3dd2-465d-8ac4-46eeb7b03548"; // 促销活动数据 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 == 'bd1b61c0-56a3-44b4-8bd0-88cfe99c5791' && variant.id != this.variantId) { this.variantId = variant.id; this.getData(); } } getData() { const reqBody = { product_id: "bd1b61c0-56a3-44b4-8bd0-88cfe99c5791", 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 MultiBrown
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":"c2cf3bd9-3dd2-465d-8ac4-46eeb7b03548","product_id":"bd1b61c0-56a3-44b4-8bd0-88cfe99c5791","title":"Shiny MultiBrown","weight_unit":"g","inventory_quantity":6,"sku":"ZSA2002-V1","barcode":"","position":1,"option1":"Shiny MultiBrown","option2":"","option3":"","note":"","image":{"src":"\/\/img.staticdj.com\/5e3fbd5aef42fdaa8ee485de4e872196.jpg","path":"5e3fbd5aef42fdaa8ee485de4e872196.jpg","width":5000,"height":5000,"alt":"\u00c9clat Royale Zealous","aspect_ratio":1},"wholesale_price":[{"price":51,"min_quantity":1}],"weight":"35","compare_at_price":"88","price":"51","retail_price":"88","available":true,"url":"\/products\/eclat-royale?variant=c2cf3bd9-3dd2-465d-8ac4-46eeb7b03548","available_quantity":999999999,"options":[{"name":"Frame Color","value":"Shiny MultiBrown"}],"off_ratio":42,"flashsale_info":[],"sales":0}'; 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 == 'bd1b61c0-56a3-44b4-8bd0-88cfe99c5791') { 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/bd1b61c0-56a3-44b4-8bd0-88cfe99c5791/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: "bd1b61c0-56a3-44b4-8bd0-88cfe99c5791", 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: '"bd1b61c0-56a3-44b4-8bd0-88cfe99c5791"', 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: "\u00c9clat Royale", id: "bd1b61c0-56a3-44b4-8bd0-88cfe99c5791", image: {"src":"\/\/img.staticdj.com\/5e3fbd5aef42fdaa8ee485de4e872196.jpg","path":"5e3fbd5aef42fdaa8ee485de4e872196.jpg","width":5000,"height":5000,"alt":"\u00c9clat Royale 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 Éclat Royale Sunglasses – Premium Cat-Eye Acetate Frame

Product Description
Step into elegance with Zealous Éclat Royale Sunglasses, the epitome of sophistication, durability, and modern chic. Designed exclusively for women, these trendy cat-eye sunglasses are tailored to provide exceptional eye protection and unparalleled style.

Crafted with high-quality acetate frames and lightweight nylon lenses, Éclat Royale offers maximum UV400 protection to safeguard your eyes from harmful UVA and UVB rays. With an anti-scratch coating and built-in nose pads, these sunglasses ensure lasting comfort and a polished appearance, whether you're heading to brunch, strolling along the beach, or attending a glamorous event.


Key Features in Detail

  1. UV400 Protection
    Éclat Royale sunglasses are designed to block 100% of harmful UVA and UVB rays, reducing glare and enhancing your visual comfort. Keep your eyes protected during sunny outings without compromising on style.
  2. Premium Acetate Frame
    The luxurious acetate frame provides a high-end, polished finish while ensuring lightweight durability. It resists wear and tear, offering a sophisticated look that lasts.
  3. Nylon Gradient Lenses
    Featuring advanced nylon lenses with a gradient finish, Éclat Royale enhances clarity and color perception. The smooth transition in lens shading offers style while reducing eye strain and glare.
  4. Anti-Scratch Coating
    The lenses are treated with an anti-scratch coating to maintain their flawless appearance. This ensures long-term durability and clear vision, even with daily wear.
  5. Built-In Nose Pads
    Ergonomically designed, the integrated nose pads provide a secure, slip-free fit for all-day comfort. Perfect for women on the go, these sunglasses stay in place no matter where the day takes you.
  6. Elegant Cat-Eye Design
    The timeless cat-eye frame exudes femininity and sophistication, making it a versatile accessory for every occasion. From casual outings to glamorous events, Éclat Royale complements your style effortlessly.
  7. Lightweight Design
    Weighing only 34-35 grams, these sunglasses are ultra-light, ensuring comfort during extended wear. They’re perfect for women who value both fashion and functionality.
  8. Luxurious Color Options
    Choose from two stunning combinations:
    • Shiny Multi-Brown frame with Gradient Brown lenses for a classic, earthy elegance.
    • Multi-Red frame with Gradient Bottle Red lenses for a bold, statement-making look.

Perfect Gift Idea
Each pair of Zealous Éclat Royale sunglasses comes in opulent packaging, making it an ideal gift for someone special. The package includes:

  • A premium magnetic sunglasses case for secure storage.
  • A microfiber cleaning cloth to keep your lenses spotless.
  • A sleek outer cardboard box for an unforgettable unboxing experience.

Why Choose Zealous Éclat Royale?

  • Elegant Craftsmanship: Perfect for women who appreciate high-quality design and materials.
  • Comfort Meets Style: Lightweight and ergonomic for all-day wear.
  • Versatile Design: Suited for casual, professional, and formal occasions.
  • Affordable Luxury: Premium eyewear at an accessible price point.

About Zealous
Zealous is committed to redefining affordable luxury. Combining timeless designs with exceptional quality, we create eyewear that empowers you to look and feel your best.

Add Zealous Éclat Royale to your collection today and experience eyewear that enhances your vision and elevates your style!

Details
window.__bright__ = { getMetaData_: () => { const metaData = [ {"value": "Regular", "title": "Size", "owner_resource": "product", "key": "size"}, {"value": "35 G", "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 MultiBrown, MultiRed ", "title": "Frame Color", "owner_resource": "product", "key": "frame_color"}, {"value": "Light Brown, Grey", "title": "Temple Color", "owner_resource": "product", "key": "temple_color"}, {"value": "Acetate", "title": "Frame Material", "owner_resource": "product", "key": "material"}, {"value": "Acetate", "title": "Temple Material", "owner_resource": "product", "key": "temple_material"}, {"value": "Brown, Bottle Red", "title": "Lens Color", "owner_resource": "product", "key": "color"}, {"value": "", "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": "54", }, "bridgeWidth": { "value": "20", }, "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) })();