@brandlab-digital/site-next 1.0.0-rc.2 → 1.0.0-rc.21

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 (88) hide show
  1. package/dist/analytics.d.ts +23 -0
  2. package/dist/analytics.d.ts.map +1 -1
  3. package/dist/analytics.js +61 -0
  4. package/dist/analytics.js.map +1 -1
  5. package/dist/blog.d.ts.map +1 -1
  6. package/dist/blog.js +5 -2
  7. package/dist/blog.js.map +1 -1
  8. package/dist/contact/attribution.d.ts +11 -0
  9. package/dist/contact/attribution.d.ts.map +1 -0
  10. package/dist/contact/attribution.js +145 -0
  11. package/dist/contact/attribution.js.map +1 -0
  12. package/dist/contact/client.d.ts +7 -1
  13. package/dist/contact/client.d.ts.map +1 -1
  14. package/dist/contact/client.js +32 -1
  15. package/dist/contact/client.js.map +1 -1
  16. package/dist/contact/context.d.ts +4 -0
  17. package/dist/contact/context.d.ts.map +1 -1
  18. package/dist/contact/context.js +56 -7
  19. package/dist/contact/context.js.map +1 -1
  20. package/dist/contact/contract.d.ts +3 -4
  21. package/dist/contact/contract.d.ts.map +1 -1
  22. package/dist/contact/contract.js +3 -5
  23. package/dist/contact/contract.js.map +1 -1
  24. package/dist/contact/email.d.ts +1 -0
  25. package/dist/contact/email.d.ts.map +1 -1
  26. package/dist/contact/email.js +137 -54
  27. package/dist/contact/email.js.map +1 -1
  28. package/dist/contact/image-sanitizer.d.ts +1 -1
  29. package/dist/contact/image-sanitizer.d.ts.map +1 -1
  30. package/dist/contact/image-sanitizer.js +12 -17
  31. package/dist/contact/image-sanitizer.js.map +1 -1
  32. package/dist/contact/index.d.ts +1 -0
  33. package/dist/contact/index.d.ts.map +1 -1
  34. package/dist/contact/index.js +2 -0
  35. package/dist/contact/index.js.map +1 -1
  36. package/dist/contact/production.d.ts +3 -1
  37. package/dist/contact/production.d.ts.map +1 -1
  38. package/dist/contact/production.js +31 -60
  39. package/dist/contact/production.js.map +1 -1
  40. package/dist/contact/resend.d.ts +1 -1
  41. package/dist/contact/resend.js +1 -1
  42. package/dist/contact/server-entry.d.ts +13 -0
  43. package/dist/contact/server-entry.d.ts.map +1 -0
  44. package/dist/contact/server-entry.js +13 -0
  45. package/dist/contact/server-entry.js.map +1 -0
  46. package/dist/contact/server.d.ts.map +1 -1
  47. package/dist/contact/server.js +27 -28
  48. package/dist/contact/server.js.map +1 -1
  49. package/dist/contact/shared.d.ts +3 -6
  50. package/dist/contact/shared.d.ts.map +1 -1
  51. package/dist/contact/shared.js.map +1 -1
  52. package/dist/google-reviews-client.d.ts +20 -0
  53. package/dist/google-reviews-client.d.ts.map +1 -0
  54. package/dist/google-reviews-client.js +85 -0
  55. package/dist/google-reviews-client.js.map +1 -0
  56. package/dist/google-reviews-durable.d.ts +22 -0
  57. package/dist/google-reviews-durable.d.ts.map +1 -0
  58. package/dist/google-reviews-durable.js +81 -0
  59. package/dist/google-reviews-durable.js.map +1 -0
  60. package/dist/google-reviews-server.d.ts +58 -0
  61. package/dist/google-reviews-server.d.ts.map +1 -0
  62. package/dist/google-reviews-server.js +151 -0
  63. package/dist/google-reviews-server.js.map +1 -0
  64. package/dist/google-reviews-ui.d.ts +599 -0
  65. package/dist/google-reviews-ui.d.ts.map +1 -0
  66. package/dist/google-reviews-ui.js +188 -0
  67. package/dist/google-reviews-ui.js.map +1 -0
  68. package/dist/google-reviews.d.ts +4 -322
  69. package/dist/google-reviews.d.ts.map +1 -1
  70. package/dist/google-reviews.js +4 -252
  71. package/dist/google-reviews.js.map +1 -1
  72. package/dist/google-tag-plan.d.ts +19 -0
  73. package/dist/google-tag-plan.d.ts.map +1 -0
  74. package/dist/google-tag-plan.js +85 -0
  75. package/dist/google-tag-plan.js.map +1 -0
  76. package/dist/google-tag.d.ts +17 -0
  77. package/dist/google-tag.d.ts.map +1 -0
  78. package/dist/google-tag.js +18 -0
  79. package/dist/google-tag.js.map +1 -0
  80. package/dist/instrumentation-client.d.ts +2 -0
  81. package/dist/instrumentation-client.d.ts.map +1 -1
  82. package/dist/instrumentation-client.js +39 -3
  83. package/dist/instrumentation-client.js.map +1 -1
  84. package/dist/redis-rest.d.ts +12 -0
  85. package/dist/redis-rest.d.ts.map +1 -0
  86. package/dist/redis-rest.js +83 -0
  87. package/dist/redis-rest.js.map +1 -0
  88. package/package.json +29 -36
