mirror of
https://github.com/hamster1963/nezha-dash.git
synced 2025-04-24 21:10:45 +08:00
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
'use client';
|
|
|
|
import { useEffect } from 'react';
|
|
import { useTheme } from 'next-themes';
|
|
|
|
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;
|
|
}
|