Files
AIRegulation-DocAnalysis/frontend/src/contexts/ThemeContext.tsx

35 lines
898 B
TypeScript
Raw Normal View History

import React, { useEffect, useState, type ReactNode } from 'react';
2026-05-14 15:07:34 +08:00
import { darkTheme, lightTheme } from '../types/theme';
import { ThemeContext } from './theme-context';
2026-05-14 15:07:34 +08:00
interface ThemeProviderProps {
children: ReactNode;
}
export const ThemeProvider: React.FC<ThemeProviderProps> = ({ children }) => {
const [isDark, setIsDark] = useState<boolean>(true);
const theme = isDark ? darkTheme : lightTheme;
const toggleTheme = () => {
setIsDark((prev) => !prev);
};
useEffect(() => {
if (isDark) {
document.documentElement.classList.add('dark');
document.body.style.background = '#0a0a12';
return;
2026-05-14 15:07:34 +08:00
}
document.documentElement.classList.remove('dark');
document.body.style.background = '#ffffff';
2026-05-14 15:07:34 +08:00
}, [isDark]);
return (
<ThemeContext.Provider value={{ isDark, theme, toggleTheme }}>
{children}
</ThemeContext.Provider>
);
};