summaryrefslogtreecommitdiff
path: root/src/components/ClassCard/index.js
blob: 6c782547e670b115e91a2c0a0390ee7b76a534c7 (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import {
  Card,
  CardContent,
  Typography,
  CardActionArea,
  Container,
  Avatar,
  Stack,
  AvatarGroup,
  Tooltip,
} from '@mui/material';

import styles from './styles';

function ClassCard({
  abbreviation,
  title,
  color,
  teachers,
  course,
  layoutType,
  onClick,
}) {
  const {
    cardContainer,
    cardActionArea,
    abbreviationContainer,
    cardContent,
    titleContainer,
    avatar,
    tooltip,
  } = styles[layoutType];
  if (layoutType === 'desktop') {
    return (
      <Card sx={cardContainer}>
        <CardActionArea onClick={() => onClick()} sx={cardActionArea}>
          <Container sx={abbreviationContainer(color)}>
            <h1>{abbreviation}</h1>
          </Container>
          <CardContent sx={cardContent}>
            <Typography
              sx={titleContainer}
              gutterBottom
              variant="h6"
              component="div"
            >
              {title}
            </Typography>
            {teachers && (
              <Stack alignItems="center" direction="row" spacing={1}>
                <AvatarGroup total={teachers.length}>
                  {teachers.map(t => (
                    <Avatar
                      key={t.name}
                      alt={t.name}
                      src={t.avatar}
                      sx={avatar}
                    />
                  ))}
                </AvatarGroup>
                <Tooltip title={teachers.map(t => t.name).join(', ')}>
                  <Typography
                    sx={tooltip}
                    variant="body3"
                    color="text.secondary"
                  >
                    {teachers.map(t => t.name).join(', ')}
                  </Typography>
                </Tooltip>
              </Stack>
            )}
            {course && <Typography variant="body2">{course}</Typography>}
          </CardContent>
        </CardActionArea>
      </Card>
    );
  } else if (layoutType === 'mobile') {
    return (
      <Card sx={cardContainer}>
        <CardActionArea onClick={() => onClick()} sx={cardActionArea}>
          <Container sx={abbreviationContainer(color)}>
            <h1>{abbreviation}</h1>
          </Container>
          <CardContent sx={cardContent}>
            <Typography
              sx={titleContainer}
              gutterBottom
              variant="h6"
              component="div"
            >
              {title}
            </Typography>
            {teachers && (
              <Stack alignItems="center" direction="row" spacing={1}>
                <AvatarGroup total={teachers.length}>
                  {teachers.map(t => (
                    <Avatar
                      key={t.name}
                      alt={t.name}
                      src={t.avatar}
                      sx={avatar}
                    />
                  ))}
                </AvatarGroup>
                <Typography sx={tooltip} variant="body2" color="text.secondary">
                  {teachers.map(t => t.name).join(', ')}
                </Typography>
              </Stack>
            )}
            {course && <Typography variant="body2">{course}</Typography>}
          </CardContent>
        </CardActionArea>
      </Card>
    );
  }
}

export default ClassCard;