dwysokinski.me/src/components/Layout/Layout.js

50 lines
1.0 KiB
JavaScript
Raw Normal View History

2021-01-17 08:31:50 +00:00
import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import classnames from 'classnames';
2020-07-13 09:45:24 +00:00
2021-01-17 08:31:50 +00:00
import { makeStyles } from '@material-ui/core/styles';
import { CssBaseline } from '@material-ui/core';
import Navbar from './Navbar';
import Footer from './Footer';
2020-07-13 12:02:40 +00:00
const useStyles = makeStyles(theme => ({
main: {
2021-01-17 08:31:50 +00:00
minHeight: 'calc(100vh - 200px)',
2020-07-13 12:02:40 +00:00
paddingTop: theme.spacing(2),
paddingBottom: theme.spacing(3),
},
2021-01-17 08:31:50 +00:00
}));
2020-07-13 12:02:40 +00:00
const Layout = ({
children,
className,
navbarProps,
showNavbar,
showFooter,
}) => {
2021-01-17 08:31:50 +00:00
const classes = useStyles();
2020-07-13 09:45:24 +00:00
return (
<Fragment>
{showNavbar && <Navbar {...navbarProps} />}
<main className={classnames(className, classes.main)}>{children}</main>
{showFooter && <Footer />}
2020-07-13 09:45:24 +00:00
<CssBaseline />
</Fragment>
2021-01-17 08:31:50 +00:00
);
};
2020-07-13 09:45:24 +00:00
2020-07-13 12:02:40 +00:00
Layout.defaultProps = {
navbarProps: {},
showNavbar: true,
showFooter: true,
2021-01-17 08:31:50 +00:00
};
2020-07-13 12:02:40 +00:00
2020-07-13 09:45:24 +00:00
Layout.propTypes = {
children: PropTypes.node.isRequired,
showNavbar: PropTypes.bool.isRequired,
showFooter: PropTypes.bool.isRequired,
2021-01-17 08:31:50 +00:00
};
2020-07-13 09:45:24 +00:00
2021-01-17 08:31:50 +00:00
export default Layout;