diff --git a/frontend/src/app/assets/images/genderEllipse.tsx b/frontend/src/app/assets/images/genderEllipse.tsx
index a7918c7..860d3e5 100644
--- a/frontend/src/app/assets/images/genderEllipse.tsx
+++ b/frontend/src/app/assets/images/genderEllipse.tsx
@@ -35,10 +35,15 @@ export default function GenderEllipseSVG({
}, [hasAnimated]);
useEffect(() => {
- if (hasAnimated) {
- const id = setTimeout(() => setShowChart(true), 50);
- return () => clearTimeout(id);
- }
+ if (!hasAnimated) return;
+ let raf1: number, raf2: number;
+ raf1 = requestAnimationFrame(() => {
+ raf2 = requestAnimationFrame(() => setShowChart(true));
+ });
+ return () => {
+ cancelAnimationFrame(raf1);
+ cancelAnimationFrame(raf2);
+ };
}, [hasAnimated]);
const handleToggle = (gender: "male" | "female") => {
@@ -75,6 +80,8 @@ export default function GenderEllipseSVG({
const options: ChartOptions<"doughnut"> = {
animation: {
duration: 2000,
+ animateRotate: true,
+ animateScale: true,
},
rotation: 90,
maintainAspectRatio: false,
@@ -108,9 +115,11 @@ export default function GenderEllipseSVG({
return (
- {showChart && (
-
- )}
+ {showChart &&
+ containerRef.current &&
+ containerRef.current.getBoundingClientRect().width > 0 && (
+
+ )}
);
}
\ No newline at end of file
diff --git a/frontend/src/app/components/About/AboutCard.tsx b/frontend/src/app/components/About/AboutCard.tsx
index ee03d75..b95b29e 100644
--- a/frontend/src/app/components/About/AboutCard.tsx
+++ b/frontend/src/app/components/About/AboutCard.tsx
@@ -134,7 +134,7 @@ export default function AboutCard({
diff --git a/frontend/src/app/sections/AboutTheEvent/AboutTheEventCards.tsx b/frontend/src/app/sections/AboutTheEvent/AboutTheEventCards.tsx
index c78c075..e82ba40 100644
--- a/frontend/src/app/sections/AboutTheEvent/AboutTheEventCards.tsx
+++ b/frontend/src/app/sections/AboutTheEvent/AboutTheEventCards.tsx
@@ -13,7 +13,7 @@ const AboutTheEventCards = () => {
},
software: {
svg: ,
- title: "Software Club",
+ title: "DWIT Software Club",
description:
"The Software Club of Deerwalk Institute of Technology is a student-led organization dedicated to promoting a culture of technology, innovation, and collaboration through workshops and events. Additionally, it is the core team responsible for building Deerhack. Whether it's late-night debugging sessions or organizing large-scale hackathons, we're focused on bridging the gap between classroom theory and the grit of the tech industry.",
},
diff --git a/frontend/src/app/sections/FAQ/FAQ.tsx b/frontend/src/app/sections/FAQ/FAQ.tsx
index 719c5c1..50b9691 100644
--- a/frontend/src/app/sections/FAQ/FAQ.tsx
+++ b/frontend/src/app/sections/FAQ/FAQ.tsx
@@ -35,7 +35,7 @@ const Faq = () => {
{
question: "How long will DeerHack last?",
answer:
- "While DeerHack is a 48-Hour program, DeerHack also has a lot of other fun, team-building events lined up for the participants which will take place from 11th to 13th June 6 making DeerHack a 3-Day event collectively.",
+ "While DeerHack is a 48-Hour program, DeerHack also has a lot of other fun, team-building events lined up for the participants which will take place from 12th to 14th June making DeerHack a 3-Day event collectively.",
},
{
question: "Who can Participate in DeerHack?",
@@ -57,7 +57,7 @@ const Faq = () => {
{
question: "What should I bring to DeerHack?",
answer:
- "You should bring any necessary equipment or tools for your project, such as a laptop or hardware components. Additionally, you may also want to bring a water bottle, and comfortable clothing for the long hours of relrentless innovation.",
+ "You should bring any necessary equipment or tools for your project, such as a laptop or hardware components. Additionally, you may also want to bring a water bottle, and comfortable clothing for the long hours of relentless innovation.",
},
{
question: "Will foods and drinks be provided at DeerHack?",
diff --git a/frontend/src/app/sections/Tracks/TracksCard.tsx b/frontend/src/app/sections/Tracks/TracksCard.tsx
index d034e50..d6461f3 100644
--- a/frontend/src/app/sections/Tracks/TracksCard.tsx
+++ b/frontend/src/app/sections/Tracks/TracksCard.tsx
@@ -14,6 +14,7 @@ import EdTechSVG from "@/app/assets/icons/EdTech";
import EdTechNew from "@/app/assets/icons/EdTechNew";
import EnvironmentTrackSVG from "@/app/assets/icons/EnvironmentTrack";
import EnvironmentTrackBodySVG from "@/app/assets/icons/EnvironmentTrackBody";
+import styles from "./styles.module.css"
const TracksCard = () => {
const [selectedTrack, setSelectedTrack] = useState(
@@ -51,7 +52,6 @@ const TracksCard = () => {
{
title: "Blockchain",
svg: ,
- // svgBody: ,
svgBody: ,
headStyling:
selectedTrack === "Blockchain"
@@ -90,11 +90,10 @@ const TracksCard = () => {
svg: ,
svgBody: ,
headStyling:
- selectedTrack === "Environment"
- ? "gradient-bg text-magnolia active invert "
- : "bg-violet hover:gradient-bg hover:text-magnolia hover:invert transition-all duration-300",
- bodyStyling:
- "gradient-bg text-magnolia invert transition-all duration-300",
+ selectedTrack === "Environment"
+ ? `gradient-bg text-magnolia active invert`
+ : `${styles.envAnimate} text-magnolia hover:opacity-90 transition-opacity duration-500`,
+ bodyStyling: "gradient-bg text-magnolia invert transition-all duration-500",
description:
"Think Green, Code Clean at DeerHack. Dive into the world of climate-positive innovation. Turn environmental challenges into elegant, scalable, and sustainable tech solutions.",
},
@@ -104,32 +103,31 @@ const TracksCard = () => {
const handleTrackSelection = (title: string) => {
setSelectedTrack(title);
setAnimKey((prev) => prev + 1);
- resetAutoSwitchTimer();
};
- // Auto switch logic
- const resetAutoSwitchTimer = () => {
- if (autoSwitchTimer.current) clearTimeout(autoSwitchTimer.current);
+ // // Auto switch logic
+ // const resetAutoSwitchTimer = () => {
+ // if (autoSwitchTimer.current) clearTimeout(autoSwitchTimer.current);
- autoSwitchTimer.current = setTimeout(() => {
- const currentIndex = trackData.findIndex(
- (track) => track.title === selectedTrack
- );
- const nextIndex = (currentIndex + 1) % trackData.length;
- setSelectedTrack(trackData[nextIndex].title);
- setAnimKey((prev) => prev + 1);
- resetAutoSwitchTimer(); // schedule next switch
- }, 10000); // 8 seconds
- };
+ // autoSwitchTimer.current = setTimeout(() => {
+ // const currentIndex = trackData.findIndex(
+ // (track) => track.title === selectedTrack
+ // );
+ // const nextIndex = (currentIndex + 1) % trackData.length;
+ // setSelectedTrack(trackData[nextIndex].title);
+ // setAnimKey((prev) => prev + 1);
+ // resetAutoSwitchTimer(); // schedule next switch
+ // }, 10000); // 8 seconds
+ // };
- // Start auto-switch when component mounts
- useEffect(() => {
- resetAutoSwitchTimer();
- return () => {
- if (autoSwitchTimer.current) clearTimeout(autoSwitchTimer.current);
- };
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [selectedTrack]);
+ // // Start auto-switch when component mounts
+ // useEffect(() => {
+ // resetAutoSwitchTimer();
+ // return () => {
+ // if (autoSwitchTimer.current) clearTimeout(autoSwitchTimer.current);
+ // };
+ // // eslint-disable-next-line react-hooks/exhaustive-deps
+ // }, [selectedTrack]);
return (
diff --git a/frontend/src/app/sections/Tracks/styles.module.css b/frontend/src/app/sections/Tracks/styles.module.css
index 4d30deb..251ca10 100644
--- a/frontend/src/app/sections/Tracks/styles.module.css
+++ b/frontend/src/app/sections/Tracks/styles.module.css
@@ -9,3 +9,13 @@
scrollbar-width: none;
/* Firefox */
}
+
+@keyframes green-blue-shift {
+ 0% { background-color: #6DB94C; }
+ 50% { background-color: #241A4A }
+ 100% { background-color: #6DB94C; }
+}
+
+.envAnimate {
+ animation: green-blue-shift 3s ease-in-out infinite;
+}