| 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} | |
| /> | |
| ) | |
| ); | |
| }); | |