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