aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Window/Window.tsx
blob: beaa6729fe62ae34253cb0ac3857b2707b989347 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import React from 'react';

import { Typography, Divider, makeStyles } from '@material-ui/core';

import WindowSurface from './WindowSurface';
import { SurfaceSize, SurfacePosition } from './types';


interface PropTypes {
  type: 'primary' | 'secondary' | 'mono';
  name?: string;
}


const useStyles = makeStyles(theme => ({
  header: {
    padding: theme.spacing(1, 0, 1, 2),
    background: theme.palette.background.elevation2,
  },
}));


const Window: React.FC<PropTypes> = ({ type, name, children }) => {
  const classes = useStyles();

  const size: SurfaceSize = {
    height: '85vh',
  };

  const position: SurfacePosition = {
    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;