Skip to content
Closed
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
58 changes: 58 additions & 0 deletions Events.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import { useState } from "react";
import EventCard from "../../components/EventCard";
import events from "../../config/events";
const Events = () => {
const [filter, setFilter] = useState("all");

const renderCards = () => {
const filteredEvents =
filter === "all" ? events : events.filter((e) => e.type === filter);

return (
<div className="flex flex-wrap justify-center gap-6 mt-10">
{filteredEvents.length > 0 ? (
filteredEvents.map((event, index) => (
<EventCard key={index} {...event} />
))
) : (
<p className="text-center col-span-full text-gray-500">
No events found.
</p>
)}
</div>
);
};

return (
<div className="px-4 md:px-12 py-8">
<div className="text-center">
<h2 className="text-3xl font-bold text-[#0B2044]">
Our Organised Events
</h2>

{/* Filter Buttons */}
<div className="flex flex-wrap justify-center gap-4 mt-6">
{["all", "past", "upcoming"].map((type) => (
<button
key={type}
onClick={() => setFilter(type)}
className={`px-4 py-2 rounded transition ${
filter === type
? "bg-[#0B2044] text-white"
: "border border-[#0B2044] text-[#0B2044]"
}`}
>
{type === "all"
? "View All"
: type.charAt(0).toUpperCase() + type.slice(1) + " Events"}
</button>
))}
</div>
</div>

{renderCards()}
</div>
);
};

export default Events;
130 changes: 130 additions & 0 deletions Footer.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
import { Link } from "react-router-dom";
import {
FaFacebookF,
FaTwitter,
FaInstagram,
FaLinkedinIn,
} from "react-icons/fa";
import { FiMail, FiPhone } from "react-icons/fi";
import { GoLocation } from "react-icons/go";
const Footer = ({
title = "ASME NIT Rourkela Chapter",
description = "The American Society of Mechanical Engineers Student Chapter at NIT Rourkela, fostering a culture of innovation and technical learning through innovation, collaboration, and hands-on learning.",

social = {
facebook: "#",
twitter: "#",
instagram: "#",
linkedin: "#",
},
year = new Date().getFullYear(),
}) => {
return (
<footer className="bg-[#0B2044] text-white px-10 py-8">
<div className="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-8">
{/* Left Section */}
<div>
<div className="flex gap-4 mb-4 flex-wrap">
<img
src="https://res.cloudinary.com/dswk9scro/image/upload/v1752377324/Group_cropped_qgqzw9.png"
alt="ASME Logo"
className="w-8 h-8 object-contain"
/>
<h2 className="text-xl font-bold">{title}</h2>
</div>

<p className="text-sm">{description}</p>
<div className="flex gap-4 mt-4 text-lg">
<a
href={social.facebook}
aria-label="Facebook"
target="_blank"
rel="noopener noreferrer"
>
<FaFacebookF className="hover:text-gray-300 transition" />
</a>
<a
href={social.twitter}
aria-label="Twitter"
target="_blank"
rel="noopener noreferrer"
>
<FaTwitter className="hover:text-gray-300 transition" />
</a>
<a
href={social.instagram}
aria-label="Instagram"
target="_blank"
rel="noopener noreferrer"
>
<FaInstagram className="hover:text-gray-300 transition" />
</a>
<a
href={social.linkedin}
aria-label="LinkedIn"
target="_blank"
rel="noopener noreferrer"
>
<FaLinkedinIn className="hover:text-gray-300 transition" />
</a>
</div>
</div>

{/* Middle Section */}
<div>
<h3 className="text-lg font-semibold">Quick Links</h3>
<ul className="mt-2 space-y-1 text-sm">
<li>
<Link to="/team" className="hover:underline">
Team
</Link>
</li>
<li>
<Link to="/events" className="hover:underline">
Events
</Link>
</li>
<li>
<Link to="/achievements" className="hover:underline">
Achievements
</Link>
</li>
<li>
<Link to="/gallery" className="hover:underline">
Gallery
</Link>
</li>
</ul>
</div>

{/* Right Section */}
<div>
<h3 className="text-lg font-semibold">Contact Info</h3>
<div className="text-sm mt-4 text-white space-y-4">
<div className="flex items-center gap-4">
<FiMail className=" text-[#51B8F2] text-xl hover:text-white transition" />
<span>contact@asmenitrkl.ac.in</span> {/* To be added */}
</div>
<div className="flex items-center gap-4">
<FiPhone className="text-[#51B8F2] text-xl hover:text-white transition" />
<span>+91-1234567890</span> {/* To be added */}
</div>
<div className="flex items-start gap-4">
<GoLocation className=" text-[#51B8F2] text-xl mt-1 hover:text-white transition" />
<span>
National Institute of Technology Rourkela, <br /> Odisha -
769008
</span>
</div>
</div>
</div>
</div>

<div className="text-center text-sm mt-8 border-t border-white/20 pt-4">
© {year} {title}. All rights reserved.
</div>
</footer>
);
};

