From a1b39f316925d050385cf3901fbbf7521de4795b Mon Sep 17 00:00:00 2001 From: alma Date: Wed, 16 Apr 2025 14:40:19 +0200 Subject: [PATCH] mail page ui correction maj compose 20 bis 16 --- app/mail/page.tsx | 385 +++++++++++++++++++++++++--------------------- 1 file changed, 210 insertions(+), 175 deletions(-) diff --git a/app/mail/page.tsx b/app/mail/page.tsx index 0e7a65b..a62bdb2 100644 --- a/app/mail/page.tsx +++ b/app/mail/page.tsx @@ -1042,6 +1042,130 @@ export default function MailPage() { ); + // Add debug logging for the email list + useEffect(() => { + console.log('Current view:', currentView); + console.log('Filtered emails:', filteredEmails.map(email => ({ + id: email.id, + subject: email.subject, + folder: email.folder, + from: email.from + }))); + }, [currentView, filteredEmails]); + + // Email list panel section + const renderEmailList = () => ( +
+ {/* Email list header */} +
+
+
+

+ {currentView === 'INBOX' ? 'Inbox' : + currentView === 'starred' ? 'Starred' : + currentView.charAt(0).toUpperCase() + currentView.slice(1)} +

+
+
+ {filteredEmails.length} emails +
+
+
+ + {/* Email list */} +
+ {loading ? ( +
+
+
+ ) : filteredEmails.length === 0 ? ( +
+ +

+ {currentView === 'INBOX' && 'No emails in inbox'} + {currentView === 'starred' && 'No starred emails'} + {currentView === 'Sent' && 'No sent emails'} + {currentView === 'Trash' && 'No emails in trash'} + {currentView === 'Drafts' && 'No drafts'} + {currentView === 'Spam' && 'No spam emails'} + {currentView === 'Archives' && 'No archived emails'} +

+ {/* Debug info */} +
+

Current view: {currentView}

+

Total emails: {emails.length}

+

Folders present: {[...new Set(emails.map(e => e.folder))].join(', ')}

+
+
+ ) : ( +
+ {filteredEmails.map((email) => ( +
handleEmailSelect(email.id)} + > +
+
+ e.stopPropagation()} + onCheckedChange={(checked) => { + if (checked) { + setSelectedEmails([...selectedEmails, email.id.toString()]); + } else { + setSelectedEmails(selectedEmails.filter(id => id !== email.id.toString())); + } + }} + /> + + {currentView === 'Sent' ? email.to : (email.fromName || email.from)} + +
+
+ + {formatDate(email.date)} + + {/* Show folder badge if it doesn't match current view */} + {email.folder !== currentView && currentView === 'starred' && ( + + {email.folder} + + )} + +
+
+
+

+ {email.subject || '(No subject)'} +

+

+ {email.body.replace(/<[^>]*>/g, '').substring(0, 100)}... +

+
+ {/* Debug info - only in development */} + {process.env.NODE_ENV === 'development' && ( +
+ Folder: {email.folder} +
+ )} +
+ ))} +
+ )} +
+
+ ); + if (error) { return (
@@ -1063,21 +1187,21 @@ export default function MailPage() { return ( <> {/* Main layout */} -
- {/* Sidebar */} +
+ {/* Sidebar */}
- {/* Courrier Title */} -
-
- - COURRIER -
+ {/* Courrier Title */} +
+
+ + COURRIER
+
- {/* Compose button */} + {/* Compose button */}
- -
+
+ +
{/* Accounts Section */}
@@ -1124,7 +1248,7 @@ export default function MailPage() {
{account.email}
- +
))}
@@ -1133,101 +1257,12 @@ export default function MailPage() { {/* Navigation */} {renderSidebarNav()} - + {/* Main content area */} -
+
{/* Email list panel */} -
- {/* Email list header */} -
-
-
-

- {currentView} -

-
-
- {filteredEmails.length} emails -
-
-
- - {/* Email list */} -
- {loading ? ( -
-
-
- ) : filteredEmails.length === 0 ? ( -
- -

- {currentView === 'INBOX' && 'No emails in inbox'} - {currentView === 'starred' && 'No starred emails'} - {currentView === 'Sent' && 'No sent emails'} - {currentView === 'Trash' && 'No emails in trash'} -

- {/* Add debug info */} -

- Total emails: {emails.length} -

-
- ) : ( -
- {filteredEmails.map((email) => ( -
handleEmailSelect(email.id)} - > -
-
- e.stopPropagation()} - onCheckedChange={(checked) => { - if (checked) { - setSelectedEmails([...selectedEmails, email.id.toString()]); - } else { - setSelectedEmails(selectedEmails.filter(id => id !== email.id.toString())); - } - }} - /> - - {currentView === 'Sent' ? email.to : (email.fromName || email.from)} - -
-
- - {formatDate(email.date)} - - -
-
-
-

- {email.subject} -

-

- {email.body.replace(/<[^>]*>/g, '').substring(0, 100)}... -

-
-
- ))} -
- )} -
-
+ {renderEmailList()} {/* Preview panel - will automatically take remaining space */}
@@ -1236,56 +1271,56 @@ export default function MailPage() { {/* Email actions header */}
-
- +

{selectedEmail.subject}

-
-
- - - - + + + - +
-
+
{/* Scrollable content area */} -
- - - {selectedEmail.fromName?.charAt(0) || selectedEmail.from.charAt(0)} - - -
-

- {selectedEmail.fromName || selectedEmail.from} -

-

- to {selectedEmail.to} -

-
-
- {formatDate(selectedEmail.date)} -
-
+
+ + + {selectedEmail.fromName?.charAt(0) || selectedEmail.from.charAt(0)} + + +
+

+ {selectedEmail.fromName || selectedEmail.from} +

+

+ to {selectedEmail.to} +

+
+
+ {formatDate(selectedEmail.date)} +
+
-
+
{(() => { try { const parsed = parseFullEmail(selectedEmail.body); @@ -1345,9 +1380,9 @@ export default function MailPage() { {attachment.filename} -
+
))} -
+
)} @@ -1360,15 +1395,15 @@ export default function MailPage() { - ) : ( -
- -

Select an email to view its contents

-
- )} - + ) : ( +
+ +

Select an email to view its contents

+
+ )} + {/* Compose Email Modal */} {showCompose && (