@antelopejs/dms-mailing 0.6.0 → 0.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.
Files changed (187) hide show
  1. package/dist/constants.d.ts +1 -0
  2. package/dist/constants.js +2 -1
  3. package/dist/constants.js.map +1 -1
  4. package/dist/data/templates-table.d.ts +4 -1
  5. package/dist/data/templates-table.js +55 -13
  6. package/dist/data/templates-table.js.map +1 -1
  7. package/dist/data-types/categories-type.d.ts +5 -5
  8. package/dist/db/models/templates.model.d.ts +10 -1
  9. package/dist/db/models/templates.model.js +27 -1
  10. package/dist/db/models/templates.model.js.map +1 -1
  11. package/dist/db/tables/templates.table.d.ts +7 -1
  12. package/dist/db/tables/templates.table.js +3 -1
  13. package/dist/db/tables/templates.table.js.map +1 -1
  14. package/dist/engine/formats.d.ts +13 -0
  15. package/dist/engine/formats.js +85 -0
  16. package/dist/engine/formats.js.map +1 -0
  17. package/dist/engine/index.d.ts +1 -0
  18. package/dist/engine/index.js +1 -0
  19. package/dist/engine/index.js.map +1 -1
  20. package/dist/engine/resolve.d.ts +2 -1
  21. package/dist/engine/resolve.js +14 -7
  22. package/dist/engine/resolve.js.map +1 -1
  23. package/dist/engine/tokens.d.ts +2 -1
  24. package/dist/engine/tokens.js +3 -5
  25. package/dist/engine/tokens.js.map +1 -1
  26. package/dist/frontend-module.d.ts +2 -0
  27. package/dist/frontend-module.js +24 -0
  28. package/dist/frontend-module.js.map +1 -0
  29. package/dist/hooks/tenant-export.js +4 -1
  30. package/dist/hooks/tenant-export.js.map +1 -1
  31. package/dist/implementations/dms-mailing/index.d.ts +1 -0
  32. package/dist/implementations/dms-mailing/index.js +3 -1
  33. package/dist/implementations/dms-mailing/index.js.map +1 -1
  34. package/dist/index.js +2 -19
  35. package/dist/index.js.map +1 -1
  36. package/dist/pages/overview.d.ts +1 -1
  37. package/dist/pages/overview.js +11 -13
  38. package/dist/pages/overview.js.map +1 -1
  39. package/dist/pages/sends.d.ts +1 -1
  40. package/dist/pages/sends.js +16 -8
  41. package/dist/pages/sends.js.map +1 -1
  42. package/dist/pages/templates.js +3 -8
  43. package/dist/pages/templates.js.map +1 -1
  44. package/dist/pages/toolbar.d.ts +12 -0
  45. package/dist/pages/toolbar.js +41 -0
  46. package/dist/pages/toolbar.js.map +1 -0
  47. package/dist/realtime.d.ts +2 -2
  48. package/dist/realtime.js +8 -8
  49. package/dist/realtime.js.map +1 -1
  50. package/dist/routes/metrics.d.ts +9 -2
  51. package/dist/routes/metrics.js +90 -35
  52. package/dist/routes/metrics.js.map +1 -1
  53. package/dist/routes/period.d.ts +1 -0
  54. package/dist/routes/period.js +19 -0
  55. package/dist/routes/period.js.map +1 -1
  56. package/dist/routes/sends.js +6 -3
  57. package/dist/routes/sends.js.map +1 -1
  58. package/dist/routes/settings.js +6 -7
  59. package/dist/routes/settings.js.map +1 -1
  60. package/dist/routes/templates.d.ts +8 -4
  61. package/dist/routes/templates.js +40 -15
  62. package/dist/routes/templates.js.map +1 -1
  63. package/dist/services/categories.d.ts +2 -1
  64. package/dist/services/categories.js +9 -0
  65. package/dist/services/categories.js.map +1 -1
  66. package/dist/services/declarations.js +2 -2
  67. package/dist/services/declarations.js.map +1 -1
  68. package/dist/services/events.js +1 -1
  69. package/dist/services/events.js.map +1 -1
  70. package/dist/services/localized-text.d.ts +7 -0
  71. package/dist/services/localized-text.js +28 -0
  72. package/dist/services/localized-text.js.map +1 -0
  73. package/dist/services/send-stat-items.js +34 -12
  74. package/dist/services/send-stat-items.js.map +1 -1
  75. package/dist/services/send-stats.d.ts +7 -0
  76. package/dist/services/send-stats.js +17 -5
  77. package/dist/services/send-stats.js.map +1 -1
  78. package/dist/services/send.d.ts +2 -0
  79. package/dist/services/send.js +11 -12
  80. package/dist/services/send.js.map +1 -1
  81. package/dist/services/sender-declaration.d.ts +2 -0
  82. package/dist/services/sender-declaration.js +18 -0
  83. package/dist/services/sender-declaration.js.map +1 -0
  84. package/dist/services/starters.d.ts +2 -2
  85. package/dist/services/starters.js +1 -10
  86. package/dist/services/starters.js.map +1 -1
  87. package/dist/services/templates.d.ts +11 -5
  88. package/dist/services/templates.js +24 -6
  89. package/dist/services/templates.js.map +1 -1
  90. package/dist/services/webhook-status.d.ts +2 -1
  91. package/dist/services/webhook-status.js +6 -5
  92. package/dist/services/webhook-status.js.map +1 -1
  93. package/dist/types/settings.d.ts +6 -0
  94. package/dist/types/settings.js +25 -5
  95. package/dist/types/settings.js.map +1 -1
  96. package/dist/validation/declarations.schema.d.ts +25 -7
  97. package/dist/validation/declarations.schema.js +16 -3
  98. package/dist/validation/declarations.schema.js.map +1 -1
  99. package/dist/validation/settings.schema.d.ts +25 -25
  100. package/dist/validation/settings.schema.js +30 -6
  101. package/dist/validation/settings.schema.js.map +1 -1
  102. package/dist/validation/templates.schema.d.ts +13 -0
  103. package/dist/validation/templates.schema.js +6 -1
  104. package/dist/validation/templates.schema.js.map +1 -1
  105. package/frontend-vue/app/components/CategoriesInput.vue +15 -13
  106. package/frontend-vue/app/components/FunnelCard.vue +46 -3
  107. package/frontend-vue/app/components/NewTemplateModal.vue +4 -2
  108. package/frontend-vue/app/components/OverviewGate.vue +0 -8
  109. package/frontend-vue/app/components/ProviderPill.vue +50 -0
  110. package/frontend-vue/app/components/SendDrawer.vue +206 -183
  111. package/frontend-vue/app/components/StarterGallery.vue +1 -1
  112. package/frontend-vue/app/components/TemplateCard.vue +4 -1
  113. package/frontend-vue/app/components/TemplateDrawer.vue +3 -5
  114. package/frontend-vue/app/components/TemplateGallery.vue +57 -17
  115. package/frontend-vue/app/components/TemplatePreviewFrame.vue +41 -11
  116. package/frontend-vue/app/components/editor/EditorTemplatePane.vue +1 -3
  117. package/frontend-vue/app/components/editor/EditorTitle.vue +1 -7
  118. package/frontend-vue/app/composables/useLocalizedDefaults.ts +5 -7
  119. package/frontend-vue/app/composables/useMailingApi.ts +3 -3
  120. package/frontend-vue/app/composables/useMailingReads.ts +2 -2
  121. package/frontend-vue/app/composables/useTemplateCategories.ts +8 -7
  122. package/frontend-vue/app/types/mailing.ts +18 -0
  123. package/frontend-vue/app/utils/categories.ts +58 -49
  124. package/frontend-vue/app/utils/funnel.ts +25 -0
  125. package/frontend-vue/app/utils/period.ts +0 -7
  126. package/frontend-vue/app/utils/starters.ts +3 -1
  127. package/frontend-vue/app/utils/tokens.ts +6 -1
  128. package/frontend-vue/i18n/locales/mailing-en-GB.json +19 -28
  129. package/frontend-vue/i18n/locales/mailing-fr-FR.json +19 -28
  130. package/frontend-vue/package.json +1 -1
  131. package/frontend-vue/tests/categories-input.test.ts +4 -10
  132. package/frontend-vue/tests/categories.test.ts +55 -17
  133. package/frontend-vue/tests/conditions.test.ts +1 -4
  134. package/frontend-vue/tests/funnel-card.test.ts +27 -0
  135. package/frontend-vue/tests/funnel.test.ts +25 -0
  136. package/frontend-vue/tests/localized-defaults.test.ts +0 -29
  137. package/frontend-vue/tests/new-template-modal.test.ts +1 -1
  138. package/frontend-vue/tests/overview-gate.test.ts +1 -24
  139. package/frontend-vue/tests/page-reads.test.ts +9 -25
  140. package/frontend-vue/tests/period.test.ts +0 -12
  141. package/frontend-vue/tests/replay-toast.test.ts +2 -1
  142. package/frontend-vue/tests/send-drawer.test.ts +123 -0
  143. package/frontend-vue/tests/template-drawer.test.ts +1 -1
  144. package/frontend-vue/tests/template-gallery.test.ts +90 -3
  145. package/frontend-vue/tests/template-preview-frame.test.ts +92 -0
  146. package/package.json +6 -5
  147. package/skills/dms-mailing/SKILL.md +17 -4
  148. package/src/constants.ts +2 -0
  149. package/src/data/sends-table.ts +1 -1
  150. package/src/data/templates-table.ts +123 -19
  151. package/src/db/models/templates.model.ts +61 -3
  152. package/src/db/tables/templates.table.ts +10 -1
  153. package/src/engine/formats.ts +124 -0
  154. package/src/engine/index.ts +1 -0
  155. package/src/engine/resolve.ts +18 -7
  156. package/src/engine/tokens.ts +7 -5
  157. package/src/frontend-module.ts +36 -0
  158. package/src/hooks/tenant-export.ts +8 -1
  159. package/src/implementations/dms-mailing/index.ts +2 -0
  160. package/src/index.ts +2 -23
  161. package/src/pages/overview.ts +20 -16
  162. package/src/pages/sends.ts +27 -11
  163. package/src/pages/templates.ts +4 -8
  164. package/src/pages/toolbar.ts +77 -0
  165. package/src/realtime.ts +17 -8
  166. package/src/routes/metrics.ts +158 -45
  167. package/src/routes/period.ts +32 -0
  168. package/src/routes/sends.ts +13 -4
  169. package/src/routes/settings.ts +11 -8
  170. package/src/routes/templates.ts +72 -26
  171. package/src/services/categories.ts +14 -1
  172. package/src/services/declarations.ts +4 -3
  173. package/src/services/events.ts +1 -1
  174. package/src/services/localized-text.ts +53 -0
  175. package/src/services/send-stat-items.ts +60 -13
  176. package/src/services/send-stats.ts +37 -5
  177. package/src/services/send.ts +19 -20
  178. package/src/services/sender-declaration.ts +27 -0
  179. package/src/services/starters.ts +3 -15
  180. package/src/services/templates.ts +50 -19
  181. package/src/services/webhook-status.ts +3 -3
  182. package/src/types/settings.ts +35 -5
  183. package/src/validation/declarations.schema.ts +29 -3
  184. package/src/validation/settings.schema.ts +56 -14
  185. package/src/validation/templates.schema.ts +10 -0
  186. package/frontend-vue/app/components/PageHeader.vue +0 -94
  187. package/frontend-vue/app/composables/useOverviewSetup.ts +0 -21
