'use client'; import { useTheme } from 'next-themes'; import { Moon, Sun } from '@phosphor-icons/react'; import { useLayoutEffect, useState } from 'react'; import { useTranslations } from 'next-intl'; import { cn } from '@/lib/utils'; interface ThemeToggleProps { className?: string; } export function ThemeToggle({ className }: ThemeToggleProps) { const { theme, setTheme } = useTheme(); const [mounted, setMounted] = useState(false); const t = useTranslations('common'); // Required for hydration mismatch prevention -- theme is unknown during SSR /* eslint-disable react-hooks/set-state-in-effect */ useLayoutEffect(() => { setMounted(true); }, []); /* eslint-enable react-hooks/set-state-in-effect */ if (!mounted) { return ( ); } const isDark = theme === 'dark'; return ( ); }