@infuro/cms-core 1.0.62 → 1.0.63

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 (35) hide show
  1. package/dist/admin.cjs +4 -4
  2. package/dist/admin.js +4 -4
  3. package/dist/api.cjs +38 -38
  4. package/dist/api.js +6 -6
  5. package/dist/{chunk-NMYGQWHV.js → chunk-3VZAAQUV.js} +18 -5
  6. package/dist/{chunk-R6Q67HAS.js → chunk-77YWLP4X.js} +19 -19
  7. package/dist/{chunk-AXMP2U43.cjs → chunk-7L556RGL.cjs} +3 -3
  8. package/dist/{chunk-6LV36PCL.js → chunk-BWOITUNI.js} +7 -6
  9. package/dist/{chunk-QA5C477U.cjs → chunk-CJEOH6QC.cjs} +64 -64
  10. package/dist/{chunk-6XAVZE4I.js → chunk-DTUL3Q5L.js} +1 -1
  11. package/dist/{chunk-TWTISTZB.cjs → chunk-EWXG4E74.cjs} +14 -13
  12. package/dist/{chunk-CTIEAHQL.cjs → chunk-JLDHK2QE.cjs} +18 -5
  13. package/dist/{chunk-GZGFNVTK.js → chunk-KAOHOHCA.js} +55 -40
  14. package/dist/{chunk-HMLVPIJR.js → chunk-MWEK7N3F.js} +1 -1
  15. package/dist/{chunk-LRD4CGOG.cjs → chunk-MXABMVF7.cjs} +4 -4
  16. package/dist/{chunk-LVQSG25Y.cjs → chunk-RHYVNRYG.cjs} +1 -1
  17. package/dist/{chunk-YW7EF7K7.js → chunk-RXTUSF3R.js} +2 -2
  18. package/dist/{chunk-ZPAPCGCR.cjs → chunk-YVP4NQII.cjs} +56 -41
  19. package/dist/{email-queue-J7DXYNCE.cjs → email-queue-VTYL2KFA.cjs} +7 -7
  20. package/dist/{email-queue-65PQAG4C.js → email-queue-YPRSVG56.js} +3 -3
  21. package/dist/{email-service-RDOTY3CO.cjs → email-service-ATCPJFWG.cjs} +7 -7
  22. package/dist/{email-service-F7HA4X63.js → email-service-DPKVQOKP.js} +2 -2
  23. package/dist/{emit-order-notification-trigger-K7URAZHJ.cjs → emit-order-notification-trigger-WI4HGMKH.cjs} +3 -3
  24. package/dist/{emit-order-notification-trigger-MD7EBODC.js → emit-order-notification-trigger-XVG2B5ZF.js} +1 -1
  25. package/dist/{erp-order-invoice-MYFCXOCY.js → erp-order-invoice-3UGWLICU.js} +2 -2
  26. package/dist/{erp-order-invoice-C5GZCOBM.cjs → erp-order-invoice-KJYJNWMG.cjs} +6 -6
  27. package/dist/index.cjs +246 -245
  28. package/dist/index.d.cts +8 -2
  29. package/dist/index.d.ts +8 -2
  30. package/dist/index.js +15 -14
  31. package/dist/{order-completion-otp-handlers-4EOLYLAP.cjs → order-completion-otp-handlers-IMMQGHDR.cjs} +6 -6
  32. package/dist/{order-completion-otp-handlers-3NTOGEA5.js → order-completion-otp-handlers-WGM7HWG4.js} +4 -4
  33. package/dist/{order-notification-dispatcher-X2XM5VUY.cjs → order-notification-dispatcher-5TUFCDU7.cjs} +10 -10
  34. package/dist/{order-notification-dispatcher-IYMOS4VY.js → order-notification-dispatcher-JKFQJYGG.js} +5 -5
  35. package/package.json +1 -1
