import React from "react"; import { getExec, getExecNames, Metadata, getMemberImagePath, } from "../../lib/team"; import { MDXRemote, MDXRemoteSerializeResult } from "next-mdx-remote"; import { GetStaticProps } from "next"; import { Image } from "../../components/Image"; import { TeamMemberCard } from "../../components/TeamMemberCard"; import { TeamMember } from "../../components/TeamMember"; import { Link } from "../../components/Link"; import { Bubble } from "../../components/Bubble"; 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 // change News link in elections to point to News page interface SerializedExec { content: MDXRemoteSerializeResult; metadata: Metadata; } interface Props { execs: SerializedExec[]; programme: Metadata[]; website: Metadata[]; systems: Metadata[]; } export default function Team({ execs, programme, website, systems }: Props) { return ( <>

Meet the Team!

The Executives Programme Committee Website Committee Systems Committee

The Executives

{execs.map((exec) => { return (
); })}

Programme Committee

Website Committee

Systems Committee

Elections

To find out when and where the next elections will be held, keep an eye on on the News.
For details on the elections, read our Constitution
); } interface MembersProps { team: Metadata[]; } function MembersList(props: MembersProps) { return (
{props.team.map((member) => ( ))}
); } async function getMemberImage(team: Omit[]) { return await Promise.all( team.map(async (member) => { const image = await getMemberImagePath(member.name); return { ...member, image, }; }) ); } export const getStaticProps: GetStaticProps = 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, programme, website, systems }, }; };