Spaces:
Running
Running
File size: 895 Bytes
c3a0082 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | // components/ThemeProviderWrapper.jsx
import React, { useMemo, useState, createContext } from 'react';
import { ThemeProvider, createTheme, CssBaseline } from '@mui/material';
export const ColorModeContext = createContext({ toggleColorMode: () => {} });
export default function ThemeProviderWrapper({ children }) {
const [mode, setMode] = useState('light');
const colorMode = useMemo(() => ({
toggleColorMode: () => {
setMode(prev => (prev === 'light' ? 'dark' : 'light'));
}
}), []);
const theme = useMemo(() =>
createTheme({
palette: {
mode,
primary: { main: '#1976d2' },
secondary: { main: '#9c27b0' }
}
}), [mode]);
return (
<ColorModeContext.Provider value={colorMode}>
<ThemeProvider theme={theme}>
<CssBaseline />
{children}
</ThemeProvider>
</ColorModeContext.Provider>
);
}
|