11import React from "react" ;
22import { SnackbarProvider } from "notistack" ;
3- import { Box } from "@mui/material" ;
3+ import { Box , useMediaQuery } from "@mui/material" ;
4+ import CssBaseline from '@mui/material/CssBaseline' ;
45import {
56 ThemeProvider ,
67 StyledEngineProvider ,
78 createTheme ,
89} from "@mui/material/styles" ;
9- import { indigo , purple } from "@mui/material/colors" ;
10+ import { grey , purple , lightBlue } from "@mui/material/colors" ;
1011import Header from "./components/Header" ;
1112import {
1213 UserProvider ,
@@ -18,29 +19,49 @@ import {
1819} from "./contexts" ;
1920import Router from "./Router" ;
2021
21- // https://mui.com/material-ui/customization/color/#2014-material-design-color-palettes
22- const theme = createTheme ( {
23- palette : {
24- primary : indigo ,
25- secondary : purple ,
26- } ,
27- } ) ;
28-
2922function App ( ) {
23+ const prefersDarkMode = useMediaQuery ( '(prefers-color-scheme: dark)' ) ;
24+
25+ // Update the theme only if the mode changes
26+ // https://mui.com/material-ui/customization/color/#2014-material-design-color-palettes
27+ const theme = React . useMemo ( ( ) => createTheme ( {
28+ palette : {
29+ primary : {
30+ main : lightBlue [ 600 ] ,
31+ light : lightBlue [ 900 ] ,
32+ dark : lightBlue [ 100 ] ,
33+ } ,
34+ secondary : {
35+ main : purple [ 500 ] ,
36+ } ,
37+ text : {
38+ primary : prefersDarkMode ? grey [ 100 ] : grey [ 900 ] ,
39+ secondary : prefersDarkMode ? grey [ 200 ] : grey [ 800 ] ,
40+ } ,
41+ background : {
42+ default : prefersDarkMode ? grey [ 800 ] : grey [ 200 ] ,
43+ paper : prefersDarkMode ? grey [ 700 ] : grey [ 300 ] ,
44+ } ,
45+ mode : prefersDarkMode ? 'dark' : 'light' ,
46+ } ,
47+ }
48+ ) , [ prefersDarkMode ] ) ;
49+
3050 return (
3151 < StyledEngineProvider injectFirst >
32- < ThemeProvider theme = { theme } >
52+ < ThemeProvider theme = { theme } >
53+ < CssBaseline />
3354 < SnackbarProvider maxSnack = { 3 } >
3455 < UserProvider >
3556 < ProjectProvider >
3657 < BuildProvider >
3758 < TestRunProvider >
3859 < SocketProvider >
3960 < HelpProvider >
40- < Box sx = { { height : "10%" } } >
61+ < Box sx = { { height : "10%" , bgcolor : theme . palette . background . paper } } >
4162 < Header />
4263 </ Box >
43- < Box sx = { { height : "90%" } } >
64+ < Box sx = { { height : "90%" , bgcolor : theme . palette . background . default , color : theme . palette . text . primary } } >
4465 < Router />
4566 </ Box >
4667 </ HelpProvider >
0 commit comments