import React, { useState, useRef, useEffect } from 'react'; import { useTheme } from '../../hooks/useTheme'; import { SunIcon, MoonIcon, DesktopIcon } from '../icons/Icons'; type Theme = 'light' | 'dark' | 'system'; const themeOptions: { value: Theme; label: string; icon: React.FC>; }[] = [ { value: 'light', label: 'Light', icon: SunIcon }, { value: 'dark', label: 'Dark', icon: MoonIcon }, { value: 'system', label: 'System', icon: DesktopIcon }, ]; const ThemeSwitcher: React.FC = () => { const { theme, setTheme } = useTheme(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const currentTheme = themeOptions.find(t => t.value === theme) || themeOptions[2]; useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( dropdownRef.current && !dropdownRef.current.contains(event.target as Node) ) { setIsOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); return (
{isOpen && (
{themeOptions.map(option => ( ))}
)}
); }; export default ThemeSwitcher;