diff options
Diffstat (limited to 'src/lib/components/Window')
| -rw-r--r-- | src/lib/components/Window/Window.js | 55 | ||||
| -rw-r--r-- | src/lib/components/Window/WindowSurface/WindowSurface.js | 36 | 
2 files changed, 91 insertions, 0 deletions
| diff --git a/src/lib/components/Window/Window.js b/src/lib/components/Window/Window.js new file mode 100644 index 0000000..027213f --- /dev/null +++ b/src/lib/components/Window/Window.js @@ -0,0 +1,55 @@ +import React from 'react'; + +import { Typography, Divider, makeStyles } from '@material-ui/core'; + +import WindowSurface from './WindowSurface/WindowSurface'; + + +const useStyles = makeStyles(theme => ({ +  header: { +    padding: theme.spacing(1, 0, 1, 2), +    background: theme.palette.background.elevation2, +  }, +})); + + +const Window = ({ type, name, children }) => { +  const classes = useStyles(); + +  const size = { +    height: '85vh', +  }; + +  const position = { +    bottom: '3vh', +  }; + +  if (type === 'primary') { +    size.width = '63vw'; +    position.left = '2vw'; +  } else if (type === 'secondary') { +    size.width = '31vw'; +    position.right = '2vw'; +  } else if (type === 'mono') { +    position.left = '2vw'; +    position.right = '2vw'; +  } + +  return ( +    <WindowSurface +      size={size} +      position={position} +    > +      {name && +      <div> +        <Typography variant="h5" className={classes.header}>{name}</Typography> +        <Divider /> +      </div> +      } +      {children} +    </WindowSurface> +  ); +}; + + +export default Window; diff --git a/src/lib/components/Window/WindowSurface/WindowSurface.js b/src/lib/components/Window/WindowSurface/WindowSurface.js new file mode 100644 index 0000000..7859bf6 --- /dev/null +++ b/src/lib/components/Window/WindowSurface/WindowSurface.js @@ -0,0 +1,36 @@ +import React from 'react'; + +import { Paper, makeStyles } from '@material-ui/core'; + + +const useStyles = makeStyles(theme => ({ +  surface: { +    position: 'absolute', +    display: 'flex', +    flexDirection: 'column', +    overflowY: 'auto', +    scrollbarColor: `${theme.palette.secondary.dark} ${theme.palette.secondary.light}`, + +    '& a.MuiTypography-root': { +      color: theme.palette.primary.light, +    }, +  } +})); + + +const WindowSurface = ({ size, position, children }) => { +  const classes = useStyles(); + +  return ( +    <Paper +      variant="outlined" +      style={{...size, ...position}} +      className={classes.surface} +    > +      {children} +    </Paper> +  ) +}; + + +export default WindowSurface; | 
