@samva/markup 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/AGENTS.md +17 -0
  2. package/dist/{ast-63I-VLQx.d.ts → ast-BLybiDxp.d.ts} +34 -60
  3. package/dist/ast.d.ts +2 -2
  4. package/dist/ast.js +4 -52
  5. package/dist/catalog-Db0UcCTg.d.ts +356 -0
  6. package/dist/{checks-DXuERO4B.js → checks-CmmITP6j.js} +14 -14
  7. package/dist/checks.d.ts +1 -1
  8. package/dist/checks.js +1 -1
  9. package/dist/classes.d.ts +1 -1
  10. package/dist/compile-sms.d.ts +3 -3
  11. package/dist/compile-whatsapp.d.ts +5 -5
  12. package/dist/compile-whatsapp.js +3 -3
  13. package/dist/compile.d.ts +5 -5
  14. package/dist/compile.js +5 -5
  15. package/dist/compiler.d.ts +4 -4
  16. package/dist/compiler.js +6 -6
  17. package/dist/components.d.ts +4 -4
  18. package/dist/conditionals.js +3 -3
  19. package/dist/corpus-CM7rKX41.d.ts +106 -0
  20. package/dist/{css-ar2lU3NC.d.ts → css-DoNc7CiC.d.ts} +4 -5
  21. package/dist/diagnostics-CqepLcpI.d.ts +47 -0
  22. package/dist/diagnostics-eFM9A_TU.d.ts +46 -0
  23. package/dist/diagnostics.d.ts +2 -2
  24. package/dist/diagnostics.js +15 -29
  25. package/dist/{elements-DtwKlFVH.d.ts → elements-ChJULZlh.d.ts} +40 -161
  26. package/dist/email/components.d.ts +1 -1
  27. package/dist/email/diagnostics.d.ts +1 -1
  28. package/dist/email/diagnostics.js +8 -43
  29. package/dist/email/elements.d.ts +1 -1
  30. package/dist/email/html.d.ts +2 -2
  31. package/dist/email/html.js +9 -9
  32. package/dist/email/jsx-dev-runtime.d.ts +3 -21
  33. package/dist/email/jsx-runtime.d.ts +1 -1
  34. package/dist/email/jsx-runtime.js +29 -3
  35. package/dist/email/render.d.ts +4 -4
  36. package/dist/email/render.js +1 -1
  37. package/dist/email/selection.d.ts +20 -31
  38. package/dist/email/selection.js +1 -53
  39. package/dist/email/source-edit.d.ts +1 -1
  40. package/dist/email/source-edit.js +2 -2
  41. package/dist/email/stylesheets.d.ts +1 -1
  42. package/dist/email/text.d.ts +1 -1
  43. package/dist/email/text.js +3 -3
  44. package/dist/emit.d.ts +2 -2
  45. package/dist/emit.js +5 -5
  46. package/dist/guards-eV1qLbf2.js +9 -0
  47. package/dist/{input-schema-BIfzI63B.d.ts → input-schema-7dPFVvNE.d.ts} +2 -2
  48. package/dist/input-schema-zjkgrXn2.js +455 -0
  49. package/dist/input-schema.d.ts +1 -1
  50. package/dist/input-schema.js +1 -169
  51. package/dist/interpolate.d.ts +9 -12
  52. package/dist/interpolate.js +1 -19
  53. package/dist/jsx-dev-runtime.d.ts +2 -2
  54. package/dist/{jsx-runtime-C5k_Zq0A.d.ts → jsx-runtime-BI4gI19E.d.ts} +3 -3
  55. package/dist/jsx-runtime.d.ts +1 -1
  56. package/dist/jsx-runtime.js +3 -3
  57. package/dist/model.d.ts +18 -33
  58. package/dist/model.js +4 -17
  59. package/dist/ops.d.ts +78 -172
  60. package/dist/ops.js +51 -117
  61. package/dist/{parser-CGBS73Gz.d.ts → parser-b_Kp5MT6.d.ts} +5 -5
  62. package/dist/parser.d.ts +1 -1
  63. package/dist/parser.js +8 -8
  64. package/dist/{predicate-G2SeSvoN.d.ts → predicate-Bmvgw7Ao.d.ts} +4 -4
  65. package/dist/{predicate-CvkzT-a2.js → predicate-DwXzmqIY.js} +11 -11
  66. package/dist/predicate.d.ts +1 -1
  67. package/dist/predicate.js +1 -1
  68. package/dist/presets/category-mapping.d.ts +1 -1
  69. package/dist/presets/corpus.d.ts +1 -1
  70. package/dist/presets/corpus.js +87 -140
  71. package/dist/presets/public-gallery.d.ts +106 -130
  72. package/dist/presets/public-gallery.js +131 -209
  73. package/dist/presets/public-handoff.d.ts +4 -4
  74. package/dist/presets/public-handoff.js +13 -11
  75. package/dist/presets/public-preview-artifacts.d.ts +5 -5
  76. package/dist/presets/public-preview-artifacts.js +9 -9
  77. package/dist/presets/public-preview.d.ts +0 -4
  78. package/dist/presets/public-preview.js +37 -362
  79. package/dist/presets/showcase.d.ts +2 -0
  80. package/dist/presets/showcase.js +627 -0
  81. package/dist/presets/sources.d.ts +1 -1
  82. package/dist/presets/sources.js +5767 -2023
  83. package/dist/presets.d.ts +2 -384
  84. package/dist/presets.js +299 -765
  85. package/dist/printer.d.ts +1 -1
  86. package/dist/{render-ykQhtMs_.js → render-T6IFPnP4.js} +12 -12
  87. package/dist/render-template.d.ts +7 -7
  88. package/dist/render-template.js +6 -6
  89. package/dist/showcase-dvJMn-Lo.d.ts +456 -0
  90. package/dist/{source-locations-BCJQnIfU.d.ts → source-locations-D6Te6Gy1.d.ts} +4 -26
  91. package/dist/source-locations.d.ts +2 -2
  92. package/dist/source-locations.js +3 -26
  93. package/dist/{template-Dy5yOPyp.d.ts → template-G-QPcfmn.d.ts} +4 -4
  94. package/dist/template.d.ts +1 -1
  95. package/dist/template.js +3 -3
  96. package/dist/theme-css.d.ts +3 -3
  97. package/dist/theme-css.js +3 -3
  98. package/dist/tsx-source-instrumentation.d.ts +1 -3
  99. package/dist/tsx-source-instrumentation.js +6 -6
  100. package/dist/tsx-tracer.d.ts +7 -11
  101. package/dist/tsx-tracer.js +164 -164
  102. package/dist/{variables-if1VrV34.d.ts → variables-BnKs1iqb.d.ts} +2 -2
  103. package/dist/variables.d.ts +1 -1
  104. package/dist/variables.js +4 -4
  105. package/package.json +8 -3
  106. package/dist/corpus-qrUD5O6r.d.ts +0 -254
  107. package/dist/diagnostics-Djd9ckLg.d.ts +0 -90
  108. package/dist/diagnostics-oveE-laV.d.ts +0 -79
