← back to Hospitalitydesignreps

public/js/main.js

46 lines

(function () {
  const root = document.documentElement;
  const toggle = document.getElementById('theme-toggle');
  if (toggle) {
    toggle.addEventListener('click', () => {
      const next = root.getAttribute('data-theme') === 'light' ? 'dark' : 'light';
      if (next === 'light') root.setAttribute('data-theme', 'light');
      else root.removeAttribute('data-theme');
      try { localStorage.setItem('hdr-theme', next); } catch (e) {}
    });
  }

  const grid = document.getElementById('rep-grid');
  const slider = document.getElementById('density-slider');
  if (slider && grid) {
    let saved = null;
    try { saved = localStorage.getItem('hdr-density'); } catch (e) {}
    if (saved) {
      slider.value = saved;
      grid.style.setProperty('--cols-min', saved + 'px');
    }
    slider.addEventListener('input', () => {
      grid.style.setProperty('--cols-min', slider.value + 'px');
      try { localStorage.setItem('hdr-density', slider.value); } catch (e) {}
    });
  }

  const sortSelect = document.getElementById('sort-select');
  if (sortSelect) {
    let savedSort = null;
    try { savedSort = localStorage.getItem('hdr-sort'); } catch (e) {}
    const url = new URL(window.location.href);
    if (savedSort && !url.searchParams.get('sort') && sortSelect.value === 'newest' && savedSort !== 'newest') {
      url.searchParams.set('sort', savedSort);
      window.location.replace(url.toString());
      return;
    }
    sortSelect.addEventListener('change', () => {
      try { localStorage.setItem('hdr-sort', sortSelect.value); } catch (e) {}
      const u = new URL(window.location.href);
      u.searchParams.set('sort', sortSelect.value);
      window.location.assign(u.toString());
    });
  }
})();