import SvgIcon from '@/web/components/SvgIcon' import useScroll from '@/web/hooks/useScroll' import { useState, useEffect } from 'react' import { useNavigate, useParams } from 'react-router-dom' import Avatar from './Avatar' import cx from 'classnames' const NavigationButtons = () => { const navigate = useNavigate() enum ACTION { Back = 'back', Forward = 'forward', } const handleNavigate = (action: ACTION) => { if (action === ACTION.Back) navigate(-1) if (action === ACTION.Forward) navigate(1) } return (
{[ACTION.Back, ACTION.Forward].map(action => (
handleNavigate(action)} key={action} className='app-region-no-drag btn-hover-animation rounded-lg p-2 text-gray-500 transition duration-300 after:rounded-full after:bg-black/[.06] hover:text-gray-900 dark:text-gray-300 dark:after:bg-white/10 dark:hover:text-gray-200' >
))}
) } const SearchBox = () => { const { type } = useParams() const [keywords, setKeywords] = useState('') const navigate = useNavigate() const toSearch = (e: React.KeyboardEvent) => { if (!keywords) return if (e.key === 'Enter') { navigate(`/search/${keywords}${type ? `/${type}` : ''}`) } } return (
setKeywords(e.target.value)} onKeyDown={toSearch} type='text' className='flex-grow bg-transparent placeholder:text-gray-500 dark:text-white dark:placeholder:text-gray-400' placeholder='搜索' />
setKeywords('')} className={cx( 'cursor-default rounded-full p-1 text-gray-600 transition hover:bg-gray-400/20 dark:text-white/50 dark:hover:bg-white/20', !keywords && 'hidden' )} >
) } const Settings = () => { const navigate = useNavigate() return (
navigate('/settings')} className='app-region-no-drag btn-hover-animation rounded-lg p-2.5 text-gray-500 transition duration-300 after:rounded-full after:bg-black/[.06] hover:text-gray-900 dark:text-gray-300 dark:after:bg-white/10 dark:hover:text-gray-200' >
) } const Topbar = () => { /** * Show topbar background when scroll down */ const [mainContainer, setMainContainer] = useState(null) const scroll = useScroll(mainContainer, { throttle: 100 }) useEffect(() => { setMainContainer(document.getElementById('mainContainer')) }, [setMainContainer]) return (
) } export default Topbar