blob: 2efc744bfbbf4167453eacb5a96b0b8f2be2bc6f (
about) (
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
|
import React from 'react';
import PropTypes from 'prop-types';
import GithubColors from 'github-colors';
import './styles.css';
import moment from 'moment';
import Star from '../../icons/star';
import Fork from '../../icons/fork';
import Issue from "../../icons/issue";
class ListItem extends React.Component {
render() {
const languageColor = GithubColors.get(this.props.repository.language);
return (
<div className="col-12 list-item-container">
<div className="list-item-body">
<div className="repo-header">
<h3>
<a href={ this.props.repository.html_url } rel="noopener noreferrer" target="_blank">
<span className="text-normal">{ this.props.repository.owner.login } / </span>
{ this.props.repository.name }
</a>
</h3>
<p className="repo-meta text-muted small">Built by · <a href={ this.props.repository.owner.html_url } rel="noopener noreferrer" target="_blank">{ this.props.repository.owner.login }</a> · { moment(this.props.repository.created_at).format('MMMM D YYYY') }</p>
</div>
<div className="repo-body">
<p>{ this.props.repository.description || 'No description given.' }</p>
</div>
<div className="repo-footer">
{
this.props.repository.language && (
<span className="d-inline-flex align-items-center mr-3">
<span className="repo-language-color" style={{
backgroundColor: languageColor ? languageColor.color : '#e8e8e8'
}}></span>
<span itemProp="programmingLanguage">
{ this.props.repository.language }
</span>
</span>
)
}
<a className="muted-link d-inline-block mr-3"
href={ `${this.props.repository.html_url}/stargazers` }
rel="noopener noreferrer"
target="_blank">
<Star />
{ this.props.repository.stargazers_count.toLocaleString() }
</a>
<a className="muted-link d-inline-block mr-3"
href={ `${this.props.repository.html_url}/network/members` }
rel="noopener noreferrer"
target="_blank">
<Fork />
{ this.props.repository.forks ? this.props.repository.forks.toLocaleString() : 0 }
</a>
<a className="muted-link d-inline-block mr-3"
href={ `${this.props.repository.html_url}/issues` }
rel="noopener noreferrer"
target="_blank">
<Issue />
{ this.props.repository.open_issues ? this.props.repository.open_issues.toLocaleString() : 0 }
</a>
</div>
</div>
<a href={ this.props.repository.owner.html_url }
target="_blank"
rel="noopener noreferrer"
className="author-link d-none d-lg-block d-xl-block d-md-block">
<img className='author-img'
src={ this.props.repository.owner.avatar_url }
onError={ (e) => {
e.target.src = '/img/logo.svg';
} }
alt={ this.props.repository.owner.login } />
</a>
</div>
);
}
}
ListItem.propTypes = {
repository: PropTypes.object.isRequired
};
export default ListItem;
|