@seliseblocks/mailcraft 0.1.0 → 0.2.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.
Files changed (69) hide show
  1. package/DOCS.md +240 -12
  2. package/README.md +11 -3
  3. package/README.md.txt +134 -0
  4. package/dist/mailcraft-editor.bundle.js +51 -39
  5. package/dist/mailcraft-editor.bundle.js.map +3 -3
  6. package/examples/templates/order-confirmed.html +80 -80
  7. package/examples/vanilla.html +242 -23
  8. package/package.json +7 -2
  9. package/src/core/assets.js +10 -15
  10. package/src/core/binder.js +120 -118
  11. package/src/core/blocks.js +14 -1
  12. package/src/core/css-cascade.js +117 -117
  13. package/src/core/editor-core.js +1530 -1492
  14. package/src/core/export.js +142 -55
  15. package/src/core/i18n/ar.js +219 -177
  16. package/src/core/i18n/bg.js +196 -152
  17. package/src/core/i18n/bn.js +218 -176
  18. package/src/core/i18n/ca.js +196 -152
  19. package/src/core/i18n/cs.js +196 -152
  20. package/src/core/i18n/da.js +196 -152
  21. package/src/core/i18n/de-CH.js +196 -152
  22. package/src/core/i18n/de.js +196 -152
  23. package/src/core/i18n/dz.js +221 -179
  24. package/src/core/i18n/el.js +196 -152
  25. package/src/core/i18n/en.js +3 -10
  26. package/src/core/i18n/es.js +196 -152
  27. package/src/core/i18n/et.js +196 -152
  28. package/src/core/i18n/fi.js +196 -152
  29. package/src/core/i18n/fr.js +196 -152
  30. package/src/core/i18n/hr.js +196 -152
  31. package/src/core/i18n/hu.js +196 -152
  32. package/src/core/i18n/index.js +83 -83
  33. package/src/core/i18n/it.js +196 -152
  34. package/src/core/i18n/lt.js +196 -152
  35. package/src/core/i18n/lv.js +196 -152
  36. package/src/core/i18n/nb.js +196 -152
  37. package/src/core/i18n/nl.js +196 -152
  38. package/src/core/i18n/pl.js +196 -152
  39. package/src/core/i18n/pt.js +196 -152
  40. package/src/core/i18n/ro.js +196 -152
  41. package/src/core/i18n/ru.js +196 -152
  42. package/src/core/i18n/sk.js +196 -152
  43. package/src/core/i18n/sl.js +196 -152
  44. package/src/core/i18n/sv.js +196 -152
  45. package/src/core/i18n/tables.js +50 -50
  46. package/src/core/i18n/tr.js +196 -152
  47. package/src/core/i18n/uk.js +196 -152
  48. package/src/core/icons.js +237 -235
  49. package/src/core/ids.js +1 -1
  50. package/src/core/import-html.js +1025 -959
  51. package/src/core/layout-style.js +100 -100
  52. package/src/core/parse.js +10 -10
  53. package/src/core/placeholder.js +15 -15
  54. package/src/core/sanitize.js +141 -141
  55. package/src/core/storage-limits.js +184 -184
  56. package/src/core/storage.js +85 -85
  57. package/src/core/theme.js +1 -1
  58. package/src/core/variables.js +11 -11
  59. package/src/index.js +9 -9
  60. package/src/mailcraft-editor.js +26 -14
  61. package/src/render/block-body.js +49 -6
  62. package/src/render/canvas.js +31 -2
  63. package/src/render/fields.js +602 -588
  64. package/src/render/focus-preserve.js +158 -158
  65. package/src/render/rte.js +241 -212
  66. package/src/render/screenshot.js +132 -132
  67. package/src/render/story.js +415 -415
  68. package/src/render/style.js +8 -0
  69. package/types/index.d.ts +419 -0
