Home Catalog About Contact FAQ Cart 0 Fallows 0 Privacy Terms

Your cart

Continue browsing View fallows FAQ
`; const footerHTML = ` `; document.getElementById('site-header').innerHTML = headerHTML; document.getElementById('site-footer').innerHTML = footerHTML; // Theme const themeBtn = document.getElementById('theme-toggle'); function updateTheme() { const isDark = document.documentElement.classList.contains('dark'); if (themeBtn) themeBtn.textContent = isDark ? 'Light' : 'Dark'; } try { const savedTheme = localStorage.getItem('sc-theme'); if (savedTheme === 'dark') document.documentElement.classList.add('dark'); else if (savedTheme === 'light') document.documentElement.classList.remove('dark'); else if (window.matchMedia('(prefers-color-scheme: dark)').matches) document.documentElement.classList.add('dark'); } catch(e){} updateTheme(); if (themeBtn) { themeBtn.addEventListener('click', () => { document.documentElement.classList.toggle('dark'); const isDark = document.documentElement.classList.contains('dark'); localStorage.setItem('sc-theme', isDark ? 'dark' : 'light'); updateTheme(); }); } // Cookie banner const banner = document.getElementById('cookie-banner'); const accept = document.getElementById('cookie-accept'); const decline = document.getElementById('cookie-decline'); if (banner && !localStorage.getItem('sc-cookie-consent')) { setTimeout(() => banner.classList.remove('hidden'), 1200); } if (accept) accept.addEventListener('click', () => { localStorage.setItem('sc-cookie-consent', 'accepted'); banner.classList.add('hidden'); }); if (decline) decline.addEventListener('click', () => { localStorage.setItem('sc-cookie-consent', 'declined'); banner.classList.add('hidden'); }); // Modals function setupModals() { document.querySelectorAll('[data-open-modal]').forEach(btn => { btn.addEventListener('click', () => { const modalId = btn.getAttribute('data-open-modal'); const modal = document.getElementById(modalId); if (modal) modal.classList.remove('hidden'); if (modal) modal.classList.add('flex'); }); }); document.querySelectorAll('[data-close-modal], #close-checkout').forEach(btn => { btn.addEventListener('click', () => { const parentModal = btn.closest('[id$="-modal"]'); if (parentModal) { parentModal.classList.add('hidden'); parentModal.classList.remove('flex'); } }); }); ['login-form','register-form'].forEach(id => { const form = document.getElementById(id); if (form) form.addEventListener('submit', e => { e.preventDefault(); alert('Thank you! Form submitted (demo).'); form.closest('[id$="-modal"]').classList.add('hidden'); form.closest('[id$="-modal"]').classList.remove('flex'); }); }); } setupModals(); // Cart logic let cart = []; let catalog = []; function updateCounts() { const cartCountEls = document.querySelectorAll('#cart-count'); const fallowsCountEls = document.querySelectorAll('#fallows-count'); let cartTotal = 0; cart.forEach(item => { cartTotal += item.quantity; }); cartCountEls.forEach(el => el.textContent = cartTotal); fallowsCountEls.forEach(el => el.textContent = '0'); } async function loadCatalog() { try { const res = await fetch('./catalog.json'); catalog = await res.json(); } catch(e) { catalog = []; } } function renderCart() { const list = document.getElementById('cart-list'); const empty = document.getElementById('cart-empty'); const totals = document.getElementById('totals'); list.innerHTML = ''; if (!cart.length) { empty.classList.remove('hidden'); totals.classList.add('hidden'); updateCounts(); return; } empty.classList.add('hidden'); totals.classList.remove('hidden'); let total = 0; cart.forEach((item, index) => { const product = catalog.find(p => p.id === item.id) || {name: 'Unknown', price: 0}; const itemTotal = product.price * item.quantity; total += itemTotal; const li = document.createElement('li'); li.className = 'flex items-center justify-between p-4 rounded-lg border border-slate-200 dark:border-slate-700 bg-white dark:bg-slate-800 dd23l'; li.innerHTML = `
${product.name}
$${product.price} × ${item.quantity}
${item.quantity}
$${itemTotal}
`; list.appendChild(li); }); document.getElementById('total-price').textContent = '$' + total.toFixed(2); list.querySelectorAll('.qty-btn').forEach(btn => { btn.addEventListener('click', () => { const idx = parseInt(btn.dataset.index); const action = btn.dataset.action; if (action === 'plus') cart[idx].quantity++; else if (action === 'minus' && cart[idx].quantity > 1) cart[idx].quantity--; else if (action === 'remove') cart.splice(idx, 1); localStorage.setItem('sc-cart', JSON.stringify(cart)); renderCart(); updateCounts(); }); }); updateCounts(); } function setupCheckout() { const btn = document.getElementById('checkout-btn'); const modal = document.getElementById('checkout-modal'); if (btn) { btn.addEventListener('click', () => { modal.classList.remove('hidden'); modal.classList.add('flex'); cart = []; localStorage.removeItem('sc-cart'); renderCart(); updateCounts(); }); } const closeBtn = document.getElementById('close-checkout'); if (closeBtn) { closeBtn.addEventListener('click', () => { modal.classList.add('hidden'); modal.classList.remove('flex'); }); } } async function initCart() { await loadCatalog(); try { cart = JSON.parse(localStorage.getItem('sc-cart') || '[]'); } catch(e) { cart = []; } renderCart(); updateCounts(); setupCheckout(); } initCart(); })();