1import { withStyles } from "@material-ui/core/styles";
2import Typography from "@material-ui/core/Typography/Typography";
3import gql from "graphql-tag";
4import React from "react";
5import Author from "../Author";
6import Date from "../Date";
7import TimelineQuery from "./TimelineQuery";
8import Label from "../Label";
9
10const styles = theme => ({
11 main: {
12 maxWidth: 600,
13 margin: "auto",
14 marginTop: theme.spacing.unit * 4
15 },
16 header: {},
17 title: {
18 ...theme.typography.headline
19 },
20 id: {
21 ...theme.typography.subheading,
22 marginLeft: 15
23 },
24 container: {
25 display: "flex",
26 marginBottom: 30
27 },
28 timeline: {
29 width: "70%",
30 marginTop: 20,
31 marginRight: 20
32 },
33 sidebar: {
34 width: "30%"
35 },
36 labelList: {
37 listStyle: "none",
38 padding: 0,
39 margin: 0
40 },
41 label: {
42 margin: "4px 0",
43 "& > *": {
44 display: "block"
45 }
46 }
47});
48
49const Bug = ({ bug, classes }) => (
50 <main className={classes.main}>
51 <div className={classes.header}>
52 <span className={classes.title}>{bug.title}</span>
53 <span className={classes.id}>{bug.humanId}</span>
54
55 <Typography color={"textSecondary"}>
56 <Author author={bug.author} />
57 <span> opened this bug </span>
58 <Date date={bug.createdAt} />
59 </Typography>
60 </div>
61
62 <div className={classes.container}>
63 <div className={classes.timeline}>
64 <TimelineQuery id={bug.id} />
65 </div>
66 <div className={classes.sidebar}>
67 <Typography variant={"subheading"}>Labels</Typography>
68 <ul className={classes.labelList}>
69 {bug.labels.map(l => (
70 <li className={classes.label}>
71 <Label label={l} key={l} />
72 </li>
73 ))}
74 </ul>
75 </div>
76 </div>
77 </main>
78);
79
80Bug.fragment = gql`
81 fragment Bug on Bug {
82 id
83 humanId
84 status
85 title
86 labels
87 createdAt
88 author {
89 email
90 name
91 }
92 }
93`;
94
95export default withStyles(styles)(Bug);