-
DS3
-
+
DS3
+
Learn
,
Build
,
Innovate
, With Data
-
+
We are here to expand the horizons of data science as a community
together.
-
- Join Us
-
-
+
);
-};
+});
export default Text;
diff --git a/src/Components/Page/Footer.tsx b/src/Components/Page/Footer.tsx
index 6b84d4f..6a7d56c 100644
--- a/src/Components/Page/Footer.tsx
+++ b/src/Components/Page/Footer.tsx
@@ -1,78 +1,22 @@
-import { FaDiscord, FaGithub, FaLinkedinIn } from "react-icons/fa6";
-import { SiGmail } from "react-icons/si";
import { baseURL } from "../../Utils/info";
+import SocialMedia from "./SocialMedia";
+import Sponsers from "./Sponsers";
const Footer = () => {
- const btnClass =
- "btn rounded-full text-white text-lg w-12 p-0 border-none bg-[#202020] hover:bg-[#282828] glow";
-
return (
-
+
© 2024 Data Science Student Society, All Rights Reserved
-
-
+
+
);
};
diff --git a/src/Components/Page/SocialMedia.tsx b/src/Components/Page/SocialMedia.tsx
new file mode 100644
index 0000000..7106495
--- /dev/null
+++ b/src/Components/Page/SocialMedia.tsx
@@ -0,0 +1,48 @@
+import { FaDiscord, FaGithub, FaLinkedinIn } from "react-icons/fa6";
+import { SiGmail } from "react-icons/si";
+
+const SocialMedia = () => {
+ const btnClass =
+ "btn rounded-full text-white text-lg w-12 p-0 border-none bg-[#202020] hover:bg-[#282828] glow";
+
+ return (
+
+ );
+};
+
+export default SocialMedia;
diff --git a/src/Components/Page/Sponsers.tsx b/src/Components/Page/Sponsers.tsx
new file mode 100644
index 0000000..fb4dc49
--- /dev/null
+++ b/src/Components/Page/Sponsers.tsx
@@ -0,0 +1,41 @@
+import { baseURL } from "../../Utils/info";
+
+const Sponsers = () => {
+ return (
+
+ );
+};
+
+export default Sponsers;
diff --git a/src/Pages/Home/AboutUs.tsx b/src/Pages/Home/AboutUs.tsx
index f3efa31..ba73f5e 100644
--- a/src/Pages/Home/AboutUs.tsx
+++ b/src/Pages/Home/AboutUs.tsx
@@ -1,27 +1,44 @@
const AboutUs = () => {
return (
-
-
-
-
WHO WE ARE
-
- We share a passion for data, technology, and problem-solving.
-
-
We are here to expand the horizons of data science as a community together
+
+
+ {/* WHO WE ARE Section */}
+
+
+
WHO WE ARE
+
+ We share a passion for data, technology, and problem-solving.
+
+
+ We are here to expand the horizons of data science as a community
+ together.
+
+
+
-
-
-
-
-
-
-
WHAT WE DO
-
- Build technical skills, network, and gain practical experience in data science.
-
-
We are here to expand the horizons of data science as a community together
+ {/* First Image */}
+
+ {/* Second Image */}
+
+ {/* WHAT WE DO Section */}
+
+
+
WHAT WE DO
+
+ Build technical skills, network, and gain practical experience in
+ data science.
+
+
+ We are here to expand the horizons of data science as a community
+ together.
+
+
+
-
);
diff --git a/src/Pages/Home/Home.tsx b/src/Pages/Home/Home.tsx
index 3e69bb7..670b80a 100644
--- a/src/Pages/Home/Home.tsx
+++ b/src/Pages/Home/Home.tsx
@@ -1,8 +1,7 @@
import Page from "../../Components/Page/Page";
import AboutUs from "./AboutUs";
-import Events from "./WhereWeBeen";
+import WhereWeBeen from "./WhereWeBeen";
import Landing from "./Landing";
-import Sponsers from "./Sponsers";
import Stats from "./Stats";
const Home = () => {
@@ -11,8 +10,7 @@ const Home = () => {
-
-
+
);
};
diff --git a/src/Pages/Home/Landing.tsx b/src/Pages/Home/Landing.tsx
index fca9bd8..2e9d842 100644
--- a/src/Pages/Home/Landing.tsx
+++ b/src/Pages/Home/Landing.tsx
@@ -2,12 +2,18 @@ import { motion } from "framer-motion";
import dino from "/src/Assets/Images/Dino.svg";
import TextArea from "../../Components/Landing/TextArea";
import Stars from "../../Components/Landing/Stars";
+import { useEffect, useRef, useState } from "react";
const Landing = () => {
+ const [rendered, setRendered] = useState(false);
+ const TextAreaRef = useRef
(null);
+ useEffect(() => {
+ setRendered(true);
+ }, []);
return (
-
-
-
+
+ {rendered &&
}
+
{
- return (
-
-
-
Our Sponsers
-
- Interested in hearing how we can help you? Contact us at ds3@ucsd.edu or view our sponsor
- packet{" "}
-
- here.
-
-
-
-
-
- );
-};
-
-export default Sponsers;
diff --git a/src/Pages/Home/Stats.tsx b/src/Pages/Home/Stats.tsx
index 6bb7cc0..1b5ece1 100644
--- a/src/Pages/Home/Stats.tsx
+++ b/src/Pages/Home/Stats.tsx
@@ -1,5 +1,5 @@
import { motion } from "framer-motion";
-import { useEffect, useState } from "react";
+import { useEffect, useState, useRef } from "react";
const Stats = () => {
const descriptions = [
@@ -11,55 +11,116 @@ const Stats = () => {
const maxNumbers = [500, 78, 35, 28];
- const [statsData, setStatsData] = useState([0, 0, 0, 0]);
+ const [statsData, setStatsData] = useState([0, 0, 0, 0]);
+ const [animated, setAnimated] = useState([
+ false,
+ false,
+ false,
+ false,
+ ]);
+ const itemRefs = useRef<(HTMLDivElement | null)[]>([]);
- useEffect(() => {
+ const startCounting = (index: number): void => {
const interval = setInterval(() => {
- setStatsData((prev) =>
- prev.map((num, index) => Math.min(num + maxNumbers[index] / 75, maxNumbers[index]))
- );
- }, 25);
+ setStatsData((prev) => {
+ const newStats = [...prev];
+ newStats[index] = Math.min(
+ newStats[index] + maxNumbers[index] / 15,
+ maxNumbers[index]
+ );
+ return newStats;
+ });
+ }, 50);
+
+ return () => clearInterval(interval);
+ };
+
+ useEffect(() => {
+ const observers = itemRefs.current.map(
+ (ref, index): IntersectionObserver | null => {
+ if (!ref) return null;
+
+ const observer = new IntersectionObserver(
+ ([entry]) => {
+ if (entry.isIntersecting && !animated[index]) {
+ setAnimated((prev) => {
+ const updated = [...prev];
+ updated[index] = true;
+ return updated;
+ });
+ startCounting(index);
+ }
+ },
+ { threshold: 0.4 }
+ );
- return () => clearInterval(interval);
- }, []);
+ observer.observe(ref);
+ return observer;
+ }
+ );
+
+ return () => {
+ observers.forEach((observer, index) => {
+ if (observer && itemRefs.current[index]) {
+ observer.unobserve(itemRefs.current[index]!);
+ }
+ });
+ };
+ }, [animated]);
return (
-
-
+
Get Involved
-
-
- {statsData.map((stat, index) => (
-
-
-
+
+ {statsData.map((stat, index) => (
+
+ (itemRefs.current[index] = el)
+ }
>
- {Math.round(stat) + (Math.round(stat) == maxNumbers[index] ? '+' : '')}
-
+
+ {Math.round(stat) +
+ (Math.round(stat) === maxNumbers[index] ? "+" : "")}
+
-
-
- {descriptions[index]}
-
-
- ))}
+
+ {descriptions[index]}
+
+
+ ))}
+
);
diff --git a/src/Pages/Home/WhereWeBeen.tsx b/src/Pages/Home/WhereWeBeen.tsx
index 4cc68e5..dae8b0f 100644
--- a/src/Pages/Home/WhereWeBeen.tsx
+++ b/src/Pages/Home/WhereWeBeen.tsx
@@ -1,5 +1,5 @@
import Carousel from "../../Components/WhereWeBeen/Carousel";
-const Events = () => {
+const WhereWeBeen = () => {
return (
Where We've Been
@@ -10,4 +10,4 @@ const Events = () => {
);
};
-export default Events;
+export default WhereWeBeen;
diff --git a/src/Styles/LandingPage.css b/src/Styles/LandingPage.css
deleted file mode 100644
index fd317f9..0000000
--- a/src/Styles/LandingPage.css
+++ /dev/null
@@ -1,88 +0,0 @@
-@import url("https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&display=swap");
-
-* {
- margin: 0px;
-}
-
-body {
- margin: 25px;
- min-height: 100vh;
-}
-
-.wrapper {
- line-height: 1;
- display: grid;
- grid-template-columns: min-content min-content;
- left: 20%;
- top: 35%;
- font-size: 5rem;
- font-family: "Source Code Pro", monospace;
- position: absolute;
- animation: on-load 0.5s linear 0s 1 normal forwards;
- row-gap: 0px;
-}
-
-.data,
-.hidden1,
-.hidden2 {
- width: 0;
- overflow: hidden;
- visibility: hidden;
- height: 0;
- margin: 0;
- line-height: 1;
-}
-.data {
- width: 1ch;
-}
-.hover .trigger {
- display: none;
- transition-duration: 2s;
-}
-.hover .data {
- height: fit-content;
- margin-right: 1ch;
- animation: x-appear 0.1s linear 0s 1 normal forwards;
- transition-duration: 0.1s;
-}
-.hover .hidden1 {
- height: fit-content;
- animation: x-appear 0.1s linear 0.1s 1 normal forwards;
- transition-duration: 0.1s;
-}
-.hover .hidden2 {
- animation: y-appear 0.1s linear 0.2s 1 normal forwards;
-}
-
-@keyframes x-appear {
- from {
- visibility: visible;
- }
- to {
- width: 100%;
- visibility: visible;
- }
-}
-
-@keyframes y-appear {
- 0% {
- width: 100%;
- visibility: visible;
- }
- 100% {
- height: fit-content;
- width: 100%;
- visibility: visible;
- }
-}
-
-@keyframes on-load {
- from {
- opacity: 0;
- transform: translateY(42px);
- }
- to {
- opacity: 100%;
- transform: none;
- }
-}
diff --git a/src/Utils/info 2.ts b/src/Utils/info 2.ts
new file mode 100644
index 0000000..748691c
--- /dev/null
+++ b/src/Utils/info 2.ts
@@ -0,0 +1,4 @@
+export const baseURL =
+ window.location.hostname != "localhost"
+ ? "https://raw.githubusercontent.com/ucsdds3/new-site/main"
+ : "/new-site";
\ No newline at end of file
Social Links
-