feat: Implement contact form submission with API integration and status feedback, refactor user profiles page layout and scrolling, and remove updateSession call from profile settings.

This commit is contained in:
pradeepkumar
2026-03-20 12:43:23 +05:30
parent f71d47f3b7
commit 64f4234220
4 changed files with 69 additions and 47 deletions

View File

@@ -612,8 +612,8 @@ function ProfilesPageContent() {
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
<MobileBackButton label="Back" fallbackHref="/user/dashboard" />
<div className="flex gap-6">
{/* Left Sidebar - hidden on mobile, sticky */}
<div className="hidden lg:block w-[220px] flex-shrink-0 self-start sticky top-6 max-h-[calc(100vh-48px)] overflow-y-auto scrollbar-thin">
{/* Left Sidebar - hidden on mobile */}
<div className="hidden lg:block w-[220px] flex-shrink-0">
{/* Listing Type */}
<div className="mb-6">
<h2 className="font-fractul font-bold text-[14px] text-[#00293d] mb-3">Listing Type</h2>
@@ -774,37 +774,35 @@ function ProfilesPageContent() {
</div>
)}
{/* Profile Cards - nested scroll matching filter sidebar height */}
{/* Profile Cards */}
{!loading && !error && agents.length > 0 && (
<div className="overflow-y-auto scroll-smooth scrollbar-thin" style={{ maxHeight: 'calc(100vh - 220px)' }}>
<div className="space-y-4 pb-4">
{agents.map((profile) => (
<ProfileCard key={profile.id} profile={profile} resolvedAvatarUrl={avatarUrls[profile.id]} />
))}
</div>
<div className="space-y-4">
{agents.map((profile) => (
<ProfileCard key={profile.id} profile={profile} resolvedAvatarUrl={avatarUrls[profile.id]} />
))}
</div>
)}
{/* Pagination - sticky at bottom of scroll area */}
{totalPages > 1 && (
<div className="flex justify-center items-center gap-2 py-3 flex-wrap sticky bottom-0 bg-white/95 backdrop-blur-sm">
<button
onClick={() => setCurrentPage(p => Math.max(1, p - 1))}
disabled={currentPage === 1}
className="px-4 py-2 rounded-[10px] border border-[#00293d]/20 font-serif text-[13px] text-[#00293d] disabled:opacity-50 disabled:cursor-not-allowed hover:border-[#00293d]/40 transition-colors"
>
Previous
</button>
<span className="px-4 py-2 font-serif text-[13px] text-[#00293d]">
Page {currentPage} of {totalPages}
</span>
<button
onClick={() => setCurrentPage(p => Math.min(totalPages, p + 1))}
disabled={currentPage === totalPages}
className="px-4 py-2 rounded-[10px] border border-[#00293d]/20 font-serif text-[13px] text-[#00293d] disabled:opacity-50 disabled:cursor-not-allowed hover:border-[#00293d]/40 transition-colors"
>
Next
</button>
</div>
)}
{/* Pagination */}
{!loading && !error && totalPages > 1 && (
<div className="flex justify-center items-center gap-2 mt-8 flex-wrap">
<button
onClick={() => setCurrentPage(p => Math.max(1, p - 1))}
disabled={currentPage === 1}
className="px-4 py-2 rounded-[10px] border border-[#00293d]/20 font-serif text-[13px] text-[#00293d] disabled:opacity-50 disabled:cursor-not-allowed hover:border-[#00293d]/40 transition-colors"
>
Previous
</button>
<span className="px-4 py-2 font-serif text-[13px] text-[#00293d]">
Page {currentPage} of {totalPages}
</span>
<button
onClick={() => setCurrentPage(p => Math.min(totalPages, p + 1))}
disabled={currentPage === totalPages}
className="px-4 py-2 rounded-[10px] border border-[#00293d]/20 font-serif text-[13px] text-[#00293d] disabled:opacity-50 disabled:cursor-not-allowed hover:border-[#00293d]/40 transition-colors"
>
Next
</button>
</div>
)}
</div>