@seliseblocks/mailcraft 0.1.1 → 0.2.1

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 (86) hide show
  1. package/DOCS.md +243 -16
  2. package/README.md +15 -6
  3. package/README.md.txt +135 -0
  4. package/dist/mailcraft-editor.bundle.js +87 -47
  5. package/dist/mailcraft-editor.bundle.js.map +3 -3
  6. package/examples/templates/activate-your-account.html +1 -1
  7. package/examples/templates/back-in-stock.html +1 -1
  8. package/examples/templates/cart-left-behind.html +1 -1
  9. package/examples/templates/community-giveaway.html +1 -1
  10. package/examples/templates/frontend-futures-invite.html +1 -1
  11. package/examples/templates/give-25-get-25.html +1 -1
  12. package/examples/templates/invoice-paid.html +1 -1
  13. package/examples/templates/meet-nova-launch.html +1 -1
  14. package/examples/templates/mega-weekend-sale.html +1 -1
  15. package/examples/templates/order-confirmed.html +80 -80
  16. package/examples/templates/rate-your-headphones.html +1 -1
  17. package/examples/templates/reset-your-password.html +1 -1
  18. package/examples/templates/thankyou-promo-code.html +1 -1
  19. package/examples/templates/the-sunday-brief.html +1 -1
  20. package/examples/templates/welcome-to-your-workspace.html +1 -1
  21. package/examples/templates/your-order-shipped.html +1 -1
  22. package/examples/templates/your-password-was-changed.html +1 -1
  23. package/examples/templates/your-signin-code.html +1 -1
  24. package/examples/vanilla.html +261 -47
  25. package/package.json +7 -2
  26. package/src/core/assets.js +10 -15
  27. package/src/core/binder.js +140 -118
  28. package/src/core/blocks.js +14 -1
  29. package/src/core/css-cascade.js +117 -117
  30. package/src/core/editor-core.js +1540 -1492
  31. package/src/core/export.js +158 -55
  32. package/src/core/i18n/ar.js +218 -177
  33. package/src/core/i18n/bg.js +195 -152
  34. package/src/core/i18n/bn.js +217 -176
  35. package/src/core/i18n/ca.js +195 -152
  36. package/src/core/i18n/cs.js +195 -152
  37. package/src/core/i18n/da.js +195 -152
  38. package/src/core/i18n/de-CH.js +195 -152
  39. package/src/core/i18n/de.js +195 -152
  40. package/src/core/i18n/dz.js +220 -179
  41. package/src/core/i18n/el.js +195 -152
  42. package/src/core/i18n/en.js +3 -11
  43. package/src/core/i18n/es.js +195 -152
  44. package/src/core/i18n/et.js +195 -152
  45. package/src/core/i18n/fi.js +195 -152
  46. package/src/core/i18n/fr.js +195 -152
  47. package/src/core/i18n/hr.js +195 -152
  48. package/src/core/i18n/hu.js +195 -152
  49. package/src/core/i18n/index.js +83 -83
  50. package/src/core/i18n/it.js +195 -152
  51. package/src/core/i18n/lt.js +195 -152
  52. package/src/core/i18n/lv.js +195 -152
  53. package/src/core/i18n/nb.js +195 -152
  54. package/src/core/i18n/nl.js +195 -152
  55. package/src/core/i18n/pl.js +195 -152
  56. package/src/core/i18n/pt.js +195 -152
  57. package/src/core/i18n/ro.js +195 -152
  58. package/src/core/i18n/ru.js +195 -152
  59. package/src/core/i18n/sk.js +195 -152
  60. package/src/core/i18n/sl.js +195 -152
  61. package/src/core/i18n/sv.js +195 -152
  62. package/src/core/i18n/tables.js +50 -50
  63. package/src/core/i18n/tr.js +195 -152
  64. package/src/core/i18n/uk.js +195 -152
  65. package/src/core/icons.js +237 -235
  66. package/src/core/ids.js +1 -1
  67. package/src/core/import-html.js +1047 -959
  68. package/src/core/layout-style.js +100 -100
  69. package/src/core/parse.js +10 -10
  70. package/src/core/placeholder.js +15 -15
  71. package/src/core/sanitize.js +141 -141
  72. package/src/core/storage-limits.js +189 -184
  73. package/src/core/storage.js +85 -85
  74. package/src/core/theme.js +15 -1
  75. package/src/core/variables.js +11 -11
  76. package/src/index.js +9 -9
  77. package/src/mailcraft-editor.js +64 -25
  78. package/src/render/block-body.js +49 -6
  79. package/src/render/canvas.js +74 -8
  80. package/src/render/fields.js +619 -588
  81. package/src/render/focus-preserve.js +158 -158
  82. package/src/render/rte.js +241 -212
  83. package/src/render/screenshot.js +138 -132
  84. package/src/render/story.js +415 -415
  85. package/src/render/style.js +44 -8
  86. package/types/index.d.ts +422 -0
