/** * Theme Toggle Component * Dark/Light mode toggle for the header * Uses next-themes for persistence */ 'use client' import { useTheme } from 'next-themes' import { Moon, Sun } from '@phosphor-icons/react' import { useLayoutEffect, useState } from 'react' import { cn } from '@/lib/utils' interface ThemeToggleProps { className?: string } export function ThemeToggle({ className }: ThemeToggleProps) { const { theme, setTheme } = useTheme() const [mounted, setMounted] = useState(false) // Prevent hydration mismatch /* eslint-disable react-hooks/set-state-in-effect -- Required for hydration mismatch prevention */ useLayoutEffect(() => { setMounted(true) }, []) /* eslint-enable react-hooks/set-state-in-effect */ if (!mounted) { return ( ) } const isDark = theme === 'dark' return ( ) }