@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.cjs
CHANGED
|
@@ -2016,13 +2016,13 @@ var THEME = styles.createTheme(BASE_THEME, {
|
|
|
2016
2016
|
var theme_default = THEME;
|
|
2017
2017
|
|
|
2018
2018
|
// src/locales/en/messages.ts
|
|
2019
|
-
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"]}');
|
|
2019
|
+
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"]}');
|
|
2020
2020
|
|
|
2021
2021
|
// src/locales/fi/messages.ts
|
|
2022
|
-
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"]}');
|
|
2022
|
+
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"]}');
|
|
2023
2023
|
|
|
2024
2024
|
// src/locales/sv/messages.ts
|
|
2025
|
-
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"]}');
|
|
2025
|
+
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"]}');
|
|
2026
2026
|
var SUPPORTED_LOCALES = ["en", "sv", "fi"];
|
|
2027
2027
|
var CATALOGS = {
|
|
2028
2028
|
en: messages,
|
|
@@ -2914,7 +2914,7 @@ function AvatarSidebarPanel({ data, setData }) {
|
|
|
2914
2914
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Avatar block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
2915
2915
|
SliderInput,
|
|
2916
2916
|
{
|
|
2917
|
-
label: "Size",
|
|
2917
|
+
label: t("field.size", "Size"),
|
|
2918
2918
|
iconLabel: /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.AspectRatioOutlined, { sx: { color: "text.secondary" } }),
|
|
2919
2919
|
units: "px",
|
|
2920
2920
|
step: 3,
|
|
@@ -2928,19 +2928,19 @@ function AvatarSidebarPanel({ data, setData }) {
|
|
|
2928
2928
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
2929
2929
|
RadioGroupInput,
|
|
2930
2930
|
{
|
|
2931
|
-
label: "Shape",
|
|
2931
|
+
label: t("avatar.shape", "Shape"),
|
|
2932
2932
|
defaultValue: shape,
|
|
2933
2933
|
onChange: (shape2) => {
|
|
2934
2934
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { shape: shape2 }) }));
|
|
2935
2935
|
}
|
|
2936
2936
|
},
|
|
2937
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "circle" }, "Circle"),
|
|
2938
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "square" }, "Square"),
|
|
2939
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rounded" }, "Rounded")
|
|
2937
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
|
|
2938
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
|
|
2939
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
|
|
2940
2940
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
2941
2941
|
TextInput,
|
|
2942
2942
|
{
|
|
2943
|
-
label: "Image URL",
|
|
2943
|
+
label: t("signature.image-url", "Image URL"),
|
|
2944
2944
|
defaultValue: imageUrl,
|
|
2945
2945
|
onChange: (imageUrl2) => {
|
|
2946
2946
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageUrl: imageUrl2 }) }));
|
|
@@ -2949,7 +2949,7 @@ function AvatarSidebarPanel({ data, setData }) {
|
|
|
2949
2949
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
2950
2950
|
TextInput,
|
|
2951
2951
|
{
|
|
2952
|
-
label: "Alt text",
|
|
2952
|
+
label: t("image.alt-text", "Alt text"),
|
|
2953
2953
|
defaultValue: alt,
|
|
2954
2954
|
onChange: (alt2) => {
|
|
2955
2955
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { alt: alt2 }) }));
|
|
@@ -2986,58 +2986,58 @@ function ButtonSidebarPanel({ data, setData }) {
|
|
|
2986
2986
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Button block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
2987
2987
|
TextInput,
|
|
2988
2988
|
{
|
|
2989
|
-
label: "Text",
|
|
2989
|
+
label: t("field.text", "Text"),
|
|
2990
2990
|
defaultValue: text,
|
|
2991
2991
|
onChange: (text2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { text: text2 }) }))
|
|
2992
2992
|
}
|
|
2993
2993
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
2994
2994
|
TextInput,
|
|
2995
2995
|
{
|
|
2996
|
-
label: "Url",
|
|
2996
|
+
label: t("field.url", "Url"),
|
|
2997
2997
|
defaultValue: url,
|
|
2998
2998
|
onChange: (url2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { url: url2 }) }))
|
|
2999
2999
|
}
|
|
3000
3000
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3001
3001
|
RadioGroupInput,
|
|
3002
3002
|
{
|
|
3003
|
-
label: "Width",
|
|
3003
|
+
label: t("field.width", "Width"),
|
|
3004
3004
|
defaultValue: fullWidth ? "FULL_WIDTH" : "AUTO",
|
|
3005
3005
|
onChange: (v) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { fullWidth: v === "FULL_WIDTH" }) }))
|
|
3006
3006
|
},
|
|
3007
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "FULL_WIDTH" }, "Full"),
|
|
3008
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "AUTO" }, "Auto")
|
|
3007
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "FULL_WIDTH" }, t("button.width.full", "Full")),
|
|
3008
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "AUTO" }, t("button.width.auto", "Auto"))
|
|
3009
3009
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3010
3010
|
RadioGroupInput,
|
|
3011
3011
|
{
|
|
3012
|
-
label: "Size",
|
|
3012
|
+
label: t("field.size", "Size"),
|
|
3013
3013
|
defaultValue: size,
|
|
3014
3014
|
onChange: (size2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { size: size2 }) }))
|
|
3015
3015
|
},
|
|
3016
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "x-small" }, "Xs"),
|
|
3017
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "small" }, "Sm"),
|
|
3018
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "medium" }, "Md"),
|
|
3019
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "large" }, "Lg")
|
|
3016
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "x-small" }, t("size.xs", "Xs")),
|
|
3017
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "small" }, t("size.sm", "Sm")),
|
|
3018
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "medium" }, t("size.md", "Md")),
|
|
3019
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "large" }, t("size.lg", "Lg"))
|
|
3020
3020
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3021
3021
|
RadioGroupInput,
|
|
3022
3022
|
{
|
|
3023
|
-
label: "Style",
|
|
3023
|
+
label: t("field.style", "Style"),
|
|
3024
3024
|
defaultValue: buttonStyle,
|
|
3025
3025
|
onChange: (buttonStyle2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonStyle: buttonStyle2 }) }))
|
|
3026
3026
|
},
|
|
3027
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rectangle" }, "Rectangle"),
|
|
3028
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rounded" }, "Rounded"),
|
|
3029
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "pill" }, "Pill")
|
|
3027
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rectangle" }, t("button.style.rectangle", "Rectangle")),
|
|
3028
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rounded" }, t("button.style.rounded", "Rounded")),
|
|
3029
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "pill" }, t("button.style.pill", "Pill"))
|
|
3030
3030
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3031
3031
|
ColorInput2,
|
|
3032
3032
|
{
|
|
3033
|
-
label: "Text color",
|
|
3033
|
+
label: t("style.text-color", "Text color"),
|
|
3034
3034
|
defaultValue: buttonTextColor,
|
|
3035
3035
|
onChange: (buttonTextColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonTextColor: buttonTextColor2 }) }))
|
|
3036
3036
|
}
|
|
3037
3037
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3038
3038
|
ColorInput2,
|
|
3039
3039
|
{
|
|
3040
|
-
label: "Button color",
|
|
3040
|
+
label: t("button.color", "Button color"),
|
|
3041
3041
|
defaultValue: buttonBackgroundColor,
|
|
3042
3042
|
onChange: (buttonBackgroundColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { buttonBackgroundColor: buttonBackgroundColor2 }) }))
|
|
3043
3043
|
}
|
|
@@ -3157,7 +3157,7 @@ function ColumnsContainerPanel({ data, setData }) {
|
|
|
3157
3157
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Columns block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3158
3158
|
RadioGroupInput,
|
|
3159
3159
|
{
|
|
3160
|
-
label: "Number of columns",
|
|
3160
|
+
label: t("columns.count", "Number of columns"),
|
|
3161
3161
|
defaultValue: ((_a = data.props) == null ? void 0 : _a.columnsCount) === 2 ? "2" : "3",
|
|
3162
3162
|
onChange: (v) => {
|
|
3163
3163
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { columnsCount: v === "2" ? 2 : 3 }) }));
|
|
@@ -3176,7 +3176,7 @@ function ColumnsContainerPanel({ data, setData }) {
|
|
|
3176
3176
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3177
3177
|
SliderInput,
|
|
3178
3178
|
{
|
|
3179
|
-
label: "Columns gap",
|
|
3179
|
+
label: t("columns.gap", "Columns gap"),
|
|
3180
3180
|
iconLabel: /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.SpaceBarOutlined, { sx: { color: "text.secondary" } }),
|
|
3181
3181
|
units: "px",
|
|
3182
3182
|
step: 4,
|
|
@@ -3189,7 +3189,7 @@ function ColumnsContainerPanel({ data, setData }) {
|
|
|
3189
3189
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3190
3190
|
RadioGroupInput,
|
|
3191
3191
|
{
|
|
3192
|
-
label: "Alignment",
|
|
3192
|
+
label: t("style.alignment", "Alignment"),
|
|
3193
3193
|
defaultValue: (_f = (_e = data.props) == null ? void 0 : _e.contentAlignment) != null ? _f : "middle",
|
|
3194
3194
|
onChange: (contentAlignment) => {
|
|
3195
3195
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contentAlignment }) }));
|
|
@@ -3253,14 +3253,14 @@ function DividerSidebarPanel({ data, setData }) {
|
|
|
3253
3253
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Divider block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3254
3254
|
ColorInput2,
|
|
3255
3255
|
{
|
|
3256
|
-
label: "Color",
|
|
3256
|
+
label: t("divider.color", "Color"),
|
|
3257
3257
|
defaultValue: lineColor,
|
|
3258
3258
|
onChange: (lineColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { lineColor: lineColor2 }) }))
|
|
3259
3259
|
}
|
|
3260
3260
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3261
3261
|
SliderInput,
|
|
3262
3262
|
{
|
|
3263
|
-
label: "Height",
|
|
3263
|
+
label: t("field.height", "Height"),
|
|
3264
3264
|
iconLabel: /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.HeightOutlined, { sx: { color: "text.secondary" } }),
|
|
3265
3265
|
units: "px",
|
|
3266
3266
|
step: 1,
|
|
@@ -3348,28 +3348,28 @@ function EmailLayoutSidebarFields({ data, setData }) {
|
|
|
3348
3348
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Global" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3349
3349
|
BooleanInput,
|
|
3350
3350
|
{
|
|
3351
|
-
label: "Disable backdrop",
|
|
3351
|
+
label: t("global.disable-backdrop", "Disable backdrop"),
|
|
3352
3352
|
defaultValue: backdropDisabled,
|
|
3353
3353
|
onChange: (backdropDisabled2) => updateData(__spreadProps(__spreadValues({}, data), { backdropDisabled: backdropDisabled2 }))
|
|
3354
3354
|
}
|
|
3355
3355
|
), !backdropDisabled && /* @__PURE__ */ React57__default.default.createElement(React57__default.default.Fragment, null, /* @__PURE__ */ React57__default.default.createElement(
|
|
3356
3356
|
ColorInput2,
|
|
3357
3357
|
{
|
|
3358
|
-
label: "Backdrop color",
|
|
3358
|
+
label: t("global.backdrop-color", "Backdrop color"),
|
|
3359
3359
|
defaultValue: (_b = data.backdropColor) != null ? _b : "#F5F5F5",
|
|
3360
3360
|
onChange: (backdropColor) => updateData(__spreadProps(__spreadValues({}, data), { backdropColor }))
|
|
3361
3361
|
}
|
|
3362
3362
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3363
3363
|
ColorInput2,
|
|
3364
3364
|
{
|
|
3365
|
-
label: "Canvas color",
|
|
3365
|
+
label: t("global.canvas-color", "Canvas color"),
|
|
3366
3366
|
defaultValue: (_c = data.canvasColor) != null ? _c : "#FFFFFF",
|
|
3367
3367
|
onChange: (canvasColor) => updateData(__spreadProps(__spreadValues({}, data), { canvasColor }))
|
|
3368
3368
|
}
|
|
3369
3369
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3370
3370
|
NullableColorInput,
|
|
3371
3371
|
{
|
|
3372
|
-
label: "Canvas border color",
|
|
3372
|
+
label: t("global.canvas-border-color", "Canvas border color"),
|
|
3373
3373
|
defaultValue: (_d = data.borderColor) != null ? _d : null,
|
|
3374
3374
|
onChange: (borderColor) => updateData(__spreadProps(__spreadValues({}, data), { borderColor }))
|
|
3375
3375
|
}
|
|
@@ -3382,21 +3382,21 @@ function EmailLayoutSidebarFields({ data, setData }) {
|
|
|
3382
3382
|
marks: true,
|
|
3383
3383
|
min: 0,
|
|
3384
3384
|
max: 48,
|
|
3385
|
-
label: "Canvas border radius",
|
|
3385
|
+
label: t("global.canvas-border-radius", "Canvas border radius"),
|
|
3386
3386
|
defaultValue: (_e = data.borderRadius) != null ? _e : 0,
|
|
3387
3387
|
onChange: (borderRadius) => updateData(__spreadProps(__spreadValues({}, data), { borderRadius }))
|
|
3388
3388
|
}
|
|
3389
3389
|
)), /* @__PURE__ */ React57__default.default.createElement(
|
|
3390
3390
|
NullableFontFamily,
|
|
3391
3391
|
{
|
|
3392
|
-
label: "Font family",
|
|
3392
|
+
label: t("style.font-family", "Font family"),
|
|
3393
3393
|
defaultValue: "MODERN_SANS",
|
|
3394
3394
|
onChange: (fontFamily) => updateData(__spreadProps(__spreadValues({}, data), { fontFamily }))
|
|
3395
3395
|
}
|
|
3396
3396
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3397
3397
|
ColorInput2,
|
|
3398
3398
|
{
|
|
3399
|
-
label: "Text color",
|
|
3399
|
+
label: t("style.text-color", "Text color"),
|
|
3400
3400
|
defaultValue: (_f = data.textColor) != null ? _f : "#262626",
|
|
3401
3401
|
onChange: (textColor) => updateData(__spreadProps(__spreadValues({}, data), { textColor }))
|
|
3402
3402
|
}
|
|
@@ -3417,7 +3417,7 @@ function HeadingSidebarPanel({ data, setData }) {
|
|
|
3417
3417
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Heading block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3418
3418
|
TextInput,
|
|
3419
3419
|
{
|
|
3420
|
-
label: "Content",
|
|
3420
|
+
label: t("field.content", "Content"),
|
|
3421
3421
|
rows: 3,
|
|
3422
3422
|
defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.text) != null ? _b : HeadingPropsDefaults.text,
|
|
3423
3423
|
onChange: (text) => {
|
|
@@ -3427,7 +3427,7 @@ function HeadingSidebarPanel({ data, setData }) {
|
|
|
3427
3427
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3428
3428
|
RadioGroupInput,
|
|
3429
3429
|
{
|
|
3430
|
-
label: "Level",
|
|
3430
|
+
label: t("field.level", "Level"),
|
|
3431
3431
|
defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.level) != null ? _d : HeadingPropsDefaults.level,
|
|
3432
3432
|
onChange: (level) => {
|
|
3433
3433
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { level }) }));
|
|
@@ -3469,7 +3469,7 @@ function HtmlSidebarPanel({ data, setData }) {
|
|
|
3469
3469
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Html block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3470
3470
|
TextInput,
|
|
3471
3471
|
{
|
|
3472
|
-
label: "Content",
|
|
3472
|
+
label: t("field.content", "Content"),
|
|
3473
3473
|
rows: 5,
|
|
3474
3474
|
defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.contents) != null ? _b : "",
|
|
3475
3475
|
onChange: (contents) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contents }) }))
|
|
@@ -3685,7 +3685,7 @@ function ImageSidebarPanel({ data, setData }) {
|
|
|
3685
3685
|
return (_a2 = fileInputRef.current) == null ? void 0 : _a2.click();
|
|
3686
3686
|
}
|
|
3687
3687
|
},
|
|
3688
|
-
uploading ? "Uploading\u2026" : "Upload"
|
|
3688
|
+
uploading ? t("image.uploading", "Uploading\u2026") : t("image.upload", "Upload")
|
|
3689
3689
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3690
3690
|
"input",
|
|
3691
3691
|
{
|
|
@@ -3709,28 +3709,28 @@ function ImageSidebarPanel({ data, setData }) {
|
|
|
3709
3709
|
startIcon: /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.CollectionsOutlined, { fontSize: "small" }),
|
|
3710
3710
|
onClick: () => setLibraryOpen(true)
|
|
3711
3711
|
},
|
|
3712
|
-
"Library"
|
|
3712
|
+
t("image.library", "Library")
|
|
3713
3713
|
)), uploadError && /* @__PURE__ */ React57__default.default.createElement(material.Alert, { severity: "error", onClose: () => setUploadError(null), sx: { mt: 1 } }, uploadError), /* @__PURE__ */ React57__default.default.createElement(
|
|
3714
3714
|
TextInput,
|
|
3715
3715
|
{
|
|
3716
|
-
label: "Source URL",
|
|
3716
|
+
label: t("image.source-url", "Source URL"),
|
|
3717
3717
|
defaultValue: url,
|
|
3718
3718
|
onChange: (v) => {
|
|
3719
3719
|
const next = v.trim().length === 0 ? null : v.trim();
|
|
3720
3720
|
updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { url: next }) }));
|
|
3721
3721
|
}
|
|
3722
3722
|
}
|
|
3723
|
-
), showHttpWarning && /* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { mt: -1, mb: 1, display: "flex", alignItems: "flex-start", gap: 0.75 } }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.ErrorOutlineOutlined, { fontSize: "small", sx: { color: "warning.main", mt: "2px" } }), /* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { fontSize: 12, color: "warning.dark" } }, "Non-HTTPS URL: Gmail and other clients strip mixed content. Use https:// for reliable delivery.")), /* @__PURE__ */ React57__default.default.createElement(
|
|
3723
|
+
), showHttpWarning && /* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { mt: -1, mb: 1, display: "flex", alignItems: "flex-start", gap: 0.75 } }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.ErrorOutlineOutlined, { fontSize: "small", sx: { color: "warning.main", mt: "2px" } }), /* @__PURE__ */ React57__default.default.createElement(material.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__default.default.createElement(
|
|
3724
3724
|
TextInput,
|
|
3725
3725
|
{
|
|
3726
|
-
label: "Alt text",
|
|
3726
|
+
label: t("image.alt-text", "Alt text"),
|
|
3727
3727
|
defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.alt) != null ? _d : "",
|
|
3728
3728
|
onChange: (alt) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { alt }) }))
|
|
3729
3729
|
}
|
|
3730
3730
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3731
3731
|
TextInput,
|
|
3732
3732
|
{
|
|
3733
|
-
label: "Click through URL",
|
|
3733
|
+
label: t("image.link-href", "Click through URL"),
|
|
3734
3734
|
defaultValue: (_f = (_e = data.props) == null ? void 0 : _e.linkHref) != null ? _f : "",
|
|
3735
3735
|
onChange: (v) => {
|
|
3736
3736
|
const linkHref = v.trim().length === 0 ? null : v.trim();
|
|
@@ -3740,21 +3740,21 @@ function ImageSidebarPanel({ data, setData }) {
|
|
|
3740
3740
|
), /* @__PURE__ */ React57__default.default.createElement(material.Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3741
3741
|
TextDimensionInput,
|
|
3742
3742
|
{
|
|
3743
|
-
label: "Width",
|
|
3743
|
+
label: t("field.width", "Width"),
|
|
3744
3744
|
defaultValue: (_g = data.props) == null ? void 0 : _g.width,
|
|
3745
3745
|
onChange: (width) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { width }) }))
|
|
3746
3746
|
}
|
|
3747
3747
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3748
3748
|
TextDimensionInput,
|
|
3749
3749
|
{
|
|
3750
|
-
label: "Height",
|
|
3750
|
+
label: t("field.height", "Height"),
|
|
3751
3751
|
defaultValue: (_h = data.props) == null ? void 0 : _h.height,
|
|
3752
3752
|
onChange: (height) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { height }) }))
|
|
3753
3753
|
}
|
|
3754
3754
|
)), /* @__PURE__ */ React57__default.default.createElement(
|
|
3755
3755
|
RadioGroupInput,
|
|
3756
3756
|
{
|
|
3757
|
-
label: "Alignment",
|
|
3757
|
+
label: t("style.alignment", "Alignment"),
|
|
3758
3758
|
defaultValue: (_j = (_i = data.props) == null ? void 0 : _i.contentAlignment) != null ? _j : "middle",
|
|
3759
3759
|
onChange: (contentAlignment) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { contentAlignment }) }))
|
|
3760
3760
|
},
|
|
@@ -3810,70 +3810,70 @@ function SignatureSidebarPanel({ data, setData }) {
|
|
|
3810
3810
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Signature block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3811
3811
|
TextInput,
|
|
3812
3812
|
{
|
|
3813
|
-
label: "Greeting",
|
|
3813
|
+
label: t("signature.greeting", "Greeting"),
|
|
3814
3814
|
defaultValue: greeting,
|
|
3815
3815
|
onChange: (greeting2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { greeting: greeting2 }) }))
|
|
3816
3816
|
}
|
|
3817
3817
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3818
3818
|
TextInput,
|
|
3819
3819
|
{
|
|
3820
|
-
label: "Name",
|
|
3820
|
+
label: t("signature.name", "Name"),
|
|
3821
3821
|
defaultValue: name,
|
|
3822
3822
|
onChange: (name2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { name: name2 }) }))
|
|
3823
3823
|
}
|
|
3824
3824
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3825
3825
|
TextInput,
|
|
3826
3826
|
{
|
|
3827
|
-
label: "Title",
|
|
3827
|
+
label: t("signature.title", "Title"),
|
|
3828
3828
|
defaultValue: title,
|
|
3829
3829
|
onChange: (title2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { title: title2 }) }))
|
|
3830
3830
|
}
|
|
3831
3831
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3832
3832
|
TextInput,
|
|
3833
3833
|
{
|
|
3834
|
-
label: "Company",
|
|
3834
|
+
label: t("signature.company", "Company"),
|
|
3835
3835
|
defaultValue: company,
|
|
3836
3836
|
onChange: (company2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { company: company2 }) }))
|
|
3837
3837
|
}
|
|
3838
3838
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3839
3839
|
TextInput,
|
|
3840
3840
|
{
|
|
3841
|
-
label: "Address",
|
|
3841
|
+
label: t("signature.address", "Address"),
|
|
3842
3842
|
defaultValue: address,
|
|
3843
3843
|
onChange: (address2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { address: address2 }) }))
|
|
3844
3844
|
}
|
|
3845
3845
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3846
3846
|
TextInput,
|
|
3847
3847
|
{
|
|
3848
|
-
label: "Email",
|
|
3848
|
+
label: t("signature.email", "Email"),
|
|
3849
3849
|
defaultValue: email,
|
|
3850
3850
|
onChange: (email2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { email: email2 }) }))
|
|
3851
3851
|
}
|
|
3852
3852
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3853
3853
|
TextInput,
|
|
3854
3854
|
{
|
|
3855
|
-
label: "Phone",
|
|
3855
|
+
label: t("signature.phone", "Phone"),
|
|
3856
3856
|
defaultValue: phone,
|
|
3857
3857
|
onChange: (phone2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { phone: phone2 }) }))
|
|
3858
3858
|
}
|
|
3859
3859
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3860
3860
|
TextInput,
|
|
3861
3861
|
{
|
|
3862
|
-
label: "Website",
|
|
3862
|
+
label: t("signature.website", "Website"),
|
|
3863
3863
|
defaultValue: website,
|
|
3864
3864
|
onChange: (website2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { website: website2 }) }))
|
|
3865
3865
|
}
|
|
3866
3866
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3867
3867
|
TextInput,
|
|
3868
3868
|
{
|
|
3869
|
-
label: "Image URL",
|
|
3869
|
+
label: t("signature.image-url", "Image URL"),
|
|
3870
3870
|
defaultValue: imageUrl,
|
|
3871
3871
|
onChange: (imageUrl2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageUrl: imageUrl2 }) }))
|
|
3872
3872
|
}
|
|
3873
3873
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3874
3874
|
SliderInput,
|
|
3875
3875
|
{
|
|
3876
|
-
label: "Image size",
|
|
3876
|
+
label: t("signature.image-size", "Image size"),
|
|
3877
3877
|
iconLabel: /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.AspectRatioOutlined, { sx: { color: "text.secondary" } }),
|
|
3878
3878
|
units: "px",
|
|
3879
3879
|
step: 4,
|
|
@@ -3885,40 +3885,40 @@ function SignatureSidebarPanel({ data, setData }) {
|
|
|
3885
3885
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3886
3886
|
RadioGroupInput,
|
|
3887
3887
|
{
|
|
3888
|
-
label: "Image shape",
|
|
3888
|
+
label: t("signature.image-shape", "Image shape"),
|
|
3889
3889
|
defaultValue: imageShape,
|
|
3890
3890
|
onChange: (imageShape2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { imageShape: imageShape2 }) }))
|
|
3891
3891
|
},
|
|
3892
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "circle" }, "Circle"),
|
|
3893
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "square" }, "Square"),
|
|
3894
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rounded" }, "Rounded")
|
|
3892
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "circle" }, t("signature.shape.circle", "Circle")),
|
|
3893
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "square" }, t("signature.shape.square", "Square")),
|
|
3894
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "rounded" }, t("signature.shape.rounded", "Rounded"))
|
|
3895
3895
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3896
3896
|
RadioGroupInput,
|
|
3897
3897
|
{
|
|
3898
|
-
label: "Layout",
|
|
3898
|
+
label: t("signature.layout", "Layout"),
|
|
3899
3899
|
defaultValue: layout,
|
|
3900
3900
|
onChange: (layout2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { layout: layout2 }) }))
|
|
3901
3901
|
},
|
|
3902
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "horizontal" }, "Horizontal"),
|
|
3903
|
-
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "vertical" }, "Vertical")
|
|
3902
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "horizontal" }, t("signature.layout.horizontal", "Horizontal")),
|
|
3903
|
+
/* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "vertical" }, t("signature.layout.vertical", "Vertical"))
|
|
3904
3904
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3905
3905
|
ColorInput2,
|
|
3906
3906
|
{
|
|
3907
|
-
label: "Name color",
|
|
3907
|
+
label: t("signature.name-color", "Name color"),
|
|
3908
3908
|
defaultValue: nameColor,
|
|
3909
3909
|
onChange: (nameColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { nameColor: nameColor2 }) }))
|
|
3910
3910
|
}
|
|
3911
3911
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3912
3912
|
ColorInput2,
|
|
3913
3913
|
{
|
|
3914
|
-
label: "Text color",
|
|
3914
|
+
label: t("style.text-color", "Text color"),
|
|
3915
3915
|
defaultValue: textColor,
|
|
3916
3916
|
onChange: (textColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { textColor: textColor2 }) }))
|
|
3917
3917
|
}
|
|
3918
3918
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3919
3919
|
ColorInput2,
|
|
3920
3920
|
{
|
|
3921
|
-
label: "Link color",
|
|
3921
|
+
label: t("signature.link-color", "Link color"),
|
|
3922
3922
|
defaultValue: linkColor,
|
|
3923
3923
|
onChange: (linkColor2) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { linkColor: linkColor2 }) }))
|
|
3924
3924
|
}
|
|
@@ -3946,7 +3946,7 @@ function SpacerSidebarPanel({ data, setData }) {
|
|
|
3946
3946
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Spacer block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3947
3947
|
SliderInput,
|
|
3948
3948
|
{
|
|
3949
|
-
label: "Height",
|
|
3949
|
+
label: t("field.height", "Height"),
|
|
3950
3950
|
iconLabel: /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.HeightOutlined, { sx: { color: "text.secondary" } }),
|
|
3951
3951
|
units: "px",
|
|
3952
3952
|
step: 4,
|
|
@@ -3972,7 +3972,7 @@ function TextSidebarPanel({ data, setData }) {
|
|
|
3972
3972
|
return /* @__PURE__ */ React57__default.default.createElement(BaseSidebarPanel, { title: "Text block" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
3973
3973
|
TextInput,
|
|
3974
3974
|
{
|
|
3975
|
-
label: "Content",
|
|
3975
|
+
label: t("field.content", "Content"),
|
|
3976
3976
|
rows: 5,
|
|
3977
3977
|
defaultValue: (_b = (_a = data.props) == null ? void 0 : _a.text) != null ? _b : "",
|
|
3978
3978
|
onChange: (text) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { text }) }))
|
|
@@ -3980,7 +3980,7 @@ function TextSidebarPanel({ data, setData }) {
|
|
|
3980
3980
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
3981
3981
|
BooleanInput,
|
|
3982
3982
|
{
|
|
3983
|
-
label: "Markdown",
|
|
3983
|
+
label: t("field.markdown", "Markdown"),
|
|
3984
3984
|
defaultValue: (_d = (_c = data.props) == null ? void 0 : _c.markdown) != null ? _d : false,
|
|
3985
3985
|
onChange: (markdown) => updateData(__spreadProps(__spreadValues({}, data), { props: __spreadProps(__spreadValues({}, data.props), { markdown }) }))
|
|
3986
3986
|
}
|
|
@@ -4757,10 +4757,10 @@ function InspectorDrawer({
|
|
|
4757
4757
|
variant: "fullWidth",
|
|
4758
4758
|
sx: { "& .MuiTab-root": { minWidth: 0, px: 1, fontSize: 13 } }
|
|
4759
4759
|
},
|
|
4760
|
-
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "styles", label: "Styles" }),
|
|
4761
|
-
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "block-configuration", label: "Inspect" }),
|
|
4762
|
-
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "variables", label: "Variables" }),
|
|
4763
|
-
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "template-settings", label: "Settings" })
|
|
4760
|
+
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "styles", label: t("inspector.tab.styles", "Styles") }),
|
|
4761
|
+
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "block-configuration", label: t("inspector.tab.inspect", "Inspect") }),
|
|
4762
|
+
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "variables", label: t("inspector.tab.variables", "Variables") }),
|
|
4763
|
+
/* @__PURE__ */ React57__default.default.createElement(material.Tab, { value: "template-settings", label: t("inspector.tab.settings", "Settings") })
|
|
4764
4764
|
))),
|
|
4765
4765
|
/* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { width: INSPECTOR_DRAWER_WIDTH, height: "calc(100% - 49px)", overflow: "auto" } }, renderCurrentSidebarPanel())
|
|
4766
4766
|
);
|
|
@@ -4806,17 +4806,17 @@ function relativeTime(iso) {
|
|
|
4806
4806
|
if (Number.isNaN(date)) return null;
|
|
4807
4807
|
const diffMs = Date.now() - date;
|
|
4808
4808
|
const diffSec = Math.round(diffMs / 1e3);
|
|
4809
|
-
if (diffSec < 60) return "just now";
|
|
4809
|
+
if (diffSec < 60) return t("time.just-now", "just now");
|
|
4810
4810
|
const diffMin = Math.round(diffSec / 60);
|
|
4811
|
-
if (diffMin < 60) return `${diffMin}m ago`;
|
|
4811
|
+
if (diffMin < 60) return `${diffMin}${t("time.minutes-short", "m ago")}`;
|
|
4812
4812
|
const diffHr = Math.round(diffMin / 60);
|
|
4813
|
-
if (diffHr < 24) return `${diffHr}h ago`;
|
|
4813
|
+
if (diffHr < 24) return `${diffHr}${t("time.hours-short", "h ago")}`;
|
|
4814
4814
|
const diffDay = Math.round(diffHr / 24);
|
|
4815
|
-
if (diffDay < 30) return `${diffDay}d ago`;
|
|
4815
|
+
if (diffDay < 30) return `${diffDay}${t("time.days-short", "d ago")}`;
|
|
4816
4816
|
const diffMo = Math.round(diffDay / 30);
|
|
4817
|
-
if (diffMo < 12) return `${diffMo}mo ago`;
|
|
4817
|
+
if (diffMo < 12) return `${diffMo}${t("time.months-short", "mo ago")}`;
|
|
4818
4818
|
const diffYr = Math.round(diffMo / 12);
|
|
4819
|
-
return `${diffYr}y ago`;
|
|
4819
|
+
return `${diffYr}${t("time.years-short", "y ago")}`;
|
|
4820
4820
|
}
|
|
4821
4821
|
function TemplateRow({
|
|
4822
4822
|
template,
|
|
@@ -4930,12 +4930,12 @@ function TemplateRow({
|
|
|
4930
4930
|
sx: { height: 18, fontSize: "0.65rem", "& .MuiChip-label": { px: 0.75 } }
|
|
4931
4931
|
}
|
|
4932
4932
|
))))),
|
|
4933
|
-
hasActions && /* @__PURE__ */ React57__default.default.createElement(React57__default.default.Fragment, null, /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "More" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
4933
|
+
hasActions && /* @__PURE__ */ React57__default.default.createElement(React57__default.default.Fragment, null, /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("row.more", "More") }, /* @__PURE__ */ React57__default.default.createElement(
|
|
4934
4934
|
material.IconButton,
|
|
4935
4935
|
{
|
|
4936
4936
|
size: "small",
|
|
4937
4937
|
onClick: openMenu,
|
|
4938
|
-
"aria-label": "Row actions",
|
|
4938
|
+
"aria-label": t("row.actions", "Row actions"),
|
|
4939
4939
|
"aria-haspopup": "menu",
|
|
4940
4940
|
"aria-expanded": Boolean(menuAnchor) || void 0,
|
|
4941
4941
|
sx: {
|
|
@@ -4958,14 +4958,14 @@ function TemplateRow({
|
|
|
4958
4958
|
transformOrigin: { vertical: "top", horizontal: "right" },
|
|
4959
4959
|
slotProps: { paper: { sx: { minWidth: 200 } } }
|
|
4960
4960
|
},
|
|
4961
|
-
onRename && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onRename) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.DriveFileRenameOutlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, "Edit name & tags\u2026")),
|
|
4962
|
-
onDuplicate && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onDuplicate) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.ContentCopyOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, "Duplicate")),
|
|
4963
|
-
onDuplicateAsTemplate && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onDuplicateAsTemplate) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.LibraryAddOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, "Duplicate as template")),
|
|
4964
|
-
onPromote && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onPromote) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.FileUploadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, "Promote to sample")),
|
|
4965
|
-
onDemote && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onDemote) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.FileDownloadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, "Demote to template")),
|
|
4961
|
+
onRename && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onRename) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.DriveFileRenameOutlineOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, t("row.edit-details", "Edit name & tags\u2026"))),
|
|
4962
|
+
onDuplicate && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onDuplicate) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.ContentCopyOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, t("row.duplicate", "Duplicate"))),
|
|
4963
|
+
onDuplicateAsTemplate && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onDuplicateAsTemplate) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.LibraryAddOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, t("row.duplicate-as-template", "Duplicate as template"))),
|
|
4964
|
+
onPromote && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onPromote) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.FileUploadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, t("row.promote", "Promote to sample"))),
|
|
4965
|
+
onDemote && /* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { onClick: runAction(onDemote) }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, null, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.FileDownloadOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, t("row.demote", "Demote to template"))),
|
|
4966
4966
|
onDelete && [
|
|
4967
4967
|
/* @__PURE__ */ React57__default.default.createElement(material.Divider, { key: "divider" }),
|
|
4968
|
-
/* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { key: "delete", onClick: runAction(onDelete), sx: { color: "error.main" } }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, { sx: { color: "error.main" } }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.DeleteOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, "Delete"))
|
|
4968
|
+
/* @__PURE__ */ React57__default.default.createElement(material.MenuItem, { key: "delete", onClick: runAction(onDelete), sx: { color: "error.main" } }, /* @__PURE__ */ React57__default.default.createElement(material.ListItemIcon, { sx: { color: "error.main" } }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.DeleteOutlined, { fontSize: "small" })), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, null, t("tune.delete", "Delete")))
|
|
4969
4969
|
]
|
|
4970
4970
|
))
|
|
4971
4971
|
);
|
|
@@ -5522,7 +5522,7 @@ function NewTemplatePickerDialog({
|
|
|
5522
5522
|
const [busy, setBusy] = React57.useState(false);
|
|
5523
5523
|
React57.useEffect(() => {
|
|
5524
5524
|
if (open) {
|
|
5525
|
-
setName(defaultName != null ? defaultName : kind === "sample" ? "New sample" : "New template");
|
|
5525
|
+
setName(defaultName != null ? defaultName : t(kind === "sample" ? "drawer.new-sample" : "drawer.new-template", kind === "sample" ? "New sample" : "New template"));
|
|
5526
5526
|
setSelectedStarter(null);
|
|
5527
5527
|
setError(null);
|
|
5528
5528
|
setBusy(false);
|
|
@@ -5530,9 +5530,9 @@ function NewTemplatePickerDialog({
|
|
|
5530
5530
|
}, [open, defaultName, kind]);
|
|
5531
5531
|
const validate = () => {
|
|
5532
5532
|
const trimmed = name.trim();
|
|
5533
|
-
if (!trimmed) return "Name is required";
|
|
5533
|
+
if (!trimmed) return t("picker.error-name-required", "Name is required");
|
|
5534
5534
|
if (existingSlugs.some((s) => s.toLowerCase() === trimmed.toLowerCase())) {
|
|
5535
|
-
return kind === "sample" ? "A sample with this name already exists" : "A template with this name already exists";
|
|
5535
|
+
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");
|
|
5536
5536
|
}
|
|
5537
5537
|
return null;
|
|
5538
5538
|
};
|
|
@@ -5551,7 +5551,7 @@ function NewTemplatePickerDialog({
|
|
|
5551
5551
|
}
|
|
5552
5552
|
});
|
|
5553
5553
|
const pickable = samples.filter((s) => s.id !== "empty-email");
|
|
5554
|
-
return /* @__PURE__ */ React57__default.default.createElement(material.Dialog, { open, onClose: busy ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57__default.default.createElement(material.DialogTitle, null, kind === "sample" ? "New sample" : "New template"), /* @__PURE__ */ React57__default.default.createElement(material.DialogContent, { dividers: true }, /* @__PURE__ */ React57__default.default.createElement(material.Typography, { variant: "subtitle2", sx: { mb: 1 } }, "Start from"), /* @__PURE__ */ React57__default.default.createElement(
|
|
5554
|
+
return /* @__PURE__ */ React57__default.default.createElement(material.Dialog, { open, onClose: busy ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57__default.default.createElement(material.DialogTitle, null, kind === "sample" ? t("picker.title-sample", "New sample") : t("picker.title-template", "New template")), /* @__PURE__ */ React57__default.default.createElement(material.DialogContent, { dividers: true }, /* @__PURE__ */ React57__default.default.createElement(material.Typography, { variant: "subtitle2", sx: { mb: 1 } }, t("picker.start-from", "Start from")), /* @__PURE__ */ React57__default.default.createElement(
|
|
5555
5555
|
material.List,
|
|
5556
5556
|
{
|
|
5557
5557
|
dense: true,
|
|
@@ -5571,7 +5571,7 @@ function NewTemplatePickerDialog({
|
|
|
5571
5571
|
selected: selectedStarter === null,
|
|
5572
5572
|
onClick: () => setSelectedStarter(null)
|
|
5573
5573
|
},
|
|
5574
|
-
/* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.InsertDriveFileOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, { primary: "Blank", secondary: "Start from an empty email" }))
|
|
5574
|
+
/* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { display: "flex", alignItems: "center", gap: 1.5, flex: 1 } }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.InsertDriveFileOutlined, { fontSize: "small", sx: { color: "text.secondary" } }), /* @__PURE__ */ React57__default.default.createElement(material.ListItemText, { primary: t("picker.blank-title", "Blank"), secondary: t("picker.blank-desc", "Start from an empty email") }))
|
|
5575
5575
|
),
|
|
5576
5576
|
pickable.map((s) => /* @__PURE__ */ React57__default.default.createElement(
|
|
5577
5577
|
material.ListItemButton,
|
|
@@ -5588,8 +5588,9 @@ function NewTemplatePickerDialog({
|
|
|
5588
5588
|
autoFocus: true,
|
|
5589
5589
|
fullWidth: true,
|
|
5590
5590
|
size: "small",
|
|
5591
|
-
label: "Name",
|
|
5591
|
+
label: t("rename.name-label", "Name"),
|
|
5592
5592
|
value: name,
|
|
5593
|
+
onFocus: (e) => e.currentTarget.select(),
|
|
5593
5594
|
onChange: (e) => {
|
|
5594
5595
|
setName(e.target.value);
|
|
5595
5596
|
if (error) setError(null);
|
|
@@ -5601,7 +5602,7 @@ function NewTemplatePickerDialog({
|
|
|
5601
5602
|
helperText: error != null ? error : " ",
|
|
5602
5603
|
disabled: busy
|
|
5603
5604
|
}
|
|
5604
|
-
)), /* @__PURE__ */ React57__default.default.createElement(material.DialogActions, null, /* @__PURE__ */ React57__default.default.createElement(material.Button, { onClick: onClose, disabled: busy }, "Cancel"), /* @__PURE__ */ React57__default.default.createElement(material.Button, { variant: "contained", onClick: handleCreate, disabled: busy }, busy ? "Creating\u2026" :
|
|
5605
|
+
)), /* @__PURE__ */ React57__default.default.createElement(material.DialogActions, null, /* @__PURE__ */ React57__default.default.createElement(material.Button, { onClick: onClose, disabled: busy }, t("common.cancel", "Cancel")), /* @__PURE__ */ React57__default.default.createElement(material.Button, { 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"))));
|
|
5605
5606
|
}
|
|
5606
5607
|
function RenameDialog({
|
|
5607
5608
|
open,
|
|
@@ -5640,12 +5641,12 @@ function RenameDialog({
|
|
|
5640
5641
|
const handleSubmit = () => __async(null, null, function* () {
|
|
5641
5642
|
const trimmedSlug = slug.trim();
|
|
5642
5643
|
if (!trimmedSlug) {
|
|
5643
|
-
setError("Please enter a name");
|
|
5644
|
+
setError(t("rename.error-empty", "Please enter a name"));
|
|
5644
5645
|
return;
|
|
5645
5646
|
}
|
|
5646
5647
|
const slugChanged = trimmedSlug !== currentSlug;
|
|
5647
5648
|
if (slugChanged && existingSlugs.some((s) => s.toLowerCase() === trimmedSlug.toLowerCase())) {
|
|
5648
|
-
setError("A template with this name already exists");
|
|
5649
|
+
setError(t("rename.error-taken", "A template with this name already exists"));
|
|
5649
5650
|
return;
|
|
5650
5651
|
}
|
|
5651
5652
|
if (!slugChanged && tagsUnchanged) {
|
|
@@ -5658,17 +5659,17 @@ function RenameDialog({
|
|
|
5658
5659
|
onClose();
|
|
5659
5660
|
} catch (e) {
|
|
5660
5661
|
console.error("Error updating template details:", e);
|
|
5661
|
-
setError("Failed to update template details");
|
|
5662
|
+
setError(t("rename.error-generic", "Failed to update template details"));
|
|
5662
5663
|
} finally {
|
|
5663
5664
|
setSubmitting(false);
|
|
5664
5665
|
}
|
|
5665
5666
|
});
|
|
5666
|
-
return /* @__PURE__ */ React57__default.default.createElement(material.Dialog, { open, onClose: submitting ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57__default.default.createElement(material.DialogTitle, null, "Edit details"), /* @__PURE__ */ React57__default.default.createElement(material.DialogContent, null, /* @__PURE__ */ React57__default.default.createElement(
|
|
5667
|
+
return /* @__PURE__ */ React57__default.default.createElement(material.Dialog, { open, onClose: submitting ? void 0 : onClose, maxWidth: "sm", fullWidth: true }, /* @__PURE__ */ React57__default.default.createElement(material.DialogTitle, null, t("rename.title", "Edit details")), /* @__PURE__ */ React57__default.default.createElement(material.DialogContent, null, /* @__PURE__ */ React57__default.default.createElement(
|
|
5667
5668
|
material.TextField,
|
|
5668
5669
|
{
|
|
5669
5670
|
autoFocus: true,
|
|
5670
5671
|
margin: "dense",
|
|
5671
|
-
label: "Name",
|
|
5672
|
+
label: t("rename.name-label", "Name"),
|
|
5672
5673
|
fullWidth: true,
|
|
5673
5674
|
variant: "outlined",
|
|
5674
5675
|
value: slug,
|
|
@@ -5683,7 +5684,7 @@ function RenameDialog({
|
|
|
5683
5684
|
if (e.key === "Enter" && !submitting) handleSubmit();
|
|
5684
5685
|
}
|
|
5685
5686
|
}
|
|
5686
|
-
), /* @__PURE__ */ React57__default.default.createElement(material.Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 1, mb: 0.5 } }, "Tags"), tags.length > 0 ? /* @__PURE__ */ React57__default.default.createElement(material.Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React57__default.default.createElement(
|
|
5687
|
+
), /* @__PURE__ */ React57__default.default.createElement(material.Typography, { variant: "caption", sx: { color: "text.secondary", display: "block", mt: 1, mb: 0.5 } }, t("rename.tags", "Tags")), tags.length > 0 ? /* @__PURE__ */ React57__default.default.createElement(material.Stack, { direction: "row", spacing: 0.5, sx: { flexWrap: "wrap", gap: 0.5, mb: 1 } }, tags.map((tag) => /* @__PURE__ */ React57__default.default.createElement(
|
|
5687
5688
|
material.Chip,
|
|
5688
5689
|
{
|
|
5689
5690
|
key: tag,
|
|
@@ -5691,12 +5692,12 @@ function RenameDialog({
|
|
|
5691
5692
|
size: "small",
|
|
5692
5693
|
onDelete: submitting ? void 0 : () => removeTag(tag)
|
|
5693
5694
|
}
|
|
5694
|
-
))) : /* @__PURE__ */ React57__default.default.createElement(material.Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, "
|
|
5695
|
+
))) : /* @__PURE__ */ React57__default.default.createElement(material.Typography, { variant: "caption", sx: { color: "text.disabled", display: "block", mb: 1 } }, t("rename.no-tags", "No tags yet.")), /* @__PURE__ */ React57__default.default.createElement(
|
|
5695
5696
|
material.TextField,
|
|
5696
5697
|
{
|
|
5697
5698
|
size: "small",
|
|
5698
5699
|
fullWidth: true,
|
|
5699
|
-
placeholder: "Add a tag and press Enter",
|
|
5700
|
+
placeholder: t("rename.tag-placeholder", "Add a tag and press Enter"),
|
|
5700
5701
|
value: tagInput,
|
|
5701
5702
|
onChange: (e) => setTagInput(e.target.value),
|
|
5702
5703
|
disabled: submitting,
|
|
@@ -5719,18 +5720,18 @@ function RenameDialog({
|
|
|
5719
5720
|
startIcon: /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.AddOutlined, { fontSize: "small" }),
|
|
5720
5721
|
sx: { textTransform: "none" }
|
|
5721
5722
|
},
|
|
5722
|
-
"Add"
|
|
5723
|
+
t("common.add", "Add")
|
|
5723
5724
|
))
|
|
5724
5725
|
}
|
|
5725
5726
|
}
|
|
5726
|
-
), /* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { minHeight: 8 } })), /* @__PURE__ */ React57__default.default.createElement(material.DialogActions, null, /* @__PURE__ */ React57__default.default.createElement(material.Button, { onClick: onClose, disabled: submitting }, "Cancel"), /* @__PURE__ */ React57__default.default.createElement(
|
|
5727
|
+
), /* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { minHeight: 8 } })), /* @__PURE__ */ React57__default.default.createElement(material.DialogActions, null, /* @__PURE__ */ React57__default.default.createElement(material.Button, { onClick: onClose, disabled: submitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React57__default.default.createElement(
|
|
5727
5728
|
material.Button,
|
|
5728
5729
|
{
|
|
5729
5730
|
onClick: handleSubmit,
|
|
5730
5731
|
variant: "contained",
|
|
5731
5732
|
disabled: !slug.trim() || submitting
|
|
5732
5733
|
},
|
|
5733
|
-
submitting ? "Saving\u2026" : "Save"
|
|
5734
|
+
submitting ? t("common.saving", "Saving\u2026") : t("common.save", "Save")
|
|
5734
5735
|
)));
|
|
5735
5736
|
}
|
|
5736
5737
|
function SaveTemplateDialog({
|
|
@@ -5739,7 +5740,8 @@ function SaveTemplateDialog({
|
|
|
5739
5740
|
onSave,
|
|
5740
5741
|
onNameChange,
|
|
5741
5742
|
defaultName = "",
|
|
5742
|
-
error: externalError = null
|
|
5743
|
+
error: externalError = null,
|
|
5744
|
+
mode = "save-as"
|
|
5743
5745
|
}) {
|
|
5744
5746
|
const [templateName, setTemplateName] = React57.useState(defaultName);
|
|
5745
5747
|
const [internalError, setInternalError] = React57.useState("");
|
|
@@ -5763,7 +5765,7 @@ function SaveTemplateDialog({
|
|
|
5763
5765
|
};
|
|
5764
5766
|
const handleSave = () => __async(null, null, function* () {
|
|
5765
5767
|
if (!templateName.trim()) {
|
|
5766
|
-
setInternalError("Please enter a template name");
|
|
5768
|
+
setInternalError(t("save-dialog.error-empty-name", "Please enter a template name"));
|
|
5767
5769
|
return;
|
|
5768
5770
|
}
|
|
5769
5771
|
setIsSubmitting(true);
|
|
@@ -5800,19 +5802,20 @@ function SaveTemplateDialog({
|
|
|
5800
5802
|
maxWidth: "sm",
|
|
5801
5803
|
fullWidth: true
|
|
5802
5804
|
},
|
|
5803
|
-
/* @__PURE__ */ React57__default.default.createElement(material.DialogTitle, null, "Save
|
|
5805
|
+
/* @__PURE__ */ React57__default.default.createElement(material.DialogTitle, null, mode === "new" ? t("save-dialog.title-new", "Create a new template") : t("save-dialog.title", "Save as a new template")),
|
|
5804
5806
|
/* @__PURE__ */ React57__default.default.createElement(material.DialogContent, null, /* @__PURE__ */ React57__default.default.createElement(material.Box, { sx: { pt: 1 } }, /* @__PURE__ */ React57__default.default.createElement(
|
|
5805
5807
|
material.TextField,
|
|
5806
5808
|
{
|
|
5807
5809
|
autoFocus: true,
|
|
5808
5810
|
margin: "dense",
|
|
5809
5811
|
id: "template-name",
|
|
5810
|
-
label: "Template Name",
|
|
5812
|
+
label: t("save-dialog.name-label", "Template Name"),
|
|
5811
5813
|
type: "text",
|
|
5812
5814
|
fullWidth: true,
|
|
5813
5815
|
variant: "outlined",
|
|
5814
5816
|
value: templateName,
|
|
5815
5817
|
onChange: handleNameChange,
|
|
5818
|
+
onFocus: (e) => e.currentTarget.select(),
|
|
5816
5819
|
error: !!displayError,
|
|
5817
5820
|
helperText: displayError,
|
|
5818
5821
|
onKeyPress: (e) => {
|
|
@@ -5823,7 +5826,7 @@ function SaveTemplateDialog({
|
|
|
5823
5826
|
disabled: isSubmitting
|
|
5824
5827
|
}
|
|
5825
5828
|
))),
|
|
5826
|
-
/* @__PURE__ */ React57__default.default.createElement(material.DialogActions, null, /* @__PURE__ */ React57__default.default.createElement(material.Button, { onClick: handleCancel, disabled: isSubmitting }, "Cancel"), /* @__PURE__ */ React57__default.default.createElement(
|
|
5829
|
+
/* @__PURE__ */ React57__default.default.createElement(material.DialogActions, null, /* @__PURE__ */ React57__default.default.createElement(material.Button, { onClick: handleCancel, disabled: isSubmitting }, t("common.cancel", "Cancel")), /* @__PURE__ */ React57__default.default.createElement(
|
|
5827
5830
|
material.Button,
|
|
5828
5831
|
{
|
|
5829
5832
|
onClick: handleSave,
|
|
@@ -5831,7 +5834,7 @@ function SaveTemplateDialog({
|
|
|
5831
5834
|
color: "primary",
|
|
5832
5835
|
disabled: !templateName.trim() || !!displayError || isSubmitting
|
|
5833
5836
|
},
|
|
5834
|
-
isSubmitting ? "Saving..." : "
|
|
5837
|
+
isSubmitting ? t("save-dialog.saving", "Saving...") : mode === "new" ? t("save-dialog.create", "Create") : t("save-dialog.save", "Save")
|
|
5835
5838
|
))
|
|
5836
5839
|
);
|
|
5837
5840
|
}
|
|
@@ -5853,12 +5856,12 @@ var empty_email_message_default = EMPTY_EMAIL_MESSAGE;
|
|
|
5853
5856
|
|
|
5854
5857
|
// src/app/templates-drawer/index.tsx
|
|
5855
5858
|
var SAMPLES_DRAWER_WIDTH = 320;
|
|
5856
|
-
var
|
|
5859
|
+
var buildEmptyTemplate = () => ({
|
|
5857
5860
|
id: "empty-email",
|
|
5858
|
-
slug: "Empty email",
|
|
5861
|
+
slug: t("empty.slug", "Empty email"),
|
|
5859
5862
|
kind: "sample",
|
|
5860
|
-
description: "A blank email template to start from scratch"
|
|
5861
|
-
};
|
|
5863
|
+
description: t("empty.description", "A blank email template to start from scratch")
|
|
5864
|
+
});
|
|
5862
5865
|
var SORT_OPTIONS = [
|
|
5863
5866
|
{ value: "updatedAt", labelKey: "sort.last-updated", fallback: "Last updated" },
|
|
5864
5867
|
{ value: "createdAt", labelKey: "sort.recently-created", fallback: "Recently created" },
|
|
@@ -5893,7 +5896,7 @@ function SamplesDrawer({
|
|
|
5893
5896
|
const samplesDrawerOpen = useSamplesDrawerOpen();
|
|
5894
5897
|
const { setCurrentTemplate, loadTemplate: ctxLoadTemplate } = useEmailEditor();
|
|
5895
5898
|
const { showMessage } = useSnackbar();
|
|
5896
|
-
const [samples, setSamples] = React57.useState([
|
|
5899
|
+
const [samples, setSamples] = React57.useState([buildEmptyTemplate()]);
|
|
5897
5900
|
const [templates, setTemplates] = React57.useState([]);
|
|
5898
5901
|
const [loadingSamples, setLoadingSamples] = React57.useState(false);
|
|
5899
5902
|
const [loadingTemplates, setLoadingTemplates] = React57.useState(false);
|
|
@@ -5922,10 +5925,10 @@ function SamplesDrawer({
|
|
|
5922
5925
|
loadSamples().then((results) => {
|
|
5923
5926
|
const normalized = withKind(results, "sample");
|
|
5924
5927
|
const existingEmpty = normalized.find((s) => s.id === "empty-email");
|
|
5925
|
-
setSamples(existingEmpty ? normalized : [
|
|
5928
|
+
setSamples(existingEmpty ? normalized : [buildEmptyTemplate(), ...normalized]);
|
|
5926
5929
|
}).catch((error) => {
|
|
5927
5930
|
console.error("Failed to load samples:", error);
|
|
5928
|
-
setSamples([
|
|
5931
|
+
setSamples([buildEmptyTemplate()]);
|
|
5929
5932
|
}).finally(() => setLoadingSamples(false));
|
|
5930
5933
|
}, [enabled, samplesDrawerOpen, loadSamples]);
|
|
5931
5934
|
const refreshTemplates = () => __async(null, null, function* () {
|
|
@@ -8502,31 +8505,31 @@ function MainTabsGroup() {
|
|
|
8502
8505
|
material.Tab,
|
|
8503
8506
|
{
|
|
8504
8507
|
value: "editor",
|
|
8505
|
-
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "Edit" }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.EditOutlined, { fontSize: "small" }))
|
|
8508
|
+
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("tab.edit", "Edit") }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.EditOutlined, { fontSize: "small" }))
|
|
8506
8509
|
}
|
|
8507
8510
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
8508
8511
|
material.Tab,
|
|
8509
8512
|
{
|
|
8510
8513
|
value: "preview",
|
|
8511
|
-
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "Preview" }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.PreviewOutlined, { fontSize: "small" }))
|
|
8514
|
+
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("tab.preview", "Preview") }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.PreviewOutlined, { fontSize: "small" }))
|
|
8512
8515
|
}
|
|
8513
8516
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
8514
8517
|
material.Tab,
|
|
8515
8518
|
{
|
|
8516
8519
|
value: "html",
|
|
8517
|
-
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "HTML output" }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.CodeOutlined, { fontSize: "small" }))
|
|
8520
|
+
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("tab.html-output", "HTML output") }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.CodeOutlined, { fontSize: "small" }))
|
|
8518
8521
|
}
|
|
8519
8522
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
8520
8523
|
material.Tab,
|
|
8521
8524
|
{
|
|
8522
8525
|
value: "text",
|
|
8523
|
-
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "Plain text output" }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.SubjectOutlined, { fontSize: "small" }))
|
|
8526
|
+
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("tab.text-output", "Plain text output") }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.SubjectOutlined, { fontSize: "small" }))
|
|
8524
8527
|
}
|
|
8525
8528
|
), /* @__PURE__ */ React57__default.default.createElement(
|
|
8526
8529
|
material.Tab,
|
|
8527
8530
|
{
|
|
8528
8531
|
value: "json",
|
|
8529
|
-
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "JSON output" }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.DataObjectOutlined, { fontSize: "small" }))
|
|
8532
|
+
label: /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("tab.json-output", "JSON output") }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.DataObjectOutlined, { fontSize: "small" }))
|
|
8530
8533
|
}
|
|
8531
8534
|
));
|
|
8532
8535
|
}
|
|
@@ -8671,6 +8674,7 @@ function SaveBar({ loadTemplates, saveAs }) {
|
|
|
8671
8674
|
SaveTemplateDialog,
|
|
8672
8675
|
{
|
|
8673
8676
|
open: dialogMode !== null,
|
|
8677
|
+
mode: dialogMode === "new-blank" ? "new" : "save-as",
|
|
8674
8678
|
onClose: () => {
|
|
8675
8679
|
setDialogMode(null);
|
|
8676
8680
|
setNameError(null);
|
|
@@ -9038,7 +9042,7 @@ function TemplatePanel2({ loadTemplates, saveAs, samplesDrawerEnabled = true })
|
|
|
9038
9042
|
alignItems: "center"
|
|
9039
9043
|
},
|
|
9040
9044
|
samplesDrawerEnabled && /* @__PURE__ */ React57__default.default.createElement(ToggleSamplesPanelButton, null),
|
|
9041
|
-
/* @__PURE__ */ React57__default.default.createElement(material.Stack, { px: 2, direction: "row", gap: 2, width: "100%", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React57__default.default.createElement(material.Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React57__default.default.createElement(MainTabsGroup, null)), /* @__PURE__ */ React57__default.default.createElement(material.Stack, { direction: "row", spacing: 2, alignItems: "center" }, selectedMainTab === "editor" && /* @__PURE__ */ React57__default.default.createElement(UndoRedoButtons, null), /* @__PURE__ */ React57__default.default.createElement(material.ToggleButtonGroup, { value: selectedScreenSize, exclusive: true, size: "small", onChange: handleScreenSizeChange }, /* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "desktop" }, /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "Desktop view" }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.MonitorOutlined, { fontSize: "small" }))), /* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "mobile" }, /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: "Mobile view" }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.PhoneIphoneOutlined, { fontSize: "small" })))))),
|
|
9045
|
+
/* @__PURE__ */ React57__default.default.createElement(material.Stack, { px: 2, direction: "row", gap: 2, width: "100%", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ React57__default.default.createElement(material.Stack, { direction: "row", spacing: 2 }, /* @__PURE__ */ React57__default.default.createElement(MainTabsGroup, null)), /* @__PURE__ */ React57__default.default.createElement(material.Stack, { direction: "row", spacing: 2, alignItems: "center" }, selectedMainTab === "editor" && /* @__PURE__ */ React57__default.default.createElement(UndoRedoButtons, null), /* @__PURE__ */ React57__default.default.createElement(material.ToggleButtonGroup, { value: selectedScreenSize, exclusive: true, size: "small", onChange: handleScreenSizeChange }, /* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "desktop" }, /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("canvas.desktop-view", "Desktop view") }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.MonitorOutlined, { fontSize: "small" }))), /* @__PURE__ */ React57__default.default.createElement(material.ToggleButton, { value: "mobile" }, /* @__PURE__ */ React57__default.default.createElement(material.Tooltip, { title: t("canvas.mobile-view", "Mobile view") }, /* @__PURE__ */ React57__default.default.createElement(iconsMaterial.PhoneIphoneOutlined, { fontSize: "small" })))))),
|
|
9042
9046
|
/* @__PURE__ */ React57__default.default.createElement(ToggleInspectorPanelButton, null)
|
|
9043
9047
|
), selectedMainTab === "editor" && /* @__PURE__ */ React57__default.default.createElement(SubjectInput, null), selectedMainTab === "preview" && /* @__PURE__ */ React57__default.default.createElement(SubjectPreview, null), /* @__PURE__ */ React57__default.default.createElement(ImageDropPasteHandler, { enabled: selectedMainTab === "editor" }, /* @__PURE__ */ React57__default.default.createElement(
|
|
9044
9048
|
material.Box,
|