Yassine Mhirsi
fixed typescript adn added logout
2251e03
raw
history blame contribute delete
948 Bytes
import { useState, useEffect } from 'react';
type Theme = 'light' | 'dark';
const THEME_STORAGE_KEY = 'app-theme';
export const useTheme = () => {
const [theme, setTheme] = useState(() => {
// Get theme from localStorage or default to 'dark'
if (typeof window !== 'undefined') {
const stored = localStorage.getItem(THEME_STORAGE_KEY) as Theme | null;
return stored || 'dark';
}
return 'dark';
}) as [Theme, (value: Theme | ((prev: Theme) => Theme)) => void];
useEffect(() => {
// Apply theme to document
const root = document.documentElement;
if (theme === 'dark') {
root.classList.add('dark');
} else {
root.classList.remove('dark');
}
// Save to localStorage
localStorage.setItem(THEME_STORAGE_KEY, theme);
}, [theme]);
const toggleTheme = () => {
setTheme((prev) => (prev === 'dark' ? 'light' : 'dark'));
};
return { theme, toggleTheme, setTheme };
};