From d87884fca5f26f6de04679deec2625b0ba376ec9 Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:12:38 +0000 Subject: [PATCH 1/6] Add src/app/admin/page.tsx --- src/app/admin/page.tsx | 246 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 src/app/admin/page.tsx diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx new file mode 100644 index 0000000..576a630 --- /dev/null +++ b/src/app/admin/page.tsx @@ -0,0 +1,246 @@ +"use client"; + +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, + Briefcase, + BarChart3, + Shield, + Activity, + TrendingUp, + AlertCircle, + Settings, +} 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" }, +]; + +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: "#" }, + ], + }, +]; + +export default function AdminPage() { + return ( + + + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ ); +} -- 2.49.1 From f49320b8db12d5b4cb08eff1e2b27f15d25585ee Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:12:38 +0000 Subject: [PATCH 2/6] Add src/app/applications/page.tsx --- src/app/applications/page.tsx | 299 ++++++++++++++++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 src/app/applications/page.tsx diff --git a/src/app/applications/page.tsx b/src/app/applications/page.tsx new file mode 100644 index 0000000..17ee7e8 --- /dev/null +++ b/src/app/applications/page.tsx @@ -0,0 +1,299 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered"; +import FeatureCardEight from "@/components/sections/feature/FeatureCardEight"; +import CardStack from "@/components/cardStack/CardStack"; +import ContactCenter from "@/components/sections/contact/ContactCenter"; +import FooterBase from "@/components/sections/footer/FooterBase"; +import { CheckCircle, Clock, AlertCircle, Mail } from "lucide-react"; +import { useState } from "react"; + +const navItems = [ + { name: "Search Jobs", id: "search" }, + { name: "Post a Job", id: "post-job" }, + { name: "Admin", id: "admin-login" }, + { name: "Browse", id: "browse" }, + { name: "Applications", id: "/applications" }, + { 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: "#" }, + ], + }, +]; + +interface Application { + id: string; + jobTitle: string; + company: string; + status: "pending" | "accepted" | "rejected" | "interviewing"; + appliedDate: string; + lastUpdated: string; + description: string; +} + +export default function ApplicationsPage() { + const [applications] = useState([ + { + id: "1", jobTitle: "Senior Frontend Developer", company: "Tech Innovations Amsterdam", status: "interviewing", appliedDate: "2025-01-10", lastUpdated: "2025-01-15", description: + "You've been selected for the interview round. Check your email for scheduling details and prepare for a technical assessment."}, + { + id: "2", jobTitle: "UX/UI Designer", company: "Creative Studio Rotterdam", status: "accepted", appliedDate: "2025-01-08", lastUpdated: "2025-01-16", description: + "Congratulations! Your application has been accepted. Please review the job offer details and respond within 5 business days."}, + { + id: "3", jobTitle: "Data Analyst", company: "Analytics Corp Utrecht", status: "pending", appliedDate: "2025-01-12", lastUpdated: "2025-01-12", description: + "Your application is being reviewed by the hiring team. You'll receive an update within 7-10 business days."}, + { + id: "4", jobTitle: "Marketing Manager", company: "Brand Solutions Hague", status: "rejected", appliedDate: "2025-01-05", lastUpdated: "2025-01-14", description: + "Thank you for your application. We've decided to move forward with other candidates but encourage you to apply for future opportunities."}, + { + id: "5", jobTitle: "Full Stack Developer", company: "Web Tech Solutions", status: "interviewing", appliedDate: "2025-01-11", lastUpdated: "2025-01-16", description: + "First round interview scheduled for January 20, 2025 at 14:00 CET. Confirmation link sent to your email."}, + { + id: "6", jobTitle: "Content Writer", company: "Digital Media Groningen", status: "pending", appliedDate: "2025-01-13", lastUpdated: "2025-01-13", description: + "Your portfolio and writing samples are being evaluated. We'll contact you soon with next steps."}, + ]); + + const getStatusIcon = (status: string) => { + switch (status) { + case "accepted": + return CheckCircle; + case "interviewing": + return Clock; + case "rejected": + return AlertCircle; + default: + return Clock; + } + }; + + const getStatusColor = (status: string): string => { + switch (status) { + case "accepted": + return "success"; + case "interviewing": + return "info"; + case "rejected": + return "error"; + default: + return "warning"; + } + }; + + const applicationCards = applications.map((app) => ( +
+
+
+

