Welcome to Sorqen Ledger Institute
This demonstration account panel explains the learning experience. No account is created without server processing.
Browse courses
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();