@@ -2,7 +2,9 @@ import 'server-only';
2
2
  import { CONTACT_CLIENT_SUBMISSION_ID_PATTERN, } from './shared.js';
3
3
  import { normalizeBrandlabRoutePath } from '@brandlab-digital/site-core/routes';
4
4
  import { isBrandlabCanonicalEntityId } from '@brandlab-digital/site-core/entity-id';
5
- const TOKEN_VERSION = 'v2';
5
+ import { normalizeContactAttributionSummary } from './attribution.js';
6
+ const TOKEN_VERSION = 'v3';
7
+ const LEGACY_TOKEN_VERSION = 'v2';
6
8
  const DEFAULT_LIFETIME_MS = 30 * 60 * 1_000;
7
9
  const DEFAULT_MINIMUM_FILL_TIME_MS = 800;
8
10
  const DEFAULT_CLOCK_SKEW_MS = 5_000;
@@ -85,6 +87,9 @@ function payloadBytes(context, origin) {
85
87
  origin,
86
88
  context.pagePath,
87
89
  context.pageLabel ?? null,
90
+ context.initialLandingPath,
91
+ context.visitSource,
92
+ context.visitSourceDetail ?? null,
88
93
  context.issuedAt,
89
94
  context.expiresAt,
90
95
  ]));
