mirror of
https://github.com/hamster1963/nezha-dash.git
synced 2025-04-24 21:10:45 +08:00
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
"use client"
|
|
|
|
import { useTheme } from "next-themes"
|
|
import { useEffect } from "react"
|
|
|
|
export function ThemeColorManager() {
|
|
const { theme, systemTheme } = useTheme()
|
|
|
|
useEffect(() => {
|
|
const updateThemeColor = () => {
|
|
const currentTheme = theme === "system" ? systemTheme : theme
|
|
const meta = document.querySelector('meta[name="theme-color"]')
|
|
|
|
if (!meta) {
|
|
const newMeta = document.createElement("meta")
|
|
newMeta.name = "theme-color"
|
|
document.head.appendChild(newMeta)
|
|
}
|
|
|
|
const themeColor =
|
|
currentTheme === "dark"
|
|
? "hsl(30 15% 8%)" // 深色模式背景色
|
|
: "hsl(0 0% 98%)" // 浅色模式背景色
|
|
|
|
document.querySelector('meta[name="theme-color"]')?.setAttribute("content", themeColor)
|
|
}
|
|
|
|
// Update on mount and theme change
|
|
updateThemeColor()
|
|
|
|
// Listen for system theme changes
|
|
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)")
|
|
mediaQuery.addEventListener("change", updateThemeColor)
|
|
|
|
return () => mediaQuery.removeEventListener("change", updateThemeColor)
|
|
}, [theme, systemTheme])
|
|
|
|
return null
|
|
}
|