From 679c6abc6dd4e97b4577026a2f34748e1d7eccf1 Mon Sep 17 00:00:00 2001 From: Agent Zero Date: Thu, 30 Jul 2026 15:05:37 +0200 Subject: [PATCH] feat: mail grouping with group headers in MailList, connected to GroupPanel --- frontend/src/components/mail/MailList.tsx | 40 +++++++++++++++++++++-- frontend/src/pages/Mail.tsx | 10 +++++- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/mail/MailList.tsx b/frontend/src/components/mail/MailList.tsx index 32ae8ae..fc14248 100644 --- a/frontend/src/components/mail/MailList.tsx +++ b/frontend/src/components/mail/MailList.tsx @@ -9,11 +9,13 @@ import { useTranslation } from 'react-i18next'; import type { Mail } from '@/api/mail'; import { decodeMimeHeader } from '@/api/mail'; import { EmptyState } from '@/components/ui/EmptyState'; -import { Loader2, Paperclip, Star } from 'lucide-react'; +import { Loader2, Paperclip, Star, ChevronDown } from 'lucide-react'; import { formatSmartDate } from '@/utils/date'; +import type { GroupedMails } from '@/components/mail/MailGroupPanel'; export interface MailListProps { mails: Mail[]; + groupedMails?: GroupedMails[] | null; selectedMailId: string | null; onSelectMail: (mail: Mail) => void; loading: boolean; @@ -30,6 +32,7 @@ function formatDate(dateStr: string): string { export function MailList({ mails, + groupedMails, selectedMailId, onSelectMail, loading, @@ -161,7 +164,7 @@ export function MailList({ {loading && mails.length > 0 && } - {/* Mail list — infinite scroll, no pagination */} + {/* Mail list — infinite scroll with optional grouping */}