export default Footer;
28 changes: 28 additions & 0 deletions events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const events = [
{
title: "Dart-a-Thon",
description:
"Dart-a-Thon was an exciting hands-on challenge where participants were provided with simple DIY materials—such as stretchable rubber bands, ice cream sticks, and more—to design their own dart-launching mechanism. Using their creations, they aimed at a target board to score points. The participant with the highest score emerged as the champion, combining creativity, engineering, and precision in one thrilling competition.",
image:
"https://res.cloudinary.com/dswk9scro/image/upload/v1754816191/Dart-a-thon_z29oj0.jpg",
type: "past",
},
{
title: "Turbogen X",
description:
"Turbogen-X put participants’ ingenuity to the test as they crafted custom wind blades from simple DIY materials. With limited resources and unlimited imagination, they raced to create designs capable of capturing the wind most efficiently, turning a simple build into a battle of innovation and aerodynamics.",
image:
"https://res.cloudinary.com/dswk9scro/image/upload/v1754816173/Turbogen_x_ozbic4.jpg",
type: "past",
},
{
title: "3D Printing Workshop",
description:
"An interactive 3D Printing Workshop was hosted, showcasing real-world applications and hands-on training with industry-standard software. Professionals and teachers from nearby schools attended to promote awareness of the technology. A live highlight was the 3D-printing of a chess pawn in just 30 minutes, captivating the audience.",
image:
"https://res.cloudinary.com/dswk9scro/image/upload/v1754816159/3D_printing_workshop_nrxkho.jpg",
type: "past",
},
];

export default events;
89 changes: 89 additions & 0 deletions events/Events.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
import { useState } from "react";
import EventCard from "../../components/EventCard";

const Events = () => {
const [filter, setFilter] = useState("all");

const events = [
{
title: "AI Workshop",
date: "2025-07-10",
description: "Intro to AI, ML, and real-world applications.",
image: "/images/ai.jpg",
type: "past",
},
{
title: "Autonomous Bot Hackathon",
date: "2025-08-01",
description: "Build bots and compete in challenges.",
image: "/images/bot.jpg",
type: "upcoming",
},
{
title: "CAD Design Contest",
date: "2025-06-20",
description: "Show off your SolidWorks skills.",
image: "/images/cad.jpg",
type: "past",
},
];

const renderCards = () => {
const filteredEvents =
filter === "all" ? events : events.filter((e) => e.type === filter);

return (
<div className="flex flex-wrap justify-center gap-6 mt-10">
{filteredEvents.length > 0 ? (
filteredEvents.map((event, index) => (
<EventCard key={index} {...event} />
))
) : (
<p className="text-center col-span-full text-gray-500">
No events found.
</p>
)}
</div>
);
};

return (
<div className="relative px-4 md:px-12 py-8 overflow-hidden">
<div className="absolute top-[-80px] left-[-60px] w-72 h-72 bg-[#51B8F2] opacity-80 rounded-full blur-3xl z-0 pointer-events-none"></div>
<div className="absolute top-[-60px] right-[-60px] w-56 h-56 bg-[#51B8F2] opacity-80 rounded-full blur-3xl z-0 pointer-events-none"></div>
<div className="absolute bottom-[-80px] left-[-50px] w-64 h-64 bg-[#51B8F2] opacity-75 rounded-full blur-3xl z-0 pointer-events-none"></div>
<div className="absolute bottom-[-60px] right-[-40px] w-48 h-48 bg-[#51B8F2] opacity-75 rounded-full blur-3xl z-0 pointer-events-none"></div>
<div className="text-center">
<h2 className="text-3xl font-bold text-[#0B2044]">
Our Organised Events
</h2>
<p className="text-gray-500 mt-2">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ornare.
</p>

{/* Filter Buttons */}
<div className="flex flex-wrap justify-center gap-4 mt-6">
{["all", "past", "upcoming"].map((type) => (
<button
key={type}
onClick={() => setFilter(type)}
className={`px-4 py-2 rounded transition ${
filter === type
? "bg-[#0B2044] text-white"
: "border border-[#0B2044] text-[#0B2044]"
}`}
>
{type === "all"
? "View All"
: type.charAt(0).toUpperCase() + type.slice(1) + " Events"}
</button>
))}
</div>
</div>

{renderCards()}
</div>
);
};

