()
| 22 | } |
| 23 | |
| 24 | export function ThemeToggle() { |
| 25 | let { resolvedTheme, setTheme } = useTheme(); |
| 26 | let otherTheme = resolvedTheme === 'dark' ? 'light' : 'dark'; |
| 27 | let [mounted, setMounted] = useState(false); |
| 28 | |
| 29 | useEffect(() => { |
| 30 | setMounted(true); |
| 31 | }, []); |
| 32 | |
| 33 | return ( |
| 34 | <button |
| 35 | type="button" |
| 36 | className="flex h-6 w-6 items-center justify-center rounded-md transition hover:bg-zinc-900/5 dark:hover:bg-white/5" |
| 37 | aria-label={ |
| 38 | mounted ? `Switch to ${otherTheme} theme` : 'Toggle theme' |
| 39 | } |
| 40 | onClick={() => setTheme(otherTheme)} |
| 41 | > |
| 42 | <SunIcon className="h-5 w-5 stroke-zinc-900 dark:hidden" /> |
| 43 | <MoonIcon className="hidden h-5 w-5 stroke-white dark:block" /> |
| 44 | </button> |
| 45 | ); |
| 46 | } |
nothing calls this directly
no outgoing calls
no test coverage detected