From c5ed8fb1aa13d1cd873192b054a345947926fd75 Mon Sep 17 00:00:00 2001 From: pradeepkumar Date: Sun, 18 Jan 2026 23:58:25 +0530 Subject: [PATCH] feat: Implement agent messaging and settings pages with new components and icons. --- public/assets/icons/arrow-down-icon.svg | 3 + public/assets/icons/chevron-right-icon.svg | 3 + public/assets/icons/compose-icon.svg | 4 + public/assets/icons/emoji-icon.svg | 6 + public/assets/icons/gallery-icon.svg | 5 + public/assets/icons/gif-icon.svg | 6 + public/assets/icons/search-icon.svg | 4 + public/assets/icons/settings-bell-icon.svg | 3 + public/assets/icons/settings-lock-icon.svg | 3 + public/assets/icons/settings-privacy-icon.svg | 3 + public/assets/icons/settings-profile-icon.svg | 3 + public/assets/icons/shield-verified-icon.svg | 5 +- public/assets/icons/star-outline-icon.svg | 3 + public/assets/icons/three-dots-icon.svg | 5 + .../agent/dashboard/component/ProfileCard.tsx | 7 +- .../agent/message/component/ChatHeader.tsx | 116 ++++++ .../message/component/ConversationItem.tsx | 65 +++ .../message/component/ConversationList.tsx | 41 ++ .../agent/message/component/MessageInput.tsx | 98 +++++ .../(agent)/agent/message/component/index.ts | 4 + src/app/(agent)/agent/message/page.tsx | 383 ++++++++++++++++++ .../settings/component/SettingsSidebar.tsx | 133 ++++++ .../(agent)/agent/settings/component/index.ts | 1 + .../agent/settings/notifications/page.tsx | 206 ++++++++++ src/app/(agent)/agent/settings/page.tsx | 172 ++++++++ .../(agent)/agent/settings/password/page.tsx | 165 ++++++++ .../(agent)/agent/settings/privacy/page.tsx | 255 ++++++++++++ src/components/layout/AgentHeader.tsx | 13 +- 28 files changed, 1703 insertions(+), 12 deletions(-) create mode 100644 public/assets/icons/arrow-down-icon.svg create mode 100644 public/assets/icons/chevron-right-icon.svg create mode 100644 public/assets/icons/compose-icon.svg create mode 100644 public/assets/icons/emoji-icon.svg create mode 100644 public/assets/icons/gallery-icon.svg create mode 100644 public/assets/icons/gif-icon.svg create mode 100644 public/assets/icons/search-icon.svg create mode 100644 public/assets/icons/settings-bell-icon.svg create mode 100644 public/assets/icons/settings-lock-icon.svg create mode 100644 public/assets/icons/settings-privacy-icon.svg create mode 100644 public/assets/icons/settings-profile-icon.svg create mode 100644 public/assets/icons/star-outline-icon.svg create mode 100644 public/assets/icons/three-dots-icon.svg create mode 100644 src/app/(agent)/agent/message/component/ChatHeader.tsx create mode 100644 src/app/(agent)/agent/message/component/ConversationItem.tsx create mode 100644 src/app/(agent)/agent/message/component/ConversationList.tsx create mode 100644 src/app/(agent)/agent/message/component/MessageInput.tsx create mode 100644 src/app/(agent)/agent/message/component/index.ts create mode 100644 src/app/(agent)/agent/message/page.tsx create mode 100644 src/app/(agent)/agent/settings/component/SettingsSidebar.tsx create mode 100644 src/app/(agent)/agent/settings/component/index.ts create mode 100644 src/app/(agent)/agent/settings/notifications/page.tsx create mode 100644 src/app/(agent)/agent/settings/page.tsx create mode 100644 src/app/(agent)/agent/settings/password/page.tsx create mode 100644 src/app/(agent)/agent/settings/privacy/page.tsx diff --git a/public/assets/icons/arrow-down-icon.svg b/public/assets/icons/arrow-down-icon.svg new file mode 100644 index 0000000..bcb8640 --- /dev/null +++ b/public/assets/icons/arrow-down-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/chevron-right-icon.svg b/public/assets/icons/chevron-right-icon.svg new file mode 100644 index 0000000..ee9eac3 --- /dev/null +++ b/public/assets/icons/chevron-right-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/compose-icon.svg b/public/assets/icons/compose-icon.svg new file mode 100644 index 0000000..5d3863f --- /dev/null +++ b/public/assets/icons/compose-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/icons/emoji-icon.svg b/public/assets/icons/emoji-icon.svg new file mode 100644 index 0000000..3f5c181 --- /dev/null +++ b/public/assets/icons/emoji-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/assets/icons/gallery-icon.svg b/public/assets/icons/gallery-icon.svg new file mode 100644 index 0000000..8fccd97 --- /dev/null +++ b/public/assets/icons/gallery-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/assets/icons/gif-icon.svg b/public/assets/icons/gif-icon.svg new file mode 100644 index 0000000..6390458 --- /dev/null +++ b/public/assets/icons/gif-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/assets/icons/search-icon.svg b/public/assets/icons/search-icon.svg new file mode 100644 index 0000000..70b69db --- /dev/null +++ b/public/assets/icons/search-icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/icons/settings-bell-icon.svg b/public/assets/icons/settings-bell-icon.svg new file mode 100644 index 0000000..892b013 --- /dev/null +++ b/public/assets/icons/settings-bell-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/settings-lock-icon.svg b/public/assets/icons/settings-lock-icon.svg new file mode 100644 index 0000000..05dfa28 --- /dev/null +++ b/public/assets/icons/settings-lock-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/settings-privacy-icon.svg b/public/assets/icons/settings-privacy-icon.svg new file mode 100644 index 0000000..9fdf7c9 --- /dev/null +++ b/public/assets/icons/settings-privacy-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/settings-profile-icon.svg b/public/assets/icons/settings-profile-icon.svg new file mode 100644 index 0000000..aff1b92 --- /dev/null +++ b/public/assets/icons/settings-profile-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/shield-verified-icon.svg b/public/assets/icons/shield-verified-icon.svg index 2c65278..97d6103 100644 --- a/public/assets/icons/shield-verified-icon.svg +++ b/public/assets/icons/shield-verified-icon.svg @@ -1,4 +1,3 @@ - - - + + diff --git a/public/assets/icons/star-outline-icon.svg b/public/assets/icons/star-outline-icon.svg new file mode 100644 index 0000000..e318905 --- /dev/null +++ b/public/assets/icons/star-outline-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/assets/icons/three-dots-icon.svg b/public/assets/icons/three-dots-icon.svg new file mode 100644 index 0000000..8629c4c --- /dev/null +++ b/public/assets/icons/three-dots-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx b/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx index 1d18c07..8191687 100644 --- a/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx +++ b/src/app/(agent)/agent/dashboard/component/ProfileCard.tsx @@ -86,7 +86,10 @@ export function ProfileCard({ {/* Action Buttons */}
- + + {/* Top row - Name, status, actions */} +
+
+

+ {name} +

+ + + {role} + + + {lastSeen} + +
+
+ + +
+
+ + {/* User profile row */} +
+ {/* Avatar */} +
+
+ {name} +
+ {isOnline && ( +
+ )} +
+ + {/* User info */} +
+
+ + {name} + + Verified + {pronouns && ( + + ({pronouns}) + + )} +
+ + {/* Expertise tags */} + {expertise.length > 0 && ( +
+ {expertise.map((tag, index) => ( + + + {tag} + + {index < expertise.length - 1 && ( + | + )} + + ))} +
+ )} +
+
+
+ ); +} diff --git a/src/app/(agent)/agent/message/component/ConversationItem.tsx b/src/app/(agent)/agent/message/component/ConversationItem.tsx new file mode 100644 index 0000000..54dd46d --- /dev/null +++ b/src/app/(agent)/agent/message/component/ConversationItem.tsx @@ -0,0 +1,65 @@ +'use client'; + +import Image from 'next/image'; + +interface ConversationItemProps { + id: string; + name: string; + avatar: string; + lastMessage: string; + date: string; + isOnline?: boolean; + isSelected?: boolean; + onClick?: () => void; +} + +export function ConversationItem({ + id, + name, + avatar, + lastMessage, + date, + isOnline = false, + isSelected = false, + onClick, +}: ConversationItemProps) { + return ( +
+ {/* Avatar with online indicator */} +
+
+ {name} +
+ {isOnline && ( +
+ )} +
+ + {/* Content */} +
+

+ {name} +

+

+ {lastMessage} +

+
+ + {/* Date */} +

+ {date} +

+
+ ); +} diff --git a/src/app/(agent)/agent/message/component/ConversationList.tsx b/src/app/(agent)/agent/message/component/ConversationList.tsx new file mode 100644 index 0000000..c281ab7 --- /dev/null +++ b/src/app/(agent)/agent/message/component/ConversationList.tsx @@ -0,0 +1,41 @@ +'use client'; + +import Image from 'next/image'; +import { ConversationItem } from './ConversationItem'; + +interface Conversation { + id: string; + name: string; + avatar: string; + lastMessage: string; + date: string; + isOnline?: boolean; +} + +interface ConversationListProps { + conversations: Conversation[]; + selectedId: string | null; + onSelect: (id: string) => void; +} + +export function ConversationList({ + conversations, + selectedId, + onSelect, +}: ConversationListProps) { + return ( +
+ {/* Scrollable conversation list */} +
+ {conversations.map((conversation) => ( + onSelect(conversation.id)} + /> + ))} +
+
+ ); +} diff --git a/src/app/(agent)/agent/message/component/MessageInput.tsx b/src/app/(agent)/agent/message/component/MessageInput.tsx new file mode 100644 index 0000000..9cff087 --- /dev/null +++ b/src/app/(agent)/agent/message/component/MessageInput.tsx @@ -0,0 +1,98 @@ +'use client'; + +import Image from 'next/image'; +import { useState } from 'react'; + +interface MessageInputProps { + onSend?: (message: string) => void; +} + +export function MessageInput({ onSend }: MessageInputProps) { + const [message, setMessage] = useState(''); + + const handleSend = () => { + if (message.trim() && onSend) { + onSend(message.trim()); + setMessage(''); + } + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault(); + handleSend(); + } + }; + + return ( +
+ {/* Text input area */} +
+