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 */} -
- +