// vibeproxy admin UI — minimal vanilla JS, no framework. (function () { "use strict"; // Light/dark theme toggle, persisted in localStorage. var themeBtn = document.querySelector("[data-theme-toggle]"); if (themeBtn) { var icon = themeBtn.querySelector("i"); function syncIcon() { var isLight = document.documentElement.getAttribute("data-bs-theme") === "light"; icon.className = isLight ? "bi bi-sun" : "bi bi-moon-stars"; } syncIcon(); themeBtn.addEventListener("click", function () { var current = document.documentElement.getAttribute("data-bs-theme") === "light" ? "light" : "dark"; var next = current === "dark" ? "light" : "dark"; document.documentElement.setAttribute("data-bs-theme", next); localStorage.setItem("vp-theme", next); syncIcon(); }); } // Generic delete-confirmation modal. Any element with // data-confirm-delete-form="