diff --git a/public/images/jura-hanbok.jpg b/public/images/jura-hanbok.jpg new file mode 100644 index 0000000..5ce591e Binary files /dev/null and b/public/images/jura-hanbok.jpg differ diff --git a/public/members-christmas/sean.png b/public/members-christmas/sean.png new file mode 100644 index 0000000..e49ddc2 Binary files /dev/null and b/public/members-christmas/sean.png differ diff --git a/public/members-hanbok/bekzattilekbay.png b/public/members-hanbok/bekzattilekbay.png new file mode 100644 index 0000000..426c55a Binary files /dev/null and b/public/members-hanbok/bekzattilekbay.png differ diff --git a/public/members-hanbok/chae.jpg b/public/members-hanbok/chae.jpg new file mode 100644 index 0000000..ee897a5 Binary files /dev/null and b/public/members-hanbok/chae.jpg differ diff --git a/public/members-hanbok/chanyoungpark.png b/public/members-hanbok/chanyoungpark.png new file mode 100644 index 0000000..8fcf265 Binary files /dev/null and b/public/members-hanbok/chanyoungpark.png differ diff --git a/public/members-hanbok/daeheon.jpg b/public/members-hanbok/daeheon.jpg new file mode 100644 index 0000000..858bf6f Binary files /dev/null and b/public/members-hanbok/daeheon.jpg differ diff --git a/public/members-hanbok/daeun.jpg b/public/members-hanbok/daeun.jpg new file mode 100644 index 0000000..1888c65 Binary files /dev/null and b/public/members-hanbok/daeun.jpg differ diff --git a/public/members-hanbok/eugenechoi.jpg b/public/members-hanbok/eugenechoi.jpg new file mode 100644 index 0000000..a1c52ef Binary files /dev/null and b/public/members-hanbok/eugenechoi.jpg differ diff --git a/public/members-hanbok/eunhye.jpg b/public/members-hanbok/eunhye.jpg new file mode 100644 index 0000000..5d6432a Binary files /dev/null and b/public/members-hanbok/eunhye.jpg differ diff --git a/public/members-hanbok/eunyoung.jpg b/public/members-hanbok/eunyoung.jpg new file mode 100644 index 0000000..724fcf1 Binary files /dev/null and b/public/members-hanbok/eunyoung.jpg differ diff --git a/public/members-hanbok/gosuchoi.png b/public/members-hanbok/gosuchoi.png new file mode 100644 index 0000000..9b80fdb Binary files /dev/null and b/public/members-hanbok/gosuchoi.png differ diff --git a/public/members-hanbok/haerilee.png b/public/members-hanbok/haerilee.png new file mode 100644 index 0000000..44dfa7a Binary files /dev/null and b/public/members-hanbok/haerilee.png differ diff --git a/public/members-hanbok/hayeon.png b/public/members-hanbok/hayeon.png new file mode 100644 index 0000000..84c7a50 Binary files /dev/null and b/public/members-hanbok/hayeon.png differ diff --git a/public/members-hanbok/heechan_lee.jpg b/public/members-hanbok/heechan_lee.jpg new file mode 100644 index 0000000..57d23f6 Binary files /dev/null and b/public/members-hanbok/heechan_lee.jpg differ diff --git a/public/members-hanbok/hyehyun.jpg b/public/members-hanbok/hyehyun.jpg new file mode 100644 index 0000000..4f4d3ed Binary files /dev/null and b/public/members-hanbok/hyehyun.jpg differ diff --git a/public/members-hanbok/hyewon.png b/public/members-hanbok/hyewon.png new file mode 100644 index 0000000..0fa03ce Binary files /dev/null and b/public/members-hanbok/hyewon.png differ diff --git a/public/members-hanbok/hyungyu.png b/public/members-hanbok/hyungyu.png new file mode 100644 index 0000000..ac7af65 Binary files /dev/null and b/public/members-hanbok/hyungyu.png differ diff --git a/public/members-hanbok/hyunjungyi.jpg b/public/members-hanbok/hyunjungyi.jpg new file mode 100644 index 0000000..691168a Binary files /dev/null and b/public/members-hanbok/hyunjungyi.jpg differ diff --git a/public/members-hanbok/hyunseok.jpg b/public/members-hanbok/hyunseok.jpg new file mode 100644 index 0000000..3aa44a4 Binary files /dev/null and b/public/members-hanbok/hyunseok.jpg differ diff --git a/public/members-hanbok/hyunwoo.png b/public/members-hanbok/hyunwoo.png new file mode 100644 index 0000000..455681e Binary files /dev/null and b/public/members-hanbok/hyunwoo.png differ diff --git a/public/members-hanbok/jaesang.jpg b/public/members-hanbok/jaesang.jpg new file mode 100644 index 0000000..89a6b4e Binary files /dev/null and b/public/members-hanbok/jaesang.jpg differ diff --git a/public/members-hanbok/jaeyoung.jpeg b/public/members-hanbok/jaeyoung.jpeg new file mode 100644 index 0000000..e66873d Binary files /dev/null and b/public/members-hanbok/jaeyoung.jpeg differ diff --git a/public/members-hanbok/jennyyang.jpg b/public/members-hanbok/jennyyang.jpg new file mode 100644 index 0000000..25c55aa Binary files /dev/null and b/public/members-hanbok/jennyyang.jpg differ diff --git a/public/members-hanbok/jihohanan.jpg b/public/members-hanbok/jihohanan.jpg new file mode 100644 index 0000000..47d3951 Binary files /dev/null and b/public/members-hanbok/jihohanan.jpg differ diff --git a/public/members-hanbok/juhokim.jpg b/public/members-hanbok/juhokim.jpg new file mode 100644 index 0000000..a6652cb Binary files /dev/null and b/public/members-hanbok/juhokim.jpg differ diff --git a/public/members-hanbok/juhyeon.png b/public/members-hanbok/juhyeon.png new file mode 100644 index 0000000..94dfe07 Binary files /dev/null and b/public/members-hanbok/juhyeon.png differ diff --git a/public/members-hanbok/junhomyung.png b/public/members-hanbok/junhomyung.png new file mode 100644 index 0000000..991afc0 Binary files /dev/null and b/public/members-hanbok/junhomyung.png differ diff --git a/public/members-hanbok/kihoon.png b/public/members-hanbok/kihoon.png new file mode 100644 index 0000000..e37f85f Binary files /dev/null and b/public/members-hanbok/kihoon.png differ diff --git a/public/members-hanbok/mingyu.png b/public/members-hanbok/mingyu.png new file mode 100644 index 0000000..49b5159 Binary files /dev/null and b/public/members-hanbok/mingyu.png differ diff --git a/public/members-hanbok/minju.jpg b/public/members-hanbok/minju.jpg new file mode 100644 index 0000000..e48391b Binary files /dev/null and b/public/members-hanbok/minju.jpg differ diff --git a/public/members-hanbok/nadia.jpg b/public/members-hanbok/nadia.jpg new file mode 100644 index 0000000..31aa4cf Binary files /dev/null and b/public/members-hanbok/nadia.jpg differ diff --git a/public/members-hanbok/oaksil.jpg b/public/members-hanbok/oaksil.jpg new file mode 100644 index 0000000..ffa0a95 Binary files /dev/null and b/public/members-hanbok/oaksil.jpg differ diff --git a/public/members-hanbok/saelyne.jpg b/public/members-hanbok/saelyne.jpg new file mode 100644 index 0000000..3bd207f Binary files /dev/null and b/public/members-hanbok/saelyne.jpg differ diff --git a/public/members-hanbok/sclee.jpg b/public/members-hanbok/sclee.jpg new file mode 100644 index 0000000..9d29623 Binary files /dev/null and b/public/members-hanbok/sclee.jpg differ diff --git a/public/members-hanbok/sean.jpg b/public/members-hanbok/sean.jpg new file mode 100644 index 0000000..bfe8018 Binary files /dev/null and b/public/members-hanbok/sean.jpg differ diff --git a/public/members-hanbok/sehoon.png b/public/members-hanbok/sehoon.png new file mode 100644 index 0000000..9b0ce7d Binary files /dev/null and b/public/members-hanbok/sehoon.png differ diff --git a/public/members-hanbok/seoyeon.jpg b/public/members-hanbok/seoyeon.jpg new file mode 100644 index 0000000..0c6603a Binary files /dev/null and b/public/members-hanbok/seoyeon.jpg differ diff --git a/public/members-hanbok/seungju.jpg b/public/members-hanbok/seungju.jpg new file mode 100644 index 0000000..8b5e378 Binary files /dev/null and b/public/members-hanbok/seungju.jpg differ diff --git a/public/members-hanbok/shujun.jpg b/public/members-hanbok/shujun.jpg new file mode 100644 index 0000000..13005a9 Binary files /dev/null and b/public/members-hanbok/shujun.jpg differ diff --git a/public/members-hanbok/taesoo.png b/public/members-hanbok/taesoo.png new file mode 100644 index 0000000..af49cbe Binary files /dev/null and b/public/members-hanbok/taesoo.png differ diff --git a/public/members-hanbok/yeonsupark.jpg b/public/members-hanbok/yeonsupark.jpg new file mode 100644 index 0000000..10617d2 Binary files /dev/null and b/public/members-hanbok/yeonsupark.jpg differ diff --git a/public/members-hanbok/yoonseo.jpg b/public/members-hanbok/yoonseo.jpg new file mode 100644 index 0000000..5edcd49 Binary files /dev/null and b/public/members-hanbok/yoonseo.jpg differ diff --git a/public/members-hanbok/yoonsu.jpg b/public/members-hanbok/yoonsu.jpg new file mode 100644 index 0000000..8487d24 Binary files /dev/null and b/public/members-hanbok/yoonsu.jpg differ diff --git a/public/members-hanbok/yuri.png b/public/members-hanbok/yuri.png new file mode 100644 index 0000000..5f7a29f Binary files /dev/null and b/public/members-hanbok/yuri.png differ diff --git a/public/members-hanbok/zhengwei.jpg b/public/members-hanbok/zhengwei.jpg new file mode 100644 index 0000000..8ff0efb Binary files /dev/null and b/public/members-hanbok/zhengwei.jpg differ diff --git a/public/members/jaeyoung.jpeg b/public/members/jaeyoung.jpeg new file mode 100644 index 0000000..b42edcd Binary files /dev/null and b/public/members/jaeyoung.jpeg differ diff --git a/public/members/jaeyoung.jpg b/public/members/jaeyoung.jpg deleted file mode 100644 index 4d8f198..0000000 Binary files a/public/members/jaeyoung.jpg and /dev/null differ diff --git a/public/members/juhyeon.jpg b/public/members/juhyeon.jpg index 5f46808..2bfdbda 100644 Binary files a/public/members/juhyeon.jpg and b/public/members/juhyeon.jpg differ diff --git a/src/app/people/page.tsx b/src/app/people/page.tsx index f8f99ea..e67ee82 100644 --- a/src/app/people/page.tsx +++ b/src/app/people/page.tsx @@ -2,7 +2,7 @@ import { FontVariant, ScreenSize, linearlyScaleSize } from '@/app/theme' import { AlumniCard, SpecialThanksCard } from '@/components/AlumniCard' import { Divider } from '@/components/Divider' -import { MemberCard } from '@/components/MemberCard' +import { MemberCard, CurrentMode } from '@/components/MemberCard' import { Section, SectionTitle, Sections } from '@/components/Section' import { Sidebar } from '@/components/SideBar' import { ALUMNI_MEMBERS_BY_POSITION, CURRENT_MEMBERS_BY_POSITION, KixlabPositions } from '@/data/members' @@ -104,7 +104,7 @@ export default function Page() { {position} {CURRENT_MEMBERS_BY_POSITION[position].map(member => ( - + ))} diff --git a/src/components/AlumniCard.tsx b/src/components/AlumniCard.tsx index ac80007..d9322aa 100644 --- a/src/components/AlumniCard.tsx +++ b/src/components/AlumniCard.tsx @@ -1,11 +1,12 @@ 'use client' -import React from 'react' +import React, { useState } from 'react' import styled from '@emotion/styled' import { FontVariant, Color } from '@/app/theme' import Link from 'next/link' import { Member } from '@/data/members' import Image from 'next/image' +import { CurrentMode } from './MemberCard' const AlumniCardContainer = styled.div` width: 100%; @@ -127,6 +128,28 @@ export const AlumniCard = ({ mem }: { mem: Member }) => { ) } +const JuraImageWrapper = styled.div` + position: relative; + width: 200px; + height: 200px; + flex-shrink: 0; +` + +const FadingImage = styled.div<{ opacity: number }>` + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + transition: opacity 0.3s ease-in-out; + opacity: ${({ opacity }) => opacity}; +` + +const juraHoverImages: Partial> = { + DEFAULT: '/images/jura.png', + HANBOK: '/images/jura-hanbok.jpg', +} + export const SpecialThanksCard = ({ img, name, @@ -138,9 +161,34 @@ export const SpecialThanksCard = ({ position: string description: string }) => { + const [isHovered, setIsHovered] = useState(false) + + const hoverImg = juraHoverImages[CurrentMode] + const hasHover = Boolean(hoverImg) + + const toggleHover = () => { + setIsHovered(prev => !prev) + } + return ( - Jura Coffee Machine + setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + onClick={toggleHover} + > + {/* Base Image */} + + Jura Coffee Machine + + + {/* Hover Image */} + {hasHover && hoverImg && ( + + Jura Coffee Machine (Hover) + + )} +
{name} diff --git a/src/components/ImageWithFallback.tsx b/src/components/ImageWithFallback.tsx index c8f9cd4..ed42b6e 100644 --- a/src/components/ImageWithFallback.tsx +++ b/src/components/ImageWithFallback.tsx @@ -1,12 +1,31 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' import Image, { ImageProps } from 'next/image' -export const ImageWithFallback = ({ fallbackSrc, ...props }: { fallbackSrc: string } & ImageProps) => { - const [imageSrc, setImageSrc] = useState(props.src) +interface Props extends Omit { + src: ImageProps['src'] + fallbackSrc: string | string[] +} + +export const ImageWithFallback = ({ fallbackSrc, src, ...props }: Props) => { + const [imageSrc, setImageSrc] = useState(src) + const [errorIndex, setErrorIndex] = useState(0) + + useEffect(() => { + setImageSrc(src) + setErrorIndex(0) + }, [src]) const onError = () => { + if (Array.isArray(fallbackSrc)) { + if (errorIndex < fallbackSrc.length) { + const next = fallbackSrc[errorIndex] + setImageSrc(next) + setErrorIndex(prev => prev + 1) + } + return + } setImageSrc(fallbackSrc) } - return {props.alt} + return } diff --git a/src/components/MemberCard.tsx b/src/components/MemberCard.tsx index f39ae9b..41e2e79 100644 --- a/src/components/MemberCard.tsx +++ b/src/components/MemberCard.tsx @@ -1,11 +1,20 @@ 'use client' -import React from 'react' +import React, { useMemo, useState } from 'react' import styled from '@emotion/styled' import { FontVariant, Color } from '@/app/theme' import { ImageWithFallback } from '@/components/ImageWithFallback' import { Member } from '@/data/members' -import Link from 'next/link' + +enum ProfileMode { + DEFAULT = 'DEFAULT', + CHRISTMAS = 'CHRISTMAS', + CHILDREN = 'CHILDREN', + APRIL_FOOLS = 'APRIL-FOOLS', + HANBOK = 'HANBOK', +} + +export const CurrentMode = ProfileMode.HANBOK const Card = styled.div` max-width: 250px; @@ -96,21 +105,63 @@ const ThesisButton = styled.a` interface Props { member: Member + mode?: ProfileMode } -export const MemberCard = ({ member }: Props) => { +export const MemberCard = ({ member, mode = ProfileMode.DEFAULT }: Props) => { + const [isHovered, setIsHovered] = useState(false) + + const originalSrc = member.img ? `/members/${member.img}` : '/members/default.png' + const hoverSrc = useMemo(() => { + if (mode === ProfileMode.DEFAULT) return undefined + return member.hoverImg?.[mode] + }, [member.hoverImg, mode]) + + const hasHover = Boolean(hoverSrc) + + const handleEnter = () => { + if (!hasHover) return + setIsHovered(true) + } + const handleLeave = () => { + if (!hasHover) return + setIsHovered(false) + } + const handleClick = () => { + if (!hasHover) return + setIsHovered(prev => !prev) + } + return ( - + + {hasHover && ( + + )} diff --git a/src/data/members.ts b/src/data/members.ts index fa4440e..9d9dd54 100644 --- a/src/data/members.ts +++ b/src/data/members.ts @@ -18,12 +18,15 @@ export type Period = { endYear?: number } +export type ProfileModeKey = 'CHRISTMAS' | 'CHILDREN' | 'APRIL-FOOLS' | 'HANBOK' + interface Props { firstName: string lastName: string email?: string kixlabPosition: KixlabPositionTypes img?: string + hoverImg?: Partial> site?: string msThesis?: string phdThesis?: string @@ -52,6 +55,7 @@ export const MEMBERS = { email: 'harriet@kaist.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'haerilee.png', + hoverImg: { HANBOK: 'members-hanbok/haerilee.png' }, affiliation: 'KAIST', startYear: 2026, startSeason: 'Winter', @@ -62,6 +66,7 @@ export const MEMBERS = { email: 'zwei302@connect.ust.hk', kixlabPosition: 'Postdoc Researcher', img: 'zhengwei.jpg', + hoverImg: { HANBOK: 'members-hanbok/zhengwei.jpg' }, site: 'https://www.zhengwei302.com/', affiliation: 'KAIST', startYear: 2026, @@ -73,6 +78,7 @@ export const MEMBERS = { email: 'hhs5125@kaist.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'hyunseok.jpg', + hoverImg: { HANBOK: 'members-hanbok/hyunseok.jpg' }, affiliation: 'KAIST', startYear: 2026, startSeason: 'Winter', @@ -83,6 +89,7 @@ export const MEMBERS = { email: 'jfchae1483@gmail.com', kixlabPosition: 'Visiting Researcher', img: 'chae.jpg', + hoverImg: { HANBOK: 'members-hanbok/chae.jpg' }, affiliation: 'ROK.Army', startYear: 2026, startSeason: 'Winter', @@ -93,6 +100,7 @@ export const MEMBERS = { email: 'yurilee@postech.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'yuri.jpg', + hoverImg: { HANBOK: 'members-hanbok/yuri.png' }, affiliation: 'POSTECH', startYear: 2026, startSeason: 'Winter', @@ -103,6 +111,7 @@ export const MEMBERS = { email: 'eugene@snu.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'eugenechoi.jpg', + hoverImg: { HANBOK: 'members-hanbok/eugenechoi.jpg' }, site: 'https://eugene-choi.vercel.app/', affiliation: 'SNU', startYear: 2026, @@ -114,6 +123,7 @@ export const MEMBERS = { email: 'pcy1203@snu.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'chanyoungpark.jpg', + hoverImg: { HANBOK: 'members-hanbok/chanyoungpark.png' }, affiliation: 'SNU', startYear: 2026, startSeason: 'Winter', @@ -124,6 +134,7 @@ export const MEMBERS = { email: 'wngus0223@snu.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'juhyeon.jpg', + hoverImg: { HANBOK: 'members-hanbok/juhyeon.png' }, affiliation: 'SNU', startYear: 2026, startSeason: 'Winter', @@ -134,6 +145,7 @@ export const MEMBERS = { email: 'gyu7991@unist.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'mingyu.jpg', + hoverImg: { HANBOK: 'members-hanbok/mingyu.png' }, site: 'https://strawberrycheesecake2.github.io/', affiliation: 'UNIST', startYear: 2026, @@ -144,7 +156,8 @@ export const MEMBERS = { lastName: 'Kwon', email: 'jaylions@snu.ac.kr', kixlabPosition: 'Undergrad Intern', - img: 'jaeyoung.jpg', + img: 'jaeyoung.jpeg', + hoverImg: { HANBOK: 'members-hanbok/jaeyoung.jpeg' }, site: 'https://www.jaykwon.me/', affiliation: 'SNU', startYear: 2026, @@ -156,6 +169,7 @@ export const MEMBERS = { email: 'hyoungjung.yi@gmail.com', kixlabPosition: 'Undergrad Intern', img: 'hyunjungyi.png', + hoverImg: { HANBOK: 'members-hanbok/hyunjungyi.jpg' }, site: 'https://hyoungjungyi.github.io/', affiliation: 'Korea Univ', startYear: 2026, @@ -178,6 +192,7 @@ export const MEMBERS = { email: 'hanan.dev04@gmail.com', kixlabPosition: 'Visiting Researcher', img: 'jihohanan.jpg', + hoverImg: { HANBOK: 'members-hanbok/jihohanan.jpg' }, site: 'https://jiho.dev/', affiliation: 'SNU', startYear: 2025, @@ -202,6 +217,7 @@ export const MEMBERS = { email: 'jeff1015jeff@outlook.com', kixlabPosition: 'Visiting Researcher', img: 'shujun.jpg', + hoverImg: { HANBOK: 'members-hanbok/shujun.jpg' }, affiliation: 'PolyU_HK', startYear: 2025, startSeason: 'Summer', @@ -212,6 +228,7 @@ export const MEMBERS = { email: 'hayeonlr@gmail.com', kixlabPosition: 'Undergrad Intern', img: 'hayeon.jpeg', + hoverImg: { HANBOK: 'members-hanbok/hayeon.png' }, affiliation: 'Ewha', startYear: 2025, startSeason: 'Summer', @@ -248,6 +265,7 @@ export const MEMBERS = { email: 'seahn1021@snu.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'sean.jpg', + hoverImg: { HANBOK: 'members-hanbok/sean.jpg', CHRISTMAS: 'members-christmas/sean.png' }, site: 'https://kimsean.vercel.app/', affiliation: 'SNU', startYear: 2025, @@ -273,6 +291,7 @@ export const MEMBERS = { email: 'jenny_yang@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'jennyyang.png', + hoverImg: { HANBOK: 'members-hanbok/jennyyang.jpg' }, site: '', affiliation: 'KAIST', startYear: 2025, @@ -284,6 +303,7 @@ export const MEMBERS = { email: 'sehoon1106@kaist.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'sehoon.png', + hoverImg: { HANBOK: 'members-hanbok/sehoon.png' }, site: '', affiliation: 'KAIST', startYear: 2025, @@ -337,6 +357,7 @@ export const MEMBERS = { email: 'nadia.arvi@kaist.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'nadia.png', + hoverImg: { HANBOK: 'members-hanbok/nadia.jpg' }, site: 'https://nadiarvi.github.io/online-resume/', affiliation: 'KAIST', startYear: 2025, @@ -348,6 +369,7 @@ export const MEMBERS = { email: 'byunhwan8832@korea.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'seoyeon.jpg', + hoverImg: { HANBOK: 'members-hanbok/seoyeon.jpg' }, site: 'https://seooyxx.com/', affiliation: 'Korea Univ', }, @@ -398,6 +420,7 @@ export const MEMBERS = { email: 'coregosu12@kaist.ac.kr', kixlabPosition: 'Undergrad Intern', img: 'gosuchoi.jpg', + hoverImg: { HANBOK: 'members-hanbok/gosuchoi.png' }, affiliation: 'KAIST', }, seungjukim: { @@ -406,6 +429,7 @@ export const MEMBERS = { email: 'sjkim64891@gmail.com', kixlabPosition: 'Postdoc Researcher', img: 'seungju.jpeg', + hoverImg: { HANBOK: 'members-hanbok/seungju.jpg' }, startYear: 2024, startSeason: 'Fall', }, @@ -429,6 +453,7 @@ export const MEMBERS = { kixlabPosition: 'Faculty', currentPosition: 'Associate Professor', img: 'juhokim.jpg', + hoverImg: { HANBOK: 'members-hanbok/juhokim.jpg' }, site: 'http://juhokim.com/', startYear: 2016, startSeason: 'Summer', @@ -453,6 +478,7 @@ export const MEMBERS = { email: 'daeun.choi@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'daeun.jpg', + hoverImg: { HANBOK: 'members-hanbok/daeun.jpg' }, site: 'https://daeunchoi.com/', msThesis: 'https://kixlab.github.io/website-files/theses/thesis-ms-2024-daeun.pdf', }, @@ -462,6 +488,7 @@ export const MEMBERS = { email: 'yoon0u0@gmail.com', kixlabPosition: 'Ph.D. Student', img: 'yoonseo.jpeg', + hoverImg: { HANBOK: 'members-hanbok/yoonseo.jpg' }, site: 'https://www.yoonseochoi.com/', msThesis: 'https://kixlab.github.io/website-files/theses/thesis-ms-2021-yoonseo.pdf', }, @@ -471,6 +498,7 @@ export const MEMBERS = { email: 'khw0726@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'hyunwoo.png', + hoverImg: { HANBOK: 'members-hanbok/hyunwoo.png' }, site: 'https://hyunwoo.me/', msThesis: 'https://kixlab.github.io/website-files/theses/thesis-ms-2019-hyunwoo.pdf', }, @@ -495,6 +523,7 @@ export const MEMBERS = { email: 'taesoo.kim@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'taesoo.jpg', + hoverImg: { HANBOK: 'members-hanbok/taesoo.png' }, site: 'https://taesookim.com/', msThesis: 'https://kixlab.github.io/website-files/theses/thesis-ms-2022-taesoo.pdf', }, @@ -504,6 +533,7 @@ export const MEMBERS = { email: 'yoonsu16@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'yoonsu.jpg', + hoverImg: { HANBOK: 'members-hanbok/yoonsu.jpg' }, site: 'https://yoonsu0816.github.io/', msThesis: 'https://kixlab.github.io/website-files/theses/thesis-ms-2024-yoonsu.pdf', }, @@ -513,6 +543,7 @@ export const MEMBERS = { email: 'eunyoung4444@gmail.com', kixlabPosition: 'Ph.D. Student', img: 'eunyoung.jpg', + hoverImg: { HANBOK: 'members-hanbok/eunyoung.jpg' }, site: 'https://eunyoungko.com/', }, yoonjoolee: { @@ -536,6 +567,7 @@ export const MEMBERS = { email: 'hyungyu.sh@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'hyungyu.jpg', + hoverImg: { HANBOK: 'members-hanbok/hyungyu.png' }, site: 'https://hyungyu.com/', msThesis: 'https://kixlab.github.io/website-files/theses/thesis-ms-2019-hyungyu.pdf', }, @@ -545,6 +577,7 @@ export const MEMBERS = { email: 'leesungchul@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'sclee.png', + hoverImg: { HANBOK: 'members-hanbok/sclee.jpg' }, startYear: 2016, startSeason: 'Summer', }, @@ -554,6 +587,7 @@ export const MEMBERS = { email: 'kihoon.son@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'kihoon.jpg', + hoverImg: { HANBOK: 'members-hanbok/kihoon.png' }, site: 'https://kihoon-son.github.io/', }, saelyneyang: { @@ -562,6 +596,7 @@ export const MEMBERS = { email: 'saelyne@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'saelyne.jpg', + hoverImg: { HANBOK: 'members-hanbok/saelyne.jpg' }, site: 'https://www.saelyne.com/', msThesis: 'https://kixlab.github.io/website-files/theses/thesis-ms-2021-saelyne.pdf', }, @@ -615,6 +650,7 @@ export const MEMBERS = { email: 'junho00211@kaist.ac.kr', kixlabPosition: 'Ph.D. Student', img: 'junhomyung.jpg', + hoverImg: { HANBOK: 'members-hanbok/junhomyung.png' }, startYear: 2023, startSeason: 'Spring', site: 'https://junhomyung.github.io/', @@ -625,6 +661,7 @@ export const MEMBERS = { email: 'yeonsupark@kaist.ac.kr', kixlabPosition: 'M.S. Student', img: 'yeonsupark.jpg', + hoverImg: { HANBOK: 'members-hanbok/yeonsupark.jpg' }, }, alexsuryapranata: { firstName: 'Alex', @@ -646,6 +683,7 @@ export const MEMBERS = { email: 'tlekbay.b@gmail.com', kixlabPosition: 'Ph.D. Student', img: 'bekzattilekbay.jpg', + hoverImg: { HANBOK: 'members-hanbok/bekzattilekbay.png' }, }, jiangnanxu: { firstName: 'Jiangnan', @@ -667,6 +705,7 @@ export const MEMBERS = { email: 'jaesangyu22@gmail.com', kixlabPosition: 'M.S. Student', img: 'jaesang.jpg', + hoverImg: { HANBOK: 'members-hanbok/jaesang.jpg' }, startSeason: 'Spring', startYear: 2025, }, @@ -676,6 +715,7 @@ export const MEMBERS = { email: 'neohgeek@gmail.com', kixlabPosition: 'M.S. Student', img: 'daeheon.png', + hoverImg: { HANBOK: 'members-hanbok/daeheon.jpg' }, site: 'https://jdaeheon.github.io/', startSeason: 'Fall', startYear: 2024, @@ -777,6 +817,7 @@ export const MEMBERS = { email: 'hclee99@kaist.ac.kr', kixlabPosition: 'M.S. Student', img: 'heechan_lee.jpeg', + hoverImg: { HANBOK: 'members-hanbok/heechan_lee.jpg' }, site: 'https://heechanlee.com', startSeason: 'Spring', startYear: 2025, @@ -801,6 +842,7 @@ export const MEMBERS = { email: 'gracekim027@snu.ac.kr', kixlabPosition: 'M.S. Student', img: 'eunhye.jpg', + hoverImg: { HANBOK: 'members-hanbok/eunhye.jpg' }, site: 'https://gracekim027.github.io/', }, yoonsanglee: { @@ -851,6 +893,7 @@ export const MEMBERS = { email: 'ded06031@snu.ac.kr', kixlabPosition: 'M.S. Student', img: 'hyehyun.png', + hoverImg: { HANBOK: 'members-hanbok/hyehyun.jpg' }, site: 'https://hyehyunchu.vercel.app/', startSeason: 'Fall', startYear: 2024, @@ -861,6 +904,7 @@ export const MEMBERS = { email: 'minjuu.yoo@gmail.com', kixlabPosition: 'M.S. Student', img: 'minju.jpg', + hoverImg: { HANBOK: 'members-hanbok/minju.jpg' }, site: 'https://minjuu1.github.io', }, brandonchin: { @@ -1359,6 +1403,7 @@ export const MEMBERS = { lastName: 'Lee', kixlabPosition: 'Undergrad Intern', img: 'hyewon.jpg', + hoverImg: { HANBOK: 'members-hanbok/hyewon.png' }, email: 'hyewon0809@kaist.ac.kr', site: 'https://hyewon.me/', startYear: 2023, @@ -2339,6 +2384,7 @@ export const MEMBERS = { email: 'oksil@kaist.ac.kr', kixlabPosition: 'Staff', img: 'oaksil.jpg', + hoverImg: { HANBOK: 'members-hanbok/oaksil.jpg' }, }, } as const satisfies Record