47 lines
1.9 KiB
JavaScript
47 lines
1.9 KiB
JavaScript
document.addEventListener("DOMContentLoaded", function () {
|
|
const input = document.getElementById("command-input");
|
|
const terminal = document.getElementById("terminal");
|
|
const availableThemes = ["pwny", "light", "catppuccin", "doom1", "dracula", "gruvbox", "nord"];
|
|
|
|
// Load the saved theme from localStorage, defaulting to "pwny"
|
|
let currentTheme = localStorage.getItem("theme") || "pwny";
|
|
applyTheme(currentTheme);
|
|
|
|
input.addEventListener("keydown", function (event) {
|
|
if (event.key === "Enter") {
|
|
const command = input.value.trim();
|
|
if (command.startsWith("theme")) {
|
|
event.preventDefault();
|
|
const parts = command.split(" ");
|
|
if (parts.length === 1) {
|
|
addLogEntry(`Available themes: ${availableThemes.join(', ')}. Current theme: ${currentTheme}`, 'info');
|
|
} else {
|
|
const theme = parts[1];
|
|
applyTheme(theme);
|
|
addLogEntry(`Theme changed to: ${theme}`, 'info');
|
|
}
|
|
input.value = ''; // Clear input
|
|
}
|
|
}
|
|
});
|
|
|
|
function applyTheme(themeName) {
|
|
if (availableThemes.includes(themeName)) {
|
|
document.body.className = ""; // Clear all theme classes
|
|
document.body.classList.add(`${themeName}-theme`); // Add the new theme class
|
|
localStorage.setItem("theme", themeName);
|
|
currentTheme = themeName;
|
|
} else {
|
|
addLogEntry(`Error: Theme "${themeName}" not found. Available themes: ${availableThemes.join(', ')}`, 'error');
|
|
}
|
|
}
|
|
|
|
function addLogEntry(message, type) {
|
|
const logEntry = document.createElement("div");
|
|
logEntry.classList.add(type === 'error' ? 'error' : 'info');
|
|
logEntry.textContent = message;
|
|
terminal.appendChild(logEntry);
|
|
terminal.scrollTop = terminal.scrollHeight;
|
|
}
|
|
});
|