diff options
Diffstat (limited to 'src/lib/Header')
| -rw-r--r-- | src/lib/Header/Header.tsx | 79 | 
1 files changed, 79 insertions, 0 deletions
| diff --git a/src/lib/Header/Header.tsx b/src/lib/Header/Header.tsx new file mode 100644 index 0000000..233eacb --- /dev/null +++ b/src/lib/Header/Header.tsx @@ -0,0 +1,79 @@ +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; | 
