added dark theme

This commit is contained in:
2021-05-25 23:22:26 +02:00
parent 1abc9eeec2
commit b5ffd5fa1e
5 changed files with 130 additions and 25 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+13 -9
View File
@@ -1,4 +1,4 @@
import React from 'react'; import React, { useState } from 'react';
import { Container } from '@material-ui/core'; import { Container } from '@material-ui/core';
import { import {
ThemeProvider, ThemeProvider,
@@ -23,7 +23,12 @@ const useStyles = makeStyles((theme) => ({
}, },
})); }));
let theme = createMuiTheme({ const White = (props) => {
const { children } = props;
const classes = useStyles();
const [darkMode, setDarkMode] = useState(true);
let theme = createMuiTheme({
typography: { typography: {
fontFamily: 'Yeon Sung', fontFamily: 'Yeon Sung',
transform: 'matrix(1, 0, 0, 1, 0, 0)', transform: 'matrix(1, 0, 0, 1, 0, 0)',
@@ -32,17 +37,16 @@ let theme = createMuiTheme({
// paddingLeft: 0, // paddingLeft: 0,
// }, // },
}, },
}); palette: {
theme = responsiveFontSizes(theme); type: darkMode ? 'dark' : 'light',
},
const White = (props) => { });
const { children } = props; theme = responsiveFontSizes(theme);
const classes = useStyles();
return ( return (
<ThemeProvider theme={theme}> <ThemeProvider theme={theme}>
<div id="back-to-top-anchor" /> <div id="back-to-top-anchor" />
<Header /> <Header darkMode={darkMode} setDarkMode={setDarkMode} />
<Container className={classes.container}>{children}</Container> <Container className={classes.container}>{children}</Container>
<Footer /> <Footer />
</ThemeProvider> </ThemeProvider>
+24 -10
View File
@@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import {Link} from 'react-router-dom' import { Link } from 'react-router-dom';
import { import {
AppBar, AppBar,
Toolbar, Toolbar,
@@ -9,22 +9,25 @@ import {
Link as MaterialLink, Link as MaterialLink,
Grid, Grid,
} from '@material-ui/core'; } from '@material-ui/core';
import SwitchToogle from './switchToogle'
import CachedOutlinedIcon from '@material-ui/icons/CachedOutlined'; import CachedOutlinedIcon from '@material-ui/icons/CachedOutlined';
import { makeStyles } from '@material-ui/styles'; import { makeStyles } from '@material-ui/styles';
const useStyles = makeStyles((theme) => ({ const useStyles = makeStyles((theme) => ({
appBar: { appBar: {
position: 'fixed', position: 'fixed',
zIndex: 1301, zIndex: 1301,
backgroundColor: '#FAFAFA', backgroundColor: 'transparent',
}, },
name: { name: {
textTransform: 'uppercase', textTransform: 'uppercase',
letterSpacing: '.5rem', letterSpacing: '.5rem',
}, },
cached: {
color: '#a5d6a7',
},
})); }));
function handleClick(event) { const handleClick = (event) => {
event.preventDefault(); event.preventDefault();
const anchor = (event.target.ownerDocument || document).querySelector( const anchor = (event.target.ownerDocument || document).querySelector(
'#footer' '#footer'
@@ -33,10 +36,11 @@ function handleClick(event) {
if (anchor) { if (anchor) {
anchor.scrollIntoView({ behavior: 'smooth', block: 'center' }); anchor.scrollIntoView({ behavior: 'smooth', block: 'center' });
} }
} };
const Header = () => { const Header = (props) => {
const classes = useStyles(); const classes = useStyles();
const { darkMode, setDarkMode } = props;
return ( return (
<> <>
@@ -54,17 +58,27 @@ const Header = () => {
Dan Dobos Dan Dobos
</Typography> </Typography>
<MaterialLink color="textPrimary" to="#about" onClick={handleClick}> <MaterialLink
color="textPrimary"
to="#about"
onClick={handleClick}
>
About About
</MaterialLink> </MaterialLink>
</Breadcrumbs> </Breadcrumbs>
</Grid> </Grid>
<Grid item> <Grid item >
<Link color="textPrimary" to="/projects"> <Grid container alignItems="center">
<CachedOutlinedIcon/> <SwitchToogle
darkMode={darkMode}
setDarkMode={setDarkMode}
/>
<Link to="/projects">
<CachedOutlinedIcon className={classes.cached} />
</Link> </Link>
</Grid> </Grid>
</Grid> </Grid>
</Grid>
</Toolbar> </Toolbar>
</AppBar> </AppBar>
<Toolbar /> <Toolbar />
@@ -0,0 +1,86 @@
import React from 'react';
import { Switch } from '@material-ui/core';
import { makeStyles } from '@material-ui/styles';
import {Brightness3Icon, WbSunnyIcon} from '@material-ui/icons';
const useStyles = makeStyles((theme) => ({
root: {
width: 80,
height: 48,
padding: 8,
},
switchBase: {
padding: 11,
color: '#ff6a00',
},
thumb: {
width: 26,
height: 26,
backgroundColor: 'transparent',
},
track: {
background: 'linear-gradient(to right, #ee0979, #ff6a00)',
opacity: '1 !important',
borderRadius: 20,
position: 'relative',
'&:before, &:after': {
display: 'inline-block',
position: 'absolute',
top: '50%',
width: '50%',
transform: 'translateY(-50%)',
color: '#fff',
textAlign: 'center',
},
'&:before': {
left: 4,
opacity: 0,
},
'&:after': {
right: 4,
},
},
checked: {
'&$switchBase': {
color: '#185a9d',
transform: 'translateX(32px)',
'&:hover': {
backgroundColor: 'rgba(24,90,257,0.08)',
},
},
'& $thumb': {
backgroundColor: 'transparent',
},
'& + $track': {
background: 'linear-gradient(to right, #43cea2, #185a9d)',
'&:before': {
opacity: 1,
},
'&:after': {
opacity: 0,
},
},
},
}));
const SwitchToogle = (props) => {
const classes = useStyles();
const { darkMode, setDarkMode } = props;
return (
<Switch
disableRipple
checked={darkMode}
onChange={() => setDarkMode(!darkMode)}
classes={{
root: classes.root,
switchBase: classes.switchBase,
thumb: classes.thumb,
track: classes.track,
checked: classes.checked,
}}
/>
);
};
export default SwitchToogle;
@@ -0,0 +1 @@
export { default } from './SwitchToogle';