From 0d569ac5861563bfff8f1653bd3099b037d2b3ca Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:24:31 +0000 Subject: [PATCH 01/20] Update src/app/admin/page.tsx --- src/app/admin/page.tsx | 503 ++++++++++++++++++++++++----------------- 1 file changed, 300 insertions(+), 203 deletions(-) diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 86db400..a283a4b 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -2,54 +2,60 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered"; -import MetricCardTen from "@/components/sections/metrics/MetricCardTen"; -import FeatureBento from "@/components/sections/feature/FeatureBento"; -import FooterBase from "@/components/sections/footer/FooterBase"; -import { - Users, - BarChart3, - Shield, - Activity, - TrendingUp, -} from "lucide-react"; +import { useState } from "react"; +import { BarChart3, Users, Briefcase, FileText, TrendingUp, LogOut } from "lucide-react"; const navItems = [ - { name: "Dashboard", id: "/admin" }, - { name: "Jobs", id: "/admin#jobs" }, - { name: "Users", id: "/admin#users" }, - { name: "Moderation", id: "/admin#moderation" }, - { name: "Analytics", id: "/admin#analytics" }, + { name: "Search Jobs", id: "" }, + { name: "Post a Job", id: "" }, + { name: "Admin", id: "/admin" }, + { name: "Browse", id: "" }, + { name: "Contact", id: "" }, ]; -const footerColumns = [ - { - title: "Admin", items: [ - { label: "Dashboard", href: "/admin" }, - { label: "Settings", href: "/admin#settings" }, - { label: "Reports", href: "/admin#reports" }, - ], - }, - { - title: "Quick Links", items: [ - { label: "Help", href: "#" }, - { label: "Support", href: "#" }, - { label: "Documentation", href: "#" }, - ], - }, -]; +type TabType = "jobs" | "applications" | "users" | "analytics"; + +export default function AdminDashboard() { + const [activeTab, setActiveTab] = useState("jobs"); + const [jobs] = useState([ + { id: 1, title: "Senior Developer", company: "Tech Corp", status: "Active", applications: 12, posted: "2 days ago" }, + { id: 2, title: "Product Manager", company: "Startup Inc", status: "Active", applications: 8, posted: "5 days ago" }, + { id: 3, title: "Designer", company: "Creative Agency", status: "Inactive", applications: 5, posted: "10 days ago" }, + ]); + + const [applications] = useState([ + { id: 1, candidate: "John Smith", position: "Senior Developer", status: "Under Review", appliedDate: "2025-01-20" }, + { id: 2, candidate: "Sarah Johnson", position: "Product Manager", status: "Interview", appliedDate: "2025-01-19" }, + { id: 3, candidate: "Mike Davis", position: "Senior Developer", status: "Rejected", appliedDate: "2025-01-18" }, + ]); + + const [users] = useState([ + { id: 1, name: "Alice Chen", email: "alice@example.com", role: "Job Seeker", joined: "2025-01-10", status: "Active" }, + { id: 2, name: "Bob Wilson", email: "bob@example.com", role: "Employer", joined: "2025-01-05", status: "Active" }, + { id: 3, name: "Carol White", email: "carol@example.com", role: "Job Seeker", joined: "2024-12-20", status: "Inactive" }, + ]); + + const [analytics] = useState({ + totalJobs: 284, + activeApplications: 156, + totalUsers: 2341, + avgTimeToHire: "18 days", monthlyGrowth: "+12.5%", conversionRate: "8.3%"}); + + const handleLogout = () => { + window.location.href = "/"; + }; -export default function AdminPage() { return ( -
- -
+
+
+

Admin Dashboard

