Learning cart

Review your course plan

Estimated total

$0.00

`; // Re-init header scripts const header = headerEl; const nav = header.querySelector('[data-navigation]'); const mobileBtn = header.querySelector('[data-mobile-menu]'); const loginBtn = header.querySelector('[data-open-login]'); const registerBtn = header.querySelector('[data-open-register]'); const themeBtn = header.querySelector('[data-theme-toggle]'); const modalsWrap = header.querySelector('[data-auth-modals]'); const loginModal = header.querySelector('[data-login-modal]'); const registerModal = header.querySelector('[data-register-modal]'); const closeBtns = header.querySelectorAll('[data-close-modal]'); if (mobileBtn && nav) { mobileBtn.addEventListener('click', () => { nav.classList.toggle('hidden'); nav.classList.toggle('flex'); nav.classList.toggle('flex-col'); nav.classList.toggle('absolute'); nav.classList.toggle('top-full'); nav.classList.toggle('left-0'); nav.classList.toggle('right-0'); nav.classList.toggle('bg-slate-950'); nav.classList.toggle('p-6'); }); } function showModal(modal) { modal.classList.remove('hidden'); modal.classList.add('grid'); } function hideModal(modal) { modal.classList.remove('grid'); modal.classList.add('hidden'); } if (loginBtn) loginBtn.addEventListener('click', () => showModal(loginModal)); if (registerBtn) registerBtn.addEventListener('click', () => showModal(registerModal)); closeBtns.forEach(btn => btn.addEventListener('click', () => { if (loginModal) hideModal(loginModal); if (registerModal) hideModal(registerModal); })); if (themeBtn) { themeBtn.addEventListener('click', () => { document.body.classList.toggle('bg-white'); document.body.classList.toggle('text-slate-900'); }); } // Footer cookie const footer = footerEl; const banner = footer.querySelector('[data-cookie-banner]'); const acceptBtn = footer.querySelector('[data-accept-cookies]'); if (banner && acceptBtn) { if (localStorage.getItem('purelioCookiesAccepted') === 'true') { banner.style.display = 'none'; } acceptBtn.addEventListener('click', () => { localStorage.setItem('purelioCookiesAccepted', 'true'); banner.style.display = 'none'; }); } } async function initCart() { injectHeaderFooter(); const cartContainer = document.getElementById('cart-items'); const totalEl = document.getElementById('cart-total'); const checkoutLink = document.getElementById('checkout-link'); const checkoutModal = document.getElementById('checkout-modal'); const closeCheckout = checkoutModal.querySelector('[data-close-checkout]'); let cart = {}; try { cart = JSON.parse(localStorage.getItem('purelioCart') || '{}'); } catch(e) {} let catalog = []; try { const res = await fetch('./catalog.json'); catalog = await res.json(); } catch(e) { catalog = []; } function saveCart() { localStorage.setItem('purelioCart', JSON.stringify(cart)); } function renderCart() { cartContainer.innerHTML = ''; let total = 0; const entries = Object.entries(cart); if (entries.length === 0) { cartContainer.innerHTML = `

Your cart is empty.

Browse catalog
`; totalEl.textContent = '$0.00'; return; } entries.forEach(([pid, qty]) => { const item = catalog.find(c => String(c.id) === String(pid)); if (!item) return; const row = document.createElement('div'); row.className = 'flex flex-col md:flex-row md:items-center justify-between gap-4 rounded-2xl border border-slate-800 bg-slate-900 p-6'; const itemTotal = item.price * qty; total += itemTotal; row.innerHTML = `
${item.title}
${item.duration}
$${itemTotal.toFixed(2)}
`; row.querySelector('[data-minus]').addEventListener('click', () => updateQty(pid, qty - 1)); row.querySelector('[data-plus]').addEventListener('click', () => updateQty(pid, qty + 1)); const qtyInput = row.querySelector('[data-qty]'); qtyInput.addEventListener('change', () => { const val = parseInt(qtyInput.value); if (val >= 1 && val <= 99) updateQty(pid, val); }); row.querySelector('[data-remove]').addEventListener('click', () => { delete cart[pid]; saveCart(); renderCart(); }); cartContainer.appendChild(row); }); totalEl.textContent = '$' + total.toFixed(2); } function updateQty(pid, newQty) { if (newQty < 1) newQty = 1; if (newQty > 99) newQty = 99; cart[pid] = newQty; saveCart(); renderCart(); } renderCart(); checkoutLink.addEventListener('click', function(e) { e.preventDefault(); checkoutModal.classList.remove('hidden'); checkoutModal.classList.add('grid'); }); closeCheckout.addEventListener('click', () => { checkoutModal.classList.remove('grid'); checkoutModal.classList.add('hidden'); }); // Theme document.querySelectorAll('[data-theme-toggle]').forEach(btn => { btn.addEventListener('click', () => { document.body.classList.toggle('bg-white'); document.body.classList.toggle('text-slate-900'); }); }); } window.onload = initCart; })();