33import React from 'react' ;
44
55import { Heading , majorScale , Pane , Text , useTheme } from 'evergreen-ui' ;
6- import Image from 'next/image' ;
76
87// --- Helper Components & Data ---
98interface member {
109 name : string ;
1110 role : string ;
12- year : string ;
1311 imgSrc : string ;
1412 socials : {
1513 linkedin : string ;
14+ github : string ;
1615 } ;
1716}
1817
@@ -53,31 +52,74 @@ const LinkedinIcon = () => (
5352 </ svg >
5453) ;
5554
56- // Team data organized for easier management
55+ const GitHubIcon = ( ) => (
56+ < svg
57+ xmlns = 'http://www.w3.org/2000/svg'
58+ width = '24'
59+ height = '24'
60+ viewBox = '0 0 16 16'
61+ fill = 'currentColor'
62+ >
63+ < path d = 'M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8' />
64+ </ svg >
65+ ) ;
66+
5767const teamLeads : member [ ] = [
5868 {
5969 name : 'Jenny Fan' ,
6070 role : 'Team Lead' ,
61- year : '2025 - 2026' ,
62- imgSrc : 'https://i.imgur.com/zDqurNZ.jpeg' ,
71+ imgSrc : 'https://i.imgur.com/grwgWFZ.jpeg' ,
6372 socials : {
6473 linkedin : 'https://www.linkedin.com/in/jennyfan04/' ,
74+ github : 'https://github.com/jfmath04' ,
75+ } ,
76+ } ,
77+ {
78+ name : 'Zhao Song Zhou' ,
79+ role : 'Team Lead' ,
80+ imgSrc : 'https://i.imgur.com/JeUh9dc.jpeg' ,
81+ socials : {
82+ linkedin : 'https://www.linkedin.com/in/zhao-song-zhou/' ,
83+ github : 'https://github.com/ZhaoSongZh7' ,
84+ } ,
85+ } ,
86+ {
87+ name : 'Alvin Sze' ,
88+ role : 'Team Lead' ,
89+ imgSrc : 'https://i.imgur.com/mZy9kzp.jpeg' ,
90+ socials : {
91+ linkedin : 'https://www.linkedin.com/in/alvinsze/' ,
92+ github : 'https://github.com/asze17' ,
6593 } ,
6694 } ,
6795] ;
6896
6997const teamMembers : member [ ] = [
70- // Add your name, role, and image here!
71- ] ;
72-
73- const pastLeadership : member [ ] = [
7498 {
75- name : 'Spencer Doyle' ,
76- role : 'Team Lead' ,
77- year : '2024 - 2025' ,
78- imgSrc : 'https://i.imgur.com/kUbzXL9.png' ,
99+ name : 'Chloe Lau' ,
100+ role : 'Product Manager' ,
101+ imgSrc : 'https://i.imgur.com/BVrnu64.jpeg' ,
79102 socials : {
80- linkedin : 'https://www.linkedin.com/in/spencer-doyle3/' ,
103+ linkedin : 'https://www.linkedin.com/in/chloe-hc-lau/' ,
104+ github : 'https://github.com/lauechlo' ,
105+ } ,
106+ } ,
107+ {
108+ name : 'Allison Lee' ,
109+ role : 'Product Manager' ,
110+ imgSrc : 'https://i.imgur.com/3SPqM7z.jpeg' ,
111+ socials : {
112+ linkedin : 'https://www.linkedin.com/in/allisonelee/' ,
113+ github : 'https://github.com/allisonelee' ,
114+ } ,
115+ } ,
116+ {
117+ name : 'Christal Chen' ,
118+ role : 'Software Engineer' ,
119+ imgSrc : 'https://i.imgur.com/ZshQ3Fj.jpeg' ,
120+ socials : {
121+ linkedin : 'https://www.linkedin.com/in/christalchen/' ,
122+ github : 'https://github.com/12chenec' ,
81123 } ,
82124 } ,
83125] ;
@@ -138,13 +180,11 @@ export function App() {
138180 < h2 className = 'text-3xl font-bold text-slate-900 mb-12 text-center' >
139181 Team Leadership
140182 </ h2 >
141- < div
142- className = { `grid grid-cols-1 lg:grid-cols-2 gap-10 max-w-5xl mx-auto ${ teamLeads . length === 1 ? 'justify-items-center' : '' } ` }
143- >
183+ < div className = 'grid grid-cols-1 lg:grid-cols-2 gap-10 max-w-5xl mx-auto' >
144184 { teamLeads . map ( ( lead ) => (
145185 < div
146186 key = { lead . name }
147- className = { ` bg-white rounded-2xl shadow-lg overflow-hidden transform hover:scale-[1.02] transition-transform duration-300 ease-in-out w-full ${ teamLeads . length === 1 ? 'lg:col-span-2 max-w-lg' : '' } ` }
187+ className = ' bg-white rounded-2xl shadow-lg overflow-hidden transform hover:scale-[1.02] transition-transform duration-300 ease-in-out w-full'
148188 >
149189 < div className = 'p-8 flex flex-col sm:flex-row items-center' >
150190 < Pane
@@ -158,7 +198,9 @@ export function App() {
158198 boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)'
159199 overflow = 'hidden'
160200 >
161- < Image
201+ { /* Intentionally using img so direct Imgur URLs work without Next image domain config. */ }
202+ { /* eslint-disable-next-line @next/next/no-img-element */ }
203+ < img
162204 src = { lead . imgSrc }
163205 alt = { lead . name }
164206 height = { 128 }
@@ -179,6 +221,11 @@ export function App() {
179221 { lead . role }
180222 </ p >
181223 < div className = 'flex justify-center sm:justify-start space-x-4' >
224+ < SocialIcon
225+ href = { lead . socials . github }
226+ >
227+ < GitHubIcon />
228+ </ SocialIcon >
182229 < SocialIcon
183230 href = { lead . socials . linkedin }
184231 >
@@ -203,7 +250,9 @@ export function App() {
203250 key = { member . name }
204251 className = 'bg-white rounded-xl shadow-md p-6 text-center transform hover:-translate-y-2 transition-transform duration-300 ease-in-out group'
205252 >
206- < Image
253+ { /* Intentionally using img so direct Imgur URLs work without Next image domain config. */ }
254+ { /* eslint-disable-next-line @next/next/no-img-element */ }
255+ < img
207256 src = { member . imgSrc }
208257 alt = { member . name }
209258 className = 'w-24 h-24 rounded-full mx-auto mb-4 border-4 border-slate-200 group-hover-border transition-colors duration-300'
@@ -221,6 +270,9 @@ export function App() {
221270 { member . role }
222271 </ p >
223272 < div className = 'flex mx-auto w-min mt-2 justify-center sm:justify-start space-x-4' >
273+ < SocialIcon href = { member . socials . github } >
274+ < GitHubIcon />
275+ </ SocialIcon >
224276 < SocialIcon href = { member . socials . linkedin } >
225277 < LinkedinIcon />
226278 </ SocialIcon >
@@ -229,68 +281,9 @@ export function App() {
229281 ) ) }
230282 </ div >
231283 </ section >
232-
233- { /* Past Leadership Section */ }
234- < section className = 'mb-16' >
235- < h2 className = 'text-3xl font-bold text-slate-900 mb-12 text-center' >
236- Past Leadership
237- </ h2 >
238- < div
239- className = { `grid grid-cols-1 lg:grid-cols-2 gap-10 max-w-5xl mx-auto ${ pastLeadership . length === 1 ? 'justify-items-center' : '' } ` }
240- >
241- { pastLeadership . map ( ( lead ) => (
242- < div
243- key = { lead . name }
244- className = { `bg-white rounded-2xl shadow-lg overflow-hidden transform hover:scale-[1.02] transition-transform duration-300 ease-in-out w-full ${ pastLeadership . length === 1 ? 'lg:col-span-2 max-w-lg' : '' } ` }
245- >
246- < div className = 'p-8 flex flex-col sm:flex-row items-center' >
247- < Pane
248- flexShrink = { 0 }
249- marginBottom = { majorScale ( 3 ) }
250- marginRight = { majorScale ( 4 ) }
251- width = { 128 }
252- height = { 128 }
253- borderRadius = '50%'
254- border = { `4px solid ${ theme . colors . blue300 } ` }
255- boxShadow = '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)'
256- overflow = 'hidden'
257- >
258- < Image
259- src = { lead . imgSrc }
260- alt = { lead . name }
261- height = { 128 }
262- width = { 128 }
263- style = { { objectFit : 'cover' } }
264- />
265- </ Pane >
266- < div className = 'text-center sm:text-left' >
267- < h3 className = 'text-2xl font-bold text-slate-900' >
268- { lead . name }
269- </ h3 >
270- < p
271- className = 'text-md font-semibold mb-2'
272- style = { {
273- color : theme . colors . blue500 ,
274- } }
275- >
276- { lead . year }
277- </ p >
278- < div className = 'flex justify-center sm:justify-start space-x-4' >
279- < SocialIcon
280- href = { lead . socials . linkedin }
281- >
282- < LinkedinIcon />
283- </ SocialIcon >
284- </ div >
285- </ div >
286- </ div >
287- </ div >
288- ) ) }
289- </ div >
290- </ section >
291284 </ div >
292285 </ div >
293286 ) ;
294287}
295288
296- export default App ;
289+ export default App ;
0 commit comments