diff --git a/components/TeamMember.tsx b/components/TeamMember.tsx index 9ff19891..f9a092da 100644 --- a/components/TeamMember.tsx +++ b/components/TeamMember.tsx @@ -1,26 +1,26 @@ import React from "react"; +import { Metadata } from "@/lib/team"; + import { Image } from "./Image"; import styles from "./TeamMember.module.css"; -interface TeamMemberProps { - name: string; - role: string; - image: string; -} - -export const TeamMember: React.FC = ({ - name, - role, - image, -}) => { +export const TeamMember: React.FC = (metadata: Metadata) => { return (
- {`Picture + {`Picture
-
{name}
-
{role}
+
{metadata.name}
+
+ {Object.prototype.hasOwnProperty.call(metadata, "role") + ? metadata.role + : ""} +
); diff --git a/content/team/external-affairs-team.json b/content/team/external-affairs-team.json index 691943e8..afd510bd 100644 --- a/content/team/external-affairs-team.json +++ b/content/team/external-affairs-team.json @@ -1,22 +1,26 @@ [ { - "name": "David Chen", + "name": "Eric Liu", "role": "Team Lead" }, { - "name": "Daniel Kim", - "role": "External Affairs" + "name": "Ernest Wong", + "role": "" }, { - "name": "Eric Liu", - "role": "External Affairs" + "name": "Jason D'Souza", + "role": "" }, { - "name": "Victor Wu", - "role": "External Affairs" + "name": "Oren Leung", + "role": "" }, { - "name": "Wanda Song", - "role": "External Affairs" + "name": "Sameer Fettes", + "role": "" + }, + { + "name": "David Chen", + "role": "Advisor" } -] \ No newline at end of file +] diff --git a/content/team/marketing-team.json b/content/team/marketing-team.json index 7033dce4..ec1fa914 100644 --- a/content/team/marketing-team.json +++ b/content/team/marketing-team.json @@ -1,31 +1,26 @@ [ { - "name": "Dina Orucevic", + "name": "Haley Song", "role": "Team Lead" }, + { + "name": "Amy Lai" + }, + { + "name": "Kshama Patel" + }, + { + "name": "Dina Orucevic", + "role": "Advisor" + }, { "name": "Arjun Amit Athalye", - "role": "Marketing", "image": "/images/team/ArjunAthalye.jpeg" }, { - "name": "Catherine Tao", - "role": "Marketing" + "name": "Joyce Ye" }, { - "name": "Ethan Hong", - "role": "Marketing" - }, - { - "name": "Gurnika Kaur", - "role": "Marketing" - }, - { - "name": "Haley Song", - "role": "Marketing" - }, - { - "name": "Kshama Patel", - "role": "Marketing" + "name": "Rasta Ranjbar" } -] \ No newline at end of file +] diff --git a/lib/team.ts b/lib/team.ts index e2fe9f2d..b4b3d8a5 100644 --- a/lib/team.ts +++ b/lib/team.ts @@ -30,7 +30,7 @@ const orderedExecPositions: string[] = [ export interface Metadata { name: string; - role: string; + role?: string; image: string; } diff --git a/pages/about/team.tsx b/pages/about/team.tsx index 5c2bf065..9613335e 100644 --- a/pages/about/team.tsx +++ b/pages/about/team.tsx @@ -146,7 +146,7 @@ export default function Team({ {execs.map((exec) => { return (
- +
@@ -207,6 +207,25 @@ async function getTeamWithImages(team: TeamMember[]) { ); } +function sortTeam(team: Metadata[]): Metadata[] { + const teamLeads: Metadata[] = []; + const teamMembers: Metadata[] = []; + const teamOthers: Metadata[] = []; + for (const member of team) { + if (!Object.prototype.hasOwnProperty.call(member, "role")) { + teamMembers.push(member); + } else if (member.role === "Team Lead") { + teamLeads.push(member); + } else { + teamOthers.push(member); + } + } + teamLeads.sort((a, b) => a.name.localeCompare(b.name)); + teamMembers.sort((a, b) => a.name.localeCompare(b.name)); + teamOthers.sort((a, b) => a.name.localeCompare(b.name)); + return [...teamLeads, ...teamMembers, ...teamOthers]; +} + export const getStaticProps: GetStaticProps = async () => { const execNamePosPairs = await getExecNamePosPairs(); @@ -216,7 +235,7 @@ export const getStaticProps: GetStaticProps = async () => { ) )) as SerializedExec[]; - const [ + let [ design, discord, events, @@ -240,6 +259,17 @@ export const getStaticProps: GetStaticProps = async () => { getTeamWithImages(terminalData), ]); + design = sortTeam(design); + discord = sortTeam(discord); + events = sortTeam(events); + external = sortTeam(external); + marketing = sortTeam(marketing); + photography = sortTeam(photography); + reps = sortTeam(reps); + website = sortTeam(website); + systems = sortTeam(systems); + terminal = sortTeam(terminal); + return { props: { execs,