-
- -
+ {/* Tab Navigation */} +
+ + + + +
-
- -
+ {/* Job Management Tab */} + {activeTab === "jobs" && ( +
+
+

Job Listings

+ +
+
+ + + + + + + + + + + + + {jobs.map((job) => ( + + + + + + + + + ))} + +
Job TitleCompanyStatusApplicationsPostedActions
{job.title}{job.company} + + {job.status} + + {job.applications}{job.posted} + + +
+
+
+ )} -
- -
+ {/* Applications Management Tab */} + {activeTab === "applications" && ( +
+

Application Management

+
+ + + + + + + + + + + + {applications.map((app) => ( + + + + + + + + ))} + +
CandidatePositionStatusApplied DateActions
{app.candidate}{app.position} + + {app.status} + + {app.appliedDate} + + +
+
+
+ )} -
); From ef348208d87fd620d9b36430dcd8004993746c0a Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:24:32 +0000 Subject: [PATCH 02/20] Update src/app/applications/page.tsx --- src/app/applications/page.tsx | 381 +++++++++++++++++++++++++++------- 1 file changed, 307 insertions(+), 74 deletions(-) diff --git a/src/app/applications/page.tsx b/src/app/applications/page.tsx index 5177ce4..a49b51c 100644 --- a/src/app/applications/page.tsx +++ b/src/app/applications/page.tsx @@ -2,43 +2,125 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered"; -import MetricCardTen from "@/components/sections/metrics/MetricCardTen"; -import FeatureBento from "@/components/sections/feature/FeatureBento"; import FooterBase from "@/components/sections/footer/FooterBase"; -import { - Users, - BarChart3, - Shield, - Activity, - TrendingUp, -} from "lucide-react"; +import { useState } from "react"; +import { Briefcase, Clock, CheckCircle, AlertCircle, MapPin, DollarSign, Building2, Calendar, ArrowRight } from "lucide-react"; const navItems = [ - { name: "Dashboard", id: "/admin" }, - { name: "Jobs", id: "/admin#jobs" }, - { name: "Users", id: "/admin#users" }, - { name: "Moderation", id: "/admin#moderation" }, - { name: "Analytics", id: "/admin#analytics" }, + { name: "Search Jobs", id: "search" }, + { name: "Post a Job", id: "post-job" }, + { name: "Admin", id: "admin-login" }, + { name: "Browse", id: "browse" }, + { name: "Contact", id: "contact" }, + { name: "Applications", id: "/applications" }, ]; const footerColumns = [ { - title: "Admin", items: [ - { label: "Dashboard", href: "/admin" }, - { label: "Settings", href: "/admin#settings" }, - { label: "Reports", href: "/admin#reports" }, + title: "Product", items: [ + { label: "Search Jobs", href: "/search" }, + { label: "Post a Job", href: "/post-job" }, + { label: "Browse by Province", href: "#provinces" }, + { label: "For Employers", href: "#" }, ], }, { - title: "Quick Links", items: [ - { label: "Help", href: "#" }, + title: "Company", items: [ + { label: "About Jobee", href: "#about" }, + { label: "Careers", href: "#" }, + { label: "Contact Us", href: "#contact" }, + { label: "Blog", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "FAQ", href: "#" }, { label: "Support", href: "#" }, - { label: "Documentation", href: "#" }, ], }, ]; +interface Application { + id: string; + jobTitle: string; + company: string; + location: string; + salary: string; + appliedDate: string; + status: "pending" | "reviewed" | "accepted" | "rejected"; + logoSrc?: string; +} + +const mockApplications: Application[] = [ + { + id: "1", jobTitle: "Senior React Developer", company: "TechFlow Solutions", location: "Amsterdam, Netherlands", salary: "€65,000 - €80,000", appliedDate: "2025-01-15", status: "reviewed", logoSrc: "https://api.dicebear.com/7.x/initials/svg?seed=TF"}, + { + id: "2", jobTitle: "UX/UI Designer", company: "Creative Studios Amsterdam", location: "Amsterdam, Netherlands", salary: "€50,000 - €65,000", appliedDate: "2025-01-10", status: "accepted", logoSrc: "https://api.dicebear.com/7.x/initials/svg?seed=CSA"}, + { + id: "3", jobTitle: "Full Stack Developer", company: "Innovate Inc", location: "Rotterdam, Netherlands", salary: "€55,000 - €70,000", appliedDate: "2025-01-12", status: "pending", logoSrc: "https://api.dicebear.com/7.x/initials/svg?seed=II"}, + { + id: "4", jobTitle: "Marketing Manager", company: "Digital Growth Partners", location: "Utrecht, Netherlands", salary: "€48,000 - €60,000", appliedDate: "2025-01-08", status: "rejected", logoSrc: "https://api.dicebear.com/7.x/initials/svg?seed=DGP"}, + { + id: "5", jobTitle: "Data Scientist", company: "Analytics Pro", location: "The Hague, Netherlands", salary: "€60,000 - €75,000", appliedDate: "2025-01-05", status: "reviewed", logoSrc: "https://api.dicebear.com/7.x/initials/svg?seed=AP"}, + { + id: "6", jobTitle: "Product Manager", company: "Tech Ventures", location: "Eindhoven, Netherlands", salary: "€65,000 - €85,000", appliedDate: "2025-01-02", status: "pending", logoSrc: "https://api.dicebear.com/7.x/initials/svg?seed=TV"}, +]; + +const getStatusColor = (status: string) => { + switch (status) { + case "accepted": + return "bg-green-100 text-green-800"; + case "rejected": + return "bg-red-100 text-red-800"; + case "reviewed": + return "bg-blue-100 text-blue-800"; + case "pending": + return "bg-yellow-100 text-yellow-800"; + default: + return "bg-gray-100 text-gray-800"; + } +}; + +const getStatusIcon = (status: string) => { + switch (status) { + case "accepted": + return ; + case "rejected": + return ; + case "reviewed": + return ; + case "pending": + return ; + default: + return ; + } +}; + +const getStatusLabel = (status: string) => { + switch (status) { + case "accepted": + return "Accepted"; + case "rejected": + return "Rejected"; + case "reviewed": + return "Under Review"; + case "pending": + return "Pending"; + default: + return status; + } +}; + export default function ApplicationsPage() { + const [selectedApplication, setSelectedApplication] = useState(null); + const [statusFilter, setStatusFilter] = useState("all"); + + const filteredApplications = statusFilter === "all" + ? mockApplications + : mockApplications.filter(app => app.status === statusFilter); + return ( -
- -
+
+
+ {/* Header Section */} +
+
+ +

