added dark theme
This commit is contained in:
+1
-1
File diff suppressed because one or more lines are too long
+18
-14
@@ -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,26 +23,30 @@ const useStyles = makeStyles((theme) => ({
|
|||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let theme = createMuiTheme({
|
|
||||||
typography: {
|
|
||||||
fontFamily: 'Yeon Sung',
|
|
||||||
transform: 'matrix(1, 0, 0, 1, 0, 0)',
|
|
||||||
// h1: {
|
|
||||||
// // marginLeft: '-.5rem',
|
|
||||||
// paddingLeft: 0,
|
|
||||||
// },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
theme = responsiveFontSizes(theme);
|
|
||||||
|
|
||||||
const White = (props) => {
|
const White = (props) => {
|
||||||
const { children } = props;
|
const { children } = props;
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
|
const [darkMode, setDarkMode] = useState(true);
|
||||||
|
|
||||||
|
let theme = createMuiTheme({
|
||||||
|
typography: {
|
||||||
|
fontFamily: 'Yeon Sung',
|
||||||
|
transform: 'matrix(1, 0, 0, 1, 0, 0)',
|
||||||
|
// h1: {
|
||||||
|
// // marginLeft: '-.5rem',
|
||||||
|
// paddingLeft: 0,
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
palette: {
|
||||||
|
type: darkMode ? 'dark' : 'light',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
theme = responsiveFontSizes(theme);
|
||||||
|
|
||||||
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>
|
||||||
|
|||||||
@@ -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,15 +58,25 @@ 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>
|
||||||
|
|||||||
@@ -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';
|
||||||
Reference in New Issue
Block a user