diff --git a/.vscode/settings.json b/.vscode/settings.json index ac678f36..4867b9a0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,9 +4,7 @@ "eslint.codeActionsOnSave.mode": "all", "[css]": { "editor.suggest.insertMode": "replace", - "gitlens.codeLens.scopes": [ - "document" - ], + "gitlens.codeLens.scopes": ["document"], "editor.formatOnSave": true }, "[javascript]": { @@ -39,8 +37,9 @@ "node_modules": true }, "editor.tabSize": 2, + "files.eol": "\n", "[markdown]": { "editor.wordWrap": "on", "editor.quickSuggestions": false } -} \ No newline at end of file +} diff --git a/components/Bubble.tsx b/components/Bubble.tsx index da86dc3d..54691079 100644 --- a/components/Bubble.tsx +++ b/components/Bubble.tsx @@ -6,7 +6,7 @@ import { DefaultLayout } from "./DefaultLayout"; import styles from "./Bubble.module.css"; -export default function Bubble(props: { children: React.ReactNode }) { +export function Bubble(props: { children: React.ReactNode }) { return (
diff --git a/components/TeamMember.module.css b/components/TeamMember.module.css index 12df17b9..8fcecc92 100644 --- a/components/TeamMember.module.css +++ b/components/TeamMember.module.css @@ -9,6 +9,7 @@ width: 100%; border-radius: 50%; margin: 0 auto; + object-fit: cover; } .caption { @@ -25,3 +26,15 @@ font-weight: 600; color: var(--primary-heading); } + +@media only screen and (max-width: calc(768rem / 16)) { + .img { + width: 100%; + } + + .caption { + text-align: center; + font-size: calc(14rem / 16); + margin-top: 1rem; + } +} diff --git a/components/TeamMember.tsx b/components/TeamMember.tsx index eeea51ca..9ff19891 100644 --- a/components/TeamMember.tsx +++ b/components/TeamMember.tsx @@ -7,7 +7,7 @@ import styles from "./TeamMember.module.css"; interface TeamMemberProps { name: string; role: string; - image?: string; + image: string; } export const TeamMember: React.FC = ({ @@ -17,11 +17,7 @@ export const TeamMember: React.FC = ({ }) => { return (
- {`Picture + {`Picture
{name}
{role}
diff --git a/components/TeamMemberCard.module.css b/components/TeamMemberCard.module.css index 439cf9f0..68b0aff8 100644 --- a/components/TeamMemberCard.module.css +++ b/components/TeamMemberCard.module.css @@ -38,6 +38,7 @@ grid-area: role; margin: 0; + color: var(--primary-heading); font-size: calc(24rem / 16); line-height: calc(40 / 24); font-weight: 600; @@ -51,39 +52,110 @@ margin-top: 0; } -/* TODO: Use the correct mobile styles from figma -@media only screen and (max-width: calc(375rem / 16)) { - .card { - grid-template-columns: calc(70rem / 16) auto; - grid-template-rows: auto calc(calc(14rem / 16) * 1.5 + calc(12rem / 16)) auto; - grid-template-areas: - "picture name" - "picture role" - "description description"; - column-gap: 1.4375rem; - align-items: end; +/* Popup */ - max-width: calc(190rem / 16); +@keyframes popup { + 0% { + transform: scale(0.4) translate(0, -50%); + } + 100% { + transform: scale(1) translate(0, -50%); + } +} + +@keyframes revealBg { + 0% { + opacity: 0; + } + 100% { + opacity: 100%; + } +} + +.popupBackground { + position: fixed; + z-index: 11; + background-color: var(--navbar-page-overlay); + width: 100%; + height: 100%; + top: 0; + left: 0; + animation: revealBg 0.2s forwards; +} + +.popupContainer { + position: fixed; + display: flex; + z-index: 12; + flex-direction: column; + background-color: var(--secondary-background); + padding: calc(20rem / 16) calc(40rem / 16); + left: 0; + top: 50%; + animation: popup 0.7s forwards; +} + +.closeBtn { + align-self: flex-end; + /* reset default button styling */ + width: min-content; + background: transparent; + border: 0px solid transparent; + padding: 0; + font-family: inherit; + line-height: inherit; +} + +.popupContent { + display: flex; + flex-direction: column; + align-items: center; +} + +.popupImage { + width: 100%; +} + +.popupName { + color: var(--primary-accent); + margin: calc(24rem / 16) 0 0 0; + font-size: calc(18rem / 16); + font-weight: 600; +} + +.popupRole { + color: var(--primary-heading); + margin: 0 0 1rem 0; + text-align: center; + font-size: calc(18rem / 16); + font-weight: 600; +} + +.popupDescription { + font-size: calc(14rem / 16); +} + +@media only screen and (max-width: calc(768rem / 16)) { + .card { + display: flex; + flex-direction: column; + align-items: center; + max-width: calc(135rem / 16); + margin: 0; } - .picture { - max-width: calc(70rem / 16); - max-height: calc(70rem / 16); + .name { + margin-top: calc(24rem / 16); + font-weight: 700; } .name, - .role, - .description { - line-height: 1.5; - } - .role { - margin-bottom: calc(12rem / 16); + text-align: center; + font-size: calc(14rem / 16); } .description { - justify-self: top; - margin-top: calc(12rem / 16); - margin-left: calc(12rem / 16); + display: none; } -} */ +} diff --git a/components/TeamMemberCard.tsx b/components/TeamMemberCard.tsx index c0ec84fe..046ed39c 100644 --- a/components/TeamMemberCard.tsx +++ b/components/TeamMemberCard.tsx @@ -1,29 +1,98 @@ -import React from "react"; +import React, { useState } from "react"; + +import { useWindowDimension } from "@/hooks/useWindowDimension"; import { Image } from "./Image"; import styles from "./TeamMemberCard.module.css"; -interface TeamMemberCardProps { +export interface TeamMemberCardProps { name: string; role: string; - image?: string; // path to image of person, relative to public directory + image: string; children: React.ReactNode; } -export function TeamMemberCard(props: TeamMemberCardProps) { +interface TeamMemberInfoProps extends TeamMemberCardProps { + isPopup?: boolean; +} + +function TeamMemberInfo({ + name, + role, + image, + children, + isPopup = false, +}: TeamMemberInfoProps) { return ( -
+ <>
{`Picture
-

{props.name}

-

{props.role}

-
{props.children}
-
+

{name}

+

{role}

+
+ {children} +
+ + ); +} + +export function TeamMemberCard({ + name, + role, + image, + children, +}: TeamMemberCardProps) { + const { width } = useWindowDimension(); + const [isOpen, setIsOpen] = useState(false); + const handleClick = () => { + if (isOpen || width <= 768) { + setIsOpen(!isOpen); + } + }; + return ( + <> +
+ {children} +
+ + {isOpen && ( + + {children} + + )} + + ); +} + +interface Propup extends TeamMemberCardProps { + handleClick: () => void; +} + +function ExecPopup({ name, role, image, children, handleClick }: Propup) { + return ( + <> +
+
+ +
+ + {children} + +
+
+ ); } diff --git a/components/playground.tsx b/components/playground.tsx index d03d15e8..ba2197b6 100644 --- a/components/playground.tsx +++ b/components/playground.tsx @@ -166,16 +166,16 @@ export function TeamMemberDemo() {

- - - - - - - - - - + + + + + + + + + +
); @@ -184,7 +184,7 @@ export function TeamMemberDemo() { export function TeamMemberCardDemo() { return (
- +
diff --git a/content/about/index.mdx b/content/about/index.mdx index 604a6751..58290236 100644 --- a/content/about/index.mdx +++ b/content/about/index.mdx @@ -1,4 +1,4 @@ -import Bubble from "@/components/Bubble"; +import { Bubble } from "@/components/Bubble"; @@ -17,13 +17,13 @@ growth. ## Our Vision 1. Academic: Promoting the knowledge and interest of Computer Science, as well -as supporting students throughout their academic experiences. + as supporting students throughout their academic experiences. 2. Career: Providing career guidance and resources to help students gain -experience and knowledge for their own job search. + experience and knowledge for their own job search. 3. Community: Encouraging interpersonal relationships through community building -and social events for all computing students. + and social events for all computing students. @@ -64,9 +64,9 @@ The CS Club office is located at room **MC 3036/3037**, in the Math & Computer Building of the University of Waterloo. - An office favorite is our $0.50 pop for members. We have a fridge in the -office which is stocked with many different kinds of pop. + office which is stocked with many different kinds of pop. - We have lots of informative books, 5 computer terminals, and an array of -knowledgeable people to talk to. + knowledgeable people to talk to. Come visit us on campus in our office! Meet new members and find out what's new in the club. @@ -77,7 +77,7 @@ Computer Science Club
Math & Computer 3036/3037
University of Waterloo
200 University Avenue West
-Waterloo, ON N2L 3G1
+Waterloo, ON N2L 3G1
Canada Our office phone number is [(519) 888-4567 x33870](tel:+15198884567,33870) @@ -85,5 +85,3 @@ Our office phone number is [(519) 888-4567 x33870](tel:+15198884567,33870) - - diff --git a/content/meet-the-team/execs/01-kallen-tu.md b/content/meet-the-team/execs/01-kallen-tu.md new file mode 100644 index 00000000..9f8ffae8 --- /dev/null +++ b/content/meet-the-team/execs/01-kallen-tu.md @@ -0,0 +1,6 @@ +--- +name: Kallen Tu +role: President +--- + +words words words codey words words words words codey words words words words codey words words words words codey words words words words codey words words words words words codey words words words words codey words words words words codey words words words words codey words words words diff --git a/content/meet-the-team/execs/02-gordon-le.md b/content/meet-the-team/execs/02-gordon-le.md new file mode 100644 index 00000000..a1a721f7 --- /dev/null +++ b/content/meet-the-team/execs/02-gordon-le.md @@ -0,0 +1,6 @@ +--- +name: Gordon Le +role: Vice President +--- + +words words words codey words words words words codey words words words words codey words words words words codey words words words words codey words words words words words codey words words words words codey words words words words codey words words words words codey words words words diff --git a/content/meet-the-team/execs/03-nakul-vijhani.md b/content/meet-the-team/execs/03-nakul-vijhani.md new file mode 100644 index 00000000..6c84a61c --- /dev/null +++ b/content/meet-the-team/execs/03-nakul-vijhani.md @@ -0,0 +1,6 @@ +--- +name: Nakul Vijhani +role: Assistant Vice President +--- + +words words words codey words words words words codey words words words words codey words words words words codey words words words words codey words words words words words codey words words words words codey words words words words codey words words words words codey words words words diff --git a/content/meet-the-team/execs/04-neil-parikh.md b/content/meet-the-team/execs/04-neil-parikh.md new file mode 100644 index 00000000..a8701efc --- /dev/null +++ b/content/meet-the-team/execs/04-neil-parikh.md @@ -0,0 +1,6 @@ +--- +name: Neil Parikh +role: Treasurer +--- + +words words words codey words words words words codey words words words words codey words words words words codey words words words words codey words words words words words codey words words words words codey words words words words codey words words words words codey words words words diff --git a/content/meet-the-team/execs/05-max-erenberg.md b/content/meet-the-team/execs/05-max-erenberg.md new file mode 100644 index 00000000..6c480e18 --- /dev/null +++ b/content/meet-the-team/execs/05-max-erenberg.md @@ -0,0 +1,6 @@ +--- +name: Max Erenberg +role: Systems Administrator +--- + +words words words codey words words words words codey words words words words codey words words words words codey words words words words codey words words words words words codey words words words words codey words words words words codey words words words words codey words words words diff --git a/content/meet-the-team/execs/06-codey.md b/content/meet-the-team/execs/06-codey.md new file mode 100644 index 00000000..be7a6f51 --- /dev/null +++ b/content/meet-the-team/execs/06-codey.md @@ -0,0 +1,6 @@ +--- +name: Codey +role: Mascot +--- + +The one, the only, Codey! Codey is ecstatic to be your mascot for this term. Codey loves programming and playing on their laptop. You can often find Codey posing for event promo graphics, or chilling in the CSC discord. diff --git a/content/meet-the-team/programme-committee.json b/content/meet-the-team/programme-committee.json new file mode 100644 index 00000000..3e2703d6 --- /dev/null +++ b/content/meet-the-team/programme-committee.json @@ -0,0 +1,114 @@ +[ + { + "name": "Brendan Wong", + "role": "Designer" + }, + { + "name": "Kailin Chan", + "role": "Designer" + }, + { + "name": "Karen Lee", + "role": "Designer" + }, + { + "name": "Sam Honoridez", + "role": "Designer" + }, + { + "name": "Anna Wang", + "role": "Events" + }, + { + "name": "Jason Sang", + "role": "Events" + }, + { + "name": "Ravindu Angammana", + "role": "Events" + }, + { + "name": "Shi Han", + "role": "Events" + }, + { + "name": "Stephanie Xu", + "role": "Events" + }, + { + "name": "Yanni Wang", + "role": "Events" + }, + { + "name": "Anjing Li", + "role": "Marketing" + }, + { + "name": "Patrick He", + "role": "Marketing" + }, + { + "name": "Richa Dalal", + "role": "Marketing" + }, + { + "name": "Sherry Lev", + "role": "Marketing" + }, + { + "name": "Alex Zhang", + "role": "Discord Mod" + }, + { + "name": "Andrew Wang", + "role": "Discord Mod" + }, + { + "name": "Charles Zhang", + "role": "Discord Mod" + }, + { + "name": "Edwin Yang", + "role": "Discord Mod" + }, + { + "name": "Mark Chen", + "role": "Discord Mod" + }, + { + "name": "Aaron Choo", + "role": "Representative" + }, + { + "name": "Athena Liu", + "role": "Representative" + }, + { + "name": "Betty Guo", + "role": "Representative" + }, + { + "name": "Chris Xie", + "role": "Representative" + }, + { + "name": "Dora Su", + "role": "Representative" + }, + { + "name": "Eden Chan", + "role": "Representative" + }, + { + "name": "Felix Yang", + "role": "Representative" + }, + { + "name": "Guneet Bola", + "role": "Representative" + }, + { + "name": "Juthika Hoque", + "role": "Representative" + } +] diff --git a/content/meet-the-team/systems-committee.json b/content/meet-the-team/systems-committee.json new file mode 100644 index 00000000..2e77136f --- /dev/null +++ b/content/meet-the-team/systems-committee.json @@ -0,0 +1,18 @@ +[ + { + "name": "Max Erenberg", + "role": "Admin" + }, + { + "name": "Andrew Wang", + "role": "Member" + }, + { + "name": "Bill Xiang", + "role": "Member" + }, + { + "name": "Raymond Li", + "role": "Member" + } +] diff --git a/content/meet-the-team/website-committee.json b/content/meet-the-team/website-committee.json new file mode 100644 index 00000000..6606b5e2 --- /dev/null +++ b/content/meet-the-team/website-committee.json @@ -0,0 +1,38 @@ +[ + { + "name": "Aditya Thakral", + "role": "Team Lead" + }, + { + "name": "Neil Parikh", + "role": "Team Lead" + }, + { + "name": "Amy Wang", + "role": "Developer" + }, + { + "name": "Bonnie Peng", + "role": "Developer" + }, + { + "name": "Catherine Wan", + "role": "Developer" + }, + { + "name": "Dora Su", + "role": "Developer" + }, + { + "name": "Jared He", + "role": "Developer" + }, + { + "name": "Linna Luo", + "role": "Developer" + }, + { + "name": "William Tran", + "role": "Developer" + } +] diff --git a/hooks/useWindowDimension.tsx b/hooks/useWindowDimension.tsx new file mode 100644 index 00000000..0b6924ea --- /dev/null +++ b/hooks/useWindowDimension.tsx @@ -0,0 +1,37 @@ +import { useEffect, useState } from "react"; + +interface WindowDimension { + width: number; + height: number; +} + +function getWindowDimension() { + const { innerWidth: width, innerHeight: height } = window; + return { + width, + height, + }; +} + +export function useWindowDimension(): WindowDimension { + const [windowSize, setWindowDimension] = useState({ + width: 0, + height: 0, + }); + + useEffect(() => { + const handleResize = () => { + setWindowDimension(getWindowDimension()); + }; + + // Set size at the first client-side load + handleResize(); + window.addEventListener("resize", handleResize); + + return () => { + window.removeEventListener("resize", handleResize); + }; + }, []); + + return windowSize; +} diff --git a/lib/team.ts b/lib/team.ts new file mode 100644 index 00000000..90ab46b9 --- /dev/null +++ b/lib/team.ts @@ -0,0 +1,55 @@ +import { readFile, readdir, access } from "fs/promises"; +import path from "path"; + +import matter from "gray-matter"; +import { serialize } from "next-mdx-remote/serialize"; + +const EXECS_PATH = path.join("content", "meet-the-team", "execs"); +const fileType = ".md"; + +export interface Metadata { + name: string; + role: string; + image: string; +} + +export async function getExecNames() { + return (await readdir(EXECS_PATH)) + .filter((name) => name.endsWith(fileType)) + .map((name) => name.slice(0, -1 * fileType.length)); +} + +export async function getExec(fileName: string, convert = true) { + const raw = await readFile(path.join(EXECS_PATH, `${fileName}${fileType}`)); + const { content, data: metadata } = matter(raw); + const image = await getMemberImagePath(metadata.name); + + return { + content: convert ? await serialize(content) : content, + metadata: { ...metadata, image } as Metadata, + }; +} + +async function getImage(imgPath: string) { + try { + await access(path.join("public", imgPath)); + return imgPath; + } catch { + return undefined; + } +} + +export async function getMemberImagePath(name: string) { + const imgPath = path.join("images", "team", name.replace(" ", "")); + const placeholder = path.join( + "images", + "team", + "team-member-placeholder.svg" + ); + const img = + (await getImage(imgPath + ".jpg")) ?? + (await getImage(imgPath + ".png")) ?? + (await getImage(imgPath + ".gif")) ?? + placeholder; + return img; +} diff --git a/package.json b/package.json index cac2edb7..4c1ab6bf 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "build": "next build", "start": "next start", "export": "next export", - "lint": "eslint \"{pages,components,lib}/**/*.{js,ts,tsx,jsx}\" --quiet", - "lint:fix": "eslint \"{pages,components,lib}/**/*.{js,ts,tsx,jsx}\" --quiet --fix" + "lint": "eslint \"{pages,components,lib,hooks}/**/*.{js,ts,tsx,jsx}\" --quiet", + "lint:fix": "eslint \"{pages,components,lib,hooks}/**/*.{js,ts,tsx,jsx}\" --quiet --fix" }, "dependencies": { "@mdx-js/loader": "^1.6.22", diff --git a/pages/_app.css b/pages/_app.css index 5641a123..0c63a4f9 100644 --- a/pages/_app.css +++ b/pages/_app.css @@ -1,3 +1,7 @@ +html { + scroll-behavior: smooth; +} + body { /* Default is light theme */ --primary-background: #ffffff; diff --git a/pages/about/our-supporters.module.css b/pages/about/our-supporters.module.css index d9500dba..6e6ccff6 100644 --- a/pages/about/our-supporters.module.css +++ b/pages/about/our-supporters.module.css @@ -24,6 +24,11 @@ border: none; } + .header { + font-size: calc(24rem / 16); + margin: 0; + } + .codey { width: calc(100rem / 16); } diff --git a/pages/about/team.mdx b/pages/about/team.mdx deleted file mode 100644 index 707cf7c5..00000000 --- a/pages/about/team.mdx +++ /dev/null @@ -1 +0,0 @@ -# Meet the Team page diff --git a/pages/about/team.module.css b/pages/about/team.module.css new file mode 100644 index 00000000..dfbf05de --- /dev/null +++ b/pages/about/team.module.css @@ -0,0 +1,105 @@ +.headerContainer { + display: flex; + flex-direction: row; + padding-bottom: calc(24rem / 16); + border-bottom: calc(1rem / 16) solid var(--primary-heading); + margin-bottom: calc(46rem / 16); +} + +.nav { + display: none; +} + +.headerTextContainer { + margin: auto 0 0 0; +} + +.header { + color: var(--primary-heading); + font-size: calc(48rem / 16); + margin: 0 calc(53rem / 16) 0 0; +} + +.subheading { + color: var(--primary-heading); + font-size: calc(36rem / 16); + font-weight: 600; + padding-bottom: calc(22rem / 16); + border-bottom: calc(1rem / 16) solid var(--primary-heading); + margin-bottom: calc(46rem / 16); + margin-top: calc(86rem / 16); +} + +.codey { + width: calc(360rem / 16); +} + +.execs { + display: flex; + flex-direction: column; + gap: calc(26rem / 16); + margin-bottom: calc(86rem / 16); +} + +.members { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(calc(100rem / 16), 1fr)); + row-gap: calc(43rem / 16); + column-gap: calc(53rem / 16); + justify-items: center; +} + +.elections { + margin: 6rem 0; +} + +.electionSubheading { + color: var(--primary-accent); + font-size: calc(36rem / 16); + font-weight: 600; + margin-top: 0; +} + +@media only screen and (max-width: calc(768rem / 16)) { + .headerContainer { + flex-direction: column-reverse; + padding-bottom: 1rem; + } + + .nav { + margin-top: calc(24rem / 16); + margin-bottom: calc(46rem / 16); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + .codey { + width: calc(140rem / 16); + align-self: center; + } + + .header { + font-size: calc(24rem / 16); + margin: calc(10rem / 16) 0 0 0; + text-align: center; + } + + .subheading { + font-size: calc(24rem / 16); + padding-bottom: calc(15rem / 16); + } + + .execs, + .members { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(calc(130rem / 16), 1fr)); + justify-items: center; + column-gap: 0; + } + + .electionSubheading { + font-size: calc(24rem / 16); + } +} diff --git a/pages/about/team.tsx b/pages/about/team.tsx new file mode 100644 index 00000000..fa1ee2eb --- /dev/null +++ b/pages/about/team.tsx @@ -0,0 +1,139 @@ +import { GetStaticProps } from "next"; +import { MDXRemote, MDXRemoteSerializeResult } from "next-mdx-remote"; +import React from "react"; + +import { Bubble } from "@/components/Bubble"; +import { DefaultLayout } from "@/components/DefaultLayout"; +import { Image } from "@/components/Image"; +import { Link } from "@/components/Link"; +import { TeamMember } from "@/components/TeamMember"; +import { TeamMemberCard } from "@/components/TeamMemberCard"; +import { + getExec, + getExecNames, + Metadata, + getMemberImagePath, +} from "@/lib/team"; + +import programmeData from "../../content/meet-the-team/programme-committee.json"; +import systemsData from "../../content/meet-the-team/systems-committee.json"; +import websiteData from "../../content/meet-the-team/website-committee.json"; + +import styles from "./team.module.css"; + +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 +
+
+ + ); +} + +Team.Layout = function TeamLayout(props: { children: React.ReactNode }) { + return
{props.children}
; +}; + +interface MembersProps { + team: Metadata[]; +} + +function MembersList(props: MembersProps) { + return ( +
+ {props.team.map((member) => ( + + ))} +
+ ); +} + +async function getTeamWithImages(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, website, systems] = await Promise.all([ + getTeamWithImages(programmeData), + getTeamWithImages(websiteData), + getTeamWithImages(systemsData), + ]); + + return { + props: { execs, programme, website, systems }, + }; +}; diff --git a/pages/index.tsx b/pages/index.tsx index 9d31b9e3..2d6c2b98 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -68,7 +68,7 @@ export default function Home() { ))}
-
+

News

Updates from our execs!
diff --git a/public/images/team-member-placeholder.svg b/public/images/team-member-placeholder.svg deleted file mode 100644 index 3de69d51..00000000 --- a/public/images/team-member-placeholder.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/images/team/AaronChoo.jpg b/public/images/team/AaronChoo.jpg new file mode 100644 index 00000000..9586be87 Binary files /dev/null and b/public/images/team/AaronChoo.jpg differ diff --git a/public/images/team/AdityaThakral.jpg b/public/images/team/AdityaThakral.jpg new file mode 100644 index 00000000..909acd6b Binary files /dev/null and b/public/images/team/AdityaThakral.jpg differ diff --git a/public/images/team/AlexZhang.jpg b/public/images/team/AlexZhang.jpg new file mode 100644 index 00000000..5e2fad1a Binary files /dev/null and b/public/images/team/AlexZhang.jpg differ diff --git a/public/images/team/AndrewWang.jpg b/public/images/team/AndrewWang.jpg new file mode 100644 index 00000000..a84b5c53 Binary files /dev/null and b/public/images/team/AndrewWang.jpg differ diff --git a/public/images/team/AnjingLi.jpg b/public/images/team/AnjingLi.jpg new file mode 100644 index 00000000..cdbf3c94 Binary files /dev/null and b/public/images/team/AnjingLi.jpg differ diff --git a/public/images/team/AnnaWang.jpg b/public/images/team/AnnaWang.jpg new file mode 100644 index 00000000..729a6826 Binary files /dev/null and b/public/images/team/AnnaWang.jpg differ diff --git a/public/images/team/AthenaLiu.jpg b/public/images/team/AthenaLiu.jpg new file mode 100644 index 00000000..ba3a765e Binary files /dev/null and b/public/images/team/AthenaLiu.jpg differ diff --git a/public/images/team/BettyGuo.jpg b/public/images/team/BettyGuo.jpg new file mode 100644 index 00000000..1bc188b6 Binary files /dev/null and b/public/images/team/BettyGuo.jpg differ diff --git a/public/images/team/BonniePeng.jpg b/public/images/team/BonniePeng.jpg new file mode 100644 index 00000000..9014ab29 Binary files /dev/null and b/public/images/team/BonniePeng.jpg differ diff --git a/public/images/team/BrendanWong.jpg b/public/images/team/BrendanWong.jpg new file mode 100644 index 00000000..4b2db741 Binary files /dev/null and b/public/images/team/BrendanWong.jpg differ diff --git a/public/images/team/CatherineWan.jpg b/public/images/team/CatherineWan.jpg new file mode 100644 index 00000000..0f420726 Binary files /dev/null and b/public/images/team/CatherineWan.jpg differ diff --git a/public/images/team/CharlesZhang.jpg b/public/images/team/CharlesZhang.jpg new file mode 100644 index 00000000..fe4c2789 Binary files /dev/null and b/public/images/team/CharlesZhang.jpg differ diff --git a/public/images/team/ChrisXie.jpg b/public/images/team/ChrisXie.jpg new file mode 100644 index 00000000..0c36c30d Binary files /dev/null and b/public/images/team/ChrisXie.jpg differ diff --git a/public/images/team/Codey.jpg b/public/images/team/Codey.jpg new file mode 100644 index 00000000..b26dc666 Binary files /dev/null and b/public/images/team/Codey.jpg differ diff --git a/public/images/team/DoraSu.jpg b/public/images/team/DoraSu.jpg new file mode 100644 index 00000000..9e6d579a Binary files /dev/null and b/public/images/team/DoraSu.jpg differ diff --git a/public/images/team/EdenChan.jpg b/public/images/team/EdenChan.jpg new file mode 100644 index 00000000..e179c08a Binary files /dev/null and b/public/images/team/EdenChan.jpg differ diff --git a/public/images/team/EdwinYang.jpg b/public/images/team/EdwinYang.jpg new file mode 100644 index 00000000..96f6e743 Binary files /dev/null and b/public/images/team/EdwinYang.jpg differ diff --git a/public/images/team/FelixYang.jpg b/public/images/team/FelixYang.jpg new file mode 100644 index 00000000..0352da41 Binary files /dev/null and b/public/images/team/FelixYang.jpg differ diff --git a/public/images/team/GordonLe.jpg b/public/images/team/GordonLe.jpg new file mode 100644 index 00000000..254e4da0 Binary files /dev/null and b/public/images/team/GordonLe.jpg differ diff --git a/public/images/team/GuneetBola.jpg b/public/images/team/GuneetBola.jpg new file mode 100644 index 00000000..3a87de1a Binary files /dev/null and b/public/images/team/GuneetBola.jpg differ diff --git a/public/images/team/JaredHe.jpg b/public/images/team/JaredHe.jpg new file mode 100644 index 00000000..d25d512f Binary files /dev/null and b/public/images/team/JaredHe.jpg differ diff --git a/public/images/team/JasonSang.jpg b/public/images/team/JasonSang.jpg new file mode 100644 index 00000000..4c19c952 Binary files /dev/null and b/public/images/team/JasonSang.jpg differ diff --git a/public/images/team/JuthikaHoque.jpg b/public/images/team/JuthikaHoque.jpg new file mode 100644 index 00000000..61fcd58b Binary files /dev/null and b/public/images/team/JuthikaHoque.jpg differ diff --git a/public/images/team/KailinChan.jpg b/public/images/team/KailinChan.jpg new file mode 100644 index 00000000..ed7205b0 Binary files /dev/null and b/public/images/team/KailinChan.jpg differ diff --git a/public/images/team/KallenTu.jpg b/public/images/team/KallenTu.jpg new file mode 100644 index 00000000..f1573d01 Binary files /dev/null and b/public/images/team/KallenTu.jpg differ diff --git a/public/images/team/KarenLee.jpg b/public/images/team/KarenLee.jpg new file mode 100644 index 00000000..d307ccb7 Binary files /dev/null and b/public/images/team/KarenLee.jpg differ diff --git a/public/images/team/LinnaLuo.jpg b/public/images/team/LinnaLuo.jpg new file mode 100644 index 00000000..6ddb692b Binary files /dev/null and b/public/images/team/LinnaLuo.jpg differ diff --git a/public/images/team/MarkChen.jpg b/public/images/team/MarkChen.jpg new file mode 100644 index 00000000..30c67b5c Binary files /dev/null and b/public/images/team/MarkChen.jpg differ diff --git a/public/images/team/MaxErenberg.jpg b/public/images/team/MaxErenberg.jpg new file mode 100644 index 00000000..f35af817 Binary files /dev/null and b/public/images/team/MaxErenberg.jpg differ diff --git a/public/images/team/NeilParikh.jpg b/public/images/team/NeilParikh.jpg new file mode 100644 index 00000000..abd01a39 Binary files /dev/null and b/public/images/team/NeilParikh.jpg differ diff --git a/public/images/team/PatrickHe.jpg b/public/images/team/PatrickHe.jpg new file mode 100644 index 00000000..e6a1b0b6 Binary files /dev/null and b/public/images/team/PatrickHe.jpg differ diff --git a/public/images/team/RavinduAngammana.jpg b/public/images/team/RavinduAngammana.jpg new file mode 100644 index 00000000..8dc7edc3 Binary files /dev/null and b/public/images/team/RavinduAngammana.jpg differ diff --git a/public/images/team/RaymondLi.jpg b/public/images/team/RaymondLi.jpg new file mode 100644 index 00000000..eef26ea8 Binary files /dev/null and b/public/images/team/RaymondLi.jpg differ diff --git a/public/images/team/RichaDalal.jpg b/public/images/team/RichaDalal.jpg new file mode 100644 index 00000000..6d4e7ade Binary files /dev/null and b/public/images/team/RichaDalal.jpg differ diff --git a/public/images/team/SamHonoridez.jpg b/public/images/team/SamHonoridez.jpg new file mode 100644 index 00000000..364ac3a6 Binary files /dev/null and b/public/images/team/SamHonoridez.jpg differ diff --git a/public/images/team/SherryLev.jpg b/public/images/team/SherryLev.jpg new file mode 100644 index 00000000..949283c1 Binary files /dev/null and b/public/images/team/SherryLev.jpg differ diff --git a/public/images/team/ShiHan.jpg b/public/images/team/ShiHan.jpg new file mode 100644 index 00000000..fa3543cd Binary files /dev/null and b/public/images/team/ShiHan.jpg differ diff --git a/public/images/team/StephanieXu.jpg b/public/images/team/StephanieXu.jpg new file mode 100644 index 00000000..022498c9 Binary files /dev/null and b/public/images/team/StephanieXu.jpg differ diff --git a/public/images/team/WilliamTran.jpg b/public/images/team/WilliamTran.jpg new file mode 100644 index 00000000..fdce1353 Binary files /dev/null and b/public/images/team/WilliamTran.jpg differ diff --git a/public/images/team/YanniWang.jpg b/public/images/team/YanniWang.jpg new file mode 100644 index 00000000..1ad4e540 Binary files /dev/null and b/public/images/team/YanniWang.jpg differ diff --git a/public/images/team/popup-close.svg b/public/images/team/popup-close.svg new file mode 100644 index 00000000..5e462dda --- /dev/null +++ b/public/images/team/popup-close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/team/team-codey.svg b/public/images/team/team-codey.svg new file mode 100644 index 00000000..24f82045 --- /dev/null +++ b/public/images/team/team-codey.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/images/team/team-member-placeholder.svg b/public/images/team/team-member-placeholder.svg new file mode 100644 index 00000000..cc99e924 --- /dev/null +++ b/public/images/team/team-member-placeholder.svg @@ -0,0 +1,3 @@ + + + diff --git a/tsconfig.json b/tsconfig.json index dd42be47..d886e684 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,11 +2,7 @@ "compilerOptions": { "baseUrl": ".", "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": false, @@ -26,16 +22,10 @@ "strictFunctionTypes": true, "paths": { "@/components/*": ["components/*"], - "@/lib/*": ["lib/*"] + "@/lib/*": ["lib/*"], + "@/hooks/*": ["hooks/*"] } }, - "include": [ - "next-env.d.ts", - "types.d.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ] + "include": ["next-env.d.ts", "types.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] } diff --git a/types.d.ts b/types.d.ts index c6daf5e7..244dd983 100644 --- a/types.d.ts +++ b/types.d.ts @@ -40,7 +40,6 @@ declare module "*.team-member.mdx" { interface TeamMemberMetadata { name: string; role: string; - image?: string; } const ReactComponent: ComponentType;