My Applications

+
+

+ Track and manage all your job applications in one place. Monitor your application status and stay updated on opportunities. +

+ + {/* Status Filter */} +
+ + + + + +
+
+ + {/* Applications Grid */} +
+ {/* Application List */} +
+
+ {filteredApplications.length === 0 ? ( +
+ +

No applications found with this status.

+
+ ) : ( + filteredApplications.map((app) => ( +
setSelectedApplication(app)} + className={`bg-card border border-accent/20 rounded-2xl p-6 cursor-pointer transition-all hover:border-accent/50 hover:shadow-lg ${ + selectedApplication?.id === app.id ? "border-primary-cta" : "" + }`} + > +
+ {/* Company Logo */} +
+
+ +
+
+ + {/* Application Info */} +
+
+
+

{app.jobTitle}

+

{app.company}

+
+ + {getStatusIcon(app.status)} + {getStatusLabel(app.status)} + +
+ +
+
+ + {app.location} +
+
+ + {app.salary} +
+
+ + {new Date(app.appliedDate).toLocaleDateString()} +
+
+
+ + {/* Arrow Icon */} +
+ +
+
+
+ )) + )} +
+
+ + {/* Application Details Panel */} +
+ {selectedApplication ? ( +
+
+

{selectedApplication.jobTitle}

+

{selectedApplication.company}

+ + {getStatusIcon(selectedApplication.status)} + {getStatusLabel(selectedApplication.status)} + +
+ +
+
+

Location

+
+ +

{selectedApplication.location}

+
+
+ +
+

Salary Range

+
+ +

{selectedApplication.salary}

+
+
+ +
+

Applied Date

+
+ +

{new Date(selectedApplication.appliedDate).toLocaleDateString()}

+
+
+
+ +
+ + +
+
+ ) : ( +
+ +

Select an application to view details

+
+ )} +
+
+
+
From 3782a4c02db216b73c12f798070e44016aeb9a9b Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:24:32 +0000 Subject: [PATCH 03/20] Update src/app/apply/page.tsx --- src/app/apply/page.tsx | 148 +++++++++++++++++++++++++++++------------ 1 file changed, 107 insertions(+), 41 deletions(-) diff --git a/src/app/apply/page.tsx b/src/app/apply/page.tsx index 091abee..685163a 100644 --- a/src/app/apply/page.tsx +++ b/src/app/apply/page.tsx @@ -2,70 +2,136 @@ import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered"; +import FeatureCardEight from "@/components/sections/feature/FeatureCardEight"; +import TestimonialCardTwo from "@/components/sections/testimonial/TestimonialCardTwo"; import FooterBase from "@/components/sections/footer/FooterBase"; - -const navItems = [ - { name: "Dashboard", id: "/" }, - { name: "Browse Jobs", id: "/search" }, - { name: "My Applications", id: "/applications" }, - { name: "Settings", id: "#settings" }, -]; - -const footerColumns = [ - { - title: "Product", items: [ - { label: "Browse Jobs", href: "/search" }, - { label: "Companies", href: "#" }, - { label: "For Employers", href: "#" }, - ], - }, - { - title: "Company", items: [ - { label: "About", href: "#" }, - { label: "Blog", href: "#" }, - { label: "Contact", href: "#" }, - ], - }, -]; +import { Briefcase, Sparkles } from "lucide-react"; export default function ApplyPage() { + const navItems = [ + { name: "Search Jobs", id: "search" }, + { name: "Post a Job", id: "post-job" }, + { name: "Admin", id: "admin-login" }, + { name: "Browse", id: "browse" }, + { name: "Contact", id: "contact" }, + ]; + + const footerColumns = [ + { + title: "Product", items: [ + { label: "Search Jobs", href: "/search" }, + { label: "Post a Job", href: "/post-job" }, + { label: "Browse by Province", href: "#provinces" }, + { label: "For Employers", href: "#" }, + ], + }, + { + title: "Company", items: [ + { label: "About Jobee", href: "#about" }, + { label: "Careers", href: "#" }, + { label: "Contact Us", href: "#contact" }, + { label: "Blog", href: "#" }, + ], + }, + { + title: "Resources", items: [ + { label: "Privacy Policy", href: "#" }, + { label: "Terms of Service", href: "#" }, + { label: "FAQ", href: "#" }, + { label: "Support", href: "#" }, + ], + }, + ]; + return ( -
-
-

