+
+ Meet the Executives
+ >
+ )}
+ subtitle="The Executives who lead QuantSoc, promoting quant trading at UNSW through workshops, competitions and industry events."
+ >
+
+ {heroStats.map((stat) => {
+ return (
+
+ {stat.value}
+ {stat.label}
+
+ );
+ })}
+
+
+
+
+
+ {`${currentTeam.year} Executives`}
+
+ {currentTeam.members.map((member) => {
+ return (
+
+ );
+ })}
+
+
+
+
+ Past Executives
+ {pastTeams.map((team) => {
+ return (
+
+
{team.year}
+
+ {team.members.map((member) => {
+ return (
+
+ );
+ })}
+
+
+ );
+ })}
+
+
+ );
+};
+
+export default TeamPage;
diff --git a/src/routes/TeamPage/executives.js b/src/routes/TeamPage/executives.js
new file mode 100644
index 00000000..5d4b3169
--- /dev/null
+++ b/src/routes/TeamPage/executives.js
@@ -0,0 +1,60 @@
+// Executive team for each year, newest first. The first entry is shown as the
+// current executive. To add a new year, copy a block and put it at the top.
+// `linkedin` is optional - leave it out if we don't have one.
+
+const executives = [
+ {
+ year: 2026,
+ members: [
+ { name: 'Xuanyu Liu', role: 'President', linkedin: 'https://www.linkedin.com/in/xuanyu-liu-5b6305261/' },
+ { name: 'Thomas Petkovic', role: 'Treasurer', linkedin: 'https://www.linkedin.com/in/thomaspetkovic/' },
+ { name: 'Kei Yu Kong', role: 'Secretary', linkedin: 'https://www.linkedin.com/in/kei-yu/' },
+ { name: 'Callan Vom', role: 'Arc Delegate & Grievance Officer' },
+ { name: 'Will Tarrant', role: 'VP External', linkedin: 'https://www.linkedin.com/in/will-tarrant/' },
+ { name: 'Max Campbell', role: 'VP External', linkedin: 'https://www.linkedin.com/in/max-campbell-33b368318/' },
+ { name: 'Rayan Sharara', role: 'VP Technical', linkedin: 'https://www.linkedin.com/in/rayan-sharara-bb8672292/' },
+ { name: 'Daria Poleshchuk', role: 'VP Internal', linkedin: 'https://www.linkedin.com/in/polluckk/' },
+ ],
+ },
+ {
+ year: 2025,
+ members: [
+ { name: 'Victor Tang', role: 'President', linkedin: 'https://www.linkedin.com/in/victortang423/' },
+ { name: 'Andrew Li', role: 'Treasurer' },
+ { name: 'Sankalpa Tripathee', role: 'Secretary', linkedin: 'https://www.linkedin.com/in/sankalpa-tripathee-8b28a927a/' },
+ { name: 'Xuanyu Liu', role: 'Arc Delegate', linkedin: 'https://www.linkedin.com/in/xuanyu-liu-5b6305261/' },
+ { name: 'Bhavi Chauhan', role: 'Grievance Officer' },
+ ],
+ },
+ {
+ year: 2024,
+ members: [
+ { name: 'Peter Boylan', role: 'President', linkedin: 'https://www.linkedin.com/in/peter-boylan-0350b613b/' },
+ { name: 'Austin Hoe', role: 'Treasurer', linkedin: 'https://www.linkedin.com/in/austin-hoe/' },
+ { name: 'Yovonne L', role: 'Secretary' },
+ { name: 'Victor Tang', role: 'Arc Delegate', linkedin: 'https://www.linkedin.com/in/victortang423/' },
+ { name: 'Vincent Lim', role: 'Grievance Officer' },
+ ],
+ },
+ {
+ year: 2023,
+ members: [
+ { name: 'Yuelanda Dai', role: 'President', linkedin: 'https://www.linkedin.com/in/yuelanda-dai/' },
+ { name: 'Kevin Zhu', role: 'Treasurer' },
+ { name: 'Yifan Jia', role: 'Secretary' },
+ { name: 'Marco Musa', role: 'Arc Delegate' },
+ { name: 'Oden Petersen', role: 'Grievance Officer', linkedin: 'https://www.linkedin.com/in/oden-petersen/' },
+ ],
+ },
+ {
+ year: 2022,
+ members: [
+ { name: 'Oden Petersen', role: 'President', linkedin: 'https://www.linkedin.com/in/oden-petersen/' },
+ { name: 'William Li', role: 'Treasurer' },
+ { name: 'Harry Braithwaite', role: 'Secretary & Grievance Officer' },
+ { name: 'Lehan Zhang', role: 'Arc Delegate' },
+ ],
+ },
+];
+
+export default executives;
diff --git a/src/routes/TeamPage/index.less b/src/routes/TeamPage/index.less
new file mode 100644
index 00000000..a86c1ec5
--- /dev/null
+++ b/src/routes/TeamPage/index.less
@@ -0,0 +1,32 @@
+@import '../../styles/constants.less';
+
+.team-section {
+ text-align: left;
+ scroll-margin-top: 62px; // + global scroll-padding-top (3rem) clears the sticky nav bar
+
+ h1 {
+ margin-bottom: 2rem;
+ }
+
+ h2 {
+ margin: 2.5rem 0 1rem;
+ }
+}
+
+.team-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
+ gap: 1.5rem;
+}
+
+@media screen and (max-width: @mobile) {
+ .team-grid {
+ grid-template-columns: repeat(2, 1fr);
+ gap: 0.75rem;
+ }
+}
+
+.team-grid.team-grid--compact {
+ grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
+ gap: 1rem;
+}