From fad92a0b2430ee13beb79a60f7954a387a1cd36a Mon Sep 17 00:00:00 2001 From: Daniel Volz Date: Sun, 28 Dec 2025 13:14:47 +0100 Subject: [PATCH] feat(ui): enhance email status bar layout with improved styling and responsiveness --- frontend/src/App.tsx | 33 ++++++++++++++++++++++----------- frontend/src/styles.css | 20 +++++++++++++++++++- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 6a00b81..e5515e9 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1025,7 +1025,8 @@ function AppContent() {
{settings.emailEnabled && settings.shoutrrrEnabled ? "๐Ÿ””" : settings.emailEnabled ? "๐Ÿ“ง" : "๐Ÿ””"} - {t('dashboard.reminders.active')} โ€” {getReminderStatusText(settings.reminderDaysBefore, settings.lowStockDays, coverage.low, coverage.all, settings.lastAutoEmailSent, settings.lastNotificationType, settings.lastNotificationChannel, t, i18n.language)} + {t('dashboard.reminders.active')} + {getReminderStatusText(settings.reminderDaysBefore, settings.lowStockDays, coverage.low, coverage.all, settings.lastAutoEmailSent, settings.lastNotificationType, settings.lastNotificationChannel, t, i18n.language)} {settings.emailEnabled && settings.notificationEmail && โ†’ {settings.notificationEmail}}
@@ -2838,12 +2839,17 @@ function getReminderStatusText( if (lastSent) { return ( <> - โš  {t('dashboard.reminders.needReorder', { count: medsNeedingReminder.length })} - {" ยท "}{t('dashboard.reminders.lastReminder')}: {formatLastInfo(lastSent)} + โš  {t('dashboard.reminders.needReorder', { count: medsNeedingReminder.length })} + {t('dashboard.reminders.lastReminder')}: {formatLastInfo(lastSent)} ); } - return โš  {t('dashboard.reminders.needReorder', { count: medsNeedingReminder.length })} โ€” {t('dashboard.reminders.waitingFirstCheck')}; + return ( + <> + โš  {t('dashboard.reminders.needReorder', { count: medsNeedingReminder.length })} + {t('dashboard.reminders.waitingFirstCheck')} + + ); } // Check if there are low stock medications (not yet needing reminder but running low) @@ -2857,8 +2863,8 @@ function getReminderStatusText( const daysUntilReminder = (nextMed.daysLeft ?? 0) - reminderDaysBefore; return ( <> - {t('dashboard.reminders.lowWarning', { count: lowStockNotYetCritical.length })} - {" ยท "}{t('dashboard.reminders.nextIn')}: {nextMed.name} {t('dashboard.reminders.inDays', { days: daysUntilReminder })} + {t('dashboard.reminders.lowWarning', { count: lowStockNotYetCritical.length })} + {t('dashboard.reminders.nextIn')}: {nextMed.name} {t('dashboard.reminders.inDays', { days: daysUntilReminder })} ); } @@ -2874,8 +2880,8 @@ function getReminderStatusText( if (daysUntilReminder > 0) { return ( <> - โœ“ {t('dashboard.reminders.allOk')} - {" ยท "}{t('dashboard.reminders.nextIn')}: {nextMed.name} {t('dashboard.reminders.inDays', { days: daysUntilReminder })} + โœ“ {t('dashboard.reminders.allOk')} + {t('dashboard.reminders.nextIn')}: {nextMed.name} {t('dashboard.reminders.inDays', { days: daysUntilReminder })} ); } @@ -2885,12 +2891,17 @@ function getReminderStatusText( if (lastSent) { return ( <> - โœ“ {t('dashboard.reminders.allStockOk')} - {" ยท "}{t('dashboard.reminders.lastReminder')}: {formatLastInfo(lastSent)} + โœ“ {t('dashboard.reminders.allStockOk')} + {t('dashboard.reminders.lastReminder')}: {formatLastInfo(lastSent)} ); } - return โœ“ {t('dashboard.reminders.allStockOk')} โ€” {t('dashboard.reminders.noRemindersNeeded')}; + return ( + <> + โœ“ {t('dashboard.reminders.allStockOk')} + {t('dashboard.reminders.noRemindersNeeded')} + + ); } function getNextReminderForMed(med: Coverage, reminderDaysBefore: number, locale: string): string { diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 2664683..e77fe1a 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -158,6 +158,14 @@ body.modal-open { .email-status-text { color: var(--text-secondary); flex: 1; + display: flex; + flex-wrap: wrap; + gap: 0.25rem 0.5rem; +} + +.email-status-line { + white-space: normal; + word-break: break-word; } .email-status-text strong { @@ -174,7 +182,17 @@ body.modal-open { @media (max-width: 600px) { .email-status-bar { - flex-wrap: wrap; + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + .email-status-text { + flex-direction: column; + gap: 0.35rem; + width: 100%; + } + .email-status-line { + display: block; } .email-status-recipient { width: 100%;