diff --git a/app/(default)/careers/page.tsx b/app/(default)/careers/page.tsx new file mode 100644 index 00000000..c82dd3d8 --- /dev/null +++ b/app/(default)/careers/page.tsx @@ -0,0 +1,52 @@ + + +import HeroBanner from "@/components/careersPage/HeroBanner"; +import JobList from "@/components/careersPage/JobList"; +import Footer from "@/components/ui/footer"; + + +export const metadata = { + title: "Careers", + description: "Careers Page", + }; + + +interface Job { + title: string; + description: string; + experience:number; + location:string; +} + +export default function CareersPage() { + const jobs: Job[] = [ + { title: 'Frontend Developer', description: 'Develop and optimize front-end web applications...', location: "On-site", experience: 2 }, + { title: 'Backend Developer', description: 'Implement and maintain server-side logic...', location: "Remote", experience: 3 }, + { title: 'Full Stack Developer', description: 'Work on both frontend and backend of applications...', location: "Remote", experience: 4 }, + { title: 'Data Scientist', description: 'Analyze data and provide business insights...', location: "On-site", experience: 2 }, + { title: 'Machine Learning Engineer', description: 'Build and deploy ML models...', location: "Remote", experience: 0 }, + { title: 'Product Manager', description: 'Manage product life cycle from ideation to launch...', location: "On-site", experience: 3 }, + { title: 'UI/UX Designer', description: 'Design user-centered interfaces and experiences...', location: "Remote", experience: 2 }, + { title: 'DevOps Engineer', description: 'Optimize development pipelines and manage CI/CD...', location: "On-site", experience: 4 }, + { title: 'QA Engineer', description: 'Conduct automated and manual testing...', location: "Remote", experience: 1 }, + { title: 'Systems Analyst', description: 'Evaluate and improve system efficiency...', location: "On-site", experience: 6 }, + { title: 'Product Manager', description: 'Manage product life cycle from ideation to launch...', location: "On-site", experience: 1 }, + { title: 'UI/UX Designer', description: 'Design user-centered interfaces and experiences...', location: "Remote", experience: 2 }, + { title: 'DevOps Engineer', description: 'Optimize development pipelines and manage CI/CD...', location: "On-site", experience: 4 }, + { title: 'QA Engineer', description: 'Conduct automated and manual testing...', location: "Remote", experience: 1 }, + { title: 'Systems Analyst', description: 'Evaluate and improve system efficiency...', location: "On-site", experience: 5 } + ]; + + + + return ( +
+ +
+ +
+ +
+ ); +} diff --git a/components/careersPage/FilterSection.tsx b/components/careersPage/FilterSection.tsx new file mode 100644 index 00000000..cccbf31d --- /dev/null +++ b/components/careersPage/FilterSection.tsx @@ -0,0 +1,43 @@ +"use client" +import { useState } from 'react'; + +interface FilterProps { + onSearch: (filters: { location: string;experience:number|null }) => void; +} + +export default function FilterSection({ onSearch }: FilterProps) { + const [location, setLocation] = useState(''); + const [experience, setExperience] = useState(null); + + return ( +
+
+ + + + +
+
+ ); +} diff --git a/components/careersPage/HeroBanner.tsx b/components/careersPage/HeroBanner.tsx new file mode 100644 index 00000000..0eb739e4 --- /dev/null +++ b/components/careersPage/HeroBanner.tsx @@ -0,0 +1,32 @@ +"use client" + +export default function HeroBanner() { + return ( +
+ {/* Background Pattern and Gradient Overlay */} +
+ + + {/* Diagonal Divider */} +
+ + {/* Main Content */} +
+

+ Join Our Dynamic Team +

+

+ Discover exciting career opportunities with us! We value creativity, collaboration, and growth. +

+ +
+
+ ); +} diff --git a/components/careersPage/JobList.tsx b/components/careersPage/JobList.tsx new file mode 100644 index 00000000..27f71c17 --- /dev/null +++ b/components/careersPage/JobList.tsx @@ -0,0 +1,87 @@ +"use client"; + +import { useState } from "react"; +import FilterSection from "./FilterSection"; +import LocationOnIcon from "@mui/icons-material/LocationOn"; + +interface Job { + title: string; + description: string; + experience: number; + location: string; +} + +interface JobListProps { + jobs: Job[]; +} + +export default function JobList({ jobs }: JobListProps) { + const [filterjobs, setFilterjobs] = useState(jobs); + const [currentPage, setCurrentPage] = useState(1); + const jobsPerPage = 5; // Number of jobs per page + + const handleSearch = (filters: { location: string; experience: number | null }) => { + const filterData = jobs.filter((job) => { + const matchesLocation = filters.location ? job.location.toLowerCase() === filters.location.toLowerCase() : true; + const matchesExperience = filters.experience ? job.experience === filters.experience - 1 : true; + return matchesLocation && matchesExperience; + }); + + setFilterjobs(filterData); + setCurrentPage(1); // Reset to the first page when a new filter is applied + }; + + // Pagination logic + const indexOfLastJob = currentPage * jobsPerPage; + const indexOfFirstJob = indexOfLastJob - jobsPerPage; + const currentJobs = filterjobs.slice(indexOfFirstJob, indexOfLastJob); + + const totalPages = Math.ceil(filterjobs.length / jobsPerPage); + + const goToPage = (page: number) => { + setCurrentPage(page); + }; + + return ( + <> + + +
+

Open Positions

+
+ {currentJobs.map((job, index) => ( +
+

{job.title}

+

{job.description}

+

Experience: {job.experience}+ years

+

+ {job.location} +

+ +
+ ))} +
+ + {/* Pagination */} +
+ {Array.from({ length: totalPages }, (_, i) => ( + + ))} +
+
+ + ); +} diff --git a/components/ui/footer.tsx b/components/ui/footer.tsx index 5b52bbe3..e5508bdf 100644 --- a/components/ui/footer.tsx +++ b/components/ui/footer.tsx @@ -58,6 +58,9 @@ export default function Footer() {
  • Community Blog
  • +
  • + Careers +
  • Sitemap
  • diff --git a/components/ui/header.tsx b/components/ui/header.tsx index e0a0a597..45d03f9c 100644 --- a/components/ui/header.tsx +++ b/components/ui/header.tsx @@ -105,6 +105,16 @@ export default function Header() { > Articles + + +
  • + + Careers +
  • {" "}