'use client'; import { useEffect, useState, type ComponentProps } from 'react'; import { ThemeProvider as NextThemesProvider } from 'next-themes'; import { Moon, Sun } from 'lucide-react'; import { useTheme } from 'next-themes'; import { Button } from '@/components/ui'; import { cn } from '@/lib/utils'; const ThemeProvider = ({ children, ...props }: ComponentProps) => { const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); if (!mounted) return null; return {children}; }; type ThemeToggleProps = { size?: number; buttonProps?: Omit, 'onClick'>; }; const ThemeToggle = ({ size = 1, buttonProps }: ThemeToggleProps) => { const { setTheme, resolvedTheme } = useTheme(); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); if (!mounted) { return ( ); } const toggleTheme = () => { if (resolvedTheme === 'dark') setTheme('light'); else setTheme('dark'); }; return ( ); }; export { ThemeProvider, ThemeToggle, type ThemeToggleProps };