1interface ThemeToggleProps { 2 isDark: boolean 3 onToggle: () => void 4} 5 6export function ThemeToggle({ isDark, onToggle }: ThemeToggleProps) { 7 return ( 8 <button 9 onClick={onToggle} 10 className="group glass glass-hover p-3 rounded-lg transition-all duration-300" 11 aria-label="Toggle theme" 12 > 13 {isDark ? ( 14 <svg 15 className="w-4 h-4 text-muted-foreground group-hover:text-foreground transition-colors duration-300" 16 fill="currentColor" 17 viewBox="0 0 20 20" 18 > 19 <path 20 fillRule="evenodd" 21 d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z" 22 clipRule="evenodd" 23 /> 24 </svg> 25 ) : ( 26 <svg 27 className="w-4 h-4 text-muted-foreground group-hover:text-foreground transition-colors duration-300" 28 fill="currentColor" 29 viewBox="0 0 20 20" 30 > 31 <path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" /> 32 </svg> 33 )} 34 </button> 35 ) 36}