diff --git a/src/components/GlobalCanvas.jsx b/src/components/GlobalCanvas.jsx index d8253b3..057375e 100644 --- a/src/components/GlobalCanvas.jsx +++ b/src/components/GlobalCanvas.jsx @@ -32,7 +32,6 @@ const CinematicBokeh = ({ scrollOpacity }) => { })), []); const spritesRef = useRef([]); - useFrame(() => { const op = scrollOpacity.get(); spritesRef.current.forEach((sprite, i) => { @@ -60,10 +59,9 @@ const CinematicBokeh = ({ scrollOpacity }) => { ); }; -const TravelingLogo = ({ smoothProgress }) => { +const TravelingLogo = ({ smoothProgress, shouldReduceMotion }) => { const { viewport } = useThree(); const isMobile = viewport.width < 5; - const logoPath = import.meta.env.BASE_URL + 'qu-logo.svg'; const svg = useLoader(SVGLoader, logoPath); const shapes = useMemo(() => svg.paths.flatMap(p => p.toShapes(true)), [svg]); @@ -72,12 +70,12 @@ const TravelingLogo = ({ smoothProgress }) => { const leftX = -maxOffset; const xPosition = useTransform(smoothProgress, [0, 0.25, 0.5, 0.75, 1], [-1.4, rightX, leftX, rightX, leftX]); const yRotation = useTransform(smoothProgress, [0, 0.25, 0.5, 0.75, 1], [0, Math.PI * 2, Math.PI * 4, Math.PI * 6, Math.PI * 8]); - const groupRef = useRef(); useFrame(() => { if (groupRef.current) { - if (isMobile) { + groupRef.current.position.y = 0.5; + if (isMobile || shouldReduceMotion) { groupRef.current.position.x = 0; groupRef.current.rotation.y = 0; } else { @@ -86,10 +84,13 @@ const TravelingLogo = ({ smoothProgress }) => { } } }); - return ( - +
{shapes.map((shape, index) => ( @@ -127,27 +128,34 @@ const GlobalCanvas = () => { }); const bokehOpacity = useTransform(smoothProgress, [0, 0.15], [1, 0.3]); + const prefersReducedMotion = typeof window !== 'undefined' ? window.matchMedia('(prefers-reduced-motion: reduce)').matches : false; + const isMobileDevice = typeof window !== 'undefined' ? window.innerWidth < 768 : false; + const shouldRenderCanvas = !prefersReducedMotion || isMobileDevice; - if (shouldReduceMotion) { + if (!shouldRenderCanvas) { return (
-
+
); } - return (
+ {shouldReduceMotion && ( +
+ )} + - - + + + {!shouldReduceMotion && }
); diff --git a/src/components/ImpactStats.jsx b/src/components/ImpactStats.jsx index 8ec2525..02052c6 100644 --- a/src/components/ImpactStats.jsx +++ b/src/components/ImpactStats.jsx @@ -5,7 +5,7 @@ import { motion, useInView, animate } from "framer-motion"; const stats = [ { Icon: Users, to: 300, suffix: "+", label: "Participants" }, { Icon: Laptop, to: 60, suffix: "+", label: "Diverse Teams" }, - { Icon: Timer, to: 36, suffix: "", label: "Hours of Hacking" }, + { Icon: Timer, to: 36, suffix: "", label: "Hours of Innovation" }, { Icon: GraduationCap, to: 10, suffix: "+", label: "Colleges Represented" }, ]; const AnimatedCounter = ({ to, suffix }) => { diff --git a/src/components/contact.jsx b/src/components/contact.jsx index 70622e5..a9ee608 100644 --- a/src/components/contact.jsx +++ b/src/components/contact.jsx @@ -82,7 +82,7 @@ const InfoCard = () => ( Address

- Computer Science Dept, Tech Institute Main Campus + Quantum University, Roorkee

diff --git a/src/components/faq.jsx b/src/components/faq.jsx index 6d67095..3b11f51 100644 --- a/src/components/faq.jsx +++ b/src/components/faq.jsx @@ -3,15 +3,18 @@ import { Plus, Mail } from "lucide-react"; import { motion, AnimatePresence } from "framer-motion"; const faqData = [ - { question: "Who can participate?", answer: "Students from invited colleges and universities can participate. Only undergraduate and postgraduate students are eligible." }, - { question: "What is the registration fee?", answer: "₹500 per team. Additional ₹250–₹300 per participant for accommodation and food (optional)." }, - { question: "What is the team size?", answer: "Each team must have 4 to 6 members." }, - { question: "Is the hackathon online or offline?", answer: "It is a 36-hour offline hackathon on-campus at Quantum University." }, - { question: "What are the hackathon tracks?", answer: "AI, Cybersecurity, Blockchain, Smart India & Sustainability, and Open Innovation." }, + { question: "Who can participate in Q-Hackathon 2026?", answer: "Any undergraduate or postgraduate student from any recognized college or university in India can participate. It is an open inter-university event — not restricted to Quantum University students."}, + { question: "What is the registration fee?", answer: "₹500 per team. This is a one-time payment regardless of team size. Additional ₹250–₹300 per participant for accommodation and food (optional)." }, + { question: "What is the registration deadline?", answer: "Registration closes on 30th April 2026 at 3:00 PM IST. No registrations will be accepted after this deadline.",}, + { question: "Can we use open-source libraries and APIs?", answer: "Yes. Open-source tools, libraries, frameworks, and APIs are permitted. The core idea and implementation must be original and built during the hackathon." }, + { question: "Can team members be from different colleges?", answer: "Yes. Cross-college teams are allowed as long as all members are enrolled students who meet the eligibility criteria.",}, + // { question: "What are the hackathon tracks?", answer: "AI, Cybersecurity, Blockchain, Smart India & Sustainability, and Open Innovation." }, { question: "What is the duration?", answer: "36 hours of continuous development including evaluation rounds and final presentations." }, - { question: "How are projects evaluated?", answer: "Projects go through internal shortlisting followed by final jury evaluation based on innovation, technical depth, and usability." }, - { question: "Is accommodation available?", answer: "Yes, separate accommodation for boys and girls is available with ID verification and monitoring." }, - { question: "What are the prizes?", answer: "Winners and runners-up receive trophies, certificates, and cash prizes from a ₹15,000–₹25,000 pool." }, + { question: "What should I bring?", answer: "Bring your own laptop, charger, and a valid college ID card. ID is mandatory for entry and accommodation."}, + // { question: "How are projects evaluated?", answer: "Projects go through internal shortlisting followed by final jury evaluation based on innovation, technical depth, and usability." }, + { question: "Is accommodation available for outstation participants?", answer: "Yes. Separate accommodation for male and female participants is available on campus with ID verification. Contact codex.club@quantumeducation.in or +91 9897301104 for availability and charges.", }, + { question: "How are projects evaluated?", answer: "Projects are shortlisted in Round 1, and top teams present in the Final Round on 9th May. Judging is based on innovation, technical depth, real-world relevance, feasibility, and presentation quality." }, + { question: "What are the prizes?", answer: "Winner: ₹15,000 cash + Trophy + Certificate + Goodies. 1st Runner-Up: ₹10,000 cash + Trophy + Certificate + Goodies. 2nd Runner-Up: ₹5,000 cash + Trophy + Certificate + Goodies. All participants receive goodies (notebook, stickers, pens, bookmark), a free .xyz domain, and a participation certificate." }, ]; const FAQItem = ({ question, answer, index }) => { diff --git a/src/components/footer.jsx b/src/components/footer.jsx index d168d84..c7a507c 100644 --- a/src/components/footer.jsx +++ b/src/components/footer.jsx @@ -32,17 +32,17 @@ function Footer() { return (