You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
import React, { FC } from 'react'
|
|
import { Link } from 'react-router-dom'
|
|
import classNames from 'classnames'
|
|
import capitalize from 'lodash/capitalize'
|
|
|
|
import { User, GroupMembershipType, ClassDictionary } from 'src/types'
|
|
|
|
interface Props {
|
|
member: User
|
|
}
|
|
|
|
const MemberListItem: FC<Props> = ({ member }) => {
|
|
const tagClass = () => {
|
|
switch (member.membership as GroupMembershipType) {
|
|
case GroupMembershipType.Admin: return 'is-success'
|
|
case GroupMembershipType.Moderator: return 'is-warning'
|
|
case GroupMembershipType.Member: return 'is-info'
|
|
}
|
|
}
|
|
|
|
const tagClassDictionary: ClassDictionary = {
|
|
tag: true,
|
|
[tagClass()]: true,
|
|
}
|
|
|
|
return (
|
|
<article className="media">
|
|
<div className="media-content">
|
|
<div className="content">
|
|
<div className="member">
|
|
<Link to={`/u/${member.id}`} className="is-size-5">{member.name}</Link>
|
|
<br />
|
|
<Link to={`/u/${member.id}`} className="is-size-6 is-red">@{member.id}</Link>
|
|
<br />
|
|
<span className={classNames(tagClassDictionary)}>{capitalize(member.membership as string)}</span>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</article>
|
|
)
|
|
}
|
|
|
|
export default MemberListItem
|