'use client'; import { useEffect } from 'react'; const THEME_COLORS = { dark: '#0f172a', light: '#ffffff', }; function getThemeColor() { if (typeof document === 'undefined') return THEME_COLORS.dark; const theme = document.documentElement.getAttribute('data-theme'); return THEME_COLORS[theme] ?? THEME_COLORS.dark; } function applyThemeColor() { const meta = document.querySelector('meta[name="theme-color"]'); if (meta) meta.setAttribute('content', getThemeColor()); } /** * 根据当前亮/暗主题同步 PWA theme-color meta,使 Android 状态栏与页面主题一致。 * 监听 document.documentElement 的 data-theme 变化并更新 meta。 */ export default function ThemeColorSync() { useEffect(() => { applyThemeColor(); const observer = new MutationObserver(() => applyThemeColor()); observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'], }); return () => observer.disconnect(); }, []); return null; }