Lancewood Cradlecraft

Your project list

Cart

Total: $0.00

Place enrollment request
Continue browsing Contact the workshop
`; const footerHTML = ` `; document.querySelector('header').innerHTML = headerHTML; document.querySelector('footer').innerHTML = footerHTML; const m = document.querySelector('#authModal'); const titleEl = document.querySelector('#authTitle'); document.querySelectorAll('[data-auth]').forEach(a => { a.addEventListener('click', e => { e.preventDefault(); titleEl.textContent = a.dataset.auth === 'login' ? 'Sign in to your workshop desk' : 'Create a workshop desk'; m.classList.replace('hidden', 'flex'); }); }); document.querySelector('[data-close-auth]').addEventListener('click', e => { e.preventDefault(); m.classList.replace('flex', 'hidden'); }); document.querySelector('[data-theme]').addEventListener('click', e => { e.preventDefault(); document.documentElement.classList.toggle('dark'); localStorage.setItem('lancewoodTheme', document.documentElement.classList.contains('dark') ? 'dark' : 'light'); }); const saved = localStorage.getItem('lancewoodTheme'); if (saved === 'dark') document.documentElement.classList.add('dark'); const b = document.querySelector('#cookieBanner'); if (localStorage.getItem('lancewoodCookies') && b) b.remove(); const accept = document.querySelector('#acceptCookies'); if (accept) accept.addEventListener('click', function(e){ e.preventDefault(); localStorage.setItem('lancewoodCookies','yes'); if (b) b.remove(); }); let products = []; async function init() { const res = await fetch('./catalog.json'); products = await res.json(); render(); } function render() { const c = JSON.parse(localStorage.getItem('lancewoodCart') || '{}'); let rows = Object.entries(c).map(([id, q]) => { const x = products.find(p => p.id === id); if (!x) return ''; return `

${x.title}

$${x.price.toFixed(2)} each

${q}+
`; }).join(''); document.querySelector('#cartItems').innerHTML = rows || '

Your cart is empty.

Choose a course when you are ready to begin.

'; const total = Object.entries(c).reduce((s, [id, q]) => s + ((products.find(p => p.id === id)?.price || 0) * q), 0); document.querySelector('#total').textContent = '$' + total.toFixed(2); } document.addEventListener('click', e => { const d = e.target.dataset; if (d.plus || d.minus) { e.preventDefault(); const c = JSON.parse(localStorage.getItem('lancewoodCart') || '{}'); const id = d.plus || d.minus; c[id] = (c[id] || 0) + (d.plus ? 1 : -1); if (c[id] <= 0) delete c[id]; localStorage.setItem('lancewoodCart', JSON.stringify(c)); render(); } if (e.target.id === 'checkout') { e.preventDefault(); document.querySelector('#confirmModal').classList.replace('hidden', 'flex'); } }); init(); })();