import { useGlobal } from '@/lib/global' import { getQueryParam } from '@/lib/utils' import { THEMES } from '@/themes/theme' import { useRouter } from 'next/router' import { useState } from 'react' import DarkModeButton from './DarkModeButton' import { Draggable } from './Draggable' import LazyImage from './LazyImage' import SideBarDrawer from './SideBarDrawer' /** * * @returns 主题切换 */ const ThemeSwitch = () => { const { theme, lang, changeLang, locale, isDarkMode, toggleDarkMode } = useGlobal() const router = useRouter() const currentTheme = getQueryParam(router.asPath, 'theme') || theme const [sideBarVisible, setSideBarVisible] = useState(false) const changeTheme = newTheme => { const query = router.query query.theme = newTheme router.push({ pathname: router.pathname, query }).then(() => {}) } const onLangSelectChange = e => { document.ontouchmove = document.ontouchend = document.onmousemove = document.onmouseup = null const newLang = e.target.value changeLang(newLang) } return ( <> {/* 悬浮的主题切换按钮 */} {/* 主题切换按钮 */} {locale.COMMON.THEME} {/* 点击弹出主题切换面板 */} { setSideBarVisible(true) }} className='uppercase cursor-pointer' title='Click To Switch Theme' alt='Click To Switch Theme'> {currentTheme} { setSideBarVisible(false) }}> {/* 开关 */} {/* 深色模式切换 */} {isDarkMode ? locale.MENU.DARK_MODE : locale.MENU.LIGHT_MODE} {/* 关闭 */} { setSideBarVisible(false) }}> 点击下方主题进行切换. Click below to switch the theme. {/* 陈列所有主题 */} {THEMES?.map(t => { return ( { changeTheme(t) }}> {t} ) })} > ) } export default ThemeSwitch