| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import * as React from 'react';
- import IconButton from '@mui/material/IconButton';
- import { useTheme, ThemeProvider, createTheme } from '@mui/material/styles';
- import Brightness4Icon from '@mui/icons-material/Brightness4';
- import Brightness7Icon from '@mui/icons-material/Brightness7';
- import { CssBaseline } from '@mui/material';
- import useMediaQuery from '@mui/material/useMediaQuery';
- const ColorModeContext = React.createContext({ toggleColorMode: () => {} });
- function MyApp() {
- const theme = useTheme();
- const colorMode = React.useContext(ColorModeContext);
- return (
- //Give value and area to the dark mode
- <CssBaseline
- sx={{
- display: 'flex',
- width: '100%',
- alignItems: 'center',
- justifyContent: 'center',
- bgcolor: 'background.default',
- color: 'text.primary',
- borderRadius: 1,
- p: 3,
- }}
- >
- {theme.palette.mode} mode
- <IconButton sx={{ ml: 1 }} onClick={colorMode.toggleColorMode} color="inherit">
- {theme.palette.mode === 'dark' ? <Brightness7Icon /> : <Brightness4Icon />}
- </IconButton>
- </CssBaseline >
- );
- }
- export default function ToggleColorMode() {
- const [mode, setMode] = React.useState('light');
- const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
- const sys = React.useMemo(
- () =>
- createTheme({
- palette: {
- mode: prefersDarkMode ? 'dark' : 'light',
- },
- }),
- [prefersDarkMode],
- );
- const colorMode = React.useMemo(
- () => ({
- toggleColorMode: () => {
- setMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light'));
- },
- }),
- [],
- );
- const theme = React.useMemo(
- () =>
- createTheme({
- palette: {
- mode,
- },
- }),
- [mode],
- );
- return (
- <ColorModeContext.Provider value={colorMode}>
- <ThemeProvider theme={theme}>
- <MyApp/>
- </ThemeProvider>
- </ColorModeContext.Provider>
- );
- }
|