+ {app.jobTitle} +

+

{app.company}

+
+
+ {getStatusIcon(app.status) && + (() => { + const Icon = getStatusIcon(app.status); + return ( + + ); + })()} + + {app.status} + +
+
+

{app.description}

+
+ Applied: {new Date(app.appliedDate).toLocaleDateString()} + Updated: {new Date(app.lastUpdated).toLocaleDateString()} +
+
+ )); + + return ( + + + +
+ +
+ +
+ + {applicationCards} + +
+ +
+ a.status !== "pending").length / applications.length) * 100)}% of your applications have received responses from employers.`, + imageSrc: + "http://img.b2bpic.net/free-photo/corporate-workers-brainstorming-together_23-2148804568.jpg?_wi=1", imageAlt: "Response rate"}, + { + id: 3, + title: "Interviews Scheduled", description: `You have ${applications.filter((a) => a.status === "interviewing").length} interviews currently in the process or scheduled. Prepare and shine!",`, + imageSrc: + "http://img.b2bpic.net/free-photo/personal-information-form-identity-concept_53876-137622.jpg?_wi=1", imageAlt: "Interviews"}, + { + id: 4, + title: "Success Stories", description: `Congratulations! You have ${applications.filter((a) => a.status === "accepted").length} job offers. Review and respond to secure your next opportunity!`, + imageSrc: + "http://img.b2bpic.net/free-vector/professional-recruitment-plan-diversity-general-infographic-template_23-2148947635.jpg?_wi=1", imageAlt: "Accepted offers"}, + ]} + buttons={[ + { + text: "Continue Searching", href: "/search"}, + ]} + buttonAnimation="slide-up" + /> +
+ +
+ +
+ + +
+ ); +} -- 2.49.1 From c3e170a1603d90462aaa85cd36ce12ffd4a9fcc6 Mon Sep 17 00:00:00 2001 From: bender Date: Sun, 8 Mar 2026 22:12:39 +0000 Subject: [PATCH 3/6] Update src/app/layout.tsx --- src/app/layout.tsx | 1431 +------------------------------------------- 1 file changed, 19 insertions(+), 1412 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 4fd28d8..8663e8b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,1433 +1,41 @@ import type { Metadata } from "next"; -import { Montserrat } from "next/font/google"; -import { Inter } from "next/font/google"; +import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; -import { ServiceWrapper } from "@/components/ServiceWrapper"; -import Tag from "@/tag/Tag"; +import { ServiceWrapper } from "@/providers/service"; +import { Tag } from "@/components/tag"; -const montserrat = Montserrat({ - variable: "--font-montserrat", - subsets: ["latin"], +const geist = Geist({ + variable: "--font-geist-sans", subsets: ["latin"], }); -const inter = Inter({ - variable: "--font-inter", - subsets: ["latin"], +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", subsets: ["latin"], }); export const metadata: Metadata = { - title: "Jobee - Find Your Dream Job in the Netherlands", - description: "Search thousands of job opportunities across all 12 Dutch provinces. Post jobs, apply easily, and connect with top employers. Netherlands' leading job listing platform.", - keywords: "jobs Netherlands, job search Dutch market, employment opportunities, career platform, job listings", - metadataBase: new URL("https://jobee.nl"), - alternates: { - canonical: "https://jobee.nl", - }, - openGraph: { - title: "Jobee - Find Your Dream Job in the Netherlands", - description: "Search thousands of job opportunities across all 12 Dutch provinces. Post jobs, apply easily, and connect with top employers.", - url: "https://jobee.nl", - siteName: "Jobee", - type: "website", - images: [ - { - url: "http://img.b2bpic.net/free-photo/corporate-workers-brainstorming-together_23-2148804568.jpg", - alt: "Jobee - Dutch Job Listing Platform", - }, - ], - }, - twitter: { - card: "summary_large_image", - title: "Jobee - Find Your Dream Job in the Netherlands", - description: "Search thousands of job opportunities across all 12 Dutch provinces.", - images: [ - "http://img.b2bpic.net/free-photo/corporate-workers-brainstorming-together_23-2148804568.jpg", - ], - }, - robots: { - index: true, - follow: true, - }, -}; + 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."}; export default function RootLayout({ children, -}: Readonly<{ +}: { children: React.ReactNode; -}>) { +}) { return ( - - + + {children} - +