@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,563 @@
1
+ //#region presets/public-gallery.ts
2
+ const templateUseCases = [
3
+ "account-access",
4
+ "commerce",
5
+ "product-communication",
6
+ "lifecycle",
7
+ "publishing-campaigns"
8
+ ];
9
+ const templateCollectionFamilies = [
10
+ "category",
11
+ "industry",
12
+ "stage",
13
+ "style"
14
+ ];
15
+ const template = (value) => ({
16
+ ...value,
17
+ path: `/templates/${value.slug}`
18
+ });
19
+ const publicTemplates = [
20
+ template({
21
+ presetId: "welcome",
22
+ slug: "welcome-email",
23
+ useCase: "lifecycle",
24
+ collections: [
25
+ "category:transactional",
26
+ "industry:saas",
27
+ "stage:activation",
28
+ "style:branded",
29
+ "style:single-cta"
30
+ ],
31
+ relatedTemplates: ["email-verification", "onboarding-step"]
32
+ }),
33
+ template({
34
+ presetId: "email-verification",
35
+ slug: "email-verification",
36
+ useCase: "account-access",
37
+ collections: [
38
+ "category:transactional",
39
+ "industry:saas",
40
+ "industry:developer-tools",
41
+ "stage:activation",
42
+ "style:minimal",
43
+ "style:single-cta"
44
+ ],
45
+ relatedTemplates: ["otp", "password-reset"]
46
+ }),
47
+ template({
48
+ presetId: "otp",
49
+ slug: "one-time-passcode",
50
+ useCase: "account-access",
51
+ collections: [
52
+ "category:transactional",
53
+ "industry:saas",
54
+ "industry:developer-tools",
55
+ "stage:activation",
56
+ "style:minimal"
57
+ ],
58
+ relatedTemplates: ["email-verification", "password-reset"]
59
+ }),
60
+ template({
61
+ presetId: "password-reset",
62
+ slug: "password-reset",
63
+ useCase: "account-access",
64
+ collections: [
65
+ "category:transactional",
66
+ "industry:saas",
67
+ "industry:developer-tools",
68
+ "stage:recovery",
69
+ "style:minimal",
70
+ "style:single-cta"
71
+ ],
72
+ relatedTemplates: ["otp", "email-verification"]
73
+ }),
74
+ template({
75
+ presetId: "receipt",
76
+ slug: "receipt",
77
+ useCase: "commerce",
78
+ collections: [
79
+ "category:transactional",
80
+ "industry:ecommerce",
81
+ "stage:transaction",
82
+ "style:data-heavy"
83
+ ],
84
+ relatedTemplates: ["payment-failed", "shipping-update"]
85
+ }),
86
+ template({
87
+ presetId: "payment-failed",
88
+ slug: "payment-failed",
89
+ useCase: "commerce",
90
+ collections: [
91
+ "category:transactional",
92
+ "industry:ecommerce",
93
+ "industry:saas",
94
+ "stage:recovery",
95
+ "style:data-heavy",
96
+ "style:single-cta"
97
+ ],
98
+ relatedTemplates: ["receipt", "trial-ending"]
99
+ }),
100
+ template({
101
+ presetId: "shipping-update",
102
+ slug: "shipping-update",
103
+ useCase: "commerce",
104
+ collections: [
105
+ "category:transactional",
106
+ "industry:ecommerce",
107
+ "stage:transaction",
108
+ "style:data-heavy",
109
+ "style:single-cta"
110
+ ],
111
+ relatedTemplates: ["receipt", "notification"]
112
+ }),
113
+ template({
114
+ presetId: "notification",
115
+ slug: "activity-notification",
116
+ useCase: "product-communication",
117
+ collections: [
118
+ "category:transactional",
119
+ "industry:saas",
120
+ "industry:developer-tools",
121
+ "stage:engagement",
122
+ "style:minimal",
123
+ "style:single-cta"
124
+ ],
125
+ relatedTemplates: ["team-invite", "product-digest"]
126
+ }),
127
+ template({
128
+ presetId: "team-invite",
129
+ slug: "team-invite",
130
+ useCase: "product-communication",
131
+ collections: [
132
+ "category:transactional",
133
+ "industry:saas",
134
+ "industry:developer-tools",
135
+ "stage:acquisition",
136
+ "style:branded",
137
+ "style:single-cta"
138
+ ],
139
+ relatedTemplates: ["welcome", "notification"]
140
+ }),
141
+ template({
142
+ presetId: "product-digest",
143
+ slug: "product-digest",
144
+ useCase: "product-communication",
145
+ collections: [
146
+ "category:digest-editorial",
147
+ "industry:saas",
148
+ "industry:developer-tools",
149
+ "stage:engagement",
150
+ "style:editorial",
151
+ "style:data-heavy"
152
+ ],
153
+ relatedTemplates: ["notification", "newsletter"]
154
+ }),
155
+ template({
156
+ presetId: "newsletter",
157
+ slug: "newsletter",
158
+ useCase: "publishing-campaigns",
159
+ collections: [
160
+ "category:digest-editorial",
161
+ "industry:newsletters-media",
162
+ "stage:engagement",
163
+ "style:editorial",
164
+ "style:branded"
165
+ ],
166
+ relatedTemplates: ["product-digest", "announcement"]
167
+ }),
168
+ template({
169
+ presetId: "announcement",
170
+ slug: "feature-announcement",
171
+ useCase: "publishing-campaigns",
172
+ collections: [
173
+ "category:marketing",
174
+ "industry:saas",
175
+ "industry:developer-tools",
176
+ "stage:engagement",
177
+ "style:branded",
178
+ "style:single-cta"
179
+ ],
180
+ relatedTemplates: ["newsletter", "event-invite"]
181
+ }),
182
+ template({
183
+ presetId: "promo",
184
+ slug: "promotion",
185
+ useCase: "publishing-campaigns",
186
+ collections: [
187
+ "category:marketing",
188
+ "industry:ecommerce",
189
+ "stage:acquisition",
190
+ "style:branded",
191
+ "style:single-cta"
192
+ ],
193
+ relatedTemplates: ["announcement", "event-invite"]
194
+ }),
195
+ template({
196
+ presetId: "event-invite",
197
+ slug: "event-invite",
198
+ useCase: "publishing-campaigns",
199
+ collections: [
200
+ "category:marketing",
201
+ "industry:saas",
202
+ "stage:acquisition",
203
+ "style:branded",
204
+ "style:single-cta"
205
+ ],
206
+ relatedTemplates: ["announcement", "promo"]
207
+ }),
208
+ template({
209
+ presetId: "membership-promo",
210
+ slug: "membership-promotion",
211
+ useCase: "publishing-campaigns",
212
+ collections: [
213
+ "category:marketing",
214
+ "industry:ecommerce",
215
+ "stage:retention",
216
+ "style:branded",
217
+ "style:data-heavy"
218
+ ],
219
+ relatedTemplates: ["promo", "announcement"]
220
+ }),
221
+ template({
222
+ presetId: "onboarding-step",
223
+ slug: "onboarding-step",
224
+ useCase: "lifecycle",
225
+ collections: [
226
+ "category:lifecycle",
227
+ "industry:saas",
228
+ "industry:developer-tools",
229
+ "stage:activation",
230
+ "style:branded",
231
+ "style:single-cta"
232
+ ],
233
+ relatedTemplates: ["welcome", "trial-ending"]
234
+ }),
235
+ template({
236
+ presetId: "trial-ending",
237
+ slug: "trial-ending",
238
+ useCase: "lifecycle",
239
+ collections: [
240
+ "category:lifecycle",
241
+ "industry:saas",
242
+ "stage:retention",
243
+ "style:data-heavy",
244
+ "style:single-cta"
245
+ ],
246
+ relatedTemplates: ["onboarding-step", "win-back"]
247
+ }),
248
+ template({
249
+ presetId: "win-back",
250
+ slug: "win-back",
251
+ useCase: "lifecycle",
252
+ collections: [
253
+ "category:lifecycle",
254
+ "industry:saas",
255
+ "stage:recovery",
256
+ "style:branded",
257
+ "style:single-cta"
258
+ ],
259
+ relatedTemplates: ["trial-ending", "feedback-request"]
260
+ }),
261
+ template({
262
+ presetId: "feedback-request",
263
+ slug: "feedback-request",
264
+ useCase: "lifecycle",
265
+ collections: [
266
+ "category:lifecycle",
267
+ "industry:saas",
268
+ "stage:retention",
269
+ "style:minimal",
270
+ "style:single-cta"
271
+ ],
272
+ relatedTemplates: ["win-back", "onboarding-step"]
273
+ }),
274
+ template({
275
+ presetId: "editorial-newsletter",
276
+ slug: "editorial-newsletter",
277
+ useCase: "publishing-campaigns",
278
+ collections: [
279
+ "category:digest-editorial",
280
+ "industry:newsletters-media",
281
+ "stage:engagement",
282
+ "style:editorial",
283
+ "style:data-heavy"
284
+ ],
285
+ relatedTemplates: ["newsletter", "product-digest"]
286
+ }),
287
+ template({
288
+ presetId: "member-referral-offer",
289
+ slug: "member-referral-offer",
290
+ useCase: "publishing-campaigns",
291
+ collections: [
292
+ "category:marketing",
293
+ "industry:ecommerce",
294
+ "stage:acquisition",
295
+ "style:branded",
296
+ "style:data-heavy"
297
+ ],
298
+ relatedTemplates: ["promo", "membership-promo"]
299
+ }),
300
+ template({
301
+ presetId: "catalog-sale-newsletter",
302
+ slug: "catalog-sale-newsletter",
303
+ useCase: "publishing-campaigns",
304
+ collections: [
305
+ "category:marketing",
306
+ "industry:newsletters-media",
307
+ "stage:engagement",
308
+ "style:editorial",
309
+ "style:data-heavy"
310
+ ],
311
+ relatedTemplates: ["announcement", "promo"]
312
+ }),
313
+ template({
314
+ presetId: "limited-time-savings",
315
+ slug: "limited-time-savings",
316
+ useCase: "publishing-campaigns",
317
+ collections: [
318
+ "category:marketing",
319
+ "industry:ecommerce",
320
+ "stage:acquisition",
321
+ "style:minimal",
322
+ "style:single-cta"
323
+ ],
324
+ relatedTemplates: ["promo", "membership-promo"]
325
+ }),
326
+ template({
327
+ presetId: "rewards-milestone",
328
+ slug: "rewards-milestone",
329
+ useCase: "publishing-campaigns",
330
+ collections: [
331
+ "category:marketing",
332
+ "industry:ecommerce",
333
+ "stage:engagement",
334
+ "style:branded",
335
+ "style:data-heavy"
336
+ ],
337
+ relatedTemplates: ["membership-promo", "promo"]
338
+ }),
339
+ template({
340
+ presetId: "order-delivered",
341
+ slug: "order-delivered",
342
+ useCase: "commerce",
343
+ collections: [
344
+ "category:transactional",
345
+ "industry:ecommerce",
346
+ "stage:transaction",
347
+ "style:data-heavy"
348
+ ],
349
+ relatedTemplates: ["shipping-update", "receipt"]
350
+ }),
351
+ template({
352
+ presetId: "travel-rewards-promo",
353
+ slug: "travel-rewards-promo",
354
+ useCase: "publishing-campaigns",
355
+ collections: [
356
+ "category:marketing",
357
+ "industry:ecommerce",
358
+ "stage:retention",
359
+ "style:branded",
360
+ "style:data-heavy"
361
+ ],
362
+ relatedTemplates: ["membership-promo", "promo"]
363
+ }),
364
+ template({
365
+ presetId: "events-roundup",
366
+ slug: "events-roundup",
367
+ useCase: "publishing-campaigns",
368
+ collections: [
369
+ "category:digest-editorial",
370
+ "industry:newsletters-media",
371
+ "stage:engagement",
372
+ "style:editorial",
373
+ "style:data-heavy"
374
+ ],
375
+ relatedTemplates: ["newsletter", "event-invite"]
376
+ }),
377
+ template({
378
+ presetId: "product-onboarding-tour",
379
+ slug: "product-onboarding-tour",
380
+ useCase: "lifecycle",
381
+ collections: [
382
+ "category:lifecycle",
383
+ "industry:saas",
384
+ "stage:activation",
385
+ "style:branded",
386
+ "style:data-heavy"
387
+ ],
388
+ relatedTemplates: ["onboarding-step", "welcome"]
389
+ }),
390
+ template({
391
+ presetId: "product-updates-roundup",
392
+ slug: "product-updates-roundup",
393
+ useCase: "product-communication",
394
+ collections: [
395
+ "category:marketing",
396
+ "industry:developer-tools",
397
+ "stage:engagement",
398
+ "style:branded",
399
+ "style:single-cta"
400
+ ],
401
+ relatedTemplates: ["announcement", "product-digest"]
402
+ }),
403
+ template({
404
+ presetId: "flash-getaway-offer",
405
+ slug: "flash-getaway-offer",
406
+ useCase: "publishing-campaigns",
407
+ collections: [
408
+ "category:marketing",
409
+ "industry:ecommerce",
410
+ "stage:acquisition",
411
+ "style:branded",
412
+ "style:single-cta"
413
+ ],
414
+ relatedTemplates: ["promo", "membership-promo"]
415
+ }),
416
+ template({
417
+ presetId: "membership-benefits-promo",
418
+ slug: "membership-benefits-promo",
419
+ useCase: "publishing-campaigns",
420
+ collections: [
421
+ "category:marketing",
422
+ "industry:ecommerce",
423
+ "stage:retention",
424
+ "style:branded",
425
+ "style:data-heavy"
426
+ ],
427
+ relatedTemplates: ["membership-promo", "promo"]
428
+ }),
429
+ template({
430
+ presetId: "industry-news-digest",
431
+ slug: "industry-news-digest",
432
+ useCase: "publishing-campaigns",
433
+ collections: [
434
+ "category:digest-editorial",
435
+ "industry:newsletters-media",
436
+ "stage:engagement",
437
+ "style:editorial",
438
+ "style:data-heavy"
439
+ ],
440
+ relatedTemplates: ["newsletter", "product-digest"]
441
+ }),
442
+ template({
443
+ presetId: "weekly-deals-circular",
444
+ slug: "weekly-deals-circular",
445
+ useCase: "publishing-campaigns",
446
+ collections: [
447
+ "category:marketing",
448
+ "industry:ecommerce",
449
+ "stage:engagement",
450
+ "style:branded",
451
+ "style:data-heavy"
452
+ ],
453
+ relatedTemplates: ["promo", "membership-promo"]
454
+ }),
455
+ template({
456
+ presetId: "data-sharing-review",
457
+ slug: "data-sharing-review",
458
+ useCase: "product-communication",
459
+ collections: [
460
+ "category:transactional",
461
+ "industry:saas",
462
+ "stage:engagement",
463
+ "style:minimal",
464
+ "style:single-cta"
465
+ ],
466
+ relatedTemplates: ["notification", "team-invite"]
467
+ }),
468
+ template({
469
+ presetId: "seasonal-sale-flyer",
470
+ slug: "seasonal-sale-flyer",
471
+ useCase: "publishing-campaigns",
472
+ collections: [
473
+ "category:marketing",
474
+ "industry:ecommerce",
475
+ "stage:acquisition",
476
+ "style:branded",
477
+ "style:data-heavy"
478
+ ],
479
+ relatedTemplates: ["promo", "announcement"]
480
+ }),
481
+ template({
482
+ presetId: "setup-checklist",
483
+ slug: "setup-checklist",
484
+ useCase: "lifecycle",
485
+ collections: [
486
+ "category:lifecycle",
487
+ "industry:saas",
488
+ "stage:activation",
489
+ "style:minimal",
490
+ "style:single-cta"
491
+ ],
492
+ relatedTemplates: ["welcome", "onboarding-step"]
493
+ }),
494
+ template({
495
+ presetId: "feature-release-roundup",
496
+ slug: "feature-release-roundup",
497
+ useCase: "product-communication",
498
+ collections: [
499
+ "category:marketing",
500
+ "industry:developer-tools",
501
+ "stage:engagement",
502
+ "style:branded",
503
+ "style:data-heavy"
504
+ ],
505
+ relatedTemplates: ["announcement", "product-digest"]
506
+ }),
507
+ template({
508
+ presetId: "season-clearance-promo",
509
+ slug: "season-clearance-promo",
510
+ useCase: "publishing-campaigns",
511
+ collections: [
512
+ "category:marketing",
513
+ "industry:ecommerce",
514
+ "stage:acquisition",
515
+ "style:branded",
516
+ "style:single-cta"
517
+ ],
518
+ relatedTemplates: ["promo", "announcement"]
519
+ })
520
+ ];
521
+ const members = (id) => publicTemplates.filter((item) => item.collections.some((collectionId) => collectionId === id)).map((item) => item.presetId);
522
+ const collection = (id, relatedCollections = []) => {
523
+ const [family, slug] = id.split(":");
524
+ return {
525
+ id,
526
+ family,
527
+ slug,
528
+ path: `/templates/${family}/${slug}`,
529
+ templates: members(id),
530
+ relatedCollections
531
+ };
532
+ };
533
+ const templateCollections = [
534
+ collection("category:transactional", ["stage:transaction", "style:minimal"]),
535
+ collection("category:lifecycle", ["stage:activation", "stage:retention"]),
536
+ collection("category:marketing", ["stage:acquisition", "style:branded"]),
537
+ collection("category:digest-editorial", ["style:editorial", "industry:newsletters-media"]),
538
+ collection("industry:saas", ["industry:developer-tools", "category:lifecycle"]),
539
+ collection("industry:ecommerce", ["category:transactional", "stage:transaction"]),
540
+ collection("industry:developer-tools", ["industry:saas", "style:minimal"]),
541
+ collection("industry:newsletters-media", ["category:digest-editorial", "style:editorial"]),
542
+ collection("stage:acquisition", ["category:marketing", "stage:activation"]),
543
+ collection("stage:activation", ["category:lifecycle", "style:single-cta"]),
544
+ collection("stage:engagement", ["category:digest-editorial", "style:editorial"]),
545
+ collection("stage:transaction", ["category:transactional", "industry:ecommerce"]),
546
+ collection("stage:retention", ["category:lifecycle", "stage:recovery"]),
547
+ collection("stage:recovery", ["category:lifecycle", "style:minimal"]),
548
+ collection("style:minimal", ["category:transactional", "industry:developer-tools"]),
549
+ collection("style:branded", ["category:marketing", "style:single-cta"]),
550
+ collection("style:editorial", ["category:digest-editorial", "industry:newsletters-media"]),
551
+ collection("style:data-heavy", ["stage:transaction", "category:digest-editorial"]),
552
+ collection("style:single-cta", ["stage:activation", "category:marketing"])
553
+ ];
554
+ const publicTemplateGallery = {
555
+ hubPath: "/templates",
556
+ useCases: templateUseCases,
557
+ templates: publicTemplates,
558
+ collections: templateCollections
559
+ };
560
+ //#endregion
561
+ export { publicTemplateGallery, publicTemplates, templateCollectionFamilies, templateCollections, templateUseCases };
562
+
563
+ //# sourceMappingURL=public-gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-gallery.js","names":[],"sources":["../../presets/public-gallery.ts"],"sourcesContent":["import type { EmailPresetId } from \"./catalog\";\n\nexport const templateUseCases = [\n \"account-access\",\n \"commerce\",\n \"product-communication\",\n \"lifecycle\",\n \"publishing-campaigns\",\n] as const;\n\nexport const templateCollectionFamilies = [\"category\", \"industry\", \"stage\", \"style\"] as const;\n\nexport type TemplateUseCase = (typeof templateUseCases)[number];\nexport type TemplateCollectionFamily = (typeof templateCollectionFamilies)[number];\n\nexport interface PublicTemplate {\n readonly presetId: EmailPresetId;\n readonly slug: string;\n readonly path: `/templates/${string}`;\n readonly useCase: TemplateUseCase;\n readonly collections: ReadonlyArray<TemplateCollectionId>;\n readonly relatedTemplates: ReadonlyArray<EmailPresetId>;\n}\n\nexport interface TemplateCollection {\n readonly id: TemplateCollectionId;\n readonly family: TemplateCollectionFamily;\n readonly slug: string;\n readonly path: `/templates/${TemplateCollectionFamily}/${string}`;\n readonly templates: ReadonlyArray<EmailPresetId>;\n readonly relatedCollections: ReadonlyArray<TemplateCollectionId>;\n}\n\nexport type TemplateCollectionId =\n | \"category:transactional\"\n | \"category:lifecycle\"\n | \"category:marketing\"\n | \"category:digest-editorial\"\n | \"industry:saas\"\n | \"industry:ecommerce\"\n | \"industry:developer-tools\"\n | \"industry:newsletters-media\"\n | \"stage:acquisition\"\n | \"stage:activation\"\n | \"stage:engagement\"\n | \"stage:transaction\"\n | \"stage:retention\"\n | \"stage:recovery\"\n | \"style:minimal\"\n | \"style:branded\"\n | \"style:editorial\"\n | \"style:data-heavy\"\n | \"style:single-cta\";\n\nconst template = <const T extends Omit<PublicTemplate, \"path\">>(value: T) =>\n ({ ...value, path: `/templates/${value.slug}` }) as T & Pick<PublicTemplate, \"path\">;\n\nexport const publicTemplates = [\n template({\n presetId: \"welcome\",\n slug: \"welcome-email\",\n useCase: \"lifecycle\",\n collections: [\n \"category:transactional\",\n \"industry:saas\",\n \"stage:activation\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"email-verification\", \"onboarding-step\"],\n }),\n template({\n presetId: \"email-verification\",\n slug: \"email-verification\",\n useCase: \"account-access\",\n collections: [\n \"category:transactional\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:activation\",\n \"style:minimal\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"otp\", \"password-reset\"],\n }),\n template({\n presetId: \"otp\",\n slug: \"one-time-passcode\",\n useCase: \"account-access\",\n collections: [\n \"category:transactional\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:activation\",\n \"style:minimal\",\n ],\n relatedTemplates: [\"email-verification\", \"password-reset\"],\n }),\n template({\n presetId: \"password-reset\",\n slug: \"password-reset\",\n useCase: \"account-access\",\n collections: [\n \"category:transactional\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:recovery\",\n \"style:minimal\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"otp\", \"email-verification\"],\n }),\n template({\n presetId: \"receipt\",\n slug: \"receipt\",\n useCase: \"commerce\",\n collections: [\n \"category:transactional\",\n \"industry:ecommerce\",\n \"stage:transaction\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"payment-failed\", \"shipping-update\"],\n }),\n template({\n presetId: \"payment-failed\",\n slug: \"payment-failed\",\n useCase: \"commerce\",\n collections: [\n \"category:transactional\",\n \"industry:ecommerce\",\n \"industry:saas\",\n \"stage:recovery\",\n \"style:data-heavy\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"receipt\", \"trial-ending\"],\n }),\n template({\n presetId: \"shipping-update\",\n slug: \"shipping-update\",\n useCase: \"commerce\",\n collections: [\n \"category:transactional\",\n \"industry:ecommerce\",\n \"stage:transaction\",\n \"style:data-heavy\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"receipt\", \"notification\"],\n }),\n template({\n presetId: \"notification\",\n slug: \"activity-notification\",\n useCase: \"product-communication\",\n collections: [\n \"category:transactional\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:engagement\",\n \"style:minimal\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"team-invite\", \"product-digest\"],\n }),\n template({\n presetId: \"team-invite\",\n slug: \"team-invite\",\n useCase: \"product-communication\",\n collections: [\n \"category:transactional\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:acquisition\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"welcome\", \"notification\"],\n }),\n template({\n presetId: \"product-digest\",\n slug: \"product-digest\",\n useCase: \"product-communication\",\n collections: [\n \"category:digest-editorial\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:engagement\",\n \"style:editorial\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"notification\", \"newsletter\"],\n }),\n template({\n presetId: \"newsletter\",\n slug: \"newsletter\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:digest-editorial\",\n \"industry:newsletters-media\",\n \"stage:engagement\",\n \"style:editorial\",\n \"style:branded\",\n ],\n relatedTemplates: [\"product-digest\", \"announcement\"],\n }),\n template({\n presetId: \"announcement\",\n slug: \"feature-announcement\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:engagement\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"newsletter\", \"event-invite\"],\n }),\n template({\n presetId: \"promo\",\n slug: \"promotion\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:acquisition\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"announcement\", \"event-invite\"],\n }),\n template({\n presetId: \"event-invite\",\n slug: \"event-invite\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:saas\",\n \"stage:acquisition\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"announcement\", \"promo\"],\n }),\n template({\n presetId: \"membership-promo\",\n slug: \"membership-promotion\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:retention\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"promo\", \"announcement\"],\n }),\n template({\n presetId: \"onboarding-step\",\n slug: \"onboarding-step\",\n useCase: \"lifecycle\",\n collections: [\n \"category:lifecycle\",\n \"industry:saas\",\n \"industry:developer-tools\",\n \"stage:activation\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"welcome\", \"trial-ending\"],\n }),\n template({\n presetId: \"trial-ending\",\n slug: \"trial-ending\",\n useCase: \"lifecycle\",\n collections: [\n \"category:lifecycle\",\n \"industry:saas\",\n \"stage:retention\",\n \"style:data-heavy\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"onboarding-step\", \"win-back\"],\n }),\n template({\n presetId: \"win-back\",\n slug: \"win-back\",\n useCase: \"lifecycle\",\n collections: [\n \"category:lifecycle\",\n \"industry:saas\",\n \"stage:recovery\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"trial-ending\", \"feedback-request\"],\n }),\n template({\n presetId: \"feedback-request\",\n slug: \"feedback-request\",\n useCase: \"lifecycle\",\n collections: [\n \"category:lifecycle\",\n \"industry:saas\",\n \"stage:retention\",\n \"style:minimal\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"win-back\", \"onboarding-step\"],\n }),\n template({\n presetId: \"editorial-newsletter\",\n slug: \"editorial-newsletter\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:digest-editorial\",\n \"industry:newsletters-media\",\n \"stage:engagement\",\n \"style:editorial\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"newsletter\", \"product-digest\"],\n }),\n template({\n presetId: \"member-referral-offer\",\n slug: \"member-referral-offer\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:acquisition\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"promo\", \"membership-promo\"],\n }),\n template({\n presetId: \"catalog-sale-newsletter\",\n slug: \"catalog-sale-newsletter\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:newsletters-media\",\n \"stage:engagement\",\n \"style:editorial\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"announcement\", \"promo\"],\n }),\n template({\n presetId: \"limited-time-savings\",\n slug: \"limited-time-savings\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:acquisition\",\n \"style:minimal\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"promo\", \"membership-promo\"],\n }),\n template({\n presetId: \"rewards-milestone\",\n slug: \"rewards-milestone\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:engagement\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"membership-promo\", \"promo\"],\n }),\n template({\n presetId: \"order-delivered\",\n slug: \"order-delivered\",\n useCase: \"commerce\",\n collections: [\n \"category:transactional\",\n \"industry:ecommerce\",\n \"stage:transaction\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"shipping-update\", \"receipt\"],\n }),\n template({\n presetId: \"travel-rewards-promo\",\n slug: \"travel-rewards-promo\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:retention\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"membership-promo\", \"promo\"],\n }),\n template({\n presetId: \"events-roundup\",\n slug: \"events-roundup\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:digest-editorial\",\n \"industry:newsletters-media\",\n \"stage:engagement\",\n \"style:editorial\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"newsletter\", \"event-invite\"],\n }),\n template({\n presetId: \"product-onboarding-tour\",\n slug: \"product-onboarding-tour\",\n useCase: \"lifecycle\",\n collections: [\n \"category:lifecycle\",\n \"industry:saas\",\n \"stage:activation\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"onboarding-step\", \"welcome\"],\n }),\n template({\n presetId: \"product-updates-roundup\",\n slug: \"product-updates-roundup\",\n useCase: \"product-communication\",\n collections: [\n \"category:marketing\",\n \"industry:developer-tools\",\n \"stage:engagement\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"announcement\", \"product-digest\"],\n }),\n template({\n presetId: \"flash-getaway-offer\",\n slug: \"flash-getaway-offer\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:acquisition\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"promo\", \"membership-promo\"],\n }),\n template({\n presetId: \"membership-benefits-promo\",\n slug: \"membership-benefits-promo\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:retention\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"membership-promo\", \"promo\"],\n }),\n template({\n presetId: \"industry-news-digest\",\n slug: \"industry-news-digest\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:digest-editorial\",\n \"industry:newsletters-media\",\n \"stage:engagement\",\n \"style:editorial\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"newsletter\", \"product-digest\"],\n }),\n template({\n presetId: \"weekly-deals-circular\",\n slug: \"weekly-deals-circular\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:engagement\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"promo\", \"membership-promo\"],\n }),\n template({\n presetId: \"data-sharing-review\",\n slug: \"data-sharing-review\",\n useCase: \"product-communication\",\n collections: [\n \"category:transactional\",\n \"industry:saas\",\n \"stage:engagement\",\n \"style:minimal\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"notification\", \"team-invite\"],\n }),\n template({\n presetId: \"seasonal-sale-flyer\",\n slug: \"seasonal-sale-flyer\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:acquisition\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"promo\", \"announcement\"],\n }),\n template({\n presetId: \"setup-checklist\",\n slug: \"setup-checklist\",\n useCase: \"lifecycle\",\n collections: [\n \"category:lifecycle\",\n \"industry:saas\",\n \"stage:activation\",\n \"style:minimal\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"welcome\", \"onboarding-step\"],\n }),\n template({\n presetId: \"feature-release-roundup\",\n slug: \"feature-release-roundup\",\n useCase: \"product-communication\",\n collections: [\n \"category:marketing\",\n \"industry:developer-tools\",\n \"stage:engagement\",\n \"style:branded\",\n \"style:data-heavy\",\n ],\n relatedTemplates: [\"announcement\", \"product-digest\"],\n }),\n template({\n presetId: \"season-clearance-promo\",\n slug: \"season-clearance-promo\",\n useCase: \"publishing-campaigns\",\n collections: [\n \"category:marketing\",\n \"industry:ecommerce\",\n \"stage:acquisition\",\n \"style:branded\",\n \"style:single-cta\",\n ],\n relatedTemplates: [\"promo\", \"announcement\"],\n }),\n] as const satisfies ReadonlyArray<PublicTemplate>;\n\nconst members = (id: TemplateCollectionId) =>\n publicTemplates\n .filter((item) => item.collections.some((collectionId) => collectionId === id))\n .map((item) => item.presetId);\nconst collection = <const I extends TemplateCollectionId>(\n id: I,\n relatedCollections: ReadonlyArray<TemplateCollectionId> = [],\n): TemplateCollection => {\n const [family, slug] = id.split(\":\") as [TemplateCollectionFamily, string];\n return {\n id,\n family,\n slug,\n path: `/templates/${family}/${slug}`,\n templates: members(id),\n relatedCollections,\n };\n};\n\nexport const templateCollections = [\n collection(\"category:transactional\", [\"stage:transaction\", \"style:minimal\"]),\n collection(\"category:lifecycle\", [\"stage:activation\", \"stage:retention\"]),\n collection(\"category:marketing\", [\"stage:acquisition\", \"style:branded\"]),\n collection(\"category:digest-editorial\", [\"style:editorial\", \"industry:newsletters-media\"]),\n collection(\"industry:saas\", [\"industry:developer-tools\", \"category:lifecycle\"]),\n collection(\"industry:ecommerce\", [\"category:transactional\", \"stage:transaction\"]),\n collection(\"industry:developer-tools\", [\"industry:saas\", \"style:minimal\"]),\n collection(\"industry:newsletters-media\", [\"category:digest-editorial\", \"style:editorial\"]),\n collection(\"stage:acquisition\", [\"category:marketing\", \"stage:activation\"]),\n collection(\"stage:activation\", [\"category:lifecycle\", \"style:single-cta\"]),\n collection(\"stage:engagement\", [\"category:digest-editorial\", \"style:editorial\"]),\n collection(\"stage:transaction\", [\"category:transactional\", \"industry:ecommerce\"]),\n collection(\"stage:retention\", [\"category:lifecycle\", \"stage:recovery\"]),\n collection(\"stage:recovery\", [\"category:lifecycle\", \"style:minimal\"]),\n collection(\"style:minimal\", [\"category:transactional\", \"industry:developer-tools\"]),\n collection(\"style:branded\", [\"category:marketing\", \"style:single-cta\"]),\n collection(\"style:editorial\", [\"category:digest-editorial\", \"industry:newsletters-media\"]),\n collection(\"style:data-heavy\", [\"stage:transaction\", \"category:digest-editorial\"]),\n collection(\"style:single-cta\", [\"stage:activation\", \"category:marketing\"]),\n] as const satisfies ReadonlyArray<TemplateCollection>;\n\nexport const publicTemplateGallery = {\n hubPath: \"/templates\",\n useCases: templateUseCases,\n templates: publicTemplates,\n collections: templateCollections,\n} as const;\n"],"mappings":";AAEA,MAAa,mBAAmB;CAC9B;CACA;CACA;CACA;CACA;AACF;AAEA,MAAa,6BAA6B;CAAC;CAAY;CAAY;CAAS;AAAO;AA4CnF,MAAM,YAA0D,WAC7D;CAAE,GAAG;CAAO,MAAM,cAAc,MAAM;AAAO;AAEhD,MAAa,kBAAkB;CAC7B,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,sBAAsB,iBAAiB;CAC5D,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,OAAO,gBAAgB;CAC5C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,sBAAsB,gBAAgB;CAC3D,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,OAAO,oBAAoB;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,kBAAkB,iBAAiB;CACxD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,WAAW,cAAc;CAC9C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,WAAW,cAAc;CAC9C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,eAAe,gBAAgB;CACpD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,WAAW,cAAc;CAC9C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,YAAY;CACjD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,kBAAkB,cAAc;CACrD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,cAAc,cAAc;CACjD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,cAAc;CACnD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,OAAO;CAC5C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,SAAS,cAAc;CAC5C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,WAAW,cAAc;CAC9C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,mBAAmB,UAAU;CAClD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,kBAAkB;CACvD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,YAAY,iBAAiB;CAClD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,cAAc,gBAAgB;CACnD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,SAAS,kBAAkB;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,OAAO;CAC5C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,SAAS,kBAAkB;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,oBAAoB,OAAO;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,mBAAmB,SAAS;CACjD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,oBAAoB,OAAO;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,cAAc,cAAc;CACjD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,mBAAmB,SAAS;CACjD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,gBAAgB;CACrD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,SAAS,kBAAkB;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,oBAAoB,OAAO;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,cAAc,gBAAgB;CACnD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,SAAS,kBAAkB;CAChD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,aAAa;CAClD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,SAAS,cAAc;CAC5C,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,WAAW,iBAAiB;CACjD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,gBAAgB,gBAAgB;CACrD,CAAC;CACD,SAAS;EACP,UAAU;EACV,MAAM;EACN,SAAS;EACT,aAAa;GACX;GACA;GACA;GACA;GACA;EACF;EACA,kBAAkB,CAAC,SAAS,cAAc;CAC5C,CAAC;AACH;AAEA,MAAM,WAAW,OACf,gBACG,QAAQ,SAAS,KAAK,YAAY,MAAM,iBAAiB,iBAAiB,EAAE,CAAC,CAAC,CAC9E,KAAK,SAAS,KAAK,QAAQ;AAChC,MAAM,cACJ,IACA,qBAA0D,CAAC,MACpC;CACvB,MAAM,CAAC,QAAQ,QAAQ,GAAG,MAAM,GAAG;CACnC,OAAO;EACL;EACA;EACA;EACA,MAAM,cAAc,OAAO,GAAG;EAC9B,WAAW,QAAQ,EAAE;EACrB;CACF;AACF;AAEA,MAAa,sBAAsB;CACjC,WAAW,0BAA0B,CAAC,qBAAqB,eAAe,CAAC;CAC3E,WAAW,sBAAsB,CAAC,oBAAoB,iBAAiB,CAAC;CACxE,WAAW,sBAAsB,CAAC,qBAAqB,eAAe,CAAC;CACvE,WAAW,6BAA6B,CAAC,mBAAmB,4BAA4B,CAAC;CACzF,WAAW,iBAAiB,CAAC,4BAA4B,oBAAoB,CAAC;CAC9E,WAAW,sBAAsB,CAAC,0BAA0B,mBAAmB,CAAC;CAChF,WAAW,4BAA4B,CAAC,iBAAiB,eAAe,CAAC;CACzE,WAAW,8BAA8B,CAAC,6BAA6B,iBAAiB,CAAC;CACzF,WAAW,qBAAqB,CAAC,sBAAsB,kBAAkB,CAAC;CAC1E,WAAW,oBAAoB,CAAC,sBAAsB,kBAAkB,CAAC;CACzE,WAAW,oBAAoB,CAAC,6BAA6B,iBAAiB,CAAC;CAC/E,WAAW,qBAAqB,CAAC,0BAA0B,oBAAoB,CAAC;CAChF,WAAW,mBAAmB,CAAC,sBAAsB,gBAAgB,CAAC;CACtE,WAAW,kBAAkB,CAAC,sBAAsB,eAAe,CAAC;CACpE,WAAW,iBAAiB,CAAC,0BAA0B,0BAA0B,CAAC;CAClF,WAAW,iBAAiB,CAAC,sBAAsB,kBAAkB,CAAC;CACtE,WAAW,mBAAmB,CAAC,6BAA6B,4BAA4B,CAAC;CACzF,WAAW,oBAAoB,CAAC,qBAAqB,2BAA2B,CAAC;CACjF,WAAW,oBAAoB,CAAC,oBAAoB,oBAAoB,CAAC;AAC3E;AAEA,MAAa,wBAAwB;CACnC,SAAS;CACT,UAAU;CACV,WAAW;CACX,aAAa;AACf"}
@@ -0,0 +1,68 @@
1
+ import { d as Channel } from "../ast-DAhnAvQN.js";
2
+ import { PresetCategory } from "../presets.js";
3
+ import { TemplateCollectionId, TemplateUseCase } from "./public-gallery.js";
4
+ import { PublicTemplatePreview } from "./public-preview.js";
5
+ import { Result } from "effect";
6
+ //#region presets/public-handoff.d.ts
7
+ interface ApprovedPublicTemplateArtifact {
8
+ readonly approval: {
9
+ readonly state: "draft" | "approved" | "rejected";
10
+ readonly approvedBy: string;
11
+ /** Stable ISO-8601 timestamp supplied by the owner. */
12
+ readonly approvedAt: string;
13
+ };
14
+ readonly preset: {
15
+ readonly id: string;
16
+ readonly channel: Channel;
17
+ readonly category: PresetCategory;
18
+ readonly name: string;
19
+ readonly description: string;
20
+ readonly variables: ReadonlyArray<string>;
21
+ readonly source: string;
22
+ };
23
+ readonly gallery: {
24
+ readonly slug: string;
25
+ readonly useCase: TemplateUseCase;
26
+ readonly collections: ReadonlyArray<TemplateCollectionId>;
27
+ readonly relatedTemplates: ReadonlyArray<string>;
28
+ };
29
+ readonly preview: PublicTemplatePreview;
30
+ readonly publicMetadata: {
31
+ readonly cardTitle: string;
32
+ readonly cardDescription: string;
33
+ readonly guidance: ReadonlyArray<string>;
34
+ readonly variableDescriptions: Readonly<Record<string, string>>;
35
+ readonly seo: {
36
+ readonly title: string;
37
+ readonly description: string;
38
+ };
39
+ };
40
+ }
41
+ interface ValidatedPublicTemplateArtifact {
42
+ readonly preset: Omit<ApprovedPublicTemplateArtifact["preset"], "source">;
43
+ readonly source: string;
44
+ readonly gallery: ApprovedPublicTemplateArtifact["gallery"] & {
45
+ readonly path: `/templates/${string}`;
46
+ };
47
+ readonly preview: ApprovedPublicTemplateArtifact["preview"];
48
+ readonly publicMetadata: ApprovedPublicTemplateArtifact["publicMetadata"];
49
+ readonly approval: ApprovedPublicTemplateArtifact["approval"] & {
50
+ readonly state: "approved";
51
+ };
52
+ }
53
+ type PublicHandoffIssueCode = "approval" | "identity" | "duplicate-id" | "duplicate-slug" | "source" | "channel" | "variables" | "sample-data" | "assets" | "public-metadata" | "reference";
54
+ interface PublicHandoffIssue {
55
+ readonly artifactId: string;
56
+ readonly code: PublicHandoffIssueCode;
57
+ readonly message: string;
58
+ }
59
+ /**
60
+ * Validates explicitly supplied, owner-approved artifacts without filesystem,
61
+ * network, persistence, or discovery. Successful output is a projection for
62
+ * the existing preset, public-gallery, preview, and editorial contracts; this
63
+ * function never registers or publishes it.
64
+ */
65
+ declare const validatePublicTemplateHandoff: (artifacts: ReadonlyArray<ApprovedPublicTemplateArtifact>) => Result.Result<ReadonlyArray<ValidatedPublicTemplateArtifact>, ReadonlyArray<PublicHandoffIssue>>;
66
+ //#endregion
67
+ export { ApprovedPublicTemplateArtifact, PublicHandoffIssue, PublicHandoffIssueCode, ValidatedPublicTemplateArtifact, validatePublicTemplateHandoff };
68
+ //# sourceMappingURL=public-handoff.d.ts.map