mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-06-14 03:51:23 +00:00
34 lines
974 B
TypeScript
34 lines
974 B
TypeScript
import { createContext, useContext, useState, useMemo } from 'react';
|
|
import { createTheme, ThemeProvider as MuiThemeProvider } from '@mui/material/styles';
|
|
|
|
const darkTheme = createTheme({
|
|
palette: {
|
|
mode: 'dark',
|
|
},
|
|
});
|
|
|
|
const lightTheme = createTheme({
|
|
palette: {
|
|
mode: 'light',
|
|
},
|
|
});
|
|
|
|
const ThemeContext = createContext({ themeMode: 'light', toggleTheme: () => {} });
|
|
|
|
export const ThemeProvider = ({ children }: { children: React.ReactNode }) => {
|
|
const [themeMode, setThemeMode] = useState('light');
|
|
|
|
const theme = useMemo(() => (themeMode === 'light' ? lightTheme : darkTheme), [themeMode]);
|
|
|
|
const toggleTheme = () => {
|
|
setThemeMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light'));
|
|
};
|
|
|
|
return (
|
|
<ThemeContext.Provider value={{ themeMode, toggleTheme }}>
|
|
<MuiThemeProvider theme={theme}>{children}</MuiThemeProvider>
|
|
</ThemeContext.Provider>
|
|
);
|
|
};
|
|
|
|
export const useThemeContext = () => useContext(ThemeContext); |