export default Events;
5 changes: 0 additions & 5 deletions src/components/Footer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,6 @@ const Footer = ({
<div>
<h3 className="text-lg font-semibold">Quick Links</h3>
<ul className="mt-2 space-y-1 text-sm">
<li>
<Link to="/about" className="hover:underline">
About us
</Link>
</li>
<li>
<Link to="/team" className="hover:underline">
Team
Expand Down
24 changes: 12 additions & 12 deletions src/pages/events/Events.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useState } from "react";
import EventCard from "../../components/EventCard";
import EventCard from "../../../components/EventCard";

const Events = () => {
const [filter, setFilter] = useState("all");
Expand Down Expand Up @@ -33,7 +33,7 @@ const Events = () => {
filter === "all" ? events : events.filter((e) => e.type === filter);

return (
<div className="flex flex-wrap justify-center gap-6 mt-10">
<div className="flex flex-wrap z-10 justify-center gap-6 mt-10">
{filteredEvents.length > 0 ? (
filteredEvents.map((event, index) => (
<EventCard key={index} {...event} />
Expand All @@ -48,29 +48,29 @@ const Events = () => {
};

return (
<div className="px-4 md:px-12 py-8">
<img
src="https://res.cloudinary.com/dswk9scro/image/upload/v1752312233/image_1_nydvj8.png"
alt="events"
className="mx-auto my-12 w-full max-w-xl rounded-xl shadow-md object-cover"
/>
<div className="relative px-4 md:px-12 py-8 overflow-hidden">
<div className="absolute top-[-80px] left-[-60px] w-72 h-72 bg-[#51B8F2] opacity-80 rounded-full blur-3xl z-0 pointer-events-none"></div>
<div className="absolute top-[-60px] right-[-60px] w-56 h-56 bg-[#51B8F2] opacity-80 rounded-full blur-3xl z-0 pointer-events-none"></div>
<div className="absolute bottom-[-80px] left-[-50px] w-64 h-64 bg-[#51B8F2] opacity-75 rounded-full blur-3xl z-0 pointer-events-none"></div>
<div className="absolute bottom-[-60px] right-[-40px] w-48 h-48 bg-[#51B8F2] opacity-75 rounded-full blur-3xl z-0 pointer-events-none"></div>

<div className="text-center">
<h2 className="text-3xl font-bold text-[#0B2044]">
<h2 className="text-3xl z-10 font-bold text-[#0B2044]">
Our Organised Events
</h2>
<p className="text-gray-500 mt-2">
<p className="text-gray-500 z-10 mt-2">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ornare.
</p>

{/* Filter Buttons */}
<div className="flex flex-wrap justify-center gap-4 mt-6">
<div className="flex flex-wrap justify-center z-10 gap-4 mt-6">
{["all", "past", "upcoming"].map((type) => (
<button
key={type}
onClick={() => setFilter(type)}
className={`px-4 py-2 rounded transition ${
filter === type
? "bg-[#51B8F2] text-white"
? "bg-[#0B2044] text-white"
: "border border-[#0B2044] text-[#0B2044]"
}`}
>
Expand Down
Loading