diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 86db400..910e109 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -174,7 +174,7 @@ export default function AdminPage() { title: "Geographic Distribution", description: "Job seeker and employer locations worldwide", bentoComponent: "map"}, { title: "Popular Job Categories", description: "Most sought-after job positions and skills", bentoComponent: "marquee", centerIcon: Activity, - variant: "text", texts: [ + texts: [ "Software Engineering", "Product Management", "Data Science", "UX Design", "Marketing", "Sales"], }, { diff --git a/src/app/applications/page.tsx b/src/app/applications/page.tsx index 17ee7e8..5177ce4 100644 --- a/src/app/applications/page.tsx +++ b/src/app/applications/page.tsx @@ -2,161 +2,43 @@ 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 MetricCardTen from "@/components/sections/metrics/MetricCardTen"; +import FeatureBento from "@/components/sections/feature/FeatureBento"; import FooterBase from "@/components/sections/footer/FooterBase"; -import { CheckCircle, Clock, AlertCircle, Mail } from "lucide-react"; -import { useState } from "react"; +import { + Users, + BarChart3, + Shield, + Activity, + TrendingUp, +} from "lucide-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" }, + { 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: "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: "Admin", items: [ + { label: "Dashboard", href: "/admin" }, + { label: "Settings", href: "/admin#settings" }, + { label: "Reports", href: "/admin#reports" }, ], }, { - 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: "#" }, + title: "Quick Links", items: [ + { label: "Help", href: "#" }, { label: "Support", href: "#" }, + { label: "Documentation", 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: "2", title: "Product Manager, Enterprise", subtitle: "Rotterdam, Netherlands · Full-time", category: "Product", value: "Posted 5 days ago", buttons: [ + { text: "View", href: "#" }, + { text: "Manage", href: "#" }, + ], + }, { - 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: "3", title: "UX Designer, B2B", subtitle: "Utrecht, Netherlands · Full-time", category: "Design", value: "Posted 1 week ago", buttons: [ + { text: "View", href: "#" }, + { text: "Manage", href: "#" }, + ], + }, { - 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"}, + id: "4", title: "Data Scientist, ML Platform", subtitle: "Remote · Full-time", category: "Data", value: "Posted 10 days ago", buttons: [ + { text: "View", href: "#" }, + { text: "Manage", href: "#" }, + ], + }, + { + id: "5", title: "DevOps Engineer, Infrastructure", subtitle: "Amsterdam, Netherlands · Full-time · Remote", category: "Infrastructure", value: "Posted 3 weeks ago", buttons: [ + { text: "View", href: "#" }, + { text: "Manage", href: "#" }, + ], + }, + { + id: "6", title: "Marketing Manager, Growth", subtitle: "The Hague, Netherlands · Full-time", category: "Marketing", value: "Posted 1 month ago", buttons: [ + { text: "View", href: "#" }, + { text: "Manage", href: "#" }, + ], + }, ]} - buttons={[ - { - text: "Continue Searching", href: "/search"}, - ]} - buttonAnimation="slide-up" - /> -
- -
-
diff --git a/src/app/apply/page.tsx b/src/app/apply/page.tsx index 685163a..091abee 100644 --- a/src/app/apply/page.tsx +++ b/src/app/apply/page.tsx @@ -2,136 +2,70 @@ 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"; -import { Briefcase, Sparkles } from "lucide-react"; + +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: "#" }, + ], + }, +]; 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 +} diff --git a/src/app/search/page.tsx b/src/app/search/page.tsx index cb0ec54..9d80e98 100644 --- a/src/app/search/page.tsx +++ b/src/app/search/page.tsx @@ -1,132 +1,39 @@ "use client"; -import { useState, useMemo } from "react"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleCentered from "@/components/navbar/NavbarStyleCentered/NavbarStyleCentered"; import FooterBase from "@/components/sections/footer/FooterBase"; -import { Search, MapPin, DollarSign, Briefcase, ChevronLeft, ChevronRight, X } 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: "Contact", id: "contact" }, + { name: "Dashboard", id: "/" }, + { name: "Browse Jobs", id: "/search" }, + { name: "My Applications", id: "/applications" }, + { name: "Settings", id: "#settings" }, ]; const footerColumns = [ { title: "Product", items: [ - { label: "Search Jobs", href: "/search" }, - { label: "Post a Job", href: "/post-job" }, - { label: "Browse by Province", href: "#provinces" }, + { label: "Browse Jobs", href: "/search" }, + { label: "Companies", href: "#" }, { label: "For Employers", href: "#" }, ], }, { title: "Company", items: [ - { label: "About Jobee", href: "#about" }, - { label: "Careers", href: "#" }, - { label: "Contact Us", href: "#contact" }, + { label: "About", href: "#" }, { label: "Blog", href: "#" }, - ], - }, - { - title: "Resources", items: [ - { label: "Privacy Policy", href: "#" }, - { label: "Terms of Service", href: "#" }, - { label: "FAQ", href: "#" }, - { label: "Support", href: "#" }, + { label: "Contact", href: "#" }, ], }, ]; -interface Job { - id: string; - title: string; - company: string; - location: string; - province: string; - salary: string; - type: string; - category: string; - description: string; - posted: string; -} - -const mockJobs: Job[] = [ - { - id: "1", title: "Senior Software Engineer", company: "TechFlow Solutions", location: "Amsterdam", province: "North Holland", salary: "€80,000 - €120,000", type: "Full-time", category: "Technology", description: "We are looking for an experienced software engineer to join our growing team.", posted: "2 days ago"}, - { - id: "2", title: "UX/UI Designer", company: "Creative Studio", location: "Rotterdam", province: "South Holland", salary: "€50,000 - €75,000", type: "Full-time", category: "Design", description: "Join our design team to create beautiful and intuitive user experiences.", posted: "1 day ago"}, - { - id: "3", title: "Marketing Manager", company: "Global Marketing Inc", location: "Utrecht", province: "Utrecht", salary: "€60,000 - €85,000", type: "Full-time", category: "Marketing", description: "Lead our marketing initiatives and strategy for European markets.", posted: "3 days ago"}, - { - id: "4", title: "Data Analyst", company: "DataViz Corp", location: "Amsterdam", province: "North Holland", salary: "€55,000 - €80,000", type: "Full-time", category: "Technology", description: "Analyze complex datasets and create actionable insights for stakeholders.", posted: "1 week ago"}, - { - id: "5", title: "Sales Representative", company: "SalesForce Pro", location: "Groningen", province: "Groningen", salary: "€45,000 - €65,000", type: "Full-time", category: "Sales", description: "Build relationships with clients and close deals in the B2B tech sector.", posted: "4 days ago"}, - { - id: "6", title: "Product Manager", company: "Innovation Labs", location: "Amsterdam", province: "North Holland", salary: "€75,000 - €110,000", type: "Full-time", category: "Technology", description: "Define product strategy and lead cross-functional teams.", posted: "5 days ago"}, - { - id: "7", title: "HR Specialist", company: "People First", location: "The Hague", province: "South Holland", salary: "€40,000 - €60,000", type: "Part-time", category: "Human Resources", description: "Support recruitment, onboarding, and employee development.", posted: "6 days ago"}, - { - id: "8", title: "Backend Developer", company: "Cloud Systems", location: "Amsterdam", province: "North Holland", salary: "€70,000 - €100,000", type: "Full-time", category: "Technology", description: "Develop scalable backend systems and APIs using modern technologies.", posted: "2 weeks ago"}, - { - id: "9", title: "Content Writer", company: "Content Creators", location: "Utrecht", province: "Utrecht", salary: "€35,000 - €50,000", type: "Full-time", category: "Marketing", description: "Create engaging content for blogs, social media, and marketing campaigns.", posted: "3 days ago"}, - { - id: "10", title: "DevOps Engineer", company: "Infrastructure Pro", location: "Amsterdam", province: "North Holland", salary: "€65,000 - €95,000", type: "Full-time", category: "Technology", description: "Maintain and optimize cloud infrastructure and CI/CD pipelines.", posted: "1 week ago"}, - { - id: "11", title: "Financial Analyst", company: "Finance Solutions", location: "Amsterdam", province: "North Holland", salary: "€55,000 - €80,000", type: "Full-time", category: "Finance", description: "Analyze financial data and provide insights for investment decisions.", posted: "4 days ago"}, - { - id: "12", title: "Customer Support Manager", company: "Support Hub", location: "Leiden", province: "South Holland", salary: "€45,000 - €65,000", type: "Full-time", category: "Customer Service", description: "Lead and manage customer support team to ensure excellent service quality.", posted: "5 days ago"}, -]; - -const provinces = [ - "North Holland", "South Holland", "Utrecht", "Groningen", "The Hague", "Friesland", "Drenthe", "Flevoland", "Overijssel", "Gelderland", "Limburg", "North Brabant"]; - -const categories = ["Technology", "Design", "Marketing", "Sales", "Human Resources", "Finance", "Customer Service"]; -const jobTypes = ["Full-time", "Part-time", "Contract", "Freelance"]; - export default function SearchPage() { const [searchQuery, setSearchQuery] = useState(""); - const [selectedProvinces, setSelectedProvinces] = useState([]); - const [selectedCategories, setSelectedCategories] = useState([]); - const [selectedTypes, setSelectedTypes] = useState([]); - const [currentPage, setCurrentPage] = useState(1); - const itemsPerPage = 6; - const filteredJobs = useMemo(() => { - return mockJobs.filter((job) => { - const matchesQuery = - searchQuery === "" || - job.title.toLowerCase().includes(searchQuery.toLowerCase()) || - job.company.toLowerCase().includes(searchQuery.toLowerCase()) || - job.description.toLowerCase().includes(searchQuery.toLowerCase()); - - const matchesProvince = - selectedProvinces.length === 0 || selectedProvinces.includes(job.province); - - const matchesCategory = - selectedCategories.length === 0 || selectedCategories.includes(job.category); - - const matchesType = selectedTypes.length === 0 || selectedTypes.includes(job.type); - - return matchesQuery && matchesProvince && matchesCategory && matchesType; - }); - }, [searchQuery, selectedProvinces, selectedCategories, selectedTypes]); - - const totalPages = Math.ceil(filteredJobs.length / itemsPerPage); - const paginatedJobs = filteredJobs.slice( - (currentPage - 1) * itemsPerPage, - currentPage * itemsPerPage - ); - - const toggleFilter = (value: string, setter: Function, state: string[]) => { - if (state.includes(value)) { - setter(state.filter((item) => item !== value)); - } else { - setter([...state, value]); - } + const handleSearch = (callback: () => void) => { + callback(); }; return ( @@ -134,255 +41,62 @@ export default function SearchPage() { defaultButtonVariant="text-stagger" defaultTextAnimation="reveal-blur" borderRadius="pill" - contentWidth="smallMedium" - sizing="mediumLargeSizeLargeTitles" + contentWidth="medium" + sizing="medium" background="circleGradient" - cardStyle="gradient-radial" - primaryButtonStyle="double-inset" + cardStyle="glass-elevated" + primaryButtonStyle="gradient" secondaryButtonStyle="glass" - headingFontWeight="bold" + headingFontWeight="normal" > -
-
- {/* Search Header */} -
-

- Find Your Dream Job -

-

- Browse thousands of opportunities across all Dutch provinces -

- - {/* Search Bar */} -
- +