Redesign and update 'Meet the Team' data (#452)
continuous-integration/drone/push Build is passing
Details
Closes #450. Closes #436. Co-authored-by: Jared He <66887902+jaredjhe@users.noreply.github.com> Reviewed-on: #452 Reviewed-by: Amy <a258wang@csclub.uwaterloo.ca>
|
@ -6,13 +6,13 @@ import styles from "./TeamMember.module.css";
|
|||
|
||||
interface TeamMemberProps {
|
||||
name: string;
|
||||
role: string;
|
||||
role?: string;
|
||||
image: string;
|
||||
}
|
||||
|
||||
export const TeamMember: React.FC<TeamMemberProps> = ({
|
||||
name,
|
||||
role,
|
||||
role = "",
|
||||
image,
|
||||
}) => {
|
||||
return (
|
||||
|
|
|
@ -8,14 +8,14 @@ import styles from "./TeamMemberCard.module.css";
|
|||
|
||||
export interface TeamMemberCardProps {
|
||||
name: string;
|
||||
role: string;
|
||||
role?: string;
|
||||
image: string;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
export function TeamMemberCard({
|
||||
name,
|
||||
role,
|
||||
role = "",
|
||||
image,
|
||||
children,
|
||||
}: TeamMemberCardProps) {
|
||||
|
@ -48,7 +48,12 @@ export function TeamMemberCard({
|
|||
);
|
||||
}
|
||||
|
||||
function TeamMemberInfo({ name, role, image, children }: TeamMemberCardProps) {
|
||||
function TeamMemberInfo({
|
||||
name,
|
||||
role = "",
|
||||
image,
|
||||
children,
|
||||
}: TeamMemberCardProps) {
|
||||
return (
|
||||
<>
|
||||
<div className={styles.picture}>
|
||||
|
@ -69,7 +74,13 @@ interface PopupProps extends TeamMemberCardProps {
|
|||
handleClick: () => void;
|
||||
}
|
||||
|
||||
function ExecPopup({ name, role, image, children, handleClick }: PopupProps) {
|
||||
function ExecPopup({
|
||||
name,
|
||||
role = "",
|
||||
image,
|
||||
children,
|
||||
handleClick,
|
||||
}: PopupProps) {
|
||||
return (
|
||||
<>
|
||||
<div className={styles.popupBackground} onClick={handleClick} />
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
[
|
||||
{
|
||||
"name": "Sat Arora",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Ivy Lei"
|
||||
},
|
||||
{
|
||||
"name": "Govind Varma"
|
||||
},
|
||||
{
|
||||
"name": "Guneet Bola"
|
||||
},
|
||||
{
|
||||
"name": "Mayank Mehra"
|
||||
},
|
||||
{
|
||||
"name": "Olivia Liu"
|
||||
},
|
||||
{
|
||||
"name": "Colby Wang"
|
||||
},
|
||||
{
|
||||
"name": "Harshitha Durai Babu",
|
||||
"image": "/images/team/HarshithaDurai.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Amy Luo",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Juthika Hoque",
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
|
@ -1,18 +1,21 @@
|
|||
[
|
||||
{
|
||||
"name": "Jenny Zhang",
|
||||
"role": "Team Lead"
|
||||
"name": "Jenny Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Vivian Guo",
|
||||
"role": "Team Lead"
|
||||
"name": "Alice Li"
|
||||
},
|
||||
{
|
||||
"name": "Rachel Ma",
|
||||
"role": "Design"
|
||||
"name": "Rachel Ma"
|
||||
},
|
||||
{
|
||||
"name": "Aaryan Shroff",
|
||||
"role": "Design"
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Joyce Ye"
|
||||
},
|
||||
{
|
||||
"name": "Jessica Chan"
|
||||
}
|
||||
]
|
|
@ -1,39 +1,50 @@
|
|||
[
|
||||
{
|
||||
"name": "Andy Wang",
|
||||
"name": "Mark Chen",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Alex Zhang",
|
||||
"role": "Developer"
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Allen Qin Lu",
|
||||
"role": "Developer",
|
||||
"image": "/images/team/AllenLu.png"
|
||||
"name": "Allen Lu"
|
||||
},
|
||||
{
|
||||
"name": "Chris Xie",
|
||||
"role": "Developer"
|
||||
"name": "Andrew Wang"
|
||||
},
|
||||
{
|
||||
"name": "Edwin Yang",
|
||||
"role": "Developer"
|
||||
"name": "Edwin Yi-Jan Yang",
|
||||
"image": "/images/team/EdwinYang.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Laura Nguyen",
|
||||
"role": "Developer"
|
||||
"name": "Elaine Han"
|
||||
},
|
||||
{
|
||||
"name": "Marcus Chan",
|
||||
"role": "Developer"
|
||||
"name": "Laura Nguyen"
|
||||
},
|
||||
{
|
||||
"name": "Mark Chen",
|
||||
"role": "Developer"
|
||||
"name": "Marcus Chan"
|
||||
},
|
||||
{
|
||||
"name": "Victor Zheng",
|
||||
"role": "Developer"
|
||||
"name": "Victor Zheng"
|
||||
},
|
||||
{
|
||||
"name": "Howe Wang"
|
||||
},
|
||||
{
|
||||
"name": "Daniel Jemin Kim",
|
||||
"image": "/images/team/DanielKim.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Andy Li"
|
||||
},
|
||||
{
|
||||
"name": "Gen Nishiwaki"
|
||||
},
|
||||
|
||||
{
|
||||
"name": "Charles Zhang",
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -1,75 +1,44 @@
|
|||
[
|
||||
{
|
||||
"name": "Eden Chan",
|
||||
"name": "Bonnie Peng",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Eric Huang",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Adele Chen",
|
||||
"role": "Events"
|
||||
},
|
||||
{
|
||||
"name": "Amya Singhal",
|
||||
"role": "Events"
|
||||
},
|
||||
{
|
||||
"name": "Anna Wang",
|
||||
"role": "Events"
|
||||
},
|
||||
{
|
||||
"name": "Catherine Wan",
|
||||
"role": "Events"
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Diana Brebeanu",
|
||||
"role": "Events"
|
||||
"name": "Ethan Hong"
|
||||
},
|
||||
{
|
||||
"name": "Elaine Han",
|
||||
"role": "Events"
|
||||
"name": "Naman Chhawchharia"
|
||||
},
|
||||
{
|
||||
"name": "Jonathan Cui",
|
||||
"role": "Events"
|
||||
"name": "Diana Brebeanu"
|
||||
},
|
||||
{
|
||||
"name": "Kenson Hui",
|
||||
"role": "Events"
|
||||
"name": "Stephanie Xu"
|
||||
},
|
||||
{
|
||||
"name": "Mabel Kwok",
|
||||
"role": "Events"
|
||||
"name": "Alan Wang"
|
||||
},
|
||||
{
|
||||
"name": "Mashrur Chowdhury",
|
||||
"role": "Events"
|
||||
"name": "Freya Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Matthew Wang",
|
||||
"role": "Events"
|
||||
"name": "Siting Ban"
|
||||
},
|
||||
{
|
||||
"name": "Naman Chhawchharia",
|
||||
"role": "Events"
|
||||
"name": "Keane Moraes"
|
||||
},
|
||||
{
|
||||
"name": "Riddhi Bajaj",
|
||||
"role": "Events"
|
||||
"name": "Celine Chung"
|
||||
},
|
||||
{
|
||||
"name": "Santiago Montemayor Gomez",
|
||||
"role": "Events",
|
||||
"image": "/images/team/SantiagoMontemayor.jpg"
|
||||
"name": "Jenn Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Tommy Jiang",
|
||||
"role": "Events"
|
||||
},
|
||||
{
|
||||
"name": "William Tran",
|
||||
"role": "Events"
|
||||
"name": "Eric Huang",
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -3,4 +3,4 @@ name: Raymond Li
|
|||
role: Systems Administrator
|
||||
---
|
||||
|
||||
Hey there! I'm [Raymond Li](https://raymond.li). I'm on co-op after my 2B term of CS. As sysadmin, I lead syscom and termcom in maintaining all the club infrastructure, including our [machines](https://wiki.csclub.uwaterloo.ca/Machine_List), [mirror](https://mirror.csclub.uwaterloo.ca/stats), [wiki](https://wiki.csclub.uwaterloo.ca), [email service](https://mail.csclub.uwaterloo.ca), [Gitea instance](https://git.csclub.uwaterloo.ca), [Mattermost instance](https://mattermost.csclub.uwaterloo.ca), [TheLounge instance](https://chat.csclub.uwaterloo.ca), and much much more. Major projects I've got planned this term include setting up NextCloud and our own self-hosted URL shortener at csclub.ca! In my spare time, I like to code, ski, and play chess and violin.<br />#btwiusearch (at least until [Linux expires in 2038](https://youtu.be/dQw4w9WgXcQ))
|
||||
Hey there! I'm [Raymond Li](https://raymond.li). I'm on co-op after my 2B term of CS. As sysadmin, I lead [syscom](https://csclub.uwaterloo.ca/about/team/#system) and [termcom](https://csclub.uwaterloo.ca/about/team/#terminal) in maintaining all the club infrastructure, including our [machines](https://wiki.csclub.uwaterloo.ca/Machine_List), [mirror](https://mirror.csclub.uwaterloo.ca/stats), [wiki](https://wiki.csclub.uwaterloo.ca), [email service](https://mail.csclub.uwaterloo.ca), [Gitea instance](https://git.csclub.uwaterloo.ca), [Mattermost instance](https://mattermost.csclub.uwaterloo.ca), [TheLounge instance](https://chat.csclub.uwaterloo.ca), and much much more. Major projects I've got planned this term include setting up NextCloud and our own self-hosted URL shortener at csclub.ca! In my spare time, I like to code, ski, and play chess and violin.<br />#btwiusearch (at least until [Linux expires in 2038](https://youtu.be/dQw4w9WgXcQ))
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
[
|
||||
{
|
||||
"name": "David Chen",
|
||||
"name": "Eric Liu",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Daniel Kim",
|
||||
"role": "External Affairs"
|
||||
"name": "David Chen",
|
||||
"role": "Advisor"
|
||||
},
|
||||
{
|
||||
"name": "Eric Liu",
|
||||
"role": "External Affairs"
|
||||
"name": "Ernest Wong"
|
||||
},
|
||||
{
|
||||
"name": "Victor Wu",
|
||||
"role": "External Affairs"
|
||||
"name": "Jason D'Souza"
|
||||
},
|
||||
{
|
||||
"name": "Wanda Song",
|
||||
"role": "External Affairs"
|
||||
"name": "Oren Leung"
|
||||
},
|
||||
{
|
||||
"name": "Sameer Fettes"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
[
|
||||
{
|
||||
"name": "Bonnie Peng",
|
||||
"name": "Annie Zhang",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Annie Zhang",
|
||||
"role": "Photographer"
|
||||
"name": "Ethan Hong"
|
||||
},
|
||||
{
|
||||
"name": "Calvin Zhong",
|
||||
"role": "Photographer"
|
||||
"name": "Bonnie Peng"
|
||||
},
|
||||
{
|
||||
"name": "Jesse Liu",
|
||||
"role": "Photographer"
|
||||
"name": "Matthew Wang"
|
||||
},
|
||||
{
|
||||
"name": "Bryan Wang"
|
||||
}
|
||||
]
|
|
@ -1,42 +0,0 @@
|
|||
[
|
||||
{
|
||||
"name": "Amy Luo",
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Govind Varma",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Guneet Bola",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Ivy Lei",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Jasmine Bal",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Mayank Mehra",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Olivia Liu",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Sat Arora",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Star Xie",
|
||||
"role": "Representative"
|
||||
},
|
||||
{
|
||||
"name": "Tracy Dong",
|
||||
"role": "Representative"
|
||||
}
|
||||
]
|
|
@ -1,24 +1,28 @@
|
|||
[
|
||||
{
|
||||
"name": "Raymond Li",
|
||||
"role": "Sysadmin"
|
||||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Max Erenberg",
|
||||
"role": "Alumni"
|
||||
},
|
||||
{
|
||||
"name": "Andrew Wang"
|
||||
},
|
||||
{
|
||||
"name": "Rio Liu"
|
||||
},
|
||||
{
|
||||
"name": "Amin Bandali",
|
||||
"role": "Alumni"
|
||||
},
|
||||
{
|
||||
"name": "Andrew Wang",
|
||||
"role": "",
|
||||
"image": "/images/team/AndrewWang-Syscom.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Anthony Brennan",
|
||||
"role": "Alumni"
|
||||
},
|
||||
{
|
||||
"name": "Edwin Zhang",
|
||||
"role": "Alumni"
|
||||
"name": "Edwin Zhang"
|
||||
},
|
||||
{
|
||||
"name": "Elana Hashman",
|
||||
|
@ -28,14 +32,6 @@
|
|||
"name": "Jennifer Zhou",
|
||||
"role": "Alumni"
|
||||
},
|
||||
{
|
||||
"name": "Max Erenberg",
|
||||
"role": ""
|
||||
},
|
||||
{
|
||||
"name": "Rio Liu",
|
||||
"role": ""
|
||||
},
|
||||
{
|
||||
"name": "Zachary Seguin",
|
||||
"role": "Alumni"
|
||||
|
|
|
@ -1,22 +1,29 @@
|
|||
[
|
||||
{
|
||||
"name": "Daniel Liu",
|
||||
"role": ""
|
||||
"name": "Yiao Shen"
|
||||
},
|
||||
{
|
||||
"name": "David Hui",
|
||||
"role": ""
|
||||
"name": "Devin Lin"
|
||||
},
|
||||
{
|
||||
"name": "Devin Lin",
|
||||
"role": ""
|
||||
"name": "Seshan Ravikumar"
|
||||
},
|
||||
{
|
||||
"name": "Joseph Wang",
|
||||
"role": ""
|
||||
"name": "Daniel Liu"
|
||||
},
|
||||
{
|
||||
"name": "Seshan Ravikumar",
|
||||
"role": ""
|
||||
"name": "Joseph Wang"
|
||||
},
|
||||
{
|
||||
"name": "David Hui"
|
||||
},
|
||||
{
|
||||
"name": "Rahul Tandon"
|
||||
},
|
||||
{
|
||||
"name": "Justin Toft"
|
||||
},
|
||||
{
|
||||
"name": "Patrick Luo"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
|
@ -8,23 +8,19 @@
|
|||
"role": "Team Lead"
|
||||
},
|
||||
{
|
||||
"name": "Beihao Zhou",
|
||||
"role": "Developer"
|
||||
"name": "Beihao Zhou"
|
||||
},
|
||||
{
|
||||
"name": "Emily Chiu",
|
||||
"role": "Developer"
|
||||
"name": "Emily Chiu"
|
||||
},
|
||||
{
|
||||
"name": "Jared He",
|
||||
"role": "Developer"
|
||||
"name": "Jared He"
|
||||
},
|
||||
{
|
||||
"name": "Shahan NedaDahandeh",
|
||||
"role": "Developer"
|
||||
"name": "Shahan NedaDahandeh"
|
||||
},
|
||||
{
|
||||
"name": "Aditya Thakral",
|
||||
"role": "Alumni"
|
||||
"role": "Advisor"
|
||||
}
|
||||
]
|
||||
|
|
Before Width: | Height: | Size: 323 KiB |
Before Width: | Height: | Size: 665 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 907 KiB After Width: | Height: | Size: 907 KiB |
After Width: | Height: | Size: 813 KiB |
Before Width: | Height: | Size: 426 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 5.6 MiB |
Before Width: | Height: | Size: 196 KiB |
Before Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 218 KiB |
After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 968 KiB |
After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 300 KiB |
After Width: | Height: | Size: 221 KiB |
Before Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 524 KiB |
Before Width: | Height: | Size: 461 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 928 KiB |
After Width: | Height: | Size: 657 KiB |
Before Width: | Height: | Size: 1012 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 745 KiB |
Before Width: | Height: | Size: 611 KiB |
Before Width: | Height: | Size: 341 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 223 KiB |
After Width: | Height: | Size: 330 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 328 KiB |
Before Width: | Height: | Size: 348 KiB |
Before Width: | Height: | Size: 738 KiB |
Before Width: | Height: | Size: 320 KiB |
|
@ -30,7 +30,7 @@ const orderedExecPositions: string[] = [
|
|||
|
||||
export interface Metadata {
|
||||
name: string;
|
||||
role: string;
|
||||
role?: string;
|
||||
image: string;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,13 +16,13 @@ import {
|
|||
getMemberImagePath,
|
||||
} from "@/lib/team";
|
||||
|
||||
import coordinatorsData from "../../content/team/coordinators-team.json";
|
||||
import designData from "../../content/team/design-team.json";
|
||||
import discordData from "../../content/team/discord-team.json";
|
||||
import eventsData from "../../content/team/events-team.json";
|
||||
import externalData from "../../content/team/external-affairs-team.json";
|
||||
import marketingData from "../../content/team/marketing-team.json";
|
||||
import photographyData from "../../content/team/photography-team.json";
|
||||
import repsData from "../../content/team/representative-team.json";
|
||||
import systemsData from "../../content/team/systems-committee.json";
|
||||
import terminalData from "../../content/team/terminal-committee.json";
|
||||
import webData from "../../content/team/web-committee.json";
|
||||
|
@ -36,13 +36,13 @@ interface SerializedExec {
|
|||
|
||||
interface Props {
|
||||
execs: SerializedExec[];
|
||||
coordinators: Metadata[];
|
||||
design: Metadata[];
|
||||
discord: Metadata[];
|
||||
events: Metadata[];
|
||||
external: Metadata[];
|
||||
marketing: Metadata[];
|
||||
photography: Metadata[];
|
||||
reps: Metadata[];
|
||||
website: Metadata[];
|
||||
systems: Metadata[];
|
||||
terminal: Metadata[];
|
||||
|
@ -50,18 +50,23 @@ interface Props {
|
|||
|
||||
export default function Team({
|
||||
execs,
|
||||
coordinators,
|
||||
design,
|
||||
discord,
|
||||
events,
|
||||
external,
|
||||
marketing,
|
||||
photography,
|
||||
reps,
|
||||
website,
|
||||
systems,
|
||||
terminal,
|
||||
}: Props) {
|
||||
const teams = [
|
||||
{
|
||||
id: "coordinators",
|
||||
name: "Community Coordinators",
|
||||
members: coordinators,
|
||||
},
|
||||
{
|
||||
id: "design",
|
||||
name: "Design Team",
|
||||
|
@ -92,14 +97,9 @@ export default function Team({
|
|||
name: "Photography Team",
|
||||
members: photography,
|
||||
},
|
||||
{
|
||||
id: "reps",
|
||||
name: "Class Representatives",
|
||||
members: reps,
|
||||
},
|
||||
{
|
||||
id: "website",
|
||||
name: "Website Committee",
|
||||
name: "Web Committee",
|
||||
members: website,
|
||||
},
|
||||
{
|
||||
|
@ -122,14 +122,14 @@ export default function Team({
|
|||
<h1 className={styles.header}>Meet the Team!</h1>
|
||||
<div className={styles.nav}>
|
||||
<Link href="#execs">The Executives</Link>
|
||||
<Link href="#coordinators">Community Coordinators</Link>
|
||||
<Link href="#design">Design</Link>
|
||||
<Link href="#discord">Discord</Link>
|
||||
<Link href="#events">Events</Link>
|
||||
<Link href="#external">External Affairs</Link>
|
||||
<Link href="#marketing">Marketing</Link>
|
||||
<Link href="#photography">Photography</Link>
|
||||
<Link href="#reps">Class Representatives</Link>
|
||||
<Link href="#website">Website Committee</Link>
|
||||
<Link href="#website">Web Committee</Link>
|
||||
<Link href="#system">Systems Committee</Link>
|
||||
<Link href="#terminal">Terminal Committee</Link>
|
||||
</div>
|
||||
|
@ -207,6 +207,22 @@ async function getTeamWithImages(team: TeamMember[]) {
|
|||
);
|
||||
}
|
||||
|
||||
function memberComparer(a: Metadata, b: Metadata) {
|
||||
return a.name.localeCompare(b.name);
|
||||
}
|
||||
|
||||
function sortTeam(team: Metadata[]): Metadata[] {
|
||||
const leads = team
|
||||
.filter(({ role }) => role === "Team Lead")
|
||||
.sort(memberComparer);
|
||||
const general = team.filter(({ role }) => !role).sort(memberComparer);
|
||||
const others = team
|
||||
.filter(({ role }) => !!role && role !== "Team Lead")
|
||||
.sort(memberComparer);
|
||||
|
||||
return [...leads, ...general, ...others];
|
||||
}
|
||||
|
||||
export const getStaticProps: GetStaticProps<Props> = async () => {
|
||||
const execNamePosPairs = await getExecNamePosPairs();
|
||||
|
||||
|
@ -216,40 +232,51 @@ export const getStaticProps: GetStaticProps<Props> = async () => {
|
|||
)
|
||||
)) as SerializedExec[];
|
||||
|
||||
const [
|
||||
let [
|
||||
coordinators,
|
||||
design,
|
||||
discord,
|
||||
events,
|
||||
external,
|
||||
marketing,
|
||||
photography,
|
||||
reps,
|
||||
website,
|
||||
systems,
|
||||
terminal,
|
||||
] = await Promise.all([
|
||||
getTeamWithImages(coordinatorsData),
|
||||
getTeamWithImages(designData),
|
||||
getTeamWithImages(discordData),
|
||||
getTeamWithImages(eventsData),
|
||||
getTeamWithImages(externalData),
|
||||
getTeamWithImages(marketingData),
|
||||
getTeamWithImages(photographyData),
|
||||
getTeamWithImages(repsData),
|
||||
getTeamWithImages(webData),
|
||||
getTeamWithImages(systemsData),
|
||||
getTeamWithImages(terminalData),
|
||||
]);
|
||||
|
||||
coordinators = sortTeam(coordinators);
|
||||
design = sortTeam(design);
|
||||
discord = sortTeam(discord);
|
||||
events = sortTeam(events);
|
||||
external = sortTeam(external);
|
||||
marketing = sortTeam(marketing);
|
||||
photography = sortTeam(photography);
|
||||
website = sortTeam(website);
|
||||
systems = sortTeam(systems);
|
||||
terminal = sortTeam(terminal);
|
||||
|
||||
return {
|
||||
props: {
|
||||
execs,
|
||||
coordinators,
|
||||
design,
|
||||
discord,
|
||||
events,
|
||||
external,
|
||||
marketing,
|
||||
photography,
|
||||
reps,
|
||||
website,
|
||||
systems,
|
||||
terminal,
|
||||
|
|