|
|
|
@ -1,5 +1,10 @@ |
|
|
|
|
import React from "react"; |
|
|
|
|
import { getExec, getExecNames, Metadata } from "../../lib/team"; |
|
|
|
|
import { |
|
|
|
|
getExec, |
|
|
|
|
getExecNames, |
|
|
|
|
Metadata, |
|
|
|
|
getMemberImagePath, |
|
|
|
|
} from "../../lib/team"; |
|
|
|
|
import { MDXRemote, MDXRemoteSerializeResult } from "next-mdx-remote"; |
|
|
|
|
import { GetStaticProps } from "next"; |
|
|
|
|
import { Image } from "../../components/Image"; |
|
|
|
@ -7,9 +12,9 @@ import { TeamMemberCard } from "../../components/TeamMemberCard"; |
|
|
|
|
import { TeamMember } from "../../components/TeamMember"; |
|
|
|
|
import { Link } from "../../components/Link"; |
|
|
|
|
import { Bubble } from "../../components/Bubble"; |
|
|
|
|
import programme from "../../content/meet-the-team/programme-committee.json"; |
|
|
|
|
import website from "../../content/meet-the-team/website-committee.json"; |
|
|
|
|
import systems from "../../content/meet-the-team/systems-committee.json"; |
|
|
|
|
import programmeData from "../../content/meet-the-team/programme-committee.json"; |
|
|
|
|
import websiteData from "../../content/meet-the-team/website-committee.json"; |
|
|
|
|
import systemsData from "../../content/meet-the-team/systems-committee.json"; |
|
|
|
|
import styles from "./team.module.css"; |
|
|
|
|
|
|
|
|
|
// TODO: fix hotdog for elections
|
|
|
|
@ -22,9 +27,12 @@ interface SerializedExec { |
|
|
|
|
|
|
|
|
|
interface Props { |
|
|
|
|
execs: SerializedExec[]; |
|
|
|
|
programme: Metadata[]; |
|
|
|
|
website: Metadata[]; |
|
|
|
|
systems: Metadata[]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export default function Team({ execs }: Props) { |
|
|
|
|
export default function Team({ execs, programme, website, systems }: Props) { |
|
|
|
|
return ( |
|
|
|
|
<> |
|
|
|
|
<div className={styles.headerContainer}> |
|
|
|
@ -82,7 +90,7 @@ export default function Team({ execs }: Props) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface MembersProps { |
|
|
|
|
team: Array<Metadata>; |
|
|
|
|
team: Metadata[]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function MembersList(props: MembersProps) { |
|
|
|
@ -95,13 +103,28 @@ function MembersList(props: MembersProps) { |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
async function getMemberImage(team: Omit<Metadata, "image">[]) { |
|
|
|
|
return await Promise.all( |
|
|
|
|
team.map(async (member) => { |
|
|
|
|
const image = await getMemberImagePath(member.name); |
|
|
|
|
return { |
|
|
|
|
...member, |
|
|
|
|
image, |
|
|
|
|
}; |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export const getStaticProps: GetStaticProps<Props> = async () => { |
|
|
|
|
const execNames = await getExecNames(); |
|
|
|
|
const execs = (await Promise.all( |
|
|
|
|
execNames.map((name) => getExec(name)) |
|
|
|
|
)) as SerializedExec[]; |
|
|
|
|
const programme = await getMemberImage(programmeData); |
|
|
|
|
const website = await getMemberImage(websiteData); |
|
|
|
|
const systems = await getMemberImage(systemsData); |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
props: { execs }, |
|
|
|
|
props: { execs, programme, website, systems }, |
|
|
|
|
}; |
|
|
|
|
}; |
|
|
|
|