@@ -1,152 +1,195 @@
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ľad mobil 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.errNoMaxBytes': 'Nahrávanie je vypnuté: nie je nastavená maximálna veľkosť súboru.',
106
+ 'storage.errTooLarge': '{name} {size} limit je {max}.',
107
+ 'storage.errFormat': '{name} je súbor typu {type}, ktorý tu nie je povolený.',
108
+ 'storage.errSvg': '{name} je SVG, ktoré táto aplikácia neprijíma.',
109
+ 'storage.errDimensions': '{name} {w}×{ht}px — limit je {maxW}×{maxH}px.',
110
+ 'storage.errTooMany': 'Naraz možno nahrať len {max} súborov.',
111
+ 'storage.errUnreadable': '{name} nie je čitateľný obrázok.',
112
+ 'storage.errUploadFailed': '{name} sa nepodarilo nahrať — {reason}',
113
+ 'storage.errDeleteFailed': '{name} sa nepodarilo odstrániť — {reason}',
114
+ 'modal.export': 'Exportovať',
115
+ 'modal.exportTitle': 'HTML e-mailu založené na tabuľkách',
116
+ 'export.copy': 'Kopírovať',
117
+ 'export.copied': 'Skopírované',
118
+ 'action.download': 'Stiahnuť',
119
+ 'export.meta': '{kb} KB · tabuľky + vložené štýly · šírky bezpečné pre Outlook',
120
+ 'modal.rawHtmlTitle': 'Surové HTML, živý náhľad',
121
+ 'code.statusEdited': 'Zobrazenie kódu upravené — náhľad naživo, zatiaľ neaplikované',
122
+ 'code.statusSynced': 'Zobrazenie kódu — synchronizované s plátnom',
123
+ 'action.reload': 'Znova načítať',
124
+ 'action.reloadHint': 'Znova načítať zdroj z plátna',
125
+ 'action.applyToCanvas': 'Použiť na plátno',
126
+ 'action.applyToCanvasHint': 'Znova rozobrať zdroj na upraviteľné riadky',
127
+ 'action.closeWithoutApplyingHint': 'Zavrieť bez použitia',
128
+ 'code.source': 'Zdroj',
129
+ 'code.livePreview': 'Živý náhľad',
130
+ 'code.liveHtmlPreviewTitle': 'Živý náhľad HTML',
131
+ 'code.applyNote':
132
+ '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.',
133
+ 'code.meta': '{kb} KB · {lines} riadkov',
134
+ 'toast.sourceReloaded': 'Zdroj znova načítaný z plátna',
135
+ 'toast.sourceAppliedOne': 'Zdroj použitý — 1 riadok na plátne',
136
+ 'toast.sourceAppliedMany': 'Zdroj použitý — {rows} riadkov na plátne',
137
+ 'toast.parseError': 'Toto HTML sa nepodarilo spracovať',
138
+ 'modal.aiDraft': 'Asistent písania s AI',
139
+ 'modal.aiDraftTitle': 'Napíšte svoj e-mail pomocou AI',
140
+ 'ai.disclosure': 'AI vytvára návrhy podľa vášho zadania. Pred odoslaním výsledok skontrolujte a upravte.',
141
+ 'ai.goal': 'Cieľ',
142
+ 'ai.tone': 'Tón',
143
+ 'ai.briefLabel': 'O čom je tento e-mail?',
144
+ 'ai.briefPlaceholder': 'napr. Jesenná kolekcia, 15 % pre odberateľov, doprava zdarma nad 150 €',
145
+ 'ai.generate': 'Vygenerovať text',
146
+ 'ai.writing': 'Píše sa…',
147
+ 'ai.kindHeadline': 'Nadpis',
148
+ 'ai.kindBody': 'Hlavný text',
149
+ 'ai.kindButton': 'Text tlačidla',
150
+ 'ai.actionInsertHeading': 'Vložiť ako nadpis',
151
+ 'ai.actionInsertText': 'Vložiť ako textový blok',
152
+ 'ai.actionInsertButton': 'Vložiť ako tlačidlo',
153
+ 'toast.headingAdded': 'Nadpis pridaný',
154
+ 'toast.textBlockAdded': 'Textový blok pridaný',
155
+ 'toast.buttonAdded': 'Tlačidlo pridané',
156
+ 'preview.kickerMobile': 'Náhľad — mobil 375px',
157
+ 'preview.kickerDesktop': 'Náhľad — počítač {width}px',
158
+ 'action.close': 'Zavrieť',
159
+ 'toast.duplicated': 'Duplikované',
160
+ 'toast.fileUploadedOne': 'Nahraný 1 súbor',
161
+ 'toast.fileUploadedMany': 'Nahratých súborov: {count}',
162
+ 'toast.imageReplaced': 'Obrázok nahradený',
163
+ 'toast.imageAdded': 'Obrázok pridaný na plátno',
164
+ 'toast.htmlCopied': 'HTML skopírované do schránky',
165
+ 'toast.templateLoaded': '{name} načítané',
166
+ 'toast.snippetDefaultLabel': 'Úryvok',
167
+ 'toast.snippetInserted': '{name} vložené',
168
+ 'toast.snippetCopied': '{name} skopírované — vyberte textový blok na vloženie',
169
+ 'rte.textStyle': 'Štýl textu',
170
+ 'rte.mergeTags': 'Zlučovacie polia',
171
+ 'rte.noMergeTags': 'Nie sú dostupné žiadne zlučovacie polia',
172
+ 'rte.textColor': 'Farba textu',
173
+ 'rte.highlightColor': 'Farba zvýraznenia',
174
+ 'rte.removeHighlight': 'Odstrániť zvýraznenie',
175
+ 'rte.clearFormatting': 'Zrušiť formátovanie',
176
+ 'action.downloadPng': 'Stiahnuť PNG',
177
+ 'action.screenshot': 'Snímka',
178
+ 'action.screenshotHint': 'Zobraziť celú šablónu ako obrázok a stiahnuť ju',
179
+ 'toast.pngSaved': 'Snímka stiahnutá',
180
+ 'toast.pngFailed': 'Snímka zlyhala — externý obrázok sa nepodarilo načítať',
181
+ 'toast.pngCopied': 'Snímka skopírovaná do schránky',
182
+ 'toast.pngCopyFailed': 'Tento prehliadač neprijal obrázok do schránky',
183
+ 'story.kicker': 'Snímka',
184
+ 'story.rendering': 'Vytvára sa snímka',
185
+ 'story.renderingHint': 'Každý blok sa kreslí v 2× — pri dlhej šablóne to chvíľu trvá.',
186
+ 'story.failed': 'Snímka zlyhala',
187
+ 'story.failedHint': 'Obrázok v šablóne sa nepodarilo načítať na zachytenie.',
188
+ 'story.retry': 'Skúsiť znova',
189
+ 'story.play': 'Prehrať',
190
+ 'story.pause': 'Pozastaviť',
191
+ 'story.replay': 'Prehrať znova',
192
+ 'story.copy': 'Kopírovať',
193
+ 'story.meta': '{w}×{h} · obrazovka {i} z {n}',
194
+ 'footer.poweredBy': 'Beží na SELISE Blocks © 2026',
195
+ };