package/dist/admin.cjs CHANGED
@@ -895,7 +895,7 @@ var init_admin_config_context = __esm({
895
895
  var CMS_VERSION;
896
896
  var init_cms_version = __esm({
897
897
  "src/lib/cms-version.ts"() {
898
- CMS_VERSION = "1.0.62" ;
898
+ CMS_VERSION = "1.0.63" ;
899
899
  }
900
900
  });
901
901
  function useCatalogCategories(enabled = true) {
@@ -20879,14 +20879,14 @@ function PluginSettingsPanel({ descriptor, onSaved }) {
20879
20879
  placeholder: "e.g. crm@example.com"
20880
20880
  }), /* @__PURE__ */ React.createElement("p", {
20881
20881
  className: "text-xs text-gray-500 dark:text-gray-400"
20882
- }, "Layout below merges with Branding settings; values here override branding when set. Use absolute URLs for logos in email."), /* @__PURE__ */ React.createElement("div", {
20882
+ }, "Layout below merges with Branding and Store settings. Upload a logo here (or in Settings \u2192 Store \u2192 Company Logo) \u2014 email uses that image in the header. Prefer a publicly reachable URL in production."), /* @__PURE__ */ React.createElement("div", {
20883
20883
  className: "space-y-1"
20884
20884
  }, /* @__PURE__ */ React.createElement(ImageOrUrlField, {
20885
- label: "Logo (optional override)",
20885
+ label: "Email logo (upload or URL)",
20886
20886
  value: logoUrl,
20887
20887
  onChange: setLogoUrl,
20888
20888
  previewVariant: "logo",
20889
- placeholder: "https://\u2026",
20889
+ placeholder: "Upload image or paste https://\u2026",
20890
20890
  inputClassName: "h-8 text-sm w-full rounded-md border border-input bg-background px-3"
20891
20891
  })), /* @__PURE__ */ React.createElement("div", {
20892
20892
  className: "space-y-1"
package/dist/admin.js CHANGED
@@ -861,7 +861,7 @@ var init_admin_config_context = __esm({
861
861
  var CMS_VERSION;
862
862
  var init_cms_version = __esm({
863
863
  "src/lib/cms-version.ts"() {
864
- CMS_VERSION = "1.0.62" ;
864
+ CMS_VERSION = "1.0.63" ;
865
865
  }
866
866
  });
867
867
  function useCatalogCategories(enabled = true) {
@@ -20845,14 +20845,14 @@ function PluginSettingsPanel({ descriptor, onSaved }) {
20845
20845
  placeholder: "e.g. crm@example.com"
20846
20846
  }), /* @__PURE__ */ React.createElement("p", {
20847
20847
  className: "text-xs text-gray-500 dark:text-gray-400"
20848
- }, "Layout below merges with Branding settings; values here override branding when set. Use absolute URLs for logos in email."), /* @__PURE__ */ React.createElement("div", {
20848
+ }, "Layout below merges with Branding and Store settings. Upload a logo here (or in Settings \u2192 Store \u2192 Company Logo) \u2014 email uses that image in the header. Prefer a publicly reachable URL in production."), /* @__PURE__ */ React.createElement("div", {
20849
20849
  className: "space-y-1"
20850
20850
  }, /* @__PURE__ */ React.createElement(ImageOrUrlField, {
20851
- label: "Logo (optional override)",
20851
+ label: "Email logo (upload or URL)",
20852
20852
  value: logoUrl,
20853
20853
  onChange: setLogoUrl,
20854
20854
  previewVariant: "logo",
20855
- placeholder: "https://\u2026",
20855
+ placeholder: "Upload image or paste https://\u2026",
20856
20856
  inputClassName: "h-8 text-sm w-full rounded-md border border-input bg-background px-3"
20857
20857
  })), /* @__PURE__ */ React.createElement("div", {
20858
20858
  className: "space-y-1"
package/dist/api.cjs CHANGED
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunkQA5C477U_cjs = require('./chunk-QA5C477U.cjs');
3
+ var chunkCJEOH6QC_cjs = require('./chunk-CJEOH6QC.cjs');
4
4
  require('./chunk-WFMVD567.cjs');
5
5
  require('./chunk-XQ3QUHWR.cjs');
6
6
  require('./chunk-HY3AXLOI.cjs');
7
- require('./chunk-TWTISTZB.cjs');
7
+ require('./chunk-EWXG4E74.cjs');
8
8
  require('./chunk-H3IVLIPR.cjs');
9
9
  require('./chunk-UEE4PTTB.cjs');
10
10
  require('./chunk-7NMT3GBR.cjs');
11
- require('./chunk-ZPAPCGCR.cjs');
12
- require('./chunk-LRD4CGOG.cjs');
13
- require('./chunk-AXMP2U43.cjs');
11
+ require('./chunk-YVP4NQII.cjs');
12
+ require('./chunk-MXABMVF7.cjs');
13
+ require('./chunk-7L556RGL.cjs');
14
14
  require('./chunk-UPLVMVRX.cjs');
15
- require('./chunk-CTIEAHQL.cjs');
15
+ require('./chunk-JLDHK2QE.cjs');
16
16
  require('./chunk-3DZRIZOD.cjs');
17
17
  require('./chunk-OOTLNH63.cjs');
18
18
  require('./chunk-TJ2MIQUT.cjs');
@@ -26,131 +26,131 @@ require('./chunk-USNT2KNT.cjs');
26
26
 
27
27
  Object.defineProperty(exports, "autoExpireOrderIfPaymentTimeExceeded", {
28
28
  enumerable: true,
29
- get: function () { return chunkQA5C477U_cjs.autoExpireOrderIfPaymentTimeExceeded; }
29
+ get: function () { return chunkCJEOH6QC_cjs.autoExpireOrderIfPaymentTimeExceeded; }
30
30
  });
31
31
  Object.defineProperty(exports, "createAnalyticsHandlers", {
32
32
  enumerable: true,
33
- get: function () { return chunkQA5C477U_cjs.createAnalyticsHandlers; }
33
+ get: function () { return chunkCJEOH6QC_cjs.createAnalyticsHandlers; }
34
34
  });
35
35
  Object.defineProperty(exports, "createBlogBySlugHandler", {
36
36
  enumerable: true,
37
- get: function () { return chunkQA5C477U_cjs.createBlogBySlugHandler; }
37
+ get: function () { return chunkCJEOH6QC_cjs.createBlogBySlugHandler; }
38
38
  });
39
39
  Object.defineProperty(exports, "createChangePasswordHandler", {
40
40
  enumerable: true,
41
- get: function () { return chunkQA5C477U_cjs.createChangePasswordHandler; }
41
+ get: function () { return chunkCJEOH6QC_cjs.createChangePasswordHandler; }
42
42
  });
43
43
  Object.defineProperty(exports, "createCmsApiHandler", {
44
44
  enumerable: true,
45
- get: function () { return chunkQA5C477U_cjs.createCmsApiHandler; }
45
+ get: function () { return chunkCJEOH6QC_cjs.createCmsApiHandler; }
46
46
  });
47
47
  Object.defineProperty(exports, "createCrudByIdHandler", {
48
48
  enumerable: true,
49
- get: function () { return chunkQA5C477U_cjs.createCrudByIdHandler; }
49
+ get: function () { return chunkCJEOH6QC_cjs.createCrudByIdHandler; }
50
50
  });
51
51
  Object.defineProperty(exports, "createCrudHandler", {
52
52
  enumerable: true,
53
- get: function () { return chunkQA5C477U_cjs.createCrudHandler; }
53
+ get: function () { return chunkCJEOH6QC_cjs.createCrudHandler; }
54
54
  });
55
55
  Object.defineProperty(exports, "createDashboardStatsHandler", {
56
56
  enumerable: true,
57
- get: function () { return chunkQA5C477U_cjs.createDashboardStatsHandler; }
57
+ get: function () { return chunkCJEOH6QC_cjs.createDashboardStatsHandler; }
58
58
  });
59
59
  Object.defineProperty(exports, "createEcommerceAnalyticsHandler", {
60
60
  enumerable: true,
61
- get: function () { return chunkQA5C477U_cjs.createEcommerceAnalyticsHandler; }
61
+ get: function () { return chunkCJEOH6QC_cjs.createEcommerceAnalyticsHandler; }
62
62
  });
63
63
  Object.defineProperty(exports, "createForgotPasswordHandler", {
64
64
  enumerable: true,
65
- get: function () { return chunkQA5C477U_cjs.createForgotPasswordHandler; }
65
+ get: function () { return chunkCJEOH6QC_cjs.createForgotPasswordHandler; }
66
66
  });
67
67
  Object.defineProperty(exports, "createFormBySlugHandler", {
68
68
  enumerable: true,
69
- get: function () { return chunkQA5C477U_cjs.createFormBySlugHandler; }
69
+ get: function () { return chunkCJEOH6QC_cjs.createFormBySlugHandler; }
70
70
  });
71
71
  Object.defineProperty(exports, "createInviteAcceptHandler", {
72
72
  enumerable: true,
73
- get: function () { return chunkQA5C477U_cjs.createInviteAcceptHandler; }
73
+ get: function () { return chunkCJEOH6QC_cjs.createInviteAcceptHandler; }
74
74
  });
75
75
  Object.defineProperty(exports, "createJobScheduleHandlers", {
76
76
  enumerable: true,
77
- get: function () { return chunkQA5C477U_cjs.createJobScheduleHandlers; }
77
+ get: function () { return chunkCJEOH6QC_cjs.createJobScheduleHandlers; }
78
78
  });
79
79
  Object.defineProperty(exports, "createLlmAgentKnowledgeHandlers", {
80
80
  enumerable: true,
81
- get: function () { return chunkQA5C477U_cjs.createLlmAgentKnowledgeHandlers; }
81
+ get: function () { return chunkCJEOH6QC_cjs.createLlmAgentKnowledgeHandlers; }
82
82
  });
83
83
  Object.defineProperty(exports, "createMediaZipExtractHandler", {
84
84
  enumerable: true,
85
- get: function () { return chunkQA5C477U_cjs.createMediaZipExtractHandler; }
85
+ get: function () { return chunkCJEOH6QC_cjs.createMediaZipExtractHandler; }
86
86
  });
87
87
  Object.defineProperty(exports, "createSetPasswordHandler", {
88
88
  enumerable: true,
89
- get: function () { return chunkQA5C477U_cjs.createSetPasswordHandler; }
89
+ get: function () { return chunkCJEOH6QC_cjs.createSetPasswordHandler; }
90
90
  });
91
91
  Object.defineProperty(exports, "createSettingsApiHandlers", {
92
92
  enumerable: true,
93
- get: function () { return chunkQA5C477U_cjs.createSettingsApiHandlers; }
93
+ get: function () { return chunkCJEOH6QC_cjs.createSettingsApiHandlers; }
94
94
  });
95
95
  Object.defineProperty(exports, "createStorefrontApiHandler", {
96
96
  enumerable: true,
97
- get: function () { return chunkQA5C477U_cjs.createStorefrontApiHandler; }
97
+ get: function () { return chunkCJEOH6QC_cjs.createStorefrontApiHandler; }
98
98
  });
99
99
  Object.defineProperty(exports, "createUploadHandler", {
100
100
  enumerable: true,
101
- get: function () { return chunkQA5C477U_cjs.createUploadHandler; }
101
+ get: function () { return chunkCJEOH6QC_cjs.createUploadHandler; }
102
102
  });
103
103
  Object.defineProperty(exports, "createUserAuthApiRouter", {
104
104
  enumerable: true,
105
- get: function () { return chunkQA5C477U_cjs.createUserAuthApiRouter; }
105
+ get: function () { return chunkCJEOH6QC_cjs.createUserAuthApiRouter; }
106
106
  });
107
107
  Object.defineProperty(exports, "createUserAvatarHandler", {
108
108
  enumerable: true,
109
- get: function () { return chunkQA5C477U_cjs.createUserAvatarHandler; }
109
+ get: function () { return chunkCJEOH6QC_cjs.createUserAvatarHandler; }
110
110
  });
111
111
  Object.defineProperty(exports, "createUserProfileHandler", {
112
112
  enumerable: true,
113
- get: function () { return chunkQA5C477U_cjs.createUserProfileHandler; }
113
+ get: function () { return chunkCJEOH6QC_cjs.createUserProfileHandler; }
114
114
  });
115
115
  Object.defineProperty(exports, "createUsersApiHandlers", {
116
116
  enumerable: true,
117
- get: function () { return chunkQA5C477U_cjs.createUsersApiHandlers; }
117
+ get: function () { return chunkCJEOH6QC_cjs.createUsersApiHandlers; }
118
118
  });
119
119
  Object.defineProperty(exports, "createVendorDashboardHandler", {
120
120
  enumerable: true,
121
- get: function () { return chunkQA5C477U_cjs.createVendorDashboardHandler; }
121
+ get: function () { return chunkCJEOH6QC_cjs.createVendorDashboardHandler; }
122
122
  });
123
123
  Object.defineProperty(exports, "createVendorOnboardHandlers", {
124
124
  enumerable: true,
125
- get: function () { return chunkQA5C477U_cjs.createVendorOnboardHandlers; }
125
+ get: function () { return chunkCJEOH6QC_cjs.createVendorOnboardHandlers; }
126
126
  });
127
127
  Object.defineProperty(exports, "getPublicSettingsGroup", {
128
128
  enumerable: true,
129
- get: function () { return chunkQA5C477U_cjs.getPublicSettingsGroup; }
129
+ get: function () { return chunkCJEOH6QC_cjs.getPublicSettingsGroup; }
130
130
  });
131
131
  Object.defineProperty(exports, "mergeGuardrailsIntoSystemPrompt", {
132
132
  enumerable: true,
133
- get: function () { return chunkQA5C477U_cjs.mergeGuardrailsIntoSystemPrompt; }
133
+ get: function () { return chunkCJEOH6QC_cjs.mergeGuardrailsIntoSystemPrompt; }
134
134
  });
135
135
  Object.defineProperty(exports, "parseLlmAgentValidationRules", {
136
136
  enumerable: true,
137
- get: function () { return chunkQA5C477U_cjs.parseLlmAgentValidationRules; }
137
+ get: function () { return chunkCJEOH6QC_cjs.parseLlmAgentValidationRules; }
138
138
  });
139
139
  Object.defineProperty(exports, "simpleDecrypt", {
140
140
  enumerable: true,
141
- get: function () { return chunkQA5C477U_cjs.simpleDecrypt; }
141
+ get: function () { return chunkCJEOH6QC_cjs.simpleDecrypt; }
142
142
  });
143
143
  Object.defineProperty(exports, "simpleEncrypt", {
144
144
  enumerable: true,
145
- get: function () { return chunkQA5C477U_cjs.simpleEncrypt; }
145
+ get: function () { return chunkCJEOH6QC_cjs.simpleEncrypt; }
146
146
  });
147
147
  Object.defineProperty(exports, "validateUserMessageAgainstAgentRules", {
148
148
  enumerable: true,
149
- get: function () { return chunkQA5C477U_cjs.validateUserMessageAgainstAgentRules; }
149
+ get: function () { return chunkCJEOH6QC_cjs.validateUserMessageAgainstAgentRules; }
150
150
  });
151
151
  Object.defineProperty(exports, "validateUserMessageAgainstStructuredRules", {
152
152
  enumerable: true,
153
- get: function () { return chunkQA5C477U_cjs.validateUserMessageAgainstStructuredRules; }
153
+ get: function () { return chunkCJEOH6QC_cjs.validateUserMessageAgainstStructuredRules; }
154
154
  });
155
155
  Object.defineProperty(exports, "createCmsAuthBundle", {
156
156
  enumerable: true,
package/dist/api.js CHANGED
@@ -1,16 +1,16 @@
1
- export { autoExpireOrderIfPaymentTimeExceeded, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-R6Q67HAS.js';
1
+ export { autoExpireOrderIfPaymentTimeExceeded, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createSetPasswordHandler, createSettingsApiHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, getPublicSettingsGroup, mergeGuardrailsIntoSystemPrompt, parseLlmAgentValidationRules, simpleDecrypt, simpleEncrypt, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules } from './chunk-77YWLP4X.js';
2
2
  import './chunk-OVTOP42W.js';
3
3
  import './chunk-GO7PPYNU.js';
4
4
  import './chunk-3K5AIEIZ.js';
5
- import './chunk-6LV36PCL.js';
5
+ import './chunk-BWOITUNI.js';
6
6
  import './chunk-GWDI752Q.js';
7
7
  import './chunk-AYWDQFJZ.js';
8
8
  import './chunk-JXF23MPG.js';
9
- import './chunk-GZGFNVTK.js';
10
- import './chunk-YW7EF7K7.js';
11
- import './chunk-HMLVPIJR.js';
9
+ import './chunk-KAOHOHCA.js';
10
+ import './chunk-RXTUSF3R.js';
11
+ import './chunk-MWEK7N3F.js';
12
12
  import './chunk-JC6DLWTE.js';
13
- import './chunk-NMYGQWHV.js';
13
+ import './chunk-3VZAAQUV.js';
14
14
  import './chunk-MQBT33IV.js';
15
15
  import './chunk-CRFV5WJK.js';
16
16
  import './chunk-AYERBA7I.js';
@@ -36,16 +36,29 @@ function parseSocialLinksJson(raw) {
36
36
  }
37
37
  }
38
38
  __name(parseSocialLinksJson, "parseSocialLinksJson");
39
- function mergeEmailLayoutCompanyDetails(branding, emailSettings) {
39
+ function absolutizeEmailAssetUrl(url) {
40
+ const t = url?.trim();
41
+ if (!t) return void 0;
42
+ if (/^(https?:|cid:|data:)/i.test(t)) return t;
43
+ const base = (process.env.NEXTAUTH_URL || process.env.NEXT_PUBLIC_APP_URL || process.env.APP_URL || "").trim().replace(/\/$/, "");
44
+ if (!base) return t;
45
+ return `${base}${t.startsWith("/") ? t : `/${t}`}`;
46
+ }
47
+ __name(absolutizeEmailAssetUrl, "absolutizeEmailAssetUrl");
48
+ function mergeEmailLayoutCompanyDetails(branding, emailSettings, storeSettings) {
40
49
  const fromBranding = getCompanyDetailsFromSettings(branding);
41
50
  const pick = /* @__PURE__ */ __name((emailVal, fallback) => {
42
51
  const t = emailVal?.trim();
43
52
  return t || fallback?.trim() || void 0;
44
53
  }, "pick");
45
- const logoUrl = pick(emailSettings.logoUrl ?? emailSettings.emailLogoUrl, fromBranding.logoUrl);
46
- const companyName = pick(emailSettings.companyName ?? emailSettings.emailCompanyName, fromBranding.companyName);
47
- const supportEmail = pick(emailSettings.supportEmail ?? emailSettings.emailSupportEmail, fromBranding.supportEmail);
48
- const supportPhone = pick(emailSettings.supportPhone, void 0);
54
+ const storeLogo = storeSettings?.invoiceLogoUrl || storeSettings?.companyLogo || storeSettings?.logo || "";
55
+ const storeName = storeSettings?.companyName || storeSettings?.storeName || "";
56
+ const storeEmail = storeSettings?.companyEmail || "";
57
+ const storePhone = storeSettings?.companyPhone || "";
58
+ const logoUrl = absolutizeEmailAssetUrl(pick(emailSettings.logoUrl ?? emailSettings.emailLogoUrl, fromBranding.logoUrl || storeLogo));
59
+ const companyName = pick(emailSettings.companyName ?? emailSettings.emailCompanyName, fromBranding.companyName || storeName);
60
+ const supportEmail = pick(emailSettings.supportEmail ?? emailSettings.emailSupportEmail, fromBranding.supportEmail || storeEmail);
61
+ const supportPhone = pick(emailSettings.supportPhone, storePhone || void 0);
49
62
  const footerDisclaimer = pick(emailSettings.footerDisclaimer, void 0);
50
63
  const followUsTitle = pick(emailSettings.followUsTitle, "Follow Us") || "Follow Us";
51
64
  const socialFromEmail = parseSocialLinksJson(emailSettings.socialLinks);
@@ -1,13 +1,13 @@
1
1
  import { normalizePhoneE164, generateNumericOtp, createOtpChallenge, queueSms, verifyAndConsumeOtpChallenge } from './chunk-OVTOP42W.js';
2
2
  import { JOB_RUNNER_QUEUE } from './chunk-GO7PPYNU.js';
3
3
  import { validateInventoryForConfirmedOrderLines, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, orderInventorySnapshotFromRow, validateInventoryForOrderBecomingConfirmed } from './chunk-3K5AIEIZ.js';
4
- import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-6LV36PCL.js';
4
+ import { resolveChatEmailToolSettings, CHAT_EMAIL_LOG, detectChatLeadIntent, parseIntentRecipientEmails, sendChatLeadEmail, buildTranscriptForLeadEmail, buildChatbotSystemPromptWithEmailTool, validateFcmCredentials, sendFcmPushNotification, parseEmailRecipientsFromConfig, isWhatsAppPluginEnabled, WhatsAppService, emailPlugin, initWhatsappTriggerDispatcher } from './chunk-BWOITUNI.js';
5
5
  import { registerWhatsAppQueueProcessor } from './chunk-GWDI752Q.js';
6
6
  import { inviteStatusForActivation } from './chunk-JXF23MPG.js';
7
- import { queueEmail, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-YW7EF7K7.js';
8
- import { unwrapErpReadData, mapErpPayloadToFulfillment, extractChildOrderRefsFromSalePayload, mapErpPayloadToInvoiceNumber, streamOrderInvoicePdf } from './chunk-HMLVPIJR.js';
7
+ import { queueEmail, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-RXTUSF3R.js';
8
+ import { unwrapErpReadData, mapErpPayloadToFulfillment, extractChildOrderRefsFromSalePayload, mapErpPayloadToInvoiceNumber, streamOrderInvoicePdf } from './chunk-MWEK7N3F.js';
9
9
  import { isErpIntegrationEnabled } from './chunk-JC6DLWTE.js';
10
- import { mergeEmailLayoutCompanyDetails } from './chunk-NMYGQWHV.js';
10
+ import { mergeEmailLayoutCompanyDetails } from './chunk-3VZAAQUV.js';
11
11
  import { getSmsTemplateDefault, SMS_MESSAGE_TEMPLATE_DEFAULTS } from './chunk-MQBT33IV.js';
12
12
  import { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES } from './chunk-AYERBA7I.js';
13
13
  import { ensureCustomerRecord, linkUnclaimedContactToUser, ensureCustomerForUser, canManageRoles, sessionHasEntityAccess } from './chunk-NR44CK5E.js';
@@ -5229,7 +5229,7 @@ function createCrudHandler(dataSource, entityMap, options) {
5229
5229
  const orderIdForNotify = created.id;
5230
5230
  const finalCreatedStatus = String(created.status ?? createdStatus ?? "pending").toLowerCase();
5231
5231
  const initialPayStatus = String(persistBody.paymentStatus ?? body.paymentStatus ?? "unpaid").toLowerCase();
5232
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
5232
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
5233
5233
  if (finalCreatedStatus === "pending") {
5234
5234
  if (initialPayStatus === "failed") {
5235
5235
  fireOrderNotificationTrigger("payment_failed", orderIdForNotify, {
@@ -6313,7 +6313,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6313
6313
  const payments = Array.isArray(updatedOrder.payments) ? updatedOrder.payments : [];
6314
6314
  const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
6315
6315
  const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
6316
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
6316
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
6317
6317
  if (newStatus === "pending") {
6318
6318
  if (curPayStatus === "failed") {
6319
6319
  fireOrderNotificationTrigger("payment_failed", updatedOrder.id, {
@@ -6970,7 +6970,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6970
6970
  });
6971
6971
  }
6972
6972
  if (ordStatus === "pending" || ordStatus === "confirmed") {
6973
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
6973
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
6974
6974
  fireOrderNotificationTrigger("order_placed", pOrder, {
6975
6975
  dataSource,
6976
6976
  entityMap
@@ -6984,7 +6984,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6984
6984
  }
6985
6985
  }
6986
6986
  } else if (newPayStatus === "failed") {
6987
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
6987
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
6988
6988
  fireOrderNotificationTrigger("payment_failed", pOrder, {
6989
6989
  dataSource,
6990
6990
  entityMap
@@ -6992,7 +6992,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
6992
6992
  }).catch(() => {
6993
6993
  });
6994
6994
  } else if (newPayStatus === "refunded") {
6995
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
6995
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
6996
6996
  fireOrderNotificationTrigger("payment_refund_initiated", pOrder, {
6997
6997
  dataSource,
6998
6998
  entityMap
@@ -7122,7 +7122,7 @@ function createCrudByIdHandler(dataSource, entityMap, options) {
7122
7122
  const payments = Array.isArray(ord.payments) ? ord.payments : [];
7123
7123
  const bodyPayStatus = rawBody && typeof rawBody === "object" && rawBody.paymentStatus != null ? String(rawBody.paymentStatus).toLowerCase() : null;
7124
7124
  const curPayStatus = bodyPayStatus || String(payments[0]?.status || "unpaid").toLowerCase();
7125
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
7125
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
7126
7126
  if (newStatus === "pending") {
7127
7127
  if (curPayStatus === "failed") {
7128
7128
  fireOrderNotificationTrigger("payment_failed", ord.id, {
@@ -29005,7 +29005,7 @@ function createCmsApiHandler(config) {
29005
29005
  companyDetails
29006
29006
  };
29007
29007
  if (queue) {
29008
- const { queueEmail: queueEmail2 } = await import('./email-queue-65PQAG4C.js');
29008
+ const { queueEmail: queueEmail2 } = await import('./email-queue-YPRSVG56.js');
29009
29009
  await queueEmail2(cms, {
29010
29010
  to: opts.to,
29011
29011
  templateName: "passwordReset",
@@ -30305,7 +30305,7 @@ function createCmsApiHandler(config) {
30305
30305
  const pe = await requireEntityPermissionEffective(req, "orders", "read");
30306
30306
  if (pe) return pe;
30307
30307
  const cms = await getCms();
30308
- const { streamOrderInvoicePdf: streamOrderInvoicePdf2 } = await import('./erp-order-invoice-MYFCXOCY.js');
30308
+ const { streamOrderInvoicePdf: streamOrderInvoicePdf2 } = await import('./erp-order-invoice-3UGWLICU.js');
30309
30309
  const oid = Number(path2[1]);
30310
30310
  if (!Number.isFinite(oid)) return config.json({
30311
30311
  error: "Invalid id"
@@ -30687,7 +30687,7 @@ function createCmsApiHandler(config) {
30687
30687
  status: 400
30688
30688
  });
30689
30689
  }
30690
- const { resendOrderNotification } = await import('./order-notification-dispatcher-IYMOS4VY.js');
30690
+ const { resendOrderNotification } = await import('./order-notification-dispatcher-JKFQJYGG.js');
30691
30691
  const result = await resendOrderNotification(triggerKey, orderId, {
30692
30692
  dataSource,
30693
30693
  entityMap,
@@ -30786,7 +30786,7 @@ function createCmsApiHandler(config) {
30786
30786
  status: "cancelled"
30787
30787
  });
30788
30788
  const fireOrderCancelledNotification = /* @__PURE__ */ __name((refundAmount) => {
30789
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
30789
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
30790
30790
  fireOrderNotificationTrigger("order_cancelled", orderId, {
30791
30791
  dataSource,
30792
30792
  entityMap
@@ -31031,7 +31031,7 @@ function createCmsApiHandler(config) {
31031
31031
  }, {
31032
31032
  status: 400
31033
31033
  });
31034
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-3NTOGEA5.js');
31034
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-WGM7HWG4.js');
31035
31035
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms);
31036
31036
  return handlers.getChannels(req, orderId);
31037
31037
  }
@@ -31046,7 +31046,7 @@ function createCmsApiHandler(config) {
31046
31046
  }, {
31047
31047
  status: 400
31048
31048
  });
31049
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-3NTOGEA5.js');
31049
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-WGM7HWG4.js');
31050
31050
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms);
31051
31051
  return handlers.sendOtp(req, orderId);
31052
31052
  }
@@ -31061,7 +31061,7 @@ function createCmsApiHandler(config) {
31061
31061
  }, {
31062
31062
  status: 400
31063
31063
  });
31064
- const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-3NTOGEA5.js');
31064
+ const { createOrderCompletionOtpHandlers } = await import('./order-completion-otp-handlers-WGM7HWG4.js');
31065
31065
  const handlers = createOrderCompletionOtpHandlers(dataSource, entityMap, getCms);
31066
31066
  return handlers.verifyOtp(req, orderId);
31067
31067
  }
@@ -31693,7 +31693,7 @@ function createStorefrontApiHandler(config) {
31693
31693
  const otpPepper = config.otpPepper;
31694
31694
  const defaultPhoneCc = config.defaultPhoneCountryCode;
31695
31695
  function fireOrderPlacedNotification(orderId, isPaid) {
31696
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
31696
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
31697
31697
  fireOrderNotificationTrigger("order_placed", orderId, {
31698
31698
  dataSource,
31699
31699
  entityMap
@@ -34630,7 +34630,7 @@ function createStorefrontApiHandler(config) {
34630
34630
  } catch {
34631
34631
  }
34632
34632
  try {
34633
- void import('./emit-order-notification-trigger-MD7EBODC.js').then(({ fireOrderNotificationTrigger }) => {
34633
+ void import('./emit-order-notification-trigger-XVG2B5ZF.js').then(({ fireOrderNotificationTrigger }) => {
34634
34634
  fireOrderNotificationTrigger("order_cancelled", orderId, {
34635
34635
  dataSource,
34636
34636
  entityMap
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkUPLVMVRX_cjs = require('./chunk-UPLVMVRX.cjs');
4
- var chunkCTIEAHQL_cjs = require('./chunk-CTIEAHQL.cjs');
4
+ var chunkJLDHK2QE_cjs = require('./chunk-JLDHK2QE.cjs');
5
5
  var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
6
6
  var pdfLib = require('pdf-lib');
7
7
 
@@ -666,8 +666,8 @@ async function buildLocalInvoicePdfForOrder(ds, entityMap, orderId) {
666
666
  loadSettingsGroup(ds, entityMap, "branding"),
667
667
  loadSettingsGroup(ds, entityMap, "email")
668
668
  ]);
669
- const companyDetails = chunkCTIEAHQL_cjs.mergeEmailLayoutCompanyDetails(branding, email);
670
- const fromBranding = chunkCTIEAHQL_cjs.getCompanyDetailsFromSettings(branding);
669
+ const companyDetails = chunkJLDHK2QE_cjs.mergeEmailLayoutCompanyDetails(branding, email);
670
+ const fromBranding = chunkJLDHK2QE_cjs.getCompanyDetailsFromSettings(branding);
671
671
  const rawLogo = store.invoiceLogoUrl || store.companyLogo || store.logo || companyDetails.logoUrl || fromBranding.logoUrl || null;
672
672
  const logoUrl = resolveInvoiceAssetUrl(rawLogo);
673
673
  const companyName = store.companyName || store.invoiceCompanyName || store.name || companyDetails.companyName || fromBranding.companyName || "Store";
@@ -1,8 +1,8 @@
1
1
  import { queueWhatsApp } from './chunk-GWDI752Q.js';
2
2
  import { notificationTriggerEmitter } from './chunk-AYWDQFJZ.js';
3
- import { sesRegionSupportsSmtp, sesSmtpHost, EmailService, renderLayout } from './chunk-GZGFNVTK.js';
4
- import { queueEmail } from './chunk-YW7EF7K7.js';
5
- import { mergeEmailLayoutCompanyDetails } from './chunk-NMYGQWHV.js';
3
+ import { sesRegionSupportsSmtp, sesSmtpHost, EmailService, renderLayout } from './chunk-KAOHOHCA.js';
4
+ import { queueEmail } from './chunk-RXTUSF3R.js';
5
+ import { mergeEmailLayoutCompanyDetails } from './chunk-3VZAAQUV.js';
6
6
  import { applyTemplateVars } from './chunk-CRFV5WJK.js';
7
7
  import { __name } from './chunk-SHUYVCID.js';
8
8
  import * as crypto from 'crypto';
@@ -1757,11 +1757,12 @@ __name(formatBodyForEmailHtml, "formatBodyForEmailHtml");
1757
1757
  async function sendEmailForTrigger(triggerKey, orderId, audienceType, variables, contactEmail, dataSource, entityMap, getCms) {
1758
1758
  const template = await loadBoundTemplate(triggerKey, "email", audienceType, dataSource, entityMap);
1759
1759
  if (!template) return;
1760
- const [branding, emailSettings] = await Promise.all([
1760
+ const [branding, emailSettings, storeSettings] = await Promise.all([
1761
1761
  getSettingsGroup(dataSource, entityMap, "branding"),
1762
- getSettingsGroup(dataSource, entityMap, "email")
1762
+ getSettingsGroup(dataSource, entityMap, "email"),
1763
+ getSettingsGroup(dataSource, entityMap, "store")
1763
1764
  ]);
1764
- const companyDetails = mergeEmailLayoutCompanyDetails(branding, emailSettings);
1765
+ const companyDetails = mergeEmailLayoutCompanyDetails(branding, emailSettings, storeSettings);
1765
1766
  const templateContent = (template.body ?? "") + (template.subject ?? "");
1766
1767
  const shouldAttachInvoice = /\{\{\s*(invoiceAttachment|invoicePdf|invoice|attachInvoice)\s*\}\}/i.test(templateContent);
1767
1768
  const cleanVariables = {