Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
a691102
technical team data fetched from contentful placeholders
Apr 24, 2025
b5e603b
Added alumni section + tabs, presidents WIP
Yemyam May 1, 2025
b70ff86
Finished presidents section, mobile view WIP.
Yemyam May 1, 2025
2597294
Styling changes
Yemyam May 4, 2025
968045e
Styling changes
Yemyam May 4, 2025
5125f19
Merge branch 'WEB-78-Add-Alumni-section' of github.com:Code-the-Chang…
Yemyam May 4, 2025
aa58de5
resolve eslLint error
Yemyam May 4, 2025
efc6ba5
Updated President avatars
Yemyam May 4, 2025
98a5d4b
styling
Yemyam May 11, 2025
c39a962
made page for our team
abia-jahangir Mar 5, 2025
6d90caa
started page
abia-jahangir Mar 5, 2025
a78c0dd
created a shell for the our team page
abia-jahangir Mar 6, 2025
51a7455
started on internal team. cant figure out linkedin icon colours
abia-jahangir Mar 13, 2025
457bdc9
small changes
abia-jahangir Mar 20, 2025
fdb0991
figured out colours and spacing
abia-jahangir Mar 20, 2025
2446142
Technical Team comp added
Mar 23, 2025
b65331b
Linter errors addressed
Mar 23, 2025
a358096
'Set' replaced with 'Filter'
Mar 23, 2025
1c84970
added carousels
Yemyam Mar 13, 2025
3812e8c
Added newsletters + fixed spacing
Yemyam Mar 25, 2025
9775899
Fixed background + pdf downloads
Yemyam Mar 27, 2025
e2465e7
Removed pdf utility
Yemyam Mar 27, 2025
0839bb6
uninstalled unused module
Yemyam Mar 27, 2025
1b223eb
Created newletter page
Yemyam Feb 19, 2025
ea22a3c
added carousels
Yemyam Mar 13, 2025
0be12b3
Added newsletters + fixed spacing
Yemyam Mar 25, 2025
fbb916a
Fixed background + pdf downloads
Yemyam Mar 27, 2025
3b105ce
Removed pdf utility
Yemyam Mar 27, 2025
0839d41
uninstalled unused module
Yemyam Mar 27, 2025
0282437
added news to navbar
Yemyam Feb 18, 2025
61a8be8
Created newletter page
Yemyam Feb 19, 2025
c907441
added squiggles in background of newsletter page. trying to move the …
abia-jahangir Feb 20, 2025
9334069
added carousels
Yemyam Mar 13, 2025
8ad5da0
Added newsletters + fixed spacing
Yemyam Mar 25, 2025
7fc698f
Refactored NewsCarousel
Yemyam Mar 27, 2025
920a49c
Fixed background + pdf downloads
Yemyam Mar 27, 2025
253edcc
Removed pdf utility
Yemyam Mar 27, 2025
ff78e27
uninstalled unused module
Yemyam Mar 27, 2025
35d88b1
Added green accent
Yemyam Mar 27, 2025
c32cfe6
Created newletter page
Yemyam Feb 19, 2025
009ac60
added squiggles in background of newsletter page. trying to move the …
abia-jahangir Feb 20, 2025
657a6bf
added carousels
Yemyam Mar 13, 2025
8c29428
Added newsletters + fixed spacing
Yemyam Mar 25, 2025
936d995
Refactored NewsCarousel
Yemyam Mar 27, 2025
96edbd8
Fixed background + pdf downloads
Yemyam Mar 27, 2025
904a737
Removed pdf utility
Yemyam Mar 27, 2025
43c420e
uninstalled unused module
Yemyam Mar 27, 2025
96bdc27
Added green accent
Yemyam Mar 27, 2025
f7bc557
internal team section complete
Apr 24, 2025
3843ca7
unused imports removed
Apr 24, 2025
7433e6f
technical team data fetched from contentful placeholders
Apr 24, 2025
833d931
Added alumni section + tabs, presidents WIP
Yemyam May 1, 2025
1526386
Finished presidents section, mobile view WIP.
Yemyam May 1, 2025
dcbaf3a
Styling changes
Yemyam May 4, 2025
3da0643
resolve eslLint error
Yemyam May 4, 2025
8aa956d
Updated President avatars
Yemyam May 4, 2025
6bb9d6c
styling
Yemyam May 11, 2025
31196ae
Merge branch 'WEB-78-Add-Alumni-section' of github.com:Code-the-Chang…
Yemyam May 11, 2025
cfbda44
Fixed president Carousel buttons and removed presidentavatar
Yemyam May 20, 2025
eb192ac
Merge branch 'main' into WEB-78-Add-Alumni-section
hannagracec May 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
211 changes: 211 additions & 0 deletions components/AlumniSection.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
import Team from './Team';
import { fetchContent } from '../api/apiRoot';
import { useState, useEffect } from 'react';
import { Tabs, TabsHeader, TabsBody, Tab, TabPanel } from '@material-tailwind/react';
import Heading from './Heading';
import { UnderlineTypes } from '../utils/underlineType';
import CoPresident from "./CoPresident";
import Image from 'next/image';
const GREEN_SIDE_LINES_DIR = '/svgs/green_side_lines.svg';

