diff --git a/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx b/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx
index 5329f31..60b73b6 100644
--- a/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx
+++ b/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx
@@ -1,6 +1,7 @@
'use client';
import Image from 'next/image';
+import Link from 'next/link';
import { Tag } from './Tag';
interface ProfileCardProps {
@@ -47,14 +48,14 @@ export function ProfileCard({
>
)}
-
+
{title}
diff --git a/src/app/(agent)/agent/dashboard/page.tsx b/src/app/(agent)/agent/dashboard/page.tsx
index fa4a21a..3188def 100644
--- a/src/app/(agent)/agent/dashboard/page.tsx
+++ b/src/app/(agent)/agent/dashboard/page.tsx
@@ -2,7 +2,6 @@
import { useSession } from 'next-auth/react';
import Image from 'next/image';
-import Link from 'next/link';
// Import components from component folder
import {
@@ -104,17 +103,14 @@ export default function AgentDashboard() {
{/* Edit Icon - Top Right Outside */}
-
+
{/* Status Buttons */}
diff --git a/src/app/(agent)/agent/edit/components/QuickLinks.tsx b/src/app/(agent)/agent/edit/components/QuickLinks.tsx
index da88b2a..fa862f9 100644
--- a/src/app/(agent)/agent/edit/components/QuickLinks.tsx
+++ b/src/app/(agent)/agent/edit/components/QuickLinks.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useState } from 'react';
+import { useEffect, useState, useRef } from 'react';
const links = [
{ id: 'basic-info', label: 'Basic Information' },
@@ -20,14 +20,65 @@ const links = [
{ id: 'availability', label: 'Availability' },
];
-export function QuickLinks() {
+interface QuickLinksProps {
+ scrollContainerRef: React.RefObject;
+}
+
+export function QuickLinks({ scrollContainerRef }: QuickLinksProps) {
const [activeLink, setActiveLink] = useState('basic-info');
+ const isClickScrolling = useRef(false);
+
+ useEffect(() => {
+ const container = scrollContainerRef.current;
+ if (!container) return;
+
+ const handleScroll = () => {
+ if (isClickScrolling.current) return;
+
+ const containerRect = container.getBoundingClientRect();
+ const containerTop = containerRect.top;
+
+ let currentSection = 'basic-info';
+
+ for (const link of links) {
+ const element = document.getElementById(link.id);
+ if (element) {
+ const rect = element.getBoundingClientRect();
+ // Check if the section is near the top of the container
+ if (rect.top <= containerTop + 100) {
+ currentSection = link.id;
+ }
+ }
+ }
+
+ setActiveLink(currentSection);
+ };
+
+ container.addEventListener('scroll', handleScroll);
+ return () => container.removeEventListener('scroll', handleScroll);
+ }, [scrollContainerRef]);
const scrollToSection = (id: string) => {
- setActiveLink(id);
+ const container = scrollContainerRef.current;
const element = document.getElementById(id);
- if (element) {
- element.scrollIntoView({ behavior: 'smooth', block: 'start' });
+
+ if (element && container) {
+ isClickScrolling.current = true;
+ setActiveLink(id);
+
+ const containerRect = container.getBoundingClientRect();
+ const elementRect = element.getBoundingClientRect();
+ const scrollTop = container.scrollTop + (elementRect.top - containerRect.top) - 20;
+
+ container.scrollTo({
+ top: scrollTop,
+ behavior: 'smooth'
+ });
+
+ // Reset the flag after scroll animation completes
+ setTimeout(() => {
+ isClickScrolling.current = false;
+ }, 500);
}
};
diff --git a/src/app/(agent)/agent/edit/page.tsx b/src/app/(agent)/agent/edit/page.tsx
index f9fbe98..2d495b9 100644
--- a/src/app/(agent)/agent/edit/page.tsx
+++ b/src/app/(agent)/agent/edit/page.tsx
@@ -1,6 +1,6 @@
'use client';
-import { useState } from 'react';
+import { useState, useRef } from 'react';
import { useRouter } from 'next/navigation';
import Image from 'next/image';
import {
@@ -108,6 +108,7 @@ const initialFormData = {
export default function EditProfilePage() {
const router = useRouter();
const [formData, setFormData] = useState(initialFormData);
+ const scrollContainerRef = useRef(null);
const handleCancel = () => {
router.push('/agent/dashboard');
@@ -124,16 +125,14 @@ export default function EditProfilePage() {
};
return (
-
+
{/* Left Sidebar - Quick Links */}
-
-
-
-
+
+
- {/* Main Content */}
-
+ {/* Main Content - Scrollable */}
+
{/* Basic Information */}
diff --git a/src/app/globals.css b/src/app/globals.css
index c0a97fd..41ebe63 100644
--- a/src/app/globals.css
+++ b/src/app/globals.css
@@ -95,3 +95,27 @@ html {
background-color: var(--color-primary-light);
color: var(--color-primary-dark);
}
+
+/* Custom Scrollbar Styles */
+.scrollbar-thin::-webkit-scrollbar {
+ width: 6px;
+}
+
+.scrollbar-thin::-webkit-scrollbar-track {
+ background: transparent;
+}
+
+.scrollbar-thin::-webkit-scrollbar-thumb {
+ background-color: #d1d5db;
+ border-radius: 3px;
+}
+
+.scrollbar-thin::-webkit-scrollbar-thumb:hover {
+ background-color: #9ca3af;
+}
+
+/* Firefox scrollbar */
+.scrollbar-thin {
+ scrollbar-width: thin;
+ scrollbar-color: #d1d5db transparent;
+}