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