diff --git a/frontend/src/components/layout/PluginToolbar.tsx b/frontend/src/components/layout/PluginToolbar.tsx index c5fe4e6..a8d5318 100644 --- a/frontend/src/components/layout/PluginToolbar.tsx +++ b/frontend/src/components/layout/PluginToolbar.tsx @@ -26,9 +26,9 @@ function ToolbarSearch({ item }: { item: ToolbarItem }) { type="text" placeholder={item.searchPlaceholder || 'Suchen...'} onChange={(e) => item.onSearch?.(e.target.value)} - className="w-40 px-2 py-1 text-xs border border-secondary-200 rounded + className="w-28 sm:w-40 px-2 py-1 text-xs border border-secondary-200 rounded focus:outline-none focus:border-primary-400 focus:ring-1 focus:ring-primary-300 - placeholder:text-secondary-400" + placeholder:text-secondary-400 flex-shrink-0" /> ); } @@ -38,9 +38,9 @@ function ToolbarSelect({ item }: { item: ToolbarItem }) { {/* Actions */} -
+
diff --git a/frontend/src/components/mail/MailDetail.tsx b/frontend/src/components/mail/MailDetail.tsx index 97f84e6..e937253 100644 --- a/frontend/src/components/mail/MailDetail.tsx +++ b/frontend/src/components/mail/MailDetail.tsx @@ -91,7 +91,7 @@ export function MailDetail({ return (
{/* Toolbar */} -
+
{/* Headers */} -
-
-

{mail.subject || t('mail.noSubject')}

+
+
+

{mail.subject || t('mail.noSubject')}

{mail.labels && mail.labels.length > 0 && (
{mail.labels.map((label) => ( @@ -148,30 +148,30 @@ export function MailDetail({
)}
-
-
- {t('mail.from')}: - {mail.from_name ? `${mail.from_name} <${mail.from_address}>` : mail.from_address} +
+
+ {t('mail.from')}: + {mail.from_name ? `${mail.from_name} <${mail.from_address}>` : mail.from_address}
-
- {t('mail.to')}: - {mail.to_addresses.join(', ')} +
+ {t('mail.to')}: + {mail.to_addresses.join(', ')}
{mail.cc_addresses.length > 0 && ( -
- {t('mail.cc')}: - {mail.cc_addresses.join(', ')} +
+ {t('mail.cc')}: + {mail.cc_addresses.join(', ')}
)} -
- {t('mail.date')}: +
+ {t('mail.date')}: {formatFullDate(mail.date)}
{/* Body */} -
+
{safeHtml && isSafe ? (
0 && ( -
+

{t('mail.attachments')}

-
    +
      {mail.attachments.map((att) => (
    • -

      +

      {mail.subject || t('mail.noSubject')}

      {mail.labels && mail.labels.length > 0 && ( diff --git a/frontend/src/components/ui/Modal.tsx b/frontend/src/components/ui/Modal.tsx index 98d0629..2d6ba2d 100644 --- a/frontend/src/components/ui/Modal.tsx +++ b/frontend/src/components/ui/Modal.tsx @@ -10,6 +10,7 @@ export interface ModalProps { closeOnBackdrop?: boolean; closeOnEscape?: boolean; showCloseButton?: boolean; + fullScreenMobile?: boolean; } const sizeClasses = { @@ -28,6 +29,7 @@ export function Modal({ closeOnBackdrop = true, closeOnEscape = true, showCloseButton = true, + fullScreenMobile = false, }: ModalProps) { const dialogRef = useRef(null); const previouslyFocused = useRef(null); @@ -60,7 +62,10 @@ export function Modal({ return (
      {title && ( -
      -
      )} - {/* Three-pane layout with resizable panels */} -
      + {/* Desktop: three-pane layout with resizable panels */} +
      {/* Folder tree — resizable */}
      + {/* Mobile: single-pane view switching */} +
      + {/* View 1: Folder tree */} + {activeView === 'folders' && ( +
      +
      + +
      +
      + )} + + {/* View 2: Mail list */} + {activeView === 'list' && ( +
      +
      + +
      + +
      + )} + + {/* View 3: Mail detail */} + {activeView === 'detail' && ( +
      +
      + +
      + +
      + )} +
      +