Sorqen Ledger Institute

Your learning shortlist

Fallows

Keep a quiet list of courses you may want to revisit. This browser-only feature does not create an account.

Return to catalog
`; const footerHTML = ` `; document.getElementById('site-header').innerHTML = headerHTML; document.getElementById('site-footer').innerHTML = footerHTML; async function renderTracked() { const ids = JSON.parse(localStorage.getItem('sorqenFavorites') || '[]'); const data = await fetch('./catalog.json').then(r => r.json()); const items = data.filter(x => ids.includes(x.id)); const grid = document.querySelector('#tracked-grid'); if (!items.length) { grid.innerHTML = '

You are not tracking any courses yet. Browse the catalog to build a thoughtful shortlist.

'; return; } grid.innerHTML = items.map(x => `

${x.category}

${x.title}

${x.description}

`).join(''); } document.addEventListener('click', e => { if (e.target.dataset.remove) { let ids = JSON.parse(localStorage.getItem('sorqenFavorites') || '[]').filter(id => id !== e.target.dataset.remove); localStorage.setItem('sorqenFavorites', JSON.stringify(ids)); renderTracked(); } }); document.querySelector('#theme-toggle')?.addEventListener('click', () => { document.documentElement.classList.toggle('dark'); localStorage.setItem('sorqenTheme', document.documentElement.classList.contains('dark') ? 'dark' : 'light'); }); document.querySelector('#login-trigger')?.addEventListener('click', () => document.querySelector('#auth-modal').classList.remove('hidden')); document.querySelector('#register-trigger')?.addEventListener('click', () => document.querySelector('#auth-modal').classList.remove('hidden')); document.querySelector('#auth-close')?.addEventListener('click', () => document.querySelector('#auth-modal').classList.add('hidden')); if (localStorage.getItem('sorqenCookies') === 'accepted') { document.querySelector('#cookie-banner')?.remove(); } document.querySelector('#accept-cookies')?.addEventListener('click', () => { localStorage.setItem('sorqenCookies', 'accepted'); document.querySelector('#cookie-banner')?.remove(); }); renderTracked();