fix: fix dark mode flickering

This commit is contained in:
Felix Schröter 2023-01-04 18:57:08 +01:00
parent 4bfd8abd18
commit ee48346430
Signed by: felschr
GPG key ID: 671E39E6744C807D

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { ReactNode, useMemo } from "react" import { ReactNode, useMemo } from "react"
import { AppBar, Box, Button, Container, createTheme, CssBaseline, Link, ThemeProvider, Toolbar, Typography, useMediaQuery, useTheme } from "@mui/material" import { AppBar, Box, Button, Container, experimental_extendTheme as extendTheme, CssBaseline, Link, Toolbar, Typography, useTheme, Experimental_CssVarsProvider as CssVarsProvider, getInitColorSchemeScript } from "@mui/material"
import CodeIcon from "@mui/icons-material/Code" import CodeIcon from "@mui/icons-material/Code"
import { Link as GatsbyLink } from "gatsby" import { Link as GatsbyLink } from "gatsby"
import { Footer } from "../atoms/Footer" import { Footer } from "../atoms/Footer"
@ -74,27 +74,23 @@ const Layout = ({ pageTitle, preTitle, children }: LayoutProps) => {
) )
} }
const theme = extendTheme({
colorSchemes: {
light: {},
dark: {},
},
typography: {
h1: { fontSize: 48, paddingBottom: 20 },
}
})
const AppLayout = (props: LayoutProps) => { const AppLayout = (props: LayoutProps) => {
const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
const theme = useMemo(
() =>
createTheme({
palette: {
mode: prefersDarkMode ? "dark" : "light",
},
typography: {
h1: { fontSize: 48, paddingBottom: 20 },
}
}),
[prefersDarkMode],
);
return ( return (
<ThemeProvider theme={theme}> <CssVarsProvider theme={theme} defaultMode="system">
<CssBaseline /> {getInitColorSchemeScript({ defaultMode: "system" })}
<CssBaseline enableColorScheme />
<Layout {...props} /> <Layout {...props} />
</ThemeProvider> </CssVarsProvider>
) )
} }