CrispVanta.

Selection desk

Your course cart.

Continue browsing
`; const footerHTML=``; document.querySelector("header").innerHTML=headerHTML; document.querySelector("footer").innerHTML=footerHTML; async function renderCart(){ const items=await fetch("./catalog.json").then(r=>r.json()); let cart=JSON.parse(localStorage.getItem("crispvanta-cart")||"{}"); const selected=items.filter(x=>cart[x.id]); const box=document.querySelector("#cart-list"); if(!selected.length){ box.innerHTML=`

Your cart is empty. Choose a course to begin.

`; document.querySelector("#total").textContent="Total: $0.00"; return; } box.innerHTML=selected.map(x=>`

${x.title}

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

`).join(""); let total=0; selected.forEach(x=>{total+=x.price*cart[x.id]}); document.querySelector("#total").textContent=`Total: $${total.toFixed(2)}`; } document.addEventListener("change",e=>{ if(e.target.dataset.qty){ const c=JSON.parse(localStorage.getItem("crispvanta-cart")||"{}"); c[e.target.dataset.qty]=Math.max(1,Number(e.target.value)||1); localStorage.setItem("crispvanta-cart",JSON.stringify(c)); renderCart(); } }); document.addEventListener("click",e=>{ if(e.target.dataset.remove){ const c=JSON.parse(localStorage.getItem("crispvanta-cart")||"{}"); delete c[e.target.dataset.remove]; localStorage.setItem("crispvanta-cart",JSON.stringify(c)); renderCart(); } if(e.target.id==="checkout"){ document.querySelector("#checkout-modal").classList.replace("hidden","flex"); } }); document.querySelector("#checkout-modal").addEventListener("click",e=>{ if(e.target.id==="checkout-modal")e.target.classList.replace("flex","hidden"); }); if(localStorage.getItem("crispvanta-theme")==="dark")document.documentElement.classList.add("dark"); renderCart();