1import { Typography } from '@mui/material';
 2import makeStyles from '@mui/styles/makeStyles';
 3
 4import Author from 'src/components/Author';
 5import Date from 'src/components/Date';
 6import Label from 'src/components/Label';
 7
 8import { LabelChangeFragment } from './LabelChangeFragment.generated';
 9
10const useStyles = makeStyles((theme) => ({
11  main: {
12    color: theme.palette.text.secondary,
13    marginLeft: theme.spacing(1) + 40,
14  },
15  author: {
16    fontWeight: 'bold',
17    color: theme.palette.text.secondary,
18  },
19  label: {
20    maxWidth: '50ch',
21    marginLeft: theme.spacing(0.25),
22    marginRight: theme.spacing(0.25),
23  },
24}));
25
26type Props = {
27  op: LabelChangeFragment;
28};
29
30function LabelChange({ op }: Props) {
31  const { added, removed } = op;
32  const classes = useStyles();
33  return (
34    <Typography className={classes.main}>
35      <Author author={op.author} className={classes.author} />
36      {added.length > 0 && <span> added the </span>}
37      {added.map((label, index) => (
38        <Label inline key={index} label={label} className={classes.label} />
39      ))}
40      {added.length > 0 && removed.length > 0 && <span> and</span>}
41      {removed.length > 0 && <span> removed the </span>}
42      {removed.map((label, index) => (
43        <Label inline key={index} label={label} className={classes.label} />
44      ))}
45      <span>
46        {' '}
47        label
48        {added.length + removed.length > 1 && 's'}{' '}
49      </span>
50      <Date date={op.date} />
51    </Typography>
52  );
53}
54
55export default LabelChange;