feat(#71): add notification bell + preferences UI
- NotificationBell.svelte: bell icon in header with unread badge, dropdown showing last 10 notifications, mark-all-read, click-outside close, keyboard Escape support, polls every PUBLIC_NOTIFICATION_POLL_MS ms - Wire NotificationBell into +layout.svelte between ThemeToggle and UserMenu (authenticated users only) - Profile page: add notification preferences card with notifyOnReply / notifyOnMention toggles, loaded via GET and saved via PUT /api/users/me/notification-preferences - i18n: de/en/es message keys for bell, notifications list, and preference labels Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -294,5 +294,16 @@
|
||||
"enrich_done_body": "Alle Dokumente wurden bearbeitet.",
|
||||
"enrich_back_to_list": "Zurück zur Liste",
|
||||
"comment_empty_hint": "Noch keine Kommentare – starte die Diskussion!",
|
||||
"comment_start_discussion": "Diskussion starten →"
|
||||
"comment_start_discussion": "Diskussion starten →",
|
||||
"notification_bell_label": "Benachrichtigungen",
|
||||
"notification_bell_unread_label": "{count} ungelesene Benachrichtigungen",
|
||||
"notification_mark_all_read": "Alle gelesen",
|
||||
"notification_empty": "Keine neuen Benachrichtigungen",
|
||||
"notification_type_reply": "{actor} hat auf deinen Kommentar geantwortet",
|
||||
"notification_type_mention": "{actor} hat dich in einem Kommentar erwähnt",
|
||||
"notification_prefs_heading": "Benachrichtigungen",
|
||||
"notification_pref_reply": "E-Mail, wenn jemand auf meinen Kommentar antwortet",
|
||||
"notification_pref_mention": "E-Mail, wenn jemand mich in einem Kommentar erwähnt",
|
||||
"mention_btn_label": "Person erwähnen",
|
||||
"mention_popup_empty": "Keine Nutzer gefunden"
|
||||
}
|
||||
|
||||
@@ -294,5 +294,16 @@
|
||||
"enrich_done_body": "All documents have been processed.",
|
||||
"enrich_back_to_list": "Back to list",
|
||||
"comment_empty_hint": "No comments yet – start the discussion!",
|
||||
"comment_start_discussion": "Start discussion →"
|
||||
"comment_start_discussion": "Start discussion →",
|
||||
"notification_bell_label": "Notifications",
|
||||
"notification_bell_unread_label": "{count} unread notifications",
|
||||
"notification_mark_all_read": "Mark all read",
|
||||
"notification_empty": "No new notifications",
|
||||
"notification_type_reply": "{actor} replied to your comment",
|
||||
"notification_type_mention": "{actor} mentioned you in a comment",
|
||||
"notification_prefs_heading": "Notifications",
|
||||
"notification_pref_reply": "Email when someone replies to my comment",
|
||||
"notification_pref_mention": "Email when someone mentions me in a comment",
|
||||
"mention_btn_label": "Mention person",
|
||||
"mention_popup_empty": "No users found"
|
||||
}
|
||||
|
||||
@@ -294,5 +294,16 @@
|
||||
"enrich_done_body": "Todos los documentos han sido procesados.",
|
||||
"enrich_back_to_list": "Volver a la lista",
|
||||
"comment_empty_hint": "Aún no hay comentarios – ¡inicia la discusión!",
|
||||
"comment_start_discussion": "Iniciar discusión →"
|
||||
"comment_start_discussion": "Iniciar discusión →",
|
||||
"notification_bell_label": "Notificaciones",
|
||||
"notification_bell_unread_label": "{count} notificaciones sin leer",
|
||||
"notification_mark_all_read": "Marcar todo como leído",
|
||||
"notification_empty": "No hay notificaciones nuevas",
|
||||
"notification_type_reply": "{actor} respondió a tu comentario",
|
||||
"notification_type_mention": "{actor} te mencionó en un comentario",
|
||||
"notification_prefs_heading": "Notificaciones",
|
||||
"notification_pref_reply": "Correo cuando alguien responde a mi comentario",
|
||||
"notification_pref_mention": "Correo cuando alguien me menciona en un comentario",
|
||||
"mention_btn_label": "Mencionar persona",
|
||||
"mention_popup_empty": "No se encontraron usuarios"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user