8 changed files with 111 additions and 46 deletions
@ -1,19 +0,0 @@
@@ -1,19 +0,0 @@
|
||||
import { Avatar, Comment } from 'antd'; |
||||
import React from 'react'; |
||||
import { Follower } from '../interfaces/follower'; |
||||
|
||||
interface Props { |
||||
follower: Follower; |
||||
} |
||||
|
||||
export default function SingleFollower(props: Props) { |
||||
const { follower } = props; |
||||
|
||||
return ( |
||||
<Comment |
||||
author={follower.username} |
||||
avatar={<Avatar src={follower.image} alt="Han Solo" />} |
||||
content={follower.name} |
||||
/> |
||||
); |
||||
} |
@ -1,24 +0,0 @@
@@ -1,24 +0,0 @@
|
||||
import { Pagination } from 'antd'; |
||||
import { Follower } from '../interfaces/follower'; |
||||
import SingleFollower from './Follower'; |
||||
|
||||
interface Props { |
||||
total: number; |
||||
followers: Follower[]; |
||||
} |
||||
|
||||
export default function FollowerCollection(props: Props) { |
||||
const ITEMS_PER_PAGE = 24; |
||||
|
||||
const { followers, total } = props; |
||||
const pages = Math.ceil(total / ITEMS_PER_PAGE); |
||||
|
||||
return ( |
||||
<div> |
||||
{followers.map(follower => ( |
||||
<SingleFollower key={follower.link} follower={follower} /> |
||||
))} |
||||
<Pagination current={1} pageSize={ITEMS_PER_PAGE} total={pages || 1} /> |
||||
</div> |
||||
); |
||||
} |
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
import { Avatar, Col, Row } from 'antd'; |
||||
import React from 'react'; |
||||
import { Follower } from '../../../interfaces/follower'; |
||||
import s from './Followers.module.scss'; |
||||
|
||||
interface Props { |
||||
follower: Follower; |
||||
} |
||||
|
||||
export default function SingleFollower(props: Props) { |
||||
const { follower } = props; |
||||
|
||||
return ( |
||||
<div className={s.follower}> |
||||
<a href={follower.link} target="_blank" rel="noreferrer"> |
||||
<Row wrap={false}> |
||||
<Col span={6}> |
||||
<Avatar src={follower.image} alt="Avatar" className={s.avatar}> |
||||
<img src="/logo" alt="Logo" className={s.placeholder} /> |
||||
</Avatar> |
||||
</Col> |
||||
<Col> |
||||
<Row>{follower.name}</Row> |
||||
<Row className={s.account}>{follower.username}</Row> |
||||
</Col> |
||||
</Row> |
||||
</a> |
||||
</div> |
||||
); |
||||
} |
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
.follower { |
||||
border-color: rgba(0, 0, 0, 0.3); |
||||
border-width: 1px; |
||||
border-style: solid; |
||||
padding: 10px 10px; |
||||
border-radius: 15px; |
||||
height: 75px; |
||||
width: 250px; |
||||
font-size: 0.8rem; |
||||
overflow: hidden; |
||||
|
||||
&:hover { |
||||
border-color: var(--theme-text-link); |
||||
} |
||||
|
||||
.avatar { |
||||
height: 50px; |
||||
width: 50px; |
||||
border-color: rgba(0, 0, 0, 0.3); |
||||
border-width: 1px; |
||||
border-style: solid; |
||||
} |
||||
|
||||
.account { |
||||
color: var(--theme-text-secondary); |
||||
text-overflow: ellipsis; |
||||
} |
||||
|
||||
.placeholder { |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
} |
||||
|
||||
.followers { |
||||
width: 100%; |
||||
} |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
import { Col, Pagination, Row } from 'antd'; |
||||
import { Follower } from '../../../interfaces/follower'; |
||||
import SingleFollower from './Follower'; |
||||
import s from './Followers.module.scss'; |
||||
|
||||
interface Props { |
||||
total: number; |
||||
followers: Follower[]; |
||||
} |
||||
|
||||
export default function FollowerCollection(props: Props) { |
||||
const ITEMS_PER_PAGE = 24; |
||||
|
||||
const { followers, total } = props; |
||||
const pages = Math.ceil(total / ITEMS_PER_PAGE); |
||||
|
||||
const noFollowers = ( |
||||
<div>A message explaining how to follow goes here since there are no followers.</div> |
||||
); |
||||
|
||||
if (followers.length === 0) { |
||||
return noFollowers; |
||||
} |
||||
|
||||
return ( |
||||
<div className={s.followers}> |
||||
<Row wrap gutter={[10, 10]} justify="space-around"> |
||||
{followers.map(follower => ( |
||||
<Col> |
||||
<SingleFollower key={follower.link} follower={follower} /> |
||||
</Col> |
||||
))} |
||||
</Row> |
||||
|
||||
<Pagination current={1} pageSize={ITEMS_PER_PAGE} total={pages || 1} hideOnSinglePage /> |
||||
</div> |
||||
); |
||||
} |
Loading…
Reference in new issue