@antelopejs/dms-mailing 0.2.2

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 (550) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +162 -0
  3. package/dist/antelope-modules.d.ts +32 -0
  4. package/dist/antelope-modules.js +36 -0
  5. package/dist/antelope-modules.js.map +1 -0
  6. package/dist/automation/email-event-trigger.d.ts +16 -0
  7. package/dist/automation/email-event-trigger.js +70 -0
  8. package/dist/automation/email-event-trigger.js.map +1 -0
  9. package/dist/automation/index.d.ts +4 -0
  10. package/dist/automation/index.js +39 -0
  11. package/dist/automation/index.js.map +1 -0
  12. package/dist/automation/send-template-action.d.ts +13 -0
  13. package/dist/automation/send-template-action.js +71 -0
  14. package/dist/automation/send-template-action.js.map +1 -0
  15. package/dist/config.d.ts +5 -0
  16. package/dist/config.js +13 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/constants.d.ts +28 -0
  19. package/dist/constants.js +32 -0
  20. package/dist/constants.js.map +1 -0
  21. package/dist/crons/index.d.ts +1 -0
  22. package/dist/crons/index.js +18 -0
  23. package/dist/crons/index.js.map +1 -0
  24. package/dist/crons/retention.d.ts +18 -0
  25. package/dist/crons/retention.js +107 -0
  26. package/dist/crons/retention.js.map +1 -0
  27. package/dist/data/body.d.ts +1 -0
  28. package/dist/data/body.js +18 -0
  29. package/dist/data/body.js.map +1 -0
  30. package/dist/data/index.d.ts +3 -0
  31. package/dist/data/index.js +20 -0
  32. package/dist/data/index.js.map +1 -0
  33. package/dist/data/sends-table.d.ts +28 -0
  34. package/dist/data/sends-table.js +161 -0
  35. package/dist/data/sends-table.js.map +1 -0
  36. package/dist/data/templates-table.d.ts +31 -0
  37. package/dist/data/templates-table.js +173 -0
  38. package/dist/data/templates-table.js.map +1 -0
  39. package/dist/data-types/categories-type.d.ts +35 -0
  40. package/dist/data-types/categories-type.js +37 -0
  41. package/dist/data-types/categories-type.js.map +1 -0
  42. package/dist/data-types/category-type.d.ts +8 -0
  43. package/dist/data-types/category-type.js +43 -0
  44. package/dist/data-types/category-type.js.map +1 -0
  45. package/dist/data-types/index.d.ts +2 -0
  46. package/dist/data-types/index.js +19 -0
  47. package/dist/data-types/index.js.map +1 -0
  48. package/dist/db/index.d.ts +2 -0
  49. package/dist/db/index.js +19 -0
  50. package/dist/db/index.js.map +1 -0
  51. package/dist/db/models/index.d.ts +4 -0
  52. package/dist/db/models/index.js +21 -0
  53. package/dist/db/models/index.js.map +1 -0
  54. package/dist/db/models/send-events.model.d.ts +27 -0
  55. package/dist/db/models/send-events.model.js +35 -0
  56. package/dist/db/models/send-events.model.js.map +1 -0
  57. package/dist/db/models/sends.model.d.ts +32 -0
  58. package/dist/db/models/sends.model.js +115 -0
  59. package/dist/db/models/sends.model.js.map +1 -0
  60. package/dist/db/models/settings.model.d.ts +23 -0
  61. package/dist/db/models/settings.model.js +13 -0
  62. package/dist/db/models/settings.model.js.map +1 -0
  63. package/dist/db/models/templates.model.d.ts +23 -0
  64. package/dist/db/models/templates.model.js +13 -0
  65. package/dist/db/models/templates.model.js.map +1 -0
  66. package/dist/db/tables/index.d.ts +4 -0
  67. package/dist/db/tables/index.js +21 -0
  68. package/dist/db/tables/index.js.map +1 -0
  69. package/dist/db/tables/send-events.table.d.ts +10 -0
  70. package/dist/db/tables/send-events.table.js +44 -0
  71. package/dist/db/tables/send-events.table.js.map +1 -0
  72. package/dist/db/tables/sends.table.d.ts +26 -0
  73. package/dist/db/tables/sends.table.js +113 -0
  74. package/dist/db/tables/sends.table.js.map +1 -0
  75. package/dist/db/tables/settings.table.d.ts +15 -0
  76. package/dist/db/tables/settings.table.js +68 -0
  77. package/dist/db/tables/settings.table.js.map +1 -0
  78. package/dist/db/tables/templates.table.d.ts +18 -0
  79. package/dist/db/tables/templates.table.js +81 -0
  80. package/dist/db/tables/templates.table.js.map +1 -0
  81. package/dist/engine/conditions.d.ts +2 -0
  82. package/dist/engine/conditions.js +20 -0
  83. package/dist/engine/conditions.js.map +1 -0
  84. package/dist/engine/coverage.d.ts +4 -0
  85. package/dist/engine/coverage.js +45 -0
  86. package/dist/engine/coverage.js.map +1 -0
  87. package/dist/engine/fallback-html.d.ts +4 -0
  88. package/dist/engine/fallback-html.js +84 -0
  89. package/dist/engine/fallback-html.js.map +1 -0
  90. package/dist/engine/index.d.ts +7 -0
  91. package/dist/engine/index.js +24 -0
  92. package/dist/engine/index.js.map +1 -0
  93. package/dist/engine/paths.d.ts +3 -0
  94. package/dist/engine/paths.js +32 -0
  95. package/dist/engine/paths.js.map +1 -0
  96. package/dist/engine/resolve.d.ts +4 -0
  97. package/dist/engine/resolve.js +139 -0
  98. package/dist/engine/resolve.js.map +1 -0
  99. package/dist/engine/tokens.d.ts +7 -0
  100. package/dist/engine/tokens.js +29 -0
  101. package/dist/engine/tokens.js.map +1 -0
  102. package/dist/engine/walk.d.ts +3 -0
  103. package/dist/engine/walk.js +14 -0
  104. package/dist/engine/walk.js.map +1 -0
  105. package/dist/hooks/index.d.ts +1 -0
  106. package/dist/hooks/index.js +18 -0
  107. package/dist/hooks/index.js.map +1 -0
  108. package/dist/hooks/tenant-export.d.ts +14 -0
  109. package/dist/hooks/tenant-export.js +84 -0
  110. package/dist/hooks/tenant-export.js.map +1 -0
  111. package/dist/implementations/dms-mailing/index.d.ts +2 -0
  112. package/dist/implementations/dms-mailing/index.js +8 -0
  113. package/dist/implementations/dms-mailing/index.js.map +1 -0
  114. package/dist/index.d.ts +13 -0
  115. package/dist/index.js +95 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/pages/editor.d.ts +9 -0
  118. package/dist/pages/editor.js +30 -0
  119. package/dist/pages/editor.js.map +1 -0
  120. package/dist/pages/index.d.ts +7 -0
  121. package/dist/pages/index.js +24 -0
  122. package/dist/pages/index.js.map +1 -0
  123. package/dist/pages/module.d.ts +1 -0
  124. package/dist/pages/module.js +12 -0
  125. package/dist/pages/module.js.map +1 -0
  126. package/dist/pages/overview.d.ts +14 -0
  127. package/dist/pages/overview.js +92 -0
  128. package/dist/pages/overview.js.map +1 -0
  129. package/dist/pages/sends.d.ts +13 -0
  130. package/dist/pages/sends.js +125 -0
  131. package/dist/pages/sends.js.map +1 -0
  132. package/dist/pages/settings/form.d.ts +1 -0
  133. package/dist/pages/settings/form.js +68 -0
  134. package/dist/pages/settings/form.js.map +1 -0
  135. package/dist/pages/settings/index.d.ts +2 -0
  136. package/dist/pages/settings/index.js +19 -0
  137. package/dist/pages/settings/index.js.map +1 -0
  138. package/dist/pages/settings/page.d.ts +10 -0
  139. package/dist/pages/settings/page.js +35 -0
  140. package/dist/pages/settings/page.js.map +1 -0
  141. package/dist/pages/templates.d.ts +10 -0
  142. package/dist/pages/templates.js +140 -0
  143. package/dist/pages/templates.js.map +1 -0
  144. package/dist/permissions.d.ts +1 -0
  145. package/dist/permissions.js +37 -0
  146. package/dist/permissions.js.map +1 -0
  147. package/dist/quick-actions.d.ts +2 -0
  148. package/dist/quick-actions.js +18 -0
  149. package/dist/quick-actions.js.map +1 -0
  150. package/dist/realtime.d.ts +4 -0
  151. package/dist/realtime.js +44 -0
  152. package/dist/realtime.js.map +1 -0
  153. package/dist/routes/events.d.ts +9 -0
  154. package/dist/routes/events.js +63 -0
  155. package/dist/routes/events.js.map +1 -0
  156. package/dist/routes/index.d.ts +7 -0
  157. package/dist/routes/index.js +24 -0
  158. package/dist/routes/index.js.map +1 -0
  159. package/dist/routes/metrics.d.ts +54 -0
  160. package/dist/routes/metrics.js +235 -0
  161. package/dist/routes/metrics.js.map +1 -0
  162. package/dist/routes/period.d.ts +5 -0
  163. package/dist/routes/period.js +36 -0
  164. package/dist/routes/period.js.map +1 -0
  165. package/dist/routes/provider.d.ts +13 -0
  166. package/dist/routes/provider.js +41 -0
  167. package/dist/routes/provider.js.map +1 -0
  168. package/dist/routes/sends.d.ts +31 -0
  169. package/dist/routes/sends.js +178 -0
  170. package/dist/routes/sends.js.map +1 -0
  171. package/dist/routes/settings.d.ts +14 -0
  172. package/dist/routes/settings.js +72 -0
  173. package/dist/routes/settings.js.map +1 -0
  174. package/dist/routes/templates.d.ts +61 -0
  175. package/dist/routes/templates.js +230 -0
  176. package/dist/routes/templates.js.map +1 -0
  177. package/dist/services/attention.d.ts +23 -0
  178. package/dist/services/attention.js +104 -0
  179. package/dist/services/attention.js.map +1 -0
  180. package/dist/services/categories.d.ts +34 -0
  181. package/dist/services/categories.js +34 -0
  182. package/dist/services/categories.js.map +1 -0
  183. package/dist/services/events.d.ts +10 -0
  184. package/dist/services/events.js +89 -0
  185. package/dist/services/events.js.map +1 -0
  186. package/dist/services/metrics.d.ts +34 -0
  187. package/dist/services/metrics.js +103 -0
  188. package/dist/services/metrics.js.map +1 -0
  189. package/dist/services/notify.d.ts +20 -0
  190. package/dist/services/notify.js +63 -0
  191. package/dist/services/notify.js.map +1 -0
  192. package/dist/services/permissions.d.ts +2 -0
  193. package/dist/services/permissions.js +15 -0
  194. package/dist/services/permissions.js.map +1 -0
  195. package/dist/services/provider.d.ts +6 -0
  196. package/dist/services/provider.js +25 -0
  197. package/dist/services/provider.js.map +1 -0
  198. package/dist/services/render.d.ts +6 -0
  199. package/dist/services/render.js +21 -0
  200. package/dist/services/render.js.map +1 -0
  201. package/dist/services/send.d.ts +49 -0
  202. package/dist/services/send.js +259 -0
  203. package/dist/services/send.js.map +1 -0
  204. package/dist/services/settings.d.ts +4 -0
  205. package/dist/services/settings.js +61 -0
  206. package/dist/services/settings.js.map +1 -0
  207. package/dist/services/status.d.ts +3 -0
  208. package/dist/services/status.js +16 -0
  209. package/dist/services/status.js.map +1 -0
  210. package/dist/services/templates.d.ts +17 -0
  211. package/dist/services/templates.js +92 -0
  212. package/dist/services/templates.js.map +1 -0
  213. package/dist/test/antelope.test.d.ts +2 -0
  214. package/dist/test/antelope.test.js +179 -0
  215. package/dist/test/antelope.test.js.map +1 -0
  216. package/dist/test/helpers/http.d.ts +4 -0
  217. package/dist/test/helpers/http.js +28 -0
  218. package/dist/test/helpers/http.js.map +1 -0
  219. package/dist/test/helpers/owner.d.ts +5 -0
  220. package/dist/test/helpers/owner.js +30 -0
  221. package/dist/test/helpers/owner.js.map +1 -0
  222. package/dist/test/integration/events.test.d.ts +1 -0
  223. package/dist/test/integration/events.test.js +132 -0
  224. package/dist/test/integration/events.test.js.map +1 -0
  225. package/dist/test/integration/retention.test.d.ts +1 -0
  226. package/dist/test/integration/retention.test.js +291 -0
  227. package/dist/test/integration/retention.test.js.map +1 -0
  228. package/dist/test/integration/sends.test.d.ts +1 -0
  229. package/dist/test/integration/sends.test.js +157 -0
  230. package/dist/test/integration/sends.test.js.map +1 -0
  231. package/dist/test/integration/settings.test.d.ts +1 -0
  232. package/dist/test/integration/settings.test.js +45 -0
  233. package/dist/test/integration/settings.test.js.map +1 -0
  234. package/dist/test/integration/setup.test.d.ts +1 -0
  235. package/dist/test/integration/setup.test.js +32 -0
  236. package/dist/test/integration/setup.test.js.map +1 -0
  237. package/dist/test/integration/templates.test.d.ts +1 -0
  238. package/dist/test/integration/templates.test.js +167 -0
  239. package/dist/test/integration/templates.test.js.map +1 -0
  240. package/dist/test/integration/tenant-export.test.d.ts +1 -0
  241. package/dist/test/integration/tenant-export.test.js +85 -0
  242. package/dist/test/integration/tenant-export.test.js.map +1 -0
  243. package/dist/test/unit/attention.test.d.ts +1 -0
  244. package/dist/test/unit/attention.test.js +109 -0
  245. package/dist/test/unit/attention.test.js.map +1 -0
  246. package/dist/test/unit/automation.test.d.ts +1 -0
  247. package/dist/test/unit/automation.test.js +104 -0
  248. package/dist/test/unit/automation.test.js.map +1 -0
  249. package/dist/test/unit/categories.test.d.ts +1 -0
  250. package/dist/test/unit/categories.test.js +38 -0
  251. package/dist/test/unit/categories.test.js.map +1 -0
  252. package/dist/test/unit/engine/conditions.test.d.ts +1 -0
  253. package/dist/test/unit/engine/conditions.test.js +23 -0
  254. package/dist/test/unit/engine/conditions.test.js.map +1 -0
  255. package/dist/test/unit/engine/coverage.test.d.ts +1 -0
  256. package/dist/test/unit/engine/coverage.test.js +106 -0
  257. package/dist/test/unit/engine/coverage.test.js.map +1 -0
  258. package/dist/test/unit/engine/fallback-html.test.d.ts +1 -0
  259. package/dist/test/unit/engine/fallback-html.test.js +78 -0
  260. package/dist/test/unit/engine/fallback-html.test.js.map +1 -0
  261. package/dist/test/unit/engine/paths.test.d.ts +1 -0
  262. package/dist/test/unit/engine/paths.test.js +33 -0
  263. package/dist/test/unit/engine/paths.test.js.map +1 -0
  264. package/dist/test/unit/engine/resolve.test.d.ts +1 -0
  265. package/dist/test/unit/engine/resolve.test.js +157 -0
  266. package/dist/test/unit/engine/resolve.test.js.map +1 -0
  267. package/dist/test/unit/engine/tokens.test.d.ts +1 -0
  268. package/dist/test/unit/engine/tokens.test.js +26 -0
  269. package/dist/test/unit/engine/tokens.test.js.map +1 -0
  270. package/dist/test/unit/events.test.d.ts +1 -0
  271. package/dist/test/unit/events.test.js +13 -0
  272. package/dist/test/unit/events.test.js.map +1 -0
  273. package/dist/test/unit/metrics.test.d.ts +1 -0
  274. package/dist/test/unit/metrics.test.js +108 -0
  275. package/dist/test/unit/metrics.test.js.map +1 -0
  276. package/dist/test/unit/notify.test.d.ts +1 -0
  277. package/dist/test/unit/notify.test.js +49 -0
  278. package/dist/test/unit/notify.test.js.map +1 -0
  279. package/dist/test/unit/period.test.d.ts +1 -0
  280. package/dist/test/unit/period.test.js +44 -0
  281. package/dist/test/unit/period.test.js.map +1 -0
  282. package/dist/test/unit/provider.test.d.ts +1 -0
  283. package/dist/test/unit/provider.test.js +47 -0
  284. package/dist/test/unit/provider.test.js.map +1 -0
  285. package/dist/test/unit/realtime.test.d.ts +1 -0
  286. package/dist/test/unit/realtime.test.js +13 -0
  287. package/dist/test/unit/realtime.test.js.map +1 -0
  288. package/dist/test/unit/render.test.d.ts +1 -0
  289. package/dist/test/unit/render.test.js +23 -0
  290. package/dist/test/unit/render.test.js.map +1 -0
  291. package/dist/test/unit/retention.test.d.ts +1 -0
  292. package/dist/test/unit/retention.test.js +66 -0
  293. package/dist/test/unit/retention.test.js.map +1 -0
  294. package/dist/test/unit/send-batch.test.d.ts +1 -0
  295. package/dist/test/unit/send-batch.test.js +46 -0
  296. package/dist/test/unit/send-batch.test.js.map +1 -0
  297. package/dist/test/unit/send.test.d.ts +1 -0
  298. package/dist/test/unit/send.test.js +120 -0
  299. package/dist/test/unit/send.test.js.map +1 -0
  300. package/dist/test/unit/smoke.test.d.ts +1 -0
  301. package/dist/test/unit/smoke.test.js +10 -0
  302. package/dist/test/unit/smoke.test.js.map +1 -0
  303. package/dist/test/unit/status.test.d.ts +1 -0
  304. package/dist/test/unit/status.test.js +16 -0
  305. package/dist/test/unit/status.test.js.map +1 -0
  306. package/dist/test/unit/templates.test.d.ts +1 -0
  307. package/dist/test/unit/templates.test.js +48 -0
  308. package/dist/test/unit/templates.test.js.map +1 -0
  309. package/dist/test/unit/tenant-export.test.d.ts +1 -0
  310. package/dist/test/unit/tenant-export.test.js +59 -0
  311. package/dist/test/unit/tenant-export.test.js.map +1 -0
  312. package/dist/test/unit/webhook-secret.test.d.ts +1 -0
  313. package/dist/test/unit/webhook-secret.test.js +42 -0
  314. package/dist/test/unit/webhook-secret.test.js.map +1 -0
  315. package/dist/types/blocks.d.ts +2 -0
  316. package/dist/types/blocks.js +3 -0
  317. package/dist/types/blocks.js.map +1 -0
  318. package/dist/types/index.d.ts +4 -0
  319. package/dist/types/index.js +21 -0
  320. package/dist/types/index.js.map +1 -0
  321. package/dist/types/resolved.d.ts +68 -0
  322. package/dist/types/resolved.js +3 -0
  323. package/dist/types/resolved.js.map +1 -0
  324. package/dist/types/sends.d.ts +14 -0
  325. package/dist/types/sends.js +19 -0
  326. package/dist/types/sends.js.map +1 -0
  327. package/dist/types/settings.d.ts +16 -0
  328. package/dist/types/settings.js +11 -0
  329. package/dist/types/settings.js.map +1 -0
  330. package/dist/validation/settings.schema.d.ts +63 -0
  331. package/dist/validation/settings.schema.js +29 -0
  332. package/dist/validation/settings.schema.js.map +1 -0
  333. package/dist/validation/templates.schema.d.ts +248 -0
  334. package/dist/validation/templates.schema.js +126 -0
  335. package/dist/validation/templates.schema.js.map +1 -0
  336. package/frontend-vue/.editorconfig +12 -0
  337. package/frontend-vue/.prettierrc +11 -0
  338. package/frontend-vue/app/components/AttentionCard.vue +78 -0
  339. package/frontend-vue/app/components/CategoriesInput.vue +126 -0
  340. package/frontend-vue/app/components/CategoryInput.vue +67 -0
  341. package/frontend-vue/app/components/Editor.vue +63 -0
  342. package/frontend-vue/app/components/FunnelCard.vue +66 -0
  343. package/frontend-vue/app/components/HtmlPreviewModal.vue +20 -0
  344. package/frontend-vue/app/components/NewTemplateModal.vue +158 -0
  345. package/frontend-vue/app/components/ProviderChip.vue +39 -0
  346. package/frontend-vue/app/components/SendDrawer.vue +298 -0
  347. package/frontend-vue/app/components/TemplateCard.vue +127 -0
  348. package/frontend-vue/app/components/TemplateDrawer.vue +394 -0
  349. package/frontend-vue/app/components/TemplateGallery.vue +112 -0
  350. package/frontend-vue/app/components/TemplatePreviewFrame.vue +103 -0
  351. package/frontend-vue/app/components/TestSendModal.vue +162 -0
  352. package/frontend-vue/app/components/TokenText.vue +26 -0
  353. package/frontend-vue/app/components/blocks/Button.vue +19 -0
  354. package/frontend-vue/app/components/blocks/Code.vue +17 -0
  355. package/frontend-vue/app/components/blocks/Divider.vue +3 -0
  356. package/frontend-vue/app/components/blocks/Footer.vue +22 -0
  357. package/frontend-vue/app/components/blocks/Heading.vue +18 -0
  358. package/frontend-vue/app/components/blocks/Hero.vue +32 -0
  359. package/frontend-vue/app/components/blocks/List.vue +33 -0
  360. package/frontend-vue/app/components/blocks/Paragraph.vue +18 -0
  361. package/frontend-vue/app/components/blocks/Total.vue +18 -0
  362. package/frontend-vue/app/components/editor/EditorBlock.vue +121 -0
  363. package/frontend-vue/app/components/editor/EditorBlockList.vue +44 -0
  364. package/frontend-vue/app/components/editor/EditorBlockSettings.vue +186 -0
  365. package/frontend-vue/app/components/editor/EditorCanvas.vue +91 -0
  366. package/frontend-vue/app/components/editor/EditorConditionFields.vue +88 -0
  367. package/frontend-vue/app/components/editor/EditorDataPanel.vue +128 -0
  368. package/frontend-vue/app/components/editor/EditorDraftBar.vue +35 -0
  369. package/frontend-vue/app/components/editor/EditorIfBlock.vue +120 -0
  370. package/frontend-vue/app/components/editor/EditorMissingLocale.vue +62 -0
  371. package/frontend-vue/app/components/editor/EditorPalette.vue +62 -0
  372. package/frontend-vue/app/components/editor/EditorRail.vue +58 -0
  373. package/frontend-vue/app/components/editor/EditorSubjectSettings.vue +37 -0
  374. package/frontend-vue/app/components/editor/EditorTemplateSettings.vue +87 -0
  375. package/frontend-vue/app/components/editor/EditorTestSendModal.vue +66 -0
  376. package/frontend-vue/app/components/editor/EditorToolbar.vue +155 -0
  377. package/frontend-vue/app/components/editor/EditorVariables.vue +163 -0
  378. package/frontend-vue/app/components/editor/EditorWorkspace.vue +189 -0
  379. package/frontend-vue/app/composables/useEditorContext.ts +44 -0
  380. package/frontend-vue/app/composables/useMailingApi.ts +197 -0
  381. package/frontend-vue/app/composables/useMailingPeriodData.ts +39 -0
  382. package/frontend-vue/app/composables/useTemplateDrawer.ts +90 -0
  383. package/frontend-vue/app/composables/useTemplateEditor.ts +228 -0
  384. package/frontend-vue/app/emails/EmailMailingTemplate.vue +24 -0
  385. package/frontend-vue/app/emails/components/MailingBlocks.vue +117 -0
  386. package/frontend-vue/app/plugins/template-gallery-display.client.ts +14 -0
  387. package/frontend-vue/app/types/component.ts +29 -0
  388. package/frontend-vue/app/types/mailing.ts +365 -0
  389. package/frontend-vue/app/utils/blocks/components.ts +14 -0
  390. package/frontend-vue/app/utils/blocks/dnd.ts +15 -0
  391. package/frontend-vue/app/utils/blocks/factory.ts +100 -0
  392. package/frontend-vue/app/utils/blocks/fields.ts +58 -0
  393. package/frontend-vue/app/utils/blocks/index.ts +5 -0
  394. package/frontend-vue/app/utils/blocks/tree.ts +74 -0
  395. package/frontend-vue/app/utils/categories.ts +54 -0
  396. package/frontend-vue/app/utils/clone.ts +3 -0
  397. package/frontend-vue/app/utils/conditions.ts +50 -0
  398. package/frontend-vue/app/utils/editor-route.ts +18 -0
  399. package/frontend-vue/app/utils/gallery.ts +41 -0
  400. package/frontend-vue/app/utils/locales.ts +41 -0
  401. package/frontend-vue/app/utils/paths.ts +84 -0
  402. package/frontend-vue/app/utils/period.ts +23 -0
  403. package/frontend-vue/app/utils/testData.ts +10 -0
  404. package/frontend-vue/app/utils/timeline.ts +68 -0
  405. package/frontend-vue/app/utils/tokens.ts +24 -0
  406. package/frontend-vue/app/utils/variables.ts +48 -0
  407. package/frontend-vue/dms.email.ts +9 -0
  408. package/frontend-vue/dms.frontend.ts +29 -0
  409. package/frontend-vue/eslint.config.mjs +13 -0
  410. package/frontend-vue/i18n/locales/mailing-en-GB.json +397 -0
  411. package/frontend-vue/i18n/locales/mailing-fr-FR.json +397 -0
  412. package/frontend-vue/package.json +32 -0
  413. package/frontend-vue/pnpm-lock.yaml +6446 -0
  414. package/frontend-vue/pnpm-workspace.yaml +2 -0
  415. package/frontend-vue/tests/block-components.test.ts +14 -0
  416. package/frontend-vue/tests/block-fields.test.ts +23 -0
  417. package/frontend-vue/tests/blocks-factory.test.ts +28 -0
  418. package/frontend-vue/tests/blocks-tree.test.ts +49 -0
  419. package/frontend-vue/tests/categories.test.ts +64 -0
  420. package/frontend-vue/tests/conditions.test.ts +36 -0
  421. package/frontend-vue/tests/dnd.test.ts +11 -0
  422. package/frontend-vue/tests/editor-block-list.test.ts +54 -0
  423. package/frontend-vue/tests/editor-route.test.ts +23 -0
  424. package/frontend-vue/tests/email-render-cases.json +77 -0
  425. package/frontend-vue/tests/gallery.test.ts +39 -0
  426. package/frontend-vue/tests/i18n-editor.test.ts +21 -0
  427. package/frontend-vue/tests/i18n.test.ts +83 -0
  428. package/frontend-vue/tests/locales.test.ts +38 -0
  429. package/frontend-vue/tests/mailing-api.test.ts +10 -0
  430. package/frontend-vue/tests/paths.test.ts +128 -0
  431. package/frontend-vue/tests/period.test.ts +13 -0
  432. package/frontend-vue/tests/smoke.test.ts +8 -0
  433. package/frontend-vue/tests/template-editor.test.ts +65 -0
  434. package/frontend-vue/tests/test-data.test.ts +15 -0
  435. package/frontend-vue/tests/timeline.test.ts +29 -0
  436. package/frontend-vue/tests/tokens.test.ts +12 -0
  437. package/frontend-vue/tests/variables.test.ts +46 -0
  438. package/frontend-vue/vitest.config.ts +10 -0
  439. package/package.json +94 -0
  440. package/src/antelope-modules.ts +48 -0
  441. package/src/automation/email-event-trigger.ts +112 -0
  442. package/src/automation/index.ts +33 -0
  443. package/src/automation/send-template-action.ts +100 -0
  444. package/src/config.ts +15 -0
  445. package/src/constants.ts +42 -0
  446. package/src/crons/index.ts +1 -0
  447. package/src/crons/retention.ts +126 -0
  448. package/src/data/body.ts +14 -0
  449. package/src/data/index.ts +3 -0
  450. package/src/data/sends-table.ts +154 -0
  451. package/src/data/templates-table.ts +202 -0
  452. package/src/data-types/categories-type.ts +29 -0
  453. package/src/data-types/category-type.ts +44 -0
  454. package/src/data-types/index.ts +2 -0
  455. package/src/db/index.ts +2 -0
  456. package/src/db/models/index.ts +4 -0
  457. package/src/db/models/send-events.model.ts +46 -0
  458. package/src/db/models/sends.model.ts +147 -0
  459. package/src/db/models/settings.model.ts +12 -0
  460. package/src/db/models/templates.model.ts +12 -0
  461. package/src/db/tables/index.ts +4 -0
  462. package/src/db/tables/send-events.table.ts +31 -0
  463. package/src/db/tables/sends.table.ts +85 -0
  464. package/src/db/tables/settings.table.ts +49 -0
  465. package/src/db/tables/templates.table.ts +70 -0
  466. package/src/engine/conditions.ts +30 -0
  467. package/src/engine/coverage.ts +67 -0
  468. package/src/engine/fallback-html.ts +116 -0
  469. package/src/engine/index.ts +7 -0
  470. package/src/engine/paths.ts +33 -0
  471. package/src/engine/resolve.ts +178 -0
  472. package/src/engine/tokens.ts +35 -0
  473. package/src/engine/walk.ts +18 -0
  474. package/src/hooks/index.ts +1 -0
  475. package/src/hooks/tenant-export.ts +127 -0
  476. package/src/implementations/dms-mailing/index.ts +2 -0
  477. package/src/index.ts +62 -0
  478. package/src/pages/editor.ts +23 -0
  479. package/src/pages/index.ts +11 -0
  480. package/src/pages/module.ts +9 -0
  481. package/src/pages/overview.ts +175 -0
  482. package/src/pages/sends.ts +174 -0
  483. package/src/pages/settings/form.ts +67 -0
  484. package/src/pages/settings/index.ts +2 -0
  485. package/src/pages/settings/page.ts +34 -0
  486. package/src/pages/templates.ts +141 -0
  487. package/src/permissions.ts +44 -0
  488. package/src/quick-actions.ts +20 -0
  489. package/src/realtime.ts +53 -0
  490. package/src/routes/events.ts +57 -0
  491. package/src/routes/index.ts +7 -0
  492. package/src/routes/metrics.ts +243 -0
  493. package/src/routes/period.ts +46 -0
  494. package/src/routes/provider.ts +31 -0
  495. package/src/routes/sends.ts +215 -0
  496. package/src/routes/settings.ts +66 -0
  497. package/src/routes/templates.ts +256 -0
  498. package/src/services/attention.ts +151 -0
  499. package/src/services/categories.ts +43 -0
  500. package/src/services/events.ts +121 -0
  501. package/src/services/metrics.ts +175 -0
  502. package/src/services/notify.ts +90 -0
  503. package/src/services/permissions.ts +42 -0
  504. package/src/services/provider.ts +46 -0
  505. package/src/services/render.ts +33 -0
  506. package/src/services/send.ts +409 -0
  507. package/src/services/settings.ts +74 -0
  508. package/src/services/status.ts +16 -0
  509. package/src/services/templates.ts +157 -0
  510. package/src/test/antelope.test.ts +188 -0
  511. package/src/test/helpers/http.ts +23 -0
  512. package/src/test/helpers/owner.ts +37 -0
  513. package/src/test/integration/events.test.ts +136 -0
  514. package/src/test/integration/retention.test.ts +363 -0
  515. package/src/test/integration/sends.test.ts +200 -0
  516. package/src/test/integration/settings.test.ts +50 -0
  517. package/src/test/integration/setup.test.ts +35 -0
  518. package/src/test/integration/templates.test.ts +229 -0
  519. package/src/test/integration/tenant-export.test.ts +125 -0
  520. package/src/test/unit/attention.test.ts +129 -0
  521. package/src/test/unit/automation.test.ts +130 -0
  522. package/src/test/unit/categories.test.ts +51 -0
  523. package/src/test/unit/engine/conditions.test.ts +35 -0
  524. package/src/test/unit/engine/coverage.test.ts +118 -0
  525. package/src/test/unit/engine/fallback-html.test.ts +86 -0
  526. package/src/test/unit/engine/paths.test.ts +39 -0
  527. package/src/test/unit/engine/resolve.test.ts +176 -0
  528. package/src/test/unit/engine/tokens.test.ts +26 -0
  529. package/src/test/unit/events.test.ts +19 -0
  530. package/src/test/unit/metrics.test.ts +170 -0
  531. package/src/test/unit/notify.test.ts +71 -0
  532. package/src/test/unit/period.test.ts +64 -0
  533. package/src/test/unit/provider.test.ts +57 -0
  534. package/src/test/unit/realtime.test.ts +11 -0
  535. package/src/test/unit/render.test.ts +23 -0
  536. package/src/test/unit/retention.test.ts +91 -0
  537. package/src/test/unit/send-batch.test.ts +72 -0
  538. package/src/test/unit/send.test.ts +161 -0
  539. package/src/test/unit/smoke.test.ts +8 -0
  540. package/src/test/unit/status.test.ts +14 -0
  541. package/src/test/unit/templates.test.ts +52 -0
  542. package/src/test/unit/tenant-export.test.ts +88 -0
  543. package/src/test/unit/webhook-secret.test.ts +50 -0
  544. package/src/types/blocks.ts +31 -0
  545. package/src/types/index.ts +4 -0
  546. package/src/types/resolved.ts +89 -0
  547. package/src/types/sends.ts +44 -0
  548. package/src/types/settings.ts +24 -0
  549. package/src/validation/settings.schema.ts +33 -0
  550. package/src/validation/templates.schema.ts +145 -0
