import React, { useEffect } from "react"; import { HashRouter as Router, Routes, Route } from "react-router-dom"; import { ThemeProvider } from "@mui/material/styles"; import { Box, CssBaseline } from "@mui/material"; import Navigation from "./components/Navigation/Navigation"; import LeaderboardPage from "./pages/LeaderboardPage/LeaderboardPage"; import HowToSubmitPage from "./pages/HowToSubmitPage/HowToSubmitPage"; import Footer from "./components/Footer/Footer"; import getTheme from "./config/theme"; import { useThemeMode } from "./hooks/useThemeMode"; function App() { const { mode, toggleTheme } = useThemeMode(); const theme = getTheme(mode); // Clean up any theme-related localStorage entries on initial load useEffect(() => { localStorage.removeItem("theme-mode"); }, []); // Apply theme to document as early as possible useEffect(() => { // Apply theme class to document elements document.documentElement.setAttribute("data-theme", mode); document.documentElement.classList.remove("light-mode", "dark-mode"); document.documentElement.classList.add(`${mode}-mode`); // Apply theme class to body document.body.classList.remove("light-mode", "dark-mode"); document.body.classList.add(`${mode}-mode`); // Apply to root element as well const rootElement = document.getElementById("root"); // Update meta theme-color for mobile browsers let metaThemeColor = document.querySelector("meta[name=theme-color]"); if (!metaThemeColor) { metaThemeColor = document.createElement("meta"); metaThemeColor.name = "theme-color"; document.head.appendChild(metaThemeColor); } }, [mode]); return (