feat: update email list messages for improved clarity and localization support

This commit is contained in:
Linus Rath
2026-03-14 16:59:36 +01:00
parent f1f31df0af
commit f995558bf5
9 changed files with 47 additions and 20 deletions
+15 -4
View File
@@ -4,7 +4,7 @@ import { Email, ThreadGroup } from "@/lib/jmap/types";
import { ThreadListItem } from "./thread-list-item"; import { ThreadListItem } from "./thread-list-item";
import { EmailContextMenu } from "./email-context-menu"; import { EmailContextMenu } from "./email-context-menu";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
import { Inbox, Trash2, Mail, MailOpen, Loader2 } from "lucide-react"; import { Trash2, Mail, MailX, MailOpen, Loader2, SearchX } from "lucide-react";
import { useState, useEffect, useRef, useCallback, useMemo } from "react"; import { useState, useEffect, useRef, useCallback, useMemo } from "react";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { ConfirmDialog } from "@/components/ui/confirm-dialog"; import { ConfirmDialog } from "@/components/ui/confirm-dialog";
@@ -83,6 +83,7 @@ export function EmailList({
setSearchFilters, setSearchFilters,
clearSearchFilters, clearSearchFilters,
advancedSearch, advancedSearch,
searchQuery,
} = useEmailStore(); } = useEmailStore();
const threadGroups = useMemo(() => { const threadGroups = useMemo(() => {
@@ -325,9 +326,19 @@ export function EmailList({
<LoadingSkeleton /> <LoadingSkeleton />
) : emails.length === 0 && !isLoading ? ( ) : emails.length === 0 && !isLoading ? (
<div className="flex flex-col items-center justify-center h-full py-12"> <div className="flex flex-col items-center justify-center h-full py-12">
<Inbox className="w-16 h-16 mb-4 text-muted-foreground/50" /> <div className="w-20 h-20 mx-auto mb-6 rounded-full bg-muted shadow-lg flex items-center justify-center">
<p className="text-base font-medium text-foreground">{t('no_emails')}</p> {searchQuery || !isFilterEmpty(searchFilters) ? (
<p className="text-sm mt-1 text-muted-foreground">{t('no_emails_description')}</p> <SearchX className="w-10 h-10 text-muted-foreground" />
) : (
<MailX className="w-10 h-10 text-muted-foreground" />
)}
</div>
<p className="text-base font-medium text-foreground">
{searchQuery || !isFilterEmpty(searchFilters) ? t('no_search_results') : t('no_emails')}
</p>
<p className="text-sm mt-1 text-muted-foreground">
{searchQuery || !isFilterEmpty(searchFilters) ? t('no_search_results_description') : t('no_emails_description')}
</p>
</div> </div>
) : ( ) : (
<> <>
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "Navigation" "nav_label": "Navigation"
}, },
"email_list": { "email_list": {
"no_emails": "Keine E-Mails", "no_emails": "Keine Nachrichten gefunden",
"no_emails_description": "Beginnen Sie, indem Sie eine neue E-Mail verfassen", "no_emails_description": "Dieses Postfach ist leer",
"no_search_results": "Keine Ergebnisse gefunden",
"no_search_results_description": "Passen Sie Ihre Suche oder Filter an",
"loading": "E-Mails werden geladen...", "loading": "E-Mails werden geladen...",
"unread": "ungelesen", "unread": "ungelesen",
"to_me": "An mich", "to_me": "An mich",
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "Navigation" "nav_label": "Navigation"
}, },
"email_list": { "email_list": {
"no_emails": "No emails", "no_emails": "No messages found",
"no_emails_description": "Start by composing a new email", "no_emails_description": "This mailbox is empty",
"no_search_results": "No results found",
"no_search_results_description": "Try adjusting your search or filters",
"loading": "Loading emails...", "loading": "Loading emails...",
"unread": "unread", "unread": "unread",
"to_me": "To me", "to_me": "To me",
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "Navegación" "nav_label": "Navegación"
}, },
"email_list": { "email_list": {
"no_emails": "Sin correos", "no_emails": "No se encontraron mensajes",
"no_emails_description": "Comience redactando un nuevo correo", "no_emails_description": "Este buzón está vacío",
"no_search_results": "No se encontraron resultados",
"no_search_results_description": "Intente ajustar su búsqueda o filtros",
"loading": "Cargando correos...", "loading": "Cargando correos...",
"unread": "no leído", "unread": "no leído",
"to_me": "Para mí", "to_me": "Para mí",
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "Navigation" "nav_label": "Navigation"
}, },
"email_list": { "email_list": {
"no_emails": "Aucun email", "no_emails": "Aucun message trouvé",
"no_emails_description": "Commencez par composer un nouvel email", "no_emails_description": "Cette boîte est vide",
"no_search_results": "Aucun résultat trouvé",
"no_search_results_description": "Essayez de modifier votre recherche ou vos filtres",
"loading": "Chargement des emails...", "loading": "Chargement des emails...",
"unread": "non lu", "unread": "non lu",
"to_me": "À moi", "to_me": "À moi",
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "Navigazione" "nav_label": "Navigazione"
}, },
"email_list": { "email_list": {
"no_emails": "Nessun messaggio", "no_emails": "Nessun messaggio trovato",
"no_emails_description": "Inizia scrivendo un nuovo messaggio", "no_emails_description": "Questa casella è vuota",
"no_search_results": "Nessun risultato trovato",
"no_search_results_description": "Prova a modificare la ricerca o i filtri",
"loading": "Caricamento messaggi...", "loading": "Caricamento messaggi...",
"unread": "non letto", "unread": "non letto",
"to_me": "A me", "to_me": "A me",
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "ナビゲーション" "nav_label": "ナビゲーション"
}, },
"email_list": { "email_list": {
"no_emails": "メールがありません", "no_emails": "メッセージが見つかりません",
"no_emails_description": "新しいメールを作成してください", "no_emails_description": "このメールボックスは空です",
"no_search_results": "結果が見つかりません",
"no_search_results_description": "検索やフィルターを調整してください",
"loading": "メールを読み込み中...", "loading": "メールを読み込み中...",
"unread": "未読", "unread": "未読",
"to_me": "宛先: 自分", "to_me": "宛先: 自分",
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "Navigatie" "nav_label": "Navigatie"
}, },
"email_list": { "email_list": {
"no_emails": "Geen e-mails", "no_emails": "Geen berichten gevonden",
"no_emails_description": "Begin met het opstellen van een nieuw bericht", "no_emails_description": "Deze mailbox is leeg",
"no_search_results": "Geen resultaten gevonden",
"no_search_results_description": "Pas je zoekopdracht of filters aan",
"loading": "E-mails laden...", "loading": "E-mails laden...",
"unread": "ongelezen", "unread": "ongelezen",
"to_me": "Aan mij", "to_me": "Aan mij",
+4 -2
View File
@@ -99,8 +99,10 @@
"nav_label": "Navegação" "nav_label": "Navegação"
}, },
"email_list": { "email_list": {
"no_emails": "Nenhum e-mail", "no_emails": "Nenhuma mensagem encontrada",
"no_emails_description": "Comece escrevendo um novo e-mail", "no_emails_description": "Esta caixa de correio está vazia",
"no_search_results": "Nenhum resultado encontrado",
"no_search_results_description": "Tente ajustar sua pesquisa ou filtros",
"loading": "Carregando e-mails...", "loading": "Carregando e-mails...",
"unread": "não lido", "unread": "não lido",
"to_me": "Para mim", "to_me": "Para mim",