- {!isCreating && !editingId && (
-
-
-
-
setSearchQuery(e.target.value)}
- placeholder={t('search_placeholder')}
- className="ps-9"
+ {isCreating && (
+
+
{tSettings('add')}
+ void requestCloseForm()}
+ onDirtyChange={setFormDirty}
+ />
+
+ )}
+
+ {editingId && (
+
+
{tSettings('edit')}
+ tpl.id === editingId)}
+ onSave={handleSave}
+ onCancel={() => void requestCloseForm()}
+ onDirtyChange={setFormDirty}
+ />
+
+ )}
+
+
+ {filtered.map((template) => (
+
+
toggleFavorite(template.id)}
+ className="flex-shrink-0 -ms-1.5"
+ >
+
+
+
+
+
+
+ {template.name}
+
+ {template.category && (
+
+ {template.category}
+
+ )}
+
+ {template.subject && (
+
+ {template.subject}
+
+ )}
-
setIsCreating(true)}
- size="sm"
- >
- {tSettings('add')}
-
-
- )}
- {isCreating && (
-
-
{tSettings('add')}
- setIsCreating(false)}
- />
-
- )}
-
- {editingId && (
-
-
{tSettings('edit')}
- t.id === editingId)}
- onSave={handleSave}
- onCancel={() => setEditingId(null)}
- />
-
- )}
-
-
- {filtered.map((template) => (
-
-
toggleFavorite(template.id)}
- className="flex-shrink-0"
+
+
{ setEditingId(template.id); setIsCreating(false); }}
+ disabled={formOpen}
>
-
-
-
-
-
-
- {template.name}
-
- {template.category && (
-
- {template.category}
-
- )}
-
- {template.subject && (
-
- {template.subject}
-
- )}
-
-
-
-
{ setEditingId(template.id); setIsCreating(false); }}
- disabled={!!editingId || isCreating}
- className="h-8 w-8 p-0"
- >
-
-
-
duplicateTemplate(template.id, t('copy_suffix'))}
- disabled={!!editingId || isCreating}
- className="h-8 w-8 p-0"
- >
-
-
- {deleteConfirmId === template.id ? (
-
- handleDelete(template.id)}
- className="h-7 text-xs"
- >
- {tSettings('confirm_delete')}
-
- setDeleteConfirmId(null)}
- className="h-7 text-xs"
- >
- {tSettings('cancel')}
-
-
- ) : (
-
setDeleteConfirmId(template.id)}
- disabled={!!editingId || isCreating}
- className="h-8 w-8 p-0 hover:text-red-600 dark:hover:text-red-400"
- >
-
-
- )}
-
+
+
+
duplicateTemplate(template.id, t('copy_suffix'))}
+ disabled={formOpen}
+ >
+
+
+
void handleDelete(template)}
+ disabled={formOpen}
+ >
+
+
- ))}
+
+ ))}
- {filtered.length === 0 && !isCreating && (
-
-
-
- {searchQuery ? t('no_results') : tSettings('no_templates')}
-
-
- )}
-
+ {filtered.length === 0 && !isCreating && (
+
setIsCreating(true)}>{tSettings('add')}
+ )}
+ />
+ )}
-
-
+
+ {discardDialog}
+
+ >
);
}
diff --git a/locales/ar/common.json b/locales/ar/common.json
index 82e0b6734..db901c39e 100644
--- a/locales/ar/common.json
+++ b/locales/ar/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "الإدراج بالقيم",
"insert_raw": "الإدراج كما هو",
"copy_suffix": "(نسخة)",
+ "duplicate": "تكرار",
+ "delete_title": "حذف القالب؟",
+ "delete_message": "سيُحذف القالب \"{name}\" نهائيًا.",
"placeholder": "متغيّر",
"placeholders": {
"recipient_name": "اسم المستلم",
diff --git a/locales/ca/common.json b/locales/ca/common.json
index 9f91d22cb..2791e05b2 100644
--- a/locales/ca/common.json
+++ b/locales/ca/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Insereix amb els valors",
"insert_raw": "Insereix sense processar",
"copy_suffix": "(còpia)",
+ "duplicate": "Duplica",
+ "delete_title": "Voleu suprimir la plantilla?",
+ "delete_message": "La plantilla \"{name}\" se suprimirà definitivament.",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Nom del destinatari",
diff --git a/locales/cs/common.json b/locales/cs/common.json
index e6ffacf4a..5ecb27c6a 100644
--- a/locales/cs/common.json
+++ b/locales/cs/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Vložit s hodnotami",
"insert_raw": "Vložit beze změn",
"copy_suffix": "(kopie)",
+ "duplicate": "Duplikovat",
+ "delete_title": "Smazat šablonu?",
+ "delete_message": "Šablona „{name}“ bude trvale smazána.",
"placeholder": "Proměnná",
"placeholders": {
"recipient_name": "Jméno příjemce",
diff --git a/locales/da/common.json b/locales/da/common.json
index 2040c9c19..d4a634199 100644
--- a/locales/da/common.json
+++ b/locales/da/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Indsæt med værdier",
"insert_raw": "Indsæt rå",
"copy_suffix": "(kopi)",
+ "duplicate": "Duplikér",
+ "delete_title": "Slet skabelon?",
+ "delete_message": "Skabelonen \"{name}\" slettes permanent.",
"placeholder": "Variabel",
"placeholders": {
"recipient_name": "Modtagers navn",
diff --git a/locales/de/common.json b/locales/de/common.json
index a0ef503b5..73ec5f8b0 100644
--- a/locales/de/common.json
+++ b/locales/de/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Mit Werten einfügen",
"insert_raw": "Unverändert einfügen",
"copy_suffix": "(Kopie)",
+ "duplicate": "Duplizieren",
+ "delete_title": "Vorlage löschen?",
+ "delete_message": "Die Vorlage „{name}“ wird endgültig gelöscht.",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Name des Empfängers",
diff --git a/locales/en/common.json b/locales/en/common.json
index 242e0103b..c17c1ba2f 100644
--- a/locales/en/common.json
+++ b/locales/en/common.json
@@ -3153,7 +3153,7 @@
"delete_confirm_title": "Delete identity?"
},
"templates": {
- "picker_title": "Choose a Template",
+ "picker_title": "Choose a template",
"manage": "Manage templates",
"search_placeholder": "Search templates...",
"section_favorites": "Favorites",
@@ -3161,12 +3161,15 @@
"section_uncategorized": "Other",
"no_templates": "No templates yet",
"no_results": "No templates found",
- "fill_placeholders": "Fill Placeholder Values",
+ "fill_placeholders": "Fill placeholder values",
"enter_value": "Enter a value...",
"preview": "Preview",
- "insert_with_values": "Insert with Values",
- "insert_raw": "Insert Raw",
+ "insert_with_values": "Insert with values",
+ "insert_raw": "Insert raw",
"copy_suffix": "(copy)",
+ "duplicate": "Duplicate",
+ "delete_title": "Delete template?",
+ "delete_message": "The template \"{name}\" is deleted for good.",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Recipient name",
diff --git a/locales/es/common.json b/locales/es/common.json
index ee41cecee..5777999bf 100644
--- a/locales/es/common.json
+++ b/locales/es/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Insertar con valores",
"insert_raw": "Insertar sin completar",
"copy_suffix": "(copia)",
+ "duplicate": "Duplicar",
+ "delete_title": "¿Eliminar la plantilla?",
+ "delete_message": "La plantilla \"{name}\" se eliminará de forma definitiva.",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Nombre del destinatario",
diff --git a/locales/et/common.json b/locales/et/common.json
index 1af2dd1ba..2fe6ba3ae 100644
--- a/locales/et/common.json
+++ b/locales/et/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Lisa väärtustega",
"insert_raw": "Lisa täitmata kujul",
"copy_suffix": "(koopia)",
+ "duplicate": "Dubleeri",
+ "delete_title": "Kas kustutada mall?",
+ "delete_message": "Mall „{name}“ kustutatakse jäädavalt.",
"placeholder": "Muutuja",
"placeholders": {
"recipient_name": "Saaja nimi",
diff --git a/locales/fa/common.json b/locales/fa/common.json
index 58ffba6c9..9ab5ab0ef 100644
--- a/locales/fa/common.json
+++ b/locales/fa/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "درج با مقادیر",
"insert_raw": "درج خام",
"copy_suffix": "(کپی)",
+ "duplicate": "تکثیر",
+ "delete_title": "الگو حذف شود؟",
+ "delete_message": "الگوی «{name}» برای همیشه حذف میشود.",
"placeholder": "متغیر",
"placeholders": {
"recipient_name": "نام گیرنده",
diff --git a/locales/fr/common.json b/locales/fr/common.json
index 8e6161cab..ac045dbe9 100644
--- a/locales/fr/common.json
+++ b/locales/fr/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Insérer avec les valeurs",
"insert_raw": "Insérer brut",
"copy_suffix": "(copie)",
+ "duplicate": "Dupliquer",
+ "delete_title": "Supprimer le modèle ?",
+ "delete_message": "Le modèle « {name} » sera supprimé définitivement.",
"placeholder": "Variable",
"placeholders": {
"recipient_name": "Nom du destinataire",
diff --git a/locales/he/common.json b/locales/he/common.json
index c4a353163..67b1857ba 100644
--- a/locales/he/common.json
+++ b/locales/he/common.json
@@ -3085,6 +3085,9 @@
"insert_with_values": "הוסף עם ערכים",
"insert_raw": "הכנס Raw",
"copy_suffix": "(העתק)",
+ "duplicate": "שכפול",
+ "delete_title": "למחוק את התבנית?",
+ "delete_message": "התבנית \"{name}\" תימחק לצמיתות.",
"placeholder": "משתנה",
"placeholders": {
"recipient_name": "שם הנמען",
diff --git a/locales/hu/common.json b/locales/hu/common.json
index 935a2735a..72724c662 100644
--- a/locales/hu/common.json
+++ b/locales/hu/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Beszúrás értékekkel",
"insert_raw": "Nyers beszúrás",
"copy_suffix": "(másolat)",
+ "duplicate": "Duplikálás",
+ "delete_title": "Törli a sablont?",
+ "delete_message": "A(z) „{name}” sablon véglegesen törlődik.",
"placeholder": "Változó",
"placeholders": {
"recipient_name": "Címzett neve",
diff --git a/locales/it/common.json b/locales/it/common.json
index 43a2d65e1..2534677aa 100644
--- a/locales/it/common.json
+++ b/locales/it/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Inserisci con valori",
"insert_raw": "Inserisci grezzo",
"copy_suffix": "(copia)",
+ "duplicate": "Duplica",
+ "delete_title": "Eliminare il modello?",
+ "delete_message": "Il modello \"{name}\" verrà eliminato definitivamente.",
"placeholder": "Variabile",
"placeholders": {
"recipient_name": "Nome del destinatario",
diff --git a/locales/ja/common.json b/locales/ja/common.json
index d9f082790..40db46fbb 100644
--- a/locales/ja/common.json
+++ b/locales/ja/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "値を挿入",
"insert_raw": "そのまま挿入",
"copy_suffix": "(コピー)",
+ "duplicate": "複製",
+ "delete_title": "テンプレートを削除しますか?",
+ "delete_message": "テンプレート「{name}」は完全に削除されます。",
"placeholder": "変数",
"placeholders": {
"recipient_name": "宛先の名前",
diff --git a/locales/ko/common.json b/locales/ko/common.json
index 6967a1106..22550b105 100644
--- a/locales/ko/common.json
+++ b/locales/ko/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "값과 함께 삽입",
"insert_raw": "원본 삽입",
"copy_suffix": "(복사본)",
+ "duplicate": "복제",
+ "delete_title": "템플릿을 삭제할까요?",
+ "delete_message": "템플릿 \"{name}\"이(가) 영구적으로 삭제됩니다.",
"placeholder": "변수",
"placeholders": {
"recipient_name": "받는 사람 이름",
diff --git a/locales/lv/common.json b/locales/lv/common.json
index ef7085ff6..e094316bd 100644
--- a/locales/lv/common.json
+++ b/locales/lv/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Ievietot ar vērtībām",
"insert_raw": "Ievietot bez izmaiņām",
"copy_suffix": "(kopija)",
+ "duplicate": "Dublēt",
+ "delete_title": "Vai dzēst veidni?",
+ "delete_message": "Veidne “{name}” tiks neatgriezeniski dzēsta.",
"placeholder": "Mainīgais",
"placeholders": {
"recipient_name": "Saņēmēja vārds",
diff --git a/locales/mn/common.json b/locales/mn/common.json
index 1e2dda79c..2fbf26e88 100644
--- a/locales/mn/common.json
+++ b/locales/mn/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Утгатай оруулах",
"insert_raw": "Түүхий оруулах",
"copy_suffix": "(хуулбар)",
+ "duplicate": "Хуулбарлах",
+ "delete_title": "Загварыг устгах уу?",
+ "delete_message": "\"{name}\" загвар бүрмөсөн устгагдана.",
"placeholder": "Хувьсагч",
"placeholders": {
"recipient_name": "Хүлээн авагчийн нэр",
diff --git a/locales/nb/common.json b/locales/nb/common.json
index a837be64d..bc5cf1158 100644
--- a/locales/nb/common.json
+++ b/locales/nb/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Sett inn ferdig utfylt",
"insert_raw": "Sett inn uten å fylle ut",
"copy_suffix": "(kopi)",
+ "duplicate": "Dupliser",
+ "delete_title": "Slette malen?",
+ "delete_message": "Malen «{name}» slettes for godt.",
"placeholder": "Variabel",
"placeholders": {
"recipient_name": "Mottakerens navn",
diff --git a/locales/nl/common.json b/locales/nl/common.json
index 2ca8fca33..3c5c005c4 100644
--- a/locales/nl/common.json
+++ b/locales/nl/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Invoegen met waarden",
"insert_raw": "Onbewerkt invoegen",
"copy_suffix": "(kopie)",
+ "duplicate": "Dupliceren",
+ "delete_title": "Sjabloon verwijderen?",
+ "delete_message": "Het sjabloon \"{name}\" wordt definitief verwijderd.",
"placeholder": "Variabele",
"placeholders": {
"recipient_name": "Naam ontvanger",
diff --git a/locales/pl/common.json b/locales/pl/common.json
index 7c36a4512..902a0011a 100644
--- a/locales/pl/common.json
+++ b/locales/pl/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Wstaw z wartościami",
"insert_raw": "Wstaw bez zmian",
"copy_suffix": "(kopia)",
+ "duplicate": "Duplikuj",
+ "delete_title": "Usunąć szablon?",
+ "delete_message": "Szablon „{name}” zostanie trwale usunięty.",
"placeholder": "Zmienna",
"placeholders": {
"recipient_name": "Nazwa odbiorcy",
diff --git a/locales/pt/common.json b/locales/pt/common.json
index 0a62923ec..1a2dc7b77 100644
--- a/locales/pt/common.json
+++ b/locales/pt/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Inserir com valores",
"insert_raw": "Inserir bruto",
"copy_suffix": "(cópia)",
+ "duplicate": "Duplicar",
+ "delete_title": "Eliminar o modelo?",
+ "delete_message": "O modelo \"{name}\" será eliminado definitivamente.",
"placeholder": "Variável",
"placeholders": {
"recipient_name": "Nome do destinatário",
diff --git a/locales/ro/common.json b/locales/ro/common.json
index 9805a1708..6c8552c30 100644
--- a/locales/ro/common.json
+++ b/locales/ro/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Inserați cu valori",
"insert_raw": "Inserați Raw",
"copy_suffix": "(copiere)",
+ "duplicate": "Duplicare",
+ "delete_title": "Ștergeți șablonul?",
+ "delete_message": "Șablonul „{name}” va fi șters definitiv.",
"placeholder": "Variabilă",
"placeholders": {
"recipient_name": "Numele destinatarului",
diff --git a/locales/ru/common.json b/locales/ru/common.json
index 489bb9abc..b49d278b8 100644
--- a/locales/ru/common.json
+++ b/locales/ru/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Вставить со значениями",
"insert_raw": "Вставить без изменений",
"copy_suffix": "(копия)",
+ "duplicate": "Дублировать",
+ "delete_title": "Удалить шаблон?",
+ "delete_message": "Шаблон «{name}» будет удалён без возможности восстановления.",
"placeholder": "Переменная",
"placeholders": {
"recipient_name": "Имя получателя",
diff --git a/locales/sk/common.json b/locales/sk/common.json
index 5f25c3f8f..7f49c3ba9 100644
--- a/locales/sk/common.json
+++ b/locales/sk/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Vložiť s hodnotami",
"insert_raw": "Vložiť bez zmien",
"copy_suffix": "(kópia)",
+ "duplicate": "Duplikovať",
+ "delete_title": "Odstrániť šablónu?",
+ "delete_message": "Šablóna „{name}“ bude natrvalo odstránená.",
"placeholder": "Premenná",
"placeholders": {
"recipient_name": "Meno príjemcu",
diff --git a/locales/th/common.json b/locales/th/common.json
index 8ed377e11..a2c9000d5 100644
--- a/locales/th/common.json
+++ b/locales/th/common.json
@@ -782,6 +782,9 @@
"insert_with_values": "แทรกพร้อมแทนที่ค่า",
"insert_raw": "แทรกข้อความต้นฉบับ",
"copy_suffix": "(สำเนา)",
+ "duplicate": "สร้างสำเนา",
+ "delete_title": "ลบเทมเพลตหรือไม่",
+ "delete_message": "เทมเพลต \"{name}\" จะถูกลบอย่างถาวร",
"placeholder": "ตัวแปร",
"placeholders": {
"recipient_name": "ชื่อผู้รับ",
diff --git a/locales/tr/common.json b/locales/tr/common.json
index b39dc5357..059c10322 100644
--- a/locales/tr/common.json
+++ b/locales/tr/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Değerlerle Ekle",
"insert_raw": "Ham Ekle",
"copy_suffix": "(kopya)",
+ "duplicate": "Çoğalt",
+ "delete_title": "Şablon silinsin mi?",
+ "delete_message": "\"{name}\" şablonu kalıcı olarak silinecek.",
"placeholder": "Değişken",
"placeholders": {
"recipient_name": "Alıcı adı",
diff --git a/locales/uk/common.json b/locales/uk/common.json
index 9b078c7db..dd9e9bbcb 100644
--- a/locales/uk/common.json
+++ b/locales/uk/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "Вставити зі значеннями",
"insert_raw": "Вставити Raw",
"copy_suffix": "(копія)",
+ "duplicate": "Дублювати",
+ "delete_title": "Видалити шаблон?",
+ "delete_message": "Шаблон «{name}» буде видалено назавжди.",
"placeholder": "змінна",
"placeholders": {
"recipient_name": "Ім'я одержувача",
diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json
index c8a7a8c01..451ef81c1 100644
--- a/locales/zh-TW/common.json
+++ b/locales/zh-TW/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "填入值後插入",
"insert_raw": "直接插入範本",
"copy_suffix": "(複製)",
+ "duplicate": "建立副本",
+ "delete_title": "刪除範本?",
+ "delete_message": "範本「{name}」將被永久刪除。",
"placeholder": "變數",
"placeholders": {
"recipient_name": "收件者姓名",
diff --git a/locales/zh/common.json b/locales/zh/common.json
index 04221e390..7cfba7fb5 100644
--- a/locales/zh/common.json
+++ b/locales/zh/common.json
@@ -3167,6 +3167,9 @@
"insert_with_values": "插入并填充",
"insert_raw": "插入原始模板",
"copy_suffix": "(复制)",
+ "duplicate": "创建副本",
+ "delete_title": "删除模板?",
+ "delete_message": "模板“{name}”将被永久删除。",
"placeholder": "变量",
"placeholders": {
"recipient_name": "收件人姓名",