diff --git a/themes/heo/components/DarkModeButton.js b/themes/heo/components/DarkModeButton.js new file mode 100644 index 00000000000..9b56e6da6f2 --- /dev/null +++ b/themes/heo/components/DarkModeButton.js @@ -0,0 +1,38 @@ +import { useGlobal } from '@/lib/global' +import { saveDarkModeToCookies } from '@/themes/theme' +import { Moon, Sun } from '@/components/HeroIcons' +import { useImperativeHandle } from 'react' + +/** + * 深色模式按钮 + */ +const DarkModeButton = (props) => { + const { cRef, className } = props + const { isDarkMode, updateDarkMode } = useGlobal() + + /** + * 对外暴露方法 + */ + useImperativeHandle(cRef, () => { + return { + handleChangeDarkMode: () => { + handleChangeDarkMode() + } + } + }) + + // 用户手动设置主题 + const handleChangeDarkMode = () => { + const newStatus = !isDarkMode + saveDarkModeToCookies(newStatus) + updateDarkMode(newStatus) + const htmlElement = document.getElementsByTagName('html')[0] + htmlElement.classList?.remove(newStatus ? 'light' : 'dark') + htmlElement.classList?.add(newStatus ? 'dark' : 'light') + } + + return
+
{isDarkMode ? : }
+
+} +export default DarkModeButton diff --git a/themes/heo/components/NavBar.js b/themes/heo/components/NavBar.js index baa65e73518..7bf3810f1c9 100644 --- a/themes/heo/components/NavBar.js +++ b/themes/heo/components/NavBar.js @@ -3,6 +3,7 @@ import Logo from './Logo' import throttle from 'lodash.throttle' import RandomPostButton from './RandomPostButton' import SearchButton from './SearchButton' +import DarkModeButton from './DarkModeButton' import SlideOver from './SlideOver' import ReadingProgress from './ReadingProgress' import { MenuListTop } from './MenuListTop' @@ -145,6 +146,7 @@ const NavBar = props => {
+ {!JSON.parse(BLOG.THEME_SWITCH) && } {/* 移动端菜单按钮 */} diff --git a/themes/heo/components/SideRight.js b/themes/heo/components/SideRight.js index 376df833ca9..ec1d4fb74f9 100644 --- a/themes/heo/components/SideRight.js +++ b/themes/heo/components/SideRight.js @@ -48,7 +48,7 @@ export default function SideRight(props) { {/* 最新文章列表 */} -