Return to Tiffany™: Full Heart Pendant

const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '4b9f22c2-33f9-4729-b90c-0dc2d22ef363'; this.isRTL = SPZ.win.document.dir === 'rtl'; this.isAddingToCart_ = false; // 加购中状态 } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = '1ffca088-3674-4307-a62b-af8ecab071f3'; // 抽屉购物车全局注入、不按 templates 区分,主题侧暂不支持限制安装位置,非商详页 // 也会渲染本组件。此时 product_id 为空,接口按 UUID 强校验必然报错,先跳过做兼容。 if (!productId) return; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '1ffca088-3674-4307-a62b-af8ecab071f3' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); // 加购事件 this.registerAction('handleAddToCart', (invocation) => { // 阻止事件冒泡 const event = invocation.event; if (event) { event.stopPropagation(); event.preventDefault(); } // 如果正在加购中,直接返回 if (this.isAddingToCart_) { return; } const quantity = invocation.args.quantity || 1; this.addToCart(quantity); }); } // 加购方法 async addToCart(quantity) { // 设置加购中状态 this.isAddingToCart_ = true; const productId = '1ffca088-3674-4307-a62b-af8ecab071f3'; const variantId = this.variant_id; const url = '/api/cart'; const reqBody = { product_id: productId, variant_id: variantId, quantity: quantity }; try { const data = await this.xhr_.fetchJson(url, { method: 'POST', body: reqBody }); // 触发加购成功提示 this.triggerAddToCartToast_(); return data; } catch (error) { error.then(err=>{ this.showToast_(err?.message || err?.errors?.[0] || 'Unknown error'); }) } finally { // 无论成功失败,都重置加购状态 this.isAddingToCart_ = false; } } showToast_(message) { const toastEl = document.querySelector("#apps-match-drawer-add_to_cart_toast"); if (toastEl) { SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast(message); }); } } // 触发加购成功提示 triggerAddToCartToast_() { // 如果主题有自己的加购提示,则不显示 const themeAddToCartToastEl = document.querySelector('#add-cart-event-proxy'); if (themeAddToCartToastEl) return; // 显示应用的加购成功提示 this.showToast_("Added successfully"); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
class SpzCustomDiscountBundle extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } mountCallback() { // 同一页可能有多个 block 各自渲染本 snippet,导致逻辑元素 spz-custom-discount-toast(#appsAddCartToastFunc) 重复。 // 仅保留 DOM 中第一个实例,其余重复实例移除自身,保证逻辑元素及其 action 引用(appsAddCartToastFunc)唯一。 const funcs = document.querySelectorAll('#appsAddCartToastFunc'); if (funcs.length > 1 && this.element !== funcs[0]) { this.element.remove(); return; } // 全局折扣 toast 的弹出点分散在多个模板/组件里(含声明式 @atcError),无法逐一在弹出前前置, // 故挂载时幂等地去重并挂到 body;加购 toast 改为弹出前按需去重(见 showAddToCartToast) this.ensureSingleToastInBody_('cart_match_discount_toast_wrap'); } unmountCallback() {} // 同一页面可能有多个 block 各自渲染本 toast snippet(如商详的 discount_automatic + 购物车抽屉里的折扣横幅), // 导致 toast 外层出现重复 id。重复 id 下 getElementById/querySelector 及 SPZ 动作引用都只命中第一个, // 且被关进抽屉的那份会被抽屉的 transform/overflow 裁剪/错位。这里在挂载时幂等去重: // 只保留一份、移除多余的,并把保留的挂到 body(body 是 position:fixed 最安全的落点,避免被任何祖先裁剪)。可反复调用。 ensureSingleToastInBody_(id) { const els = Array.from(document.querySelectorAll('#' + id)); if (!els.length) return; els.slice(1).forEach((el) => el.remove()); const keep = els[0]; if (keep.parentNode !== document.body) { document.body.appendChild(keep); } } // 主题购物车抽屉是否打开 isInCartDrawer_() { return !!document.querySelector('[data-section-type="cart_drawer"] spz-sidebar[open]'); } setupAction_() { this.registerAction('showAddToCartToast', () => { // 抽屉内加购:主题本就不会有加购效果,统一弹插件自己的 toast // 非抽屉:主题有加购代理则沿用主题加购效果,否则插件兜底 const proxyEl = document.getElementById('add-cart-event-proxy'); const inDrawer = this.isInCartDrawer_(); if (!inDrawer && proxyEl) { return; } // 弹出前按需去重并挂到 body(幂等),避免重复 id 命中错对象或被抽屉裁剪/错位 this.ensureSingleToastInBody_('apps_add_cart_toast_wrap'); const toastEl = document.querySelector('#apps-match-drawer-add_to_cart_toast') SPZ.whenApiDefined(toastEl).then((apis) => { apis.showToast("Added successfully"); }); }); } buildCallback() { this.setupAction_(); }; } SPZ.defineElement('spz-custom-discount-toast', SpzCustomDiscountBundle);
¥8,951
Color:  Rose gold
Warning:  We do not allow the package to be opened and inspected prior to payment.
Materials:  Gold-plated – sophisticated and elegant
Quantity
Contact Us

Contact Us - Kamila Jewelry

At Kamila Jewelry, we are committed to providing the best possible service to our valued customers. If you have any inquiries or require assistance, please do not hesitate to reach out to us through the following channels:

Customer Service:

We are here to help you at any time. Whether you have a question about our products or need support regarding an exchange or return, our team is always ready to provide the assistance you need.

Shipping
🛒Many are viewing it right now🔥

Description

استوحى حرفيو تيفاني تعبيرًا رائعًا عن الحب من الأشخاص الذين يملؤون قلبك وحولوا العلامة الكلاسيكية "ريتيرن تو تيفاني™" إلى قلب ثلاثي الأبعاد باستخدام تقنية صب خاصة. تتميز قطع الذهب الأصفر عيار 18 قيراطًا في هذه المجموعة بطبقات من الروديوم الأسود التي يتم تطبيقها يدويًا للحصول على لمسة جذابة. وبنسب مرحة، كما يتم صقل كل قلب يدويًا للحصول على لمعان استثنائي.

We’ll ship it to you in Tiffany packaging.

At Kamila Jewelry, we offer you the legendary jewelry of (Tiffany & Co.)—a symbol of romance and sophisticated American elegance since 1837.
Tiffany is renowned for its timeless designs, which blend refined simplicity with luxurious brilliance, crafted from the finest sterling silver, gold, and pure diamonds. Each piece of Tiffany jewelry represents a promise of eternal beauty and an unforgettable moment.
Whether you are looking for an iconic engagement ring, an elegant necklace, or a bracelet bearing the famous Tiffany signature, you will find pieces in our collections that perfectly reflect your exquisite taste.
Every item comes in its original, iconic blue packaging, ensuring that every occasion becomes a magical and unforgettable moment.

Affordable luxury

At Kamila Jewelry, we offer an unparalleled luxury experience with pieces meticulously crafted to replicate the finest details of original designs from the world’s most prestigious brands.
Each piece is layered with pure 24-karat gold using state-of-the-art professional plating techniques, ensuring a luxurious appearance and a long-lasting shine that remains pristine over time, even with frequent wear.

Our jewelry is perfect for any occasion—whether for daily wear, special events, or as an exquisite gift—offering you a radiant look that is virtually indistinguishable from the original pieces.

Why choose Kamila Jewelry?

