diff --git a/crates/rustmail_panel/src/components/ticket.rs b/crates/rustmail_panel/src/components/ticket.rs
index 810d7c4..c4ef243 100644
--- a/crates/rustmail_panel/src/components/ticket.rs
+++ b/crates/rustmail_panel/src/components/ticket.rs
@@ -635,6 +635,29 @@ pub fn ticket_details(props: &TicketDetailsProps) -> Html {
}
}
+
+
"[User]",
+ MessageType::Staff => "[Staff]",
+ MessageType::System => "[System]",
+ MessageType::Internal => "[Internal]",
+ };
+ content.push_str(&format!("{} {} ({}):\n{}\n\n", prefix, msg.user_name, msg.created_at, msg.content));
+ }
+ let encoded_content = urlencoding::encode(&content);
+ format!("data:text/plain;charset=utf-8,{}", encoded_content)
+ }
+ download={format!("ticket-{}.txt", ticket.id)}
+ class="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white text-sm rounded-lg inline-flex items-center justify-center gap-2 transition"
+ >
+
+ {i18n.t("panel.tickets.download")}
+
+
diff --git a/crates/rustmail_panel/src/i18n/en/en.json b/crates/rustmail_panel/src/i18n/en/en.json
index 303f2db..e6975c5 100644
--- a/crates/rustmail_panel/src/i18n/en/en.json
+++ b/crates/rustmail_panel/src/i18n/en/en.json
@@ -196,6 +196,7 @@
"unknown_date": "Unknown date",
"loading_ticket": "Loading ticket...",
"ticket_not_found": "Ticket not found.",
+ "download": "Download ticket",
"filters": "Message filters",
"filter_user": "Users",
"filter_staff": "Staff",
diff --git a/crates/rustmail_panel/src/i18n/fr/fr.json b/crates/rustmail_panel/src/i18n/fr/fr.json
index ed9b6ee..5a1b2bd 100644
--- a/crates/rustmail_panel/src/i18n/fr/fr.json
+++ b/crates/rustmail_panel/src/i18n/fr/fr.json
@@ -197,6 +197,7 @@
"unknown_date": "Date inconnue",
"loading_ticket": "Chargement du ticket...",
"ticket_not_found": "Ticket introuvable.",
+ "download": "Télécharger le ticket",
"filters": "Filtres des messages",
"filter_user": "Utilisateurs",
"filter_staff": "Staff",