2026-01-11 21:30:57 +05:30
'use client' ;
import { useSession } from 'next-auth/react' ;
2026-01-11 22:09:41 +05:30
import Image from 'next/image' ;
2026-01-12 12:34:58 +05:30
// Import components from component folder
import {
InfoCard ,
2026-01-18 18:16:55 +05:30
ExperienceSection ,
2026-01-18 19:39:46 +05:30
ProfileCard ,
SpecializationSection ,
TestimonialsSection ,
2026-01-12 12:34:58 +05:30
} from './component' ;
2026-01-11 22:09:41 +05:30
// Mock agent data - in production, this would come from API
const agentData = {
name : 'Brian Neeland' ,
isVerified : true ,
title : 'Licensed Real Estate Agent' ,
location : 'Colorado' ,
memberSince : 'March 2020' ,
bio : 'Brian brings eight years of hands-on experience helping clients confidently buy, sell, and invest in real estate. He combines strong analytical skills with deep market knowledge to identify the right opportunities and guide clients through every step of the process. With a data-driven approach and clear communication, Brian ensures smooth transactions and informed decisions tailored to each client\'s goals.' ,
expertise : [ 'Buyers' , 'Sellers' , 'Divorce' , 'Luxury' , 'Retirement' , 'Historical' , 'condo' , 'Rural' , 'FHA' , 'Conventional' , 'USDA' , 'Retirement' ] ,
email : 'brian@gmail.com' ,
phone : '+91*******7493' ,
2026-01-12 12:34:58 +05:30
profileImage : '/assets/demo_images/8f017153a7b4a239a4f0691234ef97dd55092282.jpg' ,
2026-01-11 22:09:41 +05:30
experience : {
years : '10+ years' ,
contracts : '10+ Contracts' ,
licensingAreas : [ 'Colorado Springs' , 'Monument' , 'Falcon' , 'Castle Rock' , 'Fountain' , 'Momentum' ] ,
expertiseYears : [
{ area : 'Colorado' , years : '10 yrs' } ,
{ area : 'Falcon' , years : '10 yrs' } ,
{ area : 'Colorado' , years : '10 yrs' } ,
{ area : 'Colorado' , years : '10 yrs' } ,
] ,
certifications : [
{ name : 'Certified Residential Specialist (CRS)' , org : 'RESIDENTIAL REAL ESTATE COUNCIL' } ,
{ name : 'Certified Residential Specialist (CRS)' , org : 'RESIDENTIAL REAL ESTATE COUNCIL' } ,
] ,
} ,
availability : {
type : 'Full-time' ,
days : [ 'Monday' , 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday' ] ,
} ,
preferredWorkEnvironment : 'Preferred work environment includes on-site property visits, in-depth market research, client consultations, property tours, and active involvement in negotiations to ensure the best outcomes' ,
testimonialHighlight : "The most amazing experience I've had as a real estate professional is helping a family secure their dream home and seeing their happiness when they received the keys." ,
specialization : {
types : [ 'Buyers' , 'Sellers' , 'First time Buyers' , 'First time Sellers' , 'Divorce' ] ,
loanTypes : [ 'Conventional' , 'FHA' , 'VA' , 'USDA' ] ,
propertyTypes : [ 'SFR' , 'Town home' , 'Rural' , 'Luxury' , 'Condo' ] ,
hobbies : [ 'Boating' , 'Horses' , 'RV' , 'Automotive' , 'Aviation' ] ,
pricePoints : [ 'Under $100K' , '$100K – $300K' , '$300K – $500K' , '$500K – $1M' , '$1M and above' ] ,
} ,
testimonials : [
{
id : 1 ,
2026-01-12 14:13:37 +05:30
text : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo ligula eget dolor. Sed dignissim, nisl eget tincidunt vulputate, lacus justo bibendum ipsum, vitae tempus risus lorem at nunc. Integer sed arcu vitae risus feugiat vehicula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.' ,
author : 'Conor Kenney' ,
2026-01-11 22:09:41 +05:30
role : 'Chief Operations Officer' ,
rating : 5 ,
} ,
{
id : 2 ,
2026-01-12 14:13:37 +05:30
text : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean commodo ligula eget dolor. Sed dignissim, nisl eget tincidunt vulputate, lacus justo bibendum ipsum, vitae tempus risus lorem at nunc. Integer sed arcu vitae risus feugiat vehicula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.' ,
author : 'Conor Kenney' ,
2026-01-11 22:09:41 +05:30
role : 'Chief Operations Officer' ,
rating : 5 ,
} ,
] ,
} ;
2026-01-11 21:30:57 +05:30
export default function AgentDashboard() {
const { data : session } = useSession ( ) ;
2026-01-12 14:13:37 +05:30
const [ firstName , lastName ] = agentData . name . split ( ' ' ) ;
2026-01-11 21:30:57 +05:30
return (
< div className = "space-y-6" >
2026-01-18 19:27:13 +05:30
{ /* Main Layout - Responsive: Column on mobile, Row on desktop */ }
< div className = "flex flex-col lg:flex-row gap-6 lg:items-stretch" >
2026-01-11 22:09:41 +05:30
{ /* Left Sidebar - Status & Contact */ }
2026-01-18 19:27:13 +05:30
< div className = "w-full lg:w-[280px] flex-shrink-0 space-y-4 flex flex-col items-center lg:items-start" >
2026-01-12 14:13:37 +05:30
{ /* Profile Image */ }
2026-01-18 19:27:13 +05:30
< div className = "relative w-[200px] lg:w-[260px]" >
< div className = "w-[200px] h-[200px] lg:w-[260px] lg:h-[260px] rounded-[15px] overflow-hidden" >
2026-01-12 14:13:37 +05:30
< Image
src = { agentData . profileImage }
alt = "Profile"
2026-01-18 19:00:43 +05:30
width = { 260 }
height = { 260 }
2026-01-12 14:13:37 +05:30
className = "w-full h-full object-cover"
/ >
2026-01-18 08:44:53 +05:30
{ /* Gradient Overlay */ }
< div className = "absolute inset-0 bg-gradient-to-t from-black/50 via-black/20 to-transparent pointer-events-none" / >
2026-01-12 14:13:37 +05:30
< / div >
2026-01-18 08:44:53 +05:30
{ /* Edit Icon - Top Right Outside */ }
2026-01-12 14:13:37 +05:30
< button className = "absolute -top-3 -right-3 w-9 h-9 bg-white rounded-[10px] shadow-md flex items-center justify-center hover:bg-gray-50 transition-colors" >
< Image
src = "/assets/icons/edit-icon.svg"
alt = "Edit profile"
width = { 20 }
height = { 20 }
/ >
< / button >
< / div >
{ /* Status Buttons */ }
2026-01-18 19:27:13 +05:30
< div className = "w-full max-w-[354px] lg:max-w-none space-y-2" >
< div className = "flex items-center border border-[#00293d]/10 rounded-[15px] h-[50px] lg:h-[50px] px-4" >
2026-01-18 07:40:28 +05:30
< div className = "flex items-center gap-2 flex-1" >
< span className = "w-3 h-3 bg-green-500 rounded-full" / >
2026-01-18 17:56:24 +05:30
< span className = "text-sm font-bold text-[#00293d] font-fractul" > Available . < / span >
2026-01-12 14:13:37 +05:30
< / div >
2026-01-18 17:56:24 +05:30
< button className = "px-5 py-1.5 bg-[#e58625] text-white text-sm rounded-[15px] hover:bg-[#d47720] transition-colors font-fractul" >
2026-01-12 14:13:37 +05:30
Connect
< / button >
< / div >
2026-01-18 19:27:13 +05:30
< div className = "flex items-center border border-[#00293d]/10 rounded-[15px] h-[50px] lg:h-[50px] px-4" >
2026-01-18 07:40:28 +05:30
< div className = "flex items-center gap-2 flex-1" >
< span className = "w-3 h-3 bg-white border border-gray-400 rounded-full" / >
2026-01-18 17:56:24 +05:30
< span className = "text-sm font-bold text-[#00293d] font-fractul" > Unavailable . < / span >
2026-01-12 14:13:37 +05:30
< / div >
2026-01-18 17:56:24 +05:30
< button className = "px-5 py-1.5 bg-[#00293d] text-white text-sm rounded-[15px] hover:bg-[#001d2b] transition-colors font-fractul" >
2026-01-12 14:13:37 +05:30
Connect
< / button >
< / div >
< / div >
{ /* Contact Info */ }
2026-01-18 19:27:13 +05:30
< div className = "w-full max-w-[354px] lg:max-w-none border border-[#00293d]/10 rounded-[15px] p-4" >
2026-01-18 07:40:28 +05:30
< div className = "flex items-center gap-2 mb-2" >
< span className = "font-bold text-[#00293d] text-sm" > Email : < / span >
2026-01-18 18:16:55 +05:30
< span className = "text-[#00293d] text-sm font-serif" > * * * * * * * * brain @gmail . com < / span >
< button className = "p-1 hover:bg-gray-100 rounded ml-auto" >
< Image
src = "/assets/icons/eye-icon.svg"
alt = "Show email"
width = { 16 }
height = { 16 }
/ >
< / button >
2026-01-12 14:13:37 +05:30
< / div >
2026-01-18 07:40:28 +05:30
< div className = "flex items-center gap-2" >
< span className = "font-bold text-[#00293d] text-sm" > Ph . No : < / span >
< span className = "text-[#00293d] text-sm font-serif" > { agentData . phone } < / span >
< button className = "p-1 hover:bg-gray-100 rounded ml-auto" >
2026-01-12 14:13:37 +05:30
< Image
2026-01-18 18:16:55 +05:30
src = "/assets/icons/eye-icon.svg"
alt = "Show phone"
2026-01-12 14:13:37 +05:30
width = { 16 }
height = { 16 }
/ >
< / button >
< / div >
< / div >
< / div >
2026-01-11 21:30:57 +05:30
2026-01-18 19:27:13 +05:30
{ /* Right Content - Profile Info + Experience + All Sections */ }
2026-01-18 18:16:55 +05:30
< div className = "flex-1 space-y-6" >
{ /* Profile Card */ }
2026-01-18 19:39:46 +05:30
< ProfileCard
firstName = { firstName }
lastName = { lastName }
isVerified = { agentData . isVerified }
title = { agentData . title }
location = { agentData . location }
memberSince = { agentData . memberSince }
bio = { agentData . bio }
expertise = { agentData . expertise }
/ >
2026-01-11 21:30:57 +05:30
2026-01-18 19:27:13 +05:30
{ /* Experience Section */ }
2026-01-18 18:16:55 +05:30
< ExperienceSection experience = { agentData . experience } / >
2026-01-18 19:27:13 +05:30
{ /* Info Cards Section */ }
< div className = "flex flex-col lg:grid lg:grid-cols-3 gap-6" >
2026-01-18 18:16:55 +05:30
< InfoCard
title = "Availability"
icon = {
< Image
src = "/assets/icons/clock-icon.svg"
alt = "Availability"
width = { 32 }
height = { 32 }
/ >
}
content = {
< div >
< p className = "font-semibold mb-2" > { agentData . availability . type } < / p >
< div className = "space-y-1" >
{ agentData . availability . days . map ( ( day ) = > (
< p key = { day } > { day } < / p >
) ) }
< / div >
< / div >
}
/ >
< InfoCard
title = "Preferred work environment"
icon = {
< Image
src = "/assets/icons/location-large-icon.svg"
alt = "Work environment"
width = { 32 }
height = { 32 }
/ >
}
content = { < p className = "text-sm leading-relaxed" > { agentData . preferredWorkEnvironment } < / p > }
/ >
< InfoCard
title = ""
icon = {
< Image
src = "/assets/icons/star-icon.svg"
alt = "Testimonial"
width = { 32 }
height = { 32 }
/ >
}
content = { < p className = "text-sm leading-relaxed italic" > & ldquo ; { agentData . testimonialHighlight } & rdquo ; < / p > }
/ >
2026-01-12 14:13:37 +05:30
< / div >
2026-01-18 19:27:13 +05:30
{ /* Specialization Section */ }
2026-01-18 19:39:46 +05:30
< SpecializationSection specialization = { agentData . specialization } / >
2026-01-18 18:16:55 +05:30
2026-01-18 19:27:13 +05:30
{ /* Testimonials Section */ }
2026-01-18 19:39:46 +05:30
< TestimonialsSection testimonials = { agentData . testimonials } / >
2026-01-12 14:13:37 +05:30
< / div >
< / div >
2026-01-11 21:30:57 +05:30
< / div >
) ;
}