From d35d89ea9d92485fb51d5e489ee83c812b562884 Mon Sep 17 00:00:00 2001 From: alma Date: Wed, 16 Apr 2025 19:14:20 +0200 Subject: [PATCH] Neah version mail design fix 7 bis ?? --- app/mail/page.tsx | 513 ++++++++++++++++++++++++---------------------- 1 file changed, 263 insertions(+), 250 deletions(-) diff --git a/app/mail/page.tsx b/app/mail/page.tsx index dc4268a..18ddd5b 100644 --- a/app/mail/page.tsx +++ b/app/mail/page.tsx @@ -737,11 +737,10 @@ export default function MailPage() { } }; - // Update the email list header with inline bulk actions + // Update the email list header to be cleaner const renderEmailListHeader = () => (
- {/* Left side with checkbox and title */}
0 && selectedEmails.length === emails.length} @@ -753,53 +752,93 @@ export default function MailPage() { {emails.length} emails
- - {/* Bulk actions right after the title */} - {selectedEmails.length > 0 ? ( -
- - - -
- ) : null}
); + // Add a fixed bottom toolbar for bulk actions + const renderBulkActionsToolbar = () => { + if (selectedEmails.length === 0) return null; + + return ( +
+
+ + {selectedEmails.length} selected + + + + +
+
+ ); + }; + + // Update the email list wrapper to include the bulk actions toolbar + const renderEmailList = () => ( +
+ {renderEmailListHeader()} + +
+ {loading ? ( +
+
+
+ ) : emails.length === 0 ? ( +
+ +

No emails in this folder

+
+ ) : ( +
+ {emails.map((email) => renderEmailListItem(email))} + {isLoadingMore && ( +
+
+
+ )} +
+ )} +
+ + {renderBulkActionsToolbar()} +
+ ); + // Update sidebar items when available folders change useEffect(() => { if (availableFolders.length > 0) { @@ -926,33 +965,146 @@ export default function MailPage() { ); // Render the email list using sorted emails - const renderEmailList = () => ( -
- {/* Email list header */} - {renderEmailListHeader()} + const renderEmailListWrapper = () => ( +
+ {/* Email list panel */} + {renderEmailList()} - {/* Email list with scroll handler */} -
- {loading ? ( -
-
-
- ) : emails.length === 0 ? ( -
- -

No emails in this folder

-
- ) : ( -
- {emails.map((email) => renderEmailListItem(email))} - {isLoadingMore && ( -
-
+ {/* Preview panel - will automatically take remaining space */} +
+ {selectedEmail ? ( + <> + {/* 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)} +
+
+ +
+ {(() => { + try { + const parsed = parseFullEmail(selectedEmail.body); + return ( +
+ {/* Display HTML content if available, otherwise fallback to text */} +
+ + {/* Display attachments if present */} + {parsed.attachments && parsed.attachments.length > 0 && ( +
+

Attachments

+
+ {parsed.attachments.map((attachment, index) => ( +
+ + + {attachment.filename} + +
+ ))} +
+
+ )} +
+ ); + } catch (e) { + console.error('Error parsing email:', e); + return selectedEmail.body; + } + })()} +
+ + + ) : ( +
+ +

Select an email to view its contents

)}
@@ -1220,47 +1372,47 @@ export default function MailPage() { return ( <> {/* Main layout */} -
- {/* Sidebar */} +
+ {/* Sidebar */}
- {/* Courrier Title */} -
-
- - COURRIER -
-
- - {/* Compose button and refresh button */} -
- - -
+
+ + {/* Compose button and refresh button */} +
+ + +
{/* Accounts Section */}
@@ -1289,7 +1441,7 @@ export default function MailPage() {
{account.email}
- +
))}
@@ -1298,153 +1450,14 @@ export default function MailPage() { {/* Navigation */} {renderSidebarNav()} -
+
{/* Main content area */} -
+
{/* Email list panel */} - {renderEmailList()} - - {/* Preview panel - will automatically take remaining space */} -
- {selectedEmail ? ( - <> - {/* 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)} -
-
- -
- {(() => { - try { - const parsed = parseFullEmail(selectedEmail.body); - return ( -
- {/* Display HTML content if available, otherwise fallback to text */} -
- - {/* Display attachments if present */} - {parsed.attachments && parsed.attachments.length > 0 && ( -
-

Attachments

-
- {parsed.attachments.map((attachment, index) => ( -
- - - {attachment.filename} - -
- ))} -
-
- )} -
- ); - } catch (e) { - console.error('Error parsing email:', e); - return selectedEmail.body; - } - })()} -
- - - ) : ( -
- -

Select an email to view its contents

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