// Dummy values to be replaced with contentful
const people = [{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Events",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Events",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Events",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Events",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},

{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Events",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Events",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Events",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Finance",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Marketing",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
{
name: "John Doe",
linkedin: "randomlink.com",
position: "Dev",
project: "Tech",
pfp: {
fields: {
file: {
url: "//t3.ftcdn.net/jpg/05/16/27/58/360_F_516275801_f3Fsp17x6HQK0xQgDQEELoTuERO4SsWV.jpg"
}
}
},
classes: "text-white",
},
];

const AlumniSection = () => {
const [executives, setExecutives] = useState([]);
const [teams, setTeams] = useState([]);
const [activeTab, setActiveTab] = useState('');

useEffect(() => {
// Put Contenful stuff here
fetchContent('technicalTeam').then(() => {
setExecutives(people);

setTeams(["Presidents", "Events", "Finance", "Marketing", "Tech"]);

setActiveTab("Presidents");
});
}, []);

return (
<section className="bg-[#7055FD] p-20 md:min-h-screen h-full">
<div className="mb-20 flex flex-row justify-center">
<Image src={GREEN_SIDE_LINES_DIR} width={30} height={30} alt="" className='pb-16'/>
<Heading underlineType={UnderlineTypes.GREEN_SHORT_UNDERLINE} classes={"text-white"}>Alumni</Heading>
</div>
<div>
{teams.length > 0 && (
<Tabs
value={activeTab}>
<TabsHeader className="flex flex-row justify-center gap-4 pb-20">
{teams.map((project) => (
<Tab className={`alumni-tab rounded-full p-2 font-medium text-white ${
activeTab === project
? 'bg-[#00D3A9]'
: ''
}`} key={project} value={project} onClick={() => setActiveTab(project)}>
{project}
</Tab>
))}
</TabsHeader>
<TabsBody>
{teams.map((project) => (
<TabPanel key={project} value={project}>
{project === "Presidents" ? (
<div className="text-white text-center text-xl font-semibold flex justify-center">
<CoPresident />
</div>) : (
<Team teamMembers={executives.filter((exec) => exec.project === project)} />
)}
</TabPanel>
))}
</TabsBody>
</Tabs>
)}
</div>
</section>
);
};

export default AlumniSection;
12 changes: 10 additions & 2 deletions components/Avatar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import { PageIdentifiers } from '../utils/flags';

const PROFILE_CONTAINER = 'flex flex-col items-center m-10';

const Avatar = ({ name, linkedin, position, pfp, classes, prevRole, profileContainerClasses = '', teamIdentifier }) => {
const Avatar = ({ name, linkedin, position, pfp, classes, prevRole, currRole, profileContainerClasses = '', teamIdentifier }) => {
const img = 'https:' + pfp.fields.file.url;
const isPresidentAvatar = String(classes).includes("president-avatar");

const colorTheme =
teamIdentifier === PageIdentifiers.INTERNAL_LEVEL_CONTAINER
Expand All @@ -24,7 +25,14 @@ const Avatar = ({ name, linkedin, position, pfp, classes, prevRole, profileConta
</div>
<h2 className={`${colorTheme} text-xs sm:text-base font-semibold mt-3 ${classes}`}>{name}</h2>
<h2 className={`${colorTheme} text-xs sm:text-base font-medium mb-2 ${classes}`}>{position}</h2>
{prevRole && (
{isPresidentAvatar && (
<h2
className={`text-[#7055FD] w-28 text-center text-xs sm:text-base hidden sm:block font-medium mb-2 ${classes}`}
>
{currRole}
</h2>
)}
{(prevRole && !isPresidentAvatar) && (
<h2
className={`${colorTheme} w-28 text-center text-xs sm:text-base hidden sm:block font-medium mb-2 ${classes}`}
>
Expand Down
54 changes: 52 additions & 2 deletions components/Carousel.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,60 @@ import { Navigation, Pagination } from "swiper";
import "swiper/css";
import "swiper/css/effect-cards";
import "swiper/css/pagination";
import { useRef } from "react";

const SPACE_BETWEEN_ELEMENTS = 50;

const Carousel = (props) => {
const Carousel = ({ children, className='', ...props }) => {
const isPresidentCarousel = String(className).includes("president-carousel");
const prevRef = useRef(null);
const nextRef = useRef(null);

if (isPresidentCarousel) {
return (
<div className="relative w-full flex items-center justify-center">
{/* Custom Navigation Buttons */}
<button
ref={prevRef}
className="absolute z-10 left-[-2rem] md:left-[-4rem] top-1/2 -translate-y-1/2"
>
<div className="swiper-button-prev"></div>
</button>
<button
ref={nextRef}
className="absolute z-10 right-[-2rem] md:right-[-4rem] top-1/2 -translate-y-1/2"
>
<div className="swiper-button-next"></div>
</button>

<Swiper
style={{
"--swiper-navigation-color": "#FFF",
"--swiper-navigation-size": "25px",
"--swiper-pagination-color": "#FFF",
}}
modules={[Navigation, Pagination]}
navigation={{
prevEl: prevRef.current,
nextEl: nextRef.current,
}}
onBeforeInit={(swiper) => {
swiper.params.navigation.prevEl = prevRef.current;
swiper.params.navigation.nextEl = nextRef.current;
}}
pagination={{ clickable: true }}
spaceBetween={SPACE_BETWEEN_ELEMENTS}
className={`mySwiper ${className}`}
{...props}
>
{children.map((child, index) => (
<SwiperSlide key={index}>{child}</SwiperSlide>
))}
</Swiper>
</div>
);
}

return (
<Swiper
style={{
Expand All @@ -21,7 +71,7 @@ const Carousel = (props) => {
className="mySwiper"
{...props}
>
{props.children.map((child, index) => (
{children.map((child, index) => (
<SwiperSlide key={index}>{child}</SwiperSlide>
))}
</Swiper>
Expand Down
Loading