diff --git a/src/app/agentic-ai/page.tsx b/src/app/agentic-ai/page.tsx index 7be28c67..494f9317 100644 --- a/src/app/agentic-ai/page.tsx +++ b/src/app/agentic-ai/page.tsx @@ -2,6 +2,7 @@ import NavBar, { type Link } from '@/components/Navabr'; import About_Bootcamp from '@/components/Bootcamp/About'; import Content from '@/components/Bootcamp/Content'; import FAQ from '@/components/Bootcamp/FAQ'; +import ContentCarousel from '@/components/Bootcamp/ContentCarousel'; import ProjectShowcase from '@/components/Bootcamp/ProjectShowcase'; import BootcampCarousel from '@/components/Bootcamp/BootcampCarousel'; @@ -18,16 +19,8 @@ export default function MLPage() {
- - + -
diff --git a/src/app/datathon/page.tsx b/src/app/datathon/page.tsx index 7dac7c21..3b2861a7 100644 --- a/src/app/datathon/page.tsx +++ b/src/app/datathon/page.tsx @@ -9,7 +9,6 @@ import DatathonHero from '@/components/Datathon/Hero'; import AboutDatathon from '@/components/Datathon/About'; import { FAQ } from '@/components/Datathon/FAQ'; import { ImageCarousel } from '@/components/Datathon/HighlightCarousel'; -import Sponsors from '@/components/Datathon/Sponsors'; import img1 from '@/public/Datathon/carousel/IMG_1818.png'; import img2 from '@/public/Datathon/carousel/IMG_1883.png'; @@ -73,7 +72,7 @@ export default function Datathon() { const links: Link[] = [ { title: 'Home', href: '/' }, { title: 'About', href: '#about-us' }, - { title: 'Sponsors', href: '#sponsors' }, + //{ title: 'Sponsors', href: '#sponsors' }, { title: 'Highlights', href: '#highlights' }, { title: 'FAQ', href: '#faq' }, ]; @@ -94,10 +93,10 @@ export default function Datathon() {

+ className="mt-6 px-12 py-2 text-lg md:text-2xl lg:text-6xl font-bold transition-all shadow-lg mb-20"> → - + {/* Tag Removed */} diff --git a/src/components/Bootcamp/Content/index.tsx b/src/components/Bootcamp/Content/index.tsx index 5d434cec..33565204 100644 --- a/src/components/Bootcamp/Content/index.tsx +++ b/src/components/Bootcamp/Content/index.tsx @@ -18,6 +18,7 @@ export interface ContentProps { hasSlides?: boolean; hasNotebook?: boolean; hasContent?: boolean; + title?: string; } const defaultPlaceholderText = { @@ -27,7 +28,7 @@ const defaultPlaceholderText = { }; const yearToSheetName: { [key: string]: string } = { - '2024': 'sheet1', + '2024': 'Archive', '2025': '2025', }; @@ -48,6 +49,7 @@ export default function Content({ hasSlides = false, hasNotebook = false, hasContent = false, + title = '', }: ContentProps) { const [content, setContent] = useState([]); @@ -87,7 +89,11 @@ export default function Content({ } if (hasContent) { - content = otherColumns[col].toLowerCase() === 'true'; + if (year == '2025') { + content = otherColumns[col].toLowerCase() === 'true'; + } else { + content = true; + } } return { @@ -107,10 +113,10 @@ export default function Content({ return (
+ className="flex flex-col items-center justify-center space-y-10 space-x-0 pb-5">

- Content + {title ? title : 'Content'}

@@ -171,7 +177,7 @@ export default function Content({ ) : ( - {hasSlides ? defaultPlaceholderText.noNotebook : ''} + {hasNotebook ? defaultPlaceholderText.noNotebook : ''} )}

diff --git a/src/components/Bootcamp/ContentCarousel/index.tsx b/src/components/Bootcamp/ContentCarousel/index.tsx new file mode 100644 index 00000000..d6e05a92 --- /dev/null +++ b/src/components/Bootcamp/ContentCarousel/index.tsx @@ -0,0 +1,81 @@ +'use client'; + +import React, { useEffect, useState } from 'react'; +import useEmblaCarousel from 'embla-carousel-react'; +import Content from '@/components/Bootcamp/Content'; + +export default function ContentCarousel() { + const [emblaRef, emblaApi] = useEmblaCarousel({ + loop: true, + align: 'center', + }); + + const [selectedIndex, setSelectedIndex] = useState(0); + + //@ts-ignore + useEffect(() => { + if (!emblaApi) return; + const onSelect = () => setSelectedIndex(emblaApi.selectedScrollSnap()); + emblaApi.on('select', onSelect); + return () => emblaApi.off('select', onSelect); + }, [emblaApi]); + + const contents = [ + { + year: '2025', + hasSlides: true, + hasRecordings: false, + hasNotebook: true, + hasContent: true, + title: 'Agentic AI Content 2025', + }, + { + year: '2024', + hasSlides: true, + hasRecordings: true, + hasNotebook: false, + hasContent: true, + title: 'ML Bootcamp Content 2024', + }, + ]; + + return ( +
+
+
+ {contents.map((content, index) => ( +
+ +
+ ))} +
+ +
+ {[0, 1].map((index) => ( +
+
+
+ ); +} diff --git a/src/components/Datathon/HighlightCarousel/index.tsx b/src/components/Datathon/HighlightCarousel/index.tsx index 6fe1276e..88607c30 100644 --- a/src/components/Datathon/HighlightCarousel/index.tsx +++ b/src/components/Datathon/HighlightCarousel/index.tsx @@ -1,84 +1,152 @@ 'use client'; -import React, { useEffect, useState } from 'react'; -import useEmblaCarousel from 'embla-carousel-react'; +import { Swiper, SwiperSlide } from 'swiper/react'; +import { Autoplay, Pagination, EffectCoverflow } from 'swiper/modules'; import Image from 'next/image'; -import Autoplay from 'embla-carousel-autoplay'; + +import 'swiper/css'; +import 'swiper/css/pagination'; +import 'swiper/css/effect-coverflow'; interface ImageCarouselProps { images: string[]; } export function ImageCarousel({ images }: ImageCarouselProps) { - const [emblaRef, emblaApi] = useEmblaCarousel( - { - loop: true, - align: 'center', - }, - [Autoplay({ playOnInit: true, stopOnInteraction: false, delay: 3000 })], - ); - const [selectedIndex, setSelectedIndex] = useState(0); + return ( +
+

+ Bootcamp Highlights +

- //@ts-ignore - useEffect(() => { - if (!emblaApi) return; +
+
+ + {images.map((img, idx) => ( + + {({ isActive }) => ( +
+ {`Bootcamp +
+ )} +
+ ))} +
+
- const onSelect = () => setSelectedIndex(emblaApi.selectedScrollSnap()); - emblaApi.on('select', onSelect); +
-
+
); } diff --git a/src/components/Datathon/Sponsors/index.tsx b/src/components/Datathon/Sponsors/index.tsx index 56065a4b..43f2b80a 100644 --- a/src/components/Datathon/Sponsors/index.tsx +++ b/src/components/Datathon/Sponsors/index.tsx @@ -1,11 +1,11 @@ import SponsorsCard, { type Sponsors } from './SponsorsCard'; -import FGF from '@/public/Datathon/Sponsors/FGF.svg'; -import KlickHealth from '@/public/Datathon/Sponsors/Klick Health.svg'; -import theScore from '@/public/Datathon/Sponsors/theScore.svg'; -import VectorInstitute from '@/public/Datathon/Sponsors/Vector Institute.svg'; -import MSReactor from '@/public/Datathon/Sponsors/MSReactor.svg'; -import MLH from '@/public/Datathon/Sponsors/MLH.svg'; +import FGF from '@/public/Sponsors/FGF.svg'; +import KlickHealth from '@/public/Sponsors/Klick Health.svg'; +import theScore from '@/public/Sponsors/theScore.svg'; +import VectorInstitute from '@/public/Sponsors/Vector Institute.svg'; +import MSReactor from '@/public/Sponsors/MSReactor.svg'; +import MLH from '@/public/Sponsors/MLH.svg'; const sponsors: Sponsors[] = [ { diff --git a/src/components/Main/Sponsors/SponsorCard/index.tsx b/src/components/Main/Sponsors/SponsorCard/index.tsx index 0da15c54..42203517 100644 --- a/src/components/Main/Sponsors/SponsorCard/index.tsx +++ b/src/components/Main/Sponsors/SponsorCard/index.tsx @@ -1,19 +1,36 @@ -export interface Sponsor { - logo?: { - src: string; - alt: string; - }; - text: string; - author: string; - position: string; +import Image from 'next/image'; +import Link from 'next/link'; +import { type StaticImageData } from 'next/image'; + +export interface Sponsors { + name: string; + logo: StaticImageData; + link: string; + className?: string; } -export default function SponsorCard({ text, author, position }: Sponsor) { +export default function SponsorsCard({ + name, + logo, + link, + className, +}: Sponsors) { return ( -
-

{text}

-

{author}

-

{position}

+
+ + {name} +
); } diff --git a/src/components/Main/Sponsors/index.tsx b/src/components/Main/Sponsors/index.tsx index 13f3cd13..93fda07d 100644 --- a/src/components/Main/Sponsors/index.tsx +++ b/src/components/Main/Sponsors/index.tsx @@ -1,38 +1,58 @@ import { Button } from '@/components/Button'; -import SponsorCard, { type Sponsor } from './SponsorCard'; +import SponsorsCard, { type Sponsors } from './SponsorCard'; -const sponsors: Sponsor[] = [ +import FGF from '@/public/Sponsors/FGF.svg'; +import KlickHealth from '@/public/Sponsors/Klick Health.svg'; +import theScore from '@/public/Sponsors/theScore.svg'; +import VectorInstitute from '@/public/Sponsors/Vector Institute.svg'; +import MSReactor from '@/public/Sponsors/MSReactor.svg'; +import MLH from '@/public/Sponsors/MLH.svg'; +import Databricks from '@/public/Sponsors/Databricks.svg'; + +const sponsors: Sponsors[] = [ + { name: 'Databricks', logo: Databricks, link: 'https://www.databricks.com/' }, + { + name: 'Vector Institute', + logo: VectorInstitute, + link: 'https://vectorinstitute.ai/', + }, { - text: '"... they are trendsetters trailblazers who strive to create an inclusive environment for students on campus and for students to engage with data sciences and statistics and more."', - author: 'Gwendolyn Wang', - position: 'Department Manager UTSC CMS', + name: 'Microsoft Reactor', + logo: MSReactor, + link: 'https://developer.microsoft.com/en-us/reactor/', + className: 'p-2', }, + { name: 'FGF Brands', logo: FGF, link: 'https://www.fgfbrands.com/' }, + { name: 'TheScore', logo: theScore, link: 'https://www.thescore.com/' }, + { name: 'MLH', logo: MLH, link: 'https://mlh.io/' }, + { name: 'Klick Health', logo: KlickHealth, link: 'https://www.klick.com/' }, ]; export default function Sponsors() { return (
-

+ className="flex flex-col items-center justify-center py-24 md:py-[15vh] text-center"> +

Support Our Mission!

-

+

Support our mission and make your organization visible to numerous capable University of Toronto students. From merchandise to customized - events, we support our industry partners by curating sponsorship - packages that fit your needs. + events, we curate sponsorship packages that fit your needs.

- {/** Do not replace the tag below with - * does not work after a single click - */} -
- {sponsors.map((sponsor: Sponsor, id) => ( - + Our Sponsors + + +
+ {sponsors.map((sponsor, idx) => ( + ))} diff --git a/src/public/Sponsors/Databricks.svg b/src/public/Sponsors/Databricks.svg new file mode 100644 index 00000000..a1505d56 --- /dev/null +++ b/src/public/Sponsors/Databricks.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/public/Datathon/Sponsors/FGF.svg b/src/public/Sponsors/FGF.svg similarity index 100% rename from src/public/Datathon/Sponsors/FGF.svg rename to src/public/Sponsors/FGF.svg diff --git a/src/public/Datathon/Sponsors/Klick Health.svg b/src/public/Sponsors/Klick Health.svg similarity index 100% rename from src/public/Datathon/Sponsors/Klick Health.svg rename to src/public/Sponsors/Klick Health.svg diff --git a/src/public/Datathon/Sponsors/MLH.svg b/src/public/Sponsors/MLH.svg similarity index 100% rename from src/public/Datathon/Sponsors/MLH.svg rename to src/public/Sponsors/MLH.svg diff --git a/src/public/Datathon/Sponsors/MSReactor.svg b/src/public/Sponsors/MSReactor.svg similarity index 100% rename from src/public/Datathon/Sponsors/MSReactor.svg rename to src/public/Sponsors/MSReactor.svg diff --git a/src/public/Datathon/Sponsors/Vector Institute.svg b/src/public/Sponsors/Vector Institute.svg similarity index 100% rename from src/public/Datathon/Sponsors/Vector Institute.svg rename to src/public/Sponsors/Vector Institute.svg diff --git a/src/public/Datathon/Sponsors/theScore.svg b/src/public/Sponsors/theScore.svg similarity index 100% rename from src/public/Datathon/Sponsors/theScore.svg rename to src/public/Sponsors/theScore.svg