🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
1 / 8
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
🎁 MOTHER'S DAY HOT SALE  Gift-Birds Stained Glass Window Hangings
23% OFF

🎁 MOTHER'S DAY HOT SALE Gift-Birds Stained Glass Window Hangings

$19.99 $25.99
1 sold
color
Qty
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);

✈Delivery time>>worldwide 5-10 days
⏰Handling time>> 
Ship within 8-24 hours after payment.
😊Returns>> 
Fast refund for any dissatisfaction within 30 days, 100% money-back guarantee.
🚢Free Shipping>> On Orders Over $59.99

This stained glass bird suncatcher is so vibrant and eye-catching😍Hummingbird, cardinal, bluebird and Baltimore oriole are very attractive and cute birds. 
Birds stained glass window hangings Mothers Day gift Stained 4 birds
Having a lot of significant symbolistic meaning, this suncatcher will magically change your home to the happiest place of living full of joy and happiness ❤️ I'm sure that everyone will be thrilled by such a gift 🎁

NOTE: each suncatcher is unique and made by hands, that's why a small deviation from the photos in the listing is possible ☝️
This window hanging is made using the L.C. Tiffany method of copper foil. During the process of manufacturing goods, we use only high-quality materials, such as:
• 3 mm Spectrum Glass (USA)
• 3 mm Wissmach Glass (USA)
• Copper Foil
• Tin
• Paint
• Black Patina
So you are ensured to receive a high-quality product, that will please you and be in perfect condition for years to come🤗
Care instruction: wipe with a wet cloth.
Width:
  • 4 birds: 7.87 inches
  • 7 birds: 9.25 inches
🎁It's a perfect gift for your friends&familly!

HOW TO PAY

If you want to checkout with Credit Card. Please Click Paypal and Search for ‘Pay with Debit or Credit Card’
Enter your Payment details, your Billing Address, and your Contact Information.
SHIPPING & DELIVERY
        Due to high demand please allow 5-15 days for your order to be delivered to your address (This applies to all United States and United Kingdom orders).
       All other countries worldwide typically take 5-20 days. We apologize for any inconvenience this may cause you; however, we are 100% certain that you will enjoy your shopping upon delivery!
        Thank you for being one of our valued customers.

CLICK ADD TO CART TO ENJOY THE COMFY!

🌎 Worldwide Shipping ✈

Please do note that shipping is insured and takes within 7-14 business days worldwide. However, you may receive your items earlier. Tracking Numbers will ALWAYS be sent so you can track it every step of the way! Cool things are worth waiting for! 😉

🔒 100% Risk-Free Purchase 🔥 

If you bought it and felt that it is not for you, don't worry. Just shoot us a message at contact customer service, and we will make it right by offering you a replacement or refund. 100% Simple & Risk-Free process.

📦 Insured Worldwide Shipping: Each order includes real-time tracking details and insurance coverage in the unlikely event that a package gets lost or stolen in transit.

🔒 Safe & Secure Checkouts: We use state-of-the-art SSL Secure encryption to keep your personal and financial information 100% protected.

If you bought it and felt that it is not for you, don't worry. We will make it right by offering you a replacement or refund. 100% Simple & Risk-Free process.

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);