Job Application Form

-

Complete your profile to apply for this position

-
+
+ +
+ +
+
); -} +} \ No newline at end of file From 03f62ec21d29fa8d21e5781c6e45ef643118093d Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:24:32 +0000 Subject: [PATCH 04/20] Update src/app/layout.tsx --- src/app/layout.tsx | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d7133a2..081faa1 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,17 +1,17 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Inter } from "next/font/google"; import "./globals.css"; +import ServiceWrapper from "@/providers/serviceWrapper/ServiceWrapper"; +import { Tag } from "@/components/shared/Tag"; -const geist = Geist({ - variable: "--font-geist-sans", subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", subsets: ["latin"], +const inter = Inter({ + variable: "--font-inter", subsets: ["latin"], + weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"], }); export const metadata: Metadata = { - title: "Jobee - Dutch Job Listings Platform", description: "Find your dream job in the Netherlands across all 12 provinces. Connect with top employers and build your career with Jobee."}; + title: "Jobee - Dutch Job Listings & Recruitment Platform", description: + "Find your dream job in the Netherlands with Jobee. Browse thousands of opportunities across all 12 Dutch provinces and connect with top employers."}; export default function RootLayout({ children, @@ -20,18 +20,18 @@ export default function RootLayout({ }) { return ( - - {children} + + + + {children} +