@endora-commerce/mod-transactional-emails 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +63 -0
- package/dist/admin/api/transactional-emails-client.d.ts +43 -0
- package/dist/admin/api/transactional-emails-client.d.ts.map +1 -0
- package/dist/admin/api/transactional-emails-client.js +47 -0
- package/dist/admin/api/transactional-emails-client.js.map +1 -0
- package/dist/admin/components/BrandingPanel.d.ts +10 -0
- package/dist/admin/components/BrandingPanel.d.ts.map +1 -0
- package/dist/admin/components/BrandingPanel.js +58 -0
- package/dist/admin/components/BrandingPanel.js.map +1 -0
- package/dist/admin/components/EmailEditorPane.d.ts +7 -0
- package/dist/admin/components/EmailEditorPane.d.ts.map +1 -0
- package/dist/admin/components/EmailEditorPane.js +48 -0
- package/dist/admin/components/EmailEditorPane.js.map +1 -0
- package/dist/admin/index.d.ts +46 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +92 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/pages/EmailBlockEditorPage.d.ts +16 -0
- package/dist/admin/pages/EmailBlockEditorPage.d.ts.map +1 -0
- package/dist/admin/pages/EmailBlockEditorPage.js +19 -0
- package/dist/admin/pages/EmailBlockEditorPage.js.map +1 -0
- package/dist/admin/pages/EmailBlocksPage.d.ts +8 -0
- package/dist/admin/pages/EmailBlocksPage.d.ts.map +1 -0
- package/dist/admin/pages/EmailBlocksPage.js +55 -0
- package/dist/admin/pages/EmailBlocksPage.js.map +1 -0
- package/dist/admin/pages/EmailEditor.d.ts +8 -0
- package/dist/admin/pages/EmailEditor.d.ts.map +1 -0
- package/dist/admin/pages/EmailEditor.js +126 -0
- package/dist/admin/pages/EmailEditor.js.map +1 -0
- package/dist/admin/pages/EmailFragmentEditor.d.ts +9 -0
- package/dist/admin/pages/EmailFragmentEditor.d.ts.map +1 -0
- package/dist/admin/pages/EmailFragmentEditor.js +93 -0
- package/dist/admin/pages/EmailFragmentEditor.js.map +1 -0
- package/dist/admin/pages/EmailTemplateEditorPage.d.ts +12 -0
- package/dist/admin/pages/EmailTemplateEditorPage.d.ts.map +1 -0
- package/dist/admin/pages/EmailTemplateEditorPage.js +15 -0
- package/dist/admin/pages/EmailTemplateEditorPage.js.map +1 -0
- package/dist/admin/pages/EmailTemplatesPage.d.ts +8 -0
- package/dist/admin/pages/EmailTemplatesPage.d.ts.map +1 -0
- package/dist/admin/pages/EmailTemplatesPage.js +55 -0
- package/dist/admin/pages/EmailTemplatesPage.js.map +1 -0
- package/dist/admin/pages/EmailsList.d.ts +8 -0
- package/dist/admin/pages/EmailsList.d.ts.map +1 -0
- package/dist/admin/pages/EmailsList.js +85 -0
- package/dist/admin/pages/EmailsList.js.map +1 -0
- package/dist/backend/commands/email-activation.commands.d.ts +42 -0
- package/dist/backend/commands/email-activation.commands.d.ts.map +1 -0
- package/dist/backend/commands/email-activation.commands.js +51 -0
- package/dist/backend/commands/email-activation.commands.js.map +1 -0
- package/dist/backend/entities/email-block-sales-channel.entity.d.ts +11 -0
- package/dist/backend/entities/email-block-sales-channel.entity.d.ts.map +1 -0
- package/dist/backend/entities/email-block-sales-channel.entity.js +39 -0
- package/dist/backend/entities/email-block-sales-channel.entity.js.map +1 -0
- package/dist/backend/entities/email-block.entity.d.ts +24 -0
- package/dist/backend/entities/email-block.entity.d.ts.map +1 -0
- package/dist/backend/entities/email-block.entity.js +85 -0
- package/dist/backend/entities/email-block.entity.js.map +1 -0
- package/dist/backend/entities/email-template-sales-channel.entity.d.ts +10 -0
- package/dist/backend/entities/email-template-sales-channel.entity.d.ts.map +1 -0
- package/dist/backend/entities/email-template-sales-channel.entity.js +38 -0
- package/dist/backend/entities/email-template-sales-channel.entity.js.map +1 -0
- package/dist/backend/entities/email-template.entity.d.ts +19 -0
- package/dist/backend/entities/email-template.entity.d.ts.map +1 -0
- package/dist/backend/entities/email-template.entity.js +76 -0
- package/dist/backend/entities/email-template.entity.js.map +1 -0
- package/dist/backend/entities/transactional-email-content.entity.d.ts +25 -0
- package/dist/backend/entities/transactional-email-content.entity.d.ts.map +1 -0
- package/dist/backend/entities/transactional-email-content.entity.js +77 -0
- package/dist/backend/entities/transactional-email-content.entity.js.map +1 -0
- package/dist/backend/entities/transactional-email.entity.d.ts +32 -0
- package/dist/backend/entities/transactional-email.entity.d.ts.map +1 -0
- package/dist/backend/entities/transactional-email.entity.js +100 -0
- package/dist/backend/entities/transactional-email.entity.js.map +1 -0
- package/dist/backend/index.d.ts +105 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +126 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/plugin.d.ts +49 -0
- package/dist/backend/plugin.d.ts.map +1 -0
- package/dist/backend/plugin.js +54 -0
- package/dist/backend/plugin.js.map +1 -0
- package/dist/backend/routes.admin.d.ts +23 -0
- package/dist/backend/routes.admin.d.ts.map +1 -0
- package/dist/backend/routes.admin.js +133 -0
- package/dist/backend/routes.admin.js.map +1 -0
- package/dist/backend/services/branding.service.d.ts +63 -0
- package/dist/backend/services/branding.service.d.ts.map +1 -0
- package/dist/backend/services/branding.service.js +119 -0
- package/dist/backend/services/branding.service.js.map +1 -0
- package/dist/backend/services/content-resolver.d.ts +28 -0
- package/dist/backend/services/content-resolver.d.ts.map +1 -0
- package/dist/backend/services/content-resolver.js +64 -0
- package/dist/backend/services/content-resolver.js.map +1 -0
- package/dist/backend/services/email-block.service.d.ts +25 -0
- package/dist/backend/services/email-block.service.d.ts.map +1 -0
- package/dist/backend/services/email-block.service.js +162 -0
- package/dist/backend/services/email-block.service.js.map +1 -0
- package/dist/backend/services/email-builder-registry.d.ts +9 -0
- package/dist/backend/services/email-builder-registry.d.ts.map +1 -0
- package/dist/backend/services/email-builder-registry.js +14 -0
- package/dist/backend/services/email-builder-registry.js.map +1 -0
- package/dist/backend/services/email-defaults-registry.d.ts +63 -0
- package/dist/backend/services/email-defaults-registry.d.ts.map +1 -0
- package/dist/backend/services/email-defaults-registry.js +60 -0
- package/dist/backend/services/email-defaults-registry.js.map +1 -0
- package/dist/backend/services/email-template.service.d.ts +23 -0
- package/dist/backend/services/email-template.service.d.ts.map +1 -0
- package/dist/backend/services/email-template.service.js +155 -0
- package/dist/backend/services/email-template.service.js.map +1 -0
- package/dist/backend/services/embed-resolver.d.ts +21 -0
- package/dist/backend/services/embed-resolver.d.ts.map +1 -0
- package/dist/backend/services/embed-resolver.js +68 -0
- package/dist/backend/services/embed-resolver.js.map +1 -0
- package/dist/backend/services/manifest-reconciler.d.ts +28 -0
- package/dist/backend/services/manifest-reconciler.d.ts.map +1 -0
- package/dist/backend/services/manifest-reconciler.js +98 -0
- package/dist/backend/services/manifest-reconciler.js.map +1 -0
- package/dist/backend/services/template-email.d.ts +26 -0
- package/dist/backend/services/template-email.d.ts.map +1 -0
- package/dist/backend/services/template-email.js +69 -0
- package/dist/backend/services/template-email.js.map +1 -0
- package/dist/backend/services/transactional-email.service.d.ts +138 -0
- package/dist/backend/services/transactional-email.service.d.ts.map +1 -0
- package/dist/backend/services/transactional-email.service.js +410 -0
- package/dist/backend/services/transactional-email.service.js.map +1 -0
- package/dist/manifest.d.ts +195 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +367 -0
- package/dist/manifest.js.map +1 -0
- package/dist/migrations/20260629T113442_transactional_emails_init.d.ts +6 -0
- package/dist/migrations/20260629T113442_transactional_emails_init.d.ts.map +1 -0
- package/dist/migrations/20260629T113442_transactional_emails_init.js +133 -0
- package/dist/migrations/20260629T113442_transactional_emails_init.js.map +1 -0
- package/dist/migrations/20260801T111001_transactional_emails_email_defaults_reseed.d.ts +6 -0
- package/dist/migrations/20260801T111001_transactional_emails_email_defaults_reseed.d.ts.map +1 -0
- package/dist/migrations/20260801T111001_transactional_emails_email_defaults_reseed.js +49 -0
- package/dist/migrations/20260801T111001_transactional_emails_email_defaults_reseed.js.map +1 -0
- package/dist/migrations/20260903T101748_transactional_emails_namespace_block_names.d.ts +6 -0
- package/dist/migrations/20260903T101748_transactional_emails_namespace_block_names.d.ts.map +1 -0
- package/dist/migrations/20260903T101748_transactional_emails_namespace_block_names.js +60 -0
- package/dist/migrations/20260903T101748_transactional_emails_namespace_block_names.js.map +1 -0
- package/dist/migrations/index.d.ts +29 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +33 -0
- package/dist/migrations/index.js.map +1 -0
- package/docs/transactional-emails.md +176 -0
- package/i18n/en.json +92 -0
- package/i18n/pl.json +92 -0
- package/package.json +113 -0
- package/tailwind.css +14 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transactional Emails module (feature 047). Owns the editable email
|
|
3
|
+
* definitions, reusable email-safe blocks/templates, and branding (logo +
|
|
4
|
+
* look), and provides the TransactionalEmailSender port other modules use to
|
|
5
|
+
* send. Branding is modeled as per-channel-scopable settings (research R5).
|
|
6
|
+
*/
|
|
7
|
+
export declare const TRANSACTIONAL_EMAILS_SETTING_CODES: {
|
|
8
|
+
readonly LOGO_ASSET_ID: "transactional_emails.logo_asset_id";
|
|
9
|
+
readonly ACCENT_COLOR: "transactional_emails.accent_color";
|
|
10
|
+
readonly HEADER_BLOCK_CODE: "transactional_emails.header_block_code";
|
|
11
|
+
readonly FOOTER_BLOCK_CODE: "transactional_emails.footer_block_code";
|
|
12
|
+
};
|
|
13
|
+
export declare const transactionalEmailsSettingsManifest: {
|
|
14
|
+
moduleCode: string;
|
|
15
|
+
groups: {
|
|
16
|
+
code: string;
|
|
17
|
+
name: string;
|
|
18
|
+
salesChannelCodes?: string[] | undefined;
|
|
19
|
+
isSystemProtected?: boolean | undefined;
|
|
20
|
+
}[];
|
|
21
|
+
settings: {
|
|
22
|
+
code: string;
|
|
23
|
+
name: string;
|
|
24
|
+
valueType: "string" | "number" | "boolean" | "json" | "string_list" | "secret" | "credential_ref";
|
|
25
|
+
defaultValue: unknown;
|
|
26
|
+
description?: string | undefined;
|
|
27
|
+
groupCode?: string | undefined;
|
|
28
|
+
previousDefaultValues?: unknown[] | undefined;
|
|
29
|
+
salesChannelCodes?: string[] | undefined;
|
|
30
|
+
enumOptions?: string[] | undefined;
|
|
31
|
+
configurationType?: string | undefined;
|
|
32
|
+
hidden?: boolean | undefined;
|
|
33
|
+
}[];
|
|
34
|
+
};
|
|
35
|
+
export declare const manifest: {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
version: string;
|
|
39
|
+
dependencies: string[];
|
|
40
|
+
description?: string | undefined;
|
|
41
|
+
acknowledgedDependencies?: {
|
|
42
|
+
moduleId: string;
|
|
43
|
+
port: string;
|
|
44
|
+
reason: string;
|
|
45
|
+
}[] | undefined;
|
|
46
|
+
nonBindingDependencies?: {
|
|
47
|
+
moduleId: string;
|
|
48
|
+
name: string;
|
|
49
|
+
kind: "contributes-to" | "degrades-without" | "refuses-without";
|
|
50
|
+
reason: string;
|
|
51
|
+
whenAbsent?: string | undefined;
|
|
52
|
+
}[] | undefined;
|
|
53
|
+
activation?: {
|
|
54
|
+
settingCode: string;
|
|
55
|
+
default: boolean;
|
|
56
|
+
} | {
|
|
57
|
+
nonDeactivatable: true;
|
|
58
|
+
reason: string;
|
|
59
|
+
} | undefined;
|
|
60
|
+
settings?: {
|
|
61
|
+
moduleCode: string;
|
|
62
|
+
groups: {
|
|
63
|
+
code: string;
|
|
64
|
+
name: string;
|
|
65
|
+
salesChannelCodes?: string[] | undefined;
|
|
66
|
+
isSystemProtected?: boolean | undefined;
|
|
67
|
+
}[];
|
|
68
|
+
settings: {
|
|
69
|
+
code: string;
|
|
70
|
+
name: string;
|
|
71
|
+
valueType: "string" | "number" | "boolean" | "json" | "string_list" | "secret" | "credential_ref";
|
|
72
|
+
defaultValue: unknown;
|
|
73
|
+
description?: string | undefined;
|
|
74
|
+
groupCode?: string | undefined;
|
|
75
|
+
previousDefaultValues?: unknown[] | undefined;
|
|
76
|
+
salesChannelCodes?: string[] | undefined;
|
|
77
|
+
enumOptions?: string[] | undefined;
|
|
78
|
+
configurationType?: string | undefined;
|
|
79
|
+
hidden?: boolean | undefined;
|
|
80
|
+
}[];
|
|
81
|
+
} | undefined;
|
|
82
|
+
i18n?: {
|
|
83
|
+
bundlesDir: string;
|
|
84
|
+
} | undefined;
|
|
85
|
+
docs?: false | {
|
|
86
|
+
dir: string;
|
|
87
|
+
} | undefined;
|
|
88
|
+
demo?: false | {
|
|
89
|
+
summary: string;
|
|
90
|
+
seed: (context: import("@endora-commerce/contracts").ModuleDemoContext<never>) => Promise<import("@endora-commerce/contracts").DemoSeedResult>;
|
|
91
|
+
reset: (context: import("@endora-commerce/contracts").ModuleDemoContext<never>) => Promise<import("@endora-commerce/contracts").DemoResetResult>;
|
|
92
|
+
after?: readonly string[] | undefined;
|
|
93
|
+
package?: string | undefined;
|
|
94
|
+
} | undefined;
|
|
95
|
+
actions?: {
|
|
96
|
+
id: string;
|
|
97
|
+
labelKey: string;
|
|
98
|
+
icon: "Plus" | "Sparkles" | "Settings" | "Search" | "Boxes" | "Layers" | "Menu" | "PlusCircle" | "PlusSquare" | "FilePlus" | "FolderPlus" | "Upload" | "FileUp" | "CloudUpload" | "Download" | "FileDown" | "FileText" | "BookOpen" | "Rss" | "Package" | "Tag" | "ShoppingCart" | "Receipt" | "CreditCard" | "Users" | "UserPlus" | "Inbox" | "ListChecks" | "ClipboardList" | "Image" | "Video" | "LayoutDashboard" | "PanelLeft" | "KeyRound" | "ShieldCheck" | "Edit" | "Archive" | "Box" | "Truck" | "CircleDollarSign" | "Activity" | "LineChart" | "Smartphone" | "Webhook" | "Scale" | "PlugZap" | "PercentDiamond" | "Newspaper" | "Languages" | "Eraser" | "Warehouse" | "TrendingDown" | "Bell" | "PackageOpen" | "Building2" | "Store" | "ClipboardCheck";
|
|
99
|
+
targetRoute: string;
|
|
100
|
+
keywords: string[];
|
|
101
|
+
weight: number;
|
|
102
|
+
descriptionKey?: string | undefined;
|
|
103
|
+
requiredPermission?: string | undefined;
|
|
104
|
+
}[] | undefined;
|
|
105
|
+
permissions?: {
|
|
106
|
+
code: string;
|
|
107
|
+
label: string;
|
|
108
|
+
module?: string | undefined;
|
|
109
|
+
description?: string | undefined;
|
|
110
|
+
requires?: string[] | undefined;
|
|
111
|
+
}[] | undefined;
|
|
112
|
+
transactionalEmails?: {
|
|
113
|
+
code: string;
|
|
114
|
+
name: string;
|
|
115
|
+
variables: {
|
|
116
|
+
key: string;
|
|
117
|
+
label: string;
|
|
118
|
+
sampleValue?: string | undefined;
|
|
119
|
+
description?: string | undefined;
|
|
120
|
+
}[];
|
|
121
|
+
description?: string | undefined;
|
|
122
|
+
group?: string | undefined;
|
|
123
|
+
}[] | undefined;
|
|
124
|
+
capabilities?: string[] | undefined;
|
|
125
|
+
exclusiveCapabilities?: {
|
|
126
|
+
key: string;
|
|
127
|
+
errorCode: string;
|
|
128
|
+
}[] | undefined;
|
|
129
|
+
errorCodes?: {
|
|
130
|
+
code: string;
|
|
131
|
+
tokens?: string[] | undefined;
|
|
132
|
+
}[] | undefined;
|
|
133
|
+
blocks?: {
|
|
134
|
+
name: string;
|
|
135
|
+
labelKey: string;
|
|
136
|
+
category: string;
|
|
137
|
+
contexts: ("email" | "invoice" | "cms" | "newsletter")[];
|
|
138
|
+
fields: Record<string, {
|
|
139
|
+
type: "number" | "object" | "array" | "text" | "textarea" | "select" | "radio" | "external" | "uuid" | "richtext";
|
|
140
|
+
label?: string | undefined;
|
|
141
|
+
required?: boolean | undefined;
|
|
142
|
+
options?: {
|
|
143
|
+
label: string;
|
|
144
|
+
value: string | number;
|
|
145
|
+
}[] | undefined;
|
|
146
|
+
refKind?: string | undefined;
|
|
147
|
+
}>;
|
|
148
|
+
descriptionKey?: string | undefined;
|
|
149
|
+
defaultProps?: Record<string, unknown> | undefined;
|
|
150
|
+
responsiveFields?: string[] | undefined;
|
|
151
|
+
previewIcon?: string | undefined;
|
|
152
|
+
weight?: number | undefined;
|
|
153
|
+
}[] | undefined;
|
|
154
|
+
blockCategories?: {
|
|
155
|
+
key: string;
|
|
156
|
+
titleKey: string;
|
|
157
|
+
contexts: ("email" | "invoice" | "cms" | "newsletter")[];
|
|
158
|
+
weight?: number | undefined;
|
|
159
|
+
visible?: boolean | undefined;
|
|
160
|
+
}[] | undefined;
|
|
161
|
+
env?: {
|
|
162
|
+
name: string;
|
|
163
|
+
describes: {
|
|
164
|
+
en: string;
|
|
165
|
+
pl: string;
|
|
166
|
+
};
|
|
167
|
+
requirement: {
|
|
168
|
+
kind: "required";
|
|
169
|
+
} | {
|
|
170
|
+
kind: "requiredWhen";
|
|
171
|
+
input: string;
|
|
172
|
+
equals: string;
|
|
173
|
+
} | {
|
|
174
|
+
kind: "optional";
|
|
175
|
+
without: {
|
|
176
|
+
en: string;
|
|
177
|
+
pl: string;
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
secret: boolean;
|
|
181
|
+
generable: boolean;
|
|
182
|
+
owner: {
|
|
183
|
+
kind: "platform";
|
|
184
|
+
} | {
|
|
185
|
+
kind: "application";
|
|
186
|
+
application: "admin" | "backend" | "storefront";
|
|
187
|
+
} | {
|
|
188
|
+
kind: "module";
|
|
189
|
+
moduleId: string;
|
|
190
|
+
};
|
|
191
|
+
consumers: ("admin" | "backend" | "storefront")[];
|
|
192
|
+
addressOf: "admin" | "backend" | "storefront" | null;
|
|
193
|
+
}[] | undefined;
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC;;;;;CAKrC,CAAC;AAEX,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;CAqC9C,CAAC;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0TnB,CAAC"}
|
package/dist/manifest.js
ADDED
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { defineModuleManifest, defineModuleSettingsManifest } from '@endora-commerce/contracts';
|
|
2
|
+
import { DEFAULT_HEADER_BLOCK_CODE } from '@endora-commerce/email-components/defaults/default-header';
|
|
3
|
+
import { DEFAULT_FOOTER_BLOCK_CODE } from '@endora-commerce/email-components/defaults/default-footer';
|
|
4
|
+
/**
|
|
5
|
+
* Transactional Emails module (feature 047). Owns the editable email
|
|
6
|
+
* definitions, reusable email-safe blocks/templates, and branding (logo +
|
|
7
|
+
* look), and provides the TransactionalEmailSender port other modules use to
|
|
8
|
+
* send. Branding is modeled as per-channel-scopable settings (research R5).
|
|
9
|
+
*/
|
|
10
|
+
export const TRANSACTIONAL_EMAILS_SETTING_CODES = {
|
|
11
|
+
LOGO_ASSET_ID: 'transactional_emails.logo_asset_id',
|
|
12
|
+
ACCENT_COLOR: 'transactional_emails.accent_color',
|
|
13
|
+
HEADER_BLOCK_CODE: 'transactional_emails.header_block_code',
|
|
14
|
+
FOOTER_BLOCK_CODE: 'transactional_emails.footer_block_code',
|
|
15
|
+
};
|
|
16
|
+
export const transactionalEmailsSettingsManifest = defineModuleSettingsManifest({
|
|
17
|
+
moduleCode: 'transactional_emails',
|
|
18
|
+
groups: [{ code: 'transactional_emails', name: 'Transactional Emails' }],
|
|
19
|
+
settings: [
|
|
20
|
+
{
|
|
21
|
+
code: TRANSACTIONAL_EMAILS_SETTING_CODES.LOGO_ASSET_ID,
|
|
22
|
+
name: 'Email header logo',
|
|
23
|
+
description: 'Asset used as the header logo in transactional emails.',
|
|
24
|
+
groupCode: 'transactional_emails',
|
|
25
|
+
valueType: 'string',
|
|
26
|
+
defaultValue: '',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
code: TRANSACTIONAL_EMAILS_SETTING_CODES.ACCENT_COLOR,
|
|
30
|
+
name: 'Email accent color',
|
|
31
|
+
description: 'Accent color applied by default email components (hex).',
|
|
32
|
+
groupCode: 'transactional_emails',
|
|
33
|
+
valueType: 'string',
|
|
34
|
+
defaultValue: '#1f2937',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
code: TRANSACTIONAL_EMAILS_SETTING_CODES.HEADER_BLOCK_CODE,
|
|
38
|
+
name: 'Default header block',
|
|
39
|
+
description: 'Email block auto-inserted as the header of new emails.',
|
|
40
|
+
groupCode: 'transactional_emails',
|
|
41
|
+
valueType: 'string',
|
|
42
|
+
defaultValue: DEFAULT_HEADER_BLOCK_CODE,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
code: TRANSACTIONAL_EMAILS_SETTING_CODES.FOOTER_BLOCK_CODE,
|
|
46
|
+
name: 'Default footer block',
|
|
47
|
+
description: 'Email block auto-inserted as the footer of new emails.',
|
|
48
|
+
groupCode: 'transactional_emails',
|
|
49
|
+
valueType: 'string',
|
|
50
|
+
defaultValue: DEFAULT_FOOTER_BLOCK_CODE,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
export const manifest = defineModuleManifest({
|
|
55
|
+
id: 'transactional_emails',
|
|
56
|
+
name: 'Transactional Emails',
|
|
57
|
+
description: 'Admin-editable transactional email content and look (global + per sales channel), email-safe blocks/templates, variables, and preview.',
|
|
58
|
+
version: '1.0.0',
|
|
59
|
+
dependencies: ['assets_library', 'email', 'sales_channels', 'settings'],
|
|
60
|
+
// Feature 074 (Constitution XVII), test C2 — functional base. The second
|
|
61
|
+
// half of the old ground was that `organizations` declares this module, so
|
|
62
|
+
// the flip failed closed onto the tenancy root; ruling 2 withdraws that, and
|
|
63
|
+
// the first half stands on its own. This module is the platform's only
|
|
64
|
+
// acknowledgement path to a buyer and to an operator — order confirmation,
|
|
65
|
+
// document delivery, account mail. The granularity a business actually wants
|
|
66
|
+
// is the individual email, and that control exists: see
|
|
67
|
+
// `commands/email-activation.commands.ts` and
|
|
68
|
+
// `services/email-defaults-registry.ts` (issue #89).
|
|
69
|
+
activation: {
|
|
70
|
+
nonDeactivatable: true,
|
|
71
|
+
reason: 'The platform\'s only acknowledgement path to buyer and operator — order confirmation, ' +
|
|
72
|
+
'document delivery, account mail. Switch off an individual email instead.',
|
|
73
|
+
},
|
|
74
|
+
settings: transactionalEmailsSettingsManifest,
|
|
75
|
+
i18n: { bundlesDir: 'i18n' },
|
|
76
|
+
docs: { dir: 'docs' },
|
|
77
|
+
/**
|
|
78
|
+
* `TRANSACTIONAL_EMAIL_NOT_DEACTIVATABLE` — D-129's remaining sweep, Tier A
|
|
79
|
+
* (`specs/090-module-owned-error-codes/d129-sweep.md` §5.2, Appendix A;
|
|
80
|
+
* MR 3).
|
|
81
|
+
*
|
|
82
|
+
* Declared by `_i18n` until this merge request, not because anybody judged
|
|
83
|
+
* it the platform's but because the deleted prefix chain had no rule for it
|
|
84
|
+
* and its last line was `return 'core'`. **D-121 T1 puts it here**: the noun
|
|
85
|
+
* is one transactional email, and this module owns the email, its content,
|
|
86
|
+
* its per-channel customization and the registry that says which emails a
|
|
87
|
+
* business may switch off.
|
|
88
|
+
*
|
|
89
|
+
* **The word `NOT_DEACTIVATABLE` is not the platform's here**, which is the
|
|
90
|
+
* one thing about this code worth reading twice. It sounds like the module
|
|
91
|
+
* lifecycle's `MODULE_NOT_DEACTIVATABLE`, and it is a different refusal at a
|
|
92
|
+
* different granularity: the platform's is about a *module* an operator may
|
|
93
|
+
* not switch off, this one is about a single **email** — `order_confirmation`
|
|
94
|
+
* and its like — that the registry marks always-on with a reason. Issue #89
|
|
95
|
+
* introduced the per-email control precisely because the module's own
|
|
96
|
+
* activation is `nonDeactivatable`; the two codes are the two ends of that
|
|
97
|
+
* decision and only one of them belongs to the lifecycle.
|
|
98
|
+
*
|
|
99
|
+
* **No sentence moves with it.** It has none in either language anywhere in
|
|
100
|
+
* the tree; it was already on `UNTRANSLATED_ERROR_CODES` under `_i18n` and
|
|
101
|
+
* moves to this module's group there, so the bundle this module already
|
|
102
|
+
* ships gains no key. The refusal an operator reads today is the registry's
|
|
103
|
+
* own `nonDeactivatableReasonOf(code)` prose, which the raise passes as the
|
|
104
|
+
* message.
|
|
105
|
+
*
|
|
106
|
+
* **`tokens` is derived from the raise sites, not from the bundle**
|
|
107
|
+
* (runbook §5), and this is the case where that rule bites rather than
|
|
108
|
+
* repeats itself. The single raise
|
|
109
|
+
* (`commands/email-activation.commands.ts`) puts `{ code, reason }` in
|
|
110
|
+
* `details`, so `refusalToken` reads a token off every one of these errors
|
|
111
|
+
* (`packages/platform/src/http/error-envelope.ts`) — and the token is the
|
|
112
|
+
* **email's** registry code, an open set every module contributing an email
|
|
113
|
+
* extends, not a fixed vocabulary this manifest could enumerate. Declaring
|
|
114
|
+
* tokens would therefore be declaring a list that goes stale on the next
|
|
115
|
+
* email somebody registers. It is `VALIDATION_FAILED`'s shape one layer
|
|
116
|
+
* along: a machine-readable discriminator on the wire rather than a token
|
|
117
|
+
* choosing between sentences.
|
|
118
|
+
*
|
|
119
|
+
* Two consequences, both recorded rather than repaired here. A base sentence
|
|
120
|
+
* written at `errors.TRANSACTIONAL_EMAIL_NOT_DEACTIVATABLE` would be **dead
|
|
121
|
+
* key** — the envelope always looks up `<key>.<token>` when a token is
|
|
122
|
+
* present — so whoever drains this code's ledger entry writes
|
|
123
|
+
* `errors.TRANSACTIONAL_EMAIL_NOT_DEACTIVATABLE.<email code>` per protected
|
|
124
|
+
* email, or leaves the registry's reason to answer. And `_i18n`'s own
|
|
125
|
+
* `tokens` paragraph counted seven codes carrying a `details.code`; this was
|
|
126
|
+
* an eighth, so that count is true of the list it describes only now that
|
|
127
|
+
* this code has left it.
|
|
128
|
+
*/
|
|
129
|
+
errorCodes: [{ code: 'TRANSACTIONAL_EMAIL_NOT_DEACTIVATABLE' }],
|
|
130
|
+
permissions: [
|
|
131
|
+
{ code: 'transactional_emails:read', label: 'View transactional emails' },
|
|
132
|
+
{
|
|
133
|
+
code: 'transactional_emails:write',
|
|
134
|
+
label: 'Manage transactional emails, blocks, templates, and branding',
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
actions: [
|
|
138
|
+
{
|
|
139
|
+
id: 'open-transactional-emails',
|
|
140
|
+
labelKey: 'actions.openTransactionalEmails.label',
|
|
141
|
+
descriptionKey: 'actions.openTransactionalEmails.description',
|
|
142
|
+
icon: 'Inbox',
|
|
143
|
+
targetRoute: '/transactional-emails',
|
|
144
|
+
requiredPermission: 'transactional_emails:read',
|
|
145
|
+
keywords: ['email', 'transactional', 'notifications', 'templates'],
|
|
146
|
+
weight: 240,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: 'open-email-templates',
|
|
150
|
+
labelKey: 'actions.openEmailTemplates.label',
|
|
151
|
+
descriptionKey: 'actions.openEmailTemplates.description',
|
|
152
|
+
icon: 'FileText',
|
|
153
|
+
targetRoute: '/transactional-emails/templates',
|
|
154
|
+
requiredPermission: 'transactional_emails:read',
|
|
155
|
+
keywords: ['email', 'templates', 'layout', 'transactional'],
|
|
156
|
+
weight: 241,
|
|
157
|
+
},
|
|
158
|
+
/**
|
|
159
|
+
* The one `AppShell.tsx` `PALETTE_ITEMS` row feature 091's batch 11
|
|
160
|
+
* deletes, arriving as a declaration (Principle XVI) — same destination,
|
|
161
|
+
* same code, same keywords. Its two siblings were declared already, so
|
|
162
|
+
* this is the row that would otherwise have gone silently.
|
|
163
|
+
*
|
|
164
|
+
* This module is `nonDeactivatable`, so the row it replaces never
|
|
165
|
+
* advertised an absent module; what the declaration buys here is the other
|
|
166
|
+
* axis, the one a lock leaves — the server resolves the operator's
|
|
167
|
+
* permission before the entry reaches the palette, and a hand-written row
|
|
168
|
+
* carried its own copy of that answer.
|
|
169
|
+
*/
|
|
170
|
+
{
|
|
171
|
+
id: 'open-email-blocks',
|
|
172
|
+
labelKey: 'actions.openEmailBlocks.label',
|
|
173
|
+
descriptionKey: 'actions.openEmailBlocks.description',
|
|
174
|
+
icon: 'Inbox',
|
|
175
|
+
targetRoute: '/transactional-emails/blocks',
|
|
176
|
+
requiredPermission: 'transactional_emails:read',
|
|
177
|
+
keywords: ['email', 'blocks', 'fragments', 'bloki'],
|
|
178
|
+
weight: 242,
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
/**
|
|
182
|
+
* The 17 e-mail Page Builder blocks this module owns, and the four e-mail
|
|
183
|
+
* palette sections its own blocks populate (feature 096, §7.2 and §2.1).
|
|
184
|
+
*
|
|
185
|
+
* They are not today's four. `order` moves to `orders`, which owns all eight
|
|
186
|
+
* blocks in it. `internal` is **new**: the e-mail palette has no hidden
|
|
187
|
+
* drawer today, which is exactly why `EmailColumn` sits in `components` and
|
|
188
|
+
* in no category and lands in Puck's *Other* group, insertable outside a row
|
|
189
|
+
* where it renders wrong. Putting it in a `visible: false` section is a
|
|
190
|
+
* deliberate behaviour change and the operator loses an *Other*-drawer entry
|
|
191
|
+
* that only ever worked inside a row. `EmailInsertTemplate` gains `embeds`:
|
|
192
|
+
* it has a renderer and a persisted name and appears in no palette at all.
|
|
193
|
+
*
|
|
194
|
+
* `contexts: ['email']` rather than `['email', 'newsletter']`: the newsletter
|
|
195
|
+
* palette is served by `filterConfigByContext`, which admits an `email` block
|
|
196
|
+
* into the `newsletter` context, and no newsletter section exists for a
|
|
197
|
+
* category declaration to name.
|
|
198
|
+
*/
|
|
199
|
+
blocks: [
|
|
200
|
+
{
|
|
201
|
+
name: 'transactional_emails.EmailHeading',
|
|
202
|
+
labelKey: 'blocks.emailHeading.label',
|
|
203
|
+
descriptionKey: 'blocks.emailHeading.description',
|
|
204
|
+
category: 'content',
|
|
205
|
+
contexts: ['email'],
|
|
206
|
+
fields: {},
|
|
207
|
+
weight: 10,
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
name: 'transactional_emails.EmailText',
|
|
211
|
+
labelKey: 'blocks.emailText.label',
|
|
212
|
+
descriptionKey: 'blocks.emailText.description',
|
|
213
|
+
category: 'content',
|
|
214
|
+
contexts: ['email'],
|
|
215
|
+
fields: {},
|
|
216
|
+
weight: 20,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'transactional_emails.EmailRichText',
|
|
220
|
+
labelKey: 'blocks.emailRichText.label',
|
|
221
|
+
descriptionKey: 'blocks.emailRichText.description',
|
|
222
|
+
category: 'content',
|
|
223
|
+
contexts: ['email'],
|
|
224
|
+
fields: {},
|
|
225
|
+
weight: 30,
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
name: 'transactional_emails.EmailButton',
|
|
229
|
+
labelKey: 'blocks.emailButton.label',
|
|
230
|
+
descriptionKey: 'blocks.emailButton.description',
|
|
231
|
+
category: 'content',
|
|
232
|
+
contexts: ['email'],
|
|
233
|
+
fields: {},
|
|
234
|
+
weight: 40,
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
name: 'transactional_emails.EmailImage',
|
|
238
|
+
labelKey: 'blocks.emailImage.label',
|
|
239
|
+
descriptionKey: 'blocks.emailImage.description',
|
|
240
|
+
category: 'content',
|
|
241
|
+
contexts: ['email'],
|
|
242
|
+
fields: {},
|
|
243
|
+
weight: 50,
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: 'transactional_emails.EmailLogo',
|
|
247
|
+
labelKey: 'blocks.emailLogo.label',
|
|
248
|
+
descriptionKey: 'blocks.emailLogo.description',
|
|
249
|
+
category: 'content',
|
|
250
|
+
contexts: ['email'],
|
|
251
|
+
fields: {},
|
|
252
|
+
weight: 60,
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
name: 'transactional_emails.EmailSocial',
|
|
256
|
+
labelKey: 'blocks.emailSocial.label',
|
|
257
|
+
descriptionKey: 'blocks.emailSocial.description',
|
|
258
|
+
category: 'content',
|
|
259
|
+
contexts: ['email'],
|
|
260
|
+
fields: {},
|
|
261
|
+
weight: 100,
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
name: 'transactional_emails.EmailCallout',
|
|
265
|
+
labelKey: 'blocks.emailCallout.label',
|
|
266
|
+
descriptionKey: 'blocks.emailCallout.description',
|
|
267
|
+
category: 'content',
|
|
268
|
+
contexts: ['email'],
|
|
269
|
+
fields: {},
|
|
270
|
+
weight: 110,
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
name: 'transactional_emails.EmailFooterLegal',
|
|
274
|
+
labelKey: 'blocks.emailFooterLegal.label',
|
|
275
|
+
descriptionKey: 'blocks.emailFooterLegal.description',
|
|
276
|
+
category: 'content',
|
|
277
|
+
contexts: ['email'],
|
|
278
|
+
fields: {},
|
|
279
|
+
weight: 120,
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'transactional_emails.EmailSection',
|
|
283
|
+
labelKey: 'blocks.emailSection.label',
|
|
284
|
+
descriptionKey: 'blocks.emailSection.description',
|
|
285
|
+
category: 'layout',
|
|
286
|
+
contexts: ['email'],
|
|
287
|
+
fields: {},
|
|
288
|
+
weight: 10,
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
name: 'transactional_emails.EmailRow',
|
|
292
|
+
labelKey: 'blocks.emailRow.label',
|
|
293
|
+
descriptionKey: 'blocks.emailRow.description',
|
|
294
|
+
category: 'layout',
|
|
295
|
+
contexts: ['email'],
|
|
296
|
+
fields: {},
|
|
297
|
+
weight: 20,
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
name: 'transactional_emails.EmailTable',
|
|
301
|
+
labelKey: 'blocks.emailTable.label',
|
|
302
|
+
descriptionKey: 'blocks.emailTable.description',
|
|
303
|
+
category: 'layout',
|
|
304
|
+
contexts: ['email'],
|
|
305
|
+
fields: {},
|
|
306
|
+
weight: 30,
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: 'transactional_emails.EmailDivider',
|
|
310
|
+
labelKey: 'blocks.emailDivider.label',
|
|
311
|
+
descriptionKey: 'blocks.emailDivider.description',
|
|
312
|
+
category: 'layout',
|
|
313
|
+
contexts: ['email'],
|
|
314
|
+
fields: {},
|
|
315
|
+
weight: 40,
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
name: 'transactional_emails.EmailSpacer',
|
|
319
|
+
labelKey: 'blocks.emailSpacer.label',
|
|
320
|
+
descriptionKey: 'blocks.emailSpacer.description',
|
|
321
|
+
category: 'layout',
|
|
322
|
+
contexts: ['email'],
|
|
323
|
+
fields: {},
|
|
324
|
+
weight: 50,
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: 'transactional_emails.EmailInsertBlock',
|
|
328
|
+
labelKey: 'blocks.emailInsertBlock.label',
|
|
329
|
+
descriptionKey: 'blocks.emailInsertBlock.description',
|
|
330
|
+
category: 'embeds',
|
|
331
|
+
contexts: ['email'],
|
|
332
|
+
fields: {},
|
|
333
|
+
weight: 10,
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
name: 'transactional_emails.EmailInsertTemplate',
|
|
337
|
+
labelKey: 'blocks.emailInsertTemplate.label',
|
|
338
|
+
descriptionKey: 'blocks.emailInsertTemplate.description',
|
|
339
|
+
category: 'embeds',
|
|
340
|
+
contexts: ['email'],
|
|
341
|
+
fields: {},
|
|
342
|
+
weight: 20,
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: 'transactional_emails.EmailColumn',
|
|
346
|
+
labelKey: 'blocks.emailColumn.label',
|
|
347
|
+
descriptionKey: 'blocks.emailColumn.description',
|
|
348
|
+
category: 'internal',
|
|
349
|
+
contexts: ['email'],
|
|
350
|
+
fields: {},
|
|
351
|
+
weight: 10,
|
|
352
|
+
},
|
|
353
|
+
],
|
|
354
|
+
blockCategories: [
|
|
355
|
+
{ key: 'content', titleKey: 'blocks.category.content', contexts: ['email'], weight: 10 },
|
|
356
|
+
{ key: 'layout', titleKey: 'blocks.category.layout', contexts: ['email'], weight: 30 },
|
|
357
|
+
{ key: 'embeds', titleKey: 'blocks.category.embeds', contexts: ['email'], weight: 40 },
|
|
358
|
+
{
|
|
359
|
+
key: 'internal',
|
|
360
|
+
titleKey: 'blocks.category.internal',
|
|
361
|
+
contexts: ['email'],
|
|
362
|
+
weight: 50,
|
|
363
|
+
visible: false,
|
|
364
|
+
},
|
|
365
|
+
],
|
|
366
|
+
});
|
|
367
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"20260629T113442_transactional_emails_init.d.ts","sourceRoot":"","sources":["../../src/migrations/20260629T113442_transactional_emails_init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AA2BlD,qBAAa,+CAAgD,SAAQ,SAAS;IAC7D,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAkInB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAQrC"}
|