Files
frontend/src/components/home/FeaturesSection.tsx

210 lines
7.2 KiB
TypeScript

'use client';
import Image from 'next/image';
const features = [
{
icon: '/assets/icons/hourglass-icon.svg',
title: 'Hire Quickly',
description: 'Connect with experienced local real estate agents who match your needs and preferences. Our simple process helps you get started quickly and move forward without delays or unnecessary complexity.',
},
{
icon: '/assets/icons/verified-badge-icon.svg',
title: 'Verified Agents',
description: 'All agents are carefully identity-verified and background-checked to ensure trust and safety. You can confidently work with professionals who meet quality and reliability standards.',
},
{
icon: '/assets/icons/star-orange-icon.svg',
title: 'Top Rated',
description: 'Work with highly rated agents known for strong expertise and positive client feedback. Their consistent performance helps you make informed and confident property decisions.',
},
{
icon: '/assets/icons/trusted-people-icon.svg',
title: 'Trusted by Thousands',
description: 'Thousands of buyers, sellers, and renters trust our platform to find reliable agents. Our professionals help people navigate property journeys with confidence and ease.',
},
];
const agents = [
{
name: 'Anderson',
role: 'Rental & Investment Consultant',
rating: '4.9',
location: 'New York',
experience: '7+ years in the real estate industry.',
image: '/assets/images/agent-anderson.jpg',
position: 'top-left',
},
{
name: 'Deepak',
role: 'Rental & Investment Consultant',
rating: '4.9',
location: 'New York',
experience: '7+ years in the real estate industry.',
image: '/assets/images/agent-deepak.jpg',
position: 'top-right',
},
{
name: 'Daniel',
role: 'Rental & Investment Consultant',
rating: '4.9',
location: 'New York',
experience: '7+ years in the real estate industry.',
image: '/assets/images/agent-daniel.jpg',
position: 'bottom-center',
},
];
function AgentCard({ agent, className = '' }: { agent: typeof agents[0]; className?: string }) {
return (
<div className={`bg-white border border-[#00293d]/10 rounded-[15px] w-[254px] overflow-hidden ${className}`}>
{/* Agent Image */}
<div className="h-[161px] w-full overflow-hidden rounded-t-[15px]">
<Image
src={agent.image}
alt={agent.name}
width={254}
height={161}
className="w-full h-full object-cover"
/>
</div>
{/* Agent Info */}
<div className="p-4">
{/* Name */}
<h4 className="font-fractul font-bold text-[16px] leading-[19px] text-[#00293d]">
{agent.name}
</h4>
{/* Role */}
<p className="font-fractul font-normal text-[14px] leading-[17px] text-[#00293d] mt-1">
{agent.role}
</p>
{/* Verified & Rating */}
<div className="flex items-center gap-4 mt-2">
<div className="flex items-center gap-1">
<Image
src="/assets/icons/verified-icon.svg"
alt="Verified"
width={14}
height={14}
/>
<span className="font-serif font-medium text-[14px] leading-[19px] text-[#00293d]">
Verified Agent
</span>
</div>
<div className="flex items-center gap-1">
<Image
src="/assets/icons/star-filled-icon.svg"
alt="Rating"
width={14}
height={14}
/>
<span className="font-serif font-normal text-[14px] leading-[19px] text-[#00293d]">
{agent.rating} Rating
</span>
</div>
</div>
{/* Location */}
<div className="flex items-center gap-1 mt-2">
<Image
src="/assets/icons/location-filled-icon.svg"
alt="Location"
width={15}
height={15}
/>
<span className="font-serif font-medium text-[14px] leading-[19px] text-[#00293d]">
{agent.location}
</span>
</div>
{/* Experience */}
<p className="mt-2 text-[14px] leading-[19px] text-[#00293d]">
<span className="font-serif font-bold">Experience:</span>
<span className="font-serif font-normal"> {agent.experience}</span>
</p>
</div>
</div>
);
}
export function FeaturesSection() {
return (
<section className="py-16 md:py-20 bg-white">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div className="flex flex-col lg:flex-row gap-12 lg:gap-8">
{/* Left Side - Title & Features */}
<div className="lg:w-1/2">
{/* Section Header */}
<div className="mb-8">
<h2 className="font-fractul font-bold text-[32px] md:text-[40px] leading-[1.2] text-[#00293d] mb-4">
Find Trusted Real Estate Professionals On Demand
</h2>
<p className="font-fractul font-medium text-[18px] md:text-[20px] leading-[1.4] text-[#00293d]">
Quickly connect with the right agents exactly when you need them.
</p>
</div>
{/* Features Grid - 2x2 */}
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
{features.map((feature, index) => (
<div
key={index}
className="border border-[#00293d]/10 rounded-[15px] p-5"
>
<div className="mb-3">
<Image
src={feature.icon}
alt={feature.title}
width={35}
height={35}
/>
</div>
<h3 className="font-fractul font-semibold text-[20px] leading-[24px] text-[#00293d] mb-2">
{feature.title}
</h3>
<p className="font-serif font-normal text-[14px] leading-[19px] text-[#00293d]">
{feature.description}
</p>
</div>
))}
</div>
</div>
{/* Right Side - Agent Cards */}
<div className="lg:w-1/2 relative min-h-[650px] hidden lg:block">
{/* Anderson - Top Left */}
<AgentCard
agent={agents[0]}
className="absolute top-0 left-0 shadow-lg z-10"
/>
{/* Deepak - Top Right, offset down */}
<AgentCard
agent={agents[1]}
className="absolute top-[170px] right-0 shadow-lg z-20"
/>
{/* Daniel - Bottom Left, overlapping */}
<AgentCard
agent={agents[2]}
className="absolute top-[320px] left-[60px] shadow-lg z-30"
/>
</div>
{/* Mobile Agent Cards - Horizontal Scroll */}
<div className="lg:hidden overflow-x-auto pb-4">
<div className="flex gap-4 min-w-max">
{agents.map((agent, index) => (
<AgentCard key={index} agent={agent} className="shadow-lg flex-shrink-0" />
))}
</div>
</div>
</div>
</div>
</section>
);
}