@@ -0,0 +1,397 @@
1
+ {
2
+ "dms_mailing": {
3
+ "attention": {
4
+ "bounces_description": "Adresses invalides — à retirer pour protéger la réputation d'envoi.",
5
+ "bounces_title": "{count} rejets permanents",
6
+ "missing_locales_description": "Templates incomplets — {names}. Les envois retombent sur la langue par défaut.",
7
+ "missing_locales_title": "{count} traductions manquantes",
8
+ "problem_sends": {
9
+ "description": "Rejetés, refusés ou en échec — ouvrez l'onglet Problèmes pour les traiter.",
10
+ "title": "{count} envoi à traiter | {count} envois à traiter"
11
+ },
12
+ "stale_drafts": {
13
+ "description": "Jamais publiés et inchangés depuis plus d’une semaine — publiez-les ou archivez-les.",
14
+ "title": "{count} brouillon en attente | {count} brouillons en attente"
15
+ },
16
+ "stale_drafts_description": "Jamais publiés depuis leur dernière modification — publiez-les ou archivez-les.",
17
+ "stale_drafts_title": "{count} brouillons en attente",
18
+ "test_only_window": {
19
+ "description": "Ces chiffres ne comptent que le trafic réel. Tous les envois de cette période étaient des tests — retrouvez-les dans le journal d'envois.",
20
+ "title": "{count} envois de test exclus"
21
+ },
22
+ "untracked_rates": {
23
+ "title": "Les ouvertures et les clics ne sont pas suivis",
24
+ "description": "{provider} n'en remonte aucun, donc ces taux restent à 0 %. La livraison, les ouvertures et les clics demandent un fournisseur qui renvoie des évènements."
25
+ },
26
+ "unused_live": {
27
+ "description": "Publiés mais aucun code ne les appelle — vérifiez le slug utilisé à l'appel.",
28
+ "title": "{count} template en ligne jamais envoyé | {count} templates en ligne jamais envoyés"
29
+ }
30
+ },
31
+ "blocks": {
32
+ "button": "Bouton",
33
+ "code": "Code / OTP",
34
+ "divider": "Séparateur",
35
+ "footer": "Pied de page",
36
+ "heading": "Titre",
37
+ "hero": "Image",
38
+ "if": "Condition",
39
+ "list": "Liste",
40
+ "paragraph": "Paragraphe",
41
+ "total": "Total"
42
+ },
43
+ "description": "E-mails, modèles et campagnes",
44
+ "editor": {
45
+ "actions": {
46
+ "delete": "Supprimer ce bloc",
47
+ "drag": "Déplacer ce bloc",
48
+ "duplicate": "Dupliquer ce bloc",
49
+ "move_down": "Descendre",
50
+ "move_up": "Monter"
51
+ },
52
+ "add_block": "Ajouter un bloc",
53
+ "back": "Retour aux templates",
54
+ "block_settings": {
55
+ "align": "Alignement",
56
+ "alt": "Texte alternatif",
57
+ "always_show": "Toujours afficher ce bloc",
58
+ "conditional_help": "Le bloc disparaît de l'e-mail quand la règle est fausse.",
59
+ "delete_block": "Supprimer le bloc",
60
+ "href": "Lien",
61
+ "image_url": "URL de l'image",
62
+ "insert_hint": "Tapez {'{{'} ou cliquez une variable ci-dessous pour l'insérer.",
63
+ "label": "Libellé",
64
+ "label_path": "Chemin du libellé",
65
+ "only_if": "N'afficher que si…",
66
+ "preferences_label": "Libellé des préférences",
67
+ "size": "Taille",
68
+ "source": "Source de la liste",
69
+ "source_help": "Chemin du tableau à parcourir, par exemple order.lines.",
70
+ "text": "Texte",
71
+ "unsubscribe_label": "Libellé de désinscription",
72
+ "value": "Valeur affichée",
73
+ "value_path": "Chemin de la valeur"
74
+ },
75
+ "condition": {
76
+ "add_else": "Ajouter une branche « sinon »",
77
+ "add_here": "Ajouter dans cette branche",
78
+ "compiled": "Compilé",
79
+ "else": "SINON",
80
+ "eval_false": "faux avec le jeu de test",
81
+ "eval_true": "vrai avec le jeu de test",
82
+ "field": "Champ",
83
+ "hidden": "masqué par la condition",
84
+ "if": "SI",
85
+ "operator": "Opérateur",
86
+ "remove_else": "Retirer la branche « sinon »",
87
+ "simulate_false": "faux",
88
+ "simulate_true": "vrai",
89
+ "value": "Valeur"
90
+ },
91
+ "data": {
92
+ "block_on_missing": "Bloquer les envois en cas de variable manquante",
93
+ "controls": "Contrôles",
94
+ "covered": "Toutes les variables utilisées sont couvertes.",
95
+ "help_invalid": "JSON invalide : l'aperçu retombe sur les noms de variables.",
96
+ "help_off": "Activez « Données de test » dans la barre du haut pour interpoler l'aperçu et évaluer les conditions.",
97
+ "help_valid": "JSON valide — variables interpolées et conditions évaluées pour de vrai.",
98
+ "save": "Enregistrer ce jeu",
99
+ "saved": "Données de test enregistrées",
100
+ "title": "Jeu de données de test",
101
+ "uncovered": "{count} variables non couvertes : {path} est utilisée par le template mais absente du jeu de test.",
102
+ "use": "Utiliser ce jeu de données"
103
+ },
104
+ "description": "Éditeur de blocs d'un template de mailing",
105
+ "desktop": "Desktop",
106
+ "discard": "Abandonner",
107
+ "discard_description": "Toutes les modifications non enregistrées reviennent à la dernière version enregistrée.",
108
+ "discard_title": "Abandonner le brouillon ?",
109
+ "groups": {
110
+ "conditional": "Affichage conditionnel",
111
+ "content": "Contenu",
112
+ "logic": "Logique",
113
+ "variables": "Variables disponibles"
114
+ },
115
+ "leave_guard": "Ce template a des modifications non enregistrées. Quitter quand même ?",
116
+ "load_error": "Ce modèle n'a pas pu être chargé.",
117
+ "loading": "Chargement du modèle…",
118
+ "missing_locale": {
119
+ "blank": "Partir d'une page vide",
120
+ "duplicate": "Dupliquer depuis {fallback}",
121
+ "hint": "Les envois en {locale} retombent sur {fallback}. Dupliquez pour traduire, ou repartez d'une page vide.",
122
+ "title": "Version {locale} inexistante"
123
+ },
124
+ "mobile": "Mobile",
125
+ "open_template_settings": "Réglages du template",
126
+ "operators": {
127
+ "eq": "est égal à",
128
+ "falsy": "est faux",
129
+ "gt": "est supérieur à",
130
+ "lt": "est inférieur à",
131
+ "ne": "est différent de",
132
+ "truthy": "est vrai"
133
+ },
134
+ "palette": {
135
+ "hint": "Glissez une tuile dans l'aperçu pour l'insérer à l'endroit voulu — y compris à l'intérieur d'une condition. Glissez un bloc existant pour le déplacer."
136
+ },
137
+ "preheader": "Préheader",
138
+ "preview_mode": {
139
+ "back": "Revenir aux noms de variables",
140
+ "data": "Aperçu : données de test",
141
+ "variables": "Aperçu : variables"
142
+ },
143
+ "publish": "Publier",
144
+ "published": "Modèle publié",
145
+ "save": "Enregistrer",
146
+ "saved": "Enregistré",
147
+ "settings_hint": "Sélectionnez un bloc sur la feuille pour le modifier.",
148
+ "status_hint": "Publier enregistre la date ; archiver empêche l'envoi du template.",
149
+ "still_called": "le code appelle toujours {slug}",
150
+ "subject": "Objet",
151
+ "subject_help": "Les variables non fournies à l'envoi feront échouer l'appel.",
152
+ "tabs": {
153
+ "blocks": "Blocs",
154
+ "data": "Données",
155
+ "settings": "Réglages",
156
+ "template": "Template"
157
+ },
158
+ "test_send": "Envoi de test",
159
+ "test_send_modal": {
160
+ "recipients": "Destinataires",
161
+ "send": "Envoyer",
162
+ "sent": "Test envoyé",
163
+ "title": "Envoi de test"
164
+ },
165
+ "title": "Éditeur",
166
+ "toggle_rail": "Afficher ou masquer le panneau latéral",
167
+ "unsaved": "{count} modifications non enregistrées",
168
+ "variables": {
169
+ "add": "Ajouter",
170
+ "cancel": "Annuler",
171
+ "declare": "Déclarer une variable",
172
+ "empty": "Aucune variable déclarée pour le moment.",
173
+ "insert": "Insérer cette variable",
174
+ "path": "Chemin",
175
+ "required": "Obligatoire",
176
+ "type": "Type",
177
+ "unused": "inutilisée"
178
+ }
179
+ },
180
+ "errors": {
181
+ "bad_webhook_secret": "Secret de webhook invalide.",
182
+ "duplicate_slug": "Ce slug est déjà utilisé.",
183
+ "invalid_body": "Le corps de la requête est invalide.",
184
+ "invalid_content": "Le contenu du template est invalide.",
185
+ "invalid_settings": "Les réglages sont invalides.",
186
+ "missing_send_permission": "Vous n'êtes pas autorisé à envoyer des e-mails.",
187
+ "missing_variables": "Des variables requises manquent à l'envoi.",
188
+ "no_recipient": "L'envoi n'a aucun destinataire.",
189
+ "send_not_found": "Cet envoi n'existe pas.",
190
+ "template_not_found": "Ce template n'existe pas.",
191
+ "template_not_live": "Ce template n'est pas en ligne.",
192
+ "unknown_metric": "Métrique inconnue.",
193
+ "version_not_found": "Cette version du template n'existe pas."
194
+ },
195
+ "funnel": {
196
+ "clicked": "Cliqués",
197
+ "delivered": "Délivrés",
198
+ "opened": "Ouverts",
199
+ "sent": "Envoyés",
200
+ "unsubscribed": "Désinscriptions"
201
+ },
202
+ "metrics": {
203
+ "bounces": "Rejets",
204
+ "click_rate": "Clics",
205
+ "deliverability": "Délivrabilité",
206
+ "domain_sends": "taux d'ouverture",
207
+ "domains": "Par domaine destinataire",
208
+ "latency": "Latence médiane",
209
+ "open_rate": "Ouverture",
210
+ "previous": "Période précédente",
211
+ "queued": "En file",
212
+ "ranking": "Classement des templates",
213
+ "sends": "Envois",
214
+ "unsubscribes": "Désinscriptions",
215
+ "volume": "Volume d'envoi"
216
+ },
217
+ "notifications": {
218
+ "bounce_description": "L'e-mail envoyé à {email} n'a pas pu être distribué.",
219
+ "bounce_title": "Problème de distribution sur {slug}"
220
+ },
221
+ "overview": {
222
+ "attention_empty": "Rien à signaler : traductions complètes, aucun rejet.",
223
+ "attention_title": "À traiter",
224
+ "description": "Le fournisseur transporte, ce module garde la mémoire — tous les chiffres ci-dessous sont agrégés localement.",
225
+ "funnel_title": "Entonnoir",
226
+ "title": "Vue d'ensemble"
227
+ },
228
+ "provider": {
229
+ "connected": "{name} connecté",
230
+ "disconnected": "Aucun fournisseur connecté"
231
+ },
232
+ "sends": {
233
+ "cols": {
234
+ "createdAt": "Envoyé le",
235
+ "error": "Erreur",
236
+ "isTest": "Test",
237
+ "latency": "Latence",
238
+ "latencyMs": "Latence",
239
+ "locale": "Langue",
240
+ "recipient": "Destinataire",
241
+ "recipientEmail": "Adresse du destinataire",
242
+ "recipientName": "Nom du destinataire",
243
+ "source": "Source",
244
+ "status": "Statut",
245
+ "template": "Template",
246
+ "templateSlug": "Template",
247
+ "test": "Test",
248
+ "when": "Quand"
249
+ },
250
+ "confirm": {
251
+ "replay_description": "La même version du template et les mêmes variables sont renvoyées au même destinataire.",
252
+ "replay_title": "Rejouer cet envoi ?"
253
+ },
254
+ "description": "Chaque envoi est journalisé ici, avec sa charge utile et ses événements fournisseur — l'historique reste local.",
255
+ "drawer": {
256
+ "invalid_address": "Adresse invalide",
257
+ "latency": "Latence API",
258
+ "locale": "Langue",
259
+ "payload": "Charge utile envoyée",
260
+ "replay": "Rejouer cet envoi",
261
+ "replayed": "Envoi rejoué",
262
+ "status": "Statut",
263
+ "template": "Template",
264
+ "timeline": "Chronologie",
265
+ "transport_error": "Erreur de transport",
266
+ "view_html": "Voir le rendu reçu"
267
+ },
268
+ "empty": "Aucun envoi ne correspond à ce filtre.",
269
+ "status": {
270
+ "bounced": "Rejeté",
271
+ "clicked": "Cliqué",
272
+ "delivered": "Délivré",
273
+ "failed": "Échec",
274
+ "opened": "Ouvert",
275
+ "queued": "En file",
276
+ "sent": "Envoyé",
277
+ "spam": "Spam",
278
+ "unsubscribed": "Désinscrit"
279
+ },
280
+ "tabs": {
281
+ "problems": "Problèmes"
282
+ },
283
+ "timeline": {
284
+ "bounced": "Rejet permanent",
285
+ "clicked": "Cliqué",
286
+ "delivered": "Délivré",
287
+ "failed": "Échec de l'envoi",
288
+ "opened": "Ouvert",
289
+ "queued": "Mis en file",
290
+ "sent": "Transmis au fournisseur",
291
+ "spam": "Marqué comme spam",
292
+ "unsubscribed": "Désinscription"
293
+ },
294
+ "title": "Envois"
295
+ },
296
+ "settings": {
297
+ "categories": {
298
+ "add": "Ajouter une catégorie",
299
+ "empty": "Aucune catégorie. Les templates peuvent rester sans catégorie.",
300
+ "hint": "Supprimer une catégorie laisse sans catégorie les templates qui l'utilisaient. L'icône est un nom Phosphor, comme i-ph-package.",
301
+ "label": "Nom de la catégorie",
302
+ "remove": "Retirer"
303
+ },
304
+ "description": "Expéditeur, rétention et garde-fous d'envoi du module mailing.",
305
+ "fields": {
306
+ "blockOnMissingVariables": "Bloquer l'envoi si une variable manque",
307
+ "categories": "Catégories de templates",
308
+ "fallbackLocale": "Langue de repli",
309
+ "logRetentionDays": "Rétention des logs (jours)",
310
+ "replyTo": "Adresse de réponse",
311
+ "senderEmail": "Adresse d'expédition",
312
+ "senderName": "Nom de l'expéditeur",
313
+ "webhookSecret": "Secret du webhook"
314
+ },
315
+ "title": "Réglages"
316
+ },
317
+ "templates": {
318
+ "actions": {
319
+ "archive": "Archiver",
320
+ "archived": "Template archivé",
321
+ "create": "Nouveau template",
322
+ "details": "Détails",
323
+ "duplicate": "Dupliquer",
324
+ "edit": "Éditer",
325
+ "new": "Nouveau modèle",
326
+ "open_editor": "Ouvrir l'éditeur",
327
+ "publish": "Publier",
328
+ "published": "Template publié",
329
+ "send": "Envoyer",
330
+ "test_send": "Envoi de test",
331
+ "unpublish": "Dépublier",
332
+ "unpublished": "Template dépublié"
333
+ },
334
+ "card": {
335
+ "add_locale": "Ajouter la version {locale} — absente",
336
+ "edit_locale": "Modifier la version {locale}",
337
+ "open": "ouv.",
338
+ "sends": "envois"
339
+ },
340
+ "cols": {
341
+ "category": "Catégorie",
342
+ "locales": "Langues",
343
+ "name": "Nom",
344
+ "slug": "Slug",
345
+ "status": "Statut",
346
+ "updatedAt": "Modifié",
347
+ "updatedBy": "Modifié par"
348
+ },
349
+ "confirm": {
350
+ "archive_description": "Un template archivé ne peut plus être envoyé. Les versions sont conservées.",
351
+ "archive_title": "Archiver ce template ?"
352
+ },
353
+ "description": "Un slug, des variables typées, une version par enregistrement. Le rendu est compilé à l'enregistrement et envoyé via le fournisseur configuré.",
354
+ "display": {
355
+ "gallery": "Grille",
356
+ "table": "Tableau"
357
+ },
358
+ "drawer": {
359
+ "create_locale": "Créer la version {locale}",
360
+ "declare_variable": "Déclarer une variable",
361
+ "missing_locale": "Version {locale} absente. L'envoi retombe sur {fallback}.",
362
+ "no_variables": "Ce template n'utilise encore aucune variable.",
363
+ "required": "requis",
364
+ "stats_click": "Clics",
365
+ "stats_open": "Ouverture",
366
+ "stats_sends": "Envois",
367
+ "unused": "inutilisée",
368
+ "variables": "Variables"
369
+ },
370
+ "empty": {
371
+ "hint": "Aucun template ne correspond à ce filtre.",
372
+ "reset": "Réinitialiser les filtres",
373
+ "title": "Aucun template"
374
+ },
375
+ "send_modal": {
376
+ "confirm": "Je comprends qu'il s'agit d'un envoi réel",
377
+ "draft_hint": "Seul un template en ligne peut être envoyé pour de vrai. Publiez-le, ou faites un envoi de test.",
378
+ "real_hint": "Il atteint les destinataires ci-dessous et compte dans les statistiques. Aucun retour en arrière possible.",
379
+ "real_title": "Ce message part vraiment",
380
+ "send": "Envoyer pour de vrai",
381
+ "title": "Envoyer"
382
+ },
383
+ "start_from": {
384
+ "blank": "Vierge",
385
+ "label": "Partir de"
386
+ },
387
+ "status": {
388
+ "archived": "Archivé",
389
+ "draft": "Brouillon",
390
+ "live": "En ligne"
391
+ },
392
+ "title": "Templates",
393
+ "uncategorised": "Sans catégorie"
394
+ },
395
+ "title": "Mailing"
396
+ }
397
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@antelopejs/dms-mailing-frontend-vue",
3
+ "version": "0.0.1",
4
+ "private": true,
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "packageManager": "pnpm@10.2.0",
8
+ "scripts": {
9
+ "format": "prettier --write .",
10
+ "lint": "eslint .",
11
+ "lint:fix": "eslint . --fix",
12
+ "test": "vitest run"
13
+ },
14
+ "dependencies": {
15
+ "@vueuse/core": "^13.0.0",
16
+ "vue": "^3.5.18",
17
+ "vuedraggable": "^4.1.0"
18
+ },
19
+ "devDependencies": {
20
+ "@nuxt/ui": "^4.0.1",
21
+ "@vitejs/plugin-vue": "^6.0.0",
22
+ "@vitest/runner": "^4.1.5",
23
+ "eslint": "^9.0.0",
24
+ "eslint-plugin-vue": "^10.0.0",
25
+ "typescript-eslint": "^8.0.0",
26
+ "jsdom": "^26",
27
+ "prettier": "^3.5.3",
28
+ "prettier-plugin-tailwindcss": "^0.6.11",
29
+ "typescript": "^5.9.3",
30
+ "vitest": "^4.1.5"
31
+ }
32
+ }