diff --git a/_layouts/default.html b/_layouts/default.html index a88ccb3..dcaebab 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,16 +1,16 @@ - + {%- include head.html -%} + integrity="sha384-cRxb1HsKSl8bTfU9fBcGsjktUfQa6w+fwvkYnU8XjFH4Qg8To1+/9OXv5iRzrKX4" crossorigin="anonymous"> + integrity="sha384-ov99pRO2tAc0JuxTVzf63RHHeQTJ0CIawbDZFiFTzB07aqFZwEu2pz4uzqL+5OPG" crossorigin="anonymous"> + integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous"> + integrity="sha384-Z35v0Cbs2xT8EPaBKl4dZ1mP5f8Ed4hlE+HdKJZMC7v+6Z8B7mK3AevxRhmhF2FM" crossorigin="anonymous"> + + const tocList = document.getElementById("toc"); + const headers = document.querySelectorAll("h1, h2, h3, h4, h5, h6"); + const excludeClass = 'no-toc'; + + let currentLevel = 1; + let currentList = tocList; + + headers.forEach(header => { + if (header.classList.contains(excludeClass)) { + return; + } + + const level = parseInt(header.tagName.charAt(1)); + + if (header.id === "") { + header.id = header.textContent.toLowerCase().replace(/\s+/g, '-'); + } + + const link = document.createElement("a"); + link.href = "#" + header.id; + link.textContent = header.textContent; + + const listItem = document.createElement("li"); + listItem.appendChild(link); + + if (level > currentLevel) { + const newList = document.createElement("ul"); + currentList.appendChild(newList); + currentList = newList; + } else if (level < currentLevel) { + for (let i = currentLevel; i > level; i--) { + currentList = currentList.parentElement; + } + } + + currentList.appendChild(listItem); + currentLevel = level; + }); + }); + + document.addEventListener("DOMContentLoaded", function () { + const toggleButton = document.getElementById("theme-toggle-button"); + const currentTheme = localStorage.getItem("theme") || "light"; + document.body.classList.add(currentTheme + "-mode"); + + toggleButton.addEventListener("click", function () { + if (document.body.classList.contains("light-mode")) { + document.body.classList.remove("light-mode"); + document.body.classList.add("dark-mode"); + localStorage.setItem("theme", "dark"); + toggleButton.textContent = "☀️"; + } else { + document.body.classList.remove("dark-mode"); + document.body.classList.add("light-mode"); + localStorage.setItem("theme", "light"); + toggleButton.textContent = "🌙"; + } + }); + + // Set the initial button text based on the current theme + toggleButton.textContent = currentTheme === "light" ? "🌙" : "☀️"; + }); +