UNPKG

xp.css

Version:

A design system for building faithful recreations of old UIs

52 lines (41 loc) 1.46 kB
const themeSwitcher = document.getElementById("theme-switcher-select"); const stylesheet = document.getElementById("theme-stylesheet"); const defaultThemeUrl = stylesheet.href.split("/"); const defaultTheme = defaultThemeUrl[defaultThemeUrl.length - 1]; setTheme(defaultTheme); function setTheme(theme) { stylesheet.href = theme; document.getElementsByTagName("h1")[0].innerText = theme; } themeSwitcher.addEventListener("change", (e) => setTheme(e.target.value)); const tabs = document.querySelectorAll("menu[role=tablist]"); for (let i = 0; i < tabs.length; i++) { const tab = tabs[i]; const tabButtons = tab.querySelectorAll("menu[role=tablist] > button"); tabButtons.forEach((btn) => btn.addEventListener("click", (e) => { e.preventDefault(); tabButtons.forEach((button) => { if ( button.getAttribute("aria-controls") === e.target.getAttribute("aria-controls") ) { button.setAttribute("aria-selected", true); openTab(e, tab); } else { button.setAttribute("aria-selected", false); } }); }) ); } function openTab(event, tab) { const articles = tab.parentNode.querySelectorAll('[role="tabpanel"]'); articles.forEach((p) => { p.setAttribute("hidden", true); }); const article = tab.parentNode.querySelector( `[role="tabpanel"]#${event.target.getAttribute("aria-controls")}` ); article.removeAttribute("hidden"); }