From 6c5782dd52496dd04cd39ac26c2b5da8267a8c99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Sat, 5 Jun 2021 21:27:01 +0200 Subject: [PATCH] Add SwitchTheme to MyApp --- pages/_app.js | 68 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 12 deletions(-) diff --git a/pages/_app.js b/pages/_app.js index 982a221..99483fa 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -1,24 +1,56 @@ -import React, {useEffect} from 'react' +import React, {useEffect, useMemo, useState} from 'react' import {useRouter} from 'next/router' import PropTypes from 'prop-types' -import {createMuiTheme, ThemeProvider} from '@material-ui/core/styles' +import {createMuiTheme, ThemeProvider, makeStyles} from '@material-ui/core/styles' import CssBaseline from '@material-ui/core/CssBaseline' import {Provider, useSession} from 'next-auth/client' +import {Box, useMediaQuery} from '@material-ui/core' -const darkTheme = createMuiTheme({ - palette: { - type: 'dark', - primary: { - light: '#81c784', - main: '#4caf50', - dark: '#388e3c', - contrastText: '#fff' - } +import SwitchTheme from '../components/switch-theme' + +const useStyles = makeStyles({ + switch: { + position: 'absolute', + right: '1em', + top: '95px', + zIndex: 9990, + cursor: 'pointer' + }, + switchFixed: { + position: 'fixed', + right: '1em', + top: '95px', + zIndex: 9990, + cursor: 'pointer' } }) export default function MyApp(props) { const {Component, pageProps} = props + const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)') + const [darkMode, setDarkMode] = useState(prefersDarkMode) + const [switchFixed, setSwitchFixed] = useState(false) + const classes = useStyles() + + const darkTheme = useMemo(() => createMuiTheme({ + palette: { + type: darkMode ? 'dark' : 'light', + primary: { + light: '#81c784', + main: '#4caf50', + dark: '#388e3c', + contrastText: '#fff' + } + } + }), [darkMode]) + + useEffect(() => { + if (prefersDarkMode) { + setDarkMode(true) + } else { + setDarkMode(false) + } + }, [prefersDarkMode]) useEffect(() => { const jssStyles = document.querySelector('#jss-server-side') @@ -27,10 +59,21 @@ export default function MyApp(props) { } }, []) + useEffect(() => { + if (props.router.pathname.slice(0, 5) === '/teks') { + setSwitchFixed(true) + } else { + setSwitchFixed(false) + } + }, [props]) + return ( + + + {Component.auth ? ( ) : ( @@ -66,7 +109,8 @@ function Auth({children}) { MyApp.propTypes = { Component: PropTypes.elementType.isRequired, - pageProps: PropTypes.object.isRequired + pageProps: PropTypes.object.isRequired, + router: PropTypes.object.isRequired } Auth.propTypes = {