Cash on Delivery to Japan,Taiwan HongKong and Singapore ,Free shipping over USD$59
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
26 / 35
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
Crystal Stone Holder Necklace
You May Also Like Don't Like These?
mysite

Crystal Stone Holder Necklace

$11.99 $19.99
0 sold
Color of Chain
Color of Stone
Qty 1000 in stock

Carry Your Crystals With You Everywhere✨

FEATURES:

  • 🧙‍♀️Healing Crystal Necklace: This sleek mesh holder keeps your precious gems secure and accessible, allowing you to embrace their energy wherever you wander. Change your crystals every day depending on your mood.
  • 🧙‍♂️Place Your Own Stone: Have lots of stones? This Empty Stone Holder is Interchangeable so you can push the knot above the stone and place different ones similar to their size.
  • 🧙‍♀️Exquisite Craftsmanship: Sturdy stainless cage, tightly fixed, not easy to break and fall off, and can be worn for a long time to promote beauty, health and good luck.
  • 🧙‍♂️Perfect Gift: Our crystals and healing stones necklace is an ideal gift choice during Christmas Day, Anniversary Day, Valentine's Day, Mother's Day, Father's Day and Birthday to your loved one.

SPECIFICATIONS:

  • Material: Metal, Crystal
  • Color of Chain: Silver/Gold
  • Color of Stone: Yellow/Pink/Green/Red/Purple/White/Blue
  • Length:

PACKAGE:

  • 1* Crystal Stone Holder Necklace
You May Also Like Don't Like These?
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);