Create a planning profile
Save favorite venues and keep your event research together.
Your shortlist
Fallows
Keep the spaces that feel right for your event close at hand.
Browse more venues
`;
document.querySelector('footer').innerHTML = `
`;
(() => {
const root = document.documentElement;
const saved = localStorage.getItem('nookstage-theme');
if (saved === 'dark') root.classList.add('dark');
document.querySelector('[data-theme-toggle]')?.addEventListener('click', () => {
root.classList.toggle('dark');
localStorage.setItem('nookstage-theme', root.classList.contains('dark') ? 'dark' : 'light');
});
document.querySelector('[data-open-login]')?.addEventListener('click', () => document.querySelector('#login-modal').hidden = false);
document.querySelector('[data-open-register]')?.addEventListener('click', () => document.querySelector('#register-modal').hidden = false);
document.querySelectorAll('[data-close-modal]').forEach(button => button.addEventListener('click', () => button.closest('[role="dialog"]').hidden = true));
const cookieBanner = document.querySelector('#cookie-banner');
if (localStorage.getItem('nookstage-cookies') === 'accepted') cookieBanner.hidden = true;
document.querySelector('[data-accept-cookies]')?.addEventListener('click', () => { localStorage.setItem('nookstage-cookies','accepted'); cookieBanner.hidden = true; });
})();
const grid = document.querySelector('#saved-grid');
fetch('./catalog.json').then(r => r.json()).then(all => {
function render() {
const ids = JSON.parse(localStorage.getItem('nookstage-favorites') || '[]');
const saved = all.filter(x => ids.includes(x.id));
grid.innerHTML = saved.length ? saved.map(x => `
${x.city} · ${x.category}
${x.name}
${x.description}
`).join('') : `Your shortlist is ready for its first venue.
`;
}
render();
grid.onclick = e => {
if (e.target.dataset.remove) {
const ids = JSON.parse(localStorage.getItem('nookstage-favorites') || '[]').filter(x => x !== e.target.dataset.remove);
localStorage.setItem('nookstage-favorites', JSON.stringify(ids));
render();
}
};
}).catch(() => {
grid.innerHTML = `Your shortlist is ready for its first venue.
`;
});