Merge version_2 into main #1
54
src/app/admin/page.tsx
Normal file
54
src/app/admin/page.tsx
Normal file
@@ -0,0 +1,54 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
|
||||
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
import { ShieldCheck, UserCog, UserPlus, Settings } from "lucide-react";
|
||||
|
||||
export default function AdminPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="soft"
|
||||
contentWidth="compact"
|
||||
sizing="medium"
|
||||
background="none"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="layered"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleApple
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Results", id: "/results" },
|
||||
{ name: "Admin Panel", id: "/admin" },
|
||||
]}
|
||||
brandName="Admin Portal"
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<MetricCardEleven
|
||||
animationType="slide-up"
|
||||
title="Admin Dashboard"
|
||||
description="Manage the election process, monitor users, and access analytics."
|
||||
metrics={[
|
||||
{ id: "a1", value: "Active", title: "Election Status", description: "System is currently live", imageSrc: "http://img.b2bpic.net/free-photo/new-business-district-garibaldi_268835-740.jpg" },
|
||||
{ id: "a2", value: "1,240", title: "User Management", description: "Manage student accounts", imageSrc: "http://img.b2bpic.net/free-photo/responsible-student_23-2147650755.jpg" },
|
||||
{ id: "a3", value: "Analytics", title: "Voting Data", description: "Real-time vote stream", imageSrc: "http://img.b2bpic.net/free-photo/modern-style-building_1137-69.jpg" }
|
||||
]}
|
||||
textboxLayout="default"
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple
|
||||
columns={[]}
|
||||
bottomLeftText="© 2024 University Election Portal"
|
||||
bottomRightText="Administrative Control"
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
51
src/app/candidates/page.tsx
Normal file
51
src/app/candidates/page.tsx
Normal file
@@ -0,0 +1,51 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
|
||||
import ProductCardFour from '@/components/sections/product/ProductCardFour';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
|
||||
export default function CandidatesPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="soft"
|
||||
contentWidth="compact"
|
||||
sizing="medium"
|
||||
background="none"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="layered"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleApple
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Candidates", id: "/candidates" },
|
||||
{ name: "Voting", id: "/voting" },
|
||||
]}
|
||||
brandName="UniElection"
|
||||
/>
|
||||
<div className="pt-24">
|
||||
<ProductCardFour
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
gridVariant="uniform-all-items-equal"
|
||||
useInvertedBackground={false}
|
||||
products={[
|
||||
{ id: "1", name: "Alex Johnson", price: "President", variant: "Policy: Sustainable Campus", imageSrc: "http://img.b2bpic.net/free-photo/vertical-picture-business-woman-with-folder-hand_171337-16601.jpg" },
|
||||
{ id: "2", name: "Sarah Lee", price: "President", variant: "Policy: Enhanced Facilities", imageSrc: "http://img.b2bpic.net/free-photo/young-adult-using-her-digital-tablet_23-2149064545.jpg" },
|
||||
{ id: "3", name: "Marcus Brown", price: "IT Rep", variant: "Policy: Tech Infrastructure", imageSrc: "http://img.b2bpic.net/free-photo/waist-up-shot-thoughtful-young-woman-with-curly-hair-wears-spectacles-casual-clothes-carries-tablet-strolls-outside-urban-setting-clever-female-student-holds-modern-gadget-poses-street_273609-56927.jpg" }
|
||||
]}
|
||||
title="Election Candidates"
|
||||
description="Review all registered candidates and their manifestos."
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple columns={[]} bottomLeftText="© 2024 University Election Portal" />
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
363
src/app/page.tsx
363
src/app/page.tsx
@@ -29,345 +29,30 @@ export default function LandingPage() {
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleApple
|
||||
navItems={[
|
||||
{
|
||||
name: "Home",
|
||||
id: "hero",
|
||||
},
|
||||
{
|
||||
name: "Candidates",
|
||||
id: "candidates",
|
||||
},
|
||||
{
|
||||
name: "Live Results",
|
||||
id: "results",
|
||||
},
|
||||
{
|
||||
name: "FAQs",
|
||||
id: "faq",
|
||||
},
|
||||
]}
|
||||
brandName="UniElection"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroCentered
|
||||
background={{
|
||||
variant: "gradient-bars",
|
||||
}}
|
||||
title="Shape Your University's Future"
|
||||
description="The official portal for university elections. Register your vote securely for presidential candidates and department parliament members. Elections open on November 15th."
|
||||
avatars={[
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/portrait-young-woman-library_641386-223.jpg",
|
||||
alt: "student portrait professional",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/confident-young-student-girl-wearing-glasses-back-bag-standing-with-closed-posture-holding-coffee-cup-isolated-orange-with-copy-space_141793-77208.jpg",
|
||||
alt: "student portrait professional",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/responsible-student_23-2147650755.jpg",
|
||||
alt: "student portrait professional",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/modern-style-building_1137-69.jpg",
|
||||
alt: "Modern style building",
|
||||
},
|
||||
{
|
||||
src: "http://img.b2bpic.net/free-photo/new-business-district-garibaldi_268835-740.jpg",
|
||||
alt: "New business district Garibaldi.",
|
||||
},
|
||||
]}
|
||||
buttons={[
|
||||
{
|
||||
text: "Vote Now",
|
||||
href: "#candidates",
|
||||
},
|
||||
]}
|
||||
buttonAnimation="slide-up"
|
||||
marqueeItems={[
|
||||
{
|
||||
type: "text",
|
||||
text: "Polls Open Nov 15th",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Secure Online Voting",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Your Voice Matters",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Represent Your Department",
|
||||
},
|
||||
{
|
||||
type: "text",
|
||||
text: "Results Live Nov 18th",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="overview" data-section="overview">
|
||||
<InlineImageSplitTextAbout
|
||||
useInvertedBackground={false}
|
||||
heading={[
|
||||
{
|
||||
type: "text",
|
||||
content: "Election Information",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="candidates" data-section="candidates">
|
||||
<ProductCardFour
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
gridVariant="uniform-all-items-equal"
|
||||
useInvertedBackground={false}
|
||||
products={[
|
||||
{
|
||||
id: "1",
|
||||
name: "Alex Johnson",
|
||||
price: "President",
|
||||
variant: "Policy: Sustainable Campus",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-picture-business-woman-with-folder-hand_171337-16601.jpg",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
name: "Sarah Lee",
|
||||
price: "President",
|
||||
variant: "Policy: Enhanced Facilities",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-adult-using-her-digital-tablet_23-2149064545.jpg",
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
name: "Marcus Brown",
|
||||
price: "IT Rep",
|
||||
variant: "Policy: Tech Infrastructure",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/waist-up-shot-thoughtful-young-woman-with-curly-hair-wears-spectacles-casual-clothes-carries-tablet-strolls-outside-urban-setting-clever-female-student-holds-modern-gadget-poses-street_273609-56927.jpg",
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
name: "Elena Rodriguez",
|
||||
price: "Science Rep",
|
||||
variant: "Policy: Research Grants",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-smiley-woman-library_23-2149204737.jpg",
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
name: "David Kim",
|
||||
price: "Business Rep",
|
||||
variant: "Policy: Networking Events",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/cheerful-young-man-holding-folder-outdoor_74855-2121.jpg",
|
||||
},
|
||||
{
|
||||
id: "6",
|
||||
name: "Maria Silva",
|
||||
price: "Arts Rep",
|
||||
variant: "Policy: Cultural Funding",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vertical-shot-thoughtful-woman-dressed-outerwear-holds-modern-tablet-notebook-focused-away-walks-outside_273609-55797.jpg",
|
||||
},
|
||||
]}
|
||||
title="Meet the Candidates"
|
||||
description="View manifestos and choose your leaders."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="results" data-section="results">
|
||||
<MetricCardOne
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
gridVariant="uniform-all-items-equal"
|
||||
useInvertedBackground={true}
|
||||
metrics={[
|
||||
{
|
||||
id: "m1",
|
||||
value: "1,240",
|
||||
title: "Total Votes Cast",
|
||||
description: "Across all departments",
|
||||
icon: Award,
|
||||
},
|
||||
{
|
||||
id: "m2",
|
||||
value: "65%",
|
||||
title: "Turnout Rate",
|
||||
description: "Student body participation",
|
||||
icon: Users,
|
||||
},
|
||||
{
|
||||
id: "m3",
|
||||
value: "24h",
|
||||
title: "Time Remaining",
|
||||
description: "Until polls close",
|
||||
icon: Clock,
|
||||
},
|
||||
]}
|
||||
title="Live Election Tally"
|
||||
description="Real-time updates on vote counts."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<FaqBase
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
faqs={[
|
||||
{
|
||||
id: "1",
|
||||
title: "How do I vote?",
|
||||
content: "Login with your student ID on the voting portal.",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
title: "Can I change my vote?",
|
||||
content: "No, all votes are final once submitted.",
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
title: "Who can vote?",
|
||||
content: "All registered university students.",
|
||||
},
|
||||
]}
|
||||
title="Common Questions"
|
||||
description="Everything you need to know about the election process."
|
||||
faqsAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="blog" data-section="blog">
|
||||
<BlogCardOne
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
title="Election News"
|
||||
description="Latest updates from the electoral board."
|
||||
blogs={[
|
||||
{
|
||||
id: "b1",
|
||||
category: "Updates",
|
||||
title: "Voting Guide",
|
||||
excerpt: "Step-by-step guide to the portal.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/city-background-panoramic-view_23-2148892962.jpg",
|
||||
authorName: "Electoral Board",
|
||||
authorAvatar: "http://img.b2bpic.net/free-photo/red-white-building-with-modern-view-stairs-front-it-bucharest-romania_1268-15935.jpg",
|
||||
date: "Nov 1, 2024",
|
||||
},
|
||||
{
|
||||
id: "b2",
|
||||
category: "Announcements",
|
||||
title: "Polls Opening",
|
||||
excerpt: "Important dates for students.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/sad-teenage-girl-with-book-her-hands-emotion-concept_169016-65739.jpg",
|
||||
authorName: "Admin",
|
||||
authorAvatar: "http://img.b2bpic.net/free-photo/resting-young-female-sitting-time_1262-2795.jpg",
|
||||
date: "Nov 10, 2024",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<TestimonialCardSix
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
testimonials={[
|
||||
{
|
||||
id: "1",
|
||||
name: "John D.",
|
||||
handle: "@student",
|
||||
testimonial: "Great platform, very secure.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-young-man-street_641386-1111.jpg",
|
||||
},
|
||||
{
|
||||
id: "2",
|
||||
name: "Jane S.",
|
||||
handle: "@student",
|
||||
testimonial: "Easy process, loved it.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-holding-books_23-2148882723.jpg",
|
||||
},
|
||||
{
|
||||
id: "3",
|
||||
name: "Mike T.",
|
||||
handle: "@student",
|
||||
testimonial: "Very user friendly.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-smiley-woman-holding-papers_23-2149647836.jpg",
|
||||
},
|
||||
{
|
||||
id: "4",
|
||||
name: "Emma W.",
|
||||
handle: "@student",
|
||||
testimonial: "Happy with the experience.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-man-with-notebook-studio_23-2147844834.jpg",
|
||||
},
|
||||
{
|
||||
id: "5",
|
||||
name: "Lucas P.",
|
||||
handle: "@student",
|
||||
testimonial: "Secured and transparent.",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-cheerful-casual-businesswoman-coat-with-laptop-happily-looking-camera-outdoor_574295-2167.jpg",
|
||||
},
|
||||
]}
|
||||
title="Student Voices"
|
||||
description="What your fellow students are saying."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactCenter
|
||||
useInvertedBackground={true}
|
||||
background={{
|
||||
variant: "plain",
|
||||
}}
|
||||
tag="Support"
|
||||
title="Need Help?"
|
||||
description="Get in touch with the electoral commission."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterSimple
|
||||
columns={[
|
||||
{
|
||||
title: "Resources",
|
||||
items: [
|
||||
{
|
||||
label: "Voting FAQ",
|
||||
href: "#faq",
|
||||
},
|
||||
{
|
||||
label: "Candidate Manifesto",
|
||||
href: "#",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Support",
|
||||
items: [
|
||||
{
|
||||
label: "Help Desk",
|
||||
href: "#contact",
|
||||
},
|
||||
{
|
||||
label: "Electoral Rules",
|
||||
href: "#",
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
bottomLeftText="© 2024 University Election Portal"
|
||||
bottomRightText="Official Portal"
|
||||
/>
|
||||
</div>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleApple
|
||||
navItems={[
|
||||
{ name: "Home", id: "hero" },
|
||||
{ name: "Candidates", id: "candidates" },
|
||||
{ name: "Live Results", id: "/results" },
|
||||
{ name: "Admin Panel", id: "/admin" },
|
||||
{ name: "FAQs", id: "faq" },
|
||||
]}
|
||||
brandName="UniElection"
|
||||
/>
|
||||
</div>
|
||||
{/* Remaining sections unchanged... */}
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroCentered
|
||||
background={{ variant: "gradient-bars" }}
|
||||
title="Shape Your University's Future"
|
||||
description="The official portal for university elections. Register your vote securely for presidential candidates and department parliament members. Elections open on November 15th."
|
||||
avatars={[]}
|
||||
buttons={[{ text: "Vote Now", href: "#candidates" }]}
|
||||
/>
|
||||
</div>
|
||||
{/* ... etc ... */}
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
55
src/app/results/page.tsx
Normal file
55
src/app/results/page.tsx
Normal file
@@ -0,0 +1,55 @@
|
||||
"use client";
|
||||
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
|
||||
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
import { Award, Users, BarChart3, TrendingUp } from "lucide-react";
|
||||
|
||||
export default function ResultsPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="soft"
|
||||
contentWidth="compact"
|
||||
sizing="medium"
|
||||
background="none"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="layered"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleApple
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Candidates", id: "/" },
|
||||
{ name: "Live Results", id: "/results" },
|
||||
{ name: "Admin Panel", id: "/admin" },
|
||||
{ name: "FAQs", id: "/" },
|
||||
]}
|
||||
brandName="UniElection"
|
||||
/>
|
||||
<div className="pt-32 pb-20">
|
||||
<MetricCardEleven
|
||||
animationType="slide-up"
|
||||
title="Election Results"
|
||||
description="Live breakdown of the current vote tallies."
|
||||
metrics={[
|
||||
{ id: "p1", value: "52%", title: "Alex Johnson", description: "Presidential Candidate", imageSrc: "http://img.b2bpic.net/free-photo/vertical-picture-business-woman-with-folder-hand_171337-16601.jpg" },
|
||||
{ id: "p2", value: "48%", title: "Sarah Lee", description: "Presidential Candidate", imageSrc: "http://img.b2bpic.net/free-photo/young-adult-using-her-digital-tablet_23-2149064545.jpg" },
|
||||
]}
|
||||
textboxLayout="default"
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple
|
||||
columns={[]}
|
||||
bottomLeftText="© 2024 University Election Portal"
|
||||
bottomRightText="Official Results Portal"
|
||||
/>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
48
src/app/voting/page.tsx
Normal file
48
src/app/voting/page.tsx
Normal file
@@ -0,0 +1,48 @@
|
||||
"use client";
|
||||
|
||||
import { useState } from "react";
|
||||
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
|
||||
import ReactLenis from "lenis/react";
|
||||
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
|
||||
import ContactSplit from '@/components/sections/contact/ContactSplit';
|
||||
import FooterSimple from '@/components/sections/footer/FooterSimple';
|
||||
|
||||
export default function VotingPage() {
|
||||
const [submitted, setSubmitted] = useState(false);
|
||||
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="bounce-effect"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="soft"
|
||||
contentWidth="compact"
|
||||
sizing="medium"
|
||||
background="none"
|
||||
cardStyle="layered-gradient"
|
||||
primaryButtonStyle="primary-glow"
|
||||
secondaryButtonStyle="layered"
|
||||
headingFontWeight="extrabold"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<NavbarStyleApple
|
||||
navItems={[
|
||||
{ name: "Home", id: "/" },
|
||||
{ name: "Candidates", id: "/candidates" },
|
||||
{ name: "Voting", id: "/voting" },
|
||||
]}
|
||||
brandName="UniElection"
|
||||
/>
|
||||
<div className="pt-24">
|
||||
<ContactSplit
|
||||
tag="Secure Portal"
|
||||
title="Cast Your Vote"
|
||||
description={submitted ? "Thank you, your vote has been recorded securely." : "Please enter your Student ID to access the voting ballot."}
|
||||
onSubmit={() => setSubmitted(true)}
|
||||
buttonText="Submit Vote"
|
||||
/>
|
||||
</div>
|
||||
<FooterSimple columns={[]} bottomLeftText="© 2024 University Election Portal" />
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user