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