import React, { useCallback, useMemo, useRef, useState } from 'react' import useTheme from 'components/styles/use-theme' import { Button, Col, Image } from 'components' import useConfigs from 'lib/states/use-config' import MoonIcon from './icons/moon' import SunIcon from './icons/sun' import GithubIcon from './icons/github' const Controls: React.FC<{}> = React.memo(({ }) => { const theme = useTheme() const config = useConfigs() const timer = useRef() const [hover, setHover] = useState(false) const isDark = useMemo(() => theme.type === 'dark', [theme.type]) const hideLogo = useMemo(() => isDark || hover, [isDark, hover]) const switchThemes = useCallback(() => { const isDark = theme.type === 'dark' config.onChange && config.onChange(!isDark) }, [theme.type]) const redirectGithub = () => { if (typeof window !== 'undefined') { window.open('https://github.com/zeit-ui/react') } } const hoverHandler = (next: boolean) => { if (typeof window === 'undefined') return if (next) { timer.current && clearTimeout(timer.current) return setHover(true) } timer.current = window.setTimeout(() => { setHover(false) clearTimeout(timer.current) }, 300) } return (
hoverHandler(true)} onMouseLeave={() => hoverHandler(false)}>
hoverHandler(true)} onMouseLeave={() => hoverHandler(false)}>
) }) export default Controls