@kontakto/email-template-editor 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +132 -128
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +132 -128
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2005,13 +2005,13 @@ var THEME = createTheme(BASE_THEME, {
|
|
|
2005
2005
|
var theme_default = THEME;
|
|
2006
2006
|
|
|
2007
2007
|
// src/locales/en/messages.ts
|
|
2008
|
-
var messages = JSON.parse('{"drawer.library":["Library"],"drawer.new-sample":["New sample"],"drawer.new-template":["New template"],"drawer.no-samples":["No samples available"],"drawer.no-samples-match":["No samples match your filters"],"drawer.no-templates":["No saved templates yet"],"drawer.no-templates-match":["No templates match your filters"],"drawer.search-samples":["Search samples"],"drawer.search-templates":["Search templates"],"drawer.sort-by":["Sort by"],"drawer.tab.outline":["Outline"],"drawer.tab.samples":["Samples"],"drawer.tab.templates":["Templates"],"drawer.tag.all":["All"],"panel.avatar-block":["Avatar block"],"panel.button-block":["Button block"],"panel.columns-block":["Columns block"],"panel.container-block":["Container block"],"panel.divider-block":["Divider block"],"panel.editor-appearance":["Editor appearance"],"panel.export":["Export"],"panel.global":["Global"],"panel.heading-block":["Heading block"],"panel.html-block":["HTML block"],"panel.image-block":["Image block"],"panel.signature-block":["Signature block"],"panel.spacer-block":["Spacer block"],"panel.template":["Template"],"panel.text-block":["Text block"],"savebar.error-saving":["Error saving"],"savebar.new":["New"],"savebar.new-template-created":["New template created"],"savebar.sample-prefix":["Sample"],"savebar.sample-saved":["Sample saved"],"savebar.save":["Save"],"savebar.save-as":["Save as\u2026"],"savebar.save-as-new":["Save as new\u2026"],"savebar.save-as-new-template":["Save as a new template"],"savebar.save-changes":["Save changes"],"savebar.save-changes-to-sample":["Save changes to this sample"],"savebar.start-fresh":["Start a fresh template"],"savebar.template-saved":["Template saved"],"sort.last-updated":["Last updated"],"sort.name":["Name (A\u2013Z)"],"sort.recently-created":["Recently created"],"style.alignment":["Alignment"],"style.background-color":["Background color"],"style.border-color":["Border color"],"style.border-radius":["Border radius"],"style.font-family":["Font family"],"style.font-size":["Font size"],"style.font-weight":["Font weight"],"style.letter-spacing":["Letter spacing"],"style.line-height":["Line height"],"style.padding":["Padding"],"style.text-color":["Text color"],"toolbar.bold":["Bold"],"toolbar.bold-shortcut":["Bold (Cmd+B)"],"toolbar.italic":["Italic"],"toolbar.italic-shortcut":["Italic (Cmd+I)"],"toolbar.link":["Link"],"toolbar.link-shortcut":["Link (Cmd+K)"],"tune.copy":["Copy block"],"tune.delete":["Delete"],"tune.move-down":["Move down"],"tune.move-up":["Move up"]}');
|
|
2008
|
+
var messages = JSON.parse('{"avatar.shape":["Shape"],"button.color":["Button color"],"button.style.pill":["Pill"],"button.style.rectangle":["Rectangle"],"button.style.rounded":["Rounded"],"button.width.auto":["Auto"],"button.width.full":["Full"],"canvas.desktop-view":["Desktop view"],"canvas.mobile-view":["Mobile view"],"columns.count":["Number of columns"],"columns.gap":["Columns gap"],"common.add":["Add"],"common.cancel":["Cancel"],"common.save":["Save"],"common.saving":["Saving\u2026"],"divider.color":["Color"],"drawer.library":["Library"],"drawer.new-sample":["New sample"],"drawer.new-template":["New template"],"drawer.no-samples":["No samples available"],"drawer.no-samples-match":["No samples match your filters"],"drawer.no-templates":["No saved templates yet"],"drawer.no-templates-match":["No templates match your filters"],"drawer.search-samples":["Search samples"],"drawer.search-templates":["Search templates"],"drawer.sort-by":["Sort by"],"drawer.tab.outline":["Outline"],"drawer.tab.samples":["Samples"],"drawer.tab.templates":["Templates"],"drawer.tag.all":["All"],"empty.description":["A blank email template to start from scratch"],"empty.slug":["Empty email"],"field.content":["Content"],"field.height":["Height"],"field.level":["Level"],"field.markdown":["Markdown"],"field.size":["Size"],"field.style":["Style"],"field.text":["Text"],"field.url":["Url"],"field.width":["Width"],"global.backdrop-color":["Backdrop color"],"global.canvas-border-color":["Canvas border color"],"global.canvas-border-radius":["Canvas border radius"],"global.canvas-color":["Canvas color"],"global.disable-backdrop":["Disable backdrop"],"image.alt-text":["Alt text"],"image.http-warning":["Non-HTTPS URL: Gmail and other clients strip mixed content. Use https:// for reliable delivery."],"image.library":["Library"],"image.link-href":["Click through URL"],"image.source-url":["Source URL"],"image.upload":["Upload"],"image.uploading":["Uploading\u2026"],"inspector.tab.inspect":["Inspect"],"inspector.tab.settings":["Settings"],"inspector.tab.styles":["Styles"],"inspector.tab.variables":["Variables"],"panel.avatar-block":["Avatar block"],"panel.button-block":["Button block"],"panel.columns-block":["Columns block"],"panel.container-block":["Container block"],"panel.divider-block":["Divider block"],"panel.editor-appearance":["Editor appearance"],"panel.export":["Export"],"panel.global":["Global"],"panel.heading-block":["Heading block"],"panel.html-block":["HTML block"],"panel.image-block":["Image block"],"panel.signature-block":["Signature block"],"panel.spacer-block":["Spacer block"],"panel.template":["Template"],"panel.text-block":["Text block"],"picker.blank-desc":["Start from an empty email"],"picker.blank-title":["Blank"],"picker.create-sample":["Create sample"],"picker.create-template":["Create template"],"picker.creating":["Creating\u2026"],"picker.error-name-required":["Name is required"],"picker.error-sample-taken":["A sample with this name already exists"],"picker.error-template-taken":["A template with this name already exists"],"picker.start-from":["Start from"],"picker.title-sample":["New sample"],"picker.title-template":["New template"],"rename.error-empty":["Please enter a name"],"rename.error-generic":["Failed to update template details"],"rename.error-taken":["A template with this name already exists"],"rename.name-label":["Name"],"rename.no-tags":["No tags yet."],"rename.tag-placeholder":["Add a tag and press Enter"],"rename.tags":["Tags"],"rename.title":["Edit details"],"row.actions":["Row actions"],"row.demote":["Demote to template"],"row.duplicate":["Duplicate"],"row.duplicate-as-template":["Duplicate as template"],"row.edit-details":["Edit name & tags\u2026"],"row.more":["More"],"row.promote":["Promote to sample"],"save-dialog.create":["Create"],"save-dialog.error-empty-name":["Please enter a template name"],"save-dialog.name-label":["Template Name"],"save-dialog.save":["Save"],"save-dialog.saving":["Saving..."],"save-dialog.title":["Save as a new template"],"save-dialog.title-new":["Create a new template"],"savebar.error-saving":["Error saving"],"savebar.new":["New"],"savebar.new-template-created":["New template created"],"savebar.sample-prefix":["Sample"],"savebar.sample-saved":["Sample saved"],"savebar.save":["Save"],"savebar.save-as":["Save as\u2026"],"savebar.save-as-new":["Save as new\u2026"],"savebar.save-as-new-template":["Save as a new template"],"savebar.save-changes":["Save changes"],"savebar.save-changes-to-sample":["Save changes to this sample"],"savebar.start-fresh":["Start a fresh template"],"savebar.template-saved":["Template saved"],"signature.address":["Address"],"signature.company":["Company"],"signature.email":["Email"],"signature.greeting":["Greeting"],"signature.image-shape":["Image shape"],"signature.image-size":["Image size"],"signature.image-url":["Image URL"],"signature.layout":["Layout"],"signature.layout.horizontal":["Horizontal"],"signature.layout.vertical":["Vertical"],"signature.link-color":["Link color"],"signature.name":["Name"],"signature.name-color":["Name color"],"signature.phone":["Phone"],"signature.shape.circle":["Circle"],"signature.shape.rounded":["Rounded"],"signature.shape.square":["Square"],"signature.title":["Title"],"signature.website":["Website"],"size.lg":["Lg"],"size.md":["Md"],"size.sm":["Sm"],"size.xs":["Xs"],"sort.last-updated":["Last updated"],"sort.name":["Name (A\u2013Z)"],"sort.recently-created":["Recently created"],"style.alignment":["Alignment"],"style.background-color":["Background color"],"style.border-color":["Border color"],"style.border-radius":["Border radius"],"style.font-family":["Font family"],"style.font-size":["Font size"],"style.font-weight":["Font weight"],"style.letter-spacing":["Letter spacing"],"style.line-height":["Line height"],"style.padding":["Padding"],"style.text-color":["Text color"],"tab.edit":["Edit"],"tab.html-output":["HTML output"],"tab.json-output":["JSON output"],"tab.preview":["Preview"],"tab.text-output":["Plain text output"],"time.days-short":["d ago"],"time.hours-short":["h ago"],"time.just-now":["just now"],"time.minutes-short":["m ago"],"time.months-short":["mo ago"],"time.years-short":["y ago"],"toolbar.bold":["Bold"],"toolbar.bold-shortcut":["Bold (Cmd+B)"],"toolbar.italic":["Italic"],"toolbar.italic-shortcut":["Italic (Cmd+I)"],"toolbar.link":["Link"],"toolbar.link-shortcut":["Link (Cmd+K)"],"tune.copy":["Copy block"],"tune.delete":["Delete"],"tune.move-down":["Move down"],"tune.move-up":["Move up"]}');
|
|
2009
2009
|
|
|
2010
2010
|
// src/locales/fi/messages.ts
|
|
2011
|
-
var messages2 = JSON.parse('{"drawer.library":["Kirjasto"],"drawer.new-sample":["Uusi malli"],"drawer.new-template":["Uusi pohja"],"drawer.no-samples":["Ei malleja saatavilla"],"drawer.no-samples-match":["Mik\xE4\xE4n malli ei vastaa hakua"],"drawer.no-templates":["Ei tallennettuja pohjia"],"drawer.no-templates-match":["Mik\xE4\xE4n pohja ei vastaa hakua"],"drawer.search-samples":["Etsi malleja"],"drawer.search-templates":["Etsi pohjia"],"drawer.sort-by":["J\xE4rjestys"],"drawer.tab.outline":["Rakenne"],"drawer.tab.samples":["Mallit"],"drawer.tab.templates":["Pohjat"],"drawer.tag.all":["Kaikki"],"panel.avatar-block":["Avatarlohko"],"panel.button-block":["Painikelohko"],"panel.columns-block":["Sarakkeet"],"panel.container-block":["S\xE4ili\xF6lohko"],"panel.divider-block":["Erotin"],"panel.editor-appearance":["Editorin ulkoasu"],"panel.export":["Vienti"],"panel.global":["Yleiset"],"panel.heading-block":["Otsikkolohko"],"panel.html-block":["HTML-lohko"],"panel.image-block":["Kuvalohko"],"panel.signature-block":["Allekirjoituslohko"],"panel.spacer-block":["V\xE4lilohko"],"panel.template":["Pohja"],"panel.text-block":["Tekstilohko"],"savebar.error-saving":["Tallennus ep\xE4onnistui"],"savebar.new":["Uusi"],"savebar.new-template-created":["Uusi pohja luotu"],"savebar.sample-prefix":["Malli"],"savebar.sample-saved":["Malli tallennettu"],"savebar.save":["Tallenna"],"savebar.save-as":["Tallenna nimell\xE4\u2026"],"savebar.save-as-new":["Tallenna uutena\u2026"],"savebar.save-as-new-template":["Tallenna uutena pohjana"],"savebar.save-changes":["Tallenna muutokset"],"savebar.save-changes-to-sample":["Tallenna muutokset t\xE4h\xE4n malliin"],"savebar.start-fresh":["Aloita tyhj\xE4st\xE4 pohjasta"],"savebar.template-saved":["Pohja tallennettu"],"sort.last-updated":["Viimeksi p\xE4ivitetty"],"sort.name":["Nimi (A\u2013\xD6)"],"sort.recently-created":["\xC4skett\xE4in luotu"],"style.alignment":["Tasaus"],"style.background-color":["Taustav\xE4ri"],"style.border-color":["Reunan v\xE4ri"],"style.border-radius":["Reunan py\xF6ristys"],"style.font-family":["Fontti"],"style.font-size":["Fonttikoko"],"style.font-weight":["Fontin paksuus"],"style.letter-spacing":["Kirjainv\xE4li"],"style.line-height":["Rivikorkeus"],"style.padding":["T\xE4yte"],"style.text-color":["Tekstin v\xE4ri"],"toolbar.bold":["Lihavointi"],"toolbar.bold-shortcut":["Lihavointi (Cmd+B)"],"toolbar.italic":["Kursivointi"],"toolbar.italic-shortcut":["Kursivointi (Cmd+I)"],"toolbar.link":["Linkki"],"toolbar.link-shortcut":["Linkki (Cmd+K)"],"tune.copy":["Kopioi lohko"],"tune.delete":["Poista"],"tune.move-down":["Siirr\xE4 alas"],"tune.move-up":["Siirr\xE4 yl\xF6s"]}');
|
|
2011
|
+
var messages2 = JSON.parse('{"avatar.shape":["Muoto"],"button.color":["Painikkeen v\xE4ri"],"button.style.pill":["Pilleri"],"button.style.rectangle":["Suorakaide"],"button.style.rounded":["Py\xF6ristetty"],"button.width.auto":["Automaattinen"],"button.width.full":["T\xE4ysi"],"canvas.desktop-view":["Ty\xF6p\xF6yt\xE4n\xE4kym\xE4"],"canvas.mobile-view":["Mobiilin\xE4kym\xE4"],"columns.count":["Sarakkeiden m\xE4\xE4r\xE4"],"columns.gap":["Sarakev\xE4li"],"common.add":["Lis\xE4\xE4"],"common.cancel":["Peruuta"],"common.save":["Tallenna"],"common.saving":["Tallennetaan\u2026"],"divider.color":["V\xE4ri"],"drawer.library":["Kirjasto"],"drawer.new-sample":["Uusi malli"],"drawer.new-template":["Uusi pohja"],"drawer.no-samples":["Ei malleja saatavilla"],"drawer.no-samples-match":["Mik\xE4\xE4n malli ei vastaa hakua"],"drawer.no-templates":["Ei tallennettuja pohjia"],"drawer.no-templates-match":["Mik\xE4\xE4n pohja ei vastaa hakua"],"drawer.search-samples":["Etsi malleja"],"drawer.search-templates":["Etsi pohjia"],"drawer.sort-by":["J\xE4rjestys"],"drawer.tab.outline":["Rakenne"],"drawer.tab.samples":["Mallit"],"drawer.tab.templates":["Pohjat"],"drawer.tag.all":["Kaikki"],"empty.description":["Tyhj\xE4 s\xE4hk\xF6postipohja, aloita tyhj\xE4lt\xE4 p\xF6yd\xE4lt\xE4"],"empty.slug":["Tyhj\xE4 s\xE4hk\xF6posti"],"field.content":["Sis\xE4lt\xF6"],"field.height":["Korkeus"],"field.level":["Taso"],"field.markdown":["Markdown"],"field.size":["Koko"],"field.style":["Tyyli"],"field.text":["Teksti"],"field.url":["Osoite"],"field.width":["Leveys"],"global.backdrop-color":["Taustav\xE4ri"],"global.canvas-border-color":["Kankaan reunan v\xE4ri"],"global.canvas-border-radius":["Kankaan reunan py\xF6ristys"],"global.canvas-color":["Kankaan v\xE4ri"],"global.disable-backdrop":["Piilota taustav\xE4ri"],"image.alt-text":["Vaihtoehtoinen teksti"],"image.http-warning":["Ei-HTTPS-osoite: Gmail ja muut asiakasohjelmat poistavat sekoitetun sis\xE4ll\xF6n. K\xE4yt\xE4 https:// varmaa toimitusta varten."],"image.library":["Kirjasto"],"image.link-href":["Linkin osoite"],"image.source-url":["L\xE4hdeosoite"],"image.upload":["Lataa"],"image.uploading":["Ladataan\u2026"],"inspector.tab.inspect":["Tarkastele"],"inspector.tab.settings":["Asetukset"],"inspector.tab.styles":["Tyylit"],"inspector.tab.variables":["Muuttujat"],"panel.avatar-block":["Avatarlohko"],"panel.button-block":["Painikelohko"],"panel.columns-block":["Sarakkeet"],"panel.container-block":["S\xE4ili\xF6lohko"],"panel.divider-block":["Erotin"],"panel.editor-appearance":["Editorin ulkoasu"],"panel.export":["Vienti"],"panel.global":["Yleiset"],"panel.heading-block":["Otsikkolohko"],"panel.html-block":["HTML-lohko"],"panel.image-block":["Kuvalohko"],"panel.signature-block":["Allekirjoituslohko"],"panel.spacer-block":["V\xE4lilohko"],"panel.template":["Pohja"],"panel.text-block":["Tekstilohko"],"picker.blank-desc":["Aloita tyhj\xE4st\xE4 s\xE4hk\xF6postista"],"picker.blank-title":["Tyhj\xE4"],"picker.create-sample":["Luo malli"],"picker.create-template":["Luo pohja"],"picker.creating":["Luodaan\u2026"],"picker.error-name-required":["Nimi vaaditaan"],"picker.error-sample-taken":["Samanniminen malli on jo olemassa"],"picker.error-template-taken":["Samanniminen pohja on jo olemassa"],"picker.start-from":["Aloitetaan pohjasta"],"picker.title-sample":["Uusi malli"],"picker.title-template":["Uusi pohja"],"rename.error-empty":["Anna nimi"],"rename.error-generic":["Tietojen p\xE4ivitys ep\xE4onnistui"],"rename.error-taken":["Samanniminen pohja on jo olemassa"],"rename.name-label":["Nimi"],"rename.no-tags":["Ei tunnisteita."],"rename.tag-placeholder":["Lis\xE4\xE4 tunniste ja paina Enter"],"rename.tags":["Tunnisteet"],"rename.title":["Muokkaa tietoja"],"row.actions":["Rivin toiminnot"],"row.demote":["Alenna pohjaksi"],"row.duplicate":["Monista"],"row.duplicate-as-template":["Monista pohjaksi"],"row.edit-details":["Muokkaa nime\xE4 ja tunnisteita\u2026"],"row.more":["Lis\xE4\xE4"],"row.promote":["Ylenn\xE4 malliksi"],"save-dialog.create":["Luo"],"save-dialog.error-empty-name":["Anna pohjalle nimi"],"save-dialog.name-label":["Pohjan nimi"],"save-dialog.save":["Tallenna"],"save-dialog.saving":["Tallennetaan..."],"save-dialog.title":["Tallenna uutena pohjana"],"save-dialog.title-new":["Luo uusi pohja"],"savebar.error-saving":["Tallennus ep\xE4onnistui"],"savebar.new":["Uusi"],"savebar.new-template-created":["Uusi pohja luotu"],"savebar.sample-prefix":["Malli"],"savebar.sample-saved":["Malli tallennettu"],"savebar.save":["Tallenna"],"savebar.save-as":["Tallenna nimell\xE4\u2026"],"savebar.save-as-new":["Tallenna uutena\u2026"],"savebar.save-as-new-template":["Tallenna uutena pohjana"],"savebar.save-changes":["Tallenna muutokset"],"savebar.save-changes-to-sample":["Tallenna muutokset t\xE4h\xE4n malliin"],"savebar.start-fresh":["Aloita tyhj\xE4st\xE4 pohjasta"],"savebar.template-saved":["Pohja tallennettu"],"signature.address":["Osoite"],"signature.company":["Yritys"],"signature.email":["S\xE4hk\xF6posti"],"signature.greeting":["Tervehdys"],"signature.image-shape":["Kuvan muoto"],"signature.image-size":["Kuvan koko"],"signature.image-url":["Kuvan osoite"],"signature.layout":["Asettelu"],"signature.layout.horizontal":["Vaakasuora"],"signature.layout.vertical":["Pystysuora"],"signature.link-color":["Linkin v\xE4ri"],"signature.name":["Nimi"],"signature.name-color":["Nimen v\xE4ri"],"signature.phone":["Puhelin"],"signature.shape.circle":["Ympyr\xE4"],"signature.shape.rounded":["Py\xF6ristetty"],"signature.shape.square":["Neli\xF6"],"signature.title":["Titteli"],"signature.website":["Verkkosivusto"],"size.lg":["Lg"],"size.md":["Md"],"size.sm":["Sm"],"size.xs":["Xs"],"sort.last-updated":["Viimeksi p\xE4ivitetty"],"sort.name":["Nimi (A\u2013\xD6)"],"sort.recently-created":["\xC4skett\xE4in luotu"],"style.alignment":["Tasaus"],"style.background-color":["Taustav\xE4ri"],"style.border-color":["Reunan v\xE4ri"],"style.border-radius":["Reunan py\xF6ristys"],"style.font-family":["Fontti"],"style.font-size":["Fonttikoko"],"style.font-weight":["Fontin paksuus"],"style.letter-spacing":["Kirjainv\xE4li"],"style.line-height":["Rivikorkeus"],"style.padding":["T\xE4yte"],"style.text-color":["Tekstin v\xE4ri"],"tab.edit":["Muokkaa"],"tab.html-output":["HTML-tuloste"],"tab.json-output":["JSON-tuloste"],"tab.preview":["Esikatselu"],"tab.text-output":["Tekstituloste"],"time.days-short":[" pv sitten"],"time.hours-short":[" h sitten"],"time.just-now":["juuri nyt"],"time.minutes-short":[" min sitten"],"time.months-short":[" kk sitten"],"time.years-short":[" v sitten"],"toolbar.bold":["Lihavointi"],"toolbar.bold-shortcut":["Lihavointi (Cmd+B)"],"toolbar.italic":["Kursivointi"],"toolbar.italic-shortcut":["Kursivointi (Cmd+I)"],"toolbar.link":["Linkki"],"toolbar.link-shortcut":["Linkki (Cmd+K)"],"tune.copy":["Kopioi lohko"],"tune.delete":["Poista"],"tune.move-down":["Siirr\xE4 alas"],"tune.move-up":["Siirr\xE4 yl\xF6s"]}');
|
|
2012
2012
|
|
|
2013
2013
|
// src/locales/sv/messages.ts
|
|
2014
|
-
var messages3 = JSON.parse('{"drawer.library":["Bibliotek"],"drawer.new-sample":["Ny mall"],"drawer.new-template":["Ny e-postmall"],"drawer.no-samples":["Inga exempel tillg\xE4ngliga"],"drawer.no-samples-match":["Inga exempel matchar dina filter"],"drawer.no-templates":["Inga sparade mallar \xE4nnu"],"drawer.no-templates-match":["Inga mallar matchar dina filter"],"drawer.search-samples":["S\xF6k exempel"],"drawer.search-templates":["S\xF6k mallar"],"drawer.sort-by":["Sortera efter"],"drawer.tab.outline":["Struktur"],"drawer.tab.samples":["Exempel"],"drawer.tab.templates":["Mallar"],"drawer.tag.all":["Alla"],"panel.avatar-block":["Avatarblock"],"panel.button-block":["Knappblock"],"panel.columns-block":["Kolumner"],"panel.container-block":["Beh\xE5llarblock"],"panel.divider-block":["Avgr\xE4nsare"],"panel.editor-appearance":["Editorns utseende"],"panel.export":["Exportera"],"panel.global":["Allm\xE4nt"],"panel.heading-block":["Rubrikblock"],"panel.html-block":["HTML-block"],"panel.image-block":["Bildblock"],"panel.signature-block":["Signaturblock"],"panel.spacer-block":["Mellanrumsblock"],"panel.template":["Mall"],"panel.text-block":["Textblock"],"savebar.error-saving":["Fel vid sparande"],"savebar.new":["Ny"],"savebar.new-template-created":["Ny mall skapad"],"savebar.sample-prefix":["Exempel"],"savebar.sample-saved":["Exempel sparat"],"savebar.save":["Spara"],"savebar.save-as":["Spara som\u2026"],"savebar.save-as-new":["Spara som ny\u2026"],"savebar.save-as-new-template":["Spara som en ny mall"],"savebar.save-changes":["Spara \xE4ndringar"],"savebar.save-changes-to-sample":["Spara \xE4ndringar till detta exempel"],"savebar.start-fresh":["Starta en ny mall"],"savebar.template-saved":["Mall sparad"],"sort.last-updated":["Senast uppdaterad"],"sort.name":["Namn (A\u2013\xD6)"],"sort.recently-created":["Nyligen skapad"],"style.alignment":["Justering"],"style.background-color":["Bakgrundsf\xE4rg"],"style.border-color":["Kantf\xE4rg"],"style.border-radius":["Kantradie"],"style.font-family":["Typsnitt"],"style.font-size":["Typsnittsstorlek"],"style.font-weight":["Typsnittsvikt"],"style.letter-spacing":["Teckenavst\xE5nd"],"style.line-height":["Radh\xF6jd"],"style.padding":["Utrymme"],"style.text-color":["Textf\xE4rg"],"toolbar.bold":["Fet"],"toolbar.bold-shortcut":["Fet (Cmd+B)"],"toolbar.italic":["Kursiv"],"toolbar.italic-shortcut":["Kursiv (Cmd+I)"],"toolbar.link":["L\xE4nk"],"toolbar.link-shortcut":["L\xE4nk (Cmd+K)"],"tune.copy":["Kopiera block"],"tune.delete":["Ta bort"],"tune.move-down":["Flytta ner"],"tune.move-up":["Flytta upp"]}');
|
|
2014
|
+
var messages3 = JSON.parse('{"avatar.shape":["Form"],"button.color":["Knappf\xE4rg"],"button.style.pill":["Piller"],"button.style.rectangle":["Rektangel"],"button.style.rounded":["Rundad"],"button.width.auto":["Auto"],"button.width.full":["Full"],"canvas.desktop-view":["Skrivbordsvy"],"canvas.mobile-view":["Mobilvy"],"columns.count":["Antal kolumner"],"columns.gap":["Kolumnmellanrum"],"common.add":["L\xE4gg till"],"common.cancel":["Avbryt"],"common.save":["Spara"],"common.saving":["Sparar\u2026"],"divider.color":["F\xE4rg"],"drawer.library":["Bibliotek"],"drawer.new-sample":["Ny mall"],"drawer.new-template":["Ny e-postmall"],"drawer.no-samples":["Inga exempel tillg\xE4ngliga"],"drawer.no-samples-match":["Inga exempel matchar dina filter"],"drawer.no-templates":["Inga sparade mallar \xE4nnu"],"drawer.no-templates-match":["Inga mallar matchar dina filter"],"drawer.search-samples":["S\xF6k exempel"],"drawer.search-templates":["S\xF6k mallar"],"drawer.sort-by":["Sortera efter"],"drawer.tab.outline":["Struktur"],"drawer.tab.samples":["Exempel"],"drawer.tab.templates":["Mallar"],"drawer.tag.all":["Alla"],"empty.description":["En tom e-postmall att utg\xE5 fr\xE5n"],"empty.slug":["Tomt e-postmeddelande"],"field.content":["Inneh\xE5ll"],"field.height":["H\xF6jd"],"field.level":["Niv\xE5"],"field.markdown":["Markdown"],"field.size":["Storlek"],"field.style":["Stil"],"field.text":["Text"],"field.url":["Adress"],"field.width":["Bredd"],"global.backdrop-color":["Bakgrundsf\xE4rg"],"global.canvas-border-color":["Canvaskantf\xE4rg"],"global.canvas-border-radius":["Canvaskantradie"],"global.canvas-color":["Canvasf\xE4rg"],"global.disable-backdrop":["D\xF6lj bakgrund"],"image.alt-text":["Alternativ text"],"image.http-warning":["Icke-HTTPS-URL: Gmail och andra klienter tar bort blandat inneh\xE5ll. Anv\xE4nd https:// f\xF6r p\xE5litlig leverans."],"image.library":["Bibliotek"],"image.link-href":["Klickl\xE4nk"],"image.source-url":["K\xE4lladress"],"image.upload":["Ladda upp"],"image.uploading":["Laddar upp\u2026"],"inspector.tab.inspect":["Inspektera"],"inspector.tab.settings":["Inst\xE4llningar"],"inspector.tab.styles":["Stilar"],"inspector.tab.variables":["Variabler"],"panel.avatar-block":["Avatarblock"],"panel.button-block":["Knappblock"],"panel.columns-block":["Kolumner"],"panel.container-block":["Beh\xE5llarblock"],"panel.divider-block":["Avgr\xE4nsare"],"panel.editor-appearance":["Editorns utseende"],"panel.export":["Exportera"],"panel.global":["Allm\xE4nt"],"panel.heading-block":["Rubrikblock"],"panel.html-block":["HTML-block"],"panel.image-block":["Bildblock"],"panel.signature-block":["Signaturblock"],"panel.spacer-block":["Mellanrumsblock"],"panel.template":["Mall"],"panel.text-block":["Textblock"],"picker.blank-desc":["Starta fr\xE5n ett tomt e-postmeddelande"],"picker.blank-title":["Tomt"],"picker.create-sample":["Skapa exempel"],"picker.create-template":["Skapa mall"],"picker.creating":["Skapar\u2026"],"picker.error-name-required":["Namn kr\xE4vs"],"picker.error-sample-taken":["Ett exempel med detta namn finns redan"],"picker.error-template-taken":["En mall med detta namn finns redan"],"picker.start-from":["Utg\xE5 fr\xE5n"],"picker.title-sample":["Nytt exempel"],"picker.title-template":["Ny mall"],"rename.error-empty":["Ange ett namn"],"rename.error-generic":["Kunde inte uppdatera malldetaljer"],"rename.error-taken":["En mall med detta namn finns redan"],"rename.name-label":["Namn"],"rename.no-tags":["Inga etiketter \xE4nnu."],"rename.tag-placeholder":["L\xE4gg till en etikett och tryck Enter"],"rename.tags":["Etiketter"],"rename.title":["Redigera detaljer"],"row.actions":["Rad\xE5tg\xE4rder"],"row.demote":["Degradera till mall"],"row.duplicate":["Duplicera"],"row.duplicate-as-template":["Duplicera som mall"],"row.edit-details":["Redigera namn och etiketter\u2026"],"row.more":["Mer"],"row.promote":["Befordra till exempel"],"save-dialog.create":["Skapa"],"save-dialog.error-empty-name":["Ange ett mallnamn"],"save-dialog.name-label":["Mallnamn"],"save-dialog.save":["Spara"],"save-dialog.saving":["Sparar..."],"save-dialog.title":["Spara som en ny mall"],"save-dialog.title-new":["Skapa en ny mall"],"savebar.error-saving":["Fel vid sparande"],"savebar.new":["Ny"],"savebar.new-template-created":["Ny mall skapad"],"savebar.sample-prefix":["Exempel"],"savebar.sample-saved":["Exempel sparat"],"savebar.save":["Spara"],"savebar.save-as":["Spara som\u2026"],"savebar.save-as-new":["Spara som ny\u2026"],"savebar.save-as-new-template":["Spara som en ny mall"],"savebar.save-changes":["Spara \xE4ndringar"],"savebar.save-changes-to-sample":["Spara \xE4ndringar till detta exempel"],"savebar.start-fresh":["Starta en ny mall"],"savebar.template-saved":["Mall sparad"],"signature.address":["Adress"],"signature.company":["F\xF6retag"],"signature.email":["E-post"],"signature.greeting":["H\xE4lsning"],"signature.image-shape":["Bildform"],"signature.image-size":["Bildstorlek"],"signature.image-url":["Bildadress"],"signature.layout":["Layout"],"signature.layout.horizontal":["Horisontell"],"signature.layout.vertical":["Vertikal"],"signature.link-color":["L\xE4nkf\xE4rg"],"signature.name":["Namn"],"signature.name-color":["Namnf\xE4rg"],"signature.phone":["Telefon"],"signature.shape.circle":["Cirkel"],"signature.shape.rounded":["Rundad"],"signature.shape.square":["Kvadrat"],"signature.title":["Titel"],"signature.website":["Webbplats"],"size.lg":["Lg"],"size.md":["Md"],"size.sm":["Sm"],"size.xs":["Xs"],"sort.last-updated":["Senast uppdaterad"],"sort.name":["Namn (A\u2013\xD6)"],"sort.recently-created":["Nyligen skapad"],"style.alignment":["Justering"],"style.background-color":["Bakgrundsf\xE4rg"],"style.border-color":["Kantf\xE4rg"],"style.border-radius":["Kantradie"],"style.font-family":["Typsnitt"],"style.font-size":["Typsnittsstorlek"],"style.font-weight":["Typsnittsvikt"],"style.letter-spacing":["Teckenavst\xE5nd"],"style.line-height":["Radh\xF6jd"],"style.padding":["Utrymme"],"style.text-color":["Textf\xE4rg"],"tab.edit":["Redigera"],"tab.html-output":["HTML-utdata"],"tab.json-output":["JSON-utdata"],"tab.preview":["F\xF6rhandsgranska"],"tab.text-output":["Textutdata"],"time.days-short":[" d sedan"],"time.hours-short":[" tim sedan"],"time.just-now":["just nu"],"time.minutes-short":[" min sedan"],"time.months-short":[" m\xE5n sedan"],"time.years-short":[" \xE5r sedan"],"toolbar.bold":["Fet"],"toolbar.bold-shortcut":["Fet (Cmd+B)"],"toolbar.italic":["Kursiv"],"toolbar.italic-shortcut":["Kursiv (Cmd+I)"],"toolbar.link":["L\xE4nk"],"toolbar.link-shortcut":["L\xE4nk (Cmd+K)"],"tune.copy":["Kopiera block"],"tune.delete":["Ta bort"],"tune.move-down":["Flytta ner"],"tune.move-up":["Flytta upp"]}');
|
|
2015
2015
|
var SUPPORTED_LOCALES = ["en", "sv", "fi"];
|
|
2016
2016
|
var CATALOGS = {
|
|
2017
2017
|
en: messages,
|
|
@@ -2903,7 +2903,7 @@ function AvatarSidebarPanel({ data, setData }) {
|
|
|
2903
2903
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Avatar block" }, /* @__PURE__ */ React57.createElement(
|
|
2904
2904
|
SliderInput,
|
|
2905
2905
|
{
|
|
2906
|
-
label: "Size",
|
|
2906
|
+
label: t("field.size", "Size"),
|
|
2907
2907
|
iconLabel: /* @__PURE__ */ React57.createElement(AspectRatioOutlined, { sx: { color: "text.secondary" } }),
|
|
2908
2908
|
units: "px",
|
|
2909
2909
|
step: 3,
|
|
@@ -2917,19 +2917,19 @@ function AvatarSidebarPanel({ data, setData }) {
|
|
|
2917
2917
|
), /* @__PURE__ */ React57.createElement(
|
|
2918
2918
|
RadioGroupInput,
|
|
2919
2919
|
{
|
|
2920
|
-
label: "Shape",
|
|
2920
|
+
label: t("avatar.shape", "Shape"),
|
|
2921
2921
|
defaultValue: shape,
|
|
2922
2922
|
onChange: (shape2) => {
|
|
2923
2923
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { shape: shape2 }) }));
|
|
2924
2924
|
}
|
|
2925
2925
|
},
|
|
2926
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "circle" }, "Circle"),
|
|
2927
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "square" }, "Square"),
|
|
2928
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rounded" }, "Rounded")
|
|
2926
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
|
|
2927
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
|
|
2928
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
|
|
2929
2929
|
), /* @__PURE__ */ React57.createElement(
|
|
2930
2930
|
TextInput,
|
|
2931
2931
|
{
|
|
2932
|
-
label: "Image URL",
|
|
2932
|
+
label: t("signature.image-url", "Image URL"),
|
|
2933
2933
|
defaultValue: imageUrl,
|
|
2934
2934
|
onChange: (imageUrl2) => {
|
|
2935
2935
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageUrl: imageUrl2 }) }));
|
|
@@ -2938,7 +2938,7 @@ function AvatarSidebarPanel({ data, setData }) {
|
|
|
2938
2938
|
), /* @__PURE__ */ React57.createElement(
|
|
2939
2939
|
TextInput,
|
|
2940
2940
|
{
|
|
2941
|
-
label: "Alt text",
|
|
2941
|
+
label: t("image.alt-text", "Alt text"),
|
|
2942
2942
|
defaultValue: alt,
|
|
2943
2943
|
onChange: (alt2) => {
|
|
2944
2944
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { alt: alt2 }) }));
|
|
@@ -2975,58 +2975,58 @@ function ButtonSidebarPanel({ data, setData }) {
|
|
|
2975
2975
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Button block" }, /* @__PURE__ */ React57.createElement(
|
|
2976
2976
|
TextInput,
|
|
2977
2977
|
{
|
|
2978
|
-
label: "Text",
|
|
2978
|
+
label: t("field.text", "Text"),
|
|
2979
2979
|
defaultValue: text,
|
|
2980
2980
|
onChange: (text2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { text: text2 }) }))
|
|
2981
2981
|
}
|
|
2982
2982
|
), /* @__PURE__ */ React57.createElement(
|
|
2983
2983
|
TextInput,
|
|
2984
2984
|
{
|
|
2985
|
-
label: "Url",
|
|
2985
|
+
label: t("field.url", "Url"),
|
|
2986
2986
|
defaultValue: url,
|
|
2987
2987
|
onChange: (url2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { url: url2 }) }))
|
|
2988
2988
|
}
|
|
2989
2989
|
), /* @__PURE__ */ React57.createElement(
|
|
2990
2990
|
RadioGroupInput,
|
|
2991
2991
|
{
|
|
2992
|
-
label: "Width",
|
|
2992
|
+
label: t("field.width", "Width"),
|
|
2993
2993
|
defaultValue: fullWidth ? "FULL_WIDTH" : "AUTO",
|
|
2994
2994
|
onChange: (v) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { fullWidth: v === "FULL_WIDTH" }) }))
|
|
2995
2995
|
},
|
|
2996
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "FULL_WIDTH" }, "Full"),
|
|
2997
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "AUTO" }, "Auto")
|
|
2996
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "FULL_WIDTH" }, t("button.width.full", "Full")),
|
|
2997
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "AUTO" }, t("button.width.auto", "Auto"))
|
|
2998
2998
|
), /* @__PURE__ */ React57.createElement(
|
|
2999
2999
|
RadioGroupInput,
|
|
3000
3000
|
{
|
|
3001
|
-
label: "Size",
|
|
3001
|
+
label: t("field.size", "Size"),
|
|
3002
3002
|
defaultValue: size,
|
|
3003
3003
|
onChange: (size2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { size: size2 }) }))
|
|
3004
3004
|
},
|
|
3005
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "x-small" }, "Xs"),
|
|
3006
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "small" }, "Sm"),
|
|
3007
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "medium" }, "Md"),
|
|
3008
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "large" }, "Lg")
|
|
3005
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "x-small" }, t("size.xs", "Xs")),
|
|
3006
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "small" }, t("size.sm", "Sm")),
|
|
3007
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "medium" }, t("size.md", "Md")),
|
|
3008
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "large" }, t("size.lg", "Lg"))
|
|
3009
3009
|
), /* @__PURE__ */ React57.createElement(
|
|
3010
3010
|
RadioGroupInput,
|
|
3011
3011
|
{
|
|
3012
|
-
label: "Style",
|
|
3012
|
+
label: t("field.style", "Style"),
|
|
3013
3013
|
defaultValue: buttonStyle,
|
|
3014
3014
|
onChange: (buttonStyle2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonStyle: buttonStyle2 }) }))
|
|
3015
3015
|
},
|
|
3016
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rectangle" }, "Rectangle"),
|
|
3017
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rounded" }, "Rounded"),
|
|
3018
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "pill" }, "Pill")
|
|
3016
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rectangle" }, t("button.style.rectangle", "Rectangle")),
|
|
3017
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rounded" }, t("button.style.rounded", "Rounded")),
|
|
3018
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "pill" }, t("button.style.pill", "Pill"))
|
|
3019
3019
|
), /* @__PURE__ */ React57.createElement(
|
|
3020
3020
|
ColorInput2,
|
|
3021
3021
|
{
|
|
3022
|
-
label: "Text color",
|
|
3022
|
+
label: t("style.text-color", "Text color"),
|
|
3023
3023
|
defaultValue: buttonTextColor,
|
|
3024
3024
|
onChange: (buttonTextColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonTextColor: buttonTextColor2 }) }))
|
|
3025
3025
|
}
|
|
3026
3026
|
), /* @__PURE__ */ React57.createElement(
|
|
3027
3027
|
ColorInput2,
|
|
3028
3028
|
{
|
|
3029
|
-
label: "Button color",
|
|
3029
|
+
label: t("button.color", "Button color"),
|
|
3030
3030
|
defaultValue: buttonBackgroundColor,
|
|
3031
3031
|
onChange: (buttonBackgroundColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonBackgroundColor: buttonBackgroundColor2 }) }))
|
|
3032
3032
|
}
|
|
@@ -3146,7 +3146,7 @@ function ColumnsContainerPanel({ data, setData }) {
|
|
|
3146
3146
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Columns block" }, /* @__PURE__ */ React57.createElement(
|
|
3147
3147
|
RadioGroupInput,
|
|
3148
3148
|
{
|
|
3149
|
-
label: "Number of columns",
|
|
3149
|
+
label: t("columns.count", "Number of columns"),
|
|
3150
3150
|
defaultValue: ((_a = data.props) == null ? void 0 : _a.columnsCount) === 2 ? "2" : "3",
|
|
3151
3151
|
onChange: (v) => {
|
|
3152
3152
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { columnsCount: v === "2" ? 2 : 3 }) }));
|
|
@@ -3165,7 +3165,7 @@ function ColumnsContainerPanel({ data, setData }) {
|
|
|
3165
3165
|
), /* @__PURE__ */ React57.createElement(
|
|
3166
3166
|
SliderInput,
|
|
3167
3167
|
{
|
|
3168
|
-
label: "Columns gap",
|
|
3168
|
+
label: t("columns.gap", "Columns gap"),
|
|
3169
3169
|
iconLabel: /* @__PURE__ */ React57.createElement(SpaceBarOutlined, { sx: { color: "text.secondary" } }),
|
|
3170
3170
|
units: "px",
|
|
3171
3171
|
step: 4,
|
|
@@ -3178,7 +3178,7 @@ function ColumnsContainerPanel({ data, setData }) {
|
|
|
3178
3178
|
), /* @__PURE__ */ React57.createElement(
|
|
3179
3179
|
RadioGroupInput,
|
|
3180
3180
|
{
|
|
3181
|
-
label: "Alignment",
|
|
3181
|
+
label: t("style.alignment", "Alignment"),
|
|
3182
3182
|
defaultValue: (_f = (_e = data.props) == null ? void 0 : _e.contentAlignment) != null ? _f : "middle",
|
|
3183
3183
|
onChange: (contentAlignment) => {
|
|
3184
3184
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contentAlignment }) }));
|
|
@@ -3242,14 +3242,14 @@ function DividerSidebarPanel({ data, setData }) {
|
|
|
3242
3242
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Divider block" }, /* @__PURE__ */ React57.createElement(
|
|
3243
3243
|
ColorInput2,
|
|
3244
3244
|
{
|
|
3245
|
-
label: "Color",
|
|
3245
|
+
label: t("divider.color", "Color"),
|
|
3246
3246
|
defaultValue: lineColor,
|
|
3247
3247
|
onChange: (lineColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { lineColor: lineColor2 }) }))
|
|
3248
3248
|
}
|
|
3249
3249
|
), /* @__PURE__ */ React57.createElement(
|
|
3250
3250
|
SliderInput,
|
|
3251
3251
|
{
|
|
3252
|
-
label: "Height",
|
|
3252
|
+
label: t("field.height", "Height"),
|
|
3253
3253
|
iconLabel: /* @__PURE__ */ React57.createElement(HeightOutlined, { sx: { color: "text.secondary" } }),
|
|
3254
3254
|
units: "px",
|
|
3255
3255
|
step: 1,
|
|
@@ -3337,28 +3337,28 @@ function EmailLayoutSidebarFields({ data, setData }) {
|
|
|
3337
3337
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Global" }, /* @__PURE__ */ React57.createElement(
|
|
3338
3338
|
BooleanInput,
|
|
3339
3339
|
{
|
|
3340
|
-
label: "Disable backdrop",
|
|
3340
|
+
label: t("global.disable-backdrop", "Disable backdrop"),
|
|
3341
3341
|
defaultValue: backdropDisabled,
|
|
3342
3342
|
onChange: (backdropDisabled2) => updateData(__spreadProps(__spreadValues({}, data), { backdropDisabled: backdropDisabled2 }))
|
|
3343
3343
|
}
|
|
3344
3344
|
), !backdropDisabled && /* @__PURE__ */ React57.createElement(React57.Fragment, null, /* @__PURE__ */ React57.createElement(
|
|
3345
3345
|
ColorInput2,
|
|
3346
3346
|
{
|
|
3347
|
-
label: "Backdrop color",
|
|
3347
|
+
label: t("global.backdrop-color", "Backdrop color"),
|
|
3348
3348
|
defaultValue: (_b = data.backdropColor) != null ? _b : "#F5F5F5",
|
|
3349
3349
|
onChange: (backdropColor) => updateData(__spreadProps(__spreadValues({}, data), { backdropColor }))
|
|
3350
3350
|
}
|
|
3351
3351
|
), /* @__PURE__ */ React57.createElement(
|
|
3352
3352
|
ColorInput2,
|
|
3353
3353
|
{
|
|
3354
|
-
label: "Canvas color",
|
|
3354
|
+
label: t("global.canvas-color", "Canvas color"),
|
|
3355
3355
|
defaultValue: (_c = data.canvasColor) != null ? _c : "#FFFFFF",
|
|
3356
3356
|
onChange: (canvasColor) => updateData(__spreadProps(__spreadValues({}, data), { canvasColor }))
|
|
3357
3357
|
}
|
|
3358
3358
|
), /* @__PURE__ */ React57.createElement(
|
|
3359
3359
|
NullableColorInput,
|
|
3360
3360
|
{
|
|
3361
|
-
label: "Canvas border color",
|
|
3361
|
+
label: t("global.canvas-border-color", "Canvas border color"),
|
|
3362
3362
|
defaultValue: (_d = data.borderColor) != null ? _d : null,
|
|
3363
3363
|
onChange: (borderColor) => updateData(__spreadProps(__spreadValues({}, data), { borderColor }))
|
|
3364
3364
|
}
|
|
@@ -3371,21 +3371,21 @@ function EmailLayoutSidebarFields({ data, setData }) {
|
|
|
3371
3371
|
marks: true,
|
|
3372
3372
|
min: 0,
|
|
3373
3373
|
max: 48,
|
|
3374
|
-
label: "Canvas border radius",
|
|
3374
|
+
label: t("global.canvas-border-radius", "Canvas border radius"),
|
|
3375
3375
|
defaultValue: (_e = data.borderRadius) != null ? _e : 0,
|
|
3376
3376
|
onChange: (borderRadius) => updateData(__spreadProps(__spreadValues({}, data), { borderRadius }))
|
|
3377
3377
|
}
|
|
3378
3378
|
)), /* @__PURE__ */ React57.createElement(
|
|
3379
3379
|
NullableFontFamily,
|
|
3380
3380
|
{
|
|
3381
|
-
label: "Font family",
|
|
3381
|
+
label: t("style.font-family", "Font family"),
|
|
3382
3382
|
defaultValue: "MODERN_SANS",
|
|
3383
3383
|
onChange: (fontFamily) => updateData(__spreadProps(__spreadValues({}, data), { fontFamily }))
|
|
3384
3384
|
}
|
|
3385
3385
|
), /* @__PURE__ */ React57.createElement(
|
|
3386
3386
|
ColorInput2,
|
|
3387
3387
|
{
|
|
3388
|
-
label: "Text color",
|
|
3388
|
+
label: t("style.text-color", "Text color"),
|
|
3389
3389
|
defaultValue: (_f = data.textColor) != null ? _f : "#262626",
|
|
3390
3390
|
onChange: (textColor) => updateData(__spreadProps(__spreadValues({}, data), { textColor }))
|
|
3391
3391
|
}
|
|
@@ -3406,7 +3406,7 @@ function HeadingSidebarPanel({ data, setData }) {
|
|
|
3406
3406
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Heading block" }, /* @__PURE__ */ React57.createElement(
|
|
3407
3407
|
TextInput,
|
|
3408
3408
|
{
|
|
3409
|
-
label: "Content",
|
|
3409
|
+
label: t("field.content", "Content"),
|
|
3410
3410
|
rows: 3,
|
|
3411
3411
|
defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.text) != null ? _b : HeadingPropsDefaults.text,
|
|
3412
3412
|
onChange: (text) => {
|
|
@@ -3416,7 +3416,7 @@ function HeadingSidebarPanel({ data, setData }) {
|
|
|
3416
3416
|
), /* @__PURE__ */ React57.createElement(
|
|
3417
3417
|
RadioGroupInput,
|
|
3418
3418
|
{
|
|
3419
|
-
label: "Level",
|
|
3419
|
+
label: t("field.level", "Level"),
|
|
3420
3420
|
defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.level) != null ? _d : HeadingPropsDefaults.level,
|
|
3421
3421
|
onChange: (level) => {
|
|
3422
3422
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { level }) }));
|
|
@@ -3458,7 +3458,7 @@ function HtmlSidebarPanel({ data, setData }) {
|
|
|
3458
3458
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Html block" }, /* @__PURE__ */ React57.createElement(
|
|
3459
3459
|
TextInput,
|
|
3460
3460
|
{
|
|
3461
|
-
label: "Content",
|
|
3461
|
+
label: t("field.content", "Content"),
|
|
3462
3462
|
rows: 5,
|
|
3463
3463
|
defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.contents) != null ? _b : "",
|
|
3464
3464
|
onChange: (contents) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contents }) }))
|
|
@@ -3674,7 +3674,7 @@ function ImageSidebarPanel({ data, setData }) {
|
|
|
3674
3674
|
return (_a2 = fileInputRef.current) == null ? void 0 : _a2.click();
|
|
3675
3675
|
}
|
|
3676
3676
|
},
|
|
3677
|
-
uploading ? "Uploading\u2026" : "Upload"
|
|
3677
|
+
uploading ? t("image.uploading", "Uploading\u2026") : t("image.upload", "Upload")
|
|
3678
3678
|
), /* @__PURE__ */ React57.createElement(
|
|
3679
3679
|
"input",
|
|
3680
3680
|
{
|
|
@@ -3698,28 +3698,28 @@ function ImageSidebarPanel({ data, setData }) {
|
|
|
3698
3698
|
startIcon: /* @__PURE__ */ React57.createElement(CollectionsOutlined, { fontSize: "small" }),
|
|
3699
3699
|
onClick: () => setLibraryOpen(true)
|
|
3700
3700
|
},
|
|
3701
|
-
"Library"
|
|
3701
|
+
t("image.library", "Library")
|
|
3702
3702
|
)), uploadError && /* @__PURE__ */ React57.createElement(Alert, { severity: "error", onClose: () => setUploadError(null), sx: { mt: 1 } }, uploadError), /* @__PURE__ */ React57.createElement(
|
|
3703
3703
|
TextInput,
|
|
3704
3704
|
{
|
|
3705
|
-
label: "Source URL",
|
|
3705
|
+
label: t("image.source-url", "Source URL"),
|
|
3706
3706
|
defaultValue: url,
|
|
3707
3707
|
onChange: (v) => {
|
|
3708
3708
|
const next = v.trim().length === 0 ? null : v.trim();
|
|
3709
3709
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { url: next }) }));
|
|
3710
3710
|
}
|
|
3711
3711
|
}
|
|
3712
|
-
), showHttpWarning && /* @__PURE__ */ React57.createElement(Box, { sx: { mt: -1, mb: 1, display: "flex", alignItems: "flex-start", gap: 0.75 } }, /* @__PURE__ */ React57.createElement(ErrorOutlineOutlined, { fontSize: "small", sx: { color: "warning.main", mt: "2px" } }), /* @__PURE__ */ React57.createElement(Box, { sx: { fontSize: 12, color: "warning.dark" } }, "Non-HTTPS URL: Gmail and other clients strip mixed content. Use https:// for reliable delivery.")), /* @__PURE__ */ React57.createElement(
|
|
3712
|
+
), showHttpWarning && /* @__PURE__ */ React57.createElement(Box, { sx: { mt: -1, mb: 1, display: "flex", alignItems: "flex-start", gap: 0.75 } }, /* @__PURE__ */ React57.createElement(ErrorOutlineOutlined, { fontSize: "small", sx: { color: "warning.main", mt: "2px" } }), /* @__PURE__ */ React57.createElement(Box, { sx: { fontSize: 12, color: "warning.dark" } }, t("image.http-warning", "Non-HTTPS URL: Gmail and other clients strip mixed content. Use https:// for reliable delivery."))), /* @__PURE__ */ React57.createElement(
|
|
3713
3713
|
TextInput,
|
|
3714
3714
|
{
|
|
3715
|
-
label: "Alt text",
|
|
3715
|
+
label: t("image.alt-text", "Alt text"),
|
|
3716
3716
|
defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.alt) != null ? _d : "",
|
|
3717
3717
|
onChange: (alt) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { alt }) }))
|
|
3718
3718
|
}
|
|
3719
3719
|
), /* @__PURE__ */ React57.createElement(
|
|
3720
3720
|
TextInput,
|
|
3721
3721
|
{
|
|
3722
|
-
label: "Click through URL",
|
|
3722
|
+
label: t("image.link-href", "Click through URL"),
|
|
3723
3723
|
defaultValue: (_f = (_e = data.props) == null ? void 0 : _e.linkHref) != null ? _f : "",
|
|
3724
3724
|
onChange: (v) => {
|
|
3725
3725
|
const linkHref = v.trim().length === 0 ? null : v.trim();
|
|
@@ -3729,21 +3729,21 @@ function ImageSidebarPanel({ data, setData }) {
|
|
|
3729
3729
|
), /* @__PURE__ */ React57.createElement(Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React57.createElement(
|
|
3730
3730
|
TextDimensionInput,
|
|
3731
3731
|
{
|
|
3732
|
-
label: "Width",
|
|
3732
|
+
label: t("field.width", "Width"),
|
|
3733
3733
|
defaultValue: (_g = data.props) == null ? void 0 : _g.width,
|
|
3734
3734
|
onChange: (width) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { width }) }))
|
|
3735
3735
|
}
|
|
3736
3736
|
), /* @__PURE__ */ React57.createElement(
|
|
3737
3737
|
TextDimensionInput,
|
|
3738
3738
|
{
|
|
3739
|
-
label: "Height",
|
|
3739
|
+
label: t("field.height", "Height"),
|
|
3740
3740
|
defaultValue: (_h = data.props) == null ? void 0 : _h.height,
|
|
3741
3741
|
onChange: (height) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { height }) }))
|
|
3742
3742
|
}
|
|
3743
3743
|
)), /* @__PURE__ */ React57.createElement(
|
|
3744
3744
|
RadioGroupInput,
|
|
3745
3745
|
{
|
|
3746
|
-
label: "Alignment",
|
|
3746
|
+
label: t("style.alignment", "Alignment"),
|
|
3747
3747
|
defaultValue: (_j = (_i = data.props) == null ? void 0 : _i.contentAlignment) != null ? _j : "middle",
|
|
3748
3748
|
onChange: (contentAlignment) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contentAlignment }) }))
|
|
3749
3749
|
},
|
|
@@ -3799,70 +3799,70 @@ function SignatureSidebarPanel({ data, setData }) {
|
|
|
3799
3799
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Signature block" }, /* @__PURE__ */ React57.createElement(
|
|
3800
3800
|
TextInput,
|
|
3801
3801
|
{
|
|
3802
|
-
label: "Greeting",
|
|
3802
|
+
label: t("signature.greeting", "Greeting"),
|
|
3803
3803
|
defaultValue: greeting,
|
|
3804
3804
|
onChange: (greeting2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { greeting: greeting2 }) }))
|
|
3805
3805
|
}
|
|
3806
3806
|
), /* @__PURE__ */ React57.createElement(
|
|
3807
3807
|
TextInput,
|
|
3808
3808
|
{
|
|
3809
|
-
label: "Name",
|
|
3809
|
+
label: t("signature.name", "Name"),
|
|
3810
3810
|
defaultValue: name,
|
|
3811
3811
|
onChange: (name2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { name: name2 }) }))
|
|
3812
3812
|
}
|
|
3813
3813
|
), /* @__PURE__ */ React57.createElement(
|
|
3814
3814
|
TextInput,
|
|
3815
3815
|
{
|
|
3816
|
-
label: "Title",
|
|
3816
|
+
label: t("signature.title", "Title"),
|
|
3817
3817
|
defaultValue: title,
|
|
3818
3818
|
onChange: (title2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { title: title2 }) }))
|
|
3819
3819
|
}
|
|
3820
3820
|
), /* @__PURE__ */ React57.createElement(
|
|
3821
3821
|
TextInput,
|
|
3822
3822
|
{
|
|
3823
|
-
label: "Company",
|
|
3823
|
+
label: t("signature.company", "Company"),
|
|
3824
3824
|
defaultValue: company,
|
|
3825
3825
|
onChange: (company2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { company: company2 }) }))
|
|
3826
3826
|
}
|
|
3827
3827
|
), /* @__PURE__ */ React57.createElement(
|
|
3828
3828
|
TextInput,
|
|
3829
3829
|
{
|
|
3830
|
-
label: "Address",
|
|
3830
|
+
label: t("signature.address", "Address"),
|
|
3831
3831
|
defaultValue: address,
|
|
3832
3832
|
onChange: (address2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { address: address2 }) }))
|
|
3833
3833
|
}
|
|
3834
3834
|
), /* @__PURE__ */ React57.createElement(
|
|
3835
3835
|
TextInput,
|
|
3836
3836
|
{
|
|
3837
|
-
label: "Email",
|
|
3837
|
+
label: t("signature.email", "Email"),
|
|
3838
3838
|
defaultValue: email,
|
|
3839
3839
|
onChange: (email2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { email: email2 }) }))
|
|
3840
3840
|
}
|
|
3841
3841
|
), /* @__PURE__ */ React57.createElement(
|
|
3842
3842
|
TextInput,
|
|
3843
3843
|
{
|
|
3844
|
-
label: "Phone",
|
|
3844
|
+
label: t("signature.phone", "Phone"),
|
|
3845
3845
|
defaultValue: phone,
|
|
3846
3846
|
onChange: (phone2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { phone: phone2 }) }))
|
|
3847
3847
|
}
|
|
3848
3848
|
), /* @__PURE__ */ React57.createElement(
|
|
3849
3849
|
TextInput,
|
|
3850
3850
|
{
|
|
3851
|
-
label: "Website",
|
|
3851
|
+
label: t("signature.website", "Website"),
|
|
3852
3852
|
defaultValue: website,
|
|
3853
3853
|
onChange: (website2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { website: website2 }) }))
|
|
3854
3854
|
}
|
|
3855
3855
|
), /* @__PURE__ */ React57.createElement(
|
|
3856
3856
|
TextInput,
|
|
3857
3857
|
{
|
|
3858
|
-
label: "Image URL",
|
|
3858
|
+
label: t("signature.image-url", "Image URL"),
|
|
3859
3859
|
defaultValue: imageUrl,
|
|
3860
3860
|
onChange: (imageUrl2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageUrl: imageUrl2 }) }))
|
|
3861
3861
|
}
|
|
3862
3862
|
), /* @__PURE__ */ React57.createElement(
|
|
3863
3863
|
SliderInput,
|
|
3864
3864
|
{
|
|
3865
|
-
label: "Image size",
|
|
3865
|
+
label: t("signature.image-size", "Image size"),
|
|
3866
3866
|
iconLabel: /* @__PURE__ */ React57.createElement(AspectRatioOutlined, { sx: { color: "text.secondary" } }),
|
|
3867
3867
|
units: "px",
|
|
3868
3868
|
step: 4,
|
|
@@ -3874,40 +3874,40 @@ function SignatureSidebarPanel({ data, setData }) {
|
|
|
3874
3874
|
), /* @__PURE__ */ React57.createElement(
|
|
3875
3875
|
RadioGroupInput,
|
|
3876
3876
|
{
|
|
3877
|
-
label: "Image shape",
|
|
3877
|
+
label: t("signature.image-shape", "Image shape"),
|
|
3878
3878
|
defaultValue: imageShape,
|
|
3879
3879
|
onChange: (imageShape2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageShape: imageShape2 }) }))
|
|
3880
3880
|
},
|
|
3881
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "circle" }, "Circle"),
|
|
3882
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "square" }, "Square"),
|
|
3883
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rounded" }, "Rounded")
|
|
3881
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
|
|
3882
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
|
|
3883
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
|
|
3884
3884
|
), /* @__PURE__ */ React57.createElement(
|
|
3885
3885
|
RadioGroupInput,
|
|
3886
3886
|
{
|
|
3887
|
-
label: "Layout",
|
|
3887
|
+
label: t("signature.layout", "Layout"),
|
|
3888
3888
|
defaultValue: layout,
|
|
3889
3889
|
onChange: (layout2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { layout: layout2 }) }))
|
|
3890
3890
|
},
|
|
3891
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "horizontal" }, "Horizontal"),
|
|
3892
|
-
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "vertical" }, "Vertical")
|
|
3891
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "horizontal" }, t("signature.layout.horizontal", "Horizontal")),
|
|
3892
|
+
/* @__PURE__ */ React57.createElement(ToggleButton, { value: "vertical" }, t("signature.layout.vertical", "Vertical"))
|
|
3893
3893
|
), /* @__PURE__ */ React57.createElement(
|
|
3894
3894
|
ColorInput2,
|
|
3895
3895
|
{
|
|
3896
|
-
label: "Name color",
|
|
3896
|
+
label: t("signature.name-color", "Name color"),
|
|
3897
3897
|
defaultValue: nameColor,
|
|
3898
3898
|
onChange: (nameColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { nameColor: nameColor2 }) }))
|
|
3899
3899
|
}
|
|
3900
3900
|
), /* @__PURE__ */ React57.createElement(
|
|
3901
3901
|
ColorInput2,
|
|
3902
3902
|
{
|
|
3903
|
-
label: "Text color",
|
|
3903
|
+
label: t("style.text-color", "Text color"),
|
|
3904
3904
|
defaultValue: textColor,
|
|
3905
3905
|
onChange: (textColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { textColor: textColor2 }) }))
|
|
3906
3906
|
}
|
|
3907
3907
|
), /* @__PURE__ */ React57.createElement(
|
|
3908
3908
|
ColorInput2,
|
|
3909
3909
|
{
|
|
3910
|
-
label: "Link color",
|
|
3910
|
+
label: t("signature.link-color", "Link color"),
|
|
3911
3911
|
defaultValue: linkColor,
|
|
3912
3912
|
onChange: (linkColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { linkColor: linkColor2 }) }))
|
|
3913
3913
|
}
|
|
@@ -3935,7 +3935,7 @@ function SpacerSidebarPanel({ data, setData }) {
|
|
|
3935
3935
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Spacer block" }, /* @__PURE__ */ React57.createElement(
|
|
3936
3936
|
SliderInput,
|
|
3937
3937
|
{
|
|
3938
|
-
label: "Height",
|
|
3938
|
+
label: t("field.height", "Height"),
|
|
3939
3939
|
iconLabel: /* @__PURE__ */ React57.createElement(HeightOutlined, { sx: { color: "text.secondary" } }),
|
|
3940
3940
|
units: "px",
|
|
3941
3941
|
step: 4,
|
|
@@ -3961,7 +3961,7 @@ function TextSidebarPanel({ data, setData }) {
|
|
|
3961
3961
|
return /* @__PURE__ */ React57.createElement(BaseSidebarPanel, { title: "Text block" }, /* @__PURE__ */ React57.createElement(
|
|
3962
3962
|
TextInput,
|
|
3963
3963
|
{
|
|
3964
|
-
label: "Content",
|
|
3964
|
+
label: t("field.content", "Content"),
|
|
3965
3965
|
rows: 5,
|
|
3966
3966
|
defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.text) != null ? _b : "",
|
|
3967
3967
|
onChange: (text) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { text }) }))
|
|
@@ -3969,7 +3969,7 @@ function TextSidebarPanel({ data, setData }) {
|
|
|
3969
3969
|
), /* @__PURE__ */ React57.createElement(
|
|
3970
3970
|
BooleanInput,
|
|
3971
3971
|
{
|
|
3972
|
-
label: "Markdown",
|
|
3972
|
+
label: t("field.markdown", "Markdown"),
|
|
3973
3973
|
defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.markdown) != null ? _d : false,
|
|
3974
3974
|
onChange: (markdown) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { markdown }) }))
|
|
3975
3975
|
}
|
|
@@ -4746,10 +4746,10 @@ function InspectorDrawer({
|
|
|
4746
4746
|
variant: "fullWidth",
|
|
4747
4747
|
sx: { "& .MuiTab-root": { minWidth: 0, px: 1, fontSize: 13 } }
|
|
4748
4748
|
},
|
|
4749
|
-
/* @__PURE__ */ React57.createElement(Tab, { value: "styles", label: "Styles" }),
|
|
4750
|
-
/* @__PURE__ */ React57.createElement(Tab, { value: "block-configuration", label: "Inspect" }),
|
|
4751
|
-
/* @__PURE__ */ React57.createElement(Tab, { value: "variables", label: "Variables" }),
|
|
4752
|
-
/* @__PURE__ */ React57.createElement(Tab, { value: "template-settings", label: "Settings" })
|
|
4749
|
+
/* @__PURE__ */ React57.createElement(Tab, { value: "styles", label: t("inspector.tab.styles", "Styles") }),
|
|
4750
|
+
/* @__PURE__ */ React57.createElement(Tab, { value: "block-configuration", label: t("inspector.tab.inspect", "Inspect") }),
|
|
4751
|
+
/* @__PURE__ */ React57.createElement(Tab, { value: "variables", label: t("inspector.tab.variables", "Variables") }),
|
|
4752
|
+
/* @__PURE__ */ React57.createElement(Tab, { value: "template-settings", label: t("inspector.tab.settings", "Settings") })
|
|
4753
4753
|
))),
|
|
4754
4754
|
/* @__PURE__ */ React57.createElement(Box, { sx: { width: INSPECTOR_DRAWER_WIDTH, height: "calc(100% - 49px)", overflow: "auto" } }, renderCurrentSidebarPanel())
|
|
4755
4755
|
);
|
|
@@ -4795,17 +4795,17 @@ function relativeTime(iso) {
|
|
|
4795
4795
|
if (Number.isNaN(date)) return null;
|
|
4796
4796
|
const diffMs = Date.now() - date;
|
|
4797
4797
|
const diffSec = Math.round(diffMs / 1e3);
|
|
4798
|
-
if (diffSec < 60) return "just now";
|
|
4798
|
+
if (diffSec < 60) return t("time.just-now", "just now");
|
|
4799
4799
|
const diffMin = Math.round(diffSec / 60);
|
|
4800
|
-
if (diffMin < 60) return `${diffMin}m ago`;
|
|
4800
|
+
if (diffMin < 60) return `${diffMin}${t("time.minutes-short", "m ago")}`;
|
|
4801
4801
|
const diffHr = Math.round(diffMin / 60);
|
|
4802
|
-
if (diffHr < 24) return `${diffHr}h ago`;
|
|
4802
|
+
if (diffHr < 24) return `${diffHr}${t("time.hours-short", "h ago")}`;
|
|
4803
4803
|
const diffDay = Math.round(diffHr / 24);
|
|
4804
|
-
if (diffDay < 30) return `${diffDay}d ago`;
|
|
4804
|
+
if (diffDay < 30) return `${diffDay}${t("time.days-short", "d ago")}`;
|
|
4805
4805
|
const diffMo = Math.round(diffDay / 30);
|
|
4806
|
-
if (diffMo < 12) return `${diffMo}mo ago`;
|
|
4806
|
+
if (diffMo < 12) return `${diffMo}${t("time.months-short", "mo ago")}`;
|
|
4807
4807
|
const diffYr = Math.round(diffMo / 12);
|
|
4808
|
-
return `${diffYr}y ago`;
|
|
4808
|
+
return `${diffYr}${t("time.years-short", "y ago")}`;
|
|
4809
4809
|
}
|
|
4810
4810
|
function TemplateRow({
|
|
4811
4811
|
template,
|
|
@@ -4919,12 +4919,12 @@ function TemplateRow({
|
|
|
4919
4919
|
sx: { height: 18, fontSize: "0.65rem", "& .MuiChip-label": { px: 0.75 } }
|
|
4920
4920
|
}
|
|
4921
4921
|
))))),
|
|
4922
|
-
hasActions && /* @__PURE__ */ React57.createElement(React57.Fragment, null, /* @__PURE__ */ React57.createElement(Tooltip, { title: "More" }, /* @__PURE__ */ React57.createElement(
|
|
4922
|
+
hasActions && /* @__PURE__ */ React57.createElement(React57.Fragment, null, /* @__PURE__ */ React57.createElement(Tooltip, { title: t("row.more", "More") }, /* @__PURE__ */ React57.createElement(
|
|
4923
4923
|
IconButton,
|
|
4924
4924
|
{
|
|
4925
4925
|
size: "small",
|
|
4926
4926
|
onClick: openMenu,
|
|
4927
|
-
"aria-label": "Row actions",
|
|
4927
|
+
"aria-label": t("row.actions", "Row actions"),
|
|
4928
4928
|
"aria-haspopup": "menu",
|
|
4929
4929
|
"aria-expanded": Boolean(menuAnchor) || void 0,
|
|
4930
4930
|
sx: {
|
|
@@ -4947,14 +4947,14 @@ function TemplateRow({
|
|
|
4947
4947
|
transformOrigin: { vertical: "top", horizontal: "right" },
|
|
4948
4948
|
slotProps: { paper: { sx: { minWidth: 200 } } }
|
|
4949
4949
|
},
|
|
4950
|
-
onRename && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onRename) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(DriveFileRenameOutlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, "Edit name & tags\u2026")),
|
|
4951
|
-
onDuplicate && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onDuplicate) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(ContentCopyOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, "Duplicate")),
|
|
4952
|
-
onDuplicateAsTemplate && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onDuplicateAsTemplate) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(LibraryAddOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, "Duplicate as template")),
|
|
4953
|
-
onPromote && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onPromote) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(FileUploadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, "Promote to sample")),
|
|
4954
|
-
onDemote && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onDemote) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(FileDownloadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, "Demote to template")),
|
|
4950
|
+
onRename && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onRename) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(DriveFileRenameOutlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, t("row.edit-details", "Edit name & tags\u2026"))),
|
|
4951
|
+
onDuplicate && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onDuplicate) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(ContentCopyOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, t("row.duplicate", "Duplicate"))),
|
|
4952
|
+
onDuplicateAsTemplate && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onDuplicateAsTemplate) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(LibraryAddOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, t("row.duplicate-as-template", "Duplicate as template"))),
|
|
4953
|
+
onPromote && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onPromote) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(FileUploadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, t("row.promote", "Promote to sample"))),
|
|
4954
|
+
onDemote && /* @__PURE__ */ React57.createElement(MenuItem, { onClick: runAction(onDemote) }, /* @__PURE__ */ React57.createElement(ListItemIcon, null, /* @__PURE__ */ React57.createElement(FileDownloadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, t("row.demote", "Demote to template"))),
|
|
4955
4955
|
onDelete && [
|
|
4956
4956
|
/* @__PURE__ */ React57.createElement(Divider$1, { key: "divider" }),
|
|
4957
|
-
/* @__PURE__ */ React57.createElement(MenuItem, { key: "delete", onClick: runAction(onDelete), sx: { color: "error.main" } }, /* @__PURE__ */ React57.createElement(ListItemIcon, { sx: { color: "error.main" } }, /* @__PURE__ */ React57.createElement(DeleteOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, "Delete"))
|
|
4957
|
+
/* @__PURE__ */ React57.createElement(MenuItem, { key: "delete", onClick: runAction(onDelete), sx: { color: "error.main" } }, /* @__PURE__ */ React57.createElement(ListItemIcon, { sx: { color: "error.main" } }, /* @__PURE__ */ React57.createElement(DeleteOutlined, { fontSize: "small" })), /* @__PURE__ */ React57.createElement(ListItemText, null, t("tune.delete", "Delete")))
|
|
4958
4958
|
]
|
|
4959
4959
|
))
|
|
4960
4960
|
);
|
|
@@ -5511,7 +5511,7 @@ function NewTemplatePickerDialog({
|
|
|
5511
5511
|
const [busy, setBusy] = useState(false);
|
|
5512
5512
|
useEffect(() => {
|
|
5513
5513
|
if (open) {
|
|
5514
|
-
setName(defaultName != null ? defaultName : kind === "sample" ? "New sample" : "New template");
|
|
5514
|
+
setName(defaultName != null ? defaultName : t(kind === "sample" ? "drawer.new-sample" : "drawer.new-template", kind === "sample" ? "New sample" : "New template"));
|
|
5515
5515
|
setSelectedStarter(null);
|
|
5516
5516
|
setError(null);
|
|
5517
5517
|
setBusy(false);
|
|
@@ -5519,9 +5519,9 @@ function NewTemplatePickerDialog({
|
|
|
5519
5519
|
}, [open, defaultName, kind]);
|
|
5520
5520
|
const validate = () => {
|
|
5521
5521
|
const trimmed = name.trim();
|
|
5522
|
-
if (!trimmed) return "Name is required";
|
|
5522
|
+
if (!trimmed) return t("picker.error-name-required", "Name is required");
|
|
5523
5523
|
if (existingSlugs.some((s) => s.toLowerCase() === trimmed.toLowerCase())) {
|
|
5524
|
-
return kind === "sample" ? "A sample with this name already exists" : "A template with this name already exists";
|
|
5524
|
+
return kind === "sample" ? t("picker.error-sample-taken", "A sample with this name already exists") : t("picker.error-template-taken", "A template with this name already exists");
|
|
5525
5525
|
}
|
|
5526
5526
|
return null;
|
|
5527
5527
|
};
|
|
@@ -5540,7 +5540,7 @@ function NewTemplatePickerDialog({
|
|
|
5540
5540
|
}
|
|
5541
5541
|
});
|
|
5542
5542
|
const pickable = samples.filter((s) => s.id !== "empty-email");
|
|
5543
|
-
return /* @__PURE__ */ React57.createElement(Dialog, { open, onClose: busy ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57.createElement(DialogTitle, null, kind === "sample" ? "New sample" : "New template"), /* @__PURE__ */ React57.createElement(DialogContent, { dividers: true }, /* @__PURE__ */ React57.createElement(Typography, { variant: "subtitle2", sx: { mb: 1 } }, "Start from"), /* @__PURE__ */ React57.createElement(
|
|
5543
|
+
return /* @__PURE__ */ React57.createElement(Dialog, { open, onClose: busy ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57.createElement(DialogTitle, null, kind === "sample" ? t("picker.title-sample", "New sample") : t("picker.title-template", "New template")), /* @__PURE__ */ React57.createElement(DialogContent, { dividers: true }, /* @__PURE__ */ React57.createElement(Typography, { variant: "subtitle2", sx: { mb: 1 } }, t("picker.start-from", "Start from")), /* @__PURE__ */ React57.createElement(
|
|
5544
5544
|
List,
|
|
5545
5545
|
{
|
|
5546
5546
|
dense: true,
|
|
@@ -5560,7 +5560,7 @@ function NewTemplatePickerDialog({
|
|
|
5560
5560
|
selected: selectedStarter === null,
|
|
5561
5561
|
onClick: () => setSelectedStarter(null)
|
|
5562
5562
|
},
|
|
5563
|
-
/* @__PURE__ */ React57.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React57.createElement(InsertDriveFileOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React57.createElement(ListItemText, { primary: "Blank", secondary: "Start from an empty email" }))
|
|
5563
|
+
/* @__PURE__ */ React57.createElement(Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React57.createElement(InsertDriveFileOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React57.createElement(ListItemText, { primary: t("picker.blank-title", "Blank"), secondary: t("picker.blank-desc", "Start from an empty email") }))
|
|
5564
5564
|
),
|
|
5565
5565
|
pickable.map((s) => /* @__PURE__ */ React57.createElement(
|
|
5566
5566
|
ListItemButton,
|
|
@@ -5577,8 +5577,9 @@ function NewTemplatePickerDialog({
|
|
|
5577
5577
|
autoFocus: true,
|
|
5578
5578
|
fullWidth: true,
|
|
5579
5579
|
size: "small",
|
|
5580
|
-
label: "Name",
|
|
5580
|
+
label: t("rename.name-label", "Name"),
|
|
5581
5581
|
value: name,
|
|
5582
|
+
onFocus: (e) => e.currentTarget.select(),
|
|
5582
5583
|
onChange: (e) => {
|
|
5583
5584
|
setName(e.target.value);
|
|
5584
5585
|
if (error) setError(null);
|
|
@@ -5590,7 +5591,7 @@ function NewTemplatePickerDialog({
|
|
|
5590
5591
|
helperText: error != null ? error : " ",
|
|
5591
5592
|
disabled: busy
|
|
5592
5593
|
}
|
|
5593
|
-
)), /* @__PURE__ */ React57.createElement(DialogActions, null, /* @__PURE__ */ React57.createElement(Button$1, { onClick: onClose, disabled: busy }, "Cancel"), /* @__PURE__ */ React57.createElement(Button$1, { variant: "contained", onClick: handleCreate, disabled: busy }, busy ? "Creating\u2026" :
|
|
5594
|
+
)), /* @__PURE__ */ React57.createElement(DialogActions, null, /* @__PURE__ */ React57.createElement(Button$1, { onClick: onClose, disabled: busy }, t("common.cancel", "Cancel")), /* @__PURE__ */ React57.createElement(Button$1, { variant: "contained", onClick: handleCreate, disabled: busy }, busy ? t("picker.creating", "Creating\u2026") : kind === "sample" ? t("picker.create-sample", "Create sample") : t("picker.create-template", "Create template"))));
|
|
5594
5595
|
}
|
|
5595
5596
|
function RenameDialog({
|
|
5596
5597
|
open,
|
|
@@ -5629,12 +5630,12 @@ function RenameDialog({
|
|
|
5629
5630
|
const handleSubmit = () => __async(null, null, function* () {
|
|
5630
5631
|
const trimmedSlug = slug.trim();
|
|
5631
5632
|
if (!trimmedSlug) {
|
|
5632
|
-
setError("Please enter a name");
|
|
5633
|
+
setError(t("rename.error-empty", "Please enter a name"));
|
|
5633
5634
|
return;
|
|
5634
5635
|
}
|
|
5635
5636
|
const slugChanged = trimmedSlug !== currentSlug;
|
|
5636
5637
|
if (slugChanged && existingSlugs.some((s) => s.toLowerCase() === trimmedSlug.toLowerCase())) {
|
|
5637
|
-
setError("A template with this name already exists");
|
|
5638
|
+
setError(t("rename.error-taken", "A template with this name already exists"));
|
|
5638
5639
|
return;
|
|
5639
5640
|
}
|
|
5640
5641
|
if (!slugChanged && tagsUnchanged) {
|
|
@@ -5647,17 +5648,17 @@ function RenameDialog({
|
|
|
5647
5648
|
onClose();
|
|
5648
5649
|
} catch (e) {
|
|
5649
5650
|
console.error("Error updating template details:", e);
|
|
5650
|
-
setError("Failed to update template details");
|
|
5651
|
+
setError(t("rename.error-generic", "Failed to update template details"));
|
|
5651
5652
|
} finally {
|
|
5652
5653
|
setSubmitting(false);
|
|
5653
5654
|
}
|
|
5654
5655
|
});
|
|
5655
|
-
return /* @__PURE__ */ React57.createElement(Dialog, { open, onClose: submitting ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57.createElement(DialogTitle, null, "Edit details"), /* @__PURE__ */ React57.createElement(DialogContent, null, /* @__PURE__ */ React57.createElement(
|
|
5656
|
+
return /* @__PURE__ */ React57.createElement(Dialog, { open, onClose: submitting ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57.createElement(DialogTitle, null, t("rename.title", "Edit details")), /* @__PURE__ */ React57.createElement(DialogContent, null, /* @__PURE__ */ React57.createElement(
|
|
5656
5657
|
TextField,
|
|
5657
5658
|
{
|
|
5658
5659
|
autoFocus: true,
|
|
5659
5660
|
margin: "dense",
|
|
5660
|
-
label: "Name",
|
|
5661
|
+
label: t("rename.name-label", "Name"),
|
|
5661
5662
|
fullWidth: true,
|
|
5662
5663
|
variant: "outlined",
|
|
5663
5664
|
value: slug,
|
|
@@ -5672,7 +5673,7 @@ function RenameDialog({
|
|
|
5672
5673
|
if (e.key === "Enter" && !submitting) handleSubmit();
|
|
5673
5674
|
}
|
|
5674
5675
|
}
|
|
5675
|
-
), /* @__PURE__ */ React57.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 1, mb: 0.5 } }, "Tags"), tags.length > 0 ? /* @__PURE__ */ React57.createElement(Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React57.createElement(
|
|
5676
|
+
), /* @__PURE__ */ React57.createElement(Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 1, mb: 0.5 } }, t("rename.tags", "Tags")), tags.length > 0 ? /* @__PURE__ */ React57.createElement(Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React57.createElement(
|
|
5676
5677
|
Chip,
|
|
5677
5678
|
{
|
|
5678
5679
|
key: tag,
|
|
@@ -5680,12 +5681,12 @@ function RenameDialog({
|
|
|
5680
5681
|
size: "small",
|
|
5681
5682
|
onDelete: submitting ? void 0 : () => removeTag(tag)
|
|
5682
5683
|
}
|
|
5683
|
-
))) : /* @__PURE__ */ React57.createElement(Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, "
|
|
5684
|
+
))) : /* @__PURE__ */ React57.createElement(Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, t("rename.no-tags", "No tags yet.")), /* @__PURE__ */ React57.createElement(
|
|
5684
5685
|
TextField,
|
|
5685
5686
|
{
|
|
5686
5687
|
size: "small",
|
|
5687
5688
|
fullWidth: true,
|
|
5688
|
-
placeholder: "Add a tag and press Enter",
|
|
5689
|
+
placeholder: t("rename.tag-placeholder", "Add a tag and press Enter"),
|
|
5689
5690
|
value: tagInput,
|
|
5690
5691
|
onChange: (e) => setTagInput(e.target.value),
|
|
5691
5692
|
disabled: submitting,
|
|
@@ -5708,18 +5709,18 @@ function RenameDialog({
|
|
|
5708
5709
|
startIcon: /* @__PURE__ */ React57.createElement(AddOutlined, { fontSize: "small" }),
|
|
5709
5710
|
sx: { textTransform: "none" }
|
|
5710
5711
|
},
|
|
5711
|
-
"Add"
|
|
5712
|
+
t("common.add", "Add")
|
|
5712
5713
|
))
|
|
5713
5714
|
}
|
|
5714
5715
|
}
|
|
5715
|
-
), /* @__PURE__ */ React57.createElement(Box, { sx: { minHeight: 8 } })), /* @__PURE__ */ React57.createElement(DialogActions, null, /* @__PURE__ */ React57.createElement(Button$1, { onClick: onClose, disabled: submitting }, "Cancel"), /* @__PURE__ */ React57.createElement(
|
|
5716
|
+
), /* @__PURE__ */ React57.createElement(Box, { sx: { minHeight: 8 } })), /* @__PURE__ */ React57.createElement(DialogActions, null, /* @__PURE__ */ React57.createElement(Button$1, { onClick: onClose, disabled: submitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React57.createElement(
|
|
5716
5717
|
Button$1,
|
|
5717
5718
|
{
|
|
5718
5719
|
onClick: handleSubmit,
|
|
5719
5720
|
variant: "contained",
|
|
5720
5721
|
disabled: !slug.trim() || submitting
|
|
5721
5722
|
},
|
|
5722
|
-
submitting ? "Saving\u2026" : "Save"
|
|
5723
|
+
submitting ? t("common.saving", "Saving\u2026") : t("common.save", "Save")
|
|
5723
5724
|
)));
|
|
5724
5725
|
}
|
|
5725
5726
|
function SaveTemplateDialog({
|
|
@@ -5728,7 +5729,8 @@ function SaveTemplateDialog({
|
|
|
5728
5729
|
onSave,
|
|
5729
5730
|
onNameChange,
|
|
5730
5731
|
defaultName = "",
|
|
5731
|
-
error: externalError = null
|
|
5732
|
+
error: externalError = null,
|
|
5733
|
+
mode = "save-as"
|
|
5732
5734
|
}) {
|
|
5733
5735
|
const [templateName, setTemplateName] = useState(defaultName);
|
|
5734
5736
|
const [internalError, setInternalError] = useState("");
|
|
@@ -5752,7 +5754,7 @@ function SaveTemplateDialog({
|
|
|
5752
5754
|
};
|
|
5753
5755
|
const handleSave = () => __async(null, null, function* () {
|
|
5754
5756
|
if (!templateName.trim()) {
|
|
5755
|
-
setInternalError("Please enter a template name");
|
|
5757
|
+
setInternalError(t("save-dialog.error-empty-name", "Please enter a template name"));
|
|
5756
5758
|
return;
|
|
5757
5759
|
}
|
|
5758
5760
|
setIsSubmitting(true);
|
|
@@ -5789,19 +5791,20 @@ function SaveTemplateDialog({
|
|
|
5789
5791
|
maxWidth: "sm",
|
|
5790
5792
|
fullWidth: true
|
|
5791
5793
|
},
|
|
5792
|
-
/* @__PURE__ */ React57.createElement(DialogTitle, null, "Save
|
|
5794
|
+
/* @__PURE__ */ React57.createElement(DialogTitle, null, mode === "new" ? t("save-dialog.title-new", "Create a new template") : t("save-dialog.title", "Save as a new template")),
|
|
5793
5795
|
/* @__PURE__ */ React57.createElement(DialogContent, null, /* @__PURE__ */ React57.createElement(Box, { sx: { pt: 1 } }, /* @__PURE__ */ React57.createElement(
|
|
5794
5796
|
TextField,
|
|
5795
5797
|
{
|
|
5796
5798
|
autoFocus: true,
|
|
5797
5799
|
margin: "dense",
|
|
5798
5800
|
id: "template-name",
|
|
5799
|
-
label: "Template Name",
|
|
5801
|
+
label: t("save-dialog.name-label", "Template Name"),
|
|
5800
5802
|
type: "text",
|
|
5801
5803
|
fullWidth: true,
|
|
5802
5804
|
variant: "outlined",
|
|
5803
5805
|
value: templateName,
|
|
5804
5806
|
onChange: handleNameChange,
|
|
5807
|
+
onFocus: (e) => e.currentTarget.select(),
|
|
5805
5808
|
error: !!displayError,
|
|
5806
5809
|
helperText: displayError,
|
|
5807
5810
|
onKeyPress: (e) => {
|
|
@@ -5812,7 +5815,7 @@ function SaveTemplateDialog({
|
|
|
5812
5815
|
disabled: isSubmitting
|
|
5813
5816
|
}
|
|
5814
5817
|
))),
|
|
5815
|
-
/* @__PURE__ */ React57.createElement(DialogActions, null, /* @__PURE__ */ React57.createElement(Button$1, { onClick: handleCancel, disabled: isSubmitting }, "Cancel"), /* @__PURE__ */ React57.createElement(
|
|
5818
|
+
/* @__PURE__ */ React57.createElement(DialogActions, null, /* @__PURE__ */ React57.createElement(Button$1, { onClick: handleCancel, disabled: isSubmitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React57.createElement(
|
|
5816
5819
|
Button$1,
|
|
5817
5820
|
{
|
|
5818
5821
|
onClick: handleSave,
|
|
@@ -5820,7 +5823,7 @@ function SaveTemplateDialog({
|
|
|
5820
5823
|
color: "primary",
|
|
5821
5824
|
disabled: !templateName.trim() || !!displayError || isSubmitting
|
|
5822
5825
|
},
|
|
5823
|
-
isSubmitting ? "Saving..." : "
|
|
5826
|
+
isSubmitting ? t("save-dialog.saving", "Saving...") : mode === "new" ? t("save-dialog.create", "Create") : t("save-dialog.save", "Save")
|
|
5824
5827
|
))
|
|
5825
5828
|
);
|
|
5826
5829
|
}
|
|
@@ -5842,12 +5845,12 @@ var empty_email_message_default = EMPTY_EMAIL_MESSAGE;
|
|
|
5842
5845
|
|
|
5843
5846
|
// src/app/templates-drawer/index.tsx
|
|
5844
5847
|
var SAMPLES_DRAWER_WIDTH = 320;
|
|
5845
|
-
var
|
|
5848
|
+
var buildEmptyTemplate = () => ({
|
|
5846
5849
|
id: "empty-email",
|
|
5847
|
-
slug: "Empty email",
|
|
5850
|
+
slug: t("empty.slug", "Empty email"),
|
|
5848
5851
|
kind: "sample",
|
|
5849
|
-
description: "A blank email template to start from scratch"
|
|
5850
|
-
};
|
|
5852
|
+
description: t("empty.description", "A blank email template to start from scratch")
|
|
5853
|
+
});
|
|
5851
5854
|
var SORT_OPTIONS = [
|
|
5852
5855
|
{ value: "updatedAt", labelKey: "sort.last-updated", fallback: "Last updated" },
|
|
5853
5856
|
{ value: "createdAt", labelKey: "sort.recently-created", fallback: "Recently created" },
|
|
@@ -5882,7 +5885,7 @@ function SamplesDrawer({
|
|
|
5882
5885
|
const samplesDrawerOpen = useSamplesDrawerOpen();
|
|
5883
5886
|
const { setCurrentTemplate, loadTemplate: ctxLoadTemplate } = useEmailEditor();
|
|
5884
5887
|
const { showMessage } = useSnackbar();
|
|
5885
|
-
const [samples, setSamples] = useState([
|
|
5888
|
+
const [samples, setSamples] = useState([buildEmptyTemplate()]);
|
|
5886
5889
|
const [templates, setTemplates] = useState([]);
|
|
5887
5890
|
const [loadingSamples, setLoadingSamples] = useState(false);
|
|
5888
5891
|
const [loadingTemplates, setLoadingTemplates] = useState(false);
|
|
@@ -5911,10 +5914,10 @@ function SamplesDrawer({
|
|
|
5911
5914
|
loadSamples().then((results) => {
|
|
5912
5915
|
const normalized = withKind(results, "sample");
|
|
5913
5916
|
const existingEmpty = normalized.find((s) => s.id === "empty-email");
|
|
5914
|
-
setSamples(existingEmpty ? normalized : [
|
|
5917
|
+
setSamples(existingEmpty ? normalized : [buildEmptyTemplate(), ...normalized]);
|
|
5915
5918
|
}).catch((error) => {
|
|
5916
5919
|
console.error("Failed to load samples:", error);
|
|
5917
|
-
setSamples([
|
|
5920
|
+
setSamples([buildEmptyTemplate()]);
|
|
5918
5921
|
}).finally(() => setLoadingSamples(false));
|
|
5919
5922
|
}, [enabled, samplesDrawerOpen, loadSamples]);
|
|
5920
5923
|
const refreshTemplates = () => __async(null, null, function* () {
|
|
@@ -8491,31 +8494,31 @@ function MainTabsGroup() {
|
|
|
8491
8494
|
Tab,
|
|
8492
8495
|
{
|
|
8493
8496
|
value: "editor",
|
|
8494
|
-
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: "Edit" }, /* @__PURE__ */ React57.createElement(EditOutlined, { fontSize: "small" }))
|
|
8497
|
+
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: t("tab.edit", "Edit") }, /* @__PURE__ */ React57.createElement(EditOutlined, { fontSize: "small" }))
|
|
8495
8498
|
}
|
|
8496
8499
|
), /* @__PURE__ */ React57.createElement(
|
|
8497
8500
|
Tab,
|
|
8498
8501
|
{
|
|
8499
8502
|
value: "preview",
|
|
8500
|
-
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: "Preview" }, /* @__PURE__ */ React57.createElement(PreviewOutlined, { fontSize: "small" }))
|
|
8503
|
+
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: t("tab.preview", "Preview") }, /* @__PURE__ */ React57.createElement(PreviewOutlined, { fontSize: "small" }))
|
|
8501
8504
|
}
|
|
8502
8505
|
), /* @__PURE__ */ React57.createElement(
|
|
8503
8506
|
Tab,
|
|
8504
8507
|
{
|
|
8505
8508
|
value: "html",
|
|
8506
|
-
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: "HTML output" }, /* @__PURE__ */ React57.createElement(CodeOutlined, { fontSize: "small" }))
|
|
8509
|
+
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: t("tab.html-output", "HTML output") }, /* @__PURE__ */ React57.createElement(CodeOutlined, { fontSize: "small" }))
|
|
8507
8510
|
}
|
|
8508
8511
|
), /* @__PURE__ */ React57.createElement(
|
|
8509
8512
|
Tab,
|
|
8510
8513
|
{
|
|
8511
8514
|
value: "text",
|
|
8512
|
-
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: "Plain text output" }, /* @__PURE__ */ React57.createElement(SubjectOutlined, { fontSize: "small" }))
|
|
8515
|
+
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: t("tab.text-output", "Plain text output") }, /* @__PURE__ */ React57.createElement(SubjectOutlined, { fontSize: "small" }))
|
|
8513
8516
|
}
|
|
8514
8517
|
), /* @__PURE__ */ React57.createElement(
|
|
8515
8518
|
Tab,
|
|
8516
8519
|
{
|
|
8517
8520
|
value: "json",
|
|
8518
|
-
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: "JSON output" }, /* @__PURE__ */ React57.createElement(DataObjectOutlined, { fontSize: "small" }))
|
|
8521
|
+
label: /* @__PURE__ */ React57.createElement(Tooltip, { title: t("tab.json-output", "JSON output") }, /* @__PURE__ */ React57.createElement(DataObjectOutlined, { fontSize: "small" }))
|
|
8519
8522
|
}
|
|
8520
8523
|
));
|
|
8521
8524
|
}
|
|
@@ -8660,6 +8663,7 @@ function SaveBar({ loadTemplates, saveAs }) {
|
|
|
8660
8663
|
SaveTemplateDialog,
|
|
8661
8664
|
{
|
|
8662
8665
|
open: dialogMode !== null,
|
|
8666
|
+
mode: dialogMode === "new-blank" ? "new" : "save-as",
|
|
8663
8667
|
onClose: () => {
|
|
8664
8668
|
setDialogMode(null);
|
|
8665
8669
|
setNameError(null);
|
|
@@ -9027,7 +9031,7 @@ function TemplatePanel2({ loadTemplates, saveAs, samplesDrawerEnabled = true })
|
|
|
9027
9031
|
alignItems: "center"
|
|
9028
9032
|
},
|
|
9029
9033
|
samplesDrawerEnabled && /* @__PURE__ */ React57.createElement(ToggleSamplesPanelButton, null),
|
|
9030
|
-
/* @__PURE__ */ React57.createElement(Stack, { px: 2, direction: "row", gap: 2, width: "100%", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React57.createElement(Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React57.createElement(MainTabsGroup, null)), /* @__PURE__ */ React57.createElement(Stack, { direction: "row", spacing: 2, alignItems: "center" }, selectedMainTab === "editor" && /* @__PURE__ */ React57.createElement(UndoRedoButtons, null), /* @__PURE__ */ React57.createElement(ToggleButtonGroup, { value: selectedScreenSize, exclusive: true, size: "small", onChange: handleScreenSizeChange }, /* @__PURE__ */ React57.createElement(ToggleButton, { value: "desktop" }, /* @__PURE__ */ React57.createElement(Tooltip, { title: "Desktop view" }, /* @__PURE__ */ React57.createElement(MonitorOutlined, { fontSize: "small" }))), /* @__PURE__ */ React57.createElement(ToggleButton, { value: "mobile" }, /* @__PURE__ */ React57.createElement(Tooltip, { title: "Mobile view" }, /* @__PURE__ */ React57.createElement(PhoneIphoneOutlined, { fontSize: "small" })))))),
|
|
9034
|
+
/* @__PURE__ */ React57.createElement(Stack, { px: 2, direction: "row", gap: 2, width: "100%", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React57.createElement(Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React57.createElement(MainTabsGroup, null)), /* @__PURE__ */ React57.createElement(Stack, { direction: "row", spacing: 2, alignItems: "center" }, selectedMainTab === "editor" && /* @__PURE__ */ React57.createElement(UndoRedoButtons, null), /* @__PURE__ */ React57.createElement(ToggleButtonGroup, { value: selectedScreenSize, exclusive: true, size: "small", onChange: handleScreenSizeChange }, /* @__PURE__ */ React57.createElement(ToggleButton, { value: "desktop" }, /* @__PURE__ */ React57.createElement(Tooltip, { title: t("canvas.desktop-view", "Desktop view") }, /* @__PURE__ */ React57.createElement(MonitorOutlined, { fontSize: "small" }))), /* @__PURE__ */ React57.createElement(ToggleButton, { value: "mobile" }, /* @__PURE__ */ React57.createElement(Tooltip, { title: t("canvas.mobile-view", "Mobile view") }, /* @__PURE__ */ React57.createElement(PhoneIphoneOutlined, { fontSize: "small" })))))),
|
|
9031
9035
|
/* @__PURE__ */ React57.createElement(ToggleInspectorPanelButton, null)
|
|
9032
9036
|
), selectedMainTab === "editor" && /* @__PURE__ */ React57.createElement(SubjectInput, null), selectedMainTab === "preview" && /* @__PURE__ */ React57.createElement(SubjectPreview, null), /* @__PURE__ */ React57.createElement(ImageDropPasteHandler, { enabled: selectedMainTab === "editor" }, /* @__PURE__ */ React57.createElement(
|
|
9033
9037
|
Box,
|