'use client'; import React, { createContext, useState, useEffect, useContext, ReactNode } from 'react'; interface ThemeContextType { theme: string; toggleTheme: () => void; } const ThemeContext = createContext(undefined); export const ThemeProvider = ({ children }: { children: ReactNode }) => { const [theme, setTheme] = useState('dark'); // Default to dark mode useEffect(() => { const storedTheme = localStorage.getItem('theme'); if (storedTheme) { setTheme(storedTheme); } // Apply theme to HTML element for Tailwind's 'class' strategy document.documentElement.classList.toggle('dark', theme === 'dark'); }, [theme]); const toggleTheme = () => { const newTheme = theme === 'light'? 'dark' : 'light'; setTheme(newTheme); localStorage.setItem('theme', newTheme); document.documentElement.classList.toggle('dark', newTheme === 'dark'); }; return ( {children} ); }; export const useTheme = () => { const context = useContext(ThemeContext); if (context === undefined) { throw new Error('useTheme must be used within a ThemeProvider'); } return context; };