|
import { useStore } from '@nanostores/react'; |
|
import { memo, useEffect, useState } from 'react'; |
|
import { themeStore, toggleTheme } from '~/lib/stores/theme'; |
|
import { IconButton } from './IconButton'; |
|
|
|
interface ThemeSwitchProps { |
|
className?: string; |
|
} |
|
|
|
export const ThemeSwitch = memo(({ className }: ThemeSwitchProps) => { |
|
const theme = useStore(themeStore); |
|
const [domLoaded, setDomLoaded] = useState(false); |
|
|
|
useEffect(() => { |
|
setDomLoaded(true); |
|
}, []); |
|
|
|
return ( |
|
domLoaded && ( |
|
<IconButton |
|
className={className} |
|
icon={theme === 'dark' ? 'i-ph-sun-dim-duotone' : 'i-ph-moon-stars-duotone'} |
|
size="xl" |
|
title="Toggle Theme" |
|
onClick={toggleTheme} |
|
/> |
|
) |
|
); |
|
}); |
|
|