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