23 lines
896 B
TypeScript

const MOBILE_BREAKPOINT = 768; // 48em
function setupToggle(buttonId: string, className: string, mobileClass: string, otherMobileClass: string) {
const button = document.getElementById(buttonId);
if (!button) return;
button.addEventListener("click", () => {
const isMobile = window.innerWidth <= MOBILE_BREAKPOINT;
if (isMobile) {
document.body.classList.toggle(mobileClass);
document.body.classList.remove(otherMobileClass);
} else {
const isCollapsed = document.documentElement.classList.toggle(className);
localStorage.setItem(className, String(isCollapsed));
}
});
}
export default function setupSidebars() {
setupToggle("left-pane-toggle-button", "left-pane-collapsed", "menu-open", "toc-open");
setupToggle("toc-pane-toggle-button", "toc-pane-collapsed", "toc-open", "menu-open");
}