textgeneration / frontend /theme-fix.js
Soltane777's picture
Upload theme-fix.js
3bfa069 verified
// This is a standalone script to fix theme issues
// Add this script to your HTML before the closing body tag
document.addEventListener("DOMContentLoaded", () => {
console.log("Theme fix script loaded")
// Fix theme toggle button
const themeToggle = document.getElementById("theme-toggle")
if (themeToggle) {
// Remove any existing event listeners by cloning and replacing
const newThemeToggle = themeToggle.cloneNode(true)
themeToggle.parentNode.replaceChild(newThemeToggle, themeToggle)
// Add event listener to the new button
newThemeToggle.addEventListener("click", () => {
console.log("Theme toggle clicked")
toggleTheme()
})
}
// Make sure theme is initialized
initTheme()
// Global theme toggle function
window.toggleTheme = () => {
console.log("Toggle theme called")
// Toggle dark class
document.documentElement.classList.toggle("dark")
// Update icons
const sunIcon = document.getElementById("sun-icon")
const moonIcon = document.getElementById("moon-icon")
if (document.documentElement.classList.contains("dark")) {
// Dark mode active
if (sunIcon) sunIcon.classList.remove("hidden")
if (moonIcon) moonIcon.classList.add("hidden")
localStorage.setItem("theme", "dark")
console.log("Dark mode activated")
} else {
// Light mode active
if (sunIcon) sunIcon.classList.add("hidden")
if (moonIcon) moonIcon.classList.remove("hidden")
localStorage.setItem("theme", "light")
console.log("Light mode activated")
}
// Show notification
const message = document.documentElement.classList.contains("dark") ? "Dark mode activated" : "Light mode activated"
showNotification(message)
}
// Global init theme function
window.initTheme = () => {
const savedTheme = localStorage.getItem("theme")
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches
console.log("Init theme - Saved theme:", savedTheme, "System prefers dark:", prefersDark)
if (savedTheme === "dark" || (!savedTheme && prefersDark)) {
document.documentElement.classList.add("dark")
const sunIcon = document.getElementById("sun-icon")
const moonIcon = document.getElementById("moon-icon")
if (sunIcon) sunIcon.classList.remove("hidden")
if (moonIcon) moonIcon.classList.add("hidden")
} else {
document.documentElement.classList.remove("dark")
const sunIcon = document.getElementById("sun-icon")
const moonIcon = document.getElementById("moon-icon")
if (sunIcon) sunIcon.classList.add("hidden")
if (moonIcon) moonIcon.classList.remove("hidden")
}
}
})
// Ensure notification function is available
if (typeof showNotification !== "function") {
window.showNotification = (message, type = "success") => {
console.log("Notification:", message, type)
// Create notification element
const notification = document.createElement("div")
// Set class based on notification type
if (type === "success") {
notification.className =
"notification fixed top-4 right-4 bg-green-100 border-l-4 border-green-500 text-green-700 p-4 rounded shadow-md dark:bg-green-900 dark:text-green-100 dark:border-green-400"
} else if (type === "error") {
notification.className =
"notification fixed top-4 right-4 bg-red-100 border-l-4 border-red-500 text-red-700 p-4 rounded shadow-md dark:bg-red-900 dark:text-red-100 dark:border-red-400"
} else if (type === "warning") {
notification.className =
"notification fixed top-4 right-4 bg-yellow-100 border-l-4 border-yellow-500 text-yellow-700 p-4 rounded shadow-md dark:bg-yellow-900 dark:text-yellow-100 dark:border-yellow-400"
} else if (type === "info") {
notification.className =
"notification fixed top-4 right-4 bg-blue-100 border-l-4 border-blue-500 text-blue-700 p-4 rounded shadow-md dark:bg-blue-900 dark:text-blue-100 dark:border-blue-400"
}
notification.innerHTML = message
// Add to document
document.body.appendChild(notification)
// Remove after 3 seconds
setTimeout(() => {
notification.style.opacity = "0"
notification.style.transform = "translateY(-20px)"
notification.style.transition = "opacity 0.5s, transform 0.5s"
setTimeout(() => {
notification.remove()
}, 500)
}, 3000)
}
}