aboutsummaryrefslogtreecommitdiff
path: root/src/demo/Header/Header.tsx
diff options
context:
space:
mode:
authorEugene Sokolov <eug-vs@keemail.me>2020-10-10 14:11:42 +0300
committerGitHub <noreply@github.com>2020-10-10 14:11:42 +0300
commit2f96d3e26f433a57af26ecf2ec34b9fec4183d71 (patch)
treea8c2b1daf5170923f9e7ccb46f098e30d51e8a08 /src/demo/Header/Header.tsx
parentc33c6a521325adafb250124d2814423b3a4187b5 (diff)
parent36c0a6b3e7ac72e4e787d5def6b0cc03eae7db6c (diff)
downloadreact-benzin-2f96d3e26f433a57af26ecf2ec34b9fec4183d71.tar.gz
Merge pull request #15 from eug-vs/refactor/orientation
Revise BENZIN orientation
Diffstat (limited to 'src/demo/Header/Header.tsx')
-rw-r--r--src/demo/Header/Header.tsx81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/demo/Header/Header.tsx b/src/demo/Header/Header.tsx
new file mode 100644
index 0000000..58be989
--- /dev/null
+++ b/src/demo/Header/Header.tsx
@@ -0,0 +1,81 @@
+import React from 'react';
+
+import {
+ AppBar,
+ Tabs,
+ Tab,
+ Typography,
+ Toolbar,
+} from '@material-ui/core';
+
+import { makeStyles } from '@material-ui/core/styles';
+
+
+interface PropTypes {
+ logo: {
+ icon: React.ReactNode;
+ title: string;
+ };
+ contents: {
+ [key: string]: React.ReactNode | null;
+ };
+ page: string;
+ setPage: (newPage: string) => void;
+}
+
+const useStyles = makeStyles(theme => ({
+ root: {
+ background: theme.palette.background.elevation2,
+ color: theme.palette.text.primary,
+ paddingLeft: theme.spacing(3),
+ },
+ logo: {
+ margin: theme.spacing(0, 3, 0, 1),
+ },
+ tab: {
+ '& .MuiTab-wrapper': {
+ padding: theme.spacing(2),
+ flexDirection: 'row',
+ fontSize: '0.8125rem',
+ '& svg': {
+ marginRight: theme.spacing(1),
+ marginBottom: '0 !important',
+ },
+ },
+ },
+}));
+
+
+const Header: React.FC<PropTypes> = ({
+ logo, contents, page, setPage,
+}) => {
+ const classes = useStyles();
+
+ const handleChange = (event: React.ChangeEvent<{}>, newPage: string): void => {
+ setPage(newPage);
+ };
+
+ return (
+ <AppBar position="sticky" className={classes.root}>
+ <Toolbar>
+ {logo.icon}
+ <Typography variant="h5" className={classes.logo} color="primary">
+ {logo.title}
+ </Typography>
+ <Tabs onChange={handleChange} value={page}>
+ {contents && Object.keys(contents).map((item: string) => (
+ <Tab
+ label={item}
+ icon={contents[item] as JSX.Element}
+ value={item}
+ className={classes.tab}
+ key={item}
+ />
+ ))}
+ </Tabs>
+ </Toolbar>
+ </AppBar>
+ );
+};
+
+export default Header;