From 3e059b0a4c0642d8fe6c6ead175a3666476f7afe Mon Sep 17 00:00:00 2001 From: Sandip Chowdhury Date: Mon, 16 Mar 2026 17:03:54 +0530 Subject: [PATCH] Service Page added --- app/(public)/_homeComponents/CTA.tsx | 5 +- app/(public)/_homeComponents/Header.tsx | 10 ++- app/(public)/_homeComponents/HeroSection.tsx | 15 +++-- app/(public)/_homeComponents/Pricing.tsx | 4 +- .../services/_components/ServiceCTA.tsx | 37 +++++++++++ .../services/_components/ServiceCard.tsx | 37 +++++++++++ .../services/_components/ServiceHero.tsx | 32 +++++++++ .../services/_components/ServicesList.tsx | 66 +++++++++++++++++++ app/(public)/services/page.tsx | 16 +++++ services/Constants.tsx | 1 + 10 files changed, 209 insertions(+), 14 deletions(-) create mode 100644 app/(public)/services/_components/ServiceCTA.tsx create mode 100644 app/(public)/services/_components/ServiceCard.tsx create mode 100644 app/(public)/services/_components/ServiceHero.tsx create mode 100644 app/(public)/services/_components/ServicesList.tsx create mode 100644 app/(public)/services/page.tsx diff --git a/app/(public)/_homeComponents/CTA.tsx b/app/(public)/_homeComponents/CTA.tsx index 2b2bdb9..1aa7ef2 100644 --- a/app/(public)/_homeComponents/CTA.tsx +++ b/app/(public)/_homeComponents/CTA.tsx @@ -3,9 +3,11 @@ import React from "react"; import { motion } from "framer-motion"; import { ArrowRight } from "lucide-react"; import { Button } from "@/components/ui/button"; +import { useRouter } from "next/navigation"; // CTA Section const CTA = () => { + const router = useRouter(); return (
{
diff --git a/app/(public)/_homeComponents/Header.tsx b/app/(public)/_homeComponents/Header.tsx index 03f91f5..b022dc1 100644 --- a/app/(public)/_homeComponents/Header.tsx +++ b/app/(public)/_homeComponents/Header.tsx @@ -5,10 +5,12 @@ import Link from "next/link"; import { Menu, X } from "lucide-react"; import { Button } from "@/components/ui/button"; import { home } from "@/services/Constants"; +import { useRouter } from "next/navigation"; const Header = () => { const [isOpen, setIsOpen] = useState(false); const [scrolled, setScrolled] = useState(false); + const router = useRouter(); useEffect(() => { const handleScroll = () => setScrolled(window.scrollY > 10); @@ -58,11 +60,9 @@ const Header = () => {
- @@ -96,11 +96,9 @@ const Header = () => { {item.name} ))} - @@ -63,7 +67,6 @@ export default function HeroSection() {
-
); @@ -73,7 +76,9 @@ function StatCard({ title, value }: { title: string; value: string }) { return (

{title}

-

{value}

+

+ {value} +

); -} \ No newline at end of file +} diff --git a/app/(public)/_homeComponents/Pricing.tsx b/app/(public)/_homeComponents/Pricing.tsx index dfa62be..9f29416 100644 --- a/app/(public)/_homeComponents/Pricing.tsx +++ b/app/(public)/_homeComponents/Pricing.tsx @@ -114,7 +114,7 @@ const MainPricingCard = () => { ); return ( -
+
@@ -247,7 +247,7 @@ const CtaSection = () => { const router = useRouter(); return ( -
+

Need Bulk Pricing or a Demo? diff --git a/app/(public)/services/_components/ServiceCTA.tsx b/app/(public)/services/_components/ServiceCTA.tsx new file mode 100644 index 0000000..fd698aa --- /dev/null +++ b/app/(public)/services/_components/ServiceCTA.tsx @@ -0,0 +1,37 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { motion } from "framer-motion"; + +export default function ServiceCTA() { + return ( +
+ +
+ + + Ready to Transform Your Hiring Process? + + +

+ Start using our AI-powered recruitment platform today. +

+ +
+ + + +
+ +
+ +
+ ); +} \ No newline at end of file diff --git a/app/(public)/services/_components/ServiceCard.tsx b/app/(public)/services/_components/ServiceCard.tsx new file mode 100644 index 0000000..01bf4cd --- /dev/null +++ b/app/(public)/services/_components/ServiceCard.tsx @@ -0,0 +1,37 @@ +"use client"; + +import { motion } from "framer-motion"; +import { Card, CardContent } from "@/components/ui/card"; + +interface Props { + title: string; + description: string; + icon: React.ReactNode; +} + +export default function ServiceCard({ title, description, icon }: Props) { + return ( + + + + +
+ {icon} +
+ +

+ {title} +

+ +

+ {description} +

+ +
+
+
+ ); +} \ No newline at end of file diff --git a/app/(public)/services/_components/ServiceHero.tsx b/app/(public)/services/_components/ServiceHero.tsx new file mode 100644 index 0000000..2dfe048 --- /dev/null +++ b/app/(public)/services/_components/ServiceHero.tsx @@ -0,0 +1,32 @@ +"use client"; + +import { motion } from "framer-motion"; + +export default function ServiceHero() { + return ( +
+
+ + + Our Services + + + + We provide powerful AI-driven recruitment solutions to help + businesses hire faster, smarter, and more efficiently. + + +
+
+ ); +} \ No newline at end of file diff --git a/app/(public)/services/_components/ServicesList.tsx b/app/(public)/services/_components/ServicesList.tsx new file mode 100644 index 0000000..ec2fd5a --- /dev/null +++ b/app/(public)/services/_components/ServicesList.tsx @@ -0,0 +1,66 @@ +"use client"; + +import ServiceCard from "./ServiceCard"; +import { Users, Brain, BarChart, Shield } from "lucide-react"; + +const services = [ + { + title: "AI Resume Screening", + description: + "Automatically analyze thousands of resumes and identify the best candidates using advanced AI matching algorithms.", + icon: , + }, + { + title: "Candidate Management", + description: + "Organize and manage candidate pipelines with powerful tools for tracking interviews, feedback, and hiring stages.", + icon: , + }, + { + title: "Recruitment Analytics", + description: + "Track hiring performance with detailed insights, reports, and analytics to improve your recruitment strategy.", + icon: , + }, + { + title: "Secure HR Management", + description: + "Ensure secure handling of candidate data with enterprise-level security and compliance features.", + icon: , + }, +]; + +export default function ServicesList() { + return ( +
+ +
+ +
+

+ What We Offer +

+ +

+ Our platform provides everything modern hiring teams need. +

+
+ +
+ + {services.map((service, index) => ( + + ))} + +
+ +
+ +
+ ); +} \ No newline at end of file diff --git a/app/(public)/services/page.tsx b/app/(public)/services/page.tsx new file mode 100644 index 0000000..784a140 --- /dev/null +++ b/app/(public)/services/page.tsx @@ -0,0 +1,16 @@ +'use client' +import ModulesSection from "../_homeComponents/Modules"; +import ServiceCTA from "./_components/ServiceCTA"; +import ServiceHero from "./_components/ServiceHero"; +import ServicesList from "./_components/ServicesList"; + +export default function ServicesPage() { + return ( +
+ + + + +
+ ); +} \ No newline at end of file diff --git a/services/Constants.tsx b/services/Constants.tsx index 78cef31..2bcaf39 100644 --- a/services/Constants.tsx +++ b/services/Constants.tsx @@ -148,6 +148,7 @@ export interface HomeContent { export const home: HomeContent = { navigation: [ + {name: "Services", href: "/services"}, { name: "Features", href: "/features" }, { name: "Blog", href: "/blogs" }, { name: "Careers", href: "/careers" },