πŸ›’ Warenkorb

πŸ›’
Dein Warenkorb ist leer
Alle Produkte

Der 3D2RV Shop

Hochwertige 3D-gedruckte Teile fΓΌr dein Wohnmobil, Caravan oder Campervan

{id:2,name:'GewΓΌrzregal Caravan',category:'KΓΌche & Kochen',price:14.90,icon:'πŸ§‚',bg:'linear-gradient(135deg,#0e1a10,#162010)',badge:'',visible:true,desc:'Platzsparend, sicher auch in Kurven.'}, {id:3,name:'Campingkocher Halterung',category:'Befestigung',price:9.90,icon:'πŸ”§',bg:'linear-gradient(135deg,#1a0e0a,#201408)',badge:'new',visible:true,desc:'Sicher & rutschfest, alle Herdtypen.'}, {id:4,name:'LED-Streifen Halterung',category:'Beleuchtung',price:7.90,icon:'πŸ’‘',bg:'linear-gradient(135deg,#0a1020,#101828)',badge:'',visible:true,desc:'Saubere Montage innen & außen.'}, {id:5,name:'Schubladenstopper Set',category:'Stauraum',price:12.90,icon:'πŸ—‚οΈ',bg:'linear-gradient(135deg,#1a1220,#200e18)',badge:'',visible:true,desc:'Verhindert Γ–ffnen wΓ€hrend der Fahrt.'}, {id:6,name:'Tablet-Halterung',category:'Navigation & Tech',price:18.90,icon:'πŸ“±',bg:'linear-gradient(135deg,#0a1818,#101e20)',badge:'new',visible:true,desc:'Passgenau fΓΌr gΓ€ngige Tablet-Grâßen.'}, {id:7,name:'Wasserkanister-Halter',category:'Wasser & Outdoor',price:11.90,icon:'πŸ«™',bg:'linear-gradient(135deg,#0a1218,#0e1a22)',badge:'',visible:true,desc:'FΓΌr Kanister 5–20 Liter, rutschfest.'}, {id:8,name:'Sonnenschutz-Clip Set',category:'Außen',price:8.90,icon:'β˜€οΈ',bg:'linear-gradient(135deg,#1a1408,#201e08)',badge:'new',visible:true,desc:'Set mit 6 Clips, alle Fensterrahmen.'}, {id:9,name:'Werkzeughalter Wand',category:'Werkzeug',price:16.90,icon:'πŸ”©',bg:'linear-gradient(135deg,#120a1a,#1a1020)',badge:'',visible:true,desc:'FΓΌr Schraubenzieher, Zangen u.v.m.'}, ]; function loadProducts(){try{const s=localStorage.getItem('3d2rv_products');return s?JSON.parse(s):JSON.parse(JSON.stringify(DEFAULT_PRODUCTS));}catch(e){return JSON.parse(JSON.stringify(DEFAULT_PRODUCTS));}} const PRODUCTS=loadProducts(); let cart=[];try{cart=JSON.parse(localStorage.getItem('3d2rv_cart')||'[]');}catch(e){} function saveCart(){localStorage.setItem('3d2rv_cart',JSON.stringify(cart));} function addToCart(id){ const p=PRODUCTS.find(x=>x.id===id);if(!p||!p.visible)return; const ex=cart.find(x=>x.id===id);if(ex)ex.qty++;else cart.push({id:p.id,name:p.name,price:p.price,icon:p.icon,qty:1}); saveCart();renderCart();openCart();showAddFeedback(id); } function removeFromCart(id){cart=cart.filter(x=>x.id!==id);saveCart();renderCart();} function changeQty(id,d){const item=cart.find(x=>x.id===id);if(!item)return;item.qty+=d;if(item.qty<=0)removeFromCart(id);else{saveCart();renderCart();}} function renderCart(){ const el=document.getElementById('cartItems'),countEl=document.getElementById('cartCount'),totalEl=document.getElementById('cartTotal'); if(!el)return; const totalQty=cart.reduce((s,x)=>s+x.qty,0),totalPrice=cart.reduce((s,x)=>s+(x.price*x.qty),0); if(countEl){countEl.textContent=totalQty;countEl.classList.toggle('visible',totalQty>0);} if(totalEl)totalEl.textContent=totalPrice.toFixed(2).replace('.',',')+' €'; ['btnPaypal','btnBank'].forEach(id=>{const b=document.getElementById(id);if(b)b.disabled=cart.length===0;}); if(cart.length===0){el.innerHTML='
πŸ›’
Dein Warenkorb ist leer
';return;} el.innerHTML=cart.map(item=>`
${item.icon}
${item.name}
${(item.price*item.qty).toFixed(2).replace('.',',')} €
${item.qty}
`).join(''); } function openCart(){document.getElementById('cartSidebar').classList.add('open');document.getElementById('cartOverlay').classList.add('open');document.body.style.overflow='hidden';} function closeCart(){document.getElementById('cartSidebar').classList.remove('open');document.getElementById('cartOverlay').classList.remove('open');document.body.style.overflow='';} function goPayPal(){const total=cart.reduce((s,x)=>s+(x.price*x.qty),0);window.open(PAYPAL_ME+'/'+total.toFixed(2)+'EUR','_blank');} function goBank(){ const total=cart.reduce((s,x)=>s+(x.price*x.qty),0); const ref='3D2RV-'+Date.now().toString(36).toUpperCase().slice(-6); document.getElementById('bankRef').textContent=ref; document.getElementById('bankAmount').textContent=total.toFixed(2).replace('.',',')+' €'; document.getElementById('paymentView').style.display='none'; document.getElementById('bankInfo').style.display='block'; } function showAddFeedback(id){const btn=document.querySelector(`[data-product-id="${id}"] .add-btn`);if(!btn)return;btn.textContent='βœ“';btn.style.background='#22c55e';setTimeout(()=>{btn.textContent='+';btn.style.background='';},1000);} document.addEventListener('DOMContentLoaded',()=>{renderCart();document.getElementById('cartOverlay')?.addEventListener('click',closeCart);});