import { SwitchProps, useSwitch } from '@heroui/switch' import { VisuallyHidden } from '@react-aria/visually-hidden' import clsx from 'clsx' import { FC, useEffect, useState } from 'react' import { MoonFilledIcon, SunFilledIcon } from '@/components/icons' import { useTheme } from '@/hooks/use-theme' export interface ThemeSwitchProps { className?: string classNames?: SwitchProps['classNames'] } export const ThemeSwitch: FC = ({ className, classNames }) => { const [isMounted, setIsMounted] = useState(false) const { theme, toggleTheme } = useTheme() const onChange = toggleTheme const { Component, slots, isSelected, getBaseProps, getInputProps, getWrapperProps } = useSwitch({ isSelected: theme === 'light', onChange }) useEffect(() => { setIsMounted(true) }, [isMounted]) // Prevent Hydration Mismatch if (!isMounted) return
return (
{isSelected ? ( ) : ( )}
) }