diff --git a/frontend/src/context/ThemeContext.jsx b/frontend/src/context/ThemeContext.jsx index 5020d5f..9daa0d1 100644 --- a/frontend/src/context/ThemeContext.jsx +++ b/frontend/src/context/ThemeContext.jsx @@ -1,14 +1,14 @@ - import { createContext, useState, useContext, useEffect } from "react"; -const ThemeContext = createContext(); +const ThemeContext = createContext({ theme: "light", toggleTheme: () => {} }); export const useTheme = () => useContext(ThemeContext); export const ThemeProvider = ({ children }) => { const [theme, setTheme] = useState(() => { const saved = localStorage.getItem("theme"); - return saved || "light"; // Default "light" + if (saved) return saved; + return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; }); useEffect(() => { @@ -16,15 +16,15 @@ export const ThemeProvider = ({ children }) => { if (theme === "dark") { document.documentElement.classList.add("dark"); + document.documentElement.setAttribute("data-theme", "dark"); } else { document.documentElement.classList.remove("dark"); + document.documentElement.setAttribute("data-theme", "light"); } - - }, [theme]); const toggleTheme = () => { - setTheme(prev => (prev === "dark" ? "light" : "dark")); + setTheme((prev) => (prev === "dark" ? "light" : "dark")); }; return ( diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx index a954f73..210d485 100644 --- a/frontend/src/main.jsx +++ b/frontend/src/main.jsx @@ -2,12 +2,15 @@ import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import { Toaster } from 'react-hot-toast'; +import { ThemeProvider } from './context/ThemeContext.jsx'; import App from './App.jsx'; import './index.css'; createRoot(document.getElementById('root')).render( - - + + + + ); \ No newline at end of file