One of the big trends in 2019 was adding a dark mode to your app or webpage. Well, this page got one now too.
Switching to a dark theme in MaterialUI is pretty easy. Just set the property in your theme config like this:
createTheme({
palette: {
type: 'dark'
}
})
If you change your background and paper colors like I did here you also have to provide their dark counterparts like this:
createTheme({
palette: {
background: {
default: prefersDarkMode ? '#3c3c3c' : '#fcfcfc',
paper: prefersDarkMode ? '#314152' : '#f1f1f1',
},
}
})
The hard part is finding the right colors for your dark mode. Just using black with white text might seem the way to go but when you want to add a little touch of color and nuance to your page you got to make sure that it’s still legible. Oh, and dont forget a good contrast for the a11y crowd.
The final touch is a themeable favicon, thanks to this demo. Requirements are that you use a svg icon and dont care about IE11 and such. Then it’s just adding inline styles into your svg using the mediaquery for dark themes:
<svg>
<style>
....
@media (prefers-color-scheme: dark) {
...
}
</style>
...
</svg>
I could make add some fancy toggle to the site for switching between dark and light mode. But that’s for another day…