/*! * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) * Copyright 2011-2023 The Bootstrap Authors * Licensed under the Creative Commons Attribution 3.0 Unported License. */ ;(() => { "use strict" const getStoredTheme = () => localStorage.getItem("theme") const setStoredTheme = (theme) => localStorage.setItem("theme", theme) const getPreferredTheme = () => { const storedTheme = getStoredTheme() if (storedTheme) { return storedTheme } return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" } const setTheme = (theme) => { if ( theme === "auto" && window.matchMedia("(prefers-color-scheme: dark)").matches ) { document.documentElement.setAttribute("data-bs-theme", "dark") } else { document.documentElement.setAttribute("data-bs-theme", theme) } } setTheme(getPreferredTheme()) const showActiveTheme = (theme, focus = false) => { const themeSwitcher = document.querySelector("#bd-theme") if (!themeSwitcher) { return } const themeSwitcherText = document.querySelector("#bd-theme-text") const activeThemeIcon = document.querySelector(".theme-icon-active use") const btnToActive = document.querySelector( `[data-bs-theme-value="${theme}"]` ) const svgOfActiveBtn = btnToActive .querySelector("svg use") .getAttribute("href") document.querySelectorAll("[data-bs-theme-value]").forEach((element) => { element.classList.remove("active") element.setAttribute("aria-pressed", "false") }) btnToActive.classList.add("active") btnToActive.setAttribute("aria-pressed", "true") activeThemeIcon.setAttribute("href", svgOfActiveBtn) const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})` themeSwitcher.setAttribute("aria-label", themeSwitcherLabel) if (focus) { themeSwitcher.focus() } } window .matchMedia("(prefers-color-scheme: dark)") .addEventListener("change", () => { const storedTheme = getStoredTheme() if (storedTheme !== "light" && storedTheme !== "dark") { setTheme(getPreferredTheme()) } }) window.addEventListener("DOMContentLoaded", () => { showActiveTheme(getPreferredTheme()) document.querySelectorAll("[data-bs-theme-value]").forEach((toggle) => { toggle.addEventListener("click", () => { const theme = toggle.getAttribute("data-bs-theme-value") setStoredTheme(theme) setTheme(theme) showActiveTheme(theme, true) }) }) }) })()