@@ -1,152 +1,196 @@
1
- /** Slovak (Slovenčina) — `sk`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
2
- export const SK = {
3
- 'action.undoHint': 'Späť — ⌘Z',
4
- 'action.redoHint': 'Znova — ⌘⇧Z',
5
- 'action.chromeToDark': 'Tmavý',
6
- 'action.chromeToLight': 'Svetlý',
7
- 'action.chromeHint': 'Motív editora svetlý / tmavý',
8
- 'action.aiCopy': 'Text',
9
- 'action.aiCopyHint': 'Napísať text pomocou AI',
10
- 'action.code': 'Kód',
11
- 'action.codeHint': 'Upraviť surové HTML so živým náhľadom',
12
- 'action.preview': 'Náhľad',
13
- 'action.export': 'Exportovať',
14
- 'device.desktop': 'Počítač',
15
- 'device.desktopHint': 'Šírka pre počítač',
16
- 'device.mobile': 'Mobil',
17
- 'device.mobileHint': 'Šírka pre mobil',
18
- 'device.dark': 'Tmavý',
19
- 'device.darkHint': 'Tmavý režim schránky',
20
- 'status.autosaveOn': 'automatické ukladanie zapnuté',
21
- 'status.saved': 'uložené {time}',
22
- 'status.saveFailed': 'neuložené úložisko je plné',
23
- 'canvas.meta': '{rows} riadkov · {blocks} blokov · {width}px',
24
- 'tab.design': 'Štýl',
25
- 'tab.designHint': 'Štylizovať výber',
26
- 'tab.blocks': 'Bloky',
27
- 'tab.blocksHint': 'Bloky obsahu a premenné',
28
- 'tab.rows': 'Sekcie',
29
- 'tab.rowsHint': 'Rozloženia sekcií a model plátna',
30
- 'tab.files': 'Súbory',
31
- 'tab.filesHint': 'Knižnica súborov',
32
- 'tab.layers': 'Štruktúra',
33
- 'tab.layersHint': 'Štruktúra dokumentu',
34
- 'tab.theme': 'Motív',
35
- 'tab.themeHint': 'Globálne štýly',
36
- 'tab.data': 'Prem.',
37
- 'tab.dataHint': 'Premenné poskytnuté vaším kódom',
38
- 'inspector.blockProperties': 'Vlastnosti bloku',
39
- 'inspector.sectionProperties': 'Vlastnosti sekcie',
40
- 'inspector.title': 'Inšpektor',
41
- 'inspector.sectionLabel': 'Sekcia',
42
- 'inspector.nothingSelected': 'Nič nie je vybraté',
43
- 'action.duplicateHint': 'Duplikovať — ⌘D',
44
- 'action.deleteHint': 'Odstrániť ',
45
- 'inspector.emptyBody':
46
- 'Vyberte riadok alebo blok na plátne a štylizujte ho tu. Presuňte bloky z karty <strong style="color: var(--ed-text); font-weight: 600;">Bloky</strong>; dvojklikom na text ho upravíte priamo na mieste.',
47
- 'inspector.shortcuts': 'Skratky',
48
- 'shortcut.undoRedo': '⌘Z / ⌘⇧Z späť, znova',
49
- 'shortcut.duplicate': '⌘D — duplikovať výber',
50
- 'shortcut.delete': 'odstrániť výber',
51
- 'shortcut.export': '⌘Eexportovať HTML',
52
- 'shortcut.escape': 'ESCzrušiť výber, zavrieť',
53
- 'blocks.dragHint': 'Presuňte na plátno',
54
- 'blocks.count': '{count} blokov',
55
- 'rows.sectionLayouts': 'Rozloženia sekcií',
56
- 'rows.customMarkup': 'Vlastný kód',
57
- 'rows.htmlRowHint': 'Presuňte pre vloženie alebo kliknite pre pridanie — riadok na celú šírku, ktorý vyplníte surovým HTML',
58
- 'rows.rawHtmlSection': 'Sekcia so surovým HTML',
59
- 'rows.rawHtmlDesc': 'Sekcia na celú šírku, váš vlastný kód, stále presúvateľná',
60
- 'rows.canvasModel': 'Model plátna',
61
- 'rows.modeRowBased': 'Založené na riadkoch',
62
- 'rows.modeFreeStack': 'Voľný zásobník',
63
- 'rows.hintRows':
64
- 'Založené na sekciách: najprv umiestnite rozloženie, potom bloky do jeho stĺpcov — každá sekcia má vlastné pozadie, ohraničenie, nastavenia flex alebo mriežky.',
65
- 'rows.hintStack': 'Voľný zásobník: bez rozložení — každý umiestnený blok sa stane vlastnou sekciou na celú šírku, zoradenou postupne.',
66
- 'files.libraryCount': 'Knižnica{count} súborov',
67
- 'files.openManager': 'Otvoriť správcu súborov',
68
- 'files.dragToCanvas': 'Presuňte ľubovoľný súbor priamo na plátno a umiestnite ho ako obrazový blok.',
69
- 'layers.structure': 'Štruktúra',
70
- 'layers.sectionSingle': 'Sekcia',
71
- 'layers.sectionMulti': 'Sekcia · {count} stĺpcov',
72
- 'layers.blockCount': '{count} bl.',
73
- 'theme.globalStyles': 'Globálne štýly',
74
- 'vars.title': 'Premenné',
75
- 'vars.fromCode': '{count} z vášho kódu',
76
- 'vars.declaredNote': 'Deklarované vašou aplikáciou — plátno vždy zobrazuje token, nikdy hodnotu.',
77
- 'vars.filterPlaceholder': 'Filtrovať premenné…',
78
- 'vars.insertHint': 'Kliknite pre vloženie do vybraného textu, nadpisu alebo tlačidla',
79
- 'vars.insert': 'vložiť',
80
- 'vars.noMatch': 'Žiadna premenná nezodpovedá tomuto filtru.',
81
- 'vars.noneDeclared': 'Vaša aplikácia zatiaľ nedeklarovala žiadne premenné.',
82
- 'vars.rteHint': 'Pri úprave textu môžete premennú vybrať aj priamo z rozbaľovacej ponuky vloženého panela nástrojov.',
83
- 'modal.fileManager': 'Správca súborov',
84
- 'modal.assetsTitle': 'Zdroje',
85
- 'modal.replaceImage': 'Nahradiť obrázok',
86
- 'library.searchPlaceholder': 'Hľadať súbory…',
87
- 'action.upload': 'Nahrať',
88
- 'library.clickToPlace': 'Kliknite na súbor pre umiestnenie · alebo presuňte súbor na plátno',
89
- 'library.clickToReplace': 'Kliknite na súbor pre nahradenie vybraného obrázka',
90
- 'library.storageLabel': '{count} súborov · {size}',
91
- 'library.folders': 'Priečinky',
92
- 'library.dropHint': 'Sem presuňte obrázkové súbory na nahranie — alebo použite tlačidlo Nahrať.',
93
- 'library.deleteFileHint': 'Odstrániť súbor',
94
- 'library.del': 'ZMAZ',
95
- 'toast.assetDeleted': '{name} odstránený',
96
- 'modal.export': 'Exportovať',
97
- 'modal.exportTitle': 'HTML e-mailu založené na tabuľkách',
98
- 'export.copy': 'Kopírovať',
99
- 'export.copied': 'Skopírované',
100
- 'action.download': 'Stiahnuť',
101
- 'export.meta': '{kb} KB · tabuľky + vložené štýly · šírky bezpečné pre Outlook',
102
- 'modal.rawHtmlTitle': 'Surové HTML, živý náhľad',
103
- 'code.statusEdited': 'Zobrazenie kódu upravenénáhľad naživo, zatiaľ neaplikované',
104
- 'code.statusSynced': 'Zobrazenie kódu synchronizované s plátnom',
105
- 'action.reload': 'Znova načítať',
106
- 'action.reloadHint': 'Znova načítať zdroj z plátna',
107
- 'action.applyToCanvas': 'Použiť na plátno',
108
- 'action.applyToCanvasHint': 'Znova rozobrať zdroj na upraviteľné riadky',
109
- 'action.closeWithoutApplyingHint': 'Zavrieť bez použitia',
110
- 'code.source': 'Zdroj',
111
- 'code.livePreview': 'Živý náhľad',
112
- 'code.liveHtmlPreviewTitle': 'Živý náhľad HTML',
113
- 'code.applyNote':
114
- 'Použitie rozoberie každý riadok tabuľky najvyššej úrovne na riadok plátna, ktorý možno stále vybrať, preusporiadať a odstrániť — ručne písaný kód proces prežije bez zmeny.',
115
- 'code.meta': '{kb} KB · {lines} riadkov',
116
- 'toast.sourceReloaded': 'Zdroj znova načítaný z plátna',
117
- 'toast.sourceAppliedOne': 'Zdroj použitý — 1 riadok na plátne',
118
- 'toast.sourceAppliedMany': 'Zdroj použitý — {rows} riadkov na plátne',
119
- 'toast.parseError': 'Toto HTML sa nepodarilo spracovať',
120
- 'modal.copyAssist': 'Asistent pre text',
121
- 'modal.draftCopyTitle': 'Napísať text pre túto kampaň',
122
- 'ai.goal': 'Cieľ',
123
- 'ai.tone': 'Tón',
124
- 'ai.briefLabel': 'O čom je tento e-mail?',
125
- 'ai.briefPlaceholder': 'napr. Jesenná kolekcia, 15 % pre odberateľov, doprava zdarma nad 150 €',
126
- 'ai.generate': 'Vygenerovať text',
127
- 'ai.writing': 'Píše sa…',
128
- 'ai.kindHeadline': 'Nadpis',
129
- 'ai.kindBody': 'Hlavný text',
130
- 'ai.kindButton': 'Text tlačidla',
131
- 'ai.actionInsertHeading': 'Vložiť ako nadpis',
132
- 'ai.actionInsertText': 'Vložiť ako textový blok',
133
- 'ai.actionInsertButton': 'Vložiť ako tlačidlo',
134
- 'toast.headingAdded': 'Nadpis pridaný',
135
- 'toast.textBlockAdded': 'Textový blok pridaný',
136
- 'toast.buttonAdded': 'Tlačidlo pridané',
137
- 'preview.kickerMobile': 'Náhľadmobil 375px',
138
- 'preview.kickerDark': 'Náhľad tmavá schránka',
139
- 'preview.kickerDesktop': 'Náhľad počítač {width}px',
140
- 'action.close': 'Zavrieť',
141
- 'toast.duplicated': 'Duplikované',
142
- 'toast.fileUploadedOne': 'Nahraný 1 súbor',
143
- 'toast.fileUploadedMany': 'Nahratých súborov: {count}',
144
- 'toast.imageReplaced': 'Obrázok nahradený',
145
- 'toast.imageAdded': 'Obrázok pridaný na plátno',
146
- 'toast.htmlCopied': 'HTML skopírované do schránky',
147
- 'toast.templateLoaded': '{name} načítané',
148
- 'toast.snippetDefaultLabel': 'Úryvok',
149
- 'toast.snippetInserted': '{name} vložené',
150
- 'toast.snippetCopied': '{name} skopírované — vyberte textový blok na vloženie',
151
- };
152
-
1
+ /** Slovak (Slovenčina) — `sk`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
2
+ export const SK = {
3
+ 'action.undoHint': 'Späť — ⌘Z',
4
+ 'action.redoHint': 'Znova — ⌘⇧Z',
5
+ 'action.chromeToDark': 'Tmavý',
6
+ 'action.chromeToLight': 'Svetlý',
7
+ 'action.chromeHint': 'Motív editora svetlý / tmavý',
8
+ 'action.chromeHintToDark': 'Tmavý režim',
9
+ 'action.chromeHintToLight': 'Svetlý režim',
10
+ 'action.aiDraft': 'Návrh',
11
+ 'action.aiDraftHint': 'Napísať obsah e-mailu pomocou AI',
12
+ 'action.code': 'Kód',
13
+ 'action.codeHint': 'Upraviť surové HTML so živým náhľadom',
14
+ 'action.preview': 'Náhľad',
15
+ 'action.previewHint': 'Náhľad e-mailu',
16
+ 'action.export': 'Exportovať',
17
+ 'action.exportHint': 'Exportovať váš e-mail',
18
+ 'device.desktop': 'Počítač',
19
+ 'device.desktopHint': 'Šírka pre počítač',
20
+ 'device.mobile': 'Mobil',
21
+ 'device.mobileHint': 'Šírka pre mobil',
22
+ 'status.autosaveOn': 'automatické ukladanie zapnuté',
23
+ 'status.saved': 'uložené {time}',
24
+ 'status.saveFailed': 'neuložené — úložisko je plné',
25
+ 'canvas.meta': '{rows} riadkov · {blocks} blokov · {width}px',
26
+ 'tab.design': 'Štýl',
27
+ 'tab.designHint': 'Štylizovať výber',
28
+ 'tab.blocks': 'Bloky',
29
+ 'tab.blocksHint': 'Bloky obsahu a premenné',
30
+ 'tab.rows': 'Sekcie',
31
+ 'tab.rowsHint': 'Rozloženia sekcií a model plátna',
32
+ 'tab.files': 'Súbory',
33
+ 'tab.filesHint': 'Knižnica súborov',
34
+ 'tab.layers': 'Štruktúra',
35
+ 'tab.layersHint': 'Štruktúra dokumentu',
36
+ 'tab.settings': 'Nastavenia',
37
+ 'tab.settingsHint': 'Nastavenia e-mailu',
38
+ 'tab.data': 'Prem.',
39
+ 'tab.dataHint': 'Premenné poskytnuté vaším kódom',
40
+ 'inspector.blockProperties': 'Vlastnosti bloku',
41
+ 'inspector.sectionProperties': 'Vlastnosti sekcie',
42
+ 'inspector.title': 'Inšpektor',
43
+ 'inspector.sectionLabel': 'Sekcia',
44
+ 'inspector.nothingSelected': 'Nič nie je vybraté',
45
+ 'action.duplicateHint': 'Duplikovať — ⌘D',
46
+ 'action.deleteHint': 'Odstrániť ',
47
+ 'inspector.emptyBody':
48
+ 'Vyberte riadok alebo blok na plátne a štylizujte ho tu. Presuňte bloky z karty <strong style="color: var(--ed-text); font-weight: 600;">Bloky</strong>; dvojklikom na text ho upravíte priamo na mieste.',
49
+ 'inspector.shortcuts': 'Skratky',
50
+ 'shortcut.undoRedo': '⌘Z / ⌘⇧Z späť, znova',
51
+ 'shortcut.duplicate': '⌘Dduplikovať výber',
52
+ 'shortcut.delete': 'odstrániť výber',
53
+ 'shortcut.export': '⌘E exportovať HTML',
54
+ 'shortcut.escape': 'ESC — zrušiť výber, zavrieť',
55
+ 'blocks.dragHint': 'Presuňte na plátno',
56
+ 'blocks.count': '{count} blokov',
57
+ 'rows.sectionLayouts': 'Rozloženia sekcií',
58
+ 'rows.customMarkup': 'Vlastný kód',
59
+ 'rows.htmlRowHint': 'Presuňte pre vloženie alebo kliknite pre pridanie — riadok na celú šírku, ktorý vyplníte surovým HTML',
60
+ 'rows.rawHtmlSection': 'Sekcia so surovým HTML',
61
+ 'rows.rawHtmlDesc': 'Sekcia na celú šírku, váš vlastný kód, stále presúvateľná',
62
+ 'rows.canvasModel': 'Model plátna',
63
+ 'rows.modeRowBased': 'Založené na riadkoch',
64
+ 'rows.modeFreeStack': 'Voľný zásobník',
65
+ 'rows.hintRows':
66
+ 'Založené na sekciách: najprv umiestnite rozloženie, potom bloky do jeho stĺpcov každá sekcia má vlastné pozadie, ohraničenie, nastavenia flex alebo mriežky.',
67
+ 'rows.hintStack': 'Voľný zásobník: bez rozložení — každý umiestnený blok sa stane vlastnou sekciou na celú šírku, zoradenou postupne.',
68
+ 'files.libraryCount': 'Knižnica {count} súborov',
69
+ 'files.openManager': 'Otvoriť správcu súborov',
70
+ 'files.dragToCanvas': 'Presuňte ľubovoľný súbor priamo na plátno a umiestnite ho ako obrazový blok.',
71
+ 'layers.structure': 'Štruktúra',
72
+ 'layers.sectionSingle': 'Sekcia',
73
+ 'layers.sectionMulti': 'Sekcia · {count} stĺpcov',
74
+ 'layers.column': 'Stĺpec {index}',
75
+ 'layers.blockCount': '{count} bl.',
76
+ 'vars.title': 'Premenné',
77
+ 'vars.fromCode': '{count} z vášho kódu',
78
+ 'vars.declaredNote': 'Deklarované vašou aplikáciou plátno vždy zobrazuje token, nikdy hodnotu.',
79
+ 'vars.filterPlaceholder': 'Filtrovať premenné…',
80
+ 'vars.insertHint': 'Kliknite pre vloženie do vybraného textu, nadpisu alebo tlačidla',
81
+ 'vars.insert': 'vložiť',
82
+ 'vars.noMatch': 'Žiadna premenná nezodpovedá tomuto filtru.',
83
+ 'vars.noneDeclared': 'Vaša aplikácia zatiaľ nedeklarovala žiadne premenné.',
84
+ 'vars.rteHint': 'Pri úprave textu môžete premennú vybrať aj priamo z rozbaľovacej ponuky vloženého panela nástrojov.',
85
+ 'modal.fileManager': 'Správca súborov',
86
+ 'modal.assetsTitle': 'Zdroje',
87
+ 'modal.replaceImage': 'Nahradiť obrázok',
88
+ 'library.searchPlaceholder': 'Hľadať súbory…',
89
+ 'action.upload': 'Nahrať',
90
+ 'library.clickToPlace': 'Kliknite na súbor pre umiestnenie · alebo presuňte súbor na plátno',
91
+ 'library.clickToReplace': 'Kliknite na súbor pre nahradenie vybraného obrázka',
92
+ 'library.storageLabel': '{count} súborov · {size}',
93
+ 'library.folders': 'Priečinky',
94
+ 'library.dropHint': 'Sem presuňte obrázkové súbory na nahranie — alebo použite tlačidlo Nahrať.',
95
+ 'library.deleteFileHint': 'Odstrániť súbor',
96
+ 'library.del': 'ZMAZ',
97
+ 'toast.assetDeleted': '{name} odstránený',
98
+ 'library.allFiles': 'Všetky súbory',
99
+ 'library.loadMore': 'Načítať ďalšie',
100
+ 'library.empty': 'Zatiaľ tu nie sú žiadne súbory.',
101
+ 'storage.loading': 'Načítavanie súborov…',
102
+ 'storage.uploading': 'Nahrávanie {count}…',
103
+ 'storage.errLoadFailed': 'Knižnicu súborov sa nepodarilo načítať {reason}',
104
+ 'storage.errNoLimits': 'Nahrávanie je vypnuté: táto aplikácia nenastavila žiadne limity nahrávania.',
105
+ 'storage.errNoAccept': 'Nahrávanie je vypnuté: nebol povolený žiadny formát súboru.',
106
+ 'storage.errNoMaxBytes': 'Nahrávanie je vypnuté: nie je nastavená maximálna veľkosť súboru.',
107
+ 'storage.errTooLarge': '{name} {size} — limit je {max}.',
108
+ 'storage.errFormat': '{name} je súbor typu {type}, ktorý tu nie je povolený.',
109
+ 'storage.errSvg': '{name} je SVG, ktoré táto aplikácia neprijíma.',
110
+ 'storage.errDimensions': '{name} má {w}×{ht}px — limit je {maxW}×{maxH}px.',
111
+ 'storage.errTooMany': 'Naraz možno nahrať len {max} súborov.',
112
+ 'storage.errUnreadable': '{name} nie je čitateľný obrázok.',
113
+ 'storage.errUploadFailed': '{name} sa nepodarilo nahrať — {reason}',
114
+ 'storage.errDeleteFailed': '{name} sa nepodarilo odstrániť — {reason}',
115
+ 'modal.export': 'Exportovať',
116
+ 'modal.exportTitle': 'HTML e-mailu založené na tabuľkách',
117
+ 'export.copy': 'Kopírovať',
118
+ 'export.copied': 'Skopírované',
119
+ 'action.download': 'Stiahnuť',
120
+ 'export.meta': '{kb} KB · tabuľky + vložené štýly · šírky bezpečné pre Outlook',
121
+ 'modal.rawHtmlTitle': 'Surové HTML, živý náhľad',
122
+ 'code.statusEdited': 'Zobrazenie kódu — upravené — náhľad naživo, zatiaľ neaplikované',
123
+ 'code.statusSynced': 'Zobrazenie kódu — synchronizované s plátnom',
124
+ 'action.reload': 'Znova načítať',
125
+ 'action.reloadHint': 'Znova načítať zdroj z plátna',
126
+ 'action.applyToCanvas': 'Použiť na plátno',
127
+ 'action.applyToCanvasHint': 'Znova rozobrať zdroj na upraviteľné riadky',
128
+ 'action.closeWithoutApplyingHint': 'Zavrieť bez použitia',
129
+ 'code.source': 'Zdroj',
130
+ 'code.livePreview': 'Živý náhľad',
131
+ 'code.liveHtmlPreviewTitle': 'Živý náhľad HTML',
132
+ 'code.applyNote':
133
+ 'Použitie rozoberie každý riadok tabuľky najvyššej úrovne na riadok plátna, ktorý možno stále vybrať, preusporiadať a odstrániť — ručne písaný kód proces prežije bez zmeny.',
134
+ 'code.meta': '{kb} KB · {lines} riadkov',
135
+ 'toast.sourceReloaded': 'Zdroj znova načítaný z plátna',
136
+ 'toast.sourceAppliedOne': 'Zdroj použitý — 1 riadok na plátne',
137
+ 'toast.sourceAppliedMany': 'Zdroj použitý {rows} riadkov na plátne',
138
+ 'toast.parseError': 'Toto HTML sa nepodarilo spracovať',
139
+ 'modal.aiDraft': 'Asistent písania s AI',
140
+ 'modal.aiDraftTitle': 'Napíšte svoj e-mail pomocou AI',
141
+ 'ai.disclosure': 'AI vytvára návrhy podľa vášho zadania. Pred odoslaním výsledok skontrolujte a upravte.',
142
+ 'ai.goal': 'Cieľ',
143
+ 'ai.tone': 'Tón',
144
+ 'ai.briefLabel': 'O čom je tento e-mail?',
145
+ 'ai.briefPlaceholder': 'napr. Jesenná kolekcia, 15 % pre odberateľov, doprava zdarma nad 150 €',
146
+ 'ai.generate': 'Vygenerovať text',
147
+ 'ai.writing': 'Píše sa…',
148
+ 'ai.kindHeadline': 'Nadpis',
149
+ 'ai.kindBody': 'Hlavný text',
150
+ 'ai.kindButton': 'Text tlačidla',
151
+ 'ai.actionInsertHeading': 'Vložiť ako nadpis',
152
+ 'ai.actionInsertText': 'Vložiť ako textový blok',
153
+ 'ai.actionInsertButton': 'Vložiť ako tlačidlo',
154
+ 'toast.headingAdded': 'Nadpis pridaný',
155
+ 'toast.textBlockAdded': 'Textový blok pridaný',
156
+ 'toast.buttonAdded': 'Tlačidlo pridané',
157
+ 'preview.kickerMobile': 'Náhľad — mobil 375px',
158
+ 'preview.kickerDesktop': 'Náhľad — počítač {width}px',
159
+ 'action.close': 'Zavrieť',
160
+ 'toast.duplicated': 'Duplikované',
161
+ 'toast.fileUploadedOne': 'Nahraný 1 súbor',
162
+ 'toast.fileUploadedMany': 'Nahratých súborov: {count}',
163
+ 'toast.imageReplaced': 'Obrázok nahradený',
164
+ 'toast.imageAdded': 'Obrázok pridaný na plátno',
165
+ 'toast.htmlCopied': 'HTML skopírované do schránky',
166
+ 'toast.templateLoaded': '{name} načítané',
167
+ 'toast.snippetDefaultLabel': 'Úryvok',
168
+ 'toast.snippetInserted': '{name} vložené',
169
+ 'toast.snippetCopied': '{name} skopírované — vyberte textový blok na vloženie',
170
+ 'rte.textStyle': 'Štýl textu',
171
+ 'rte.mergeTags': 'Zlučovacie polia',
172
+ 'rte.noMergeTags': 'Nie sú dostupné žiadne zlučovacie polia',
173
+ 'rte.textColor': 'Farba textu',
174
+ 'rte.highlightColor': 'Farba zvýraznenia',
175
+ 'rte.removeHighlight': 'Odstrániť zvýraznenie',
176
+ 'rte.clearFormatting': 'Zrušiť formátovanie',
177
+ 'action.downloadPng': 'Stiahnuť PNG',
178
+ 'action.screenshot': 'Snímka',
179
+ 'action.screenshotHint': 'Zobraziť celú šablónu ako obrázok a stiahnuť ju',
180
+ 'toast.pngSaved': 'Snímka stiahnutá',
181
+ 'toast.pngFailed': 'Snímka zlyhala — externý obrázok sa nepodarilo načítať',
182
+ 'toast.pngCopied': 'Snímka skopírovaná do schránky',
183
+ 'toast.pngCopyFailed': 'Tento prehliadač neprijal obrázok do schránky',
184
+ 'story.kicker': 'Snímka',
185
+ 'story.rendering': 'Vytvára sa snímka',
186
+ 'story.renderingHint': 'Každý blok sa kreslí v 2× — pri dlhej šablóne to chvíľu trvá.',
187
+ 'story.failed': 'Snímka zlyhala',
188
+ 'story.failedHint': 'Obrázok v šablóne sa nepodarilo načítať na zachytenie.',
189
+ 'story.retry': 'Skúsiť znova',
190
+ 'story.play': 'Prehrať',
191
+ 'story.pause': 'Pozastaviť',
192
+ 'story.replay': 'Prehrať znova',
193
+ 'story.copy': 'Kopírovať',
194
+ 'story.meta': '{w}×{h} · obrazovka {i} z {n}',
195
+ 'footer.poweredBy': 'Beží na SELISE Blocks © 2026',
196
+ };