@@ -1,8 +1,9 @@
1
1
  import { z } from "zod";
2
+ export declare const localizedTextSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodString>, Record<string, string>, Record<string, string>>;
2
3
  export declare const templateDeclarationSchema: z.ZodObject<{
3
4
  tenantId: z.ZodString;
4
5
  slug: z.ZodString;
5
- name: z.ZodString;
6
+ name: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodString>, Record<string, string>, Record<string, string>>;
6
7
  category: z.ZodDefault<z.ZodString>;
7
8
  content: z.ZodObject<{
8
9
  locales: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -47,7 +48,7 @@ export declare const templateDeclarationSchema: z.ZodObject<{
47
48
  testData: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
48
49
  author: z.ZodOptional<z.ZodString>;
49
50
  }, "strip", z.ZodTypeAny, {
50
- name: string;
51
+ name: Record<string, string>;
51
52
  content: {
52
53
  locales: Record<string, {
53
54
  subject: string;
@@ -55,8 +56,8 @@ export declare const templateDeclarationSchema: z.ZodObject<{
55
56
  blocks: unknown[];
56
57
  }>;
57
58
  };
58
- category: string;
59
59
  tenantId: string;
60
+ category: string;
60
61
  slug: string;
61
62
  variables: {
62
63
  path: string;
@@ -66,7 +67,7 @@ export declare const templateDeclarationSchema: z.ZodObject<{
66
67
  testData: Record<string, unknown>;
67
68
  author?: string | undefined;
68
69
  }, {
69
- name: string;
70
+ name: Record<string, string>;
70
71
  content: {
71
72
  locales: Record<string, {
72
73
  subject: string;
@@ -91,19 +92,36 @@ export declare const categoryDeclarationSchema: z.ZodObject<{
91
92
  icon: z.ZodString;
92
93
  } & {
93
94
  tenantId: z.ZodString;
94
- label: z.ZodString;
95
+ label: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodString>, Record<string, string>, Record<string, string>>;
95
96
  }, "strip", z.ZodTypeAny, {
96
97
  id: string;
97
- label: string;
98
+ label: Record<string, string>;
98
99
  icon: string;
99
100
  tenantId: string;
100
101
  }, {
101
102
  id: string;
102
- label: string;
103
+ label: Record<string, string>;
103
104
  icon: string;
104
105
  tenantId: string;
105
106
  }>;
106
107
  export type ParsedCategoryDeclaration = z.infer<typeof categoryDeclarationSchema>;
108
+ export declare const senderDeclarationSchema: z.ZodObject<{
109
+ tenantId: z.ZodString;
110
+ email: z.ZodPipeline<z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodUnion<[z.ZodLiteral<"">, z.ZodString]>>, z.ZodString>;
111
+ name: z.ZodDefault<z.ZodEffects<z.ZodString, string, string>>;
112
+ replyTo: z.ZodDefault<z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodUnion<[z.ZodLiteral<"">, z.ZodString]>>>;
113
+ }, "strip", z.ZodTypeAny, {
114
+ email: string;
115
+ name: string;
116
+ tenantId: string;
117
+ replyTo: string;
118
+ }, {
119
+ email: string;
120
+ tenantId: string;
121
+ name?: string | undefined;
122
+ replyTo?: string | undefined;
123
+ }>;
124
+ export type ParsedSenderDeclaration = z.infer<typeof senderDeclarationSchema>;
107
125
  declare const importedSendSchema: z.ZodObject<{
108
126
  importId: z.ZodString;
109
127
  templateSlug: z.ZodString;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendImportSchema = exports.categoryDeclarationSchema = exports.templateDeclarationSchema = void 0;
3
+ exports.sendImportSchema = exports.senderDeclarationSchema = exports.categoryDeclarationSchema = exports.templateDeclarationSchema = exports.localizedTextSchema = void 0;
4
+ const interface_dms_mailing_1 = require("@antelopejs/interface-dms-mailing");
4
5
  const zod_1 = require("zod");
5
6
  const constants_1 = require("../constants");
6
7
  const types_1 = require("../types");
@@ -9,10 +10,15 @@ const templates_schema_1 = require("./templates.schema");
9
10
  const MAX_AUTHOR_LENGTH = constants_1.MAX_NAME_LENGTH;
10
11
  const MAX_IMPORT_ID_LENGTH = 200;
11
12
  const tenantIdSchema = zod_1.z.string().trim().min(1);
13
+ exports.localizedTextSchema = zod_1.z
14
+ .record(zod_1.z.string().trim().min(1).max(constants_1.MAX_NAME_LENGTH))
15
+ .refine((text) => Boolean(text[interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE]), {
16
+ message: `a text in "${interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE}" is required`,
17
+ });
12
18
  exports.templateDeclarationSchema = zod_1.z.object({
13
19
  tenantId: tenantIdSchema,
14
20
  slug: templates_schema_1.slugSchema,
15
- name: zod_1.z.string().trim().min(1).max(constants_1.MAX_NAME_LENGTH),
21
+ name: exports.localizedTextSchema,
16
22
  category: zod_1.z.string().trim().default(""),
17
23
  content: templates_schema_1.templateContentSchema,
18
24
  variables: templates_schema_1.variableListSchema.default([]),
@@ -21,7 +27,14 @@ exports.templateDeclarationSchema = zod_1.z.object({
21
27
  });
22
28
  exports.categoryDeclarationSchema = settings_schema_1.categorySchema.extend({
23
29
  tenantId: tenantIdSchema,
24
- label: zod_1.z.string().trim().min(1).max(constants_1.MAX_NAME_LENGTH),
30
+ label: exports.localizedTextSchema,
31
+ });
32
+ const SENDER_REQUIRED = "a sender address is required";
33
+ exports.senderDeclarationSchema = zod_1.z.object({
34
+ tenantId: tenantIdSchema,
35
+ email: settings_schema_1.settingsSchema.shape.senderEmail.pipe(zod_1.z.string().min(1, SENDER_REQUIRED)),
36
+ name: settings_schema_1.settingsSchema.shape.senderName.default(""),
37
+ replyTo: settings_schema_1.settingsSchema.shape.replyTo.default(""),
25
38
  });
26
39
  const recipientSchema = zod_1.z.union([
27
40
  zod_1.z.string().trim().email(),
@@ -1 +1 @@
1
- {"version":3,"file":"declarations.schema.js","sourceRoot":"","sources":["../../src/validation/declarations.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarations.schema.js","sourceRoot":"","sources":["../../src/validation/declarations.schema.ts"],"names":[],"mappings":"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"}
@@ -5,59 +5,59 @@ export declare const MIN_WEBHOOK_SECRET_LENGTH = 32;
5
5
  export declare const WEBHOOK_SECRET_TOO_SHORT: string;
6
6
  export declare const categorySchema: z.ZodObject<{
7
7
  id: z.ZodString;
8
- label: z.ZodString;
8
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
9
9
  icon: z.ZodString;
10
10
  }, "strip", z.ZodTypeAny, {
11
11
  id: string;
12
- label: string;
12
+ label: Record<string, string>;
13
13
  icon: string;
14
14
  }, {
15
15
  id: string;
16
- label: string;
16
+ label: Record<string, string>;
17
17
  icon: string;
18
18
  }>;
19
19
  declare const categoryEntrySchema: z.ZodObject<{
20
20
  id: z.ZodString;
21
- label: z.ZodString;
21
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
22
22
  icon: z.ZodString;
23
23
  } & {
24
24
  moveTo: z.ZodOptional<z.ZodString>;
25
25
  }, "strip", z.ZodTypeAny, {
26
26
  id: string;
27
- label: string;
27
+ label: Record<string, string>;
28
28
  icon: string;
29
29
  moveTo?: string | undefined;
30
30
  }, {
31
31
  id: string;
32
- label: string;
32
+ label: Record<string, string>;
33
33
  icon: string;
34
34
  moveTo?: string | undefined;
35
35
  }>;
36
36
  export type CategoryEntry = z.infer<typeof categoryEntrySchema>;
37
37
  export declare const categoriesSchema: z.ZodEffects<z.ZodArray<z.ZodObject<{
38
38
  id: z.ZodString;
39
- label: z.ZodString;
39
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
40
40
  icon: z.ZodString;
41
41
  } & {
42
42
  moveTo: z.ZodOptional<z.ZodString>;
43
43
  }, "strip", z.ZodTypeAny, {
44
44
  id: string;
45
- label: string;
45
+ label: Record<string, string>;
46
46
  icon: string;
47
47
  moveTo?: string | undefined;
48
48
  }, {
49
49
  id: string;
50
- label: string;
50
+ label: Record<string, string>;
51
51
  icon: string;
52
52
  moveTo?: string | undefined;
53
53
  }>, "many">, {
54
54
  id: string;
55
- label: string;
55
+ label: Record<string, string>;
56
56
  icon: string;
57
57
  moveTo?: string | undefined;
58
58
  }[], {
59
59
  id: string;
60
- label: string;
60
+ label: Record<string, string>;
61
61
  icon: string;
62
62
  moveTo?: string | undefined;
63
63
  }[]>;
@@ -71,28 +71,28 @@ export declare const settingsSchema: z.ZodObject<{
71
71
  webhookSecret: z.ZodString;
72
72
  categories: z.ZodEffects<z.ZodArray<z.ZodObject<{
73
73
  id: z.ZodString;
74
- label: z.ZodString;
74
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
75
75
  icon: z.ZodString;
76
76
  } & {
77
77
  moveTo: z.ZodOptional<z.ZodString>;
78
78
  }, "strip", z.ZodTypeAny, {
79
79
  id: string;
80
- label: string;
80
+ label: Record<string, string>;
81
81
  icon: string;
82
82
  moveTo?: string | undefined;
83
83
  }, {
84
84
  id: string;
85
- label: string;
85
+ label: Record<string, string>;
86
86
  icon: string;
87
87
  moveTo?: string | undefined;
88
88
  }>, "many">, {
89
89
  id: string;
90
- label: string;
90
+ label: Record<string, string>;
91
91
  icon: string;
92
92
  moveTo?: string | undefined;
93
93
  }[], {
94
94
  id: string;
95
- label: string;
95
+ label: Record<string, string>;
96
96
  icon: string;
97
97
  moveTo?: string | undefined;
98
98
  }[]>;
@@ -106,7 +106,7 @@ export declare const settingsSchema: z.ZodObject<{
106
106
  webhookSecret: string;
107
107
  categories: {
108
108
  id: string;
109
- label: string;
109
+ label: Record<string, string>;
110
110
  icon: string;
111
111
  moveTo?: string | undefined;
112
112
  }[];
@@ -120,7 +120,7 @@ export declare const settingsSchema: z.ZodObject<{
120
120
  webhookSecret: string;
121
121
  categories: {
122
122
  id: string;
123
- label: string;
123
+ label: Record<string, string>;
124
124
  icon: string;
125
125
  moveTo?: string | undefined;
126
126
  }[];
@@ -135,28 +135,28 @@ export declare const settingsPatchSchema: z.ZodObject<{
135
135
  webhookSecret: z.ZodOptional<z.ZodString>;
136
136
  categories: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodObject<{
137
137
  id: z.ZodString;
138
- label: z.ZodString;
138
+ label: z.ZodRecord<z.ZodString, z.ZodString>;
139
139
  icon: z.ZodString;
140
140
  } & {
141
141
  moveTo: z.ZodOptional<z.ZodString>;
142
142
  }, "strip", z.ZodTypeAny, {
143
143
  id: string;
144
- label: string;
144
+ label: Record<string, string>;
145
145
  icon: string;
146
146
  moveTo?: string | undefined;
147
147
  }, {
148
148
  id: string;
149
- label: string;
149
+ label: Record<string, string>;
150
150
  icon: string;
151
151
  moveTo?: string | undefined;
152
152
  }>, "many">, {
153
153
  id: string;
154
- label: string;
154
+ label: Record<string, string>;
155
155
  icon: string;
156
156
  moveTo?: string | undefined;
157
157
  }[], {
158
158
  id: string;
159
- label: string;
159
+ label: Record<string, string>;
160
160
  icon: string;
161
161
  moveTo?: string | undefined;
162
162
  }[]>>;
@@ -172,7 +172,7 @@ export declare const settingsPatchSchema: z.ZodObject<{
172
172
  webhookSecret?: string | undefined;
173
173
  categories?: {
174
174
  id: string;
175
- label: string;
175
+ label: Record<string, string>;
176
176
  icon: string;
177
177
  moveTo?: string | undefined;
178
178
  }[] | undefined;
@@ -187,7 +187,7 @@ export declare const settingsPatchSchema: z.ZodObject<{
187
187
  webhookSecret?: string | undefined;
188
188
  categories?: {
189
189
  id: string;
190
- label: string;
190
+ label: Record<string, string>;
191
191
  icon: string;
192
192
  moveTo?: string | undefined;
193
193
  }[] | undefined;
@@ -4,6 +4,7 @@ exports.settingsPatchSchema = exports.settingsSchema = exports.categoriesSchema
4
4
  const node_url_1 = require("node:url");
5
5
  const zod_1 = require("zod");
6
6
  const constants_1 = require("../constants");
7
+ const interface_dms_mailing_1 = require("@antelopejs/interface-dms-mailing");
7
8
  const engine_1 = require("../engine");
8
9
  exports.MIN_RETENTION_DAYS = 1;
9
10
  exports.MAX_RETENTION_DAYS = 3650;
@@ -23,12 +24,23 @@ exports.WEBHOOK_SECRET_TOO_SHORT = messageKey("fields.webhookSecret.too_short");
23
24
  const MISSING_VARIABLES_POLICIES = ["refuse", "send"];
24
25
  exports.categorySchema = zod_1.z.object({
25
26
  id: zod_1.z.string().max(constants_1.MAX_NAME_LENGTH).regex(constants_1.SLUG_PATTERN),
26
- label: zod_1.z.string().trim().max(constants_1.MAX_NAME_LENGTH),
27
+ label: zod_1.z.record(zod_1.z.string().trim().max(constants_1.MAX_NAME_LENGTH)),
27
28
  icon: zod_1.z.string().regex(CATEGORY_ICON_PATTERN),
28
29
  });
29
30
  const categoryEntrySchema = exports.categorySchema.extend({
30
31
  moveTo: zod_1.z.string().regex(constants_1.SLUG_PATTERN).optional(),
31
32
  });
33
+ function languagesOf(entries) {
34
+ const codes = entries.flatMap((entry) => Object.keys(entry.label));
35
+ return [...new Set([interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE, ...codes])];
36
+ }
37
+ function entriesIn(entries, locale) {
38
+ return entries.map(({ id, label, moveTo }) => ({
39
+ id,
40
+ label: label[locale] || label[interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE] || "",
41
+ moveTo,
42
+ }));
43
+ }
32
44
  const isKept = (entry) => entry.moveTo === undefined;
33
45
  function duplicateIssues(entries) {
34
46
  const labels = new Set();
@@ -61,13 +73,25 @@ function moveIssues(entries, kept) {
61
73
  : [{ message: UNKNOWN_MOVE_TARGET, path: [index, "moveTo"] }]);
62
74
  }
63
75
  function refineCategoryEntries(entries, context) {
64
- const kept = new Set(entries.filter(isKept).map((entry) => entry.id));
76
+ const kept = new Set(entries.filter((entry) => entry.moveTo === undefined).map(({ id }) => id));
77
+ const labelIssues = languagesOf(entries).flatMap((locale) => {
78
+ const inLocale = entriesIn(entries, locale);
79
+ return [...blankLabelIssues(inLocale), ...duplicateIssues(inLocale)];
80
+ });
81
+ const seen = new Set();
65
82
  [
66
- ...blankLabelIssues(entries),
67
- ...duplicateIssues(entries),
83
+ ...labelIssues,
68
84
  ...marketingIssues(kept),
69
- ...moveIssues(entries, kept),
70
- ].forEach((issue) => context.addIssue({ code: zod_1.z.ZodIssueCode.custom, ...issue }));
85
+ ...moveIssues(entriesIn(entries, interface_dms_mailing_1.LOCALIZED_TEXT_FALLBACK_LOCALE), kept),
86
+ ]
87
+ .filter((issue) => {
88
+ const id = JSON.stringify(issue);
89
+ if (seen.has(id))
90
+ return false;
91
+ seen.add(id);
92
+ return true;
93
+ })
94
+ .forEach((issue) => context.addIssue({ code: zod_1.z.ZodIssueCode.custom, ...issue }));
71
95
  }
72
96
  exports.categoriesSchema = zod_1.z
73
97
  .array(categoryEntrySchema)
@@ -1 +1 @@
1
- {"version":3,"file":"settings.schema.js","sourceRoot":"","sources":["../../src/validation/settings.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.schema.js","sourceRoot":"","sources":["../../src/validation/settings.schema.ts"],"names":[],"mappings":"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"}
@@ -349,6 +349,19 @@ export declare const testSendSchema: z.ZodObject<{
349
349
  data?: Record<string, unknown> | undefined;
350
350
  locale?: string | undefined;
351
351
  }>;
352
+ export declare const templateDetailsSchema: z.ZodObject<{
353
+ name: z.ZodString;
354
+ slug: z.ZodOptional<z.ZodString>;
355
+ category: z.ZodOptional<z.ZodNullable<z.ZodString>>;
356
+ }, "strip", z.ZodTypeAny, {
357
+ name: string;
358
+ category?: string | null | undefined;
359
+ slug?: string | undefined;
360
+ }, {
361
+ name: string;
362
+ category?: string | null | undefined;
363
+ slug?: string | undefined;
364
+ }>;
352
365
  export declare const duplicateSchema: z.ZodObject<{
353
366
  slug: z.ZodString;
354
367
  name: z.ZodString;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replayFailedSchema = exports.replaySchema = exports.duplicateSchema = exports.testSendSchema = exports.realSendSchema = exports.previewSchema = exports.previewVersionSchema = exports.testDataSchema = exports.saveContentSchema = exports.variablesSchema = exports.variableListSchema = exports.variableSchema = exports.versionNumberSchema = exports.restoreVersionSchema = exports.publishSchema = exports.draftRevisionSchema = exports.templateContentSchema = exports.localeContentSchema = exports.blockSchema = exports.conditionSchema = exports.createTemplateSchema = exports.slugSchema = void 0;
3
+ exports.replayFailedSchema = exports.replaySchema = exports.duplicateSchema = exports.templateDetailsSchema = exports.testSendSchema = exports.realSendSchema = exports.previewSchema = exports.previewVersionSchema = exports.testDataSchema = exports.saveContentSchema = exports.variablesSchema = exports.variableListSchema = exports.variableSchema = exports.versionNumberSchema = exports.restoreVersionSchema = exports.publishSchema = exports.draftRevisionSchema = exports.templateContentSchema = exports.localeContentSchema = exports.blockSchema = exports.conditionSchema = exports.createTemplateSchema = exports.slugSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const constants_1 = require("../constants");
6
6
  const MIN_HEADING_SIZE = 12;
@@ -139,6 +139,11 @@ exports.realSendSchema = zod_1.z.object({
139
139
  exports.testSendSchema = exports.previewSchema.extend({
140
140
  to: zod_1.z.array(zod_1.z.string().email()).min(1).max(MAX_TEST_RECIPIENT_COUNT),
141
141
  });
142
+ exports.templateDetailsSchema = zod_1.z.object({
143
+ name: zod_1.z.string().trim().min(1).max(constants_1.MAX_NAME_LENGTH),
144
+ slug: zod_1.z.string().optional(),
145
+ category: zod_1.z.string().nullable().optional(),
146
+ });
142
147
  exports.duplicateSchema = zod_1.z.object({
143
148
  slug: exports.slugSchema,
144
149
  name: zod_1.z.string().trim().min(1).max(constants_1.MAX_NAME_LENGTH),
@@ -1 +1 @@
1
- {"version":3,"file":"templates.schema.js","sourceRoot":"","sources":["../../src/validation/templates.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.schema.js","sourceRoot":"","sources":["../../src/validation/templates.schema.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  <script setup lang="ts">
2
2
  import { useSortableList } from '../composables/useSortableList'
3
- import { useLocalizedDefaults } from '../composables/useLocalizedDefaults'
4
3
  import { useCategoryUsage } from '../composables/useMailingReads'
5
4
  import { isMarketingCategory } from '../utils/system-variables'
6
5
  import {
@@ -14,12 +13,14 @@ import {
14
13
  NO_CATEGORY,
15
14
  redirectMoves,
16
15
  serializeCategories,
16
+ toEditableRows,
17
17
  toStoredCategories,
18
18
  withMoves,
19
+ withLabelIn,
19
20
  type CategoryEntry,
20
21
  type EditableCategory,
21
22
  } from '../utils/categories'
22
- import type { TemplateCategory } from '../types/mailing'
23
+ import type { StoredCategory } from '../types/mailing'
23
24
 
24
25
  interface CategoriesInputProps {
25
26
  modelValue?: CategoryEntry[] | null
@@ -53,8 +54,8 @@ const MOVE_FIELD_COMPONENT = 'DmsSelect'
53
54
  const LABEL_PART = 'label'
54
55
  const ROW_FIELD_UI = { error: 'mt-1 ps-9 text-[12px]' }
55
56
 
56
- const { t } = useI18n()
57
- const localized = useLocalizedDefaults()
57
+ // Labels are edited in the interface's language, the others kept as stored.
58
+ const { t, locale } = useI18n()
58
59
  const { confirm } = useConfirm()
59
60
 
60
61
  let nextKey = 0
@@ -90,11 +91,7 @@ const rowErrorPattern = (index: number): RegExp =>
90
91
  new RegExp(`^${FIELD_NAME}\\.${index}\\.`)
91
92
 
92
93
  function toRows(value: CategoryEntry[]): EditableCategory[] {
93
- return localized.categories(keptCategories(value)).map((category) => ({
94
- ...category,
95
- key: keyOf(),
96
- isNew: false,
97
- }))
94
+ return toEditableRows(keptCategories(value), locale.value, keyOf)
98
95
  }
99
96
 
100
97
  function movesOf(value: CategoryEntry[]): CategoryEntry[] {
@@ -102,11 +99,11 @@ function movesOf(value: CategoryEntry[]): CategoryEntry[] {
102
99
  }
103
100
 
104
101
  function currentEntries(): CategoryEntry[] {
105
- return withMoves(toStoredCategories(rows.value), removed.value)
102
+ return withMoves(toStoredCategories(rows.value, locale.value), removed.value)
106
103
  }
107
104
 
108
105
  function onEdit(): void {
109
- const stored = toStoredCategories(rows.value)
106
+ const stored = toStoredCategories(rows.value, locale.value)
110
107
  stored.forEach((category, index) => {
111
108
  const row = rows.value[index]
112
109
  if (row) row.id = category.id
@@ -122,6 +119,7 @@ function addCategory(): void {
122
119
  id: '',
123
120
  label: '',
124
121
  icon: newCategoryIcon(rows.value),
122
+ labels: {},
125
123
  isNew: true,
126
124
  })
127
125
  }
@@ -147,8 +145,12 @@ function isRemovable(row: EditableCategory): boolean {
147
145
  return row.isNew || !isMarketingCategory(row.id)
148
146
  }
149
147
 
150
- function categoryOf(row: EditableCategory): TemplateCategory {
151
- return { id: row.id, label: row.label, icon: row.icon }
148
+ function categoryOf(row: EditableCategory): StoredCategory {
149
+ return {
150
+ id: row.id,
151
+ label: withLabelIn(row.labels, locale.value, row.label),
152
+ icon: row.icon,
153
+ }
152
154
  }
153
155
 
154
156
  function moveOptions(row: EditableCategory): MoveOption[] {
@@ -2,10 +2,13 @@
2
2
  import { mailingPath, type FunnelResponse } from '../composables/useMailingApi'
3
3
  import {
4
4
  biggestDrop,
5
+ deltaTone,
6
+ formatDelta,
5
7
  formatRate,
6
8
  FUNNEL_KINDS,
7
9
  FUNNEL_LEAK_STEP,
8
10
  funnelTakeaway,
11
+ isCompared,
9
12
  isMeasured,
10
13
  type FunnelStepReading,
11
14
  type FunnelTakeaway,
@@ -21,6 +24,24 @@ const SKELETON_ROWS = 5
21
24
  const KEY_PREFIX = 'dms_mailing.funnel_card.'
22
25
  const NOT_TRACKED_KEY = 'dms_mailing.metrics.not_tracked'
23
26
 
27
+ /**
28
+ * A row's columns: label, meter, count, rate, and the change while the
29
+ * toolbar compares. Written out whole so Tailwind sees every class.
30
+ */
31
+ const ROW_GRID = {
32
+ plain:
33
+ '@md:grid-cols-[6.5rem_minmax(0,1fr)_4.5rem_3.5rem] grid-cols-[minmax(0,1fr)_auto_auto]',
34
+ compared:
35
+ '@md:grid-cols-[6.5rem_minmax(0,1fr)_4.5rem_3.5rem_4rem] grid-cols-[minmax(0,1fr)_auto_auto_auto]',
36
+ }
37
+ const METER_SPAN = { plain: 'col-span-3', compared: 'col-span-4' }
38
+ const UNTRACKED_SPAN = { plain: 'col-span-2', compared: 'col-span-3' }
39
+ const DELTA_TONE_CLASSES: Record<ReturnType<typeof deltaTone>, string> = {
40
+ success: 'text-success',
41
+ error: 'text-error',
42
+ neutral: 'text-dimmed',
43
+ }
44
+
24
45
  const TAKEAWAY_KEYS: Record<FunnelTakeaway, string> = {
25
46
  empty: `${KEY_PREFIX}no_drop`,
26
47
  untracked: `${KEY_PREFIX}untracked`,
@@ -86,6 +107,16 @@ const takeaway = computed(() => {
86
107
 
87
108
  const isLeak = (step: FunnelStepReading): boolean =>
88
109
  step.id === FUNNEL_LEAK_STEP
110
+
111
+ /** "No comparison" in the toolbar drops the column rather than leave dashes. */
112
+ const layout = computed(() => (isCompared(steps.value) ? 'compared' : 'plain'))
113
+
114
+ const deltaTitle = (step: FunnelStepReading): string | undefined =>
115
+ step.previousCount === undefined
116
+ ? undefined
117
+ : t(`${KEY_PREFIX}compared_count`, {
118
+ value: numberFormat.value.format(step.previousCount),
119
+ })
89
120
  </script>
90
121
 
91
122
  <template>
@@ -115,7 +146,8 @@ const isLeak = (step: FunnelStepReading): boolean =>
115
146
  v-for="step in steps"
116
147
  :key="step.id"
117
148
  data-funnel-step
118
- class="@md:grid-cols-[6.5rem_minmax(0,1fr)_4.5rem_3.5rem] grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-x-3 gap-y-1.5"
149
+ class="grid items-center gap-x-3 gap-y-1.5"
150
+ :class="ROW_GRID[layout]"
119
151
  >
120
152
  <span
121
153
  class="truncate text-[12.5px]"
@@ -125,7 +157,8 @@ const isLeak = (step: FunnelStepReading): boolean =>
125
157
  </span>
126
158
  <DmsMeter
127
159
  as="span"
128
- class="@md:order-none @md:col-span-1 order-last col-span-3"
160
+ class="@md:order-none @md:col-span-1 order-last"
161
+ :class="METER_SPAN[layout]"
129
162
  :value="isMeasured(step) ? step.count : 0"
130
163
  :max="Math.max(total, 1)"
131
164
  :tone="isLeak(step) ? 'warning' : 'primary'"
@@ -143,11 +176,21 @@ const isLeak = (step: FunnelStepReading): boolean =>
143
176
  >
144
177
  {{ formatRate(step.rate, locale) }}
145
178
  </span>
179
+ <span
180
+ v-if="layout === 'compared'"
181
+ data-funnel-delta
182
+ class="text-right font-mono text-[11.5px] tabular-nums"
183
+ :class="DELTA_TONE_CLASSES[deltaTone(step)]"
184
+ :title="deltaTitle(step)"
185
+ >
186
+ {{ formatDelta(step.delta, locale) }}
187
+ </span>
146
188
  </template>
147
189
  <span
148
190
  v-else
149
191
  data-funnel-untracked
150
- class="text-dimmed col-span-2 text-right text-[11.5px]"
192
+ class="text-dimmed text-right text-[11.5px]"
193
+ :class="UNTRACKED_SPAN[layout]"
151
194
  >
152
195
  {{ t(NOT_TRACKED_KEY) }}
153
196
  </span>