"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; }