refactor: 移除主题切换功能,统一使用明亮风格

- 从 Header 移除 ThemeToggle 组件
- 删除 theme-toggle.tsx 文件
- 简化 theme-context.tsx,只保留 light 主题~
This commit is contained in:
张翔
2026-02-23 08:04:50 +08:00
parent 5f0f642ab6
commit b32fcdbbdc
3 changed files with 14 additions and 112 deletions
+4 -52
View File
@@ -1,65 +1,17 @@
'use client';
import { createContext, useContext, useEffect, useState, type ReactNode } from 'react';
type Theme = 'light' | 'dark' | 'system';
import { createContext, useContext, type ReactNode } from 'react';
interface ThemeContextType {
theme: Theme;
setTheme: (theme: Theme) => void;
resolvedTheme: 'light' | 'dark';
theme: 'light';
resolvedTheme: 'light';
}
const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
const THEME_STORAGE_KEY = 'ruixin-theme';
export function ThemeProvider({ children }: { children: ReactNode }) {
const [theme, setThemeState] = useState<Theme>('system');
const [resolvedTheme, setResolvedTheme] = useState<'light' | 'dark'>('light');
useEffect(() => {
const stored = localStorage.getItem(THEME_STORAGE_KEY) as Theme | null;
if (stored && ['light', 'dark', 'system'].includes(stored)) {
setThemeState(stored);
}
}, []);
useEffect(() => {
const root = document.documentElement;
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
const updateTheme = () => {
let resolved: 'light' | 'dark';
if (theme === 'system') {
resolved = mediaQuery.matches ? 'dark' : 'light';
} else {
resolved = theme;
}
setResolvedTheme(resolved);
if (resolved === 'dark') {
root.classList.add('dark');
} else {
root.classList.remove('dark');
}
};
updateTheme();
mediaQuery.addEventListener('change', updateTheme);
return () => mediaQuery.removeEventListener('change', updateTheme);
}, [theme]);
const setTheme = (newTheme: Theme) => {
setThemeState(newTheme);
localStorage.setItem(THEME_STORAGE_KEY, newTheme);
};
return (
<ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>
<ThemeContext.Provider value={{ theme: 'light', resolvedTheme: 'light' }}>
{children}
</ThemeContext.Provider>
);