'use client'; import { useState, useEffect } from 'react'; import { Moon, Sun } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { useTheme } from './ThemeProvider'; export function ThemeToggle() { const { theme, setTheme } = useTheme(); const [isAnimating, setIsAnimating] = useState(false); // Track initial mount to prevent animation on first render const [isMounted, setIsMounted] = useState(false); useEffect(() => { setIsMounted(true); }, []); const toggleTheme = () => { if (isAnimating) return; setIsAnimating(true); // Set new theme after a small delay for animation const newTheme = theme === 'dark' ? 'light' : 'dark'; setTimeout(() => { setTheme(newTheme); setTimeout(() => { setIsAnimating(false); }, 300); }, 200); }; if (!isMounted) { return ( ); } return ( ); }