/**
* 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 (
)
}