import {
Box,
Circle,
Heading,
Icon,
Link,
SimpleGrid,
Stack,
Text,
VisuallyHidden,
VStack,
Wrap,
WrapItem,
} from '@chakra-ui/react'
import fs from 'fs'
import MDXLayout from 'layouts/mdx'
import NextImage from 'next/image'
import { IoIosGlobe, IoLogoGithub, IoLogoTwitter } from 'react-icons/io'
import { IFormerMember } from 'scripts/get-former-members'
import { Contributor, Member as IMember } from 'src/types/github'
import { t } from 'utils/i18n'
function SocialLink(props: {
icon: React.ElementType
href: string
label: string
}) {
const { icon, href, label } = props
return (
{label}
)
}
function Member(props: { member: IMember }) {
const {
avatar_url: avatarUrl,
bio,
name,
twitter_username: twitterUsername,
blog: websiteUrl,
url,
} = props.member
return (
{name}
{twitterUsername && (
)}
{websiteUrl && (
)}
{bio}
)
}
function FormerMember({ formerMember }: { formerMember: IFormerMember }) {
return (
{formerMember.name}
)
}
interface TeamProps {
members: IMember[]
formerMembers: IFormerMember[]
contributors: Contributor[]
}
function Team({ members, formerMembers, contributors }: TeamProps) {
const memberLogins = members.map(({ login }) => login)
const contributorsWithoutTeam = contributors.filter(
({ login }) => !memberLogins.includes(login),
)
return (
{t('team.message')}
{t('team.core-team')}
{members.map((member) => (
))}
{formerMembers && (
{t('team.former-members')}
{formerMembers.map(
(member) =>
member.name &&
member.githubName && (
),
)}
)}
{t('team.our-sponsors')}
{t('team.organizations')}
{new Array(9).fill('').map((_, idx) => (
))}
{t('team.individuals')}
{t('team.project-contributors')}
{contributorsWithoutTeam.map((contributor) => (
))}
)
}
export async function getStaticProps() {
/**
* Read the profile/bio of each member from `.all-membersrc` file
* to avoid overfetching from Github
*/
const { members } = JSON.parse(fs.readFileSync('.all-membersrc', 'utf-8'))
/**
* Read former members from `.all-former-membersrc` file
* to avoid overfetching from Github
*/
const formerMembers = JSON.parse(
fs.readFileSync('.all-former-membersrc', 'utf-8'),
)
/**
* Read contributors from `.all-contributorsrc` file
* to avoid overfetching from Github
*/
const { contributors } = JSON.parse(
fs.readFileSync('.all-contributorsrc', 'utf-8'),
)
return {
props: {
members,
formerMembers,
contributors,
},
}
}
export default Team