Alle Produkte Bestseller Neu eingetroffen Water-Friendly Sandals Slip-On Shoes Leather Sandals Schuhe plus minus Turnschuhe Slip-On-Schuhe Wasserfreundlich Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Slide Sandalen Alle Sandalen Hausschuhe plus minus Innen/Außen Lederpantoffeln Alle Hausschuhe Boots plus minus All Boots Schuhe plus minus Turnschuhe Slip-On-Schuhe Wasserschuhe Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Slide Sandalen Alle Sandalen Hausschuhe plus minus Hausschuhe für drinnen und draußen Lederpantoffeln Alle Hausschuhe Boots plus minus All Boots Bestseller Neu eingetroffen Alle Herrenmode shoppen Die Sandalensaison ist da Jetzt einkaufen Einkaufen nach Aktivität Wasser Reisen Büro Täglich Ruhe & Entspannung
Schuhe plus minus Turnschuhe Slip-On-Schuhe Wasserfreundlich Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Slide Sandalen Alle Sandalen Hausschuhe plus minus Innen/Außen Lederpantoffeln Alle Hausschuhe Boots plus minus All Boots
Schuhe plus minus Turnschuhe Slip-On-Schuhe Wasserschuhe Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Slide Sandalen Alle Sandalen Hausschuhe plus minus Hausschuhe für drinnen und draußen Lederpantoffeln Alle Hausschuhe Boots plus minus All Boots Bestseller Neu eingetroffen
Alle Produkte Bestseller Neu eingetroffen Water-Friendly Sandals Leather Sandals Leather Sneakers Schuhe plus minus Turnschuhe Slip-On-Schuhe Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Riemchensandalen Alle Sandalen Hausschuhe plus minus Innen/Außen Alle Hausschuhe Boots plus minus All Boots Schuhe plus minus Turnschuhe Slip-On-Schuhe Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Riemchensandalen Alle Sandalen Hausschuhe plus minus Innen/Außen Alle Hausschuhe Boots plus minus All Boots Bestseller Neu eingetroffen Alle Damenartikel shoppen Die Sandalensaison ist da Jetzt einkaufen Einkaufen nach Aktivität Wasser Reisen Büro Täglich Ruhe & Entspannung
Schuhe plus minus Turnschuhe Slip-On-Schuhe Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Riemchensandalen Alle Sandalen Hausschuhe plus minus Innen/Außen Alle Hausschuhe Boots plus minus All Boots
Schuhe plus minus Turnschuhe Slip-On-Schuhe Lederschuhe Golf Alle Schuhe Sandalen plus minus Wasserfreundliche Sandalen Ledersandalen Riemchensandalen Alle Sandalen Hausschuhe plus minus Innen/Außen Alle Hausschuhe Boots plus minus All Boots Bestseller Neu eingetroffen
Bestseller Neu eingetroffen Alle Herrenmode shoppen Alle Damenartikel shoppen Unternehmen plus minus Über uns Unser Engagement Produktpflege Unser Handwerk Geschichten plus minus Wir gehen. Der Weg zum Eddie. Anywhere Aloha Films Blog-Geschichten Erfahren Sie mehr
Unternehmen plus minus Über uns Unser Engagement Produktpflege Unser Handwerk Geschichten plus minus Wir gehen. Der Weg zum Eddie. Anywhere Aloha Films Blog-Geschichten
{ e.preventDefault(); (product.variants && product.variants.length === 1) ? Cart.add({ id: product.variants[0].id, product_id: product.id, properties: { _compare_at_price: (product.compare_at_price > 0) ? (product.compare_at_price/100).toFixed(2) : null, _tags: product.tags } }) : QuickAdd.open(product, null, e); }" role="button" aria-label=" quick-add" > plus Quick Add quick-add { $dispatch('product-item:images-changed', { product: product, source: 'swatch-container' }) })" @pointercancel="intendedSwatchIndex = null; intendedSwatchEl = null" x-data="{ wrapper: $el, selectedSibling:product.siblings[0], intendedSwatchIndex: null, intendedSwatchEl: null, swatchGap: 8, scrollable: product.siblings.filter(s => !!s.available).length > 5.5, canPrev: false, canNext: true, _edgeReady: false, imageLimit: 0, limitImages(nextProduct) { const images = Array.isArray(nextProduct && nextProduct.images) ? nextProduct.images : []; const limitedImages = this.imageLimit > 0 ? images.slice(0, this.imageLimit) : images; const hoverImage = limitedImages[1] || null; return Object.assign({}, nextProduct, { images: limitedImages, hover_image: hoverImage ? hoverImage.src : null, hover_image_alt: hoverImage ? hoverImage.alt : null }); }, selectProduct(nextProduct) { const productRoot = $el.closest('.product-item'); const productData = productRoot && productRoot._x_dataStack && productRoot._x_dataStack[0]; if (productData && typeof productData.setProduct === 'function') { productData.setProduct(nextProduct); } else { $data.product = this.limitImages(nextProduct); } }, getSwatchImageSrc(sibling) { return sibling.images[0].src; }, buildSwatchSrcset(src) { if (!src) return ''; const widths = ['48', '96', '192']; const separator = src.includes('?') ? '&' : '?'; return widths.map(w => `${src}${separator}width=${w} ${w}w`).join(', '); }, isSwatchPriority(index) { return window.innerWidth >= 1024 ? index < 3 : index < 2; }, swatchBg(sibling) { // swatch_bg precomputed at hydration. Nullish (not ||): null = no colors set // (fall back to theme default), empty string = invalid combo, no fallback. return sibling.swatch_bg ?? '#000000'; }, centerSwatch(el) { if ($data.wrapper.scrollWidth <= $data.wrapper.clientWidth) return false const wrapperRect = $data.wrapper.getBoundingClientRect() const elRect = el.getBoundingClientRect() const centerPoint = wrapperRect.x + (wrapperRect.width / 2) const behavior = window.innerWidth < 1024 ? 'auto' : 'smooth' $data.wrapper.scrollTo({ left: $data.wrapper.scrollLeft + (elRect.x - centerPoint + (elRect.width / 2)), behavior }) }, selectSwatchFromTap(siblingIndex, el) { const idx = (this.intendedSwatchIndex !== null && this.intendedSwatchIndex !== undefined) ? this.intendedSwatchIndex : siblingIndex const targetEl = this.intendedSwatchEl || el this.intendedSwatchIndex = null this.intendedSwatchEl = null const next = product.siblings[idx] if (next) product = next this.centerSwatch(targetEl) }, scroll(direction = 'forward') { const swatch = $data.wrapper.querySelector('.product-item__swatch') const unit = swatch ? swatch.offsetWidth + $data.swatchGap : $data.wrapper.clientWidth * 0.3 let amount = 2 * unit $data.wrapper.scrollTo({ left: direction == 'forward' ? $data.wrapper.scrollLeft + amount : $data.wrapper.scrollLeft - amount, behavior:'smooth' }) }, // Lazily wire the prev/next edge detection on first desktop hover/focus — // the arrows are a desktop affordance, so no observer is built at load and // none is ever built on mobile. canPrev/canNext default to the at-start state. initSwatchEdges() { if (this._edgeReady || window.innerWidth <= 1023) return this._edgeReady = true const root = this.wrapper const swatches = root.querySelectorAll('.product-item__swatch') if (swatches.length < 2) return const first = swatches[0], last = swatches[swatches.length - 1] const io = new IntersectionObserver((entries) => { const d = window.Alpine && window.Alpine.$data ? window.Alpine.$data(root) : null if (!d) return entries.forEach((e) => { if (e.target === first) d.canPrev = !e.isIntersecting if (e.target === last) d.canNext = !e.isIntersecting }) }, { root, threshold: 0.99 }) io.observe(first) io.observe(last) root._swatchEdgeIO = io } }" @pointerenter="initSwatchEdges()" @focusin="initSwatchEdges()" > chevron-left Previous { $dispatch('product-item:images-changed', { product: product, source: 'swatch-click' }) })" > chevron-right Next