  • Expertly crafted replicas that mirror the original designs down to the smallest detail.
  • Layers of pure 24-karat gold, ensuring a consistent, brilliant luster and a luxurious finish.
  • Competitive pricing combined with high quality, allowing you to enjoy the luxury of the original pieces at an accessible price point.
  • Complete, premium packaging, including the original-style box, brand bag, and certificate.
  • Professional customer service, a commitment to total satisfaction, and a seamless shopping experience.
  • An outstanding reputation across the Gulf region, backed by a large base of satisfied customers.

With Kamila Jewelry, you aren’t just acquiring a beautiful piece; you are gaining a masterpiece that blends elegance, superior quality, and affordability—a unique experience tailored just for you.

Exchange and Return Policy

At Kamila Jewelry, we ensure a convenient and secure shopping experience. If, for any reason, you are not satisfied with your purchase, we offer a flexible exchange and return policy to guarantee your complete comfort and satisfaction.

Terms and Conditions:

1. Timeframe for Returns or Exchanges:
- You may request a return or exchange within **14 days** of the date you received your order.

2. Products Eligible for Return or Exchange:
- Items must be in their original, unused, and undamaged condition, and must include all original accessories (such as boxes and certificates).
- Products that have been customized or modified specifically for you are not eligible for return or exchange.

3. Returns and Exchanges Process:
- If you wish to return or exchange an item, please contact our customer service team via email at service.kamila-Jewelry@hotmail.com or via WhatsApp at +44 7576 164378.
- Customers must return the item to Kamila Jewelry within the specified timeframe. In the event that the product does not meet the stated specifications, we will cover the shipping costs. 4. Returns in Case of Defects:
- If products have manufacturing defects or are damaged during transit, we will provide a full refund or replace the item as quickly as possible.

5. Returns for Other Reasons:
- If you decide to return a product for any other reason, the full cost will be refunded to your account once we have received the item, in accordance with our established policies.

6. Returns Due to Sizing Issues:
- If a product does not fit properly, you may exchange it for a more suitable size. Please note that the customer is responsible for the shipping costs associated with returning the item and receiving the replacement size.

### Our Store Address:

Kamila Jewelry
Location: Salem Al-Mubarak Street, Al-Khaleej Commercial Tower, Kuwait

We are committed to ensuring a smooth and reliable shopping experience. If you have any questions regarding our exchange or return policy, please do not hesitate to contact us.