Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/components/faq.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ const faqData = [
{ 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.",},

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The registration deadline here ("30th April 2026 at 3:00 PM IST") conflicts with the Timeline section, which states registration closes at 11:59 PM / after midnight. Please align the deadline time across FAQ and Timeline to avoid publishing contradictory participant instructions.

Suggested change
{ 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: "What is the registration deadline?", answer: "Registration closes on 30th April 2026 at 11:59 PM IST. No registrations will be accepted after this deadline.",},

Copilot uses AI. Check for mistakes.
{ 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: "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.", },
Comment on lines +10 to +15

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are commented-out FAQ entries left inside the faqData array. Since this is shipped client-side, it adds noise and can confuse future edits; consider removing these commented lines or reintroducing them as active FAQ items if they’re still needed.

Copilot uses AI. Check for mistakes.
{ 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." },
Expand Down
71 changes: 39 additions & 32 deletions src/components/timeline.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,41 +40,48 @@ const events = [
},
{
date: "May 08, 09:00 PM",
title: "Round 1: Dev Phase",
description: "Intensive building period with mentor support.",
title: "Round 1: Dev Phase (3 Phases)",
description: "Intensive building period divided into three checkpoint phases.",
deliverables: [
"Functional prototype or working model.",
"Clear problem definition and solution approach.",
"Basic UI/UX (if applicable)."
"Phase 1 (Day 1 - Afternoon): Problem Statement & Proposed Solution.",
"Phase 2 (Day 1 - Evening): Technical Architecture & Approach.",
"Phase 3 (Day 2 - Morning): Final PPT & Prototype Demonstration."
],
instructions: [
"Mentors will be available throughout the night for guidance.",
"Continuous progress is expected (avoid last-minute builds)."
"Ensure all code is committed to your team's repository."
],
Icon: ScanSearch,
},
{
date: "May 09, 10:00 AM",
title: "Round 1 Evaluation",
description: "Progress check-in with the judging panel.",
description: "Offline desk-to-desk evaluation by the technical jury.",
evaluation: [
"Innovation and idea clarity.",
"Technical implementation progress.",
"Feasibility and potential impact."
"Technical Execution & Code (40%)",
"Innovation & Idea Clarity (30%)",
"Feasibility & Potential Impact (30%)"
],
instructions: [
"Shortlisting of top teams for the Final Presentation."
"Judging Format: Offline desk evaluation (7-10 mins per team).",
"Top teams will be shortlisted for the Final Presentation."
],
Icon: ScanSearch,
},
{
date: "May 09, 12:00 PM",
title: "Final Presentation",
description: "Pitch your solution to our panel of industry experts.",
title: "Round 2: Final Presentation",
description: "Stage pitch and live prototype demonstration in front of the final jury panel.",
evaluation: [
"Technical Execution & Demo (30%)",
"Innovation & Originality (25%)",
"Real-world Impact (25%)",
"Presentation & Q&A (20%)"
],
instructions: [
"5-8 minutes: Solution presentation.",
"3-5 minutes: Q&A with judges.",
"Focus: Technical depth and real-world applicability."
"Format: Main stage presentation (Offline).",
"Panel Size: 4-5 Industry Experts.",
"Time Limit: 5-8 minutes Pitch/Demo + 3-5 minutes Q&A."
],
Icon: Trophy,
},
Expand Down Expand Up @@ -108,7 +115,7 @@ const PipelineCard = ({ title, description, instructions, deliverables, evaluati
<motion.div
style={{ rotateX, rotateY, transformStyle: "preserve-3d" }}
onClick={() => setIsOpen(!isOpen)}
className="roadmap-card relative overflow-hidden rounded-2xl border shadow-sm hover:shadow-lg p-6 sm:p-7 transition-all duration-500 text-left cursor-pointer bg-white"
className="roadmap-card relative overflow-hidden rounded-2xl border shadow-sm hover:shadow-lg p-6 sm:p-7 transition-all duration-500 text-left cursor-pointer bg-(--bg-light)"
>
Comment on lines 115 to 119

Copilot AI Apr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PipelineCard toggles via onClick on a non-interactive <div>, which makes the accordion inaccessible to keyboard/screen-reader users (no focus, no Enter/Space activation, no aria-expanded). Use a semantic <button> (or add role="button", tabIndex, key handlers, and aria-expanded/aria-controls) for the clickable header/toggle region so the expand/collapse behavior is accessible.

Copilot uses AI. Check for mistakes.
<div className="flex items-start gap-4" style={{ transform: "translateZ(30px)" }}>
<div className="roadmap-card-icon shrink-0 w-12 h-12 rounded-xl flex items-center justify-center shadow-inner" style={{ background: "var(--secondary)" }}>
Expand All @@ -118,22 +125,22 @@ const PipelineCard = ({ title, description, instructions, deliverables, evaluati
<div className="flex-1 w-full">
<div className="flex justify-between items-start gap-3">
<div>
<h3 className="roadmap-card-title text-lg sm:text-xl font-black mb-1">{title}</h3>
<h3 className="roadmap-card-title text-lg sm:text-xl font-black mb-1 text-(--text-dark)">{title}</h3>
<p className="roadmap-card-desc text-sm font-medium text-(--text-muted)">{description}</p>
</div>

{hasDetails && (
<motion.div
animate={{ rotate: isOpen ? 180 : 0 }}
transition={{ type: "spring", stiffness: 200, damping: 20 }}
className="shrink-0 mt-1 p-1 rounded-full bg-(--bg-light) text-(--primary)"
className="shrink-0 mt-1 p-1.5 rounded-full transition-colors shadow-sm bg-black/5 dark:bg-white/10"
style={{ color: "var(--primary)" }}
>
<ChevronDown size={20} />
<ChevronDown size={24} strokeWidth={2.5} />
</motion.div>
)}
</div>

{/* Smooth height accordion for details */}
<AnimatePresence>
{isOpen && hasDetails && (
<motion.div
Expand All @@ -143,11 +150,11 @@ const PipelineCard = ({ title, description, instructions, deliverables, evaluati
transition={{ opacity: { duration: 0.2 }, height: { type: "spring", stiffness: 100, damping: 15 } }}
className="overflow-hidden"
>
<div className="roadmap-card-divider space-y-4 border-t pt-4 mt-4">
<div className="roadmap-card-divider space-y-4 border-t border-(--border-soft) pt-4 mt-4">
{instructions && (
<div className="space-y-2">
<div className="flex items-center gap-2 text-(--primary) font-bold text-xs uppercase tracking-tighter">
<BookOpen size={14} /> Guidelines
<BookOpen size={14} /> Guidelines & Format
</div>
{instructions.map((item, i) => (
<div key={i} className="roadmap-card-detail flex gap-2 text-xs sm:text-sm text-(--text-dark)">
Expand All @@ -158,8 +165,8 @@ const PipelineCard = ({ title, description, instructions, deliverables, evaluati
)}
{deliverables && (
<div className="space-y-2">
<div className="flex items-center gap-2 text-blue-600 font-bold text-xs uppercase tracking-tighter">
<Target size={14} /> Deliverables
<div className="flex items-center gap-2 text-blue-500 font-bold text-xs uppercase tracking-tighter">
<Target size={14} /> Expected Deliverables
</div>
{deliverables.map((item, i) => (
<div key={i} className="roadmap-card-detail flex gap-2 text-xs sm:text-sm italic text-(--text-dark)">
Expand All @@ -169,12 +176,12 @@ const PipelineCard = ({ title, description, instructions, deliverables, evaluati
</div>
)}
{evaluation && (
<div className="roadmap-card-eval p-3 border shadow-sm rounded-lg space-y-2 mt-2 bg-(--bg-card-dark)">
<div className="roadmap-card-eval-title font-bold text-xs uppercase tracking-tighter flex items-center gap-2">
<ScanSearch size={14} /> Evaluation Criteria
<div className="roadmap-card-eval p-3 border border-(--border-soft) shadow-sm rounded-lg space-y-2 mt-2 bg-(--bg-card-dark)">
<div className="roadmap-card-eval-title font-bold text-xs uppercase tracking-tighter flex items-center gap-2 text-(--text-dark)">
<ScanSearch size={14} className="text-(--primary)" /> Evaluation Weightage
</div>
{evaluation.map((item, i) => (
<div key={i} className="roadmap-card-eval-item text-xs sm:text-sm flex items-center gap-2 text-(--text-dark)">
<div key={i} className="roadmap-card-eval-item text-xs sm:text-sm flex items-center gap-2 text-(--text-muted)">
<div className="w-1.5 h-1.5 rounded-full bg-(--primary) shrink-0" /> {item}
</div>
))}
Expand Down Expand Up @@ -211,12 +218,12 @@ const Timeline = () => {
>
<h2 className="section-heading mb-4 text-4xl sm:text-5xl font-black tracking-tight">Event Roadmap</h2>
<div className="h-1.5 w-24 rounded-full mx-auto" style={{ background: "linear-gradient(90deg, var(--primary), var(--secondary))" }} />
<p className="mt-4 text-(--text-muted) font-medium">Detailed schedule, deliverables, and expectations.</p>
<p className="mt-4 text-(--text-muted) font-medium">Detailed schedule, deliverables, and evaluation formats.</p>
</motion.div>

<div className="relative">
<div className="absolute top-0 bottom-0 left-7 md:left-1/2 md:-translate-x-1/2 w-1 rounded-full bg-(--border-soft)" />
<motion.div
<motion.div
className="absolute top-0 bottom-0 left-7 md:left-1/2 md:-translate-x-1/2 w-1 rounded-full origin-top shadow-[0_0_15px_rgba(140,46,124,0.6)]"
style={{ scaleY, background: "var(--primary)" }}
/>
Expand All @@ -233,7 +240,7 @@ const Timeline = () => {
viewport={{ once: true, margin: "-100px" }}
className="relative flex flex-col md:flex-row items-start w-full"
>
<div className="absolute left-7 md:left-1/2 md:-translate-x-1/2 top-0 md:top-6 w-5 h-5 rounded-full border-4 z-20 shadow-lg -ml-2.5" style={{ borderColor: "var(--bg-light)", background: "var(--primary)" }} />
<div className="absolute left-7 md:left-1/2 md:-translate-x-1/2 top-0 md:top-6 w-5 h-5 rounded-full border-4 z-20 shadow-lg -ml-2.5" style={{ borderColor: "var(--bg-page)", background: "var(--primary)" }} />

<div className="md:hidden w-full pl-16">
<span className="block mb-2 text-sm font-black uppercase tracking-widest" style={{ color: "var(--primary)" }}>{evt.date}</span>
Expand Down
Loading