// Language selector
(function () {
var btn = document.querySelector('.lang-btn');
var popup = document.querySelector('.lang-popup');
if (!btn || !popup) return;
btn.addEventListener('click', function (e) {
e.stopPropagation();
popup.classList.toggle('open');
});
document.addEventListener('click', function () {
popup.classList.remove('open');
});
popup.addEventListener('click', function (e) {
var link = e.target.closest('[data-lang]');
if (!link) return;
e.preventDefault();
var lang = link.getAttribute('data-lang');
localStorage.setItem('preferred-lang', lang);
var basePath = document.documentElement.getAttribute('data-base-path') || '';
var path = window.location.pathname;
// Strip base path prefix, replace lang, then re-add base path
var pathWithoutBase = path.slice(basePath.length);
var newPath = basePath + pathWithoutBase.replace(/^\/[a-z]{2}\//, '/' + lang + '/');
window.location.href = newPath;
});
})();
// Theme toggle
(function () {
var btn = document.querySelector('.theme-toggle');
if (!btn) return;
// Feather Icons: sun (light mode) and moon (dark mode)
var sunSVG = '';
var moonSVG = '';
function getTheme() {
var stored = localStorage.getItem('preferred-theme');
if (stored) return stored;
return window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
}
function applyTheme(theme) {
if (theme === 'light') {
document.documentElement.setAttribute('data-theme', 'light');
} else {
document.documentElement.removeAttribute('data-theme');
}
btn.innerHTML = theme === 'light' ? sunSVG : moonSVG;
}
applyTheme(getTheme());
btn.addEventListener('click', function () {
var current = getTheme();
var next = current === 'dark' ? 'light' : 'dark';
localStorage.setItem('preferred-theme', next);
applyTheme(next);
});
})();
// Mobile sidebar toggle
(function () {
var toggle = document.querySelector('.sidebar-toggle');
var sidebar = document.querySelector('.sidebar');
if (!toggle || !sidebar) return;
toggle.addEventListener('click', function () {
sidebar.classList.toggle('open');
});
document.addEventListener('click', function (e) {
if (!sidebar.contains(e.target) && e.target !== toggle) {
sidebar.classList.remove('open');
}
});
})();