Files
AIRegulation-DocAnalysis/frontend/src/contexts/ThemeContext.tsx
ash66 987cc097da feat: implement new layout components and routing structure
- Added HeaderLayout component for the application header.
- Introduced KeepAliveViewport for managing tab states and rendering.
- Created TabNav for tab navigation with animated indicator.
- Removed old Tabs component in favor of new layout structure.
- Updated routing with AppRouter and defined appTabs for navigation.
- Enhanced theme context to manage dark mode styles.
- Added new UI components: Badge, Button, Separator, and Tabs.
- Refactored pages to utilize new layout components and improve responsiveness.
- Updated global styles for better theming and layout consistency.
- Introduced TypeScript path aliases for cleaner imports.
2026-05-25 16:19:18 +08:00

36 lines
910 B
TypeScript

import React, { useEffect, useState, type ReactNode } from 'react';
import { darkTheme, lightTheme } from '../types/theme';
import { ThemeContext } from './theme-context';
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(() => {
document.documentElement.classList.toggle('dark', isDark);
document.body.classList.toggle('dark-mode', isDark);
if (isDark) {
document.body.style.background = '#0a0a12';
return;
}
document.body.style.background = '#ffffff';
}, [isDark]);
return (
<ThemeContext.Provider value={{ isDark, theme, toggleTheme }}>
{children}
</ThemeContext.Provider>
);
};