package/dist/presets.js CHANGED
@@ -87,12 +87,14 @@ const presetCatalog = [
87
87
  channel: "email",
88
88
  category: "transactional",
89
89
  name: "Welcome",
90
- description: "First email after signup — orient the new user and point them at their dashboard.",
90
+ description: "First email after signup, with a lead illustration and a numbered list of first steps from the input.",
91
91
  variables: [
92
92
  "ctaUrl",
93
93
  "docsUrl",
94
94
  "firstName",
95
- "logoUrl",
95
+ "planNote",
96
+ "steps",
97
+ "supportEmail",
96
98
  "workspace"
97
99
  ]
98
100
  },
@@ -101,11 +103,14 @@ const presetCatalog = [
101
103
  channel: "email",
102
104
  category: "transactional",
103
105
  name: "Email verification",
104
- description: "Confirm a new email address with a one-click button and a fallback code.",
106
+ description: "Confirm a new email address with a one-click button, a fallback code and the request details behind it.",
105
107
  variables: [
106
108
  "email",
109
+ "expiryNotice",
107
110
  "firstName",
108
- "logoUrl",
111
+ "previousEmail",
112
+ "requestDetails",
113
+ "supportEmail",
109
114
  "verificationCode",
110
115
  "verifyUrl",
111
116
  "workspace"
@@ -116,11 +121,13 @@ const presetCatalog = [
116
121
  channel: "email",
117
122
  category: "transactional",
118
123
  name: "One-time passcode",
119
- description: "Deliver a short-lived sign-in or 2FA code with a prominent, copyable value.",
124
+ description: "Deliver a short-lived sign-in code as the only thing on the page, with the request details under it.",
120
125
  variables: [
121
126
  "code",
122
- "expiryMinutes",
123
- "logoUrl",
127
+ "expiryNotice",
128
+ "helpUrl",
129
+ "newDevice",
130
+ "requestDetails",
124
131
  "workspace"
125
132
  ]
126
133
  },
@@ -129,29 +136,15 @@ const presetCatalog = [
129
136
  channel: "email",
130
137
  category: "transactional",
131
138
  name: "Password reset",
132
- description: "Send a secure, expiring reset link with a paste-able fallback URL.",
139
+ description: "Send an expiring reset link with the request details, a paste-able fallback URL and an optional passkey offer.",
133
140
  variables: [
134
- "expiryMinutes",
141
+ "expiryNotice",
135
142
  "firstName",
136
- "logoUrl",
143
+ "passkeyPrompt",
144
+ "requestDetails",
137
145
  "resetUrl",
138
- "workspace"
139
- ]
140
- },
141
- {
142
- id: "receipt",
143
- channel: "email",
144
- category: "transactional",
145
- name: "Receipt",
146
- description: "Confirm a completed payment with an itemized summary and an invoice link.",
147
- variables: [
148
- "firstName",
149
- "invoiceUrl",
150
- "logoUrl",
151
- "orderNumber",
152
- "paidDate",
153
- "paymentMethod",
154
- "total",
146
+ "securityUrl",
147
+ "supportEmail",
155
148
  "workspace"
156
149
  ]
157
150
  },
@@ -160,17 +153,20 @@ const presetCatalog = [
160
153
  channel: "email",
161
154
  category: "transactional",
162
155
  name: "Payment failed",
163
- description: "Alert a customer to a declined charge and prompt them to update billing.",
156
+ description: "Declined-charge notice with the amount due, the card on file, the held order and every charge attempt.",
164
157
  variables: [
165
158
  "amountDue",
166
- "contactUrl",
167
- "firstName",
168
- "logoUrl",
169
- "paymentMethod",
170
- "planName",
171
- "retryDate",
172
- "updatePaymentUrl",
173
- "workspace"
159
+ "attempts",
160
+ "automaticRetry",
161
+ "customerName",
162
+ "declineReason",
163
+ "holdUntil",
164
+ "items",
165
+ "orderNumber",
166
+ "paymentBrand",
167
+ "paymentLast4",
168
+ "supportEmail",
169
+ "updatePaymentUrl"
174
170
  ]
175
171
  },
176
172
  {
@@ -178,16 +174,19 @@ const presetCatalog = [
178
174
  channel: "email",
179
175
  category: "transactional",
180
176
  name: "Shipping update",
181
- description: "Tell a customer their order shipped, with carrier, ETA, and a tracking link.",
177
+ description: "Shipment notice with the carrier, tracking, delivery estimate, the packed items and anything still to come.",
182
178
  variables: [
183
179
  "carrier",
180
+ "customerName",
184
181
  "estimatedDelivery",
185
- "firstName",
186
- "logoUrl",
182
+ "items",
187
183
  "orderNumber",
184
+ "pendingItems",
185
+ "shippedDate",
186
+ "shippingAddress",
187
+ "supportEmail",
188
188
  "trackingNumber",
189
- "trackingUrl",
190
- "workspace"
189
+ "trackingUrl"
191
190
  ]
192
191
  },
193
192
  {
@@ -195,16 +194,19 @@ const presetCatalog = [
195
194
  channel: "email",
196
195
  category: "transactional",
197
196
  name: "Activity notification",
198
- description: "Notify a user that someone acted in their workspace, with a deep link back.",
197
+ description: "Workspace activity notification with the actor, the message quoted in full, recent activity and a deep link back.",
199
198
  variables: [
200
199
  "actionSummary",
200
+ "actorAvatar",
201
201
  "actorName",
202
- "ctaUrl",
203
- "logoUrl",
204
- "notificationBody",
202
+ "attachment",
203
+ "itemTitle",
204
+ "itemUrl",
205
+ "message",
206
+ "otherActivity",
205
207
  "settingsUrl",
206
208
  "timestamp",
207
- "workspace"
209
+ "workspaceName"
208
210
  ]
209
211
  },
210
212
  {
@@ -212,90 +214,39 @@ const presetCatalog = [
212
214
  channel: "email",
213
215
  category: "transactional",
214
216
  name: "Team invite",
215
- description: "Invite someone to collaborate in a workspace with a single accept action.",
217
+ description: "Invite someone into a workspace with one accept action, the inviter's note and the people already there.",
216
218
  variables: [
217
219
  "acceptUrl",
220
+ "expiryNotice",
218
221
  "inviteeEmail",
222
+ "inviterAvatarUrl",
219
223
  "inviterEmail",
220
224
  "inviterName",
221
- "logoUrl",
225
+ "personalNote",
222
226
  "productName",
227
+ "teammates",
223
228
  "workspace"
224
229
  ]
225
230
  },
226
- {
227
- id: "order-delivered",
228
- channel: "email",
229
- category: "transactional",
230
- name: "Order delivered",
231
- description: "Confirm a delivered order with the itemized contents, delivery address, tracking, and a reorder path.",
232
- variables: [
233
- "apparelUrl",
234
- "carrierName",
235
- "gearUrl",
236
- "homeUrl",
237
- "productOneImageUrl",
238
- "productOneName",
239
- "productOneQuantity",
240
- "productOneTotal",
241
- "productOneVariant",
242
- "productThreeImageUrl",
243
- "productThreeName",
244
- "productThreeQuantity",
245
- "productThreeTotal",
246
- "productThreeVariant",
247
- "productTwoImageUrl",
248
- "productTwoName",
249
- "productTwoQuantity",
250
- "productTwoTotal",
251
- "productTwoVariant",
252
- "recipientName",
253
- "shippingAddressLine1",
254
- "shippingCityStateZip",
255
- "shippingCountry",
256
- "shopAllUrl",
257
- "socialFourIconUrl",
258
- "socialFourUrl",
259
- "socialOneIconUrl",
260
- "socialOneUrl",
261
- "socialThreeIconUrl",
262
- "socialThreeUrl",
263
- "socialTwoIconUrl",
264
- "socialTwoUrl",
265
- "trackOrderUrl",
266
- "trackingNumber",
267
- "trackingUrl",
268
- "unsubscribeUrl"
269
- ]
270
- },
271
231
  {
272
232
  id: "data-sharing-review",
273
233
  channel: "email",
274
234
  category: "transactional",
275
235
  name: "Data-sharing review",
276
- description: "Prompt a customer to review a third-party data connection and keep or remove it, with a reference code.",
236
+ description: "Ask a customer to keep or remove a third-party connection, listing every permission it holds.",
277
237
  variables: [
278
- "accountSettingsUrl",
279
- "appDownloadIconUrl",
280
- "appDownloadUrl",
238
+ "connectedServiceIconUrl",
281
239
  "connectedServiceName",
282
- "contactUrl",
283
- "copyrightYear",
284
- "daysSinceConnection",
285
- "fraudCenterUrl",
286
- "fraudHelpUrl",
240
+ "connectedSince",
287
241
  "keepConnectionUrl",
288
- "privacyUrl",
242
+ "lastAccess",
289
243
  "recipientEmail",
290
244
  "referenceCode",
291
245
  "removeConnectionUrl",
292
- "signInIconUrl",
293
- "signInUrl",
294
- "socialFiveIconUrl",
295
- "socialFourIconUrl",
296
- "socialOneIconUrl",
297
- "socialThreeIconUrl",
298
- "socialTwoIconUrl"
246
+ "scopes",
247
+ "securityUrl",
248
+ "settingsUrl",
249
+ "workspace"
299
250
  ]
300
251
  },
301
252
  {
@@ -303,41 +254,15 @@ const presetCatalog = [
303
254
  channel: "email",
304
255
  category: "digest",
305
256
  name: "Weekly digest",
306
- description: "Recap the week's activity as a scannable list of stories with read-more links.",
307
- variables: [
308
- "dashboardUrl",
309
- "highlightCount",
310
- "logoUrl",
311
- "storyOneSummary",
312
- "storyOneTitle",
313
- "storyOneUrl",
314
- "storyTwoSummary",
315
- "storyTwoTitle",
316
- "storyTwoUrl",
317
- "unsubscribeUrl",
318
- "weekRange",
319
- "workspace"
320
- ]
321
- },
322
- {
323
- id: "newsletter",
324
- channel: "email",
325
- category: "digest",
326
- name: "Newsletter",
327
- description: "An editorial newsletter with a hero story, secondary links, and subscribe controls.",
257
+ description: "A weekly reader digest: mapped stories with their desk and reading time, a most-read list, and an optional audio edition.",
328
258
  variables: [
329
- "heroImage",
330
- "issueNumber",
331
- "leadBody",
332
- "leadHeadline",
333
- "leadUrl",
334
- "linkOneTitle",
335
- "linkOneUrl",
336
- "linkTwoTitle",
337
- "linkTwoUrl",
338
- "newsletterName",
339
- "publishDate",
340
- "subscribeUrl",
259
+ "archiveUrl",
260
+ "editionLabel",
261
+ "mostRead",
262
+ "podcast",
263
+ "preferencesUrl",
264
+ "readerName",
265
+ "stories",
341
266
  "unsubscribeUrl"
342
267
  ]
343
268
  },
@@ -346,59 +271,23 @@ const presetCatalog = [
346
271
  channel: "email",
347
272
  category: "digest",
348
273
  name: "Long-form newsletter",
349
- description: "Long-form editorial newsletter with a lead story, sponsor slot, and a reading list.",
274
+ description: "A long-form editorial issue: a byline, an essay that renders from a list of paragraphs, a pull quote, an optional labelled sponsor and a reading list.",
350
275
  variables: [
351
- "advertiseEmailUrl",
352
- "authorAvatarUrl",
353
- "authorProfileUrl",
354
- "bookUrl",
355
- "commentIconUrl",
356
- "commentUrl",
357
- "communityUrl",
358
- "concordStoryUrl",
359
- "founderQuoteUrl",
360
- "heroImageUrl",
361
- "leakStoryUrl",
362
- "likeIconUrl",
363
- "likeUrl",
364
- "marketReportUrl",
365
- "northbeamStoryUrl",
366
- "platformCtaImageUrl",
367
- "podcastCastUrl",
368
- "podcastGenericUrl",
369
- "podcastImageUrl",
370
- "podcastStreamUrl",
371
- "postUrl",
372
- "publishDate",
373
- "quoteOfWeekUrl",
374
- "quoteSourceUrl",
375
- "readInAppIconUrl",
376
- "readInAppUrl",
377
- "reading1Url",
378
- "reading2Url",
379
- "reading3Url",
380
- "reading4Url",
381
- "reading5Url",
382
- "repostIconUrl",
383
- "repostUrl",
384
- "shareIconUrl",
385
- "shareMailIconUrl",
386
- "shareNotesIconUrl",
387
- "shareSocialOneIconUrl",
388
- "shareSocialTwoIconUrl",
389
- "shareUrl",
390
- "sponsorImageUrl",
391
- "sponsorUrl",
392
- "stagnationStoryUrl",
393
- "statOfWeek",
394
- "statStoryUrl",
276
+ "authorAvatar",
277
+ "authorName",
278
+ "authorRole",
279
+ "heroImage",
280
+ "issueLabel",
281
+ "paragraphs",
282
+ "preferencesUrl",
283
+ "pullQuote",
284
+ "readingList",
285
+ "sponsor",
286
+ "standfirst",
287
+ "storyUrl",
395
288
  "subscribeUrl",
396
- "subscriptionPrice",
397
- "tipsEmailUrl",
398
- "unsubscribeUrl",
399
- "upgradeUrl",
400
- "usersStoryUrl",
401
- "valuationStoryUrl"
289
+ "title",
290
+ "unsubscribeUrl"
402
291
  ]
403
292
  },
404
293
  {
@@ -406,60 +295,14 @@ const presetCatalog = [
406
295
  channel: "email",
407
296
  category: "digest",
408
297
  name: "Events roundup",
409
- description: "A dated events digest: a grid of upcoming shows with images, dates, prices, and per-event links.",
298
+ description: "A dated events digest: an optional spotlight billing and a grid of upcoming shows with images, dates, rooms, prices and per-event tickets.",
410
299
  variables: [
411
- "copyrightYear",
412
- "event10Date",
413
- "event10ImageUrl",
414
- "event10Price",
415
- "event10Url",
416
- "event11Date",
417
- "event11ImageUrl",
418
- "event11Price",
419
- "event11Url",
420
- "event1Date",
421
- "event1ImageUrl",
422
- "event1Price",
423
- "event1Url",
424
- "event2Date",
425
- "event2ImageUrl",
426
- "event2Price",
427
- "event2Url",
428
- "event3Date",
429
- "event3ImageUrl",
430
- "event3Price",
431
- "event3Url",
432
- "event4Date",
433
- "event4ImageUrl",
434
- "event4Price",
435
- "event4Url",
436
- "event5Date",
437
- "event5ImageUrl",
438
- "event5Price",
439
- "event5Url",
440
- "event6Date",
441
- "event6ImageUrl",
442
- "event6Price",
443
- "event6Url",
444
- "event7Date",
445
- "event7ImageUrl",
446
- "event7Price",
447
- "event7Url",
448
- "event8Date",
449
- "event8ImageUrl",
450
- "event8Price",
451
- "event8Url",
452
- "event9Date",
453
- "event9ImageUrl",
454
- "event9Price",
455
- "event9Url",
300
+ "calendarUrl",
301
+ "cityName",
302
+ "events",
456
303
  "helpUrl",
457
- "moreEventsUrl",
458
- "socialFourIconUrl",
459
- "socialOneIconUrl",
460
- "socialThreeIconUrl",
461
- "socialTwoIconUrl",
462
- "termsUrl",
304
+ "seasonLabel",
305
+ "spotlight",
463
306
  "unsubscribeUrl"
464
307
  ]
465
308
  },
@@ -468,76 +311,20 @@ const presetCatalog = [
468
311
  channel: "email",
469
312
  category: "digest",
470
313
  name: "Industry news digest",
471
- description: "A dense industry news digest with lead stories, a jobs board, tools index, sponsors, and a workshop.",
314
+ description: "A dense industry brief: an agenda, a lead story with details and analysis, mapped desk stories, an optional labelled sponsor, and tool and job lists.",
472
315
  variables: [
473
- "advertiseUrl",
316
+ "agenda",
474
317
  "audienceSize",
475
- "bastionClaimsUrl",
476
- "bastionDealImageUrl",
477
- "bastionDealUrl",
478
- "bastionLeakUrl",
479
- "bastionReplyingUrl",
480
- "bastionReportedUrl",
481
- "bastionSayingUrl",
482
- "bastionStruckUrl",
483
- "bastionUnveilingUrl",
484
- "copyrightYear",
485
- "feedbackAverageUrl",
486
- "feedbackFailUrl",
487
- "feedbackGreatUrl",
488
- "freeSignupUrl",
489
- "jobGatebenchUrl",
490
- "jobLedgerUrl",
491
- "jobScalebenchUrl",
492
- "jobVaultbridgeUrl",
493
- "jobsIndexUrl",
494
- "latentPrivilegeImageUrl",
495
- "latentPrivilegePublishedUrl",
496
- "latentPrivilegeUrl",
497
- "moreNewsBetaUrl",
498
- "moreNewsComputeUrl",
499
- "moreNewsFlashUrl",
500
- "moreNewsHiredUrl",
501
- "moreNewsMedalUrl",
502
- "moreNewsPoachedUrl",
503
- "moreNewsQuillUrl",
504
- "moreNewsStanceUrl",
505
- "moreNewsUrl",
506
- "playbookTutorialImageUrl",
507
- "playbookTutorialUrl",
508
- "podcastUrl",
509
- "pulsebandAcquiringUrl",
510
- "pulsebandDealImageUrl",
511
- "pulsebandDealUrl",
512
- "pulsebandReviewsUrl",
513
- "readOnlineUrl",
514
- "referralUrl",
515
- "ridgelockCareersUrl",
516
- "ridgelockSponsorImageUrl",
517
- "ridgelockSponsorUrl",
518
- "sealpathCtaUrl",
519
- "sealpathSponsorImageUrl",
520
- "sealpathSponsorUrl",
521
- "signUpUrl",
522
- "socialOneIconUrl",
523
- "socialThreeIconUrl",
524
- "socialTwoIconUrl",
318
+ "editionDate",
319
+ "editionUrl",
320
+ "intro",
321
+ "jobs",
322
+ "lead",
323
+ "sponsor",
525
324
  "sponsorContactUrl",
526
- "termsUrl",
527
- "toolActTwoUrl",
528
- "toolClipcastUrl",
529
- "toolHierarchyUrl",
530
- "toolQuillUrl",
531
- "toolsIndexUrl",
532
- "universityFooterUrl",
533
- "universityUrl",
534
- "unsubscribeUrl",
535
- "workshopDate",
536
- "workshopDay",
537
- "workshopImageUrl",
538
- "workshopRsvpUrl",
539
- "workshopTime",
540
- "workshopUrl"
325
+ "stories",
326
+ "tools",
327
+ "unsubscribeUrl"
541
328
  ]
542
329
  },
543
330
  {
@@ -545,34 +332,17 @@ const presetCatalog = [
545
332
  channel: "email",
546
333
  category: "marketing",
547
334
  name: "Feature announcement",
548
- description: "Announce a new feature with a bold branded header and a link to the changelog.",
335
+ description: "Announce one change with a hero image, highlights from a list, an availability date and a single action.",
549
336
  variables: [
550
- "changelogUrl",
551
- "ctaLabel",
337
+ "availableFrom",
552
338
  "ctaUrl",
553
339
  "featureDescription",
554
- "featureImage",
555
340
  "featureName",
556
341
  "featureTagline",
557
342
  "firstName",
558
- "unsubscribeUrl",
559
- "workspace"
560
- ]
561
- },
562
- {
563
- id: "promo",
564
- channel: "email",
565
- category: "marketing",
566
- name: "Promotion",
567
- description: "Drive a limited-time offer with a highlighted promo code and a shop CTA.",
568
- variables: [
569
- "expiryDate",
570
- "firstName",
571
- "offerHeadline",
572
- "offerSubhead",
573
- "promoCode",
574
- "shopUrl",
575
- "termsUrl",
343
+ "highlights",
344
+ "preferencesUrl",
345
+ "releaseNoteUrl",
576
346
  "unsubscribeUrl"
577
347
  ]
578
348
  },
@@ -581,17 +351,22 @@ const presetCatalog = [
581
351
  channel: "email",
582
352
  category: "marketing",
583
353
  name: "Event invite",
584
- description: "Invite recipients to an event with when/where details and an RSVP button.",
354
+ description: "Invite members to an event with the date, the place, an agenda from a list, and one RSVP action.",
585
355
  variables: [
356
+ "agenda",
357
+ "capacityNote",
586
358
  "declineUrl",
587
359
  "eventAddress",
588
360
  "eventDate",
589
361
  "eventDescription",
590
362
  "eventLocation",
591
363
  "eventName",
364
+ "eventTagline",
592
365
  "eventTime",
593
366
  "firstName",
367
+ "preferencesUrl",
594
368
  "rsvpUrl",
369
+ "travelNote",
595
370
  "unsubscribeUrl"
596
371
  ]
597
372
  },
@@ -600,30 +375,20 @@ const presetCatalog = [
600
375
  channel: "email",
601
376
  category: "marketing",
602
377
  name: "Membership promotion",
603
- description: "Promote a paid membership with a tiered plan comparison, a discount code, and a repeated upgrade CTA.",
378
+ description: "Promote a paid membership with tier cards from a list, a discount code, a deadline, and one join action.",
604
379
  variables: [
605
- "advertiseUrl",
606
- "appDownloadUrl",
607
- "claimOfferUrl",
380
+ "compareUrl",
608
381
  "discountPercent",
609
- "flexibleDatesImageUrl",
610
- "getAlertsUrl",
611
- "offerEndDate",
382
+ "firstName",
383
+ "headline",
384
+ "joinUrl",
385
+ "offerEnds",
612
386
  "preferencesUrl",
613
387
  "promoCode",
614
- "promoCodeUrl",
615
- "socialFiveIconUrl",
616
- "socialFourIconUrl",
617
- "socialOneIconUrl",
618
- "socialThreeIconUrl",
619
- "socialTwoIconUrl",
620
- "specificTripImageUrl",
621
- "summitNowPrice",
622
- "summitWasPrice",
623
- "trailNowPrice",
624
- "trailWasPrice",
625
- "unsubscribeUrl",
626
- "websiteUrl"
388
+ "savingsNote",
389
+ "subhead",
390
+ "tiers",
391
+ "unsubscribeUrl"
627
392
  ]
628
393
  },
629
394
  {
@@ -631,38 +396,24 @@ const presetCatalog = [
631
396
  channel: "email",
632
397
  category: "marketing",
633
398
  name: "Member referral offer",
634
- description: "Invite customers to add members to their account for a limited-time reward, with the full terms.",
399
+ description: "Ask a member to bring people onto their account for a limited-time reward, with the steps and the terms as lists.",
635
400
  variables: [
636
- "accountUrl",
637
- "addMemberUrl",
638
- "addressUrl",
639
- "appIconImageUrl",
640
- "applicationEvalUrl",
641
- "circleFeatureImageUrl",
642
- "coOwnerBonus",
643
- "coOwnerSpendMin",
644
- "copyrightYear",
645
- "creditBuildAge",
646
- "creditReportingUrl",
647
- "customerAgreementUrl",
648
- "heroImageUrl",
649
- "learnCircleUrl",
650
- "learnDailyTideUrl",
651
- "maxBonusAmount",
652
- "maxNewMembers",
653
- "memberRisksUrl",
654
- "minMemberAge",
655
- "offerEndDate",
656
- "offerEndDateFull",
657
- "offerStartDate",
658
- "participantBonus",
659
- "participantSpendMin",
660
- "privacyUrl",
661
- "rewardsFeatureImageUrl",
662
- "signInUrl",
663
- "supportUrl",
401
+ "firstName",
402
+ "headline",
403
+ "maxMembers",
404
+ "maxReward",
405
+ "offerEnds",
406
+ "offerStarts",
407
+ "preferencesUrl",
408
+ "referralCode",
409
+ "referralUrl",
410
+ "reminderNote",
411
+ "rewardPerMember",
412
+ "spendMinimum",
413
+ "steps",
414
+ "subhead",
415
+ "terms",
664
416
  "termsUrl",
665
- "tidePayInfoUrl",
666
417
  "unsubscribeUrl"
667
418
  ]
668
419
  },
@@ -671,48 +422,24 @@ const presetCatalog = [
671
422
  channel: "email",
672
423
  category: "marketing",
673
424
  name: "Catalog sale newsletter",
674
- description: "Announce a new release and run a catalog-wide bundle sale with per-item discount links.",
425
+ description: "Open a catalogue-wide sale with a bundle offer, a product grid from a list, a discount code, and the shop dates.",
675
426
  variables: [
676
427
  "bundleListPrice",
428
+ "bundleName",
677
429
  "bundleSalePrice",
678
430
  "bundleUrl",
679
- "courseUrl",
680
- "discountAdvancedOneUrl",
681
- "discountAdvancedThreeUrl",
682
- "discountAdvancedTwoUrl",
683
- "discountCanvasPlayUrl",
684
- "discountChallengesUrl",
685
- "discountConcurrencyUrl",
686
- "discountDataLayerUrl",
687
- "discountDesktopPathUrl",
688
- "discountInterfaceByExampleUrl",
689
- "discountLegacyInteropUrl",
690
- "discountLiveSeriesUrl",
691
- "discountLivingRoomPathUrl",
692
- "discountMobilePathUrl",
693
- "discountOutsideEditorUrl",
694
- "discountPatternsUrl",
695
- "discountProInterfaceUrl",
696
- "discountProSystemsUrl",
697
- "discountSundayBuildsUrl",
698
- "discountTestingUrl",
699
- "discountWearablesPathUrl",
431
+ "dates",
432
+ "discountCode",
700
433
  "editionLabel",
701
434
  "editionYear",
702
- "eventChicagoUrl",
703
- "eventEnglandUrl",
704
- "eventFranceUrl",
705
- "eventGermanyUrl",
706
- "eventItalyUrl",
707
- "eventSkopjeUrl",
708
- "eventTokyoUrl",
709
- "eventWalesUrl",
710
- "friendBookUrl",
711
- "friendVideoUrl",
712
- "harborcraftUrl",
713
- "podcastEpisodeUrl",
714
- "poweredByUrl",
715
- "sponsorUrl",
435
+ "firstName",
436
+ "headline",
437
+ "intro",
438
+ "items",
439
+ "offerEnds",
440
+ "preferencesUrl",
441
+ "shopUrl",
442
+ "stockNote",
716
443
  "unsubscribeUrl"
717
444
  ]
718
445
  },
@@ -721,18 +448,23 @@ const presetCatalog = [
721
448
  channel: "email",
722
449
  category: "marketing",
723
450
  name: "Limited-time savings",
724
- description: "A focused, time-boxed savings offer with a single enrol action and a countdown of hours remaining.",
451
+ description: "A time-boxed savings offer with the hours remaining, reasons from a list, member quotes, and one claim action.",
725
452
  variables: [
726
- "advocacyLetterUrl",
727
- "enrollUrl",
728
- "essentialsDiscountPercent",
729
- "essentialsOfferUrl",
453
+ "claimUrl",
454
+ "firstName",
455
+ "headline",
730
456
  "hoursRemaining",
731
457
  "listPrice",
732
- "productUrl",
458
+ "offerEnds",
459
+ "postscript",
460
+ "preferencesUrl",
461
+ "promoCode",
462
+ "reasons",
733
463
  "salePrice",
734
464
  "savingsAmount",
735
- "timezoneGuideUrl",
465
+ "subhead",
466
+ "testimonials",
467
+ "timezoneUrl",
736
468
  "unsubscribeUrl"
737
469
  ]
738
470
  },
@@ -741,46 +473,24 @@ const presetCatalog = [
741
473
  channel: "email",
742
474
  category: "marketing",
743
475
  name: "Rewards milestone",
744
- description: "Drive engagement with a milestone reward program: complete steps, unlock perks, and see the reward tiers.",
476
+ description: "Show a member how far through a rewards ladder they are, what the next step unlocks, and what each tier is worth.",
745
477
  variables: [
746
- "accountLastFour",
747
- "airAccidentCover",
748
- "beSecureUrl",
749
- "benefitIconUrl",
750
- "campaignCode",
751
- "continueGuideUrl",
752
- "diningCreditAmount",
753
- "eventTicketCount",
754
- "familyMemberLimit",
755
- "heroBannerImageUrl",
756
- "internetBankingIconUrl",
757
- "internetBankingUrl",
758
- "learnMoreUrl",
759
- "lockerDiscountPercent",
760
- "loungeVisitCount",
761
- "maxRewardAmount",
762
- "milestoneCount",
478
+ "bonusNote",
479
+ "expiresOn",
480
+ "firstName",
481
+ "headline",
763
482
  "milestoneLabel",
764
- "mobileAppIconUrl",
765
- "mobileAppUrl",
766
- "mobileVersionUrl",
767
- "movieTicketCount",
768
- "personalAccidentCover",
769
- "recipientName",
770
- "rewardsCardImageUrl",
771
- "rmSmsKeyword",
772
- "rmSmsPhone",
773
- "rmSmsShortcode",
774
- "secureChatIconUrl",
775
- "secureChatPhone",
776
- "secureChatUrl",
777
- "securityPolicyUrl",
483
+ "nextReward",
484
+ "pointsBalance",
485
+ "preferencesUrl",
486
+ "rewardsUrl",
487
+ "steps",
488
+ "stepsCompleted",
489
+ "stepsTotal",
490
+ "subhead",
778
491
  "termsUrl",
779
- "tollFreePhone",
780
- "unsubscribeUrl",
781
- "webVersionUrl",
782
- "websiteUrl",
783
- "welcomeRewardAmount"
492
+ "tiers",
493
+ "unsubscribeUrl"
784
494
  ]
785
495
  },
786
496
  {
@@ -788,58 +498,22 @@ const presetCatalog = [
788
498
  channel: "email",
789
499
  category: "marketing",
790
500
  name: "Travel rewards promotion",
791
- description: "A rewards-program promotion with bonus tiers, partner discount codes, and a member balance summary.",
501
+ description: "A travel rewards promotion with a member balance, earning tiers from a list, and partner offers.",
792
502
  variables: [
793
- "accountPromptImageUrl",
794
503
  "accountUrl",
795
- "additionalTermsUrl",
796
- "androidAppUrl",
797
- "appDownloadUrl",
798
504
  "bookUrl",
799
- "campaignCode",
800
- "contactUrl",
801
- "copyrightYear",
802
- "couponBonusMiles",
803
- "dealsUrl",
804
- "discountPercent",
805
505
  "firstName",
806
- "heroImageUrl",
807
- "iosAppUrl",
808
- "longBonusMiles",
809
- "longRentalDays",
810
- "maxBonusMiles",
811
- "memberId",
812
- "midBonusMiles",
813
- "midRentalDays",
814
- "mileageBalance",
815
- "offerEndDate",
816
- "offerEndDateShort",
817
- "offerStartDate",
818
- "partnerOneCoupon",
819
- "partnerOneDiscountCode",
820
- "partnerOneDiscountCodeAlt",
821
- "partnerTwoCoupon",
822
- "partnerTwoDiscountCode",
823
- "partnerTwoDiscountCodeAlt",
824
- "partnerTwoDiscountPercent",
506
+ "headline",
507
+ "memberNumber",
508
+ "milesBalance",
509
+ "offerEnds",
510
+ "partners",
825
511
  "preferencesUrl",
826
- "privacyUrl",
827
- "recipientEmail",
828
- "recipientEmailUrl",
829
- "reservationsUrl",
830
- "rewardsUrl",
831
- "signInUrl",
832
- "socialFourIconUrl",
833
- "socialOneIconUrl",
834
- "socialThreeIconUrl",
835
- "socialTwoIconUrl",
836
- "tierFourMiles",
837
- "tierOneMiles",
838
- "tierThreeMiles",
839
- "tierTwoMiles",
840
- "unsubscribeUrl",
841
- "viewOnlineUrl",
842
- "websiteUrl"
512
+ "subhead",
513
+ "termsUrl",
514
+ "tierName",
515
+ "tiers",
516
+ "unsubscribeUrl"
843
517
  ]
844
518
  },
845
519
  {
@@ -847,28 +521,19 @@ const presetCatalog = [
847
521
  channel: "email",
848
522
  category: "marketing",
849
523
  name: "Product updates roundup",
850
- description: "Round up recent product updates and an upcoming event, with stats and a walkthrough video.",
524
+ description: "A monthly product roundup with a metrics strip, shipped updates from a list, and an optional event.",
851
525
  variables: [
852
- "accessibilityGuideUrl",
853
- "accessibilityReportUrl",
854
- "accessibilityReportYear",
855
- "agentAdapterGuideUrl",
856
- "agentAdapterUrl",
857
- "blastVolume",
858
- "conferenceDate",
859
- "conferenceTicketsUrl",
860
- "contactsImportUrl",
861
- "customerStoryUrl",
862
- "domainTransferUrl",
863
- "emailsAnalyzed",
864
- "emailsPassed",
865
- "meetupDate",
866
- "meetupTime",
867
- "meetupUrl",
868
- "meetupVenue",
869
- "passRate",
526
+ "changelogUrl",
527
+ "event",
528
+ "firstName",
529
+ "headline",
530
+ "intro",
531
+ "issueMonth",
532
+ "issueNumber",
533
+ "metrics",
534
+ "preferencesUrl",
870
535
  "unsubscribeUrl",
871
- "walkthroughVideoUrl"
536
+ "updates"
872
537
  ]
873
538
  },
874
539
  {
@@ -876,39 +541,19 @@ const presetCatalog = [
876
541
  channel: "email",
877
542
  category: "marketing",
878
543
  name: "Flash getaway offer",
879
- description: "A limited-time getaway offer with a live countdown, two destinations, and a points-or-cash price.",
544
+ description: "A flash getaway offer with an input countdown, destinations from a list, and one booking action.",
880
545
  variables: [
881
- "copyrightYear",
882
- "countdownDays",
883
- "countdownHours",
884
- "countdownMinutes",
885
- "destinationOneImageUrl",
886
- "destinationOneRetailValue",
887
- "destinationOneUrl",
888
- "destinationTwoImageUrl",
889
- "destinationTwoRetailValue",
890
- "destinationTwoUrl",
891
- "exploreOffersUrl",
892
- "invitationId",
893
- "learnMoreUrl",
894
- "marketingCode",
895
- "minimumPoints",
896
- "nightlyValueRange",
897
- "offerExpiresDate",
898
- "ownershipPriceHigh",
899
- "ownershipPriceLow",
900
- "phoneDisplay",
901
- "phoneTelUrl",
902
- "pointsPriceHigh",
903
- "pointsPriceLow",
904
- "privacyUrl",
905
- "recipientInitials",
906
- "stayDurationLabel",
907
- "stayPrice",
546
+ "countdown",
547
+ "destinations",
548
+ "exploreUrl",
549
+ "firstName",
550
+ "headline",
551
+ "offerEnds",
552
+ "offerWindow",
553
+ "preferencesUrl",
554
+ "subhead",
908
555
  "termsUrl",
909
- "travelWindowMonths",
910
- "unsubscribeUrl",
911
- "viewInBrowserUrl"
556
+ "unsubscribeUrl"
912
557
  ]
913
558
  },
914
559
  {
@@ -916,29 +561,21 @@ const presetCatalog = [
916
561
  channel: "email",
917
562
  category: "marketing",
918
563
  name: "Membership benefits promotion",
919
- description: "Promote a paid membership by laying out its perks with icons and a single get-started action.",
564
+ description: "A paid-membership promotion with a price panel, benefits from a list, and one join action.",
920
565
  variables: [
921
- "accountSettingsUrl",
922
- "cafeLocationsUrl",
923
- "cafePerkIconUrl",
924
- "contactUsUrl",
925
- "deliveryIconUrl",
926
- "getStartedUrl",
927
- "groceryIconUrl",
928
- "logoImageUrl",
929
- "monthlyCreditIconUrl",
930
- "offerGalleryUrl",
931
- "onlineShoppingFaqsUrl",
932
- "organicIconUrl",
933
- "petCareIconUrl",
934
- "privacyPolicyUrl",
935
- "recipientEmail",
936
- "rewardsIconUrl",
937
- "rewardsTermsUrl",
566
+ "benefits",
567
+ "billingNote",
568
+ "comparePlansUrl",
569
+ "firstName",
570
+ "headline",
571
+ "joinUrl",
572
+ "preferencesUrl",
573
+ "priceLabel",
574
+ "renewsOn",
575
+ "subhead",
938
576
  "supportEmail",
939
- "termsOfUseUrl",
940
- "unsubscribeUrl",
941
- "vipPhoneIconUrl"
577
+ "trialLabel",
578
+ "unsubscribeUrl"
942
579
  ]
943
580
  },
944
581
  {
@@ -946,53 +583,19 @@ const presetCatalog = [
946
583
  channel: "email",
947
584
  category: "marketing",
948
585
  name: "Weekly deals circular",
949
- description: "A weekly retail circular with multi-buy deals, clippable coupons, membership perks, and app links.",
586
+ description: "A weekly retail circular with deals from a list, clippable coupons, and one shop action.",
950
587
  variables: [
951
- "allDealsUrl",
952
- "androidAppBadgeUrl",
953
- "androidAppUrl",
954
- "browserViewUrl",
955
- "clipCouponsUrl",
956
- "contactUrl",
957
- "copyrightYear",
958
- "couponFourImageUrl",
959
- "couponOneImageUrl",
960
- "couponThreeImageUrl",
961
- "couponTwoImageUrl",
962
- "couponsUrl",
963
- "deliveryMinimum",
964
- "digitalCouponsUrl",
965
- "feedbackUrl",
966
- "homeUrl",
967
- "iosAppBadgeUrl",
968
- "iosAppUrl",
969
- "membershipDetailsUrl",
970
- "membershipTrialUrl",
588
+ "coupons",
589
+ "deals",
590
+ "headline",
591
+ "intro",
592
+ "memberPerk",
971
593
  "membershipUrl",
972
- "multiBuyQuantity",
973
- "multiBuyUnitSavings",
974
- "pointsMultiplier",
975
594
  "preferencesUrl",
976
- "privacyUrl",
977
- "produceUrl",
978
- "recipientEmail",
979
- "shopDealUrl",
980
- "socialFourIconUrl",
981
- "socialFourUrl",
982
- "socialOneIconUrl",
983
- "socialOneUrl",
984
- "socialThreeIconUrl",
985
- "socialThreeUrl",
986
- "socialTwoIconUrl",
987
- "socialTwoUrl",
988
- "specialtySavings",
989
- "termsUrl",
990
- "trialDays",
595
+ "shopUrl",
991
596
  "unsubscribeUrl",
992
- "weeklyAdNavUrl",
993
- "weeklyAdUrl",
994
- "wellnessDiscountPercent",
995
- "wellnessUrl"
597
+ "validThrough",
598
+ "weekLabel"
996
599
  ]
997
600
  },
998
601
  {
@@ -1000,68 +603,20 @@ const presetCatalog = [
1000
603
  channel: "email",
1001
604
  category: "marketing",
1002
605
  name: "Seasonal sale flyer",
1003
- description: "A dense seasonal sale flyer with tiered promo codes, gift-card offers, product grids, and category links.",
606
+ description: "A seasonal sale flyer with tiered promo codes, a category grid, and an optional gift-card offer.",
1004
607
  variables: [
1005
- "alternatorsImageUrl",
1006
- "alternatorsUrl",
1007
- "antifreezeImageUrl",
1008
- "antifreezeUrl",
1009
- "appBadgeFiveImageUrl",
1010
- "appBadgeFourImageUrl",
1011
- "appBadgeOneImageUrl",
1012
- "appBadgeThreeImageUrl",
1013
- "appBadgeTwoImageUrl",
1014
- "appDownloadUrl",
1015
- "batteriesImageUrl",
1016
- "batteriesUrl",
1017
- "brakePadsImageUrl",
1018
- "brakePadsUrl",
1019
- "contactUrl",
1020
- "copyrightYear",
1021
- "findStoreUrl",
1022
- "fogGiftCardAmount",
1023
- "fogOfferImageUrl",
1024
- "fogOfferUrl",
1025
- "freeServicesDetailsUrl",
1026
- "headlightGiftCardAmount",
1027
- "headlightGuideUrl",
1028
- "headlightHeroImageUrl",
1029
- "headlightOfferUrl",
1030
- "howtoBannerImageUrl",
1031
- "lightingBrandStripImageUrl",
1032
- "lightingImageUrl",
1033
- "lightingUrl",
1034
- "offerEndDate",
1035
- "offersValidRange",
1036
- "oilBundlesDetailsUrl",
1037
- "oilBundlesImageUrl",
1038
- "oilBundlesUrl",
1039
- "privacyUrl",
1040
- "productThumbFourImageUrl",
1041
- "productThumbOneImageUrl",
1042
- "productThumbThreeImageUrl",
1043
- "productThumbTwoImageUrl",
1044
- "promoCode",
1045
- "promoCodeUrl",
1046
- "promoMaxSavings",
1047
- "promoOrderThreshold",
1048
- "promoPercentNoMin",
1049
- "promoPercentThreshold",
1050
- "promoShopUrl",
1051
- "rewardsUrl",
1052
- "servicesUrl",
1053
- "shopOnlineUrl",
1054
- "sparkPlugsImageUrl",
1055
- "sparkPlugsUrl",
1056
- "unsubscribeUrl",
1057
- "viewInBrowserUrl",
1058
- "websiteUrl",
1059
- "weeklyDealsUrl",
1060
- "wiperGiftCardAmount",
1061
- "wiperOfferImageUrl",
1062
- "wiperOfferUrl",
1063
- "wipersImageUrl",
1064
- "wipersUrl"
608
+ "categories",
609
+ "giftCard",
610
+ "headline",
611
+ "intro",
612
+ "offerWindow",
613
+ "preferencesUrl",
614
+ "promoTiers",
615
+ "seasonLabel",
616
+ "shopUrl",
617
+ "subhead",
618
+ "termsUrl",
619
+ "unsubscribeUrl"
1065
620
  ]
1066
621
  },
1067
622
  {
@@ -1069,28 +624,16 @@ const presetCatalog = [
1069
624
  channel: "email",
1070
625
  category: "marketing",
1071
626
  name: "Feature release roundup",
1072
- description: "Announce several new features in one email, each with an illustration, detail, and a learn-more link.",
627
+ description: "A feature release roundup with image-left rows from a list, release badges, and docs links.",
1073
628
  variables: [
1074
- "activityFeedImageUrl",
1075
- "activityFeedUrl",
1076
- "apiBlogUrl",
1077
- "apiDocsUrl",
1078
- "apiGaImageUrl",
1079
- "brandedShortenersImageUrl",
1080
629
  "changelogUrl",
1081
- "continentsAnalyticsUrl",
1082
- "domainMgmtUrl",
1083
- "ledgerpathShortenerUrl",
1084
- "linksWorkspaceBlogUrl",
1085
- "linksWorkspaceImageUrl",
1086
- "notificationsUrl",
630
+ "firstName",
631
+ "headline",
632
+ "intro",
633
+ "migrationUrl",
1087
634
  "preferencesUrl",
1088
- "reviewUrl",
1089
- "shortenerSunsetUrl",
1090
- "sketchlaneShortenerUrl",
1091
- "socialOneIconUrl",
1092
- "socialThreeIconUrl",
1093
- "socialTwoIconUrl",
635
+ "releases",
636
+ "sunsetOn",
1094
637
  "unsubscribeUrl"
1095
638
  ]
1096
639
  },
@@ -1099,23 +642,17 @@ const presetCatalog = [
1099
642
  channel: "email",
1100
643
  category: "marketing",
1101
644
  name: "Season clearance promotion",
1102
- description: "A last-chance clearance promotion with a hero banner, a deadline phrase, and a single shop action.",
645
+ description: "A last-chance clearance promotion with marked-down highlights three a row and one shop action.",
1103
646
  variables: [
1104
- "contactEmailUrl",
1105
- "grabDealsUrl",
1106
- "heroImageUrl",
1107
- "offerDeadlinePhrase",
1108
- "offerEndLong",
1109
- "offerEndShort",
1110
- "onlineVersionUrl",
647
+ "deadlinePhrase",
648
+ "firstName",
649
+ "headline",
650
+ "highlights",
651
+ "intro",
652
+ "newArrivalsUrl",
1111
653
  "preferencesUrl",
1112
- "seasonYear",
1113
- "secondaryBannerImageUrl",
1114
- "socialFourIconUrl",
1115
- "socialOneIconUrl",
1116
- "socialThreeIconUrl",
1117
- "socialTwoIconUrl",
1118
- "termsUrl",
654
+ "remainingNote",
655
+ "shopUrl",
1119
656
  "unsubscribeUrl"
1120
657
  ]
1121
658
  },
@@ -1145,17 +682,17 @@ const presetCatalog = [
1145
682
  channel: "email",
1146
683
  category: "lifecycle",
1147
684
  name: "Onboarding step",
1148
- description: "One step in an onboarding sequence, with progress and a single next action.",
685
+ description: "One step of an onboarding sequence, with the whole setup list, its progress, and a single next action.",
1149
686
  variables: [
1150
- "ctaLabel",
1151
- "ctaUrl",
687
+ "actionUrl",
1152
688
  "docsUrl",
1153
689
  "firstName",
1154
- "logoUrl",
1155
- "stepDescription",
690
+ "stepBody",
1156
691
  "stepNumber",
1157
692
  "stepTitle",
1158
- "stepTotal",
693
+ "steps",
694
+ "supportEmail",
695
+ "tip",
1159
696
  "workspace"
1160
697
  ]
1161
698
  },
@@ -1164,15 +701,15 @@ const presetCatalog = [
1164
701
  channel: "email",
1165
702
  category: "lifecycle",
1166
703
  name: "Trial ending",
1167
- description: "Warn a trial user their access is ending and prompt an upgrade before it lapses.",
704
+ description: "Warn a trial user their access is ending, with what the trial produced, the plan that keeps it, and an optional offer.",
1168
705
  variables: [
1169
706
  "contactUrl",
1170
707
  "daysLeft",
1171
708
  "firstName",
1172
- "logoUrl",
1173
- "planName",
1174
- "planPrice",
1175
- "planSummary",
709
+ "highlights",
710
+ "keeps",
711
+ "offer",
712
+ "plan",
1176
713
  "trialEndDate",
1177
714
  "upgradeUrl",
1178
715
  "workspace"
@@ -1183,13 +720,15 @@ const presetCatalog = [
1183
720
  channel: "email",
1184
721
  category: "lifecycle",
1185
722
  name: "Win-back",
1186
- description: "Re-engage a lapsed user by surfacing what's new and inviting them back.",
723
+ description: "Re-engage a lapsed user with an illustrated list of what shipped while they were away, and an optional return offer.",
1187
724
  variables: [
1188
- "ctaUrl",
1189
725
  "firstName",
1190
- "logoUrl",
726
+ "lastActive",
727
+ "offer",
728
+ "preferencesUrl",
729
+ "returnUrl",
1191
730
  "unsubscribeUrl",
1192
- "whatsNew",
731
+ "updates",
1193
732
  "workspace"
1194
733
  ]
1195
734
  },
@@ -1198,11 +737,13 @@ const presetCatalog = [
1198
737
  channel: "email",
1199
738
  category: "lifecycle",
1200
739
  name: "Feedback request",
1201
- description: "Ask an active user for feedback with a short survey and a reply-to fallback.",
740
+ description: "Ask an active user one question with clickable answers, a short survey, and a named sender who reads the replies.",
1202
741
  variables: [
1203
742
  "firstName",
1204
- "logoUrl",
1205
- "senderName",
743
+ "incentive",
744
+ "options",
745
+ "question",
746
+ "sender",
1206
747
  "surveyUrl",
1207
748
  "tenure",
1208
749
  "workspace"
@@ -1213,25 +754,16 @@ const presetCatalog = [
1213
754
  channel: "email",
1214
755
  category: "lifecycle",
1215
756
  name: "Product onboarding tour",
1216
- description: "Walk a new user through the product's core features with an illustrated tour and app-store links.",
757
+ description: "Walk a new user through the features worth turning on first, each with a still, its own points and a link, followed by a reading list.",
1217
758
  variables: [
1218
- "appStoreBadgeUrl",
1219
- "emailGuideImageUrl",
1220
- "emailGuideUrl",
759
+ "features",
760
+ "firstName",
1221
761
  "helpCenterUrl",
1222
- "incomeDashboardImageUrl",
1223
- "incomeDashboardUrl",
1224
- "incomeGuideImageUrl",
1225
- "incomeGuideUrl",
1226
- "mediaKitImageUrl",
1227
- "mediaKitUrl",
1228
- "playStoreBadgeUrl",
1229
- "socialOneIconUrl",
1230
- "socialThreeIconUrl",
1231
- "socialTwoIconUrl",
1232
- "unsubscribeUrl",
1233
- "welcomeEmailImageUrl",
1234
- "welcomeEmailUrl"
762
+ "intro",
763
+ "mobile",
764
+ "preferencesUrl",
765
+ "reads",
766
+ "unsubscribeUrl"
1235
767
  ]
1236
768
  },
1237
769
  {
@@ -1239,14 +771,16 @@ const presetCatalog = [
1239
771
  channel: "email",
1240
772
  category: "lifecycle",
1241
773
  name: "Setup checklist",
1242
- description: "A short welcome email that walks a new customer through three setup steps to launch their storefront.",
774
+ description: "Welcome a new customer with the setup steps that remain, each marked done or outstanding, and one link back into the flow.",
1243
775
  variables: [
1244
- "addAppsImageUrl",
1245
776
  "continueUrl",
1246
- "copyrightYear",
1247
- "pricingImageUrl",
1248
- "storePageImageUrl",
1249
- "unsubscribeUrl"
777
+ "firstName",
778
+ "helpUrl",
779
+ "note",
780
+ "steps",
781
+ "unsubscribeUrl",
782
+ "welcome",
783
+ "workspace"
1250
784
  ]
1251
785
  },
1252
786
  {