@@ -92,16 +97,43 @@ function payloadBytes(context, origin) {
92
97
  function parsePayload(bytes) {
93
98
  try {
94
99
  const value = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(bytes));
100
+ if (Array.isArray(value) &&
101
+ value.length === 8 &&
102
+ value[0] === LEGACY_TOKEN_VERSION &&
103
+ typeof value[1] === 'string' &&
104
+ typeof value[2] === 'string' &&
105
+ typeof value[3] === 'string' &&
106
+ typeof value[4] === 'string' &&
107
+ (value[5] === null || typeof value[5] === 'string') &&
108
+ typeof value[6] === 'number' &&
109
+ typeof value[7] === 'number') {
110
+ return {
111
+ context: {
112
+ projectId: value[1],
113
+ clientSubmissionId: value[2],
114
+ pagePath: value[4],
115
+ ...(value[5] ? { pageLabel: value[5] } : {}),
116
+ initialLandingPath: value[4],
117
+ visitSource: 'direct-or-unknown',
118
+ issuedAt: value[6],
119
+ expiresAt: value[7],
120
+ },
121
+ origin: value[3],
122
+ };
123
+ }
95
124
  if (!Array.isArray(value) ||
96
- value.length !== 8 ||
125
+ value.length !== 11 ||
97
126
  value[0] !== TOKEN_VERSION ||
98
127
  typeof value[1] !== 'string' ||
99
128
  typeof value[2] !== 'string' ||
100
129
  typeof value[3] !== 'string' ||
101
130
  typeof value[4] !== 'string' ||
102
131
  (value[5] !== null && typeof value[5] !== 'string') ||
103
- typeof value[6] !== 'number' ||
104
- typeof value[7] !== 'number') {
132
+ typeof value[6] !== 'string' ||
133
+ typeof value[7] !== 'string' ||
134
+ (value[8] !== null && typeof value[8] !== 'string') ||
135
+ typeof value[9] !== 'number' ||
136
+ typeof value[10] !== 'number') {
105
137
  return undefined;
106
138
  }
107
139
  return {
@@ -110,8 +142,11 @@ function parsePayload(bytes) {
110
142
  clientSubmissionId: value[2],
111
143
  pagePath: value[4],
112
144
  ...(value[5] ? { pageLabel: value[5] } : {}),
113
- issuedAt: value[6],
114
- expiresAt: value[7],
145
+ initialLandingPath: value[6],
146
+ visitSource: value[7],
147
+ ...(value[8] ? { visitSourceDetail: value[8] } : {}),
148
+ issuedAt: value[9],
149
+ expiresAt: value[10],
115
150
  },
116
151
  origin: value[3],
117
152
  };
@@ -166,6 +201,11 @@ export function createContactSubmissionContextCodec(options) {
166
201
  const origin = normalizeOrigin(input.origin, deploymentMode);
167
202
  const pagePath = normalizeBrandlabRoutePath(input.pagePath);
168
203
  const pageLabel = normalizePageLabel(input.pageLabel);
204
+ const attribution = normalizeContactAttributionSummary({
205
+ initialLandingPath: input.initialLandingPath ?? pagePath,
206
+ visitSource: input.visitSource ?? 'direct-or-unknown',
207
+ ...(input.visitSourceDetail ? { visitSourceDetail: input.visitSourceDetail } : {}),
208
+ });
169
209
  const now = (options.now?.() ?? new Date()).getTime();
170
210
  const issuedAt = input.issuedAt ?? now;
171
211
  const expiresAt = input.expiresAt ?? issuedAt + lifetimeMs;
@@ -179,6 +219,7 @@ export function createContactSubmissionContextCodec(options) {
179
219
  clientSubmissionId: input.clientSubmissionId,
180
220
  pagePath,
181
221
  ...(pageLabel ? { pageLabel } : {}),
222
+ ...attribution,
182
223
  issuedAt,
183
224
  expiresAt,
184
225
  };
@@ -198,7 +239,10 @@ export function createContactSubmissionContextCodec(options) {
198
239
  if (input.token.length > 4_096)
199
240
  return { ok: false, reason: 'invalid' };
200
241
  const [version, encodedPayload, encodedSignature, extra] = input.token.split('.');
201
- if (version !== TOKEN_VERSION || !encodedPayload || !encodedSignature || extra) {
242
+ if ((version !== TOKEN_VERSION && version !== LEGACY_TOKEN_VERSION) ||
243
+ !encodedPayload ||
244
+ !encodedSignature ||
245
+ extra) {
202
246
  return { ok: false, reason: 'invalid' };
203
247
  }
204
248
  const payload = base64UrlToBytes(encodedPayload);
@@ -216,9 +260,11 @@ export function createContactSubmissionContextCodec(options) {
216
260
  const context = parsed.context;
217
261
  let normalizedPagePath;
218
262
  let normalizedPageLabel;
263
+ let normalizedAttribution;
219
264
  try {
220
265
  normalizedPagePath = normalizeBrandlabRoutePath(context.pagePath);
221
266
  normalizedPageLabel = normalizePageLabel(context.pageLabel);
267
+ normalizedAttribution = normalizeContactAttributionSummary(context);
222
268
  }
223
269
  catch {
224
270
  return { ok: false, reason: 'invalid' };
@@ -228,6 +274,9 @@ export function createContactSubmissionContextCodec(options) {
228
274
  parsed.origin !== origin ||
229
275
  normalizedPagePath !== context.pagePath ||
230
276
  normalizedPageLabel !== context.pageLabel ||
277
+ normalizedAttribution.initialLandingPath !== context.initialLandingPath ||
278
+ normalizedAttribution.visitSource !== context.visitSource ||
279
+ normalizedAttribution.visitSourceDetail !== context.visitSourceDetail ||
231
280
  !Number.isSafeInteger(context.issuedAt) ||
232
281
  !Number.isSafeInteger(context.expiresAt) ||
233
282
  context.issuedAt <= 0 ||
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/contact/context.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EACL,oCAAoC,GAKrC,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAA;AAEnF,MAAM,aAAa,GAAG,IAAI,CAAA;AAC1B,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;AAC3C,MAAM,4BAA4B,GAAG,GAAG,CAAA;AACxC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AA2BnC,SAAS,oBAAoB,CAAC,KAAa,EAAE,KAAa,EAAE,OAAe,EAAE,OAAe;IAC1F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,kCAAkC,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,KAAa,EACb,cAAmF;IAEnF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IACD,IACE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ;QACxB,CAAC,CACC,CAAC,cAAc,KAAK,aAAa,IAAI,cAAc,KAAK,MAAM,CAAC;YAC/D,GAAG,CAAC,QAAQ,KAAK,OAAO;YACxB,CAAC,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,CAAC,CAC/D,CAAC;QACJ,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,QAAQ,KAAK,GAAG;QACpB,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,IAAI;QACR,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,EACzC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAA;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,kBAA0B;IACnE,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IACD,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB;IACzC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAChF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACrD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAC/D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAC/B,GAAG,CACJ,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7E,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,KAAK;YAAE,OAAO,SAAS,CAAA;QACvD,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAgB,EAAE,KAAiB;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAC9C,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,UAAU,KAAK,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACf,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,OAAyC,EAAE,MAAc;IAC7E,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAC7B,IAAI,CAAC,SAAS,CAAC;QACb,aAAa;QACb,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,kBAAkB;QAC1B,MAAM;QACN,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,SAAS,IAAI,IAAI;QACzB,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,SAAS;KAClB,CAAC,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB;IACrC,IAAI,CAAC;QACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1F,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa;YAC1B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC5B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC5B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC5B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC5B,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;YACnD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAC5B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC5B,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACnB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC5B,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;aACpB;YACD,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;SACjB,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAyB;IACnD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;IAChC,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAA;IACjC,IAAI,UAAU,CAAC,MAAM,GAAG,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,OAA6C;IAE7C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAA;IAC5D,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAA;IACnF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAA;IAChE,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,YAAY,CAAA;IAC7D,IAAI,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC/C,CAAC;IACD,oBAAoB,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;IAC3E,oBAAoB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;IAChF,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;IAEnE,MAAM,SAAS,GACb,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;QAChC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACpC,IAAI,SAAS,CAAC,UAAU,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAA;IACH,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IACD,IAAI,UAA0C,CAAA;IAC9C,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAC7C,KAAK,EACL,SAAS,EACT,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAA;QACH,CAAC;QACD,OAAO,UAAU,CAAA;IACnB,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,KAAK,EAAE,KAAiB,EAAE,EAAE,CACvC,IAAI,UAAU,CACZ,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACjC,MAAM,EACN,MAAM,MAAM,EAAE,EACd,iBAAiB,CAAC,KAAK,CAAC,CACzB,CACF,CAAA;IAEH,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,KAAK;YACf,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;YACzD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;YAC5D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC3D,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YACrD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;YACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAA;YACtC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,QAAQ,GAAG,UAAU,CAAA;YAC1D,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACtE,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;YACxE,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAChE,CAAC;YACD,MAAM,OAAO,GAAG;gBACd,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,QAAQ;gBACR,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,QAAQ;gBACR,SAAS;aACV,CAAA;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;YACrC,OAAO,GAAG,aAAa,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAA;QACvF,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,IAAI,MAAc,CAAA;YAClB,IAAI,CAAC;gBACH,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;gBACzD,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;YACxD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACzC,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACvE,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjF,IAAI,OAAO,KAAK,aAAa,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,IAAI,KAAK,EAAE,CAAC;gBAC/E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACzC,CAAC;YACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAA;YAChD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;YAC5D,IAAI,CAAC,OAAO,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;gBAC1E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACzC,CAAC;YACD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAA;YAC7C,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC;gBAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACzC,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;YACpC,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACpD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAC9B,IAAI,kBAA0B,CAAA;YAC9B,IAAI,mBAAuC,CAAA;YAC3C,IAAI,CAAC;gBACH,kBAAkB,GAAG,0BAA0B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACjE,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACzC,CAAC;YACD,IACE,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;gBACrC,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB;gBACvD,MAAM,CAAC,MAAM,KAAK,MAAM;gBACxB,kBAAkB,KAAK,OAAO,CAAC,QAAQ;gBACvC,mBAAmB,KAAK,OAAO,CAAC,SAAS;gBACzC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACvC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxC,OAAO,CAAC,QAAQ,IAAI,CAAC;gBACrB,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ;gBACrC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,UAAU,EACjD,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACzC,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;YACrD,IAAI,OAAO,CAAC,QAAQ,GAAG,GAAG,GAAG,WAAW;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACjF,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,WAAW;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YAClF,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,iBAAiB,EAAE,CAAC;gBAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;YAC1C,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAC9B,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,KAAK;YACxB,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;YACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,IAAI,WAAW,EAAE,CAAC,MAAM,CACtB,cAAc,aAAa,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAC7E,CACF,CAAA;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClF,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,MAAM;YACxB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC9C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACpD,IACE,OAAO,CAAC,UAAU,GAAG,CAAC;gBACtB,OAAO,CAAC,UAAU,GAAG,GAAG;gBACxB,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,EACxC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;YACnD,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,aAAa,IAAI,UAAU,EAAE,CAAC,CACtE,CAAA;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAClF,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/contact/context.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
- import { type BrandlabContactContract } from '@brandlab-digital/site-core/contact';
1
+ import { type BrandlabContactContract, type ContactAttachmentPolicy } from '@brandlab-digital/site-core/contact';
2
2
  import { type BrandlabContactDefinition } from './shared.js';
3
3
  export type ContactRuntimeDefinitionOptions = Pick<BrandlabContactDefinition, 'brandName' | 'siteUrl' | 'allowedOrigins' | 'deploymentMode'> & {
4
4
  labels: Readonly<Record<string, string>>;
5
- attachment?: {
5
+ attachment?: Partial<ContactAttachmentPolicy> & {
6
6
  fieldPrefix?: string;
7
- filenamePrefix?: string;
8
7
  };
9
- email?: Omit<NonNullable<BrandlabContactDefinition['email']>, 'subject'>;
8
+ email?: NonNullable<BrandlabContactDefinition['email']>;
10
9
  };
11
10
  export declare function createContactDefinitionFromContract(contract: BrandlabContactContract, options: ContactRuntimeDefinitionOptions): BrandlabContactDefinition<string>;
12
11
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/contact/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,uBAAuB,EAE7B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,yBAAyB,EACzB,WAAW,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,CAC9D,GAAG;IACF,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,UAAU,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;CACzE,CAAA;AAuBD,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE,+BAA+B,qCAkDzC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/contact/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE7B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,yBAAyB,EACzB,WAAW,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,CAC9D,GAAG;IACF,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE,KAAK,CAAC,EAAE,WAAW,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAA;CACxD,CAAA;AAuBD,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE,+BAA+B,qCAgDzC"}
@@ -1,4 +1,4 @@
1
- import { defineContactContract, isValidAustralianPhoneNumber, normalizeAustralianPhoneDigits, } from '@brandlab-digital/site-core/contact';
1
+ import { DEFAULT_CONTACT_ATTACHMENT_POLICY, defineContactContract, isValidAustralianPhoneNumber, normalizeAustralianPhoneDigits, } from '@brandlab-digital/site-core/contact';
2
2
  import { defineBrandlabContact, } from './shared.js';
3
3
  const KIND_MAP = {
4
4
  text: 'text',
@@ -52,6 +52,7 @@ export function createContactDefinitionFromContract(contract, options) {
52
52
  const attachments = contract.attachments.mode === 'none'
53
53
  ? false
54
54
  : {
55
+ ...DEFAULT_CONTACT_ATTACHMENT_POLICY,
55
56
  ...attachment,
56
57
  required: contract.attachments.mode === 'images-required',
57
58
  };
@@ -60,10 +61,7 @@ export function createContactDefinitionFromContract(contract, options) {
60
61
  projectId: contract.projectId,
61
62
  fields,
62
63
  attachments,
63
- email: {
64
- ...email,
65
- subject: contract.subjectTerm,
66
- },
64
+ ...(email ? { email } : {}),
67
65
  });
68
66
  }
69
67
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/contact/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/contact/contract.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,6 @@ export interface RenderedContactEmail {
15
15
  }
16
16
  export declare function escapeContactEmailHtml(value: unknown): string;
17
17
  export declare function sanitizeContactEmailSubject(value: string): string;
18
+ export declare function buildContactEmailSubject(input: RenderContactEmailInput): string;
18
19
  export declare function renderContactEmail(input: RenderContactEmailInput): RenderedContactEmail;
19
20
  //# sourceMappingURL=email.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/contact/email.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAGpB,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,yBAAyB,CAAA;IACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAA;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAKD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,UAOpD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,UAExD;AAkED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,oBAAoB,CA4CvF"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/contact/email.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,yBAAyB,CAAA;IACrC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACxC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAA;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,UAOpD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,UAExD;AAoCD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,UAOtE;AA4ED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,oBAAoB,CA4EvF"}
@@ -1,6 +1,8 @@
1
+ import { contactVisitSourceLabel, } from '@brandlab-digital/site-core/contact';
1
2
  import { normalizeBrandlabRoutePath } from '@brandlab-digital/site-core/routes';
2
3
  const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
3
4
  const SAFE_COLOR_PATTERN = /^#[0-9a-fA-F]{6}$/;
5
+ const CONFIRMATION_PATTERN = /^[a-f0-9]{64}$/;
4
6
  export function escapeContactEmailHtml(value) {
5
7
  return String(value)
6
8
  .replace(/&/g, '&amp;')
@@ -10,12 +12,72 @@ export function escapeContactEmailHtml(value) {
10
12
  .replace(/'/g, '&#39;');
11
13
  }
12
14
  export function sanitizeContactEmailSubject(value) {
13
- return value.replace(/[\r\n]+/g, ' ').replace(/\s{2,}/g, ' ').trim().slice(0, 200);
15
+ return value.replace(/[\r\n]+/g, ' ').replace(/\s{2,}/g, ' ').trim().slice(0, 120);
14
16
  }
15
17
  function safeColor(value, fallback) {
16
18
  return value && SAFE_COLOR_PATTERN.test(value) ? value : fallback;
17
19
  }
18
- function renderEmailLogo(definition) {
20
+ function safeSingleLine(value, maximum = 160) {
21
+ const normalized = value?.replace(/[\r\n]+/g, ' ').replace(/\s{2,}/g, ' ').trim();
22
+ return normalized && normalized.length <= maximum && !/[\u0000-\u001f\u007f]/.test(normalized)
23
+ ? normalized
24
+ : undefined;
25
+ }
26
+ function safePath(value) {
27
+ if (!value)
28
+ return undefined;
29
+ try {
30
+ return normalizeBrandlabRoutePath(value);
31
+ }
32
+ catch {
33
+ return undefined;
34
+ }
35
+ }
36
+ function roleValue(input, role) {
37
+ const field = input.definition.fields.find((candidate) => candidate.role === role);
38
+ return field ? input.values[field.name]?.trim() : undefined;
39
+ }
40
+ function subjectFragment(value, maximum) {
41
+ const firstLine = value?.split(/[\r\n]/, 1)[0];
42
+ const safe = safeSingleLine(firstLine, maximum);
43
+ return safe?.replace(/[,:;|]+$/g, '').trim();
44
+ }
45
+ export function buildContactEmailSubject(input) {
46
+ const name = subjectFragment(roleValue(input, 'name'), 60);
47
+ const location = subjectFragment(roleValue(input, 'location'), 60);
48
+ const detail = [name, location].filter(Boolean).join(', ');
49
+ return sanitizeContactEmailSubject(detail ? `New website enquiry — ${detail}` : 'New website enquiry');
50
+ }
51
+ function formatAustralianPhone(value) {
52
+ const digits = value.replace(/\D/g, '');
53
+ if (/^04\d{8}$/.test(digits)) {
54
+ return `${digits.slice(0, 4)} ${digits.slice(4, 7)} ${digits.slice(7)}`;
55
+ }
56
+ if (/^0[2378]\d{8}$/.test(digits)) {
57
+ return `(${digits.slice(0, 2)}) ${digits.slice(2, 6)} ${digits.slice(6)}`;
58
+ }
59
+ if (/^614\d{8}$/.test(digits)) {
60
+ return `+61 ${digits.slice(2, 5)} ${digits.slice(5, 8)} ${digits.slice(8)}`;
61
+ }
62
+ return value;
63
+ }
64
+ function formatSubmittedAt(value) {
65
+ const date = new Date(value);
66
+ if (!Number.isFinite(date.getTime()))
67
+ return 'Time unavailable';
68
+ return new Intl.DateTimeFormat('en-AU', {
69
+ timeZone: 'Australia/Sydney',
70
+ day: 'numeric',
71
+ month: 'short',
72
+ year: 'numeric',
73
+ hour: 'numeric',
74
+ minute: '2-digit',
75
+ }).format(date);
76
+ }
77
+ function shortReference(value) {
78
+ return CONFIRMATION_PATTERN.test(value) ? value.slice(0, 8).toUpperCase() : 'Unavailable';
79
+ }
80
+ function renderEmailLogo(definition, muted) {
19
81
  const logo = definition.email?.logo;
20
82
  if (!logo)
21
83
  return '';
@@ -35,71 +97,92 @@ function renderEmailLogo(definition) {
35
97
  }
36
98
  const width = Number.isInteger(logo.width) && logo.width >= 32 && logo.width <= 240
37
99
  ? logo.width
38
- : 160;
39
- return `<img src="${escapeContactEmailHtml(logo.url)}" alt="${escapeContactEmailHtml(logo.alt)}" width="${width}" style="display:block;max-width:100%;height:auto;margin:0 0 20px">`;
100
+ : 144;
101
+ return `<img src="${escapeContactEmailHtml(logo.url)}" alt="${escapeContactEmailHtml(logo.alt)}" width="${width}" style="display:block;width:${width}px;max-width:100%;height:auto;border:0;outline:none;text-decoration:none;color:${muted};margin:0 0 14px">`;
40
102
  }
41
- function buildRows(input) {
42
- const fieldRows = input.definition.fields.flatMap((field) => {
43
- const value = input.values[field.name]?.trim();
44
- return value ? [{ label: field.label, value }] : [];
45
- });
46
- let safePagePath;
47
- try {
48
- safePagePath = normalizeBrandlabRoutePath(input.context.pagePath);
49
- }
50
- catch {
51
- safePagePath = undefined;
52
- }
53
- const pageLabel = input.context.pageLabel?.trim();
54
- const safePageLabel = pageLabel && pageLabel.length <= 160 && !/[\u0000-\u001f\u007f]/.test(pageLabel)
55
- ? pageLabel
56
- : undefined;
57
- const safePageUrl = safePagePath
58
- ? new URL(safePagePath, input.definition.siteUrl).toString()
59
- : undefined;
60
- const contextRows = [
61
- ['Page', safePageLabel],
62
- ['Page path', safePagePath],
63
- ['Page URL', safePageUrl],
64
- ].flatMap(([label, value]) => (value ? [{ label: label, value }] : []));
65
- return [
66
- ...fieldRows,
67
- ...contextRows,
68
- { label: 'Submitted', value: input.submittedAt },
69
- { label: 'Confirmation ID', value: input.confirmationId },
70
- ];
103
+ function row(label, value, colors) {
104
+ return `<tr><td class="brandlab-email-label" style="padding:0 12px 14px 0;width:118px;vertical-align:top;color:${colors.muted};font-size:13px;font-weight:700;line-height:20px">${escapeContactEmailHtml(label)}</td><td class="brandlab-email-value" style="padding:0 0 14px;vertical-align:top;color:${colors.text};font-size:15px;font-weight:600;line-height:20px;word-break:break-all;overflow-wrap:anywhere">${escapeContactEmailHtml(value)}</td></tr>`;
105
+ }
106
+ function contextRow(label, value, colors) {
107
+ return `<tr><td class="brandlab-email-label" style="padding:0 12px 10px 0;width:118px;vertical-align:top;color:${colors.muted};font-size:12px;font-weight:700;line-height:18px">${escapeContactEmailHtml(label)}</td><td class="brandlab-email-value" style="padding:0 0 10px;vertical-align:top;color:${colors.text};font-size:13px;line-height:18px;word-break:break-all;overflow-wrap:anywhere">${escapeContactEmailHtml(value)}</td></tr>`;
108
+ }
109
+ function sectionLabel(value, accent) {
110
+ return `<p style="margin:0 0 16px;color:${accent};font-size:11px;font-weight:800;line-height:16px;letter-spacing:1.2px;text-transform:uppercase">${escapeContactEmailHtml(value)}</p>`;
111
+ }
112
+ function textLines(rows) {
113
+ return rows.map(({ label, value }) => `${label}: ${value}`).join('\n');
71
114
  }
72
115
  export function renderContactEmail(input) {
73
- const heading = input.definition.email?.heading?.trim() || `New enquiry for ${input.definition.brandName}`;
74
- const subject = sanitizeContactEmailSubject(input.definition.email?.subject || heading);
75
- const rows = buildRows(input);
76
- const attachments = input.attachments ?? [];
77
116
  const colors = {
78
117
  accent: safeColor(input.definition.email?.style?.accentColor, '#1d4ed8'),
79
118
  background: safeColor(input.definition.email?.style?.backgroundColor, '#f3f4f6'),
80
119
  surface: safeColor(input.definition.email?.style?.surfaceColor, '#ffffff'),
81
120
  text: safeColor(input.definition.email?.style?.textColor, '#111827'),
82
- muted: safeColor(input.definition.email?.style?.mutedTextColor, '#4b5563'),
121
+ muted: safeColor(input.definition.email?.style?.mutedTextColor, '#64748b'),
83
122
  };
84
- const htmlRows = rows
85
- .map(({ label, value }) => `<tr><th scope="row" style="padding:10px 12px;text-align:left;vertical-align:top;color:${colors.muted};font-weight:600;width:180px">${escapeContactEmailHtml(label)}</th><td style="padding:10px 12px;white-space:pre-wrap;word-break:break-word;color:${colors.text}">${escapeContactEmailHtml(value)}</td></tr>`)
86
- .join('');
87
- const attachmentText = attachments.length > 0
88
- ? `\n\nAttachments: ${attachments.map((attachment) => attachment.filename).join(', ')}`
123
+ const email = roleValue(input, 'email');
124
+ const message = roleValue(input, 'message');
125
+ const contactRows = input.definition.fields.flatMap((field) => {
126
+ if (field.role === 'message')
127
+ return [];
128
+ const value = input.values[field.name]?.trim();
129
+ if (!value)
130
+ return [];
131
+ return [{
132
+ label: field.label,
133
+ value: field.role === 'phone' ? formatAustralianPhone(value) : value,
134
+ }];
135
+ });
136
+ const landingPath = safePath(input.context.initialLandingPath) ?? '/';
137
+ const submittedPath = safePath(input.context.pagePath) ?? '/';
138
+ const pageLabel = safeSingleLine(input.context.pageLabel);
139
+ const submittedPage = pageLabel ? `${pageLabel} — ${submittedPath}` : submittedPath;
140
+ const source = contactVisitSourceLabel(input.context.visitSource, input.context.visitSourceDetail);
141
+ const submittedAt = formatSubmittedAt(input.submittedAt);
142
+ const reference = shortReference(input.confirmationId);
143
+ const attachmentCount = input.attachments?.length ?? 0;
144
+ const attachmentSummary = attachmentCount === 1
145
+ ? '1 image attached'
146
+ : `${attachmentCount} images attached`;
147
+ const contextRows = [
148
+ { label: 'Visit source', value: source },
149
+ { label: 'Landing page', value: landingPath },
150
+ { label: 'Submitted from', value: submittedPage },
151
+ { label: 'Submitted', value: submittedAt },
152
+ { label: 'Reference', value: reference },
153
+ ];
154
+ const logoHtml = renderEmailLogo(input.definition, colors.muted);
155
+ const subject = buildContactEmailSubject(input);
156
+ const heading = `New enquiry for ${input.definition.brandName}`;
157
+ const htmlContactRows = contactRows.map((item) => row(item.label, item.value, colors)).join('');
158
+ const htmlContextRows = contextRows.map((item) => contextRow(item.label, item.value, colors)).join('');
159
+ const messageHtml = message
160
+ ? `<div style="padding:18px 20px;border-left:4px solid ${colors.accent};background:${colors.background};color:${colors.text};font-size:15px;line-height:24px;white-space:pre-wrap;word-break:break-word">${escapeContactEmailHtml(message)}</div>`
89
161
  : '';
90
- const attachmentHtml = attachments.length > 0
91
- ? `<p style="margin:20px 0 0;color:${colors.muted}"><strong>Attachments:</strong> ${escapeContactEmailHtml(attachments.map((attachment) => attachment.filename).join(', '))}</p>`
162
+ const attachmentsHtml = attachmentCount > 0
163
+ ? `<tr><td style="padding:0 32px 28px"><div style="padding:14px 16px;border:1px solid ${colors.accent};border-radius:6px;color:${colors.text};font-size:13px;line-height:20px"><strong>${escapeContactEmailHtml(attachmentSummary)}</strong><br><span style="color:${colors.muted}">The images are attached to this email.</span></div></td></tr>`
92
164
  : '';
93
- const replyToField = input.definition.fields.find((field) => field.role === 'email' || (!field.role && field.name === 'email'));
94
- const replyTo = replyToField ? input.values[replyToField.name]?.trim() : undefined;
95
- const logoHtml = renderEmailLogo(input.definition);
165
+ const html = `<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="color-scheme" content="light"><meta name="supported-color-schemes" content="light"><title>${escapeContactEmailHtml(subject)}</title><style>@media only screen and (max-width:620px){.brandlab-email-shell{display:block!important;width:auto!important;padding:12px!important}.brandlab-email-card{width:100%!important;max-width:100%!important}.brandlab-email-cell{padding-left:22px!important;padding-right:22px!important}.brandlab-email-title{font-size:24px!important;line-height:31px!important;word-break:break-word!important}.brandlab-email-label,.brandlab-email-value{display:block!important;width:auto!important;padding-right:0!important;word-break:break-word!important}.brandlab-email-label{padding-bottom:3px!important}.brandlab-email-value{padding-bottom:12px!important}}</style></head><body style="margin:0;padding:0;background:${colors.background};color:${colors.text};font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;-webkit-text-size-adjust:100%"><div style="display:none;max-height:0;overflow:hidden;opacity:0;color:transparent">A new website enquiry has been received.</div><table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" bgcolor="${colors.background}" style="width:100%;background:${colors.background};table-layout:fixed"><tr><td class="brandlab-email-shell" align="center" style="padding:28px 16px"><table class="brandlab-email-card" role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" bgcolor="${colors.surface}" style="width:100%;max-width:680px;table-layout:fixed;background:${colors.surface};border-collapse:separate;border-spacing:0;border-top:5px solid ${colors.accent};border-radius:8px;overflow:hidden;box-shadow:0 8px 28px rgba(15,23,42,.08)"><tr><td class="brandlab-email-cell" style="padding:32px 32px 26px">${logoHtml}<p style="margin:0 0 8px;color:${colors.accent};font-size:11px;font-weight:800;line-height:16px;letter-spacing:1.3px;text-transform:uppercase">Website enquiry</p><h1 class="brandlab-email-title" style="margin:0;color:${colors.text};font-size:28px;font-weight:750;line-height:36px;overflow-wrap:anywhere">${escapeContactEmailHtml(heading)}</h1><p style="margin:8px 0 0;color:${colors.muted};font-size:13px;line-height:20px">Received ${escapeContactEmailHtml(submittedAt)}</p></td></tr><tr><td style="height:1px;background:#e5e7eb"></td></tr><tr><td class="brandlab-email-cell" style="padding:28px 32px 22px">${sectionLabel('Contact details', colors.accent)}<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="width:100%;table-layout:fixed;border-collapse:collapse"><tbody>${htmlContactRows}</tbody></table></td></tr><tr><td class="brandlab-email-cell" style="padding:0 32px 28px">${sectionLabel('Customer message', colors.accent)}${messageHtml}</td></tr>${attachmentsHtml}<tr><td class="brandlab-email-cell" style="padding:26px 32px;background:${colors.background};border-top:1px solid #e5e7eb">${sectionLabel('Enquiry context', colors.accent)}<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="width:100%;table-layout:fixed;border-collapse:collapse"><tbody>${htmlContextRows}</tbody></table></td></tr></table><p style="margin:14px 0 0;color:${colors.muted};font-size:11px;line-height:16px;text-align:center">Sent securely from the ${escapeContactEmailHtml(input.definition.brandName)} website.</p></td></tr></table></body></html>`;
166
+ const text = [
167
+ heading,
168
+ `Received ${submittedAt}`,
169
+ '',
170
+ 'CONTACT DETAILS',
171
+ textLines(contactRows),
172
+ '',
173
+ 'CUSTOMER MESSAGE',
174
+ message ?? '',
175
+ ...(attachmentCount > 0 ? ['', 'ATTACHMENTS', attachmentSummary] : []),
176
+ '',
177
+ 'ENQUIRY CONTEXT',
178
+ textLines(contextRows),
179
+ ].join('\n');
180
+ const replyTo = email?.trim().toLowerCase();
96
181
  return {
97
182
  subject,
98
- html: `<!doctype html><html><body style="margin:0;background:${colors.background};color:${colors.text};font-family:Arial,sans-serif"><main style="max-width:720px;margin:0 auto;padding:24px"><section style="background:${colors.surface};border-top:4px solid ${colors.accent};padding:24px">${logoHtml}<h1 style="margin:0 0 20px;font-size:24px">${escapeContactEmailHtml(heading)}</h1><table role="presentation" style="border-collapse:collapse;width:100%"><tbody>${htmlRows}</tbody></table>${attachmentHtml}</section></main></body></html>`,
99
- text: `${heading}\n\n${rows.map(({ label, value }) => `${label}: ${value}`).join('\n\n')}${attachmentText}`,
100
- ...(replyTo && EMAIL_PATTERN.test(replyTo)
101
- ? { replyTo: replyTo.toLowerCase() }
102
- : {}),
183
+ html,
184
+ text,
185
+ ...(replyTo && EMAIL_PATTERN.test(replyTo) ? { replyTo } : {}),
103
186
  };
104
187
  }
105
188
  //# sourceMappingURL=email.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/contact/email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/contact/email.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import 'server-only';
2
2
  import type { ContactAttachmentProcessor } from './shared.js';
3
3
  /**
4
- * The production image boundary for Contact Contract v2. Every accepted image
4
+ * The production image boundary for Contact Contract v3. Every accepted image
5
5
  * is fully decoded, bounded, auto-oriented and re-encoded without source
6
6
  * metadata. Project code cannot replace this processor in production.
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"image-sanitizer.d.ts","sourceRoot":"","sources":["../../src/contact/image-sanitizer.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,aAAa,CAAA;AA2GpB;;;;GAIG;AACH,wBAAgB,mCAAmC,IAAI,0BAA0B,CAiBhF"}
1
+ {"version":3,"file":"image-sanitizer.d.ts","sourceRoot":"","sources":["../../src/contact/image-sanitizer.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,aAAa,CAAA;AAqGpB;;;;GAIG;AACH,wBAAgB,mCAAmC,IAAI,0BAA0B,CAiBhF"}