-
+
{/* Static Red Corner Brackets - Enhanced Vibrancy & Glow */}
@@ -34,7 +34,7 @@ const CurrentSponsors = () => {
-
+
{/* Powered By Section */}
@@ -80,6 +80,31 @@ const CurrentSponsors = () => {
+
+
+
+ {/* Organizing Partner Section */}
+
+
+ Organizing Partner
+
+
+
+
+
{/* Background Data Matrix (Very Subtle) */}
diff --git a/src/components/landing/Header.tsx b/src/components/landing/Header.tsx
index 1f58fa9..45b59eb 100644
--- a/src/components/landing/Header.tsx
+++ b/src/components/landing/Header.tsx
@@ -377,10 +377,10 @@ const LandingHeader = () => {
{/* Value Prop Cards Grid - Replacing Description */}
{[
- { icon:
, title: "₹5 Lakh Prize Pool" },
- { icon:
, title: "Internship Oppurtunities" },
- { icon:
, title: "Real-World Training" },
- { icon:
, title: "Certified & Recognized" }
+ { icon:
, title: "₹5 Lakh Worth Grand Prize Pool" },
+ { icon:
, title: "Placement & Internship Opportunities" },
+ { icon:
, title: "Expert Training & Sessions" },
+ { icon:
, title: "Get Certified & Recognized" }
].map((prop, index) => (
{
- return (
-
-
-
-
- Our Past Sponsors
-
-
-
-
-
-
-
- {[...sponsors, ...sponsors].map((sponsor, index) => (
-
-

-
- ))}
-
-
-
-
-
-
-
- );
-};
-
-export default PastSponsorsMarquee;
diff --git a/src/components/landing/PastSponsorsTable.tsx b/src/components/landing/PastSponsorsTable.tsx
new file mode 100644
index 0000000..917b8f4
--- /dev/null
+++ b/src/components/landing/PastSponsorsTable.tsx
@@ -0,0 +1,140 @@
+"use client";
+
+import React, { useRef } from 'react';
+import gsap from 'gsap';
+import { useGSAP } from '@gsap/react';
+import { ScrollTrigger } from 'gsap/ScrollTrigger';
+
+if (typeof window !== 'undefined') {
+ gsap.registerPlugin(ScrollTrigger);
+}
+
+const sponsors = [
+ { name: 'Schneider Electric', logo: '/assets/images/past_sponsors/Schneider.png' },
+ { name: 'Secfence', logo: '/assets/images/past_sponsors/Secfence.png' },
+ { name: 'audius', logo: '/assets/images/past_sponsors/audius.png', isLarge: true },
+ { name: 'bugcrowd', logo: '/assets/images/past_sponsors/bugcrowd.png' },
+ { name: 'cred', logo: '/assets/images/past_sponsors/cred.png', isLarge: true },
+ { name: 'crowdstrike', logo: '/assets/images/past_sponsors/crowdstrike.png', isLarge: true },
+ { name: 'greatLearning', logo: '/assets/images/past_sponsors/greatLearning.png' },
+ { name: 'h&r_block', logo: '/assets/images/past_sponsors/h&r_block.png', isLarge: true },
+ { name: 'salesforce', logo: '/assets/images/past_sponsors/salesforce.png', isLarge: true },
+ { name: 'vmware', logo: '/assets/images/past_sponsors/vmware.png', isLarge: true },
+ { name: 'zoho', logo: '/assets/images/past_sponsors/zoho.png', isLarge: true },
+ { name: 'Team bi0s', logo: '/assets/images/logos/bi0s_dark.png' },
+];
+
+const PastSponsorsTable = () => {
+ const containerRef = useRef(null);
+
+ useGSAP(() => {
+ if (!containerRef.current) return;
+
+ const cells = containerRef.current.querySelectorAll('.sponsor-cell');
+
+ // Initial state set via CSS (opacity: 0)
+
+ gsap.to(cells, {
+ opacity: 1,
+ y: 0,
+ scale: 1,
+ duration: 0.8,
+ stagger: 0.1,
+ ease: 'expo.out',
+ scrollTrigger: {
+ trigger: containerRef.current,
+ start: 'top 85%',
+ toggleActions: 'play none none none'
+ },
+ onStart: (target) => {
+ // Simplified Decoding jitter effect using random opacity jumps
+ gsap.to(cells, {
+ opacity: 1,
+ overwrite: 'auto'
+ });
+ }
+ });
+
+ // Add a secondary "decoding" flutter for each element
+ cells.forEach((cell, i) => {
+ gsap.fromTo(cell,
+ { opacity: 0 },
+ {
+ opacity: 1,
+ duration: 0.1,
+ repeat: 4,
+ repeatDelay: 0.05,
+ yoyo: true,
+ delay: i * 0.1, // Match stagger
+ scrollTrigger: {
+ trigger: containerRef.current,
+ start: 'top 85%',
+ },
+ onComplete: () => {
+ gsap.set(cell, { opacity: 1 });
+ }
+ }
+ );
+ });
+
+ }, { scope: containerRef });
+
+ return (
+
+ );
+};